Name: series-workflowhkmxs Phase: Succeeded StartedAt: 2026-06-21 10:06:29 +0000 UTC FinishedAt: 2026-06-21 14:09:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkmxs[0] Phase: Succeeded StartedAt: 2026-06-21 10:06:29 +0000 UTC FinishedAt: 2026-06-21 10:16:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkmxs[0].run-triage Phase: Succeeded StartedAt: 2026-06-21 10:06:29 +0000 UTC FinishedAt: 2026-06-21 10:16:47 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "322008f87f917e2217eeac386a9410945092eb2e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_OFFLOAD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "322008f87f917e2217eeac386a9410945092eb2e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_OFFLOAD" ], "series_id": "95b3bc62-985a-45b7-ba33-8fc9ca68a6c9" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "validate_xmit_xfrm" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDEwOjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fT0ZGTE9BRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZhbGlkYXRlX3htaXRfeGZybSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBuZXR3b3JraW5nIHRyYW5zbWl0IHBhdGggYW5kIFhGUk0gb2ZmbG9hZCB0byBwcm9wZXJseSBoYW5kbGUgcGFja2V0cyBzdG9sZW4gYnkgYXN5bmMgY3J5cHRvIChyZXR1cm5pbmcgLUVJTlBST0dSRVNTIGluc3RlYWQgb2YgTlVMTCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgcGFja2V0IHRyYW5zbWlzc2lvbiBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgKHNrYi1cdTAwM2VwcmV2IHBvaW50ZXIpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDEwOjE2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjQzNTQ3ODMzMmNhNTc2YzBhZTk2N2JlYzkxMzRhNTU1MTVmYTRmOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVuIDIxIDEwOjE2OjAwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5jIGIvbmV0L2NvcmUvZGV2LmNcbmluZGV4IDVjMDFkZmFhNmM0NDUwLi5mN2ZmYzRkMjk1OTc4ZSAxMDA2NDRcbi0tLSBhL25ldC9jb3JlL2Rldi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9kZXYuY1xuQEAgLTQwMTgsNiAmIzQzOzQwMTgsOSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfdW5yZWFkYWJsZV9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbiYjNDM7LyogUmV0dXJucyB0aGUgc2tiIG9uIHN1Y2Nlc3MsIE5VTEwgaWYgZHJvcHBlZCwgb3IgRVJSX1BUUigtRUlOUFJPR1JFU1MpXG4mIzQzOyAqIGlmIHN0b2xlbiBieSBhc3luYyB4ZnJtIGNyeXB0byAoZGVsaXZlcmVkIHZpYSB4ZnJtX2Rldl9yZXN1bWUoKSkuXG4mIzQzOyAqL1xuIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCAqYWdhaW4pXG4ge1xuIFx0bmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXM7XG5AQCAtNDA4OSw3ICYjNDM7NDA5Miw3IEBAIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3NrYl9saXN0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkXG4gXHRcdHNrYi1cdTAwM2VwcmV2ID0gc2tiO1xuIFxuIFx0XHRza2IgPSB2YWxpZGF0ZV94bWl0X3NrYihza2IsIGRldiwgYWdhaW4pO1xuLVx0XHRpZiAoIXNrYilcbiYjNDM7XHRcdGlmIChJU19FUlJfT1JfTlVMTChza2IpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRpZiAoIWhlYWQpXG5AQCAtNDg2MCw4ICYjNDM7NDg2MywxMSBAQCBpbnQgX19kZXZfcXVldWVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqc2JfZGV2KVxuIFx0XHRcdGdvdG8gcmVjdXJzaW9uX2FsZXJ0O1xuIFxuIFx0XHRza2IgPSB2YWxpZGF0ZV94bWl0X3NrYihza2IsIGRldiwgXHUwMDI2YWdhaW4pO1xuLVx0XHRpZiAoIXNrYilcbiYjNDM7XHRcdGlmIChJU19FUlJfT1JfTlVMTChza2IpKSB7XG4mIzQzO1x0XHRcdGlmIChQVFJfRVJSKHNrYikgPT0gLUVJTlBST0dSRVNTKVxuJiM0MztcdFx0XHRcdHJjID0gTkVUX1hNSVRfU1VDQ0VTUztcbiBcdFx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdH1cbiBcbiBcdFx0SEFSRF9UWF9MT0NLKGRldiwgdHhxLCBjcHUpO1xuIFxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fZGV2aWNlLmMgYi9uZXQveGZybS94ZnJtX2RldmljZS5jXG5pbmRleCA2MzBmM2RkMzFjYzVjZS4uYWVjMWUxMTg0YTcxMzQgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX2RldmljZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX2RldmljZS5jXG5AQCAtMTgyLDcgJiM0MzsxODIsNyBAQCBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF94ZnJtKHN0cnVjdCBza19idWZmICpza2IsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1clxuIFx0XHRlcnIgPSB4LVx1MDAzZXR5cGVfb2ZmbG9hZC1cdTAwM2V4bWl0KHgsIHNrYiwgZXNwX2ZlYXR1cmVzKTtcbiBcdFx0aWYgKGVycikge1xuIFx0XHRcdGlmIChlcnIgPT0gLUVJTlBST0dSRVNTKVxuLVx0XHRcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlBST0dSRVNTKTtcbiBcbiBcdFx0XHRYRlJNX0lOQ19TVEFUUyh4c19uZXQoeCksIExJTlVYX01JQl9YRlJNT1VUU1RBVEVQUk9UT0VSUk9SKTtcbiBcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbkBAIC0yMjQsNyAmIzQzOzIyNCwxNSBAQCBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF94ZnJtKHN0cnVjdCBza19idWZmICpza2IsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1clxuIFx0XHRwc2tiID0gc2tiMjtcbiBcdH1cbiBcbi1cdHJldHVybiBza2I7XG4mIzQzO1x0Lyogc2tiX2dzb19zZWdtZW50KCkgc2V0IHNrYi1cdTAwM2VwcmV2IHRvIHRoZSBsYXN0IHNlZ21lbnQsIGJ1dCBhc3luY1xuJiM0MztcdCAqIGNyeXB0byBtYXkgaGF2ZSBzdG9sZW4gaXQgYWJvdmUgd2l0aG91dCB1cGRhdGluZyAtXHUwMDNlcHJldi4gIFJlcG9pbnRcbiYjNDM7XHQgKiBpdCBhdCB0aGUgbGFzdCByZXRhaW5lZCBzZWdtZW50IHNvIHZhbGlkYXRlX3htaXRfc2tiX2xpc3QoKSBkb2VzXG4mIzQzO1x0ICogbm90IGNoYWluIG9udG8gYSBzZWdtZW50IG5vdyBvd25lZCBieSB0aGUgY3J5cHRvIGVuZ2luZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoc2tiKVxuJiM0MztcdFx0c2tiLVx1MDAzZXByZXYgPSBwc2tiO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gc2tiID8gc2tiIDogRVJSX1BUUigtRUlOUFJPR1JFU1MpO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTCh2YWxpZGF0ZV94bWl0X3hmcm0pO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDEwOjE2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fT0ZGTE9BRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZhbGlkYXRlX3htaXRfeGZybSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBuZXR3b3JraW5nIHRyYW5zbWl0IHBhdGggYW5kIFhGUk0gb2ZmbG9hZCB0byBwcm9wZXJseSBoYW5kbGUgcGFja2V0cyBzdG9sZW4gYnkgYXN5bmMgY3J5cHRvIChyZXR1cm5pbmcgLUVJTlBST0dSRVNTIGluc3RlYWQgb2YgTlVMTCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgcGFja2V0IHRyYW5zbWlzc2lvbiBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgKHNrYi1cdTAwM2VwcmV2IHBvaW50ZXIpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiNDM1NDc4MzMyY2E1NzZjMGFlOTY3YmVjOTEzNGE1NTUxNWZhNGY5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdW4gMjEgMTA6MTY6MDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jCmluZGV4IDVjMDFkZmFhNmM0NDUwLi5mN2ZmYzRkMjk1OTc4ZSAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvZGV2LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvZGV2LmMKQEAgLTQwMTgsNiAmIzQzOzQwMTgsOSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfdW5yZWFkYWJsZV9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlyZXR1cm4gTlVMTDsKIH0KIAomIzQzOy8qIFJldHVybnMgdGhlIHNrYiBvbiBzdWNjZXNzLCBOVUxMIGlmIGRyb3BwZWQsIG9yIEVSUl9QVFIoLUVJTlBST0dSRVNTKQomIzQzOyAqIGlmIHN0b2xlbiBieSBhc3luYyB4ZnJtIGNyeXB0byAoZGVsaXZlcmVkIHZpYSB4ZnJtX2Rldl9yZXN1bWUoKSkuCiYjNDM7ICovCiBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfc2tiKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgKmFnYWluKQogewogCW5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzOwpAQCAtNDA4OSw3ICYjNDM7NDA5Miw3IEBAIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3NrYl9saXN0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkCiAJCXNrYi0mZ3Q7cHJldiA9IHNrYjsKIAogCQlza2IgPSB2YWxpZGF0ZV94bWl0X3NrYihza2IsIGRldiwgYWdhaW4pOwotCQlpZiAoIXNrYikKJiM0MzsJCWlmIChJU19FUlJfT1JfTlVMTChza2IpKQogCQkJY29udGludWU7CiAKIAkJaWYgKCFoZWFkKQpAQCAtNDg2MCw4ICYjNDM7NDg2MywxMSBAQCBpbnQgX19kZXZfcXVldWVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqc2JfZGV2KQogCQkJZ290byByZWN1cnNpb25fYWxlcnQ7CiAKIAkJc2tiID0gdmFsaWRhdGVfeG1pdF9za2Ioc2tiLCBkZXYsICZhbXA7YWdhaW4pOwotCQlpZiAoIXNrYikKJiM0MzsJCWlmIChJU19FUlJfT1JfTlVMTChza2IpKSB7CiYjNDM7CQkJaWYgKFBUUl9FUlIoc2tiKSA9PSAtRUlOUFJPR1JFU1MpCiYjNDM7CQkJCXJjID0gTkVUX1hNSVRfU1VDQ0VTUzsKIAkJCWdvdG8gb3V0OwomIzQzOwkJfQogCiAJCUhBUkRfVFhfTE9DSyhkZXYsIHR4cSwgY3B1KTsKIApkaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9kZXZpY2UuYyBiL25ldC94ZnJtL3hmcm1fZGV2aWNlLmMKaW5kZXggNjMwZjNkZDMxY2M1Y2UuLmFlYzFlMTE4NGE3MTM0IDEwMDY0NAotLS0gYS9uZXQveGZybS94ZnJtX2RldmljZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZnJtL3hmcm1fZGV2aWNlLmMKQEAgLTE4Miw3ICYjNDM7MTgyLDcgQEAgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfeGZybShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXIKIAkJZXJyID0geC0mZ3Q7dHlwZV9vZmZsb2FkLSZndDt4bWl0KHgsIHNrYiwgZXNwX2ZlYXR1cmVzKTsKIAkJaWYgKGVycikgewogCQkJaWYgKGVyciA9PSAtRUlOUFJPR1JFU1MpCi0JCQkJcmV0dXJuIE5VTEw7CiYjNDM7CQkJCXJldHVybiBFUlJfUFRSKC1FSU5QUk9HUkVTUyk7CiAKIAkJCVhGUk1fSU5DX1NUQVRTKHhzX25ldCh4KSwgTElOVVhfTUlCX1hGUk1PVVRTVEFURVBST1RPRVJST1IpOwogCQkJa2ZyZWVfc2tiKHNrYik7CkBAIC0yMjQsNyAmIzQzOzIyNCwxNSBAQCBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF94ZnJtKHN0cnVjdCBza19idWZmICpza2IsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cgogCQlwc2tiID0gc2tiMjsKIAl9CiAKLQlyZXR1cm4gc2tiOwomIzQzOwkvKiBza2JfZ3NvX3NlZ21lbnQoKSBzZXQgc2tiLSZndDtwcmV2IHRvIHRoZSBsYXN0IHNlZ21lbnQsIGJ1dCBhc3luYwomIzQzOwkgKiBjcnlwdG8gbWF5IGhhdmUgc3RvbGVuIGl0IGFib3ZlIHdpdGhvdXQgdXBkYXRpbmcgLSZndDtwcmV2LiAgUmVwb2ludAomIzQzOwkgKiBpdCBhdCB0aGUgbGFzdCByZXRhaW5lZCBzZWdtZW50IHNvIHZhbGlkYXRlX3htaXRfc2tiX2xpc3QoKSBkb2VzCiYjNDM7CSAqIG5vdCBjaGFpbiBvbnRvIGEgc2VnbWVudCBub3cgb3duZWQgYnkgdGhlIGNyeXB0byBlbmdpbmUuCiYjNDM7CSAqLwomIzQzOwlpZiAoc2tiKQomIzQzOwkJc2tiLSZndDtwcmV2ID0gcHNrYjsKJiM0MzsKJiM0MzsJcmV0dXJuIHNrYiA/IHNrYiA6IEVSUl9QVFIoLUVJTlBST0dSRVNTKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHZhbGlkYXRlX3htaXRfeGZybSk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjEgMTA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU3OAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDM1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDcml0aWNhbCBOZXR3b3JrIFN0YWNrIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSBzZWUgaXQmIzM5O3MgdG91Y2hpbmcgc29tZSBjb3JlIG5ldHdvcmtpbmcgZnVuY3Rpb25zOiBgdmFsaWRhdGVfeG1pdF9za2JfbGlzdGAsIGBfX2Rldl9xdWV1ZV94bWl0YCBpbiBgbmV0L2NvcmUvZGV2LmNgLCBhbmQgYHZhbGlkYXRlX3htaXRfeGZybWAgaW4gYG5ldC94ZnJtL3hmcm1fZGV2aWNlLmNgLiBUaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIGFib3V0IGhhbmRsaW5nIHRoZSBgLUVJTlBST0dSRVNTYCBlcnJvciBjb2RlIGNvbWluZyBiYWNrIGZyb20gYHZhbGlkYXRlX3htaXRfeGZybWAsIHNwZWNpZmljYWxseSB3aGVuIGFzeW5jIFhGUk0gY3J5cHRvIGlzIGRvaW5nIGl0cyB0aGluZy4gUHJldmlvdXNseSwgYSBgLUVJTlBST0dSRVNTYCB3b3VsZCBtYW5pZmVzdCBhcyBhIGBOVUxMYCByZXR1cm4gZnJvbSBgdmFsaWRhdGVfeG1pdF94ZnJtYCwgd2hpY2ggd2FzIGp1c3QgY29uZnVzaW5nIOKAkyBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIGEgZHJvcHBlZCBwYWNrZXQuCgpOb3csIGluc3RlYWQgb2YgYE5VTExgIG9uIGAtRUlOUFJPR1JFU1NgLCB3ZSBoYXZlIGBFUlJfUFRSKC1FSU5QUk9HUkVTUylgLiBTbWFydCBtb3ZlISBUaGlzIGlzIHRoZW4gcHJvcGFnYXRlZCB1cCB0aGUgc3RhY2ssIGFuZCBjcml0aWNhbGx5LCBgdmFsaWRhdGVfeG1pdF9za2JfbGlzdGAgdXNlcyBgSVNfRVJSX09SX05VTEwoc2tiKWAgdG8gZGVhbCB3aXRoIGl0LCBlc3NlbnRpYWxseSBza2lwcGluZyBpdC4gVGhlbiwgYF9fZGV2X3F1ZXVlX3htaXRgIGNoZWNrcyBmb3IgYFBUUl9FUlIoc2tiKSA9PSAtRUlOUFJPR1JFU1NgIGFuZCBzZXRzIGByYyA9IE5FVF9YTUlUX1NVQ0NFU1NgLiBUaGF0JiMzOTtzIGhvdyBpdCYjMzk7cyBiZWluZyBoYW5kbGVkLgoKVGhlIG90aGVyIGRldGFpbCBpcyB0aGF0IGB2YWxpZGF0ZV94bWl0X3hmcm1gIGlzIGJlaW5nIHVwZGF0ZWQgdG8gc2V0IGBza2ItJmd0O3ByZXZgIHRvIHRoZSBsYXN0IHJldGFpbmVkIHNlZ21lbnQgd2hlbiBhc3luY2hyb25vdXMgY3J5cHRvIHN0ZWFscyBzb21lIHNlZ21lbnRzLiBUaGlzIG1ha2VzIHNlbnNlIGZvciB0cmFja2luZyBwdXJwb3NlcywgZm9yIHBhY2tldCByZWFzc2VtYmx5LCBhbmQgYXZvaWRpbmcgaXNzdWVzIGRvd25zdHJlYW0uCgpUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgYnVnZml4LiBJdCBpbXBhY3RzIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2sgYW5kIFhGUk0gb2ZmbG9hZCwgbWVhbmluZyBJUHNlYy4gVGhlcmVmb3JlLCB0aGlzIHNjcmVhbXMgZm9yIGZ1enppbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyByb2J1c3QgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgc3VidGxlIHJlZ3Jlc3Npb25zLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGZvY3VzZWQgbG9vayBhdCBgdmFsaWRhdGVfeG1pdF9za2JfbGlzdGAsIGBfX2Rldl9xdWV1ZV94bWl0YCwgYW5kIGB2YWxpZGF0ZV94bWl0X3hmcm1gLCBiZWNhdXNlIHRob3NlIGFyZSB0aGUgY29yZSBhcmVhcyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nLiBJIHNob3VsZCBhbHNvIGNoZWNrIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucywgSSBzdXNwZWN0IGBDT05GSUdfWEZSTV9PRkZMT0FEYCBpcyBuZWVkZWQgZm9yIGB2YWxpZGF0ZV94bWl0X3hmcm1gIHRvIGV2ZW4gYmUgcmVsZXZhbnQuIEkgc2hvdWxkIGNoZWNrIGBuZXQveGZybS94ZnJtX2RldmljZS5jYCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDEwOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZhbGlkYXRlX3htaXRfeGZybSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZnJtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS94ZnJtX2RldmljZS5jPTEwMz1zdGF0aWMgaW5saW5lIGJvb2wgeG1pdF94ZnJtX2NoZWNrX292ZXJmbG93KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0xMTQtXG5uZXQveGZybS94ZnJtX2RldmljZS5jOjExNTpzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF94ZnJtKHN0cnVjdCBza19idWZmICpza2IsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzLCBib29sICphZ2Fpbilcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMTE2LXtcbi0tXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTIzNi19XG5uZXQveGZybS94ZnJtX2RldmljZS5jOjIzNzpFWFBPUlRfU1lNQk9MX0dQTCh2YWxpZGF0ZV94bWl0X3hmcm0pO1xubmV0L3hmcm0veGZybV9kZXZpY2UuYy0yMzgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjEgMTA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY3MAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBYRlJNIE1vZHVsZSBDb21waWxhdGlvbioqCgpBbHJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBjb25maWd1cmF0aW9uIG9wdGlvbiBlbmFibGVzIHRoZSBjb21waWxhdGlvbiBvZiBgeGZybV9kZXZpY2Uub2AuIE15IGd1dCBmZWVsaW5nIHNheXMgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhhdCBsaWtlbHkgc2l0IHdpdGhpbiB0aGUgWEZSTSAoSVBzZWMpIHN1YnN5c3RlbS4gVG8gZHJpbGwgZG93biwgSSYjMzk7bSBnb2luZyB0byBqdW1wIGRpcmVjdGx5IGludG8gdGhlIGBuZXQveGZybS9NYWtlZmlsZWAgZmlsZS4gVGhhdCYjMzk7cyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHVuZGVyc3RhbmQgdGhlIGJ1aWxkIHByb2Nlc3MgZm9yIHRoYXQgc3BlY2lmaWMgb2JqZWN0IGZpbGUuIEhvcGVmdWxseSwgaXTigJlzIGEgc3RyYWlnaHRmb3J3YXJkIGNvbmRpdGlvbmFsIGJhc2VkIG9uIGEgS2NvbmZpZyB2YXJpYWJsZS4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBhIGNvbmRpdGlvbmFsIGJ1aWxkIHN0YXRlbWVudCB0aGVyZSwgd2hpY2ggc2hvdWxkIHF1aWNrbHkgcG9pbnQgbWUgdG8gdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9uLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgdGhlcmUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMSAxMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZnJtL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL01ha2VmaWxlPTE0PW9iai0kKENPTkZJR19YRlJNKSA6PSB4ZnJtX3BvbGljeS5vIHhmcm1fc3RhdGUubyB4ZnJtX2hhc2gubyBcXFxubmV0L3hmcm0vTWFrZWZpbGUtMTUtXHRcdCAgICAgIHhmcm1faW5wdXQubyB4ZnJtX291dHB1dC5vIFxcXG5uZXQveGZybS9NYWtlZmlsZToxNjpcdFx0ICAgICAgeGZybV9zeXNjdGwubyB4ZnJtX3JlcGxheS5vIHhmcm1fZGV2aWNlLm8gXFxcbm5ldC94ZnJtL01ha2VmaWxlLTE3LVx0XHQgICAgICB4ZnJtX25hdF9rZWVwYWxpdmUub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDEwOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMjYKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipLZXJuZWwgTW9kdWxlIERlcGVuZGVuY3kgQ2hlY2sqKgoKUmlnaHQsIHNvIGB4ZnJtX2RldmljZS5vYCBpcyBkZWZpbml0ZWx5IGNvbXBpbGVkIHdpdGggYENPTkZJR19YRlJNYCBlbmFibGVkLiBUaGF0JiMzOTtzIGEgZ2l2ZW4uIEJ1dCBteSBpbW1lZGlhdGUgbmV4dCB0aG91Z2h0IGlzIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIsIGJlY2F1c2UgaXQmIzM5O3MgbmV2ZXIgdGhhdCBzaW1wbGUgaW4gdGhlIGtlcm5lbC4gTGV0JiMzOTtzIHNlZSBpZiBgQ09ORklHX1hGUk1fT0ZGTE9BRGAgaXMgYWxzbyBkZWZpbmVkLiBUaGUgcHJlc2VuY2Ugb3IgYWJzZW5jZSBvZiB0aGF0IHdpbGwgc2lnbmlmaWNhbnRseSBpbXBhY3QgaG93IEkgbmVlZCB0byBhcHByb2FjaCB0aGlzLCBhbmQgd2hhdCBvZmZsb2FkIGNhcGFiaWxpdGllcywgb3IgZGVwZW5kZW5jaWVzLCB0aGUgbW9kdWxlIGhhcy4gSSBuZWVkIHRvIGtub3cgaG93IGRlZXBseSBpdCBpbnRlZ3JhdGVzIHdpdGggYW55IHBvdGVudGlhbCBoYXJkd2FyZSBvZmZsb2FkaW5nIHBhdGguIEtub3dpbmcgaWYgb2ZmbG9hZCBpcyBwcmVzZW50IGhlbHBzIG1lIGJldHRlciB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhpcyBwYXJ0aWN1bGFyIG1vZHVsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMSAxMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtYRlJNX09GRkxPQUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGZybS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZz01PWNvbmZpZyBYRlJNXG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xMC1cbm5ldC94ZnJtL0tjb25maWc6MTE6Y29uZmlnIFhGUk1fT0ZGTE9BRFxubmV0L3hmcm0vS2NvbmZpZy0xMi1cdGJvb2xcbi0tXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTIxLVxubmV0L3hmcm0veGZybV9kZXZpY2UuYzoyMjojaWZkZWYgQ09ORklHX1hGUk1fT0ZGTE9BRFxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0yMy1zdGF0aWMgdm9pZCBfX3hmcm1fdHJhbnNwb3J0X3ByZXAoc3RydWN0IHhmcm1fc3RhdGUgKngsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3hmcm0veGZybV9kZXZpY2UuYz0yMzk9aW50IHhmcm1fZGV2X3N0YXRlX2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxuLS1cbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMjUxLVx0aWYgKHh1by1cdTAwM2VmbGFncyBcdTAwMjZcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6MjUyOlx0ICAgIH4oWEZSTV9PRkZMT0FEX0lQVjYgfCBYRlJNX09GRkxPQURfSU5CT1VORCB8IFhGUk1fT0ZGTE9BRF9QQUNLRVQpKSB7XG5uZXQveGZybS94ZnJtX2RldmljZS5jLTI1My1cdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtVbnJlY29nbml6ZWQgZmxhZ3MgaW4gb2ZmbG9hZCByZXF1ZXN0XCYjMzQ7KTtcbi0tXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTI1Ni1cbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6MjU3Olx0aWYgKCh4dW8tXHUwMDNlZmxhZ3MgXHUwMDI2IFhGUk1fT0ZGTE9BRF9JTkJPVU5EIFx1MDAyNlx1MDAyNiB4LVx1MDAzZWRpciA9PSBYRlJNX1NBX0RJUl9PVVQpIHx8XG5uZXQveGZybS94ZnJtX2RldmljZS5jOjI1ODpcdCAgICAoISh4dW8tXHUwMDNlZmxhZ3MgXHUwMDI2IFhGUk1fT0ZGTE9BRF9JTkJPVU5EKSBcdTAwMjZcdTAwMjYgeC1cdTAwM2VkaXIgPT0gWEZSTV9TQV9ESVJfSU4pKSB7XG5uZXQveGZybS94ZnJtX2RldmljZS5jLTI1OS1cdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtNaXNtYXRjaGVkIFNBIGFuZCBvZmZsb2FkIGRpcmVjdGlvblwmIzM0Oyk7XG4tLVxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0yNjItXG5uZXQveGZybS94ZnJtX2RldmljZS5jOjI2MzpcdGlmICh4dW8tXHUwMDNlZmxhZ3MgXHUwMDI2IFhGUk1fT0ZGTE9BRF9JTkJPVU5EIFx1MDAyNlx1MDAyNiB4LVx1MDAzZWlmX2lkKSB7XG5uZXQveGZybS94ZnJtX2RldmljZS5jLTI2NC1cdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtYRlJNIGlmX2lkIGlzIG5vdCBzdXBwb3J0ZWQgaW4gUlggcGF0aFwmIzM0Oyk7XG4tLVxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0yNjctXG5uZXQveGZybS94ZnJtX2RldmljZS5jOjI2ODpcdGlzX3BhY2tldF9vZmZsb2FkID0geHVvLVx1MDAzZWZsYWdzIFx1MDAyNiBYRlJNX09GRkxPQURfUEFDS0VUO1xubmV0L3hmcm0veGZybV9kZXZpY2UuYy0yNjktXG4tLVxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0yNzktXG5uZXQveGZybS94ZnJtX2RldmljZS5jOjI4MDpcdFx0aWYgKCEoeHVvLVx1MDAzZWZsYWdzIFx1MDAyNiBYRlJNX09GRkxPQURfSU5CT1VORCkpIHtcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMjgxLVx0XHRcdHNhZGRyID0gXHUwMDI2eC1cdTAwM2Vwcm9wcy5zYWRkcjtcbi0tXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTMyNS1cbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6MzI2Olx0aWYgKHh1by1cdTAwM2VmbGFncyBcdTAwMjYgWEZSTV9PRkZMT0FEX0lOQk9VTkQpXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTMyNy1cdFx0eHNvLVx1MDAzZWRpciA9IFhGUk1fREVWX09GRkxPQURfSU47XG4tLVxubmV0L3hmcm0veGZybV9kZXZpY2UuYz0zNTg9aW50IHhmcm1fZGV2X3BvbGljeV9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhwLFxuLS1cbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMzY1LVxubmV0L3hmcm0veGZybV9kZXZpY2UuYzozNjY6XHRpZiAoIXh1by1cdTAwM2VmbGFncyB8fCB4dW8tXHUwMDNlZmxhZ3MgXHUwMDI2IH5YRlJNX09GRkxPQURfUEFDS0VUKSB7XG5uZXQveGZybS94ZnJtX2RldmljZS5jLTM2Ny1cdFx0LyogV2Ugc3VwcG9ydCBvbmx5IHBhY2tldCBvZmZsb2FkIG1vZGUgYW5kIGl0IG1lYW5zXG5uZXQveGZybS94ZnJtX2RldmljZS5jOjM2ODpcdFx0ICogdGhhdCB1c2VyIG11c3Qgc2V0IFhGUk1fT0ZGTE9BRF9QQUNLRVQgYml0LlxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0zNjktXHRcdCAqL1xuLS1cbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM9NTI1PXN0YXRpYyBpbnQgeGZybV9hcGlfY2hlY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtNTI2LXtcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6NTI3OiNpZmRlZiBDT05GSUdfWEZSTV9PRkZMT0FEXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTUyOC1cdGlmICgoZGV2LVx1MDAzZWZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX0hXX0VTUF9UWF9DU1VNKSBcdTAwMjZcdTAwMjZcbi0tXG5uZXQveGZybS94ZnJtX3JlcGxheS5jPTU1Mz1zdGF0aWMgdm9pZCB4ZnJtX3JlcGxheV9hZHZhbmNlX2VzbihzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgX19iZTMyIG5ldF9zZXEpXG4tLVxubmV0L3hmcm0veGZybV9yZXBsYXkuYy02MTAtXG5uZXQveGZybS94ZnJtX3JlcGxheS5jOjYxMTojaWZkZWYgQ09ORklHX1hGUk1fT0ZGTE9BRFxubmV0L3hmcm0veGZybV9yZXBsYXkuYy02MTItc3RhdGljIGludCB4ZnJtX3JlcGxheV9vdmVyZmxvd19vZmZsb2FkKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz03NjM9RVhQT1JUX1NZTUJPTCh4ZnJtX3N0YXRlX2FsbG9jKTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy03NjQtXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6NzY1OiNpZmRlZiBDT05GSUdfWEZSTV9PRkZMT0FEXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNzY2LXZvaWQgeGZybV9kZXZfc3RhdGVfZGVsZXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz0xMTMxPXN0YXRpYyBzdHJ1Y3QgeGZybV9zdGF0ZSAqX194ZnJtX3N0YXRlX2xvb2t1cF9hbGwoY29uc3Qgc3RydWN0IHhmcm1faGFzaF9zdGF0ZV9wdHJzICpzdGF0ZV9wdHJzLFxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xMTQxLVx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHgsIHN0YXRlX3B0cnMtXHUwMDNlYnlzcGkgJiM0MzsgaCwgYnlzcGkpIHtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxMTQyOiNpZmRlZiBDT05GSUdfWEZSTV9PRkZMT0FEXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTE0My1cdFx0aWYgKHhkby1cdTAwM2V0eXBlID09IFhGUk1fREVWX09GRkxPQURfUEFDS0VUKSB7XG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTEzNDk9eGZybV9zdGF0ZV9maW5kKGNvbnN0IHhmcm1fYWRkcmVzc190ICpkYWRkciwgY29uc3QgeGZybV9hZGRyZXNzX3QgKnNhZGRyLFxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xNDIyLVx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHgsIHN0YXRlX3B0cnMuYnlkc3QgJiM0MzsgaCwgYnlkc3QpIHtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxNDIzOiNpZmRlZiBDT05GSUdfWEZSTV9PRkZMT0FEXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTQyNC1cdFx0aWYgKHBvbC1cdTAwM2V4ZG8udHlwZSA9PSBYRlJNX0RFVl9PRkZMT0FEX1BBQ0tFVCkge1xuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xNDU3LVx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHgsIHN0YXRlX3B0cnMuYnlkc3QgJiM0MzsgaF93aWxkY2FyZCwgYnlkc3QpIHtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxNDU4OiNpZmRlZiBDT05GSUdfWEZSTV9PRkZMT0FEXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTQ1OS1cdFx0aWYgKHBvbC1cdTAwM2V4ZG8udHlwZSA9PSBYRlJNX0RFVl9PRkZMT0FEX1BBQ0tFVCkge1xuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xNTMzLVx0XHR9XG5uZXQveGZybS94ZnJtX3N0YXRlLmM6MTUzNDojaWZkZWYgQ09ORklHX1hGUk1fT0ZGTE9BRFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE1MzUtXHRcdGlmIChwb2wtXHUwMDNleGRvLnR5cGUgPT0gWEZSTV9ERVZfT0ZGTE9BRF9QQUNLRVQpIHtcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTU5Mi1cdFx0fSBlbHNlIHtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxNTkzOiNpZmRlZiBDT05GSUdfWEZSTV9PRkZMT0FEXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTU5NC1cdFx0XHRzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvID0gXHUwMDI2eC1cdTAwM2V4c287XG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MTIwND1zdGF0aWMgdm9pZCB4c29fdG9feHVvKGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMTIwOC1cdGlmICh4c28tXHUwMDNlZGlyID09IFhGUk1fREVWX09GRkxPQURfSU4pXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMjA5Olx0XHR4dW8tXHUwMDNlZmxhZ3MgPSBYRlJNX09GRkxPQURfSU5CT1VORDtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyMTAtXHRpZiAoeHNvLVx1MDAzZXR5cGUgPT0gWEZSTV9ERVZfT0ZGTE9BRF9QQUNLRVQpXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMjExOlx0XHR4dW8tXHUwMDNlZmxhZ3MgfD0gWEZSTV9PRkZMT0FEX1BBQ0tFVDtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyMTItfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDEwOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0NjgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIHJlYXNvbmluZzoKCioqQW5hbHl6aW5nIFhGUk0gT2ZmbG9hZCBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHRoZSBrZXkgaGVyZSBzZWVtcyB0byBiZSBgQ09ORklHX1hGUk1fT0ZGTE9BRGAuIFRoYXQmIzM5O3MgdGhlIGNvbmZpZyBpdGVtIHRoYXQmIzM5O3MgbGlrZWx5IGNvbnRyb2xsaW5nIHRoZSBiZWhhdmlvciBJJiMzOTttIGludGVyZXN0ZWQgaW4sIHdoaWNoIHN1Z2dlc3RzIEkmIzM5O20gZGl2aW5nIGludG8gYW4gb2ZmbG9hZC1yZWxhdGVkIGFyZWEsIHNwZWNpZmljYWxseSwgSVBzZWMgb2ZmbG9hZCBwZXJoYXBzPyBHb3R0YSByZW1lbWJlciB0aGF0LiBOb3csIHdoZXJlIHRvIGxvb2s/IE15IGluc3RpbmN0cyBhcmUgaW1tZWRpYXRlbHkgZ3VpZGluZyBtZSB0b3dhcmRzIHRoZSBjb3JlIG5ldHdvcmsgZGV2aWNlIGhhbmRsaW5nLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgbmV0L2NvcmUvZGV2LmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBpcyB2YWxpZGF0aW5nIGFuZCBxdWV1ZWluZyBTS0JzLCBlc3BlY2lhbGx5IHJlZ2FyZGluZyBvZmZsb2FkIHBhdGhzLiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIGJlIGRpZ2dpbmcgaW50byBgdmFsaWRhdGVfeG1pdF9za2JfbGlzdGAgYW5kLCBtb3JlIGltcG9ydGFudGx5LCBgX19kZXZfcXVldWVfeG1pdGAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgY2VudHJhbCB0byB0aGUgdHJhbnNtaXNzaW9uIHByb2Nlc3MsIHNvIHRoZXkmIzM5O2xsIGxpa2VseSBob2xkIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgb2ZmbG9hZCBkZWNpc2lvbnMgYXJlIG1hZGUgYW5kIGlmIGBYRlJNX09GRkxPQURgIHBsYXlzIGEgcm9sZSBpbiBpbmZsdWVuY2luZyB0aG9zZSBkZWNpc2lvbnMuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgdGhlIGxvZ2ljIHdpdGhpbiB0aGVzZSBmdW5jdGlvbnMgdG8gc2VlIGlmIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0sIGFuZCBpdHMgZWZmZWN0cywgYXJlIHZpc2libGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDEwOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZhbGlkYXRlX3htaXRfc2tiX2xpc3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY29yZS9kZXYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9kZXYuYz00MDI0PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCAqYWdhaW4pXG4tLVxubmV0L2NvcmUvZGV2LmMtNDA4Mi1cbm5ldC9jb3JlL2Rldi5jOjQwODM6c3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfc2tiX2xpc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCAqYWdhaW4pXG5uZXQvY29yZS9kZXYuYy00MDg0LXtcbi0tXG5uZXQvY29yZS9kZXYuYy00MTA4LX1cbm5ldC9jb3JlL2Rldi5jOjQxMDk6RVhQT1JUX1NZTUJPTF9HUEwodmFsaWRhdGVfeG1pdF9za2JfbGlzdCk7XG5uZXQvY29yZS9kZXYuYy00MTEwLVxuLS1cbm5ldC9jb3JlL2Rldi5jPTQ5MTg9aW50IF9fZGV2X2RpcmVjdF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHUxNiBxdWV1ZV9pZClcbi0tXG5uZXQvY29yZS9kZXYuYy00OTI5LVxubmV0L2NvcmUvZGV2LmM6NDkzMDpcdHNrYiA9IHZhbGlkYXRlX3htaXRfc2tiX2xpc3Qoc2tiLCBkZXYsIFx1MDAyNmFnYWluKTtcbm5ldC9jb3JlL2Rldi5jLTQ5MzEtXHRpZiAoc2tiICE9IG9yaWdfc2tiKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMSAxMDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTE3CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogOTEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZvY3VzIFN5bWJvbHMgYW5kIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgYHZhbGlkYXRlX3htaXRfc2tiX2xpc3RgIGFuZCBgX19kZXZfcXVldWVfeG1pdGAganVtcCBvdXQgYXMgY29yZSBuZXR3b3JraW5nIGZ1bmN0aW9ucywgYXMgb25lIHdvdWxkIGV4cGVjdC4gVGhlIHBhdGNoIHNlZW1zIHRvIGJlIGludHJvZHVjaW5nIGhhbmRsaW5nIGZvciBgRVJSX1BUUigtRUlOUFJPR1JFU1MpYCB3aXRoaW4gdGhvc2UgZnVuY3Rpb25zLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gTXkgaW5pdGlhbCBpbmNsaW5hdGlvbiBpcyB0byBmbGFnIHRob3NlIGZ1bmN0aW9ucyBhcyB0aGUgZm9jdXMgZm9yIGFuYWx5c2lzLCBhbG9uZyB3aXRoIGB2YWxpZGF0ZV94bWl0X3hmcm1gLgoKV2FpdCBhIG1pbnV0ZSwgSSBoYXZlIHRvIGJlIGNhcmVmdWwgaGVyZS4gYF9fZGV2X3F1ZXVlX3htaXRgIGFuZCBgdmFsaWRhdGVfeG1pdF9za2JfbGlzdGAgYXJlICp2ZXJ5KiBnZW5lcmljIGFuZCBsaWtlbHkgaG90IHBhdGhzLiBUaGUgaW5zdHJ1Y3Rpb25zIGV4cGxpY2l0bHkgdGVsbCBtZSB0byBhdm9pZCBsaXN0aW5nIHRob3NlIGdlbmVyaWMsIGhvdC1wYXRoIGZ1bmN0aW9ucywgYXMgaXQgd2lsbCBza2V3IHRoZSB0ZXN0IGRpc3RyaWJ1dGlvbnMuIFRoYXQgbWFrZXMgc2Vuc2UuIEkgbmVlZCB0byBmaW5kIHNvbWV0aGluZyBtb3JlIHNwZWNpZmljLiAgYHZhbGlkYXRlX3htaXRfeGZybWAgaXMgc3BlY2lmaWNhbGx5IHRpZWQgdG8gWEZSTSBvZmZsb2FkLCB3aGljaCBpcyBnb29kLiBJdCYjMzk7cyBhIG1vcmUgdGFyZ2V0ZWQgZnVuY3Rpb24gYW5kIHNob3VsZCBiZSBhbiBhY2NlcHRhYmxlIGZvY3VzLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciBzdWl0YWJsZSBmdW5jdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhbnl0aGluZyBlbHNlLiBgdmFsaWRhdGVfeG1pdF9za2JgIGlzIGFsc28gYSBob3QgcGF0aCwgc28gdGhhdCBpcyBvZmYgdGhlIGxpc3QuCgpTbywgYHZhbGlkYXRlX3htaXRfeGZybWAgaXQgaXMuIFRoYXQgc2VlbXMgbGlrZSB0aGUgcmlnaHQgY2FsbCwgaXQgaXMgc3BlY2lmaWMgZW5vdWdoLgoKTm93LCBsZXQmIzM5O3MgZ2V0IHRoZSBjb25maWd1cmF0aW9ucyBzdHJhaWdodC4gSSBrbm93IGB2YWxpZGF0ZV94bWl0X3hmcm1gIGlzIHVzZWQgaW4gdGhlIGNvbnRleHQgb2YgWEZSTSBvZmZsb2FkLCBzbyBJJiMzOTtsbCBuZWVkIGBDT05GSUdfWEZSTV9PRkZMT0FEYCBhbmQgSSB0aGluayBJIGFsc28gbmVlZCB0aGUgbWFpbiBgQ09ORklHX1hGUk1gIGFzIHdlbGwuIExldCBtZSBkb3VibGUgY2hlY2suLi4gT2theSwgYENPTkZJR19YRlJNYCBpcyB0aGUgbWFpbiBvbmUgYW5kIGBDT05GSUdfWEZSTV9PRkZMT0FEYCBpcyBzcGVjaWZpYyB0byB0aGUgb2ZmbG9hZCBmZWF0dXJlLiBBbHJpZ2h0LCBsZXQmIzM5O3MgY2hlY2sgYFhGUk1fT0ZGTE9BRGAuIEl0JiMzOTtzIGEgYm9vbGVhbiwgd2hpY2ggc2ltcGxpZmllcyB0aGluZ3MuIEdvb2QuIGBYRlJNX09GRkxPQURgIGlzIHRoZSByaWdodCBjb25maWd1cmF0aW9uIHN5bWJvbC4KCk5vdywgbGV0JiMzOTtzIHpvb20gYmFjayBpbiBvbiB0aGUgcGF0Y2ggaXRzZWxmIGFuZCByZS1leGFtaW5lIHRoZSBjb2RlIGNoYW5nZXMuIEkmIzM5O2xsIHJlYWQgdGhlIGNvZGUgbm93LCBqdXN0IHRvIGJlIHN1cmUuLi4KCmBgYGMKQEAgLTQ4NjAsOCAmIzQzOzQ4NjMsMTEgQEAgaW50IF9fZGV2X3F1ZXVlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKnNiX2RldikKIAkJCWdvdG8gcmVjdXJzaW9uX2FsZXJ0OwogCiAJCXNrYiA9IHZhbGlkYXRlX3htaXRfc2tiKHNrYiwgZGV2LCAmYW1wO2FnYWluKTsKLQkJaWYgKCFza2IpCiYjNDM7CQlpZiAoSVNfRVJSX09SX05VTEwoc2tiKSkgewomIzQzOwkJCWlmIChQVFJfRVJSKHNrYikgPT0gLUVJTlBST0dSRVNTKQomIzQzOwkJCQlyYyA9IE5FVF9YTUlUX1NVQ0NFU1M7CiAJCQlnb3RvIG91dDsKJiM0MzsJCX0KYGBgClRoaXMgaXMgaW4gYF9fZGV2X3F1ZXVlX3htaXRgLgoKYGBgYwpAQCAtNDA4OSw3ICYjNDM7NDA5Miw3IEBAIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3NrYl9saXN0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkCiAJCXNrYi0mZ3Q7cHJldiA9IHNrYjsKIAogCQlza2IgPSB2YWxpZGF0ZV94bWl0X3NrYihza2IsIGRldiwgYWdhaW4pOwotCQlpZiAoIXNrYikKJiM0MzsJCWlmIChJU19FUlJfT1JfTlVMTChza2IpKQogCQkJY29udGludWU7CmBgYApUaGlzIGlzIGluIGB2YWxpZGF0ZV94bWl0X3NrYl9saXN0YC4KCmBgYGMKQEAgLTE4Miw3ICYjNDM7MTgyLDcgQEAgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfeGZybShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXIKIAkJZXJyID0geC0mZ3Q7dHlwZV9vZmZsb2FkLSZndDt4bWl0KHgsIHNrYiwgZXNwX2ZlYXR1cmVzKTsKIAkJaWYgKGVycikgewogCQkJaWYgKGVyciA9PSAtRUlOUFJPR1JFU1MpCi0JCQkJcmV0dXJuIE5VTEw7CiYjNDM7CQkJCXJldHVybiBFUlJfUFRSKC1FSU5QUk9HUkVTUyk7CmBgYApUaGlzIGlzIGluIGB2YWxpZGF0ZV94bWl0X3hmcm1gLgoKT2theSwgdGhlIGNoYW5nZXMgbG9vayBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSwgaW4gYXN5bmMgY3J5cHRvIHNjZW5hcmlvcywgYSAmIzM0O3N0b2xlbiYjMzQ7IHBhY2tldCB3b3VsZCBwcmV2aW91c2x5IGJlIHRyZWF0ZWQgYXMgYSBkcm9wIChyZXR1cm5pbmcgYE5VTExgKS4gVGhpcyBjYXVzZWQgcG90ZW50aWFsIGlzc3VlcyBsaWtlIHVzZS1hZnRlci1mcmVlIG9yIGluY29ycmVjdCBzdGF0cy4gIE5vdywgdGhlIGZ1bmN0aW9ucyByZXR1cm4gYEVSUl9QVFIoLUVJTlBST0dSRVNTKWAgc28gdGhhdCB0aGUgY2FsbGVyIGtub3dzIHRoZSBwYWNrZXQgd2FzICYjMzQ7c3RvbGVuJiMzNDsgKGZvciBsYWNrIG9mIGEgYmV0dGVyIHdvcmQpIGFuZCBjYW4gdGhlbiByZXR1cm4gYE5FVF9YTUlUX1NVQ0NFU1NgIGluZGljYXRpbmcgdGhhdCB0aGUgcGFja2V0IHRyYW5zbWlzc2lvbiBzaG91bGQgYmUgcmV0cmllZCBvciBoYW5kbGVkIGFwcHJvcHJpYXRlbHkuIFNlZW1zIHJlYXNvbmFibGUuCgpJcyBgdmFsaWRhdGVfeG1pdF94ZnJtYCByZWFjaGFibGU/IFllcywgd2hlbiBYRlJNIG9mZmxvYWQgaXMKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMSAxMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4bWl0X3hmcm0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGZybS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9kZXZpY2UuYz02OT1zdGF0aWMgdm9pZCB4ZnJtX291dGVyX21vZGVfcHJlcChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTEwMi1cbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6MTAzOnN0YXRpYyBpbmxpbmUgYm9vbCB4bWl0X3hmcm1fY2hlY2tfb3ZlcmZsb3coc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMTA0LXtcbi0tXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTExNC1cbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6MTE1OnN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3hmcm0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMsIGJvb2wgKmFnYWluKVxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0xMTYte1xuLS1cbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMTU4LVx0aWYgKHNrYl9pc19nc28oc2tiKSBcdTAwMjZcdTAwMjYgKHVubGlrZWx5KHgtXHUwMDNleHNvLmRldiAhPSBkZXYpIHx8XG5uZXQveGZybS94ZnJtX2RldmljZS5jOjE1OTpcdFx0XHRcdHVubGlrZWx5KHhtaXRfeGZybV9jaGVja19vdmVyZmxvdyhza2IpKSkpIHtcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMTYwLVx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2Vncztcbi0tXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTIzNi19XG5uZXQveGZybS94ZnJtX2RldmljZS5jOjIzNzpFWFBPUlRfU1lNQk9MX0dQTCh2YWxpZGF0ZV94bWl0X3hmcm0pO1xubmV0L3hmcm0veGZybV9kZXZpY2UuYy0yMzgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDEwOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0NzcKCQkJCQkJCW91dHB1dDogOTgKCQkJCQkJCXRob3VnaHRzOiAxOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gdGhlIG1haW4gZnVuY3Rpb24gdGhpcyBwYXRjaCBpcyB6ZXJvaW5nIGluIG9uIGlzIGB2YWxpZGF0ZV94bWl0X3hmcm1gLiBHb29kLCB0aGF0JiMzOTtzIHdoYXQgSSBleHBlY3RlZCBnaXZlbiB0aGUgY29uZmlndXJhdGlvbiBgWEZSTV9PRkZMT0FEYC4gSSBuZWVkIHRvIGJlIHN1cmUgdGhvdWdoLCBzbyBsZXQmIzM5O3MganVzdCBxdWlja2x5IHZlcmlmeSB0aGF0IGB2YWxpZGF0ZV94bWl0X3hmcm1gIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQmIzM5O3MgZ2V0dGluZyBzZXJpb3VzIG1vZGlmaWNhdGlvbi4gQWhhLCB0aGVyZSBhcmUgYWxzbyBgdmFsaWRhdGVfeG1pdF9za2JfbGlzdGAgYW5kIGBfX2Rldl9xdWV1ZV94bWl0YCwgYnV0IHRob3NlIHNlZW0gYSBiaXQgYnJvYWQgYW5kIGdlbmVyaWMgaW4gdGhpcyBjb250ZXh0LgoKUmlnaHQsIHRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggaXMgYWJvdXQgaG93IHRoZSBuZXR3b3JraW5nIHRyYW5zbWl0IHBhdGgsIGVzcGVjaWFsbHkgd2l0aCBYRlJNIG9mZmxvYWQgZW5hYmxlZCwgZGVhbHMgd2l0aCBwYWNrZXRzIHRoYXQgYXJlIGVzc2VudGlhbGx5ICYjMzQ7c3RvbGVuJiMzNDsgYnkgYXN5bmMgY3J5cHRvIHByb2Nlc3NpbmcuIFByZXZpb3VzbHksIHRoZXNlIHBhY2tldHMgd291bGQgbGVhZCB0byBhIGBOVUxMYCByZXR1cm4sIGJ1dCBub3cgaXQgc2VlbXMgdGhlIHBhdGNoIGlzIGNvcnJlY3RseSByZXR1cm5pbmcgYC1FSU5QUk9HUkVTU2AuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBpbXBhY3RpbmcgaG93IHdlIHRyYW5zbWl0IHBhY2tldHMgYW5kIGhvdyB3ZSBoYW5kbGUgbWVtb3J5IHdpdGhpbiB0aGUgYHNrYi0mZ3Q7cHJldmAgcG9pbnRlciwgd2hpY2ggaXMgYSBrZXkgc3RydWN0dXJlLgoKQmFzZWQgb24gdGhpcywgaXQgd2FycmFudHMgc29tZSBzZXJpb3VzIGZ1enppbmcgYW5kIG15IHByaW1hcnkgZm9jdXMgc2hvdWxkIHJlbWFpbiBgdmFsaWRhdGVfeG1pdF94ZnJtYCB3aXRoIGBYRlJNX09GRkxPQURgIGVuYWJsZWQuIEkgY2FuIHNlZSB0aGlzIGJlaW5nIGFuIGFyZWEgd2hlcmUgc29tZSBzdWJ0bGUgYnVncyBvciBzZWN1cml0eSBpc3N1ZXMgY291bGQgZW1lcmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMSAxMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WEZSTV9PRkZMT0FEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmFsaWRhdGVfeG1pdF94ZnJtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIG5ldHdvcmtpbmcgdHJhbnNtaXQgcGF0aCBhbmQgWEZSTSBvZmZsb2FkIHRvIHByb3Blcmx5IGhhbmRsZSBwYWNrZXRzIHN0b2xlbiBieSBhc3luYyBjcnlwdG8gKHJldHVybmluZyAtRUlOUFJPR1JFU1MgaW5zdGVhZCBvZiBOVUxMKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBwYWNrZXQgdHJhbnNtaXNzaW9uIGFuZCBtZW1vcnkgbWFuYWdlbWVudCAoc2tiLVx1MDAzZXByZXYgcG9pbnRlcikuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fT0ZGTE9BRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZhbGlkYXRlX3htaXRfeGZybSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBuZXR3b3JraW5nIHRyYW5zbWl0IHBhdGggYW5kIFhGUk0gb2ZmbG9hZCB0byBwcm9wZXJseSBoYW5kbGUgcGFja2V0cyBzdG9sZW4gYnkgYXN5bmMgY3J5cHRvIChyZXR1cm5pbmcgLUVJTlBST0dSRVNTIGluc3RlYWQgb2YgTlVMTCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgcGFja2V0IHRyYW5zbWlzc2lvbiBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgKHNrYi1cdTAwM2VwcmV2IHBvaW50ZXIpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjFUMTA6MTY6MDIuMDU5OTA5MzcxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ1ODM2NzAyMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTV9PRkZMT0FEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmFsaWRhdGVfeG1pdF94ZnJtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbmV0d29ya2luZyB0cmFuc21pdCBwYXRoIGFuZCBYRlJNIG9mZmxvYWQgdG8gcHJvcGVybHkgaGFuZGxlIHBhY2tldHMgc3RvbGVuIGJ5IGFzeW5jIGNyeXB0byAocmV0dXJuaW5nIC1FSU5QUk9HUkVTUyBpbnN0ZWFkIG9mIE5VTEwpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIHBhY2tldCB0cmFuc21pc3Npb24gYW5kIG1lbW9yeSBtYW5hZ2VtZW50IChza2ItXFx1MDAzZXByZXYgcG9pbnRlcikuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIxVDEwOjE2OjAyLjA1OTkxNTY4MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI5MDQ0NDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjQzNTQ3ODMzMmNhNTc2YzBhZTk2N2JlYzkxMzRhNTU1MTVmYTRmOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1biAyMSAxMDoxNjowMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jXFxuaW5kZXggNWMwMWRmYWE2YzQ0NTAuLmY3ZmZjNGQyOTU5NzhlIDEwMDY0NFxcbi0tLSBhL25ldC9jb3JlL2Rldi5jXFxuKysrIGIvbmV0L2NvcmUvZGV2LmNcXG5AQCAtNDAxOCw2ICs0MDE4LDkgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3VucmVhZGFibGVfc2tiKHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHJldHVybiBOVUxMO1xcbiB9XFxuIFxcbisvKiBSZXR1cm5zIHRoZSBza2Igb24gc3VjY2VzcywgTlVMTCBpZiBkcm9wcGVkLCBvciBFUlJfUFRSKC1FSU5QUk9HUkVTUylcXG4rICogaWYgc3RvbGVuIGJ5IGFzeW5jIHhmcm0gY3J5cHRvIChkZWxpdmVyZWQgdmlhIHhmcm1fZGV2X3Jlc3VtZSgpKS5cXG4rICovXFxuIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCAqYWdhaW4pXFxuIHtcXG4gXFx0bmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXM7XFxuQEAgLTQwODksNyArNDA5Miw3IEBAIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3NrYl9saXN0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkXFxuIFxcdFxcdHNrYi1cXHUwMDNlcHJldiA9IHNrYjtcXG4gXFxuIFxcdFxcdHNrYiA9IHZhbGlkYXRlX3htaXRfc2tiKHNrYiwgZGV2LCBhZ2Fpbik7XFxuLVxcdFxcdGlmICghc2tiKVxcbitcXHRcXHRpZiAoSVNfRVJSX09SX05VTEwoc2tiKSlcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRpZiAoIWhlYWQpXFxuQEAgLTQ4NjAsOCArNDg2MywxMSBAQCBpbnQgX19kZXZfcXVldWVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqc2JfZGV2KVxcbiBcXHRcXHRcXHRnb3RvIHJlY3Vyc2lvbl9hbGVydDtcXG4gXFxuIFxcdFxcdHNrYiA9IHZhbGlkYXRlX3htaXRfc2tiKHNrYiwgZGV2LCBcXHUwMDI2YWdhaW4pO1xcbi1cXHRcXHRpZiAoIXNrYilcXG4rXFx0XFx0aWYgKElTX0VSUl9PUl9OVUxMKHNrYikpIHtcXG4rXFx0XFx0XFx0aWYgKFBUUl9FUlIoc2tiKSA9PSAtRUlOUFJPR1JFU1MpXFxuK1xcdFxcdFxcdFxcdHJjID0gTkVUX1hNSVRfU1VDQ0VTUztcXG4gXFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdH1cXG4gXFxuIFxcdFxcdEhBUkRfVFhfTE9DSyhkZXYsIHR4cSwgY3B1KTtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fZGV2aWNlLmMgYi9uZXQveGZybS94ZnJtX2RldmljZS5jXFxuaW5kZXggNjMwZjNkZDMxY2M1Y2UuLmFlYzFlMTE4NGE3MTM0IDEwMDY0NFxcbi0tLSBhL25ldC94ZnJtL3hmcm1fZGV2aWNlLmNcXG4rKysgYi9uZXQveGZybS94ZnJtX2RldmljZS5jXFxuQEAgLTE4Miw3ICsxODIsNyBAQCBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF94ZnJtKHN0cnVjdCBza19idWZmICpza2IsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1clxcbiBcXHRcXHRlcnIgPSB4LVxcdTAwM2V0eXBlX29mZmxvYWQtXFx1MDAzZXhtaXQoeCwgc2tiLCBlc3BfZmVhdHVyZXMpO1xcbiBcXHRcXHRpZiAoZXJyKSB7XFxuIFxcdFxcdFxcdGlmIChlcnIgPT0gLUVJTlBST0dSRVNTKVxcbi1cXHRcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTlBST0dSRVNTKTtcXG4gXFxuIFxcdFxcdFxcdFhGUk1fSU5DX1NUQVRTKHhzX25ldCh4KSwgTElOVVhfTUlCX1hGUk1PVVRTVEFURVBST1RPRVJST1IpO1xcbiBcXHRcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG5AQCAtMjI0LDcgKzIyNCwxNSBAQCBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF94ZnJtKHN0cnVjdCBza19idWZmICpza2IsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1clxcbiBcXHRcXHRwc2tiID0gc2tiMjtcXG4gXFx0fVxcbiBcXG4tXFx0cmV0dXJuIHNrYjtcXG4rXFx0Lyogc2tiX2dzb19zZWdtZW50KCkgc2V0IHNrYi1cXHUwMDNlcHJldiB0byB0aGUgbGFzdCBzZWdtZW50LCBidXQgYXN5bmNcXG4rXFx0ICogY3J5cHRvIG1heSBoYXZlIHN0b2xlbiBpdCBhYm92ZSB3aXRob3V0IHVwZGF0aW5nIC1cXHUwMDNlcHJldi4gIFJlcG9pbnRcXG4rXFx0ICogaXQgYXQgdGhlIGxhc3QgcmV0YWluZWQgc2VnbWVudCBzbyB2YWxpZGF0ZV94bWl0X3NrYl9saXN0KCkgZG9lc1xcbitcXHQgKiBub3QgY2hhaW4gb250byBhIHNlZ21lbnQgbm93IG93bmVkIGJ5IHRoZSBjcnlwdG8gZW5naW5lLlxcbitcXHQgKi9cXG4rXFx0aWYgKHNrYilcXG4rXFx0XFx0c2tiLVxcdTAwM2VwcmV2ID0gcHNrYjtcXG4rXFxuK1xcdHJldHVybiBza2IgPyBza2IgOiBFUlJfUFRSKC1FSU5QUk9HUkVTUyk7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwodmFsaWRhdGVfeG1pdF94ZnJtKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIxVDEwOjE2OjAyLjU5MDIzMTUxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDA1MzMzNzI5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNX09GRkxPQURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2YWxpZGF0ZV94bWl0X3hmcm1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBuZXR3b3JraW5nIHRyYW5zbWl0IHBhdGggYW5kIFhGUk0gb2ZmbG9hZCB0byBwcm9wZXJseSBoYW5kbGUgcGFja2V0cyBzdG9sZW4gYnkgYXN5bmMgY3J5cHRvIChyZXR1cm5pbmcgLUVJTlBST0dSRVNTIGluc3RlYWQgb2YgTlVMTCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgcGFja2V0IHRyYW5zbWlzc2lvbiBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgKHNrYi1cXHUwMDNlcHJldiBwb2ludGVyKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiNDM1NDc4MzMyY2E1NzZjMGFlOTY3YmVjOTEzNGE1NTUxNWZhNGY5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdW4gMjEgMTA6MTY6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jXG5pbmRleCA1YzAxZGZhYTZjNDQ1MC4uZjdmZmM0ZDI5NTk3OGUgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9kZXYuY1xuKysrIGIvbmV0L2NvcmUvZGV2LmNcbkBAIC00MDE4LDYgKzQwMTgsOSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfdW5yZWFkYWJsZV9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbisvKiBSZXR1cm5zIHRoZSBza2Igb24gc3VjY2VzcywgTlVMTCBpZiBkcm9wcGVkLCBvciBFUlJfUFRSKC1FSU5QUk9HUkVTUylcbisgKiBpZiBzdG9sZW4gYnkgYXN5bmMgeGZybSBjcnlwdG8gKGRlbGl2ZXJlZCB2aWEgeGZybV9kZXZfcmVzdW1lKCkpLlxuKyAqL1xuIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCAqYWdhaW4pXG4ge1xuIFx0bmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXM7XG5AQCAtNDA4OSw3ICs0MDkyLDcgQEAgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfc2tiX2xpc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRcbiBcdFx0c2tiLVx1MDAzZXByZXYgPSBza2I7XG4gXG4gXHRcdHNrYiA9IHZhbGlkYXRlX3htaXRfc2tiKHNrYiwgZGV2LCBhZ2Fpbik7XG4tXHRcdGlmICghc2tiKVxuK1x0XHRpZiAoSVNfRVJSX09SX05VTEwoc2tiKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0aWYgKCFoZWFkKVxuQEAgLTQ4NjAsOCArNDg2MywxMSBAQCBpbnQgX19kZXZfcXVldWVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqc2JfZGV2KVxuIFx0XHRcdGdvdG8gcmVjdXJzaW9uX2FsZXJ0O1xuIFxuIFx0XHRza2IgPSB2YWxpZGF0ZV94bWl0X3NrYihza2IsIGRldiwgXHUwMDI2YWdhaW4pO1xuLVx0XHRpZiAoIXNrYilcbitcdFx0aWYgKElTX0VSUl9PUl9OVUxMKHNrYikpIHtcbitcdFx0XHRpZiAoUFRSX0VSUihza2IpID09IC1FSU5QUk9HUkVTUylcbitcdFx0XHRcdHJjID0gTkVUX1hNSVRfU1VDQ0VTUztcbiBcdFx0XHRnb3RvIG91dDtcbitcdFx0fVxuIFxuIFx0XHRIQVJEX1RYX0xPQ0soZGV2LCB0eHEsIGNwdSk7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9kZXZpY2UuYyBiL25ldC94ZnJtL3hmcm1fZGV2aWNlLmNcbmluZGV4IDYzMGYzZGQzMWNjNWNlLi5hZWMxZTExODRhNzEzNCAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fZGV2aWNlLmNcbisrKyBiL25ldC94ZnJtL3hmcm1fZGV2aWNlLmNcbkBAIC0xODIsNyArMTgyLDcgQEAgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfeGZybShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJcbiBcdFx0ZXJyID0geC1cdTAwM2V0eXBlX29mZmxvYWQtXHUwMDNleG1pdCh4LCBza2IsIGVzcF9mZWF0dXJlcyk7XG4gXHRcdGlmIChlcnIpIHtcbiBcdFx0XHRpZiAoZXJyID09IC1FSU5QUk9HUkVTUylcbi1cdFx0XHRcdHJldHVybiBOVUxMO1xuK1x0XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlBST0dSRVNTKTtcbiBcbiBcdFx0XHRYRlJNX0lOQ19TVEFUUyh4c19uZXQoeCksIExJTlVYX01JQl9YRlJNT1VUU1RBVEVQUk9UT0VSUk9SKTtcbiBcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbkBAIC0yMjQsNyArMjI0LDE1IEBAIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3hmcm0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyXG4gXHRcdHBza2IgPSBza2IyO1xuIFx0fVxuIFxuLVx0cmV0dXJuIHNrYjtcbitcdC8qIHNrYl9nc29fc2VnbWVudCgpIHNldCBza2ItXHUwMDNlcHJldiB0byB0aGUgbGFzdCBzZWdtZW50LCBidXQgYXN5bmNcbitcdCAqIGNyeXB0byBtYXkgaGF2ZSBzdG9sZW4gaXQgYWJvdmUgd2l0aG91dCB1cGRhdGluZyAtXHUwMDNlcHJldi4gIFJlcG9pbnRcbitcdCAqIGl0IGF0IHRoZSBsYXN0IHJldGFpbmVkIHNlZ21lbnQgc28gdmFsaWRhdGVfeG1pdF9za2JfbGlzdCgpIGRvZXNcbitcdCAqIG5vdCBjaGFpbiBvbnRvIGEgc2VnbWVudCBub3cgb3duZWQgYnkgdGhlIGNyeXB0byBlbmdpbmUuXG4rXHQgKi9cbitcdGlmIChza2IpXG4rXHRcdHNrYi1cdTAwM2VwcmV2ID0gcHNrYjtcbitcbitcdHJldHVybiBza2IgPyBza2IgOiBFUlJfUFRSKC1FSU5QUk9HUkVTUyk7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHZhbGlkYXRlX3htaXRfeGZybSk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxMDoxNjowMi41OTAyMzMyOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4OTM4OTE0NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ3JpdGljYWwgTmV0d29yayBTdGFjayBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IHNlZSBpdCdzIHRvdWNoaW5nIHNvbWUgY29yZSBuZXR3b3JraW5nIGZ1bmN0aW9uczogYHZhbGlkYXRlX3htaXRfc2tiX2xpc3RgLCBgX19kZXZfcXVldWVfeG1pdGAgaW4gYG5ldC9jb3JlL2Rldi5jYCwgYW5kIGB2YWxpZGF0ZV94bWl0X3hmcm1gIGluIGBuZXQveGZybS94ZnJtX2RldmljZS5jYC4gVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBhYm91dCBoYW5kbGluZyB0aGUgYC1FSU5QUk9HUkVTU2AgZXJyb3IgY29kZSBjb21pbmcgYmFjayBmcm9tIGB2YWxpZGF0ZV94bWl0X3hmcm1gLCBzcGVjaWZpY2FsbHkgd2hlbiBhc3luYyBYRlJNIGNyeXB0byBpcyBkb2luZyBpdHMgdGhpbmcuIFByZXZpb3VzbHksIGEgYC1FSU5QUk9HUkVTU2Agd291bGQgbWFuaWZlc3QgYXMgYSBgTlVMTGAgcmV0dXJuIGZyb20gYHZhbGlkYXRlX3htaXRfeGZybWAsIHdoaWNoIHdhcyBqdXN0IGNvbmZ1c2luZyDigJMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBhIGRyb3BwZWQgcGFja2V0LlxuXG5Ob3csIGluc3RlYWQgb2YgYE5VTExgIG9uIGAtRUlOUFJPR1JFU1NgLCB3ZSBoYXZlIGBFUlJfUFRSKC1FSU5QUk9HUkVTUylgLiBTbWFydCBtb3ZlISBUaGlzIGlzIHRoZW4gcHJvcGFnYXRlZCB1cCB0aGUgc3RhY2ssIGFuZCBjcml0aWNhbGx5LCBgdmFsaWRhdGVfeG1pdF9za2JfbGlzdGAgdXNlcyBgSVNfRVJSX09SX05VTEwoc2tiKWAgdG8gZGVhbCB3aXRoIGl0LCBlc3NlbnRpYWxseSBza2lwcGluZyBpdC4gVGhlbiwgYF9fZGV2X3F1ZXVlX3htaXRgIGNoZWNrcyBmb3IgYFBUUl9FUlIoc2tiKSA9PSAtRUlOUFJPR1JFU1NgIGFuZCBzZXRzIGByYyA9IE5FVF9YTUlUX1NVQ0NFU1NgLiBUaGF0J3MgaG93IGl0J3MgYmVpbmcgaGFuZGxlZC5cblxuVGhlIG90aGVyIGRldGFpbCBpcyB0aGF0IGB2YWxpZGF0ZV94bWl0X3hmcm1gIGlzIGJlaW5nIHVwZGF0ZWQgdG8gc2V0IGBza2ItXHUwMDNlcHJldmAgdG8gdGhlIGxhc3QgcmV0YWluZWQgc2VnbWVudCB3aGVuIGFzeW5jaHJvbm91cyBjcnlwdG8gc3RlYWxzIHNvbWUgc2VnbWVudHMuIFRoaXMgbWFrZXMgc2Vuc2UgZm9yIHRyYWNraW5nIHB1cnBvc2VzLCBmb3IgcGFja2V0IHJlYXNzZW1ibHksIGFuZCBhdm9pZGluZyBpc3N1ZXMgZG93bnN0cmVhbS5cblxuVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGJ1Z2ZpeC4gSXQgaW1wYWN0cyB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrIGFuZCBYRlJNIG9mZmxvYWQsIG1lYW5pbmcgSVBzZWMuIFRoZXJlZm9yZSwgdGhpcyBzY3JlYW1zIGZvciBmdXp6aW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgcm9idXN0IGFuZCBkb2Vzbid0IGludHJvZHVjZSBhbnkgc3VidGxlIHJlZ3Jlc3Npb25zLiBMZXQncyBzdGFydCB3aXRoIGEgZm9jdXNlZCBsb29rIGF0IGB2YWxpZGF0ZV94bWl0X3NrYl9saXN0YCwgYF9fZGV2X3F1ZXVlX3htaXRgLCBhbmQgYHZhbGlkYXRlX3htaXRfeGZybWAsIGJlY2F1c2UgdGhvc2UgYXJlIHRoZSBjb3JlIGFyZWFzIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcuIEkgc2hvdWxkIGFsc28gY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLCBJIHN1c3BlY3QgYENPTkZJR19YRlJNX09GRkxPQURgIGlzIG5lZWRlZCBmb3IgYHZhbGlkYXRlX3htaXRfeGZybWAgdG8gZXZlbiBiZSByZWxldmFudC4gSSBzaG91bGQgY2hlY2sgYG5ldC94ZnJtL3hmcm1fZGV2aWNlLmNgIHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NzgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxMDoxNjowOS40ODQxMjcyNDFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg4NzQ2OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmFsaWRhdGVfeG1pdF94ZnJtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS94ZnJtX2RldmljZS5jPTEwMz1zdGF0aWMgaW5saW5lIGJvb2wgeG1pdF94ZnJtX2NoZWNrX292ZXJmbG93KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTExNC1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jOjExNTpzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF94ZnJtKHN0cnVjdCBza19idWZmICpza2IsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzLCBib29sICphZ2FpbilcXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTExNi17XFxuLS1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTIzNi19XFxubmV0L3hmcm0veGZybV9kZXZpY2UuYzoyMzc6RVhQT1JUX1NZTUJPTF9HUEwodmFsaWRhdGVfeG1pdF94ZnJtKTtcXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTIzOC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjFUMTA6MTY6MDkuNTQzMDA5MzZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQzMTcxMTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgWEZSTSBNb2R1bGUgQ29tcGlsYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBjb25maWd1cmF0aW9uIG9wdGlvbiBlbmFibGVzIHRoZSBjb21waWxhdGlvbiBvZiBgeGZybV9kZXZpY2Uub2AuIE15IGd1dCBmZWVsaW5nIHNheXMgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhhdCBsaWtlbHkgc2l0IHdpdGhpbiB0aGUgWEZSTSAoSVBzZWMpIHN1YnN5c3RlbS4gVG8gZHJpbGwgZG93biwgSSdtIGdvaW5nIHRvIGp1bXAgZGlyZWN0bHkgaW50byB0aGUgYG5ldC94ZnJtL01ha2VmaWxlYCBmaWxlLiBUaGF0J3MgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCB1bmRlcnN0YW5kIHRoZSBidWlsZCBwcm9jZXNzIGZvciB0aGF0IHNwZWNpZmljIG9iamVjdCBmaWxlLiBIb3BlZnVsbHksIGl04oCZcyBhIHN0cmFpZ2h0Zm9yd2FyZCBjb25kaXRpb25hbCBiYXNlZCBvbiBhIEtjb25maWcgdmFyaWFibGUuIEknbSBleHBlY3RpbmcgdG8gZmluZCBhIGNvbmRpdGlvbmFsIGJ1aWxkIHN0YXRlbWVudCB0aGVyZSwgd2hpY2ggc2hvdWxkIHF1aWNrbHkgcG9pbnQgbWUgdG8gdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9uLiBMZXQncyBzZWUgd2hhdCdzIHRoZXJlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NzAsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxMDoxNjoxMi40ODYxODMzMzZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ3MDQ1NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZybV9kZXZpY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vTWFrZWZpbGU9MTQ9b2JqLSQoQ09ORklHX1hGUk0pIDo9IHhmcm1fcG9saWN5Lm8geGZybV9zdGF0ZS5vIHhmcm1faGFzaC5vIFxcXFxcXG5uZXQveGZybS9NYWtlZmlsZS0xNS1cXHRcXHQgICAgICB4ZnJtX2lucHV0Lm8geGZybV9vdXRwdXQubyBcXFxcXFxubmV0L3hmcm0vTWFrZWZpbGU6MTY6XFx0XFx0ICAgICAgeGZybV9zeXNjdGwubyB4ZnJtX3JlcGxheS5vIHhmcm1fZGV2aWNlLm8gXFxcXFxcbm5ldC94ZnJtL01ha2VmaWxlLTE3LVxcdFxcdCAgICAgIHhmcm1fbmF0X2tlZXBhbGl2ZS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIxVDEwOjE2OjEyLjU0MDg5MzA1NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3NTM0OTMyNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKktlcm5lbCBNb2R1bGUgRGVwZW5kZW5jeSBDaGVjayoqXG5cblJpZ2h0LCBzbyBgeGZybV9kZXZpY2Uub2AgaXMgZGVmaW5pdGVseSBjb21waWxlZCB3aXRoIGBDT05GSUdfWEZSTWAgZW5hYmxlZC4gVGhhdCdzIGEgZ2l2ZW4uIEJ1dCBteSBpbW1lZGlhdGUgbmV4dCB0aG91Z2h0IGlzIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIsIGJlY2F1c2UgaXQncyBuZXZlciB0aGF0IHNpbXBsZSBpbiB0aGUga2VybmVsLiBMZXQncyBzZWUgaWYgYENPTkZJR19YRlJNX09GRkxPQURgIGlzIGFsc28gZGVmaW5lZC4gVGhlIHByZXNlbmNlIG9yIGFic2VuY2Ugb2YgdGhhdCB3aWxsIHNpZ25pZmljYW50bHkgaW1wYWN0IGhvdyBJIG5lZWQgdG8gYXBwcm9hY2ggdGhpcywgYW5kIHdoYXQgb2ZmbG9hZCBjYXBhYmlsaXRpZXMsIG9yIGRlcGVuZGVuY2llcywgdGhlIG1vZHVsZSBoYXMuIEkgbmVlZCB0byBrbm93IGhvdyBkZWVwbHkgaXQgaW50ZWdyYXRlcyB3aXRoIGFueSBwb3RlbnRpYWwgaGFyZHdhcmUgb2ZmbG9hZGluZyBwYXRoLiBLbm93aW5nIGlmIG9mZmxvYWQgaXMgcHJlc2VudCBoZWxwcyBtZSBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoaXMgcGFydGljdWxhciBtb2R1bGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMjYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxMDoxNjoxNS4yOTQzODgxODVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM0MTIzMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiWEZSTV9PRkZMT0FEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS9LY29uZmlnPTU9Y29uZmlnIFhGUk1cXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTAtXFxubmV0L3hmcm0vS2NvbmZpZzoxMTpjb25maWcgWEZSTV9PRkZMT0FEXFxubmV0L3hmcm0vS2NvbmZpZy0xMi1cXHRib29sXFxuLS1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTIxLVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6MjI6I2lmZGVmIENPTkZJR19YRlJNX09GRkxPQURcXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTIzLXN0YXRpYyB2b2lkIF9feGZybV90cmFuc3BvcnRfcHJlcChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM9MjM5PWludCB4ZnJtX2Rldl9zdGF0ZV9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMjUxLVxcdGlmICh4dW8tXFx1MDAzZWZsYWdzIFxcdTAwMjZcXG5uZXQveGZybS94ZnJtX2RldmljZS5jOjI1MjpcXHQgICAgfihYRlJNX09GRkxPQURfSVBWNiB8IFhGUk1fT0ZGTE9BRF9JTkJPVU5EIHwgWEZSTV9PRkZMT0FEX1BBQ0tFVCkpIHtcXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTI1My1cXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFxcXCJVbnJlY29nbml6ZWQgZmxhZ3MgaW4gb2ZmbG9hZCByZXF1ZXN0XFxcIik7XFxuLS1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTI1Ni1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jOjI1NzpcXHRpZiAoKHh1by1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBYRlJNX09GRkxPQURfSU5CT1VORCBcXHUwMDI2XFx1MDAyNiB4LVxcdTAwM2VkaXIgPT0gWEZSTV9TQV9ESVJfT1VUKSB8fFxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6MjU4OlxcdCAgICAoISh4dW8tXFx1MDAzZWZsYWdzIFxcdTAwMjYgWEZSTV9PRkZMT0FEX0lOQk9VTkQpIFxcdTAwMjZcXHUwMDI2IHgtXFx1MDAzZWRpciA9PSBYRlJNX1NBX0RJUl9JTikpIHtcXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTI1OS1cXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFxcXCJNaXNtYXRjaGVkIFNBIGFuZCBvZmZsb2FkIGRpcmVjdGlvblxcXCIpO1xcbi0tXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0yNjItXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYzoyNjM6XFx0aWYgKHh1by1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBYRlJNX09GRkxPQURfSU5CT1VORCBcXHUwMDI2XFx1MDAyNiB4LVxcdTAwM2VpZl9pZCkge1xcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMjY0LVxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXFxcIlhGUk0gaWZfaWQgaXMgbm90IHN1cHBvcnRlZCBpbiBSWCBwYXRoXFxcIik7XFxuLS1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTI2Ny1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jOjI2ODpcXHRpc19wYWNrZXRfb2ZmbG9hZCA9IHh1by1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBYRlJNX09GRkxPQURfUEFDS0VUO1xcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMjY5LVxcbi0tXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0yNzktXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYzoyODA6XFx0XFx0aWYgKCEoeHVvLVxcdTAwM2VmbGFncyBcXHUwMDI2IFhGUk1fT0ZGTE9BRF9JTkJPVU5EKSkge1xcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMjgxLVxcdFxcdFxcdHNhZGRyID0gXFx1MDAyNngtXFx1MDAzZXByb3BzLnNhZGRyO1xcbi0tXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0zMjUtXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYzozMjY6XFx0aWYgKHh1by1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBYRlJNX09GRkxPQURfSU5CT1VORClcXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTMyNy1cXHRcXHR4c28tXFx1MDAzZWRpciA9IFhGUk1fREVWX09GRkxPQURfSU47XFxuLS1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jPTM1OD1pbnQgeGZybV9kZXZfcG9saWN5X2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB4ZnJtX3BvbGljeSAqeHAsXFxuLS1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTM2NS1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jOjM2NjpcXHRpZiAoIXh1by1cXHUwMDNlZmxhZ3MgfHwgeHVvLVxcdTAwM2VmbGFncyBcXHUwMDI2IH5YRlJNX09GRkxPQURfUEFDS0VUKSB7XFxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0zNjctXFx0XFx0LyogV2Ugc3VwcG9ydCBvbmx5IHBhY2tldCBvZmZsb2FkIG1vZGUgYW5kIGl0IG1lYW5zXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYzozNjg6XFx0XFx0ICogdGhhdCB1c2VyIG11c3Qgc2V0IFhGUk1fT0ZGTE9BRF9QQUNLRVQgYml0Llxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMzY5LVxcdFxcdCAqL1xcbi0tXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYz01MjU9c3RhdGljIGludCB4ZnJtX2FwaV9jaGVjayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtNTI2LXtcXG5uZXQveGZybS94ZnJtX2RldmljZS5jOjUyNzojaWZkZWYgQ09ORklHX1hGUk1fT0ZGTE9BRFxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtNTI4LVxcdGlmICgoZGV2LVxcdTAwM2VmZWF0dXJlcyBcXHUwMDI2IE5FVElGX0ZfSFdfRVNQX1RYX0NTVU0pIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQveGZybS94ZnJtX3JlcGxheS5jPTU1Mz1zdGF0aWMgdm9pZCB4ZnJtX3JlcGxheV9hZHZhbmNlX2VzbihzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgX19iZTMyIG5ldF9zZXEpXFxuLS1cXG5uZXQveGZybS94ZnJtX3JlcGxheS5jLTYxMC1cXG5uZXQveGZybS94ZnJtX3JlcGxheS5jOjYxMTojaWZkZWYgQ09ORklHX1hGUk1fT0ZGTE9BRFxcbm5ldC94ZnJtL3hmcm1fcmVwbGF5LmMtNjEyLXN0YXRpYyBpbnQgeGZybV9yZXBsYXlfb3ZlcmZsb3dfb2ZmbG9hZChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz03NjM9RVhQT1JUX1NZTUJPTCh4ZnJtX3N0YXRlX2FsbG9jKTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNzY0LVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo3NjU6I2lmZGVmIENPTkZJR19YRlJNX09GRkxPQURcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNzY2LXZvaWQgeGZybV9kZXZfc3RhdGVfZGVsZXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTExMzE9c3RhdGljIHN0cnVjdCB4ZnJtX3N0YXRlICpfX3hmcm1fc3RhdGVfbG9va3VwX2FsbChjb25zdCBzdHJ1Y3QgeGZybV9oYXNoX3N0YXRlX3B0cnMgKnN0YXRlX3B0cnMsXFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTE0MS1cXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoeCwgc3RhdGVfcHRycy1cXHUwMDNlYnlzcGkgKyBoLCBieXNwaSkge1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxMTQyOiNpZmRlZiBDT05GSUdfWEZSTV9PRkZMT0FEXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTExNDMtXFx0XFx0aWYgKHhkby1cXHUwMDNldHlwZSA9PSBYRlJNX0RFVl9PRkZMT0FEX1BBQ0tFVCkge1xcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTEzNDk9eGZybV9zdGF0ZV9maW5kKGNvbnN0IHhmcm1fYWRkcmVzc190ICpkYWRkciwgY29uc3QgeGZybV9hZGRyZXNzX3QgKnNhZGRyLFxcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE0MjItXFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHgsIHN0YXRlX3B0cnMuYnlkc3QgKyBoLCBieWRzdCkge1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxNDIzOiNpZmRlZiBDT05GSUdfWEZSTV9PRkZMT0FEXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE0MjQtXFx0XFx0aWYgKHBvbC1cXHUwMDNleGRvLnR5cGUgPT0gWEZSTV9ERVZfT0ZGTE9BRF9QQUNLRVQpIHtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xNDU3LVxcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSh4LCBzdGF0ZV9wdHJzLmJ5ZHN0ICsgaF93aWxkY2FyZCwgYnlkc3QpIHtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6MTQ1ODojaWZkZWYgQ09ORklHX1hGUk1fT0ZGTE9BRFxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xNDU5LVxcdFxcdGlmIChwb2wtXFx1MDAzZXhkby50eXBlID09IFhGUk1fREVWX09GRkxPQURfUEFDS0VUKSB7XFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTUzMy1cXHRcXHR9XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjE1MzQ6I2lmZGVmIENPTkZJR19YRlJNX09GRkxPQURcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTUzNS1cXHRcXHRpZiAocG9sLVxcdTAwM2V4ZG8udHlwZSA9PSBYRlJNX0RFVl9PRkZMT0FEX1BBQ0tFVCkge1xcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE1OTItXFx0XFx0fSBlbHNlIHtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6MTU5MzojaWZkZWYgQ09ORklHX1hGUk1fT0ZGTE9BRFxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xNTk0LVxcdFxcdFxcdHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28gPSBcXHUwMDI2eC1cXHUwMDNleHNvO1xcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MTIwND1zdGF0aWMgdm9pZCB4c29fdG9feHVvKGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjA4LVxcdGlmICh4c28tXFx1MDAzZWRpciA9PSBYRlJNX0RFVl9PRkZMT0FEX0lOKVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjEyMDk6XFx0XFx0eHVvLVxcdTAwM2VmbGFncyA9IFhGUk1fT0ZGTE9BRF9JTkJPVU5EO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyMTAtXFx0aWYgKHhzby1cXHUwMDNldHlwZSA9PSBYRlJNX0RFVl9PRkZMT0FEX1BBQ0tFVClcXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMjExOlxcdFxcdHh1by1cXHUwMDNlZmxhZ3MgfD0gWEZSTV9PRkZMT0FEX1BBQ0tFVDtcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjEyLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjFUMTA6MTY6MTUuMzQ3ODA1NDg0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU0NzAwNjEyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nOlxuXG4qKkFuYWx5emluZyBYRlJNIE9mZmxvYWQgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHRoZSBrZXkgaGVyZSBzZWVtcyB0byBiZSBgQ09ORklHX1hGUk1fT0ZGTE9BRGAuIFRoYXQncyB0aGUgY29uZmlnIGl0ZW0gdGhhdCdzIGxpa2VseSBjb250cm9sbGluZyB0aGUgYmVoYXZpb3IgSSdtIGludGVyZXN0ZWQgaW4sIHdoaWNoIHN1Z2dlc3RzIEknbSBkaXZpbmcgaW50byBhbiBvZmZsb2FkLXJlbGF0ZWQgYXJlYSwgc3BlY2lmaWNhbGx5LCBJUHNlYyBvZmZsb2FkIHBlcmhhcHM/IEdvdHRhIHJlbWVtYmVyIHRoYXQuIE5vdywgd2hlcmUgdG8gbG9vaz8gTXkgaW5zdGluY3RzIGFyZSBpbW1lZGlhdGVseSBndWlkaW5nIG1lIHRvd2FyZHMgdGhlIGNvcmUgbmV0d29yayBkZXZpY2UgaGFuZGxpbmcuIExldCdzIHN0YXJ0IHdpdGggYG5ldC9jb3JlL2Rldi5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gaXMgdmFsaWRhdGluZyBhbmQgcXVldWVpbmcgU0tCcywgZXNwZWNpYWxseSByZWdhcmRpbmcgb2ZmbG9hZCBwYXRocy4gU3BlY2lmaWNhbGx5LCBJJ2xsIGJlIGRpZ2dpbmcgaW50byBgdmFsaWRhdGVfeG1pdF9za2JfbGlzdGAgYW5kLCBtb3JlIGltcG9ydGFudGx5LCBgX19kZXZfcXVldWVfeG1pdGAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgY2VudHJhbCB0byB0aGUgdHJhbnNtaXNzaW9uIHByb2Nlc3MsIHNvIHRoZXknbGwgbGlrZWx5IGhvbGQgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyBvZmZsb2FkIGRlY2lzaW9ucyBhcmUgbWFkZSBhbmQgaWYgYFhGUk1fT0ZGTE9BRGAgcGxheXMgYSByb2xlIGluIGluZmx1ZW5jaW5nIHRob3NlIGRlY2lzaW9ucy4gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBsb2dpYyB3aXRoaW4gdGhlc2UgZnVuY3Rpb25zIHRvIHNlZSBpZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtLCBhbmQgaXRzIGVmZmVjdHMsIGFyZSB2aXNpYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDY4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjFUMTA6MTY6MTguODk0ODEzOTE4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDU0NTgxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2YWxpZGF0ZV94bWl0X3NrYl9saXN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL2Rldi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL2Rldi5jPTQwMjQ9c3RhdGljIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sICphZ2FpbilcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTQwODItXFxubmV0L2NvcmUvZGV2LmM6NDA4MzpzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF9za2JfbGlzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sICphZ2FpbilcXG5uZXQvY29yZS9kZXYuYy00MDg0LXtcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTQxMDgtfVxcbm5ldC9jb3JlL2Rldi5jOjQxMDk6RVhQT1JUX1NZTUJPTF9HUEwodmFsaWRhdGVfeG1pdF9za2JfbGlzdCk7XFxubmV0L2NvcmUvZGV2LmMtNDExMC1cXG4tLVxcbm5ldC9jb3JlL2Rldi5jPTQ5MTg9aW50IF9fZGV2X2RpcmVjdF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHUxNiBxdWV1ZV9pZClcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTQ5MjktXFxubmV0L2NvcmUvZGV2LmM6NDkzMDpcXHRza2IgPSB2YWxpZGF0ZV94bWl0X3NrYl9saXN0KHNrYiwgZGV2LCBcXHUwMDI2YWdhaW4pO1xcbm5ldC9jb3JlL2Rldi5jLTQ5MzEtXFx0aWYgKHNrYiAhPSBvcmlnX3NrYilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjFUMTA6MTY6MTguOTQ5MzY1ODk3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNDIwMTU2NzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZvY3VzIFN5bWJvbHMgYW5kIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIGB2YWxpZGF0ZV94bWl0X3NrYl9saXN0YCBhbmQgYF9fZGV2X3F1ZXVlX3htaXRgIGp1bXAgb3V0IGFzIGNvcmUgbmV0d29ya2luZyBmdW5jdGlvbnMsIGFzIG9uZSB3b3VsZCBleHBlY3QuIFRoZSBwYXRjaCBzZWVtcyB0byBiZSBpbnRyb2R1Y2luZyBoYW5kbGluZyBmb3IgYEVSUl9QVFIoLUVJTlBST0dSRVNTKWAgd2l0aGluIHRob3NlIGZ1bmN0aW9ucywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIE15IGluaXRpYWwgaW5jbGluYXRpb24gaXMgdG8gZmxhZyB0aG9zZSBmdW5jdGlvbnMgYXMgdGhlIGZvY3VzIGZvciBhbmFseXNpcywgYWxvbmcgd2l0aCBgdmFsaWRhdGVfeG1pdF94ZnJtYC5cblxuV2FpdCBhIG1pbnV0ZSwgSSBoYXZlIHRvIGJlIGNhcmVmdWwgaGVyZS4gYF9fZGV2X3F1ZXVlX3htaXRgIGFuZCBgdmFsaWRhdGVfeG1pdF9za2JfbGlzdGAgYXJlICp2ZXJ5KiBnZW5lcmljIGFuZCBsaWtlbHkgaG90IHBhdGhzLiBUaGUgaW5zdHJ1Y3Rpb25zIGV4cGxpY2l0bHkgdGVsbCBtZSB0byBhdm9pZCBsaXN0aW5nIHRob3NlIGdlbmVyaWMsIGhvdC1wYXRoIGZ1bmN0aW9ucywgYXMgaXQgd2lsbCBza2V3IHRoZSB0ZXN0IGRpc3RyaWJ1dGlvbnMuIFRoYXQgbWFrZXMgc2Vuc2UuIEkgbmVlZCB0byBmaW5kIHNvbWV0aGluZyBtb3JlIHNwZWNpZmljLiAgYHZhbGlkYXRlX3htaXRfeGZybWAgaXMgc3BlY2lmaWNhbGx5IHRpZWQgdG8gWEZSTSBvZmZsb2FkLCB3aGljaCBpcyBnb29kLiBJdCdzIGEgbW9yZSB0YXJnZXRlZCBmdW5jdGlvbiBhbmQgc2hvdWxkIGJlIGFuIGFjY2VwdGFibGUgZm9jdXMuIExldCdzIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgc3VpdGFibGUgZnVuY3Rpb25zLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gbm90IG1pc3NpbmcgYW55dGhpbmcgZWxzZS4gYHZhbGlkYXRlX3htaXRfc2tiYCBpcyBhbHNvIGEgaG90IHBhdGgsIHNvIHRoYXQgaXMgb2ZmIHRoZSBsaXN0LlxuXG5TbywgYHZhbGlkYXRlX3htaXRfeGZybWAgaXQgaXMuIFRoYXQgc2VlbXMgbGlrZSB0aGUgcmlnaHQgY2FsbCwgaXQgaXMgc3BlY2lmaWMgZW5vdWdoLlxuXG5Ob3csIGxldCdzIGdldCB0aGUgY29uZmlndXJhdGlvbnMgc3RyYWlnaHQuIEkga25vdyBgdmFsaWRhdGVfeG1pdF94ZnJtYCBpcyB1c2VkIGluIHRoZSBjb250ZXh0IG9mIFhGUk0gb2ZmbG9hZCwgc28gSSdsbCBuZWVkIGBDT05GSUdfWEZSTV9PRkZMT0FEYCBhbmQgSSB0aGluayBJIGFsc28gbmVlZCB0aGUgbWFpbiBgQ09ORklHX1hGUk1gIGFzIHdlbGwuIExldCBtZSBkb3VibGUgY2hlY2suLi4gT2theSwgYENPTkZJR19YRlJNYCBpcyB0aGUgbWFpbiBvbmUgYW5kIGBDT05GSUdfWEZSTV9PRkZMT0FEYCBpcyBzcGVjaWZpYyB0byB0aGUgb2ZmbG9hZCBmZWF0dXJlLiBBbHJpZ2h0LCBsZXQncyBjaGVjayBgWEZSTV9PRkZMT0FEYC4gSXQncyBhIGJvb2xlYW4sIHdoaWNoIHNpbXBsaWZpZXMgdGhpbmdzLiBHb29kLiBgWEZSTV9PRkZMT0FEYCBpcyB0aGUgcmlnaHQgY29uZmlndXJhdGlvbiBzeW1ib2wuXG5cbk5vdywgbGV0J3Mgem9vbSBiYWNrIGluIG9uIHRoZSBwYXRjaCBpdHNlbGYgYW5kIHJlLWV4YW1pbmUgdGhlIGNvZGUgY2hhbmdlcy4gSSdsbCByZWFkIHRoZSBjb2RlIG5vdywganVzdCB0byBiZSBzdXJlLi4uXG5cbmBgYGNcbkBAIC00ODYwLDggKzQ4NjMsMTEgQEAgaW50IF9fZGV2X3F1ZXVlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKnNiX2RldilcbiBcdFx0XHRnb3RvIHJlY3Vyc2lvbl9hbGVydDtcbiBcbiBcdFx0c2tiID0gdmFsaWRhdGVfeG1pdF9za2Ioc2tiLCBkZXYsIFx1MDAyNmFnYWluKTtcbi1cdFx0aWYgKCFza2IpXG4rXHRcdGlmIChJU19FUlJfT1JfTlVMTChza2IpKSB7XG4rXHRcdFx0aWYgKFBUUl9FUlIoc2tiKSA9PSAtRUlOUFJPR1JFU1MpXG4rXHRcdFx0XHRyYyA9IE5FVF9YTUlUX1NVQ0NFU1M7XG4gXHRcdFx0Z290byBvdXQ7XG4rXHRcdH1cbmBgYFxuVGhpcyBpcyBpbiBgX19kZXZfcXVldWVfeG1pdGAuXG5cbmBgYGNcbkBAIC00MDg5LDcgKzQwOTIsNyBAQCBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF9za2JfbGlzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZFxuIFx0XHRza2ItXHUwMDNlcHJldiA9IHNrYjtcbiBcbiBcdFx0c2tiID0gdmFsaWRhdGVfeG1pdF9za2Ioc2tiLCBkZXYsIGFnYWluKTtcbi1cdFx0aWYgKCFza2IpXG4rXHRcdGlmIChJU19FUlJfT1JfTlVMTChza2IpKVxuIFx0XHRcdGNvbnRpbnVlO1xuYGBgXG5UaGlzIGlzIGluIGB2YWxpZGF0ZV94bWl0X3NrYl9saXN0YC5cblxuYGBgY1xuQEAgLTE4Miw3ICsxODIsNyBAQCBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF94ZnJtKHN0cnVjdCBza19idWZmICpza2IsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1clxuIFx0XHRlcnIgPSB4LVx1MDAzZXR5cGVfb2ZmbG9hZC1cdTAwM2V4bWl0KHgsIHNrYiwgZXNwX2ZlYXR1cmVzKTtcbiBcdFx0aWYgKGVycikge1xuIFx0XHRcdGlmIChlcnIgPT0gLUVJTlBST0dSRVNTKVxuLVx0XHRcdFx0cmV0dXJuIE5VTEw7XG4rXHRcdFx0XHRyZXR1cm4gRVJSX1BUUigtRUlOUFJPR1JFU1MpO1xuYGBgXG5UaGlzIGlzIGluIGB2YWxpZGF0ZV94bWl0X3hmcm1gLlxuXG5Pa2F5LCB0aGUgY2hhbmdlcyBsb29rIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGZpeGVzIGEgYnVnIHdoZXJlLCBpbiBhc3luYyBjcnlwdG8gc2NlbmFyaW9zLCBhIFwic3RvbGVuXCIgcGFja2V0IHdvdWxkIHByZXZpb3VzbHkgYmUgdHJlYXRlZCBhcyBhIGRyb3AgKHJldHVybmluZyBgTlVMTGApLiBUaGlzIGNhdXNlZCBwb3RlbnRpYWwgaXNzdWVzIGxpa2UgdXNlLWFmdGVyLWZyZWUgb3IgaW5jb3JyZWN0IHN0YXRzLiAgTm93LCB0aGUgZnVuY3Rpb25zIHJldHVybiBgRVJSX1BUUigtRUlOUFJPR1JFU1MpYCBzbyB0aGF0IHRoZSBjYWxsZXIga25vd3MgdGhlIHBhY2tldCB3YXMgXCJzdG9sZW5cIiAoZm9yIGxhY2sgb2YgYSBiZXR0ZXIgd29yZCkgYW5kIGNhbiB0aGVuIHJldHVybiBgTkVUX1hNSVRfU1VDQ0VTU2AgaW5kaWNhdGluZyB0aGF0IHRoZSBwYWNrZXQgdHJhbnNtaXNzaW9uIHNob3VsZCBiZSByZXRyaWVkIG9yIGhhbmRsZWQgYXBwcm9wcmlhdGVseS4gU2VlbXMgcmVhc29uYWJsZS5cblxuSXMgYHZhbGlkYXRlX3htaXRfeGZybWAgcmVhY2hhYmxlPyBZZXMsIHdoZW4gWEZSTSBvZmZsb2FkIGlzXG5cbiIsIklucHV0VG9rZW5zIjo3MTE3LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIxVDEwOjE2OjMxLjM2OTUyNDk2OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY0MDAxNTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieG1pdF94ZnJtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS94ZnJtX2RldmljZS5jPTY5PXN0YXRpYyB2b2lkIHhmcm1fb3V0ZXJfbW9kZV9wcmVwKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0xMDItXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYzoxMDM6c3RhdGljIGlubGluZSBib29sIHhtaXRfeGZybV9jaGVja19vdmVyZmxvdyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMTA0LXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMTE0LVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6MTE1OnN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3hmcm0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMsIGJvb2wgKmFnYWluKVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMTE2LXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMTU4LVxcdGlmIChza2JfaXNfZ3NvKHNrYikgXFx1MDAyNlxcdTAwMjYgKHVubGlrZWx5KHgtXFx1MDAzZXhzby5kZXYgIT0gZGV2KSB8fFxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6MTU5OlxcdFxcdFxcdFxcdHVubGlrZWx5KHhtaXRfeGZybV9jaGVja19vdmVyZmxvdyhza2IpKSkpIHtcXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTE2MC1cXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2VncztcXG4tLVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMjM2LX1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jOjIzNzpFWFBPUlRfU1lNQk9MX0dQTCh2YWxpZGF0ZV94bWl0X3hmcm0pO1xcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMjM4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxMDoxNjozMS40MjU5MzM3ODdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEzMjE3ODc2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBtYWluIGZ1bmN0aW9uIHRoaXMgcGF0Y2ggaXMgemVyb2luZyBpbiBvbiBpcyBgdmFsaWRhdGVfeG1pdF94ZnJtYC4gR29vZCwgdGhhdCdzIHdoYXQgSSBleHBlY3RlZCBnaXZlbiB0aGUgY29uZmlndXJhdGlvbiBgWEZSTV9PRkZMT0FEYC4gSSBuZWVkIHRvIGJlIHN1cmUgdGhvdWdoLCBzbyBsZXQncyBqdXN0IHF1aWNrbHkgdmVyaWZ5IHRoYXQgYHZhbGlkYXRlX3htaXRfeGZybWAgaXMgdGhlIG9ubHkgZnVuY3Rpb24gdGhhdCdzIGdldHRpbmcgc2VyaW91cyBtb2RpZmljYXRpb24uIEFoYSwgdGhlcmUgYXJlIGFsc28gYHZhbGlkYXRlX3htaXRfc2tiX2xpc3RgIGFuZCBgX19kZXZfcXVldWVfeG1pdGAsIGJ1dCB0aG9zZSBzZWVtIGEgYml0IGJyb2FkIGFuZCBnZW5lcmljIGluIHRoaXMgY29udGV4dC5cblxuUmlnaHQsIHRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggaXMgYWJvdXQgaG93IHRoZSBuZXR3b3JraW5nIHRyYW5zbWl0IHBhdGgsIGVzcGVjaWFsbHkgd2l0aCBYRlJNIG9mZmxvYWQgZW5hYmxlZCwgZGVhbHMgd2l0aCBwYWNrZXRzIHRoYXQgYXJlIGVzc2VudGlhbGx5IFwic3RvbGVuXCIgYnkgYXN5bmMgY3J5cHRvIHByb2Nlc3NpbmcuIFByZXZpb3VzbHksIHRoZXNlIHBhY2tldHMgd291bGQgbGVhZCB0byBhIGBOVUxMYCByZXR1cm4sIGJ1dCBub3cgaXQgc2VlbXMgdGhlIHBhdGNoIGlzIGNvcnJlY3RseSByZXR1cm5pbmcgYC1FSU5QUk9HUkVTU2AuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBpbXBhY3RpbmcgaG93IHdlIHRyYW5zbWl0IHBhY2tldHMgYW5kIGhvdyB3ZSBoYW5kbGUgbWVtb3J5IHdpdGhpbiB0aGUgYHNrYi1cdTAwM2VwcmV2YCBwb2ludGVyLCB3aGljaCBpcyBhIGtleSBzdHJ1Y3R1cmUuXG5cbkJhc2VkIG9uIHRoaXMsIGl0IHdhcnJhbnRzIHNvbWUgc2VyaW91cyBmdXp6aW5nIGFuZCBteSBwcmltYXJ5IGZvY3VzIHNob3VsZCByZW1haW4gYHZhbGlkYXRlX3htaXRfeGZybWAgd2l0aCBgWEZSTV9PRkZMT0FEYCBlbmFibGVkLiBJIGNhbiBzZWUgdGhpcyBiZWluZyBhbiBhcmVhIHdoZXJlIHNvbWUgc3VidGxlIGJ1Z3Mgb3Igc2VjdXJpdHkgaXNzdWVzIGNvdWxkIGVtZXJnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTQ3NywiT3V0cHV0VG9rZW5zIjo5OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxMDoxNjozNi41NTgxMTQ4MTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTQ0OTMxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTV9PRkZMT0FEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmFsaWRhdGVfeG1pdF94ZnJtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbmV0d29ya2luZyB0cmFuc21pdCBwYXRoIGFuZCBYRlJNIG9mZmxvYWQgdG8gcHJvcGVybHkgaGFuZGxlIHBhY2tldHMgc3RvbGVuIGJ5IGFzeW5jIGNyeXB0byAocmV0dXJuaW5nIC1FSU5QUk9HUkVTUyBpbnN0ZWFkIG9mIE5VTEwpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIHBhY2tldCB0cmFuc21pc3Npb24gYW5kIG1lbW9yeSBtYW5hZ2VtZW50IChza2ItXFx1MDAzZXByZXYgcG9pbnRlcikuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTV9PRkZMT0FEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmFsaWRhdGVfeG1pdF94ZnJtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbmV0d29ya2luZyB0cmFuc21pdCBwYXRoIGFuZCBYRlJNIG9mZmxvYWQgdG8gcHJvcGVybHkgaGFuZGxlIHBhY2tldHMgc3RvbGVuIGJ5IGFzeW5jIGNyeXB0byAocmV0dXJuaW5nIC1FSU5QUk9HUkVTUyBpbnN0ZWFkIG9mIE5VTEwpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIHBhY2tldCB0cmFuc21pc3Npb24gYW5kIG1lbW9yeSBtYW5hZ2VtZW50IChza2ItXFx1MDAzZXByZXYgcG9pbnRlcikuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowhkmxs[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-21 10:06:29 +0000 UTC FinishedAt: 2026-06-21 10:16:37 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "322008f87f917e2217eeac386a9410945092eb2e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_OFFLOAD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "322008f87f917e2217eeac386a9410945092eb2e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_OFFLOAD" ], "series_id": "95b3bc62-985a-45b7-ba33-8fc9ca68a6c9" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "validate_xmit_xfrm" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDEwOjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fT0ZGTE9BRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZhbGlkYXRlX3htaXRfeGZybSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBuZXR3b3JraW5nIHRyYW5zbWl0IHBhdGggYW5kIFhGUk0gb2ZmbG9hZCB0byBwcm9wZXJseSBoYW5kbGUgcGFja2V0cyBzdG9sZW4gYnkgYXN5bmMgY3J5cHRvIChyZXR1cm5pbmcgLUVJTlBST0dSRVNTIGluc3RlYWQgb2YgTlVMTCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgcGFja2V0IHRyYW5zbWlzc2lvbiBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgKHNrYi1cdTAwM2VwcmV2IHBvaW50ZXIpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDEwOjE2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjQzNTQ3ODMzMmNhNTc2YzBhZTk2N2JlYzkxMzRhNTU1MTVmYTRmOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVuIDIxIDEwOjE2OjAwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5jIGIvbmV0L2NvcmUvZGV2LmNcbmluZGV4IDVjMDFkZmFhNmM0NDUwLi5mN2ZmYzRkMjk1OTc4ZSAxMDA2NDRcbi0tLSBhL25ldC9jb3JlL2Rldi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9kZXYuY1xuQEAgLTQwMTgsNiAmIzQzOzQwMTgsOSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfdW5yZWFkYWJsZV9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbiYjNDM7LyogUmV0dXJucyB0aGUgc2tiIG9uIHN1Y2Nlc3MsIE5VTEwgaWYgZHJvcHBlZCwgb3IgRVJSX1BUUigtRUlOUFJPR1JFU1MpXG4mIzQzOyAqIGlmIHN0b2xlbiBieSBhc3luYyB4ZnJtIGNyeXB0byAoZGVsaXZlcmVkIHZpYSB4ZnJtX2Rldl9yZXN1bWUoKSkuXG4mIzQzOyAqL1xuIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCAqYWdhaW4pXG4ge1xuIFx0bmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXM7XG5AQCAtNDA4OSw3ICYjNDM7NDA5Miw3IEBAIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3NrYl9saXN0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkXG4gXHRcdHNrYi1cdTAwM2VwcmV2ID0gc2tiO1xuIFxuIFx0XHRza2IgPSB2YWxpZGF0ZV94bWl0X3NrYihza2IsIGRldiwgYWdhaW4pO1xuLVx0XHRpZiAoIXNrYilcbiYjNDM7XHRcdGlmIChJU19FUlJfT1JfTlVMTChza2IpKVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRpZiAoIWhlYWQpXG5AQCAtNDg2MCw4ICYjNDM7NDg2MywxMSBAQCBpbnQgX19kZXZfcXVldWVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqc2JfZGV2KVxuIFx0XHRcdGdvdG8gcmVjdXJzaW9uX2FsZXJ0O1xuIFxuIFx0XHRza2IgPSB2YWxpZGF0ZV94bWl0X3NrYihza2IsIGRldiwgXHUwMDI2YWdhaW4pO1xuLVx0XHRpZiAoIXNrYilcbiYjNDM7XHRcdGlmIChJU19FUlJfT1JfTlVMTChza2IpKSB7XG4mIzQzO1x0XHRcdGlmIChQVFJfRVJSKHNrYikgPT0gLUVJTlBST0dSRVNTKVxuJiM0MztcdFx0XHRcdHJjID0gTkVUX1hNSVRfU1VDQ0VTUztcbiBcdFx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdH1cbiBcbiBcdFx0SEFSRF9UWF9MT0NLKGRldiwgdHhxLCBjcHUpO1xuIFxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fZGV2aWNlLmMgYi9uZXQveGZybS94ZnJtX2RldmljZS5jXG5pbmRleCA2MzBmM2RkMzFjYzVjZS4uYWVjMWUxMTg0YTcxMzQgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX2RldmljZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX2RldmljZS5jXG5AQCAtMTgyLDcgJiM0MzsxODIsNyBAQCBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF94ZnJtKHN0cnVjdCBza19idWZmICpza2IsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1clxuIFx0XHRlcnIgPSB4LVx1MDAzZXR5cGVfb2ZmbG9hZC1cdTAwM2V4bWl0KHgsIHNrYiwgZXNwX2ZlYXR1cmVzKTtcbiBcdFx0aWYgKGVycikge1xuIFx0XHRcdGlmIChlcnIgPT0gLUVJTlBST0dSRVNTKVxuLVx0XHRcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1x0XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlBST0dSRVNTKTtcbiBcbiBcdFx0XHRYRlJNX0lOQ19TVEFUUyh4c19uZXQoeCksIExJTlVYX01JQl9YRlJNT1VUU1RBVEVQUk9UT0VSUk9SKTtcbiBcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbkBAIC0yMjQsNyAmIzQzOzIyNCwxNSBAQCBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF94ZnJtKHN0cnVjdCBza19idWZmICpza2IsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1clxuIFx0XHRwc2tiID0gc2tiMjtcbiBcdH1cbiBcbi1cdHJldHVybiBza2I7XG4mIzQzO1x0Lyogc2tiX2dzb19zZWdtZW50KCkgc2V0IHNrYi1cdTAwM2VwcmV2IHRvIHRoZSBsYXN0IHNlZ21lbnQsIGJ1dCBhc3luY1xuJiM0MztcdCAqIGNyeXB0byBtYXkgaGF2ZSBzdG9sZW4gaXQgYWJvdmUgd2l0aG91dCB1cGRhdGluZyAtXHUwMDNlcHJldi4gIFJlcG9pbnRcbiYjNDM7XHQgKiBpdCBhdCB0aGUgbGFzdCByZXRhaW5lZCBzZWdtZW50IHNvIHZhbGlkYXRlX3htaXRfc2tiX2xpc3QoKSBkb2VzXG4mIzQzO1x0ICogbm90IGNoYWluIG9udG8gYSBzZWdtZW50IG5vdyBvd25lZCBieSB0aGUgY3J5cHRvIGVuZ2luZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAoc2tiKVxuJiM0MztcdFx0c2tiLVx1MDAzZXByZXYgPSBwc2tiO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gc2tiID8gc2tiIDogRVJSX1BUUigtRUlOUFJPR1JFU1MpO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTCh2YWxpZGF0ZV94bWl0X3hmcm0pO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDEwOjE2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fT0ZGTE9BRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZhbGlkYXRlX3htaXRfeGZybSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBuZXR3b3JraW5nIHRyYW5zbWl0IHBhdGggYW5kIFhGUk0gb2ZmbG9hZCB0byBwcm9wZXJseSBoYW5kbGUgcGFja2V0cyBzdG9sZW4gYnkgYXN5bmMgY3J5cHRvIChyZXR1cm5pbmcgLUVJTlBST0dSRVNTIGluc3RlYWQgb2YgTlVMTCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgcGFja2V0IHRyYW5zbWlzc2lvbiBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgKHNrYi1cdTAwM2VwcmV2IHBvaW50ZXIpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiNDM1NDc4MzMyY2E1NzZjMGFlOTY3YmVjOTEzNGE1NTUxNWZhNGY5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBKdW4gMjEgMTA6MTY6MDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jCmluZGV4IDVjMDFkZmFhNmM0NDUwLi5mN2ZmYzRkMjk1OTc4ZSAxMDA2NDQKLS0tIGEvbmV0L2NvcmUvZGV2LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvZGV2LmMKQEAgLTQwMTgsNiAmIzQzOzQwMTgsOSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfdW5yZWFkYWJsZV9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAlyZXR1cm4gTlVMTDsKIH0KIAomIzQzOy8qIFJldHVybnMgdGhlIHNrYiBvbiBzdWNjZXNzLCBOVUxMIGlmIGRyb3BwZWQsIG9yIEVSUl9QVFIoLUVJTlBST0dSRVNTKQomIzQzOyAqIGlmIHN0b2xlbiBieSBhc3luYyB4ZnJtIGNyeXB0byAoZGVsaXZlcmVkIHZpYSB4ZnJtX2Rldl9yZXN1bWUoKSkuCiYjNDM7ICovCiBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfc2tiKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGJvb2wgKmFnYWluKQogewogCW5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzOwpAQCAtNDA4OSw3ICYjNDM7NDA5Miw3IEBAIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3NrYl9saXN0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkCiAJCXNrYi0mZ3Q7cHJldiA9IHNrYjsKIAogCQlza2IgPSB2YWxpZGF0ZV94bWl0X3NrYihza2IsIGRldiwgYWdhaW4pOwotCQlpZiAoIXNrYikKJiM0MzsJCWlmIChJU19FUlJfT1JfTlVMTChza2IpKQogCQkJY29udGludWU7CiAKIAkJaWYgKCFoZWFkKQpAQCAtNDg2MCw4ICYjNDM7NDg2MywxMSBAQCBpbnQgX19kZXZfcXVldWVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqc2JfZGV2KQogCQkJZ290byByZWN1cnNpb25fYWxlcnQ7CiAKIAkJc2tiID0gdmFsaWRhdGVfeG1pdF9za2Ioc2tiLCBkZXYsICZhbXA7YWdhaW4pOwotCQlpZiAoIXNrYikKJiM0MzsJCWlmIChJU19FUlJfT1JfTlVMTChza2IpKSB7CiYjNDM7CQkJaWYgKFBUUl9FUlIoc2tiKSA9PSAtRUlOUFJPR1JFU1MpCiYjNDM7CQkJCXJjID0gTkVUX1hNSVRfU1VDQ0VTUzsKIAkJCWdvdG8gb3V0OwomIzQzOwkJfQogCiAJCUhBUkRfVFhfTE9DSyhkZXYsIHR4cSwgY3B1KTsKIApkaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9kZXZpY2UuYyBiL25ldC94ZnJtL3hmcm1fZGV2aWNlLmMKaW5kZXggNjMwZjNkZDMxY2M1Y2UuLmFlYzFlMTE4NGE3MTM0IDEwMDY0NAotLS0gYS9uZXQveGZybS94ZnJtX2RldmljZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZnJtL3hmcm1fZGV2aWNlLmMKQEAgLTE4Miw3ICYjNDM7MTgyLDcgQEAgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfeGZybShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXIKIAkJZXJyID0geC0mZ3Q7dHlwZV9vZmZsb2FkLSZndDt4bWl0KHgsIHNrYiwgZXNwX2ZlYXR1cmVzKTsKIAkJaWYgKGVycikgewogCQkJaWYgKGVyciA9PSAtRUlOUFJPR1JFU1MpCi0JCQkJcmV0dXJuIE5VTEw7CiYjNDM7CQkJCXJldHVybiBFUlJfUFRSKC1FSU5QUk9HUkVTUyk7CiAKIAkJCVhGUk1fSU5DX1NUQVRTKHhzX25ldCh4KSwgTElOVVhfTUlCX1hGUk1PVVRTVEFURVBST1RPRVJST1IpOwogCQkJa2ZyZWVfc2tiKHNrYik7CkBAIC0yMjQsNyAmIzQzOzIyNCwxNSBAQCBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF94ZnJtKHN0cnVjdCBza19idWZmICpza2IsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cgogCQlwc2tiID0gc2tiMjsKIAl9CiAKLQlyZXR1cm4gc2tiOwomIzQzOwkvKiBza2JfZ3NvX3NlZ21lbnQoKSBzZXQgc2tiLSZndDtwcmV2IHRvIHRoZSBsYXN0IHNlZ21lbnQsIGJ1dCBhc3luYwomIzQzOwkgKiBjcnlwdG8gbWF5IGhhdmUgc3RvbGVuIGl0IGFib3ZlIHdpdGhvdXQgdXBkYXRpbmcgLSZndDtwcmV2LiAgUmVwb2ludAomIzQzOwkgKiBpdCBhdCB0aGUgbGFzdCByZXRhaW5lZCBzZWdtZW50IHNvIHZhbGlkYXRlX3htaXRfc2tiX2xpc3QoKSBkb2VzCiYjNDM7CSAqIG5vdCBjaGFpbiBvbnRvIGEgc2VnbWVudCBub3cgb3duZWQgYnkgdGhlIGNyeXB0byBlbmdpbmUuCiYjNDM7CSAqLwomIzQzOwlpZiAoc2tiKQomIzQzOwkJc2tiLSZndDtwcmV2ID0gcHNrYjsKJiM0MzsKJiM0MzsJcmV0dXJuIHNrYiA/IHNrYiA6IEVSUl9QVFIoLUVJTlBST0dSRVNTKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHZhbGlkYXRlX3htaXRfeGZybSk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjEgMTA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU3OAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDM1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDcml0aWNhbCBOZXR3b3JrIFN0YWNrIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSBzZWUgaXQmIzM5O3MgdG91Y2hpbmcgc29tZSBjb3JlIG5ldHdvcmtpbmcgZnVuY3Rpb25zOiBgdmFsaWRhdGVfeG1pdF9za2JfbGlzdGAsIGBfX2Rldl9xdWV1ZV94bWl0YCBpbiBgbmV0L2NvcmUvZGV2LmNgLCBhbmQgYHZhbGlkYXRlX3htaXRfeGZybWAgaW4gYG5ldC94ZnJtL3hmcm1fZGV2aWNlLmNgLiBUaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIGFib3V0IGhhbmRsaW5nIHRoZSBgLUVJTlBST0dSRVNTYCBlcnJvciBjb2RlIGNvbWluZyBiYWNrIGZyb20gYHZhbGlkYXRlX3htaXRfeGZybWAsIHNwZWNpZmljYWxseSB3aGVuIGFzeW5jIFhGUk0gY3J5cHRvIGlzIGRvaW5nIGl0cyB0aGluZy4gUHJldmlvdXNseSwgYSBgLUVJTlBST0dSRVNTYCB3b3VsZCBtYW5pZmVzdCBhcyBhIGBOVUxMYCByZXR1cm4gZnJvbSBgdmFsaWRhdGVfeG1pdF94ZnJtYCwgd2hpY2ggd2FzIGp1c3QgY29uZnVzaW5nIOKAkyBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIGEgZHJvcHBlZCBwYWNrZXQuCgpOb3csIGluc3RlYWQgb2YgYE5VTExgIG9uIGAtRUlOUFJPR1JFU1NgLCB3ZSBoYXZlIGBFUlJfUFRSKC1FSU5QUk9HUkVTUylgLiBTbWFydCBtb3ZlISBUaGlzIGlzIHRoZW4gcHJvcGFnYXRlZCB1cCB0aGUgc3RhY2ssIGFuZCBjcml0aWNhbGx5LCBgdmFsaWRhdGVfeG1pdF9za2JfbGlzdGAgdXNlcyBgSVNfRVJSX09SX05VTEwoc2tiKWAgdG8gZGVhbCB3aXRoIGl0LCBlc3NlbnRpYWxseSBza2lwcGluZyBpdC4gVGhlbiwgYF9fZGV2X3F1ZXVlX3htaXRgIGNoZWNrcyBmb3IgYFBUUl9FUlIoc2tiKSA9PSAtRUlOUFJPR1JFU1NgIGFuZCBzZXRzIGByYyA9IE5FVF9YTUlUX1NVQ0NFU1NgLiBUaGF0JiMzOTtzIGhvdyBpdCYjMzk7cyBiZWluZyBoYW5kbGVkLgoKVGhlIG90aGVyIGRldGFpbCBpcyB0aGF0IGB2YWxpZGF0ZV94bWl0X3hmcm1gIGlzIGJlaW5nIHVwZGF0ZWQgdG8gc2V0IGBza2ItJmd0O3ByZXZgIHRvIHRoZSBsYXN0IHJldGFpbmVkIHNlZ21lbnQgd2hlbiBhc3luY2hyb25vdXMgY3J5cHRvIHN0ZWFscyBzb21lIHNlZ21lbnRzLiBUaGlzIG1ha2VzIHNlbnNlIGZvciB0cmFja2luZyBwdXJwb3NlcywgZm9yIHBhY2tldCByZWFzc2VtYmx5LCBhbmQgYXZvaWRpbmcgaXNzdWVzIGRvd25zdHJlYW0uCgpUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgYnVnZml4LiBJdCBpbXBhY3RzIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2sgYW5kIFhGUk0gb2ZmbG9hZCwgbWVhbmluZyBJUHNlYy4gVGhlcmVmb3JlLCB0aGlzIHNjcmVhbXMgZm9yIGZ1enppbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyByb2J1c3QgYW5kIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgc3VidGxlIHJlZ3Jlc3Npb25zLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGZvY3VzZWQgbG9vayBhdCBgdmFsaWRhdGVfeG1pdF9za2JfbGlzdGAsIGBfX2Rldl9xdWV1ZV94bWl0YCwgYW5kIGB2YWxpZGF0ZV94bWl0X3hmcm1gLCBiZWNhdXNlIHRob3NlIGFyZSB0aGUgY29yZSBhcmVhcyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nLiBJIHNob3VsZCBhbHNvIGNoZWNrIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucywgSSBzdXNwZWN0IGBDT05GSUdfWEZSTV9PRkZMT0FEYCBpcyBuZWVkZWQgZm9yIGB2YWxpZGF0ZV94bWl0X3hmcm1gIHRvIGV2ZW4gYmUgcmVsZXZhbnQuIEkgc2hvdWxkIGNoZWNrIGBuZXQveGZybS94ZnJtX2RldmljZS5jYCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDEwOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZhbGlkYXRlX3htaXRfeGZybSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZnJtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS94ZnJtX2RldmljZS5jPTEwMz1zdGF0aWMgaW5saW5lIGJvb2wgeG1pdF94ZnJtX2NoZWNrX292ZXJmbG93KHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0xMTQtXG5uZXQveGZybS94ZnJtX2RldmljZS5jOjExNTpzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF94ZnJtKHN0cnVjdCBza19idWZmICpza2IsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzLCBib29sICphZ2Fpbilcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMTE2LXtcbi0tXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTIzNi19XG5uZXQveGZybS94ZnJtX2RldmljZS5jOjIzNzpFWFBPUlRfU1lNQk9MX0dQTCh2YWxpZGF0ZV94bWl0X3hmcm0pO1xubmV0L3hmcm0veGZybV9kZXZpY2UuYy0yMzgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjEgMTA6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY3MAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBYRlJNIE1vZHVsZSBDb21waWxhdGlvbioqCgpBbHJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBjb25maWd1cmF0aW9uIG9wdGlvbiBlbmFibGVzIHRoZSBjb21waWxhdGlvbiBvZiBgeGZybV9kZXZpY2Uub2AuIE15IGd1dCBmZWVsaW5nIHNheXMgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhhdCBsaWtlbHkgc2l0IHdpdGhpbiB0aGUgWEZSTSAoSVBzZWMpIHN1YnN5c3RlbS4gVG8gZHJpbGwgZG93biwgSSYjMzk7bSBnb2luZyB0byBqdW1wIGRpcmVjdGx5IGludG8gdGhlIGBuZXQveGZybS9NYWtlZmlsZWAgZmlsZS4gVGhhdCYjMzk7cyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHVuZGVyc3RhbmQgdGhlIGJ1aWxkIHByb2Nlc3MgZm9yIHRoYXQgc3BlY2lmaWMgb2JqZWN0IGZpbGUuIEhvcGVmdWxseSwgaXTigJlzIGEgc3RyYWlnaHRmb3J3YXJkIGNvbmRpdGlvbmFsIGJhc2VkIG9uIGEgS2NvbmZpZyB2YXJpYWJsZS4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBhIGNvbmRpdGlvbmFsIGJ1aWxkIHN0YXRlbWVudCB0aGVyZSwgd2hpY2ggc2hvdWxkIHF1aWNrbHkgcG9pbnQgbWUgdG8gdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9uLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgdGhlcmUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMSAxMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX2RldmljZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZnJtL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL01ha2VmaWxlPTE0PW9iai0kKENPTkZJR19YRlJNKSA6PSB4ZnJtX3BvbGljeS5vIHhmcm1fc3RhdGUubyB4ZnJtX2hhc2gubyBcXFxubmV0L3hmcm0vTWFrZWZpbGUtMTUtXHRcdCAgICAgIHhmcm1faW5wdXQubyB4ZnJtX291dHB1dC5vIFxcXG5uZXQveGZybS9NYWtlZmlsZToxNjpcdFx0ICAgICAgeGZybV9zeXNjdGwubyB4ZnJtX3JlcGxheS5vIHhmcm1fZGV2aWNlLm8gXFxcbm5ldC94ZnJtL01ha2VmaWxlLTE3LVx0XHQgICAgICB4ZnJtX25hdF9rZWVwYWxpdmUub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDEwOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMjYKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipLZXJuZWwgTW9kdWxlIERlcGVuZGVuY3kgQ2hlY2sqKgoKUmlnaHQsIHNvIGB4ZnJtX2RldmljZS5vYCBpcyBkZWZpbml0ZWx5IGNvbXBpbGVkIHdpdGggYENPTkZJR19YRlJNYCBlbmFibGVkLiBUaGF0JiMzOTtzIGEgZ2l2ZW4uIEJ1dCBteSBpbW1lZGlhdGUgbmV4dCB0aG91Z2h0IGlzIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIsIGJlY2F1c2UgaXQmIzM5O3MgbmV2ZXIgdGhhdCBzaW1wbGUgaW4gdGhlIGtlcm5lbC4gTGV0JiMzOTtzIHNlZSBpZiBgQ09ORklHX1hGUk1fT0ZGTE9BRGAgaXMgYWxzbyBkZWZpbmVkLiBUaGUgcHJlc2VuY2Ugb3IgYWJzZW5jZSBvZiB0aGF0IHdpbGwgc2lnbmlmaWNhbnRseSBpbXBhY3QgaG93IEkgbmVlZCB0byBhcHByb2FjaCB0aGlzLCBhbmQgd2hhdCBvZmZsb2FkIGNhcGFiaWxpdGllcywgb3IgZGVwZW5kZW5jaWVzLCB0aGUgbW9kdWxlIGhhcy4gSSBuZWVkIHRvIGtub3cgaG93IGRlZXBseSBpdCBpbnRlZ3JhdGVzIHdpdGggYW55IHBvdGVudGlhbCBoYXJkd2FyZSBvZmZsb2FkaW5nIHBhdGguIEtub3dpbmcgaWYgb2ZmbG9hZCBpcyBwcmVzZW50IGhlbHBzIG1lIGJldHRlciB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmUgb2YgdGhpcyBwYXJ0aWN1bGFyIG1vZHVsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMSAxMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtYRlJNX09GRkxPQUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGZybS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZz01PWNvbmZpZyBYRlJNXG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xMC1cbm5ldC94ZnJtL0tjb25maWc6MTE6Y29uZmlnIFhGUk1fT0ZGTE9BRFxubmV0L3hmcm0vS2NvbmZpZy0xMi1cdGJvb2xcbi0tXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTIxLVxubmV0L3hmcm0veGZybV9kZXZpY2UuYzoyMjojaWZkZWYgQ09ORklHX1hGUk1fT0ZGTE9BRFxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0yMy1zdGF0aWMgdm9pZCBfX3hmcm1fdHJhbnNwb3J0X3ByZXAoc3RydWN0IHhmcm1fc3RhdGUgKngsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3hmcm0veGZybV9kZXZpY2UuYz0yMzk9aW50IHhmcm1fZGV2X3N0YXRlX2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxuLS1cbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMjUxLVx0aWYgKHh1by1cdTAwM2VmbGFncyBcdTAwMjZcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6MjUyOlx0ICAgIH4oWEZSTV9PRkZMT0FEX0lQVjYgfCBYRlJNX09GRkxPQURfSU5CT1VORCB8IFhGUk1fT0ZGTE9BRF9QQUNLRVQpKSB7XG5uZXQveGZybS94ZnJtX2RldmljZS5jLTI1My1cdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtVbnJlY29nbml6ZWQgZmxhZ3MgaW4gb2ZmbG9hZCByZXF1ZXN0XCYjMzQ7KTtcbi0tXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTI1Ni1cbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6MjU3Olx0aWYgKCh4dW8tXHUwMDNlZmxhZ3MgXHUwMDI2IFhGUk1fT0ZGTE9BRF9JTkJPVU5EIFx1MDAyNlx1MDAyNiB4LVx1MDAzZWRpciA9PSBYRlJNX1NBX0RJUl9PVVQpIHx8XG5uZXQveGZybS94ZnJtX2RldmljZS5jOjI1ODpcdCAgICAoISh4dW8tXHUwMDNlZmxhZ3MgXHUwMDI2IFhGUk1fT0ZGTE9BRF9JTkJPVU5EKSBcdTAwMjZcdTAwMjYgeC1cdTAwM2VkaXIgPT0gWEZSTV9TQV9ESVJfSU4pKSB7XG5uZXQveGZybS94ZnJtX2RldmljZS5jLTI1OS1cdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtNaXNtYXRjaGVkIFNBIGFuZCBvZmZsb2FkIGRpcmVjdGlvblwmIzM0Oyk7XG4tLVxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0yNjItXG5uZXQveGZybS94ZnJtX2RldmljZS5jOjI2MzpcdGlmICh4dW8tXHUwMDNlZmxhZ3MgXHUwMDI2IFhGUk1fT0ZGTE9BRF9JTkJPVU5EIFx1MDAyNlx1MDAyNiB4LVx1MDAzZWlmX2lkKSB7XG5uZXQveGZybS94ZnJtX2RldmljZS5jLTI2NC1cdFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLCBcJiMzNDtYRlJNIGlmX2lkIGlzIG5vdCBzdXBwb3J0ZWQgaW4gUlggcGF0aFwmIzM0Oyk7XG4tLVxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0yNjctXG5uZXQveGZybS94ZnJtX2RldmljZS5jOjI2ODpcdGlzX3BhY2tldF9vZmZsb2FkID0geHVvLVx1MDAzZWZsYWdzIFx1MDAyNiBYRlJNX09GRkxPQURfUEFDS0VUO1xubmV0L3hmcm0veGZybV9kZXZpY2UuYy0yNjktXG4tLVxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0yNzktXG5uZXQveGZybS94ZnJtX2RldmljZS5jOjI4MDpcdFx0aWYgKCEoeHVvLVx1MDAzZWZsYWdzIFx1MDAyNiBYRlJNX09GRkxPQURfSU5CT1VORCkpIHtcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMjgxLVx0XHRcdHNhZGRyID0gXHUwMDI2eC1cdTAwM2Vwcm9wcy5zYWRkcjtcbi0tXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTMyNS1cbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6MzI2Olx0aWYgKHh1by1cdTAwM2VmbGFncyBcdTAwMjYgWEZSTV9PRkZMT0FEX0lOQk9VTkQpXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTMyNy1cdFx0eHNvLVx1MDAzZWRpciA9IFhGUk1fREVWX09GRkxPQURfSU47XG4tLVxubmV0L3hmcm0veGZybV9kZXZpY2UuYz0zNTg9aW50IHhmcm1fZGV2X3BvbGljeV9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgeGZybV9wb2xpY3kgKnhwLFxuLS1cbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMzY1LVxubmV0L3hmcm0veGZybV9kZXZpY2UuYzozNjY6XHRpZiAoIXh1by1cdTAwM2VmbGFncyB8fCB4dW8tXHUwMDNlZmxhZ3MgXHUwMDI2IH5YRlJNX09GRkxPQURfUEFDS0VUKSB7XG5uZXQveGZybS94ZnJtX2RldmljZS5jLTM2Ny1cdFx0LyogV2Ugc3VwcG9ydCBvbmx5IHBhY2tldCBvZmZsb2FkIG1vZGUgYW5kIGl0IG1lYW5zXG5uZXQveGZybS94ZnJtX2RldmljZS5jOjM2ODpcdFx0ICogdGhhdCB1c2VyIG11c3Qgc2V0IFhGUk1fT0ZGTE9BRF9QQUNLRVQgYml0LlxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0zNjktXHRcdCAqL1xuLS1cbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM9NTI1PXN0YXRpYyBpbnQgeGZybV9hcGlfY2hlY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtNTI2LXtcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6NTI3OiNpZmRlZiBDT05GSUdfWEZSTV9PRkZMT0FEXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTUyOC1cdGlmICgoZGV2LVx1MDAzZWZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX0hXX0VTUF9UWF9DU1VNKSBcdTAwMjZcdTAwMjZcbi0tXG5uZXQveGZybS94ZnJtX3JlcGxheS5jPTU1Mz1zdGF0aWMgdm9pZCB4ZnJtX3JlcGxheV9hZHZhbmNlX2VzbihzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgX19iZTMyIG5ldF9zZXEpXG4tLVxubmV0L3hmcm0veGZybV9yZXBsYXkuYy02MTAtXG5uZXQveGZybS94ZnJtX3JlcGxheS5jOjYxMTojaWZkZWYgQ09ORklHX1hGUk1fT0ZGTE9BRFxubmV0L3hmcm0veGZybV9yZXBsYXkuYy02MTItc3RhdGljIGludCB4ZnJtX3JlcGxheV9vdmVyZmxvd19vZmZsb2FkKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz03NjM9RVhQT1JUX1NZTUJPTCh4ZnJtX3N0YXRlX2FsbG9jKTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy03NjQtXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6NzY1OiNpZmRlZiBDT05GSUdfWEZSTV9PRkZMT0FEXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNzY2LXZvaWQgeGZybV9kZXZfc3RhdGVfZGVsZXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz0xMTMxPXN0YXRpYyBzdHJ1Y3QgeGZybV9zdGF0ZSAqX194ZnJtX3N0YXRlX2xvb2t1cF9hbGwoY29uc3Qgc3RydWN0IHhmcm1faGFzaF9zdGF0ZV9wdHJzICpzdGF0ZV9wdHJzLFxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xMTQxLVx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHgsIHN0YXRlX3B0cnMtXHUwMDNlYnlzcGkgJiM0MzsgaCwgYnlzcGkpIHtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxMTQyOiNpZmRlZiBDT05GSUdfWEZSTV9PRkZMT0FEXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTE0My1cdFx0aWYgKHhkby1cdTAwM2V0eXBlID09IFhGUk1fREVWX09GRkxPQURfUEFDS0VUKSB7XG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTEzNDk9eGZybV9zdGF0ZV9maW5kKGNvbnN0IHhmcm1fYWRkcmVzc190ICpkYWRkciwgY29uc3QgeGZybV9hZGRyZXNzX3QgKnNhZGRyLFxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xNDIyLVx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHgsIHN0YXRlX3B0cnMuYnlkc3QgJiM0MzsgaCwgYnlkc3QpIHtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxNDIzOiNpZmRlZiBDT05GSUdfWEZSTV9PRkZMT0FEXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTQyNC1cdFx0aWYgKHBvbC1cdTAwM2V4ZG8udHlwZSA9PSBYRlJNX0RFVl9PRkZMT0FEX1BBQ0tFVCkge1xuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xNDU3LVx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHgsIHN0YXRlX3B0cnMuYnlkc3QgJiM0MzsgaF93aWxkY2FyZCwgYnlkc3QpIHtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxNDU4OiNpZmRlZiBDT05GSUdfWEZSTV9PRkZMT0FEXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTQ1OS1cdFx0aWYgKHBvbC1cdTAwM2V4ZG8udHlwZSA9PSBYRlJNX0RFVl9PRkZMT0FEX1BBQ0tFVCkge1xuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xNTMzLVx0XHR9XG5uZXQveGZybS94ZnJtX3N0YXRlLmM6MTUzNDojaWZkZWYgQ09ORklHX1hGUk1fT0ZGTE9BRFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE1MzUtXHRcdGlmIChwb2wtXHUwMDNleGRvLnR5cGUgPT0gWEZSTV9ERVZfT0ZGTE9BRF9QQUNLRVQpIHtcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTU5Mi1cdFx0fSBlbHNlIHtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxNTkzOiNpZmRlZiBDT05GSUdfWEZSTV9PRkZMT0FEXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTU5NC1cdFx0XHRzdHJ1Y3QgeGZybV9kZXZfb2ZmbG9hZCAqeHNvID0gXHUwMDI2eC1cdTAwM2V4c287XG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MTIwND1zdGF0aWMgdm9pZCB4c29fdG9feHVvKGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMTIwOC1cdGlmICh4c28tXHUwMDNlZGlyID09IFhGUk1fREVWX09GRkxPQURfSU4pXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMjA5Olx0XHR4dW8tXHUwMDNlZmxhZ3MgPSBYRlJNX09GRkxPQURfSU5CT1VORDtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyMTAtXHRpZiAoeHNvLVx1MDAzZXR5cGUgPT0gWEZSTV9ERVZfT0ZGTE9BRF9QQUNLRVQpXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMjExOlx0XHR4dW8tXHUwMDNlZmxhZ3MgfD0gWEZSTV9PRkZMT0FEX1BBQ0tFVDtcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyMTItfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDEwOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0NjgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIHJlYXNvbmluZzoKCioqQW5hbHl6aW5nIFhGUk0gT2ZmbG9hZCBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHRoZSBrZXkgaGVyZSBzZWVtcyB0byBiZSBgQ09ORklHX1hGUk1fT0ZGTE9BRGAuIFRoYXQmIzM5O3MgdGhlIGNvbmZpZyBpdGVtIHRoYXQmIzM5O3MgbGlrZWx5IGNvbnRyb2xsaW5nIHRoZSBiZWhhdmlvciBJJiMzOTttIGludGVyZXN0ZWQgaW4sIHdoaWNoIHN1Z2dlc3RzIEkmIzM5O20gZGl2aW5nIGludG8gYW4gb2ZmbG9hZC1yZWxhdGVkIGFyZWEsIHNwZWNpZmljYWxseSwgSVBzZWMgb2ZmbG9hZCBwZXJoYXBzPyBHb3R0YSByZW1lbWJlciB0aGF0LiBOb3csIHdoZXJlIHRvIGxvb2s/IE15IGluc3RpbmN0cyBhcmUgaW1tZWRpYXRlbHkgZ3VpZGluZyBtZSB0b3dhcmRzIHRoZSBjb3JlIG5ldHdvcmsgZGV2aWNlIGhhbmRsaW5nLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgbmV0L2NvcmUvZGV2LmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHN5c3RlbSBpcyB2YWxpZGF0aW5nIGFuZCBxdWV1ZWluZyBTS0JzLCBlc3BlY2lhbGx5IHJlZ2FyZGluZyBvZmZsb2FkIHBhdGhzLiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIGJlIGRpZ2dpbmcgaW50byBgdmFsaWRhdGVfeG1pdF9za2JfbGlzdGAgYW5kLCBtb3JlIGltcG9ydGFudGx5LCBgX19kZXZfcXVldWVfeG1pdGAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgY2VudHJhbCB0byB0aGUgdHJhbnNtaXNzaW9uIHByb2Nlc3MsIHNvIHRoZXkmIzM5O2xsIGxpa2VseSBob2xkIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgb2ZmbG9hZCBkZWNpc2lvbnMgYXJlIG1hZGUgYW5kIGlmIGBYRlJNX09GRkxPQURgIHBsYXlzIGEgcm9sZSBpbiBpbmZsdWVuY2luZyB0aG9zZSBkZWNpc2lvbnMuIEkmIzM5O2xsIG5lZWQgdG8gdHJhY2UgdGhlIGxvZ2ljIHdpdGhpbiB0aGVzZSBmdW5jdGlvbnMgdG8gc2VlIGlmIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0sIGFuZCBpdHMgZWZmZWN0cywgYXJlIHZpc2libGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDEwOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZhbGlkYXRlX3htaXRfc2tiX2xpc3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY29yZS9kZXYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9kZXYuYz00MDI0PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCAqYWdhaW4pXG4tLVxubmV0L2NvcmUvZGV2LmMtNDA4Mi1cbm5ldC9jb3JlL2Rldi5jOjQwODM6c3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfc2tiX2xpc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCAqYWdhaW4pXG5uZXQvY29yZS9kZXYuYy00MDg0LXtcbi0tXG5uZXQvY29yZS9kZXYuYy00MTA4LX1cbm5ldC9jb3JlL2Rldi5jOjQxMDk6RVhQT1JUX1NZTUJPTF9HUEwodmFsaWRhdGVfeG1pdF9za2JfbGlzdCk7XG5uZXQvY29yZS9kZXYuYy00MTEwLVxuLS1cbm5ldC9jb3JlL2Rldi5jPTQ5MTg9aW50IF9fZGV2X2RpcmVjdF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHUxNiBxdWV1ZV9pZClcbi0tXG5uZXQvY29yZS9kZXYuYy00OTI5LVxubmV0L2NvcmUvZGV2LmM6NDkzMDpcdHNrYiA9IHZhbGlkYXRlX3htaXRfc2tiX2xpc3Qoc2tiLCBkZXYsIFx1MDAyNmFnYWluKTtcbm5ldC9jb3JlL2Rldi5jLTQ5MzEtXHRpZiAoc2tiICE9IG9yaWdfc2tiKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMSAxMDoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTE3CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogOTEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZvY3VzIFN5bWJvbHMgYW5kIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgYHZhbGlkYXRlX3htaXRfc2tiX2xpc3RgIGFuZCBgX19kZXZfcXVldWVfeG1pdGAganVtcCBvdXQgYXMgY29yZSBuZXR3b3JraW5nIGZ1bmN0aW9ucywgYXMgb25lIHdvdWxkIGV4cGVjdC4gVGhlIHBhdGNoIHNlZW1zIHRvIGJlIGludHJvZHVjaW5nIGhhbmRsaW5nIGZvciBgRVJSX1BUUigtRUlOUFJPR1JFU1MpYCB3aXRoaW4gdGhvc2UgZnVuY3Rpb25zLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gTXkgaW5pdGlhbCBpbmNsaW5hdGlvbiBpcyB0byBmbGFnIHRob3NlIGZ1bmN0aW9ucyBhcyB0aGUgZm9jdXMgZm9yIGFuYWx5c2lzLCBhbG9uZyB3aXRoIGB2YWxpZGF0ZV94bWl0X3hmcm1gLgoKV2FpdCBhIG1pbnV0ZSwgSSBoYXZlIHRvIGJlIGNhcmVmdWwgaGVyZS4gYF9fZGV2X3F1ZXVlX3htaXRgIGFuZCBgdmFsaWRhdGVfeG1pdF9za2JfbGlzdGAgYXJlICp2ZXJ5KiBnZW5lcmljIGFuZCBsaWtlbHkgaG90IHBhdGhzLiBUaGUgaW5zdHJ1Y3Rpb25zIGV4cGxpY2l0bHkgdGVsbCBtZSB0byBhdm9pZCBsaXN0aW5nIHRob3NlIGdlbmVyaWMsIGhvdC1wYXRoIGZ1bmN0aW9ucywgYXMgaXQgd2lsbCBza2V3IHRoZSB0ZXN0IGRpc3RyaWJ1dGlvbnMuIFRoYXQgbWFrZXMgc2Vuc2UuIEkgbmVlZCB0byBmaW5kIHNvbWV0aGluZyBtb3JlIHNwZWNpZmljLiAgYHZhbGlkYXRlX3htaXRfeGZybWAgaXMgc3BlY2lmaWNhbGx5IHRpZWQgdG8gWEZSTSBvZmZsb2FkLCB3aGljaCBpcyBnb29kLiBJdCYjMzk7cyBhIG1vcmUgdGFyZ2V0ZWQgZnVuY3Rpb24gYW5kIHNob3VsZCBiZSBhbiBhY2NlcHRhYmxlIGZvY3VzLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciBzdWl0YWJsZSBmdW5jdGlvbnMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhbnl0aGluZyBlbHNlLiBgdmFsaWRhdGVfeG1pdF9za2JgIGlzIGFsc28gYSBob3QgcGF0aCwgc28gdGhhdCBpcyBvZmYgdGhlIGxpc3QuCgpTbywgYHZhbGlkYXRlX3htaXRfeGZybWAgaXQgaXMuIFRoYXQgc2VlbXMgbGlrZSB0aGUgcmlnaHQgY2FsbCwgaXQgaXMgc3BlY2lmaWMgZW5vdWdoLgoKTm93LCBsZXQmIzM5O3MgZ2V0IHRoZSBjb25maWd1cmF0aW9ucyBzdHJhaWdodC4gSSBrbm93IGB2YWxpZGF0ZV94bWl0X3hmcm1gIGlzIHVzZWQgaW4gdGhlIGNvbnRleHQgb2YgWEZSTSBvZmZsb2FkLCBzbyBJJiMzOTtsbCBuZWVkIGBDT05GSUdfWEZSTV9PRkZMT0FEYCBhbmQgSSB0aGluayBJIGFsc28gbmVlZCB0aGUgbWFpbiBgQ09ORklHX1hGUk1gIGFzIHdlbGwuIExldCBtZSBkb3VibGUgY2hlY2suLi4gT2theSwgYENPTkZJR19YRlJNYCBpcyB0aGUgbWFpbiBvbmUgYW5kIGBDT05GSUdfWEZSTV9PRkZMT0FEYCBpcyBzcGVjaWZpYyB0byB0aGUgb2ZmbG9hZCBmZWF0dXJlLiBBbHJpZ2h0LCBsZXQmIzM5O3MgY2hlY2sgYFhGUk1fT0ZGTE9BRGAuIEl0JiMzOTtzIGEgYm9vbGVhbiwgd2hpY2ggc2ltcGxpZmllcyB0aGluZ3MuIEdvb2QuIGBYRlJNX09GRkxPQURgIGlzIHRoZSByaWdodCBjb25maWd1cmF0aW9uIHN5bWJvbC4KCk5vdywgbGV0JiMzOTtzIHpvb20gYmFjayBpbiBvbiB0aGUgcGF0Y2ggaXRzZWxmIGFuZCByZS1leGFtaW5lIHRoZSBjb2RlIGNoYW5nZXMuIEkmIzM5O2xsIHJlYWQgdGhlIGNvZGUgbm93LCBqdXN0IHRvIGJlIHN1cmUuLi4KCmBgYGMKQEAgLTQ4NjAsOCAmIzQzOzQ4NjMsMTEgQEAgaW50IF9fZGV2X3F1ZXVlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKnNiX2RldikKIAkJCWdvdG8gcmVjdXJzaW9uX2FsZXJ0OwogCiAJCXNrYiA9IHZhbGlkYXRlX3htaXRfc2tiKHNrYiwgZGV2LCAmYW1wO2FnYWluKTsKLQkJaWYgKCFza2IpCiYjNDM7CQlpZiAoSVNfRVJSX09SX05VTEwoc2tiKSkgewomIzQzOwkJCWlmIChQVFJfRVJSKHNrYikgPT0gLUVJTlBST0dSRVNTKQomIzQzOwkJCQlyYyA9IE5FVF9YTUlUX1NVQ0NFU1M7CiAJCQlnb3RvIG91dDsKJiM0MzsJCX0KYGBgClRoaXMgaXMgaW4gYF9fZGV2X3F1ZXVlX3htaXRgLgoKYGBgYwpAQCAtNDA4OSw3ICYjNDM7NDA5Miw3IEBAIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3NrYl9saXN0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkCiAJCXNrYi0mZ3Q7cHJldiA9IHNrYjsKIAogCQlza2IgPSB2YWxpZGF0ZV94bWl0X3NrYihza2IsIGRldiwgYWdhaW4pOwotCQlpZiAoIXNrYikKJiM0MzsJCWlmIChJU19FUlJfT1JfTlVMTChza2IpKQogCQkJY29udGludWU7CmBgYApUaGlzIGlzIGluIGB2YWxpZGF0ZV94bWl0X3NrYl9saXN0YC4KCmBgYGMKQEAgLTE4Miw3ICYjNDM7MTgyLDcgQEAgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfeGZybShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXIKIAkJZXJyID0geC0mZ3Q7dHlwZV9vZmZsb2FkLSZndDt4bWl0KHgsIHNrYiwgZXNwX2ZlYXR1cmVzKTsKIAkJaWYgKGVycikgewogCQkJaWYgKGVyciA9PSAtRUlOUFJPR1JFU1MpCi0JCQkJcmV0dXJuIE5VTEw7CiYjNDM7CQkJCXJldHVybiBFUlJfUFRSKC1FSU5QUk9HUkVTUyk7CmBgYApUaGlzIGlzIGluIGB2YWxpZGF0ZV94bWl0X3hmcm1gLgoKT2theSwgdGhlIGNoYW5nZXMgbG9vayBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSwgaW4gYXN5bmMgY3J5cHRvIHNjZW5hcmlvcywgYSAmIzM0O3N0b2xlbiYjMzQ7IHBhY2tldCB3b3VsZCBwcmV2aW91c2x5IGJlIHRyZWF0ZWQgYXMgYSBkcm9wIChyZXR1cm5pbmcgYE5VTExgKS4gVGhpcyBjYXVzZWQgcG90ZW50aWFsIGlzc3VlcyBsaWtlIHVzZS1hZnRlci1mcmVlIG9yIGluY29ycmVjdCBzdGF0cy4gIE5vdywgdGhlIGZ1bmN0aW9ucyByZXR1cm4gYEVSUl9QVFIoLUVJTlBST0dSRVNTKWAgc28gdGhhdCB0aGUgY2FsbGVyIGtub3dzIHRoZSBwYWNrZXQgd2FzICYjMzQ7c3RvbGVuJiMzNDsgKGZvciBsYWNrIG9mIGEgYmV0dGVyIHdvcmQpIGFuZCBjYW4gdGhlbiByZXR1cm4gYE5FVF9YTUlUX1NVQ0NFU1NgIGluZGljYXRpbmcgdGhhdCB0aGUgcGFja2V0IHRyYW5zbWlzc2lvbiBzaG91bGQgYmUgcmV0cmllZCBvciBoYW5kbGVkIGFwcHJvcHJpYXRlbHkuIFNlZW1zIHJlYXNvbmFibGUuCgpJcyBgdmFsaWRhdGVfeG1pdF94ZnJtYCByZWFjaGFibGU/IFllcywgd2hlbiBYRlJNIG9mZmxvYWQgaXMKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMSAxMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4bWl0X3hmcm0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGZybS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9kZXZpY2UuYz02OT1zdGF0aWMgdm9pZCB4ZnJtX291dGVyX21vZGVfcHJlcChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTEwMi1cbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6MTAzOnN0YXRpYyBpbmxpbmUgYm9vbCB4bWl0X3hmcm1fY2hlY2tfb3ZlcmZsb3coc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMTA0LXtcbi0tXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTExNC1cbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6MTE1OnN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3hmcm0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMsIGJvb2wgKmFnYWluKVxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0xMTYte1xuLS1cbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMTU4LVx0aWYgKHNrYl9pc19nc28oc2tiKSBcdTAwMjZcdTAwMjYgKHVubGlrZWx5KHgtXHUwMDNleHNvLmRldiAhPSBkZXYpIHx8XG5uZXQveGZybS94ZnJtX2RldmljZS5jOjE1OTpcdFx0XHRcdHVubGlrZWx5KHhtaXRfeGZybV9jaGVja19vdmVyZmxvdyhza2IpKSkpIHtcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMTYwLVx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2Vncztcbi0tXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTIzNi19XG5uZXQveGZybS94ZnJtX2RldmljZS5jOjIzNzpFWFBPUlRfU1lNQk9MX0dQTCh2YWxpZGF0ZV94bWl0X3hmcm0pO1xubmV0L3hmcm0veGZybV9kZXZpY2UuYy0yMzgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIxIDEwOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0NzcKCQkJCQkJCW91dHB1dDogOTgKCQkJCQkJCXRob3VnaHRzOiAxOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gdGhlIG1haW4gZnVuY3Rpb24gdGhpcyBwYXRjaCBpcyB6ZXJvaW5nIGluIG9uIGlzIGB2YWxpZGF0ZV94bWl0X3hmcm1gLiBHb29kLCB0aGF0JiMzOTtzIHdoYXQgSSBleHBlY3RlZCBnaXZlbiB0aGUgY29uZmlndXJhdGlvbiBgWEZSTV9PRkZMT0FEYC4gSSBuZWVkIHRvIGJlIHN1cmUgdGhvdWdoLCBzbyBsZXQmIzM5O3MganVzdCBxdWlja2x5IHZlcmlmeSB0aGF0IGB2YWxpZGF0ZV94bWl0X3hmcm1gIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQmIzM5O3MgZ2V0dGluZyBzZXJpb3VzIG1vZGlmaWNhdGlvbi4gQWhhLCB0aGVyZSBhcmUgYWxzbyBgdmFsaWRhdGVfeG1pdF9za2JfbGlzdGAgYW5kIGBfX2Rldl9xdWV1ZV94bWl0YCwgYnV0IHRob3NlIHNlZW0gYSBiaXQgYnJvYWQgYW5kIGdlbmVyaWMgaW4gdGhpcyBjb250ZXh0LgoKUmlnaHQsIHRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggaXMgYWJvdXQgaG93IHRoZSBuZXR3b3JraW5nIHRyYW5zbWl0IHBhdGgsIGVzcGVjaWFsbHkgd2l0aCBYRlJNIG9mZmxvYWQgZW5hYmxlZCwgZGVhbHMgd2l0aCBwYWNrZXRzIHRoYXQgYXJlIGVzc2VudGlhbGx5ICYjMzQ7c3RvbGVuJiMzNDsgYnkgYXN5bmMgY3J5cHRvIHByb2Nlc3NpbmcuIFByZXZpb3VzbHksIHRoZXNlIHBhY2tldHMgd291bGQgbGVhZCB0byBhIGBOVUxMYCByZXR1cm4sIGJ1dCBub3cgaXQgc2VlbXMgdGhlIHBhdGNoIGlzIGNvcnJlY3RseSByZXR1cm5pbmcgYC1FSU5QUk9HUkVTU2AuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBpbXBhY3RpbmcgaG93IHdlIHRyYW5zbWl0IHBhY2tldHMgYW5kIGhvdyB3ZSBoYW5kbGUgbWVtb3J5IHdpdGhpbiB0aGUgYHNrYi0mZ3Q7cHJldmAgcG9pbnRlciwgd2hpY2ggaXMgYSBrZXkgc3RydWN0dXJlLgoKQmFzZWQgb24gdGhpcywgaXQgd2FycmFudHMgc29tZSBzZXJpb3VzIGZ1enppbmcgYW5kIG15IHByaW1hcnkgZm9jdXMgc2hvdWxkIHJlbWFpbiBgdmFsaWRhdGVfeG1pdF94ZnJtYCB3aXRoIGBYRlJNX09GRkxPQURgIGVuYWJsZWQuIEkgY2FuIHNlZSB0aGlzIGJlaW5nIGFuIGFyZWEgd2hlcmUgc29tZSBzdWJ0bGUgYnVncyBvciBzZWN1cml0eSBpc3N1ZXMgY291bGQgZW1lcmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMSAxMDoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WEZSTV9PRkZMT0FEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmFsaWRhdGVfeG1pdF94ZnJtJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIG5ldHdvcmtpbmcgdHJhbnNtaXQgcGF0aCBhbmQgWEZSTSBvZmZsb2FkIHRvIHByb3Blcmx5IGhhbmRsZSBwYWNrZXRzIHN0b2xlbiBieSBhc3luYyBjcnlwdG8gKHJldHVybmluZyAtRUlOUFJPR1JFU1MgaW5zdGVhZCBvZiBOVUxMKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBwYWNrZXQgdHJhbnNtaXNzaW9uIGFuZCBtZW1vcnkgbWFuYWdlbWVudCAoc2tiLVx1MDAzZXByZXYgcG9pbnRlcikuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fT0ZGTE9BRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZhbGlkYXRlX3htaXRfeGZybSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBuZXR3b3JraW5nIHRyYW5zbWl0IHBhdGggYW5kIFhGUk0gb2ZmbG9hZCB0byBwcm9wZXJseSBoYW5kbGUgcGFja2V0cyBzdG9sZW4gYnkgYXN5bmMgY3J5cHRvIChyZXR1cm5pbmcgLUVJTlBST0dSRVNTIGluc3RlYWQgb2YgTlVMTCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgcGFja2V0IHRyYW5zbWlzc2lvbiBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgKHNrYi1cdTAwM2VwcmV2IHBvaW50ZXIpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjFUMTA6MTY6MDIuMDU5OTA5MzcxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQ1ODM2NzAyMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTV9PRkZMT0FEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmFsaWRhdGVfeG1pdF94ZnJtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbmV0d29ya2luZyB0cmFuc21pdCBwYXRoIGFuZCBYRlJNIG9mZmxvYWQgdG8gcHJvcGVybHkgaGFuZGxlIHBhY2tldHMgc3RvbGVuIGJ5IGFzeW5jIGNyeXB0byAocmV0dXJuaW5nIC1FSU5QUk9HUkVTUyBpbnN0ZWFkIG9mIE5VTEwpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIHBhY2tldCB0cmFuc21pc3Npb24gYW5kIG1lbW9yeSBtYW5hZ2VtZW50IChza2ItXFx1MDAzZXByZXYgcG9pbnRlcikuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIxVDEwOjE2OjAyLjA1OTkxNTY4MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI5MDQ0NDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjQzNTQ3ODMzMmNhNTc2YzBhZTk2N2JlYzkxMzRhNTU1MTVmYTRmOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEp1biAyMSAxMDoxNjowMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jXFxuaW5kZXggNWMwMWRmYWE2YzQ0NTAuLmY3ZmZjNGQyOTU5NzhlIDEwMDY0NFxcbi0tLSBhL25ldC9jb3JlL2Rldi5jXFxuKysrIGIvbmV0L2NvcmUvZGV2LmNcXG5AQCAtNDAxOCw2ICs0MDE4LDkgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3VucmVhZGFibGVfc2tiKHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHJldHVybiBOVUxMO1xcbiB9XFxuIFxcbisvKiBSZXR1cm5zIHRoZSBza2Igb24gc3VjY2VzcywgTlVMTCBpZiBkcm9wcGVkLCBvciBFUlJfUFRSKC1FSU5QUk9HUkVTUylcXG4rICogaWYgc3RvbGVuIGJ5IGFzeW5jIHhmcm0gY3J5cHRvIChkZWxpdmVyZWQgdmlhIHhmcm1fZGV2X3Jlc3VtZSgpKS5cXG4rICovXFxuIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCAqYWdhaW4pXFxuIHtcXG4gXFx0bmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXM7XFxuQEAgLTQwODksNyArNDA5Miw3IEBAIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3NrYl9saXN0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkXFxuIFxcdFxcdHNrYi1cXHUwMDNlcHJldiA9IHNrYjtcXG4gXFxuIFxcdFxcdHNrYiA9IHZhbGlkYXRlX3htaXRfc2tiKHNrYiwgZGV2LCBhZ2Fpbik7XFxuLVxcdFxcdGlmICghc2tiKVxcbitcXHRcXHRpZiAoSVNfRVJSX09SX05VTEwoc2tiKSlcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRpZiAoIWhlYWQpXFxuQEAgLTQ4NjAsOCArNDg2MywxMSBAQCBpbnQgX19kZXZfcXVldWVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqc2JfZGV2KVxcbiBcXHRcXHRcXHRnb3RvIHJlY3Vyc2lvbl9hbGVydDtcXG4gXFxuIFxcdFxcdHNrYiA9IHZhbGlkYXRlX3htaXRfc2tiKHNrYiwgZGV2LCBcXHUwMDI2YWdhaW4pO1xcbi1cXHRcXHRpZiAoIXNrYilcXG4rXFx0XFx0aWYgKElTX0VSUl9PUl9OVUxMKHNrYikpIHtcXG4rXFx0XFx0XFx0aWYgKFBUUl9FUlIoc2tiKSA9PSAtRUlOUFJPR1JFU1MpXFxuK1xcdFxcdFxcdFxcdHJjID0gTkVUX1hNSVRfU1VDQ0VTUztcXG4gXFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdH1cXG4gXFxuIFxcdFxcdEhBUkRfVFhfTE9DSyhkZXYsIHR4cSwgY3B1KTtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fZGV2aWNlLmMgYi9uZXQveGZybS94ZnJtX2RldmljZS5jXFxuaW5kZXggNjMwZjNkZDMxY2M1Y2UuLmFlYzFlMTE4NGE3MTM0IDEwMDY0NFxcbi0tLSBhL25ldC94ZnJtL3hmcm1fZGV2aWNlLmNcXG4rKysgYi9uZXQveGZybS94ZnJtX2RldmljZS5jXFxuQEAgLTE4Miw3ICsxODIsNyBAQCBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF94ZnJtKHN0cnVjdCBza19idWZmICpza2IsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1clxcbiBcXHRcXHRlcnIgPSB4LVxcdTAwM2V0eXBlX29mZmxvYWQtXFx1MDAzZXhtaXQoeCwgc2tiLCBlc3BfZmVhdHVyZXMpO1xcbiBcXHRcXHRpZiAoZXJyKSB7XFxuIFxcdFxcdFxcdGlmIChlcnIgPT0gLUVJTlBST0dSRVNTKVxcbi1cXHRcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTlBST0dSRVNTKTtcXG4gXFxuIFxcdFxcdFxcdFhGUk1fSU5DX1NUQVRTKHhzX25ldCh4KSwgTElOVVhfTUlCX1hGUk1PVVRTVEFURVBST1RPRVJST1IpO1xcbiBcXHRcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG5AQCAtMjI0LDcgKzIyNCwxNSBAQCBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF94ZnJtKHN0cnVjdCBza19idWZmICpza2IsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1clxcbiBcXHRcXHRwc2tiID0gc2tiMjtcXG4gXFx0fVxcbiBcXG4tXFx0cmV0dXJuIHNrYjtcXG4rXFx0Lyogc2tiX2dzb19zZWdtZW50KCkgc2V0IHNrYi1cXHUwMDNlcHJldiB0byB0aGUgbGFzdCBzZWdtZW50LCBidXQgYXN5bmNcXG4rXFx0ICogY3J5cHRvIG1heSBoYXZlIHN0b2xlbiBpdCBhYm92ZSB3aXRob3V0IHVwZGF0aW5nIC1cXHUwMDNlcHJldi4gIFJlcG9pbnRcXG4rXFx0ICogaXQgYXQgdGhlIGxhc3QgcmV0YWluZWQgc2VnbWVudCBzbyB2YWxpZGF0ZV94bWl0X3NrYl9saXN0KCkgZG9lc1xcbitcXHQgKiBub3QgY2hhaW4gb250byBhIHNlZ21lbnQgbm93IG93bmVkIGJ5IHRoZSBjcnlwdG8gZW5naW5lLlxcbitcXHQgKi9cXG4rXFx0aWYgKHNrYilcXG4rXFx0XFx0c2tiLVxcdTAwM2VwcmV2ID0gcHNrYjtcXG4rXFxuK1xcdHJldHVybiBza2IgPyBza2IgOiBFUlJfUFRSKC1FSU5QUk9HUkVTUyk7XFxuIH1cXG4gRVhQT1JUX1NZTUJPTF9HUEwodmFsaWRhdGVfeG1pdF94ZnJtKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIxVDEwOjE2OjAyLjU5MDIzMTUxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDA1MzMzNzI5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNX09GRkxPQURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2YWxpZGF0ZV94bWl0X3hmcm1cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBuZXR3b3JraW5nIHRyYW5zbWl0IHBhdGggYW5kIFhGUk0gb2ZmbG9hZCB0byBwcm9wZXJseSBoYW5kbGUgcGFja2V0cyBzdG9sZW4gYnkgYXN5bmMgY3J5cHRvIChyZXR1cm5pbmcgLUVJTlBST0dSRVNTIGluc3RlYWQgb2YgTlVMTCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgcGFja2V0IHRyYW5zbWlzc2lvbiBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgKHNrYi1cXHUwMDNlcHJldiBwb2ludGVyKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiNDM1NDc4MzMyY2E1NzZjMGFlOTY3YmVjOTEzNGE1NTUxNWZhNGY5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdW4gMjEgMTA6MTY6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jXG5pbmRleCA1YzAxZGZhYTZjNDQ1MC4uZjdmZmM0ZDI5NTk3OGUgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9kZXYuY1xuKysrIGIvbmV0L2NvcmUvZGV2LmNcbkBAIC00MDE4LDYgKzQwMTgsOSBAQCBzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfdW5yZWFkYWJsZV9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbisvKiBSZXR1cm5zIHRoZSBza2Igb24gc3VjY2VzcywgTlVMTCBpZiBkcm9wcGVkLCBvciBFUlJfUFRSKC1FSU5QUk9HUkVTUylcbisgKiBpZiBzdG9sZW4gYnkgYXN5bmMgeGZybSBjcnlwdG8gKGRlbGl2ZXJlZCB2aWEgeGZybV9kZXZfcmVzdW1lKCkpLlxuKyAqL1xuIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCAqYWdhaW4pXG4ge1xuIFx0bmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXM7XG5AQCAtNDA4OSw3ICs0MDkyLDcgQEAgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfc2tiX2xpc3Qoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRcbiBcdFx0c2tiLVx1MDAzZXByZXYgPSBza2I7XG4gXG4gXHRcdHNrYiA9IHZhbGlkYXRlX3htaXRfc2tiKHNrYiwgZGV2LCBhZ2Fpbik7XG4tXHRcdGlmICghc2tiKVxuK1x0XHRpZiAoSVNfRVJSX09SX05VTEwoc2tiKSlcbiBcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0aWYgKCFoZWFkKVxuQEAgLTQ4NjAsOCArNDg2MywxMSBAQCBpbnQgX19kZXZfcXVldWVfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqc2JfZGV2KVxuIFx0XHRcdGdvdG8gcmVjdXJzaW9uX2FsZXJ0O1xuIFxuIFx0XHRza2IgPSB2YWxpZGF0ZV94bWl0X3NrYihza2IsIGRldiwgXHUwMDI2YWdhaW4pO1xuLVx0XHRpZiAoIXNrYilcbitcdFx0aWYgKElTX0VSUl9PUl9OVUxMKHNrYikpIHtcbitcdFx0XHRpZiAoUFRSX0VSUihza2IpID09IC1FSU5QUk9HUkVTUylcbitcdFx0XHRcdHJjID0gTkVUX1hNSVRfU1VDQ0VTUztcbiBcdFx0XHRnb3RvIG91dDtcbitcdFx0fVxuIFxuIFx0XHRIQVJEX1RYX0xPQ0soZGV2LCB0eHEsIGNwdSk7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9kZXZpY2UuYyBiL25ldC94ZnJtL3hmcm1fZGV2aWNlLmNcbmluZGV4IDYzMGYzZGQzMWNjNWNlLi5hZWMxZTExODRhNzEzNCAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fZGV2aWNlLmNcbisrKyBiL25ldC94ZnJtL3hmcm1fZGV2aWNlLmNcbkBAIC0xODIsNyArMTgyLDcgQEAgc3RydWN0IHNrX2J1ZmYgKnZhbGlkYXRlX3htaXRfeGZybShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJcbiBcdFx0ZXJyID0geC1cdTAwM2V0eXBlX29mZmxvYWQtXHUwMDNleG1pdCh4LCBza2IsIGVzcF9mZWF0dXJlcyk7XG4gXHRcdGlmIChlcnIpIHtcbiBcdFx0XHRpZiAoZXJyID09IC1FSU5QUk9HUkVTUylcbi1cdFx0XHRcdHJldHVybiBOVUxMO1xuK1x0XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlBST0dSRVNTKTtcbiBcbiBcdFx0XHRYRlJNX0lOQ19TVEFUUyh4c19uZXQoeCksIExJTlVYX01JQl9YRlJNT1VUU1RBVEVQUk9UT0VSUk9SKTtcbiBcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbkBAIC0yMjQsNyArMjI0LDE1IEBAIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3hmcm0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyXG4gXHRcdHBza2IgPSBza2IyO1xuIFx0fVxuIFxuLVx0cmV0dXJuIHNrYjtcbitcdC8qIHNrYl9nc29fc2VnbWVudCgpIHNldCBza2ItXHUwMDNlcHJldiB0byB0aGUgbGFzdCBzZWdtZW50LCBidXQgYXN5bmNcbitcdCAqIGNyeXB0byBtYXkgaGF2ZSBzdG9sZW4gaXQgYWJvdmUgd2l0aG91dCB1cGRhdGluZyAtXHUwMDNlcHJldi4gIFJlcG9pbnRcbitcdCAqIGl0IGF0IHRoZSBsYXN0IHJldGFpbmVkIHNlZ21lbnQgc28gdmFsaWRhdGVfeG1pdF9za2JfbGlzdCgpIGRvZXNcbitcdCAqIG5vdCBjaGFpbiBvbnRvIGEgc2VnbWVudCBub3cgb3duZWQgYnkgdGhlIGNyeXB0byBlbmdpbmUuXG4rXHQgKi9cbitcdGlmIChza2IpXG4rXHRcdHNrYi1cdTAwM2VwcmV2ID0gcHNrYjtcbitcbitcdHJldHVybiBza2IgPyBza2IgOiBFUlJfUFRSKC1FSU5QUk9HUkVTUyk7XG4gfVxuIEVYUE9SVF9TWU1CT0xfR1BMKHZhbGlkYXRlX3htaXRfeGZybSk7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxMDoxNjowMi41OTAyMzMyOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4OTM4OTE0NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ3JpdGljYWwgTmV0d29yayBTdGFjayBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IHNlZSBpdCdzIHRvdWNoaW5nIHNvbWUgY29yZSBuZXR3b3JraW5nIGZ1bmN0aW9uczogYHZhbGlkYXRlX3htaXRfc2tiX2xpc3RgLCBgX19kZXZfcXVldWVfeG1pdGAgaW4gYG5ldC9jb3JlL2Rldi5jYCwgYW5kIGB2YWxpZGF0ZV94bWl0X3hmcm1gIGluIGBuZXQveGZybS94ZnJtX2RldmljZS5jYC4gVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBhYm91dCBoYW5kbGluZyB0aGUgYC1FSU5QUk9HUkVTU2AgZXJyb3IgY29kZSBjb21pbmcgYmFjayBmcm9tIGB2YWxpZGF0ZV94bWl0X3hmcm1gLCBzcGVjaWZpY2FsbHkgd2hlbiBhc3luYyBYRlJNIGNyeXB0byBpcyBkb2luZyBpdHMgdGhpbmcuIFByZXZpb3VzbHksIGEgYC1FSU5QUk9HUkVTU2Agd291bGQgbWFuaWZlc3QgYXMgYSBgTlVMTGAgcmV0dXJuIGZyb20gYHZhbGlkYXRlX3htaXRfeGZybWAsIHdoaWNoIHdhcyBqdXN0IGNvbmZ1c2luZyDigJMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBhIGRyb3BwZWQgcGFja2V0LlxuXG5Ob3csIGluc3RlYWQgb2YgYE5VTExgIG9uIGAtRUlOUFJPR1JFU1NgLCB3ZSBoYXZlIGBFUlJfUFRSKC1FSU5QUk9HUkVTUylgLiBTbWFydCBtb3ZlISBUaGlzIGlzIHRoZW4gcHJvcGFnYXRlZCB1cCB0aGUgc3RhY2ssIGFuZCBjcml0aWNhbGx5LCBgdmFsaWRhdGVfeG1pdF9za2JfbGlzdGAgdXNlcyBgSVNfRVJSX09SX05VTEwoc2tiKWAgdG8gZGVhbCB3aXRoIGl0LCBlc3NlbnRpYWxseSBza2lwcGluZyBpdC4gVGhlbiwgYF9fZGV2X3F1ZXVlX3htaXRgIGNoZWNrcyBmb3IgYFBUUl9FUlIoc2tiKSA9PSAtRUlOUFJPR1JFU1NgIGFuZCBzZXRzIGByYyA9IE5FVF9YTUlUX1NVQ0NFU1NgLiBUaGF0J3MgaG93IGl0J3MgYmVpbmcgaGFuZGxlZC5cblxuVGhlIG90aGVyIGRldGFpbCBpcyB0aGF0IGB2YWxpZGF0ZV94bWl0X3hmcm1gIGlzIGJlaW5nIHVwZGF0ZWQgdG8gc2V0IGBza2ItXHUwMDNlcHJldmAgdG8gdGhlIGxhc3QgcmV0YWluZWQgc2VnbWVudCB3aGVuIGFzeW5jaHJvbm91cyBjcnlwdG8gc3RlYWxzIHNvbWUgc2VnbWVudHMuIFRoaXMgbWFrZXMgc2Vuc2UgZm9yIHRyYWNraW5nIHB1cnBvc2VzLCBmb3IgcGFja2V0IHJlYXNzZW1ibHksIGFuZCBhdm9pZGluZyBpc3N1ZXMgZG93bnN0cmVhbS5cblxuVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGJ1Z2ZpeC4gSXQgaW1wYWN0cyB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrIGFuZCBYRlJNIG9mZmxvYWQsIG1lYW5pbmcgSVBzZWMuIFRoZXJlZm9yZSwgdGhpcyBzY3JlYW1zIGZvciBmdXp6aW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgcm9idXN0IGFuZCBkb2Vzbid0IGludHJvZHVjZSBhbnkgc3VidGxlIHJlZ3Jlc3Npb25zLiBMZXQncyBzdGFydCB3aXRoIGEgZm9jdXNlZCBsb29rIGF0IGB2YWxpZGF0ZV94bWl0X3NrYl9saXN0YCwgYF9fZGV2X3F1ZXVlX3htaXRgLCBhbmQgYHZhbGlkYXRlX3htaXRfeGZybWAsIGJlY2F1c2UgdGhvc2UgYXJlIHRoZSBjb3JlIGFyZWFzIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcuIEkgc2hvdWxkIGFsc28gY2hlY2sgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLCBJIHN1c3BlY3QgYENPTkZJR19YRlJNX09GRkxPQURgIGlzIG5lZWRlZCBmb3IgYHZhbGlkYXRlX3htaXRfeGZybWAgdG8gZXZlbiBiZSByZWxldmFudC4gSSBzaG91bGQgY2hlY2sgYG5ldC94ZnJtL3hmcm1fZGV2aWNlLmNgIHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NzgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxMDoxNjowOS40ODQxMjcyNDFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg4NzQ2OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmFsaWRhdGVfeG1pdF94ZnJtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS94ZnJtX2RldmljZS5jPTEwMz1zdGF0aWMgaW5saW5lIGJvb2wgeG1pdF94ZnJtX2NoZWNrX292ZXJmbG93KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTExNC1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jOjExNTpzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF94ZnJtKHN0cnVjdCBza19idWZmICpza2IsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzLCBib29sICphZ2FpbilcXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTExNi17XFxuLS1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTIzNi19XFxubmV0L3hmcm0veGZybV9kZXZpY2UuYzoyMzc6RVhQT1JUX1NZTUJPTF9HUEwodmFsaWRhdGVfeG1pdF94ZnJtKTtcXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTIzOC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjFUMTA6MTY6MDkuNTQzMDA5MzZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQzMTcxMTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgWEZSTSBNb2R1bGUgQ29tcGlsYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBjb25maWd1cmF0aW9uIG9wdGlvbiBlbmFibGVzIHRoZSBjb21waWxhdGlvbiBvZiBgeGZybV9kZXZpY2Uub2AuIE15IGd1dCBmZWVsaW5nIHNheXMgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhhdCBsaWtlbHkgc2l0IHdpdGhpbiB0aGUgWEZSTSAoSVBzZWMpIHN1YnN5c3RlbS4gVG8gZHJpbGwgZG93biwgSSdtIGdvaW5nIHRvIGp1bXAgZGlyZWN0bHkgaW50byB0aGUgYG5ldC94ZnJtL01ha2VmaWxlYCBmaWxlLiBUaGF0J3MgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCB1bmRlcnN0YW5kIHRoZSBidWlsZCBwcm9jZXNzIGZvciB0aGF0IHNwZWNpZmljIG9iamVjdCBmaWxlLiBIb3BlZnVsbHksIGl04oCZcyBhIHN0cmFpZ2h0Zm9yd2FyZCBjb25kaXRpb25hbCBiYXNlZCBvbiBhIEtjb25maWcgdmFyaWFibGUuIEknbSBleHBlY3RpbmcgdG8gZmluZCBhIGNvbmRpdGlvbmFsIGJ1aWxkIHN0YXRlbWVudCB0aGVyZSwgd2hpY2ggc2hvdWxkIHF1aWNrbHkgcG9pbnQgbWUgdG8gdGhlIHJlbGV2YW50IEtjb25maWcgb3B0aW9uLiBMZXQncyBzZWUgd2hhdCdzIHRoZXJlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NzAsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxMDoxNjoxMi40ODYxODMzMzZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ3MDQ1NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZybV9kZXZpY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vTWFrZWZpbGU9MTQ9b2JqLSQoQ09ORklHX1hGUk0pIDo9IHhmcm1fcG9saWN5Lm8geGZybV9zdGF0ZS5vIHhmcm1faGFzaC5vIFxcXFxcXG5uZXQveGZybS9NYWtlZmlsZS0xNS1cXHRcXHQgICAgICB4ZnJtX2lucHV0Lm8geGZybV9vdXRwdXQubyBcXFxcXFxubmV0L3hmcm0vTWFrZWZpbGU6MTY6XFx0XFx0ICAgICAgeGZybV9zeXNjdGwubyB4ZnJtX3JlcGxheS5vIHhmcm1fZGV2aWNlLm8gXFxcXFxcbm5ldC94ZnJtL01ha2VmaWxlLTE3LVxcdFxcdCAgICAgIHhmcm1fbmF0X2tlZXBhbGl2ZS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIxVDEwOjE2OjEyLjU0MDg5MzA1NVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3NTM0OTMyNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKktlcm5lbCBNb2R1bGUgRGVwZW5kZW5jeSBDaGVjayoqXG5cblJpZ2h0LCBzbyBgeGZybV9kZXZpY2Uub2AgaXMgZGVmaW5pdGVseSBjb21waWxlZCB3aXRoIGBDT05GSUdfWEZSTWAgZW5hYmxlZC4gVGhhdCdzIGEgZ2l2ZW4uIEJ1dCBteSBpbW1lZGlhdGUgbmV4dCB0aG91Z2h0IGlzIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIsIGJlY2F1c2UgaXQncyBuZXZlciB0aGF0IHNpbXBsZSBpbiB0aGUga2VybmVsLiBMZXQncyBzZWUgaWYgYENPTkZJR19YRlJNX09GRkxPQURgIGlzIGFsc28gZGVmaW5lZC4gVGhlIHByZXNlbmNlIG9yIGFic2VuY2Ugb2YgdGhhdCB3aWxsIHNpZ25pZmljYW50bHkgaW1wYWN0IGhvdyBJIG5lZWQgdG8gYXBwcm9hY2ggdGhpcywgYW5kIHdoYXQgb2ZmbG9hZCBjYXBhYmlsaXRpZXMsIG9yIGRlcGVuZGVuY2llcywgdGhlIG1vZHVsZSBoYXMuIEkgbmVlZCB0byBrbm93IGhvdyBkZWVwbHkgaXQgaW50ZWdyYXRlcyB3aXRoIGFueSBwb3RlbnRpYWwgaGFyZHdhcmUgb2ZmbG9hZGluZyBwYXRoLiBLbm93aW5nIGlmIG9mZmxvYWQgaXMgcHJlc2VudCBoZWxwcyBtZSBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJlIG9mIHRoaXMgcGFydGljdWxhciBtb2R1bGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMjYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxMDoxNjoxNS4yOTQzODgxODVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM0MTIzMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiWEZSTV9PRkZMT0FEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS9LY29uZmlnPTU9Y29uZmlnIFhGUk1cXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTAtXFxubmV0L3hmcm0vS2NvbmZpZzoxMTpjb25maWcgWEZSTV9PRkZMT0FEXFxubmV0L3hmcm0vS2NvbmZpZy0xMi1cXHRib29sXFxuLS1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTIxLVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6MjI6I2lmZGVmIENPTkZJR19YRlJNX09GRkxPQURcXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTIzLXN0YXRpYyB2b2lkIF9feGZybV90cmFuc3BvcnRfcHJlcChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM9MjM5PWludCB4ZnJtX2Rldl9zdGF0ZV9hZGQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMjUxLVxcdGlmICh4dW8tXFx1MDAzZWZsYWdzIFxcdTAwMjZcXG5uZXQveGZybS94ZnJtX2RldmljZS5jOjI1MjpcXHQgICAgfihYRlJNX09GRkxPQURfSVBWNiB8IFhGUk1fT0ZGTE9BRF9JTkJPVU5EIHwgWEZSTV9PRkZMT0FEX1BBQ0tFVCkpIHtcXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTI1My1cXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFxcXCJVbnJlY29nbml6ZWQgZmxhZ3MgaW4gb2ZmbG9hZCByZXF1ZXN0XFxcIik7XFxuLS1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTI1Ni1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jOjI1NzpcXHRpZiAoKHh1by1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBYRlJNX09GRkxPQURfSU5CT1VORCBcXHUwMDI2XFx1MDAyNiB4LVxcdTAwM2VkaXIgPT0gWEZSTV9TQV9ESVJfT1VUKSB8fFxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6MjU4OlxcdCAgICAoISh4dW8tXFx1MDAzZWZsYWdzIFxcdTAwMjYgWEZSTV9PRkZMT0FEX0lOQk9VTkQpIFxcdTAwMjZcXHUwMDI2IHgtXFx1MDAzZWRpciA9PSBYRlJNX1NBX0RJUl9JTikpIHtcXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTI1OS1cXHRcXHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFxcXCJNaXNtYXRjaGVkIFNBIGFuZCBvZmZsb2FkIGRpcmVjdGlvblxcXCIpO1xcbi0tXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0yNjItXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYzoyNjM6XFx0aWYgKHh1by1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBYRlJNX09GRkxPQURfSU5CT1VORCBcXHUwMDI2XFx1MDAyNiB4LVxcdTAwM2VpZl9pZCkge1xcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMjY0LVxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXFxcIlhGUk0gaWZfaWQgaXMgbm90IHN1cHBvcnRlZCBpbiBSWCBwYXRoXFxcIik7XFxuLS1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTI2Ny1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jOjI2ODpcXHRpc19wYWNrZXRfb2ZmbG9hZCA9IHh1by1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBYRlJNX09GRkxPQURfUEFDS0VUO1xcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMjY5LVxcbi0tXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0yNzktXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYzoyODA6XFx0XFx0aWYgKCEoeHVvLVxcdTAwM2VmbGFncyBcXHUwMDI2IFhGUk1fT0ZGTE9BRF9JTkJPVU5EKSkge1xcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMjgxLVxcdFxcdFxcdHNhZGRyID0gXFx1MDAyNngtXFx1MDAzZXByb3BzLnNhZGRyO1xcbi0tXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0zMjUtXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYzozMjY6XFx0aWYgKHh1by1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBYRlJNX09GRkxPQURfSU5CT1VORClcXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTMyNy1cXHRcXHR4c28tXFx1MDAzZWRpciA9IFhGUk1fREVWX09GRkxPQURfSU47XFxuLS1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jPTM1OD1pbnQgeGZybV9kZXZfcG9saWN5X2FkZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB4ZnJtX3BvbGljeSAqeHAsXFxuLS1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTM2NS1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jOjM2NjpcXHRpZiAoIXh1by1cXHUwMDNlZmxhZ3MgfHwgeHVvLVxcdTAwM2VmbGFncyBcXHUwMDI2IH5YRlJNX09GRkxPQURfUEFDS0VUKSB7XFxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0zNjctXFx0XFx0LyogV2Ugc3VwcG9ydCBvbmx5IHBhY2tldCBvZmZsb2FkIG1vZGUgYW5kIGl0IG1lYW5zXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYzozNjg6XFx0XFx0ICogdGhhdCB1c2VyIG11c3Qgc2V0IFhGUk1fT0ZGTE9BRF9QQUNLRVQgYml0Llxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMzY5LVxcdFxcdCAqL1xcbi0tXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYz01MjU9c3RhdGljIGludCB4ZnJtX2FwaV9jaGVjayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtNTI2LXtcXG5uZXQveGZybS94ZnJtX2RldmljZS5jOjUyNzojaWZkZWYgQ09ORklHX1hGUk1fT0ZGTE9BRFxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtNTI4LVxcdGlmICgoZGV2LVxcdTAwM2VmZWF0dXJlcyBcXHUwMDI2IE5FVElGX0ZfSFdfRVNQX1RYX0NTVU0pIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQveGZybS94ZnJtX3JlcGxheS5jPTU1Mz1zdGF0aWMgdm9pZCB4ZnJtX3JlcGxheV9hZHZhbmNlX2VzbihzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgX19iZTMyIG5ldF9zZXEpXFxuLS1cXG5uZXQveGZybS94ZnJtX3JlcGxheS5jLTYxMC1cXG5uZXQveGZybS94ZnJtX3JlcGxheS5jOjYxMTojaWZkZWYgQ09ORklHX1hGUk1fT0ZGTE9BRFxcbm5ldC94ZnJtL3hmcm1fcmVwbGF5LmMtNjEyLXN0YXRpYyBpbnQgeGZybV9yZXBsYXlfb3ZlcmZsb3dfb2ZmbG9hZChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz03NjM9RVhQT1JUX1NZTUJPTCh4ZnJtX3N0YXRlX2FsbG9jKTtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNzY0LVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzo3NjU6I2lmZGVmIENPTkZJR19YRlJNX09GRkxPQURcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtNzY2LXZvaWQgeGZybV9kZXZfc3RhdGVfZGVsZXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTExMzE9c3RhdGljIHN0cnVjdCB4ZnJtX3N0YXRlICpfX3hmcm1fc3RhdGVfbG9va3VwX2FsbChjb25zdCBzdHJ1Y3QgeGZybV9oYXNoX3N0YXRlX3B0cnMgKnN0YXRlX3B0cnMsXFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTE0MS1cXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UoeCwgc3RhdGVfcHRycy1cXHUwMDNlYnlzcGkgKyBoLCBieXNwaSkge1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxMTQyOiNpZmRlZiBDT05GSUdfWEZSTV9PRkZMT0FEXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTExNDMtXFx0XFx0aWYgKHhkby1cXHUwMDNldHlwZSA9PSBYRlJNX0RFVl9PRkZMT0FEX1BBQ0tFVCkge1xcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTEzNDk9eGZybV9zdGF0ZV9maW5kKGNvbnN0IHhmcm1fYWRkcmVzc190ICpkYWRkciwgY29uc3QgeGZybV9hZGRyZXNzX3QgKnNhZGRyLFxcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE0MjItXFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHgsIHN0YXRlX3B0cnMuYnlkc3QgKyBoLCBieWRzdCkge1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoxNDIzOiNpZmRlZiBDT05GSUdfWEZSTV9PRkZMT0FEXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE0MjQtXFx0XFx0aWYgKHBvbC1cXHUwMDNleGRvLnR5cGUgPT0gWEZSTV9ERVZfT0ZGTE9BRF9QQUNLRVQpIHtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xNDU3LVxcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdSh4LCBzdGF0ZV9wdHJzLmJ5ZHN0ICsgaF93aWxkY2FyZCwgYnlkc3QpIHtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6MTQ1ODojaWZkZWYgQ09ORklHX1hGUk1fT0ZGTE9BRFxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xNDU5LVxcdFxcdGlmIChwb2wtXFx1MDAzZXhkby50eXBlID09IFhGUk1fREVWX09GRkxPQURfUEFDS0VUKSB7XFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTUzMy1cXHRcXHR9XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjE1MzQ6I2lmZGVmIENPTkZJR19YRlJNX09GRkxPQURcXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMTUzNS1cXHRcXHRpZiAocG9sLVxcdTAwM2V4ZG8udHlwZSA9PSBYRlJNX0RFVl9PRkZMT0FEX1BBQ0tFVCkge1xcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTE1OTItXFx0XFx0fSBlbHNlIHtcXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6MTU5MzojaWZkZWYgQ09ORklHX1hGUk1fT0ZGTE9BRFxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0xNTk0LVxcdFxcdFxcdHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28gPSBcXHUwMDI2eC1cXHUwMDNleHNvO1xcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MTIwND1zdGF0aWMgdm9pZCB4c29fdG9feHVvKGNvbnN0IHN0cnVjdCB4ZnJtX2Rldl9vZmZsb2FkICp4c28sXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjA4LVxcdGlmICh4c28tXFx1MDAzZWRpciA9PSBYRlJNX0RFVl9PRkZMT0FEX0lOKVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjEyMDk6XFx0XFx0eHVvLVxcdTAwM2VmbGFncyA9IFhGUk1fT0ZGTE9BRF9JTkJPVU5EO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEyMTAtXFx0aWYgKHhzby1cXHUwMDNldHlwZSA9PSBYRlJNX0RFVl9PRkZMT0FEX1BBQ0tFVClcXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMjExOlxcdFxcdHh1by1cXHUwMDNlZmxhZ3MgfD0gWEZSTV9PRkZMT0FEX1BBQ0tFVDtcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMjEyLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjFUMTA6MTY6MTUuMzQ3ODA1NDg0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU0NzAwNjEyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nOlxuXG4qKkFuYWx5emluZyBYRlJNIE9mZmxvYWQgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHRoZSBrZXkgaGVyZSBzZWVtcyB0byBiZSBgQ09ORklHX1hGUk1fT0ZGTE9BRGAuIFRoYXQncyB0aGUgY29uZmlnIGl0ZW0gdGhhdCdzIGxpa2VseSBjb250cm9sbGluZyB0aGUgYmVoYXZpb3IgSSdtIGludGVyZXN0ZWQgaW4sIHdoaWNoIHN1Z2dlc3RzIEknbSBkaXZpbmcgaW50byBhbiBvZmZsb2FkLXJlbGF0ZWQgYXJlYSwgc3BlY2lmaWNhbGx5LCBJUHNlYyBvZmZsb2FkIHBlcmhhcHM/IEdvdHRhIHJlbWVtYmVyIHRoYXQuIE5vdywgd2hlcmUgdG8gbG9vaz8gTXkgaW5zdGluY3RzIGFyZSBpbW1lZGlhdGVseSBndWlkaW5nIG1lIHRvd2FyZHMgdGhlIGNvcmUgbmV0d29yayBkZXZpY2UgaGFuZGxpbmcuIExldCdzIHN0YXJ0IHdpdGggYG5ldC9jb3JlL2Rldi5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gaXMgdmFsaWRhdGluZyBhbmQgcXVldWVpbmcgU0tCcywgZXNwZWNpYWxseSByZWdhcmRpbmcgb2ZmbG9hZCBwYXRocy4gU3BlY2lmaWNhbGx5LCBJJ2xsIGJlIGRpZ2dpbmcgaW50byBgdmFsaWRhdGVfeG1pdF9za2JfbGlzdGAgYW5kLCBtb3JlIGltcG9ydGFudGx5LCBgX19kZXZfcXVldWVfeG1pdGAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgY2VudHJhbCB0byB0aGUgdHJhbnNtaXNzaW9uIHByb2Nlc3MsIHNvIHRoZXknbGwgbGlrZWx5IGhvbGQgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyBvZmZsb2FkIGRlY2lzaW9ucyBhcmUgbWFkZSBhbmQgaWYgYFhGUk1fT0ZGTE9BRGAgcGxheXMgYSByb2xlIGluIGluZmx1ZW5jaW5nIHRob3NlIGRlY2lzaW9ucy4gSSdsbCBuZWVkIHRvIHRyYWNlIHRoZSBsb2dpYyB3aXRoaW4gdGhlc2UgZnVuY3Rpb25zIHRvIHNlZSBpZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtLCBhbmQgaXRzIGVmZmVjdHMsIGFyZSB2aXNpYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDY4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjFUMTA6MTY6MTguODk0ODEzOTE4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDU0NTgxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2YWxpZGF0ZV94bWl0X3NrYl9saXN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL2Rldi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL2Rldi5jPTQwMjQ9c3RhdGljIHN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sICphZ2FpbilcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTQwODItXFxubmV0L2NvcmUvZGV2LmM6NDA4MzpzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF9za2JfbGlzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sICphZ2FpbilcXG5uZXQvY29yZS9kZXYuYy00MDg0LXtcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTQxMDgtfVxcbm5ldC9jb3JlL2Rldi5jOjQxMDk6RVhQT1JUX1NZTUJPTF9HUEwodmFsaWRhdGVfeG1pdF9za2JfbGlzdCk7XFxubmV0L2NvcmUvZGV2LmMtNDExMC1cXG4tLVxcbm5ldC9jb3JlL2Rldi5jPTQ5MTg9aW50IF9fZGV2X2RpcmVjdF94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHUxNiBxdWV1ZV9pZClcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTQ5MjktXFxubmV0L2NvcmUvZGV2LmM6NDkzMDpcXHRza2IgPSB2YWxpZGF0ZV94bWl0X3NrYl9saXN0KHNrYiwgZGV2LCBcXHUwMDI2YWdhaW4pO1xcbm5ldC9jb3JlL2Rldi5jLTQ5MzEtXFx0aWYgKHNrYiAhPSBvcmlnX3NrYilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjFUMTA6MTY6MTguOTQ5MzY1ODk3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNDIwMTU2NzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEZvY3VzIFN5bWJvbHMgYW5kIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIGB2YWxpZGF0ZV94bWl0X3NrYl9saXN0YCBhbmQgYF9fZGV2X3F1ZXVlX3htaXRgIGp1bXAgb3V0IGFzIGNvcmUgbmV0d29ya2luZyBmdW5jdGlvbnMsIGFzIG9uZSB3b3VsZCBleHBlY3QuIFRoZSBwYXRjaCBzZWVtcyB0byBiZSBpbnRyb2R1Y2luZyBoYW5kbGluZyBmb3IgYEVSUl9QVFIoLUVJTlBST0dSRVNTKWAgd2l0aGluIHRob3NlIGZ1bmN0aW9ucywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIE15IGluaXRpYWwgaW5jbGluYXRpb24gaXMgdG8gZmxhZyB0aG9zZSBmdW5jdGlvbnMgYXMgdGhlIGZvY3VzIGZvciBhbmFseXNpcywgYWxvbmcgd2l0aCBgdmFsaWRhdGVfeG1pdF94ZnJtYC5cblxuV2FpdCBhIG1pbnV0ZSwgSSBoYXZlIHRvIGJlIGNhcmVmdWwgaGVyZS4gYF9fZGV2X3F1ZXVlX3htaXRgIGFuZCBgdmFsaWRhdGVfeG1pdF9za2JfbGlzdGAgYXJlICp2ZXJ5KiBnZW5lcmljIGFuZCBsaWtlbHkgaG90IHBhdGhzLiBUaGUgaW5zdHJ1Y3Rpb25zIGV4cGxpY2l0bHkgdGVsbCBtZSB0byBhdm9pZCBsaXN0aW5nIHRob3NlIGdlbmVyaWMsIGhvdC1wYXRoIGZ1bmN0aW9ucywgYXMgaXQgd2lsbCBza2V3IHRoZSB0ZXN0IGRpc3RyaWJ1dGlvbnMuIFRoYXQgbWFrZXMgc2Vuc2UuIEkgbmVlZCB0byBmaW5kIHNvbWV0aGluZyBtb3JlIHNwZWNpZmljLiAgYHZhbGlkYXRlX3htaXRfeGZybWAgaXMgc3BlY2lmaWNhbGx5IHRpZWQgdG8gWEZSTSBvZmZsb2FkLCB3aGljaCBpcyBnb29kLiBJdCdzIGEgbW9yZSB0YXJnZXRlZCBmdW5jdGlvbiBhbmQgc2hvdWxkIGJlIGFuIGFjY2VwdGFibGUgZm9jdXMuIExldCdzIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgc3VpdGFibGUgZnVuY3Rpb25zLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gbm90IG1pc3NpbmcgYW55dGhpbmcgZWxzZS4gYHZhbGlkYXRlX3htaXRfc2tiYCBpcyBhbHNvIGEgaG90IHBhdGgsIHNvIHRoYXQgaXMgb2ZmIHRoZSBsaXN0LlxuXG5TbywgYHZhbGlkYXRlX3htaXRfeGZybWAgaXQgaXMuIFRoYXQgc2VlbXMgbGlrZSB0aGUgcmlnaHQgY2FsbCwgaXQgaXMgc3BlY2lmaWMgZW5vdWdoLlxuXG5Ob3csIGxldCdzIGdldCB0aGUgY29uZmlndXJhdGlvbnMgc3RyYWlnaHQuIEkga25vdyBgdmFsaWRhdGVfeG1pdF94ZnJtYCBpcyB1c2VkIGluIHRoZSBjb250ZXh0IG9mIFhGUk0gb2ZmbG9hZCwgc28gSSdsbCBuZWVkIGBDT05GSUdfWEZSTV9PRkZMT0FEYCBhbmQgSSB0aGluayBJIGFsc28gbmVlZCB0aGUgbWFpbiBgQ09ORklHX1hGUk1gIGFzIHdlbGwuIExldCBtZSBkb3VibGUgY2hlY2suLi4gT2theSwgYENPTkZJR19YRlJNYCBpcyB0aGUgbWFpbiBvbmUgYW5kIGBDT05GSUdfWEZSTV9PRkZMT0FEYCBpcyBzcGVjaWZpYyB0byB0aGUgb2ZmbG9hZCBmZWF0dXJlLiBBbHJpZ2h0LCBsZXQncyBjaGVjayBgWEZSTV9PRkZMT0FEYC4gSXQncyBhIGJvb2xlYW4sIHdoaWNoIHNpbXBsaWZpZXMgdGhpbmdzLiBHb29kLiBgWEZSTV9PRkZMT0FEYCBpcyB0aGUgcmlnaHQgY29uZmlndXJhdGlvbiBzeW1ib2wuXG5cbk5vdywgbGV0J3Mgem9vbSBiYWNrIGluIG9uIHRoZSBwYXRjaCBpdHNlbGYgYW5kIHJlLWV4YW1pbmUgdGhlIGNvZGUgY2hhbmdlcy4gSSdsbCByZWFkIHRoZSBjb2RlIG5vdywganVzdCB0byBiZSBzdXJlLi4uXG5cbmBgYGNcbkBAIC00ODYwLDggKzQ4NjMsMTEgQEAgaW50IF9fZGV2X3F1ZXVlX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKnNiX2RldilcbiBcdFx0XHRnb3RvIHJlY3Vyc2lvbl9hbGVydDtcbiBcbiBcdFx0c2tiID0gdmFsaWRhdGVfeG1pdF9za2Ioc2tiLCBkZXYsIFx1MDAyNmFnYWluKTtcbi1cdFx0aWYgKCFza2IpXG4rXHRcdGlmIChJU19FUlJfT1JfTlVMTChza2IpKSB7XG4rXHRcdFx0aWYgKFBUUl9FUlIoc2tiKSA9PSAtRUlOUFJPR1JFU1MpXG4rXHRcdFx0XHRyYyA9IE5FVF9YTUlUX1NVQ0NFU1M7XG4gXHRcdFx0Z290byBvdXQ7XG4rXHRcdH1cbmBgYFxuVGhpcyBpcyBpbiBgX19kZXZfcXVldWVfeG1pdGAuXG5cbmBgYGNcbkBAIC00MDg5LDcgKzQwOTIsNyBAQCBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF9za2JfbGlzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZFxuIFx0XHRza2ItXHUwMDNlcHJldiA9IHNrYjtcbiBcbiBcdFx0c2tiID0gdmFsaWRhdGVfeG1pdF9za2Ioc2tiLCBkZXYsIGFnYWluKTtcbi1cdFx0aWYgKCFza2IpXG4rXHRcdGlmIChJU19FUlJfT1JfTlVMTChza2IpKVxuIFx0XHRcdGNvbnRpbnVlO1xuYGBgXG5UaGlzIGlzIGluIGB2YWxpZGF0ZV94bWl0X3NrYl9saXN0YC5cblxuYGBgY1xuQEAgLTE4Miw3ICsxODIsNyBAQCBzdHJ1Y3Qgc2tfYnVmZiAqdmFsaWRhdGVfeG1pdF94ZnJtKHN0cnVjdCBza19idWZmICpza2IsIG5ldGRldl9mZWF0dXJlc190IGZlYXR1clxuIFx0XHRlcnIgPSB4LVx1MDAzZXR5cGVfb2ZmbG9hZC1cdTAwM2V4bWl0KHgsIHNrYiwgZXNwX2ZlYXR1cmVzKTtcbiBcdFx0aWYgKGVycikge1xuIFx0XHRcdGlmIChlcnIgPT0gLUVJTlBST0dSRVNTKVxuLVx0XHRcdFx0cmV0dXJuIE5VTEw7XG4rXHRcdFx0XHRyZXR1cm4gRVJSX1BUUigtRUlOUFJPR1JFU1MpO1xuYGBgXG5UaGlzIGlzIGluIGB2YWxpZGF0ZV94bWl0X3hmcm1gLlxuXG5Pa2F5LCB0aGUgY2hhbmdlcyBsb29rIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGZpeGVzIGEgYnVnIHdoZXJlLCBpbiBhc3luYyBjcnlwdG8gc2NlbmFyaW9zLCBhIFwic3RvbGVuXCIgcGFja2V0IHdvdWxkIHByZXZpb3VzbHkgYmUgdHJlYXRlZCBhcyBhIGRyb3AgKHJldHVybmluZyBgTlVMTGApLiBUaGlzIGNhdXNlZCBwb3RlbnRpYWwgaXNzdWVzIGxpa2UgdXNlLWFmdGVyLWZyZWUgb3IgaW5jb3JyZWN0IHN0YXRzLiAgTm93LCB0aGUgZnVuY3Rpb25zIHJldHVybiBgRVJSX1BUUigtRUlOUFJPR1JFU1MpYCBzbyB0aGF0IHRoZSBjYWxsZXIga25vd3MgdGhlIHBhY2tldCB3YXMgXCJzdG9sZW5cIiAoZm9yIGxhY2sgb2YgYSBiZXR0ZXIgd29yZCkgYW5kIGNhbiB0aGVuIHJldHVybiBgTkVUX1hNSVRfU1VDQ0VTU2AgaW5kaWNhdGluZyB0aGF0IHRoZSBwYWNrZXQgdHJhbnNtaXNzaW9uIHNob3VsZCBiZSByZXRyaWVkIG9yIGhhbmRsZWQgYXBwcm9wcmlhdGVseS4gU2VlbXMgcmVhc29uYWJsZS5cblxuSXMgYHZhbGlkYXRlX3htaXRfeGZybWAgcmVhY2hhYmxlPyBZZXMsIHdoZW4gWEZSTSBvZmZsb2FkIGlzXG5cbiIsIklucHV0VG9rZW5zIjo3MTE3LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIxVDEwOjE2OjMxLjM2OTUyNDk2OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY0MDAxNTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieG1pdF94ZnJtXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS94ZnJtX2RldmljZS5jPTY5PXN0YXRpYyB2b2lkIHhmcm1fb3V0ZXJfbW9kZV9wcmVwKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYy0xMDItXFxubmV0L3hmcm0veGZybV9kZXZpY2UuYzoxMDM6c3RhdGljIGlubGluZSBib29sIHhtaXRfeGZybV9jaGVja19vdmVyZmxvdyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMTA0LXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMTE0LVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6MTE1OnN0cnVjdCBza19idWZmICp2YWxpZGF0ZV94bWl0X3hmcm0oc3RydWN0IHNrX2J1ZmYgKnNrYiwgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdHVyZXMsIGJvb2wgKmFnYWluKVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMTE2LXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMTU4LVxcdGlmIChza2JfaXNfZ3NvKHNrYikgXFx1MDAyNlxcdTAwMjYgKHVubGlrZWx5KHgtXFx1MDAzZXhzby5kZXYgIT0gZGV2KSB8fFxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmM6MTU5OlxcdFxcdFxcdFxcdHVubGlrZWx5KHhtaXRfeGZybV9jaGVja19vdmVyZmxvdyhza2IpKSkpIHtcXG5uZXQveGZybS94ZnJtX2RldmljZS5jLTE2MC1cXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2VncztcXG4tLVxcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMjM2LX1cXG5uZXQveGZybS94ZnJtX2RldmljZS5jOjIzNzpFWFBPUlRfU1lNQk9MX0dQTCh2YWxpZGF0ZV94bWl0X3hmcm0pO1xcbm5ldC94ZnJtL3hmcm1fZGV2aWNlLmMtMjM4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxMDoxNjozMS40MjU5MzM3ODdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEzMjE3ODc2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBtYWluIGZ1bmN0aW9uIHRoaXMgcGF0Y2ggaXMgemVyb2luZyBpbiBvbiBpcyBgdmFsaWRhdGVfeG1pdF94ZnJtYC4gR29vZCwgdGhhdCdzIHdoYXQgSSBleHBlY3RlZCBnaXZlbiB0aGUgY29uZmlndXJhdGlvbiBgWEZSTV9PRkZMT0FEYC4gSSBuZWVkIHRvIGJlIHN1cmUgdGhvdWdoLCBzbyBsZXQncyBqdXN0IHF1aWNrbHkgdmVyaWZ5IHRoYXQgYHZhbGlkYXRlX3htaXRfeGZybWAgaXMgdGhlIG9ubHkgZnVuY3Rpb24gdGhhdCdzIGdldHRpbmcgc2VyaW91cyBtb2RpZmljYXRpb24uIEFoYSwgdGhlcmUgYXJlIGFsc28gYHZhbGlkYXRlX3htaXRfc2tiX2xpc3RgIGFuZCBgX19kZXZfcXVldWVfeG1pdGAsIGJ1dCB0aG9zZSBzZWVtIGEgYml0IGJyb2FkIGFuZCBnZW5lcmljIGluIHRoaXMgY29udGV4dC5cblxuUmlnaHQsIHRoZSBjb3JlIG9mIHRoaXMgcGF0Y2ggaXMgYWJvdXQgaG93IHRoZSBuZXR3b3JraW5nIHRyYW5zbWl0IHBhdGgsIGVzcGVjaWFsbHkgd2l0aCBYRlJNIG9mZmxvYWQgZW5hYmxlZCwgZGVhbHMgd2l0aCBwYWNrZXRzIHRoYXQgYXJlIGVzc2VudGlhbGx5IFwic3RvbGVuXCIgYnkgYXN5bmMgY3J5cHRvIHByb2Nlc3NpbmcuIFByZXZpb3VzbHksIHRoZXNlIHBhY2tldHMgd291bGQgbGVhZCB0byBhIGBOVUxMYCByZXR1cm4sIGJ1dCBub3cgaXQgc2VlbXMgdGhlIHBhdGNoIGlzIGNvcnJlY3RseSByZXR1cm5pbmcgYC1FSU5QUk9HUkVTU2AuIFRoaXMgaXMgZGVmaW5pdGVseSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBpbXBhY3RpbmcgaG93IHdlIHRyYW5zbWl0IHBhY2tldHMgYW5kIGhvdyB3ZSBoYW5kbGUgbWVtb3J5IHdpdGhpbiB0aGUgYHNrYi1cdTAwM2VwcmV2YCBwb2ludGVyLCB3aGljaCBpcyBhIGtleSBzdHJ1Y3R1cmUuXG5cbkJhc2VkIG9uIHRoaXMsIGl0IHdhcnJhbnRzIHNvbWUgc2VyaW91cyBmdXp6aW5nIGFuZCBteSBwcmltYXJ5IGZvY3VzIHNob3VsZCByZW1haW4gYHZhbGlkYXRlX3htaXRfeGZybWAgd2l0aCBgWEZSTV9PRkZMT0FEYCBlbmFibGVkLiBJIGNhbiBzZWUgdGhpcyBiZWluZyBhbiBhcmVhIHdoZXJlIHNvbWUgc3VidGxlIGJ1Z3Mgb3Igc2VjdXJpdHkgaXNzdWVzIGNvdWxkIGVtZXJnZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTQ3NywiT3V0cHV0VG9rZW5zIjo5OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yMVQxMDoxNjozNi41NTgxMTQ4MTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTQ0OTMxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTV9PRkZMT0FEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmFsaWRhdGVfeG1pdF94ZnJtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbmV0d29ya2luZyB0cmFuc21pdCBwYXRoIGFuZCBYRlJNIG9mZmxvYWQgdG8gcHJvcGVybHkgaGFuZGxlIHBhY2tldHMgc3RvbGVuIGJ5IGFzeW5jIGNyeXB0byAocmV0dXJuaW5nIC1FSU5QUk9HUkVTUyBpbnN0ZWFkIG9mIE5VTEwpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIHBhY2tldCB0cmFuc21pc3Npb24gYW5kIG1lbW9yeSBtYW5hZ2VtZW50IChza2ItXFx1MDAzZXByZXYgcG9pbnRlcikuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTV9PRkZMT0FEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmFsaWRhdGVfeG1pdF94ZnJtXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbmV0d29ya2luZyB0cmFuc21pdCBwYXRoIGFuZCBYRlJNIG9mZmxvYWQgdG8gcHJvcGVybHkgaGFuZGxlIHBhY2tldHMgc3RvbGVuIGJ5IGFzeW5jIGNyeXB0byAocmV0dXJuaW5nIC1FSU5QUk9HUkVTUyBpbnN0ZWFkIG9mIE5VTEwpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIHBhY2tldCB0cmFuc21pc3Npb24gYW5kIG1lbW9yeSBtYW5hZ2VtZW50IChza2ItXFx1MDAzZXByZXYgcG9pbnRlcikuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowhkmxs[1] Phase: Succeeded StartedAt: 2026-06-21 10:16:47 +0000 UTC FinishedAt: 2026-06-21 10:16:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkmxs[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-21 10:16:47 +0000 UTC FinishedAt: 2026-06-21 10:16:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkmxs[2] Phase: Succeeded StartedAt: 2026-06-21 10:16:47 +0000 UTC FinishedAt: 2026-06-21 14:09:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-21 10:16:47 +0000 UTC FinishedAt: 2026-06-21 14:09:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-21 10:16:47 +0000 UTC FinishedAt: 2026-06-21 10:16:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-21 10:16:47 +0000 UTC FinishedAt: 2026-06-21 10:16:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhkmxs/series-workflowhkmxs-convert-artifact-2919894968/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-21 10:16:57 +0000 UTC FinishedAt: 2026-06-21 10:39:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-21 10:16:57 +0000 UTC FinishedAt: 2026-06-21 10:39:05 +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:*3be271c9-0bdd-4881-b55a-d3a9070410fd,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-workflowhkmxs/series-workflowhkmxs-convert-artifact-2919894968/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": "8397d93b-34e7-40ae-96c9-d2b45b79c90c", "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-workflowhkmxs/series-workflowhkmxs-build-action-1010521454/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-21 10:16:57 +0000 UTC FinishedAt: 2026-06-21 10:38:55 +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:*3be271c9-0bdd-4881-b55a-d3a9070410fd,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-workflowhkmxs/series-workflowhkmxs-convert-artifact-2919894968/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": "8397d93b-34e7-40ae-96c9-d2b45b79c90c", "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-workflowhkmxs/series-workflowhkmxs-build-action-1010521454/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-21 10:39:05 +0000 UTC FinishedAt: 2026-06-21 10:39:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-21 10:39:05 +0000 UTC FinishedAt: 2026-06-21 10:39:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-21 10:39:05 +0000 UTC FinishedAt: 2026-06-21 10:39:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-21 10:39:05 +0000 UTC FinishedAt: 2026-06-21 10:39:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhkmxs/series-workflowhkmxs-convert-artifact-3621663263/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-21 10:39:15 +0000 UTC FinishedAt: 2026-06-21 10:41:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-21 10:39:15 +0000 UTC FinishedAt: 2026-06-21 10:40:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8397d93b-34e7-40ae-96c9-d2b45b79c90c,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-workflowhkmxs/series-workflowhkmxs-build-action-1010521454/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-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-21 10:41:03 +0000 UTC FinishedAt: 2026-06-21 10:41:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-21 10:41:03 +0000 UTC FinishedAt: 2026-06-21 10:41:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-21 10:41:03 +0000 UTC FinishedAt: 2026-06-21 11:05:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-21 10:41:03 +0000 UTC FinishedAt: 2026-06-21 11:05:49 +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:*3be271c9-0bdd-4881-b55a-d3a9070410fd,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-workflowhkmxs/series-workflowhkmxs-convert-artifact-3621663263/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": "805ea682-c06b-47ef-bea3-2c3654261bee", "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-workflowhkmxs/series-workflowhkmxs-build-action-1021969587/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-21 10:41:03 +0000 UTC FinishedAt: 2026-06-21 11:05:39 +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:*3be271c9-0bdd-4881-b55a-d3a9070410fd,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-workflowhkmxs/series-workflowhkmxs-convert-artifact-3621663263/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": "805ea682-c06b-47ef-bea3-2c3654261bee", "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-workflowhkmxs/series-workflowhkmxs-build-action-1021969587/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-21 11:05:49 +0000 UTC FinishedAt: 2026-06-21 11:05:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-21 11:05:49 +0000 UTC FinishedAt: 2026-06-21 11:05:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-21 11:05:49 +0000 UTC FinishedAt: 2026-06-21 11:07:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-21 11:05:49 +0000 UTC FinishedAt: 2026-06-21 11:07:26 +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:*805ea682-c06b-47ef-bea3-2c3654261bee,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-workflowhkmxs/series-workflowhkmxs-build-action-1021969587/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-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-21 11:07:36 +0000 UTC FinishedAt: 2026-06-21 14:09:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-21 11:07:36 +0000 UTC FinishedAt: 2026-06-21 14:09:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"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:*8397d93b-34e7-40ae-96c9-d2b45b79c90c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*805ea682-c06b-47ef-bea3-2c3654261bee,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-workflowhkmxs/series-workflowhkmxs-build-action-1010521454/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-workflowhkmxs/series-workflowhkmxs-build-action-1021969587/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-21 11:07:36 +0000 UTC FinishedAt: 2026-06-21 11:07:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-21 11:07:36 +0000 UTC FinishedAt: 2026-06-21 11:07:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"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-workflowhkmxs/series-workflowhkmxs-convert-artifact-3060683576/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-21 11:07:36 +0000 UTC FinishedAt: 2026-06-21 11:07:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-21 11:07:36 +0000 UTC FinishedAt: 2026-06-21 11:07:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-21 11:07:36 +0000 UTC FinishedAt: 2026-06-21 11:07:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-21 11:07:46 +0000 UTC FinishedAt: 2026-06-21 14:09:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhkmxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["validate_xmit_xfrm"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"322008f87f917e2217eeac386a9410945092eb2e","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_OFFLOAD"],"series_id":"95b3bc62-985a-45b7-ba33-8fc9ca68a6c9","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-21 11:07:46 +0000 UTC FinishedAt: 2026-06-21 14:09:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8397d93b-34e7-40ae-96c9-d2b45b79c90c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*805ea682-c06b-47ef-bea3-2c3654261bee,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-workflowhkmxs/series-workflowhkmxs-build-action-1010521454/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-workflowhkmxs/series-workflowhkmxs-build-action-1021969587/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-workflowhkmxs/series-workflowhkmxs-convert-artifact-3060683576/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,}