Name: series-workflow9vdqk Phase: Succeeded StartedAt: 2026-07-17 08:58:13 +0000 UTC FinishedAt: 2026-07-17 13:34:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9vdqk[0] Phase: Succeeded StartedAt: 2026-07-17 08:58:13 +0000 UTC FinishedAt: 2026-07-17 09:21:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9vdqk[0].run-triage Phase: Succeeded StartedAt: 2026-07-17 08:58:13 +0000 UTC FinishedAt: 2026-07-17 09:21:26 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VXLAN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VXLAN" ], "series_id": "2b022f27-fc4e-4e8c-99e1-975f048f73ea" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtm_to_nh_config", "nexthop_create", "nh_fill_node", "vxlan_xmit_nh", "vxlan_xmit_nhid" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE3IDA5OjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZYTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRtX3RvX25oX2NvbmZpZyYjMzQ7LAogICAgJiMzNDtuZXh0aG9wX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtuaF9maWxsX25vZGUmIzM0OywKICAgICYjMzQ7dnhsYW5feG1pdF9uaCYjMzQ7LAogICAgJiMzNDt2eGxhbl94bWl0X25oaWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBuZXRsaW5rIGF0dHJpYnV0ZSBOSEFfRkRCX1BPUlQgZm9yIGZkYiBuZXh0aG9wcywgbW9kaWZ5aW5nIG5leHRob3AgY3JlYXRpb24gYW5kIGR1bXBpbmcgbG9naWMsIGFzIHdlbGwgYXMgVlhMQU4gdHJhbnNtaXNzaW9uIHBhdGhzIHRvIHV0aWxpemUgdGhpcyBuZXcgcG9ydC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29ya2luZyBhbmQgVlhMQU4gZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA5OjIwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMzU2MTY2MTY3MTY2Y2U0NGJjNWQzZDcyNjA5ZGI3MDJkYmJjZTAwMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDE3IDA5OjIwOjMzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L25leHRob3AuaCBiL2luY2x1ZGUvbmV0L25leHRob3AuaFxuaW5kZXggNTcyZTY5Y2RhNDc2NmQuLjdmYjYxMmE3MzA3ZjI1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbmV4dGhvcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9uZXh0aG9wLmhcbkBAIC0yOCw2ICYjNDM7MjgsNyBAQCBzdHJ1Y3QgbmhfY29uZmlnIHtcbiBcdHU4XHRcdG5oX3Byb3RvY29sO1xuIFx0dThcdFx0bmhfYmxhY2tob2xlO1xuIFx0dThcdFx0bmhfZmRiO1xuJiM0MztcdF9fYmUxNlx0XHRuaF9mZGJfcG9ydDtcbiBcdHUzMlx0XHRuaF9mbGFncztcbiBcbiBcdGludFx0XHRuaF9pZmluZGV4O1xuQEAgLTYzLDYgJiM0Mzs2NCw3IEBAIHN0cnVjdCBuaF9pbmZvIHtcbiBcdHU4XHRcdFx0ZmFtaWx5O1xuIFx0Ym9vbFx0XHRcdHJlamVjdF9uaDtcbiBcdGJvb2xcdFx0XHRmZGJfbmg7XG4mIzQzO1x0X19iZTE2XHRcdFx0ZmRiX3BvcnQ7XG4gXG4gXHR1bmlvbiB7XG4gXHRcdHN0cnVjdCBmaWJfbmhfY29tbW9uXHRmaWJfbmhjO1xuQEAgLTU3NCw3ICYjNDM7NTc2LDggQEAgc3RydWN0IGZpYl9uaF9jb21tb24gKm5leHRob3BfZmRiX25oYyhzdHJ1Y3QgbmV4dGhvcCAqbmgpXG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZpYl9uaF9jb21tb24gKm5leHRob3BfcGF0aF9mZGJfcmVzdWx0KHN0cnVjdCBuZXh0aG9wICpuaCxcbi1cdFx0XHRcdFx0XHRcdCAgICBpbnQgaGFzaClcbiYjNDM7XHRcdFx0XHRcdFx0ICAgIGludCBoYXNoLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgX19iZTE2ICpmZGJfcG9ydClcbiB7XG4gXHRzdHJ1Y3QgbmhfaW5mbyAqbmhpO1xuIFx0c3RydWN0IG5leHRob3AgKm5ocDtcbkBAIC01ODMsNiAmIzQzOzU4Niw4IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZpYl9uaF9jb21tb24gKm5leHRob3BfcGF0aF9mZGJfcmVzdWx0KHN0cnVjdCBuZXh0aG9wICpuaCxcbiBcdGlmICh1bmxpa2VseSghbmhwKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHRuaGkgPSByY3VfZGVyZWZlcmVuY2UobmhwLVx1MDAzZW5oX2luZm8pO1xuJiM0MztcdGlmIChmZGJfcG9ydClcbiYjNDM7XHRcdCpmZGJfcG9ydCA9IG5oaS1cdTAwM2VmZGJfcG9ydDtcbiBcdHJldHVybiBcdTAwMjZuaGktXHUwMDNlZmliX25oYztcbiB9XG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvdnhsYW4uaCBiL2luY2x1ZGUvbmV0L3Z4bGFuLmhcbmluZGV4IGRmYmE4OTY5NWVmY2ZhLi5kZTQxYjM3NDY4OGYyOSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3Z4bGFuLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L3Z4bGFuLmhcbkBAIC01NjcsOCAmIzQzOzU2Nyw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3Qoc3RydWN0IG5leHRob3AgKm5oLFxuIFx0XHRcdFx0XHQgICAgc3RydWN0IHZ4bGFuX3Jkc3QgKnJkc3QpXG4ge1xuIFx0c3RydWN0IGZpYl9uaF9jb21tb24gKm5oYztcbiYjNDM7XHRfX2JlMTYgZmRiX3BvcnQgPSAwO1xuIFxuLVx0bmhjID0gbmV4dGhvcF9wYXRoX2ZkYl9yZXN1bHQobmgsIGhhc2ggXHUwMDNlXHUwMDNlIDEpO1xuJiM0MztcdG5oYyA9IG5leHRob3BfcGF0aF9mZGJfcmVzdWx0KG5oLCBoYXNoIFx1MDAzZVx1MDAzZSAxLCBcdTAwMjZmZGJfcG9ydCk7XG4gXHRpZiAodW5saWtlbHkoIW5oYykpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbkBAIC01ODMsNiAmIzQzOzU4NCw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3Qoc3RydWN0IG5leHRob3AgKm5oLFxuIFx0XHRicmVhaztcbiBcdH1cbiBcbiYjNDM7XHRyZHN0LVx1MDAzZXJlbW90ZV9wb3J0ID0gZmRiX3BvcnQ7XG4mIzQzO1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9uZXh0aG9wLmggYi9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oXG5pbmRleCBiYzQ5YmFmNGEyNjdmMC4uZTU4N2JiZjNiODkwYTMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oXG5AQCAtODMsNiAmIzQzOzgzLDkgQEAgZW51bSB7XG4gXHQvKiB1MzI7IHJlYWQtb25seTsgd2hldGhlciBhbnkgZHJpdmVyIGNvbGxlY3RzIEhXIHN0YXRzICovXG4gXHROSEFfSFdfU1RBVFNfVVNFRCxcbiBcbiYjNDM7XHQvKiBiZTE2OyBVRFAgZGVzdGluYXRpb24gcG9ydCBmb3IgYW4gZmRiIG5leHRob3AgKGUuZy4gVlhMQU4pICovXG4mIzQzO1x0TkhBX0ZEQl9QT1JULFxuJiM0MztcbiBcdF9fTkhBX01BWCxcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L25leHRob3AuYyBiL25ldC9pcHY0L25leHRob3AuY1xuaW5kZXggNjIwNWJkNTdhYTg1MjAuLjViMjdjYzlhOTE5MWQ3IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvbmV4dGhvcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9uZXh0aG9wLmNcbkBAIC0zOSw2ICYjNDM7MzksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgcnRtX25oX3BvbGljeV9uZXdbXSA9IHtcbiBcdFtOSEFfRU5DQVBfVFlQRV1cdD0geyAudHlwZSA9IE5MQV9VMTYgfSxcbiBcdFtOSEFfRU5DQVBdXHRcdD0geyAudHlwZSA9IE5MQV9ORVNURUQgfSxcbiBcdFtOSEFfRkRCXVx0XHQ9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LFxuJiM0MztcdFtOSEFfRkRCX1BPUlRdXHRcdD0geyAudHlwZSA9IE5MQV9VMTYgfSxcbiBcdFtOSEFfUkVTX0dST1VQXVx0XHQ9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXG4gXHRbTkhBX0hXX1NUQVRTX0VOQUJMRV1cdD0gTkxBX1BPTElDWV9NQVgoTkxBX1UzMiwgdHJ1ZSksXG4gfTtcbkBAIC05NTYsNiAmIzQzOzk1Nyw5IEBAIHN0YXRpYyBpbnQgbmhfZmlsbF9ub2RlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXh0aG9wICpuaCxcbiBcdH0gZWxzZSBpZiAobmhpLVx1MDAzZWZkYl9uaCkge1xuIFx0XHRpZiAobmxhX3B1dF9mbGFnKHNrYiwgTkhBX0ZEQikpXG4gXHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4mIzQzO1x0XHRpZiAobmhpLVx1MDAzZWZkYl9wb3J0IFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIG5sYV9wdXRfYmUxNihza2IsIE5IQV9GREJfUE9SVCwgbmhpLVx1MDAzZWZkYl9wb3J0KSlcbiYjNDM7XHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXHR9IGVsc2Uge1xuIFx0XHRjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xuIFxuQEAgLTEwNTUsNiAmIzQzOzEwNTksOSBAQCBzdGF0aWMgc2l6ZV90IG5oX25sbXNnX3NpemVfc2luZ2xlKHN0cnVjdCBuZXh0aG9wICpuaClcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXG4mIzQzO1x0aWYgKG5oaS1cdTAwM2VmZGJfbmgpXG4mIzQzO1x0XHRzeiAmIzQzOz0gbmxhX3RvdGFsX3NpemUoMik7XHQvKiBOSEFfRkRCX1BPUlQgKi9cbiYjNDM7XG4gXHRpZiAobmhpLVx1MDAzZWZpYl9uaGMubmhjX2x3dHN0YXRlKSB7XG4gXHRcdHN6ICYjNDM7PSBsd3R1bm5lbF9nZXRfZW5jYXBfc2l6ZShuaGktXHUwMDNlZmliX25oYy5uaGNfbHd0c3RhdGUpO1xuIFx0XHRzeiAmIzQzOz0gbmxhX3RvdGFsX3NpemUoMik7ICAvKiBOSEFfRU5DQVBfVFlQRSAqL1xuQEAgLTI5NTYsOCAmIzQzOzI5NjMsMTAgQEAgc3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuaF9jb25maWcgKmNmZyxcbiBcdG5oaS1cdTAwM2VmYW1pbHkgPSBjZmctXHUwMDNlbmhfZmFtaWx5O1xuIFx0bmhpLVx1MDAzZWZpYl9uaGMubmhjX3Njb3BlID0gUlRfU0NPUEVfTElOSztcbiBcbi1cdGlmIChjZmctXHUwMDNlbmhfZmRiKVxuJiM0MztcdGlmIChjZmctXHUwMDNlbmhfZmRiKSB7XG4gXHRcdG5oaS1cdTAwM2VmZGJfbmggPSAxO1xuJiM0MztcdFx0bmhpLVx1MDAzZWZkYl9wb3J0ID0gY2ZnLVx1MDAzZW5oX2ZkYl9wb3J0O1xuJiM0MztcdH1cbiBcbiBcdGlmIChjZmctXHUwMDNlbmhfYmxhY2tob2xlKSB7XG4gXHRcdG5oaS1cdTAwM2VyZWplY3RfbmggPSAxO1xuQEAgLTMxNDcsNiAmIzQzOzMxNTYsMTUgQEAgc3RhdGljIGludCBydG1fdG9fbmhfY29uZmlnKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0Y2ZnLVx1MDAzZW5oX2ZkYiA9IG5sYV9nZXRfZmxhZyh0YltOSEFfRkRCXSk7XG4gXHR9XG4gXG4mIzQzO1x0aWYgKHRiW05IQV9GREJfUE9SVF0pIHtcbiYjNDM7XHRcdGlmICghdGJbTkhBX0ZEQl0gfHwgIXRiW05IQV9HQVRFV0FZXSkge1xuJiM0MztcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssXG4mIzQzO1x0XHRcdFx0ICAgICAgIFwmIzM0O0ZEQiBwb3J0IGNhbiBvbmx5IGJlIHNldCBvbiBmZGIgbmV4dGhvcHMgdGhhdCBoYXZlIGEgZ2F0ZXdheVwmIzM0Oyk7XG4mIzQzO1x0XHRcdGdvdG8gb3V0O1xuJiM0MztcdFx0fVxuJiM0MztcdFx0Y2ZnLVx1MDAzZW5oX2ZkYl9wb3J0ID0gbmxhX2dldF9iZTE2KHRiW05IQV9GREJfUE9SVF0pO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZiAodGJbTkhBX0dST1VQXSkge1xuIFx0XHRpZiAobmhtLVx1MDAzZW5oX2ZhbWlseSAhPSBBRl9VTlNQRUMpIHtcbiBcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwmIzM0O0ludmFsaWQgZmFtaWx5IGZvciBncm91cFwmIzM0Oyk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXG5pbmRleCA3MDhkOTYwYWUwN2Q1Yi4uYzA2ZWI0OTI3Y2Q5Y2IgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZVxuQEAgLTM2LDYgJiM0MzszNiw3IEBAIFRFU1RfUFJPR1MgOj0gXFxcbiBcdGZpYl9uZXh0aG9wX211bHRpcHJlZml4LnNoIFxcXG4gXHRmaWJfbmV4dGhvcF9ub25ndy5zaCBcXFxuIFx0ZmliX25leHRob3BzLnNoIFxcXG4mIzQzO1x0ZmliX25leHRob3BzX2ZkYl9wb3J0LnNoIFxcXG4gXHRmaWJfcnVsZV90ZXN0cy5zaCBcXFxuIFx0ZmliX3Rlc3RzLnNoIFxcXG4gXHRmaW5fYWNrX2xhdC5zaCBcXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9maWJfbmV4dGhvcHNfZmRiX3BvcnQuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZmliX25leHRob3BzX2ZkYl9wb3J0LnNoXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjhiNDAxYzZkMjRhMTRmXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZmliX25leHRob3BzX2ZkYl9wb3J0LnNoXG5AQCAtMCwwICYjNDM7MSw3OCBAQFxuJiM0MzsjIS9iaW4vYmFzaFxuJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOyNcbiYjNDM7IyBDb250cm9sLXBsYW5lIHNlbGZ0ZXN0IGZvciBwZXItbmV4dGhvcCBWWExBTiBmZGIgZGVzdGluYXRpb24gcG9ydFxuJiM0MzsjIChOSEFfRkRCX1BPUlQpLiAgVmVyaWZpZXMgdGhlIGFjY2VwdC9yZWplY3QgcnVsZXMgYW5kIHRoZSBkdW1wIHJvdW5kdHJpcC5cbiYjNDM7IyBObyBkYXRhcGF0aCB0cmFmZmljIGhlcmUgLS0gc2VlIHRlc3RzL2ludGVnL3Z4bGFuLWZkYi1wb3J0LWludGVnLnNoIGZvciB0aGVcbiYjNDM7IyByZWFsIGZvcndhcmRpbmcgdGVzdC5cbiYjNDM7I1xuJiM0MzsjIFJlcXVpcmVzOiBwYXRjaGVkIGtlcm5lbCAoTkhBX0ZEQl9QT1JUKSBhbmQgcGF0Y2hlZCBpcHJvdXRlMiAodGhlIFwmIzM0O3BvcnRcJiMzNDtcbiYjNDM7IyBrZXl3b3JkIG9uIFwmIzM0O2lwIG5leHRob3AgLi4uIGZkYlwmIzM0OykuICBTS0lQcyBjbGVhbmx5IG90aGVyd2lzZS5cbiYjNDM7XG4mIzQzO3NldCAtdVxuJiM0MztcbiYjNDM7a3NmdF9za2lwPTRcbiYjNDM7TlM9XCYjMzQ7bmhmZGJwb3J0LSQkXCYjMzQ7XG4mIzQzO0lQPVwmIzM0O2lwIC1uZXRucyAkTlNcJiMzNDtcbiYjNDM7cmV0PTBcbiYjNDM7XG4mIzQzO2xvZ190ZXN0KCkge1x0IyAkMSBhY3R1YWxfcmMgICQyIGV4cGVjdGVkX3JjICAkMyBuYW1lXG4mIzQzO1x0aWYgWyBcJiMzNDskMVwmIzM0OyA9IFwmIzM0OyQyXCYjMzQ7IF07IHRoZW5cbiYjNDM7XHRcdHByaW50ZiBcJiMzNDtURVNUOiAlLTU4cyBbIE9LIF1cXG5cJiMzNDsgXCYjMzQ7JDNcJiMzNDtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRwcmludGYgXCYjMzQ7VEVTVDogJS01OHMgW0ZBSUxdIChyYz0kMSB3YW50PSQyKVxcblwmIzM0OyBcJiMzNDskM1wmIzM0O1xuJiM0MztcdFx0cmV0PTFcbiYjNDM7XHRmaVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsjIHBhc3NlcyAocmV0dXJucyAwKSBpZmYgdGhlIGNvbW1hbmQgRkFJTFNcbiYjNDM7ZXhwZWN0X2ZhaWwoKSB7XG4mIzQzO1x0aWYgXCYjMzQ7JEBcJiMzNDsgXHUwMDNlL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxOyB0aGVuIHJldHVybiAxOyBlbHNlIHJldHVybiAwOyBmaVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztjbGVhbnVwKCkgeyBpcCBuZXRucyBkZWwgXCYjMzQ7JE5TXCYjMzQ7IDJcdTAwM2UvZGV2L251bGw7IH1cbiYjNDM7XG4mIzQzO2NvbW1hbmQgLXYgaXAgXHUwMDNlL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxIHx8IHsgZWNobyBcJiMzNDtTS0lQOiBpcHJvdXRlMiBub3QgZm91bmRcJiMzNDs7IGV4aXQgJGtzZnRfc2tpcDsgfVxuJiM0MztpcCBuZXh0aG9wIGhlbHAgMlx1MDAzZVx1MDAyNjEgfCBncmVwIC1xIGZkYiB8fCB7IGVjaG8gXCYjMzQ7U0tJUDogbm8gZmRiIG5leHRob3Agc3VwcG9ydFwmIzM0OzsgZXhpdCAka3NmdF9za2lwOyB9XG4mIzQzO1xuJiM0Mzt0cmFwIGNsZWFudXAgRVhJVFxuJiM0MztjbGVhbnVwXG4mIzQzO2lwIG5ldG5zIGFkZCBcJiMzNDskTlNcJiMzNDsgfHwgeyBlY2hvIFwmIzM0O1NLSVA6IGNhbm5vdCBjcmVhdGUgbmV0bnNcJiMzNDs7IGV4aXQgJGtzZnRfc2tpcDsgfVxuJiM0MzskSVAgbGluayBzZXQgbG8gdXBcbiYjNDM7XG4mIzQzOyMgUHJvYmUgZm9yIFwmIzM0O3BvcnRcJiMzNDsga2V5d29yZCAmIzQzOyBrZXJuZWwgTkhBX0ZEQl9QT1JUIHN1cHBvcnQ7IFNLSVAgaWYgbWlzc2luZy5cbiYjNDM7aWYgISAkSVAgbmV4dGhvcCBhZGQgaWQgMSB2aWEgMTAuMC4wLjEgZmRiIHBvcnQgNDc5MCAyXHUwMDNlL2Rldi9udWxsOyB0aGVuXG4mIzQzO1x0ZWNobyBcJiMzNDtTS0lQOiAmIzM5O2lwIG5leHRob3AgLi4uIGZkYiBwb3J0JiMzOTsgdW5zdXBwb3J0ZWQgKG5lZWRzIHBhdGNoZWQga2VybmVsICYjNDM7IGlwcm91dGUyKVwmIzM0O1xuJiM0MztcdGV4aXQgJGtzZnRfc2tpcFxuJiM0MztmaVxuJiM0Mztsb2dfdGVzdCAwIDAgXCYjMzQ7YWRkIGZkYiBuZXh0aG9wIHdpdGggcG9ydFwmIzM0O1xuJiM0MztcbiYjNDM7IyBEdW1wIHJvdW5kdHJpcCBtdXN0IGVjaG8gdGhlIHBvcnQgYmFjay5cbiYjNDM7JElQIG5leHRob3Agc2hvdyBpZCAxIHwgZ3JlcCAtcXcgXCYjMzQ7cG9ydCA0NzkwXCYjMzQ7XG4mIzQzO2xvZ190ZXN0ICQ/IDAgXCYjMzQ7ZHVtcCBzaG93cyBmZGIgcG9ydCA0NzkwXCYjMzQ7XG4mIzQzO1xuJiM0MzsjIFJlamVjdDogcG9ydCBvbiBhIHJvdXRlZCAobm9uLWZkYikgbmV4dGhvcC5cbiYjNDM7ZXhwZWN0X2ZhaWwgJElQIG5leHRob3AgYWRkIGlkIDIgdmlhIDEwLjAuMC4xIGRldiBsbyBwb3J0IDQ3OTBcbiYjNDM7bG9nX3Rlc3QgJD8gMCBcJiMzNDtyZWplY3QgcG9ydCBvbiBub24tZmRiIG5leHRob3BcJiMzNDtcbiYjNDM7XG4mIzQzOyMgUmVqZWN0OiBmZGIgcG9ydCB3aXRob3V0IGEgZ2F0ZXdheS5cbiYjNDM7ZXhwZWN0X2ZhaWwgJElQIG5leHRob3AgYWRkIGlkIDMgZmRiIHBvcnQgNDc5MFxuJiM0Mztsb2dfdGVzdCAkPyAwIFwmIzM0O3JlamVjdCBmZGIgcG9ydCB3aXRob3V0IGdhdGV3YXlcJiMzNDtcbiYjNDM7XG4mIzQzOyMgVGhlIEhBIGNhc2U6IGEgZ3JvdXAgd2hvc2UgbGVncyBzaGFyZSB0aGUgZ2F0ZXdheSBidXQgZGlmZmVyIGluIHBvcnQuXG4mIzQzOyRJUCBuZXh0aG9wIGFkZCBpZCAxMCB2aWEgMTAuMC4wLjEgZmRiIHBvcnQgNDc4OSBcdTAwMjZcdTAwMjYgXFxcbiYjNDM7JElQIG5leHRob3AgYWRkIGlkIDExIHZpYSAxMC4wLjAuMSBmZGIgcG9ydCA1Nzg5IFx1MDAyNlx1MDAyNiBcXFxuJiM0MzskSVAgbmV4dGhvcCBhZGQgaWQgMTAwIGdyb3VwIDEwLzExIGZkYlxuJiM0Mztsb2dfdGVzdCAkPyAwIFwmIzM0O2FkZCBmZGIgbmV4dGhvcCBncm91cCB3aXRoIGRpZmZlcmluZyBwb3J0c1wmIzM0O1xuJiM0MztcbiYjNDM7IyBBIGZkYiBuZXh0aG9wIHdpdGhvdXQgYSBwb3J0IG11c3QgTk9UIGVtaXQgb25lIChiYWNrd2FyZCBjb21wYXQpLlxuJiM0MzskSVAgbmV4dGhvcCBhZGQgaWQgMjAgdmlhIDEwLjAuMC4xIGZkYlxuJiM0MzskSVAgbmV4dGhvcCBzaG93IGlkIDIwIHwgZ3JlcCAtcXcgXCYjMzQ7cG9ydFwmIzM0O1xuJiM0Mztsb2dfdGVzdCAkPyAxIFwmIzM0O2ZkYiBuZXh0aG9wIHdpdGhvdXQgcG9ydCBvbWl0cyBOSEFfRkRCX1BPUlRcJiMzNDtcbiYjNDM7XG4mIzQzO2lmIFsgJHJldCAtZXEgMCBdOyB0aGVuXG4mIzQzO1x0ZWNobyBcJiMzNDtQQVNTOiBhbGwgTkhBX0ZEQl9QT1JUIGNvbnRyb2wtcGxhbmUgY2hlY2tzXCYjMzQ7XG4mIzQzO2Vsc2VcbiYjNDM7XHRlY2hvIFwmIzM0O0ZBSUw6IG9uZSBvciBtb3JlIE5IQV9GREJfUE9SVCBjaGVja3MgZmFpbGVkXCYjMzQ7XG4mIzQzO2ZpXG4mIzQzO2V4aXQgJHJldFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA5OjIwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZYTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRtX3RvX25oX2NvbmZpZyYjMzQ7LAogICAgJiMzNDtuZXh0aG9wX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtuaF9maWxsX25vZGUmIzM0OywKICAgICYjMzQ7dnhsYW5feG1pdF9uaCYjMzQ7LAogICAgJiMzNDt2eGxhbl94bWl0X25oaWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBuZXRsaW5rIGF0dHJpYnV0ZSBOSEFfRkRCX1BPUlQgZm9yIGZkYiBuZXh0aG9wcywgbW9kaWZ5aW5nIG5leHRob3AgY3JlYXRpb24gYW5kIGR1bXBpbmcgbG9naWMsIGFzIHdlbGwgYXMgVlhMQU4gdHJhbnNtaXNzaW9uIHBhdGhzIHRvIHV0aWxpemUgdGhpcyBuZXcgcG9ydC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29ya2luZyBhbmQgVlhMQU4gZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzNTYxNjYxNjcxNjZjZTQ0YmM1ZDNkNzI2MDlkYjcwMmRiYmNlMDAxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMTcgMDk6MjA6MzMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9uZXh0aG9wLmggYi9pbmNsdWRlL25ldC9uZXh0aG9wLmgKaW5kZXggNTcyZTY5Y2RhNDc2NmQuLjdmYjYxMmE3MzA3ZjI1IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9uZXh0aG9wLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvbmV4dGhvcC5oCkBAIC0yOCw2ICYjNDM7MjgsNyBAQCBzdHJ1Y3QgbmhfY29uZmlnIHsKIAl1OAkJbmhfcHJvdG9jb2w7CiAJdTgJCW5oX2JsYWNraG9sZTsKIAl1OAkJbmhfZmRiOwomIzQzOwlfX2JlMTYJCW5oX2ZkYl9wb3J0OwogCXUzMgkJbmhfZmxhZ3M7CiAKIAlpbnQJCW5oX2lmaW5kZXg7CkBAIC02Myw2ICYjNDM7NjQsNyBAQCBzdHJ1Y3QgbmhfaW5mbyB7CiAJdTgJCQlmYW1pbHk7CiAJYm9vbAkJCXJlamVjdF9uaDsKIAlib29sCQkJZmRiX25oOwomIzQzOwlfX2JlMTYJCQlmZGJfcG9ydDsKIAogCXVuaW9uIHsKIAkJc3RydWN0IGZpYl9uaF9jb21tb24JZmliX25oYzsKQEAgLTU3NCw3ICYjNDM7NTc2LDggQEAgc3RydWN0IGZpYl9uaF9jb21tb24gKm5leHRob3BfZmRiX25oYyhzdHJ1Y3QgbmV4dGhvcCAqbmgpCiB9CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZpYl9uaF9jb21tb24gKm5leHRob3BfcGF0aF9mZGJfcmVzdWx0KHN0cnVjdCBuZXh0aG9wICpuaCwKLQkJCQkJCQkgICAgaW50IGhhc2gpCiYjNDM7CQkJCQkJICAgIGludCBoYXNoLAomIzQzOwkJCQkJCSAgICBfX2JlMTYgKmZkYl9wb3J0KQogewogCXN0cnVjdCBuaF9pbmZvICpuaGk7CiAJc3RydWN0IG5leHRob3AgKm5ocDsKQEAgLTU4Myw2ICYjNDM7NTg2LDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmV4dGhvcF9wYXRoX2ZkYl9yZXN1bHQoc3RydWN0IG5leHRob3AgKm5oLAogCWlmICh1bmxpa2VseSghbmhwKSkKIAkJcmV0dXJuIE5VTEw7CiAJbmhpID0gcmN1X2RlcmVmZXJlbmNlKG5ocC0mZ3Q7bmhfaW5mbyk7CiYjNDM7CWlmIChmZGJfcG9ydCkKJiM0MzsJCSpmZGJfcG9ydCA9IG5oaS0mZ3Q7ZmRiX3BvcnQ7CiAJcmV0dXJuICZhbXA7bmhpLSZndDtmaWJfbmhjOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC92eGxhbi5oIGIvaW5jbHVkZS9uZXQvdnhsYW4uaAppbmRleCBkZmJhODk2OTVlZmNmYS4uZGU0MWIzNzQ2ODhmMjkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3Z4bGFuLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvdnhsYW4uaApAQCAtNTY3LDggJiM0Mzs1NjcsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdnhsYW5fZmRiX25oX3BhdGhfc2VsZWN0KHN0cnVjdCBuZXh0aG9wICpuaCwKIAkJCQkJICAgIHN0cnVjdCB2eGxhbl9yZHN0ICpyZHN0KQogewogCXN0cnVjdCBmaWJfbmhfY29tbW9uICpuaGM7CiYjNDM7CV9fYmUxNiBmZGJfcG9ydCA9IDA7CiAKLQluaGMgPSBuZXh0aG9wX3BhdGhfZmRiX3Jlc3VsdChuaCwgaGFzaCAmZ3Q7Jmd0OyAxKTsKJiM0MzsJbmhjID0gbmV4dGhvcF9wYXRoX2ZkYl9yZXN1bHQobmgsIGhhc2ggJmd0OyZndDsgMSwgJmFtcDtmZGJfcG9ydCk7CiAJaWYgKHVubGlrZWx5KCFuaGMpKQogCQlyZXR1cm4gZmFsc2U7CiAKQEAgLTU4Myw2ICYjNDM7NTg0LDggQEAgc3RhdGljIGlubGluZSBib29sIHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdChzdHJ1Y3QgbmV4dGhvcCAqbmgsCiAJCWJyZWFrOwogCX0KIAomIzQzOwlyZHN0LSZndDtyZW1vdGVfcG9ydCA9IGZkYl9wb3J0OwomIzQzOwogCXJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L25leHRob3AuaAppbmRleCBiYzQ5YmFmNGEyNjdmMC4uZTU4N2JiZjNiODkwYTMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9uZXh0aG9wLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L25leHRob3AuaApAQCAtODMsNiAmIzQzOzgzLDkgQEAgZW51bSB7CiAJLyogdTMyOyByZWFkLW9ubHk7IHdoZXRoZXIgYW55IGRyaXZlciBjb2xsZWN0cyBIVyBzdGF0cyAqLwogCU5IQV9IV19TVEFUU19VU0VELAogCiYjNDM7CS8qIGJlMTY7IFVEUCBkZXN0aW5hdGlvbiBwb3J0IGZvciBhbiBmZGIgbmV4dGhvcCAoZS5nLiBWWExBTikgKi8KJiM0MzsJTkhBX0ZEQl9QT1JULAomIzQzOwogCV9fTkhBX01BWCwKIH07CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY0L25leHRob3AuYyBiL25ldC9pcHY0L25leHRob3AuYwppbmRleCA2MjA1YmQ1N2FhODUyMC4uNWIyN2NjOWE5MTkxZDcgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L25leHRob3AuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9uZXh0aG9wLmMKQEAgLTM5LDYgJiM0MzszOSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBydG1fbmhfcG9saWN5X25ld1tdID0gewogCVtOSEFfRU5DQVBfVFlQRV0JPSB7IC50eXBlID0gTkxBX1UxNiB9LAogCVtOSEFfRU5DQVBdCQk9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sCiAJW05IQV9GREJdCQk9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LAomIzQzOwlbTkhBX0ZEQl9QT1JUXQkJPSB7IC50eXBlID0gTkxBX1UxNiB9LAogCVtOSEFfUkVTX0dST1VQXQkJPSB7IC50eXBlID0gTkxBX05FU1RFRCB9LAogCVtOSEFfSFdfU1RBVFNfRU5BQkxFXQk9IE5MQV9QT0xJQ1lfTUFYKE5MQV9VMzIsIHRydWUpLAogfTsKQEAgLTk1Niw2ICYjNDM7OTU3LDkgQEAgc3RhdGljIGludCBuaF9maWxsX25vZGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5leHRob3AgKm5oLAogCX0gZWxzZSBpZiAobmhpLSZndDtmZGJfbmgpIHsKIAkJaWYgKG5sYV9wdXRfZmxhZyhza2IsIE5IQV9GREIpKQogCQkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiYjNDM7CQlpZiAobmhpLSZndDtmZGJfcG9ydCAmYW1wOyZhbXA7CiYjNDM7CQkgICAgbmxhX3B1dF9iZTE2KHNrYiwgTkhBX0ZEQl9QT1JULCBuaGktJmd0O2ZkYl9wb3J0KSkKJiM0MzsJCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAl9IGVsc2UgewogCQljb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2OwogCkBAIC0xMDU1LDYgJiM0MzsxMDU5LDkgQEAgc3RhdGljIHNpemVfdCBuaF9ubG1zZ19zaXplX3NpbmdsZShzdHJ1Y3QgbmV4dGhvcCAqbmgpCiAJCWJyZWFrOwogCX0KIAomIzQzOwlpZiAobmhpLSZndDtmZGJfbmgpCiYjNDM7CQlzeiAmIzQzOz0gbmxhX3RvdGFsX3NpemUoMik7CS8qIE5IQV9GREJfUE9SVCAqLwomIzQzOwogCWlmIChuaGktJmd0O2ZpYl9uaGMubmhjX2x3dHN0YXRlKSB7CiAJCXN6ICYjNDM7PSBsd3R1bm5lbF9nZXRfZW5jYXBfc2l6ZShuaGktJmd0O2ZpYl9uaGMubmhjX2x3dHN0YXRlKTsKIAkJc3ogJiM0Mzs9IG5sYV90b3RhbF9zaXplKDIpOyAgLyogTkhBX0VOQ0FQX1RZUEUgKi8KQEAgLTI5NTYsOCAmIzQzOzI5NjMsMTAgQEAgc3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuaF9jb25maWcgKmNmZywKIAluaGktJmd0O2ZhbWlseSA9IGNmZy0mZ3Q7bmhfZmFtaWx5OwogCW5oaS0mZ3Q7ZmliX25oYy5uaGNfc2NvcGUgPSBSVF9TQ09QRV9MSU5LOwogCi0JaWYgKGNmZy0mZ3Q7bmhfZmRiKQomIzQzOwlpZiAoY2ZnLSZndDtuaF9mZGIpIHsKIAkJbmhpLSZndDtmZGJfbmggPSAxOwomIzQzOwkJbmhpLSZndDtmZGJfcG9ydCA9IGNmZy0mZ3Q7bmhfZmRiX3BvcnQ7CiYjNDM7CX0KIAogCWlmIChjZmctJmd0O25oX2JsYWNraG9sZSkgewogCQluaGktJmd0O3JlamVjdF9uaCA9IDE7CkBAIC0zMTQ3LDYgJiM0MzszMTU2LDE1IEBAIHN0YXRpYyBpbnQgcnRtX3RvX25oX2NvbmZpZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsCiAJCWNmZy0mZ3Q7bmhfZmRiID0gbmxhX2dldF9mbGFnKHRiW05IQV9GREJdKTsKIAl9CiAKJiM0MzsJaWYgKHRiW05IQV9GREJfUE9SVF0pIHsKJiM0MzsJCWlmICghdGJbTkhBX0ZEQl0gfHwgIXRiW05IQV9HQVRFV0FZXSkgewomIzQzOwkJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywKJiM0MzsJCQkJICAgICAgICYjMzQ7RkRCIHBvcnQgY2FuIG9ubHkgYmUgc2V0IG9uIGZkYiBuZXh0aG9wcyB0aGF0IGhhdmUgYSBnYXRld2F5JiMzNDspOwomIzQzOwkJCWdvdG8gb3V0OwomIzQzOwkJfQomIzQzOwkJY2ZnLSZndDtuaF9mZGJfcG9ydCA9IG5sYV9nZXRfYmUxNih0YltOSEFfRkRCX1BPUlRdKTsKJiM0MzsJfQomIzQzOwogCWlmICh0YltOSEFfR1JPVVBdKSB7CiAJCWlmIChuaG0tJmd0O25oX2ZhbWlseSAhPSBBRl9VTlNQRUMpIHsKIAkJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywgJiMzNDtJbnZhbGlkIGZhbWlseSBmb3IgZ3JvdXAmIzM0Oyk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUKaW5kZXggNzA4ZDk2MGFlMDdkNWIuLmMwNmViNDkyN2NkOWNiIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlCkBAIC0zNiw2ICYjNDM7MzYsNyBAQCBURVNUX1BST0dTIDo9IFwKIAlmaWJfbmV4dGhvcF9tdWx0aXByZWZpeC5zaCBcCiAJZmliX25leHRob3Bfbm9uZ3cuc2ggXAogCWZpYl9uZXh0aG9wcy5zaCBcCiYjNDM7CWZpYl9uZXh0aG9wc19mZGJfcG9ydC5zaCBcCiAJZmliX3J1bGVfdGVzdHMuc2ggXAogCWZpYl90ZXN0cy5zaCBcCiAJZmluX2Fja19sYXQuc2ggXApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZpYl9uZXh0aG9wc19mZGJfcG9ydC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9maWJfbmV4dGhvcHNfZmRiX3BvcnQuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjhiNDAxYzZkMjRhMTRmCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZpYl9uZXh0aG9wc19mZGJfcG9ydC5zaApAQCAtMCwwICYjNDM7MSw3OCBAQAomIzQzOyMhL2Jpbi9iYXNoCiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyMKJiM0MzsjIENvbnRyb2wtcGxhbmUgc2VsZnRlc3QgZm9yIHBlci1uZXh0aG9wIFZYTEFOIGZkYiBkZXN0aW5hdGlvbiBwb3J0CiYjNDM7IyAoTkhBX0ZEQl9QT1JUKS4gIFZlcmlmaWVzIHRoZSBhY2NlcHQvcmVqZWN0IHJ1bGVzIGFuZCB0aGUgZHVtcCByb3VuZHRyaXAuCiYjNDM7IyBObyBkYXRhcGF0aCB0cmFmZmljIGhlcmUgLS0gc2VlIHRlc3RzL2ludGVnL3Z4bGFuLWZkYi1wb3J0LWludGVnLnNoIGZvciB0aGUKJiM0MzsjIHJlYWwgZm9yd2FyZGluZyB0ZXN0LgomIzQzOyMKJiM0MzsjIFJlcXVpcmVzOiBwYXRjaGVkIGtlcm5lbCAoTkhBX0ZEQl9QT1JUKSBhbmQgcGF0Y2hlZCBpcHJvdXRlMiAodGhlICYjMzQ7cG9ydCYjMzQ7CiYjNDM7IyBrZXl3b3JkIG9uICYjMzQ7aXAgbmV4dGhvcCAuLi4gZmRiJiMzNDspLiAgU0tJUHMgY2xlYW5seSBvdGhlcndpc2UuCiYjNDM7CiYjNDM7c2V0IC11CiYjNDM7CiYjNDM7a3NmdF9za2lwPTQKJiM0MztOUz0mIzM0O25oZmRicG9ydC0kJCYjMzQ7CiYjNDM7SVA9JiMzNDtpcCAtbmV0bnMgJE5TJiMzNDsKJiM0MztyZXQ9MAomIzQzOwomIzQzO2xvZ190ZXN0KCkgewkjICQxIGFjdHVhbF9yYyAgJDIgZXhwZWN0ZWRfcmMgICQzIG5hbWUKJiM0MzsJaWYgWyAmIzM0OyQxJiMzNDsgPSAmIzM0OyQyJiMzNDsgXTsgdGhlbgomIzQzOwkJcHJpbnRmICYjMzQ7VEVTVDogJS01OHMgWyBPSyBdXG4mIzM0OyAmIzM0OyQzJiMzNDsKJiM0MzsJZWxzZQomIzQzOwkJcHJpbnRmICYjMzQ7VEVTVDogJS01OHMgW0ZBSUxdIChyYz0kMSB3YW50PSQyKVxuJiMzNDsgJiMzNDskMyYjMzQ7CiYjNDM7CQlyZXQ9MQomIzQzOwlmaQomIzQzO30KJiM0MzsKJiM0MzsjIHBhc3NlcyAocmV0dXJucyAwKSBpZmYgdGhlIGNvbW1hbmQgRkFJTFMKJiM0MztleHBlY3RfZmFpbCgpIHsKJiM0MzsJaWYgJiMzNDskQCYjMzQ7ICZndDsvZGV2L251bGwgMiZndDsmYW1wOzE7IHRoZW4gcmV0dXJuIDE7IGVsc2UgcmV0dXJuIDA7IGZpCiYjNDM7fQomIzQzOwomIzQzO2NsZWFudXAoKSB7IGlwIG5ldG5zIGRlbCAmIzM0OyROUyYjMzQ7IDImZ3Q7L2Rldi9udWxsOyB9CiYjNDM7CiYjNDM7Y29tbWFuZCAtdiBpcCAmZ3Q7L2Rldi9udWxsIDImZ3Q7JmFtcDsxIHx8IHsgZWNobyAmIzM0O1NLSVA6IGlwcm91dGUyIG5vdCBmb3VuZCYjMzQ7OyBleGl0ICRrc2Z0X3NraXA7IH0KJiM0MztpcCBuZXh0aG9wIGhlbHAgMiZndDsmYW1wOzEgfCBncmVwIC1xIGZkYiB8fCB7IGVjaG8gJiMzNDtTS0lQOiBubyBmZGIgbmV4dGhvcCBzdXBwb3J0JiMzNDs7IGV4aXQgJGtzZnRfc2tpcDsgfQomIzQzOwomIzQzO3RyYXAgY2xlYW51cCBFWElUCiYjNDM7Y2xlYW51cAomIzQzO2lwIG5ldG5zIGFkZCAmIzM0OyROUyYjMzQ7IHx8IHsgZWNobyAmIzM0O1NLSVA6IGNhbm5vdCBjcmVhdGUgbmV0bnMmIzM0OzsgZXhpdCAka3NmdF9za2lwOyB9CiYjNDM7JElQIGxpbmsgc2V0IGxvIHVwCiYjNDM7CiYjNDM7IyBQcm9iZSBmb3IgJiMzNDtwb3J0JiMzNDsga2V5d29yZCAmIzQzOyBrZXJuZWwgTkhBX0ZEQl9QT1JUIHN1cHBvcnQ7IFNLSVAgaWYgbWlzc2luZy4KJiM0MztpZiAhICRJUCBuZXh0aG9wIGFkZCBpZCAxIHZpYSAxMC4wLjAuMSBmZGIgcG9ydCA0NzkwIDImZ3Q7L2Rldi9udWxsOyB0aGVuCiYjNDM7CWVjaG8gJiMzNDtTS0lQOiAmIzM5O2lwIG5leHRob3AgLi4uIGZkYiBwb3J0JiMzOTsgdW5zdXBwb3J0ZWQgKG5lZWRzIHBhdGNoZWQga2VybmVsICYjNDM7IGlwcm91dGUyKSYjMzQ7CiYjNDM7CWV4aXQgJGtzZnRfc2tpcAomIzQzO2ZpCiYjNDM7bG9nX3Rlc3QgMCAwICYjMzQ7YWRkIGZkYiBuZXh0aG9wIHdpdGggcG9ydCYjMzQ7CiYjNDM7CiYjNDM7IyBEdW1wIHJvdW5kdHJpcCBtdXN0IGVjaG8gdGhlIHBvcnQgYmFjay4KJiM0MzskSVAgbmV4dGhvcCBzaG93IGlkIDEgfCBncmVwIC1xdyAmIzM0O3BvcnQgNDc5MCYjMzQ7CiYjNDM7bG9nX3Rlc3QgJD8gMCAmIzM0O2R1bXAgc2hvd3MgZmRiIHBvcnQgNDc5MCYjMzQ7CiYjNDM7CiYjNDM7IyBSZWplY3Q6IHBvcnQgb24gYSByb3V0ZWQgKG5vbi1mZGIpIG5leHRob3AuCiYjNDM7ZXhwZWN0X2ZhaWwgJElQIG5leHRob3AgYWRkIGlkIDIgdmlhIDEwLjAuMC4xIGRldiBsbyBwb3J0IDQ3OTAKJiM0Mztsb2dfdGVzdCAkPyAwICYjMzQ7cmVqZWN0IHBvcnQgb24gbm9uLWZkYiBuZXh0aG9wJiMzNDsKJiM0MzsKJiM0MzsjIFJlamVjdDogZmRiIHBvcnQgd2l0aG91dCBhIGdhdGV3YXkuCiYjNDM7ZXhwZWN0X2ZhaWwgJElQIG5leHRob3AgYWRkIGlkIDMgZmRiIHBvcnQgNDc5MAomIzQzO2xvZ190ZXN0ICQ/IDAgJiMzNDtyZWplY3QgZmRiIHBvcnQgd2l0aG91dCBnYXRld2F5JiMzNDsKJiM0MzsKJiM0MzsjIFRoZSBIQSBjYXNlOiBhIGdyb3VwIHdob3NlIGxlZ3Mgc2hhcmUgdGhlIGdhdGV3YXkgYnV0IGRpZmZlciBpbiBwb3J0LgomIzQzOyRJUCBuZXh0aG9wIGFkZCBpZCAxMCB2aWEgMTAuMC4wLjEgZmRiIHBvcnQgNDc4OSAmYW1wOyZhbXA7IFwKJiM0MzskSVAgbmV4dGhvcCBhZGQgaWQgMTEgdmlhIDEwLjAuMC4xIGZkYiBwb3J0IDU3ODkgJmFtcDsmYW1wOyBcCiYjNDM7JElQIG5leHRob3AgYWRkIGlkIDEwMCBncm91cCAxMC8xMSBmZGIKJiM0Mztsb2dfdGVzdCAkPyAwICYjMzQ7YWRkIGZkYiBuZXh0aG9wIGdyb3VwIHdpdGggZGlmZmVyaW5nIHBvcnRzJiMzNDsKJiM0MzsKJiM0MzsjIEEgZmRiIG5leHRob3Agd2l0aG91dCBhIHBvcnQgbXVzdCBOT1QgZW1pdCBvbmUgKGJhY2t3YXJkIGNvbXBhdCkuCiYjNDM7JElQIG5leHRob3AgYWRkIGlkIDIwIHZpYSAxMC4wLjAuMSBmZGIKJiM0MzskSVAgbmV4dGhvcCBzaG93IGlkIDIwIHwgZ3JlcCAtcXcgJiMzNDtwb3J0JiMzNDsKJiM0Mztsb2dfdGVzdCAkPyAxICYjMzQ7ZmRiIG5leHRob3Agd2l0aG91dCBwb3J0IG9taXRzIE5IQV9GREJfUE9SVCYjMzQ7CiYjNDM7CiYjNDM7aWYgWyAkcmV0IC1lcSAwIF07IHRoZW4KJiM0MzsJZWNobyAmIzM0O1BBU1M6IGFsbCBOSEFfRkRCX1BPUlQgY29udHJvbC1wbGFuZSBjaGVja3MmIzM0OwomIzQzO2Vsc2UKJiM0MzsJZWNobyAmIzM0O0ZBSUw6IG9uZSBvciBtb3JlIE5IQV9GREJfUE9SVCBjaGVja3MgZmFpbGVkJiMzNDsKJiM0MztmaQomIzQzO2V4aXQgJHJldAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwOToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDkzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVlhMQU4gRkRCIE5leHRob3AgUGF0Y2gqKgoKT2theSwgc28gd2UmIzM5O3ZlIGdvdCBhIG5ldyBwYXRjaCBoZXJlLiBJdCYjMzk7cyBhZGRpbmcgYE5IQV9GREJfUE9SVGAsIGEgbmV3IGZlYXR1cmUgZm9yIEZEQiBuZXh0aG9wcywgc3BlY2lmaWNhbGx5IGZvciB0aGluZ3MgbGlrZSBWWExBTi4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCDigJMgd2UmIzM5O3JlIGdpdmluZyB0aGUgdXNlciB0aGUgYWJpbGl0eSB0byBzZXQgYSBVRFAgZGVzdGluYXRpb24gcG9ydCBmb3IgdGhlc2UgbmV4dGhvcHMuIFRoaXMgaXMgZ29vZDsgbW9yZSBncmFudWxhciBjb250cm9sIGlzIGFsd2F5cyBhIHBsdXMuCgpUaGUgcGF0Y2ggaXRzZWxmIHRvdWNoZXMgc29tZSBrZXkgYXJlYXM6IGBpbmNsdWRlL25ldC9uZXh0aG9wLmhgLCBgaW5jbHVkZS9uZXQvdnhsYW4uaGAsIGBpbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oYCwgYW5kIGBuZXQvaXB2NC9uZXh0aG9wLmNgLCB3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgZnVuY3Rpb25hbGl0eS4gUGx1cywgd2UgZ2V0IGEgc2VsZnRlc3QsIHdoaWNoIGlzIGFic29sdXRlbHkgY3J1Y2lhbC4gR290dGEgbWFrZSBzdXJlIHRoaXMgc3R1ZmYgaXMgYmVoYXZpbmcgYXMgZXhwZWN0ZWQsIGFuZCB0ZXN0IGNvdmVyYWdlIGlzIGtleSBmb3IgbmV0d29ya2luZy4KCk5vdywgYmVmb3JlIEkgZGlnIGludG8gdGhlIGNvZGUgaXRzZWxmLCBJIHNob3VsZCBmaWd1cmUgb3V0IHRoZSBidWlsZCBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cyBmb3IgdGVzdGluZy4gVGhpcyBmZWF0dXJlIGFmZmVjdHMgYG5ldC9pcHY0L25leHRob3AuY2AgYW5kIGBpbmNsdWRlL25ldC92eGxhbi5oYCBwcmltYXJpbHkuIExldCYjMzk7cyB0aGluay4uLmBuZXQvaXB2NC9uZXh0aG9wLmNgLi4uaXMgdGhhdCBkZXBlbmRlbnQgb24gYENPTkZJR19JUF9ST1VURV9NVUxUSVBBVEhgIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBBY3R1YWxseSwgSSB0aGluayB0aGF0JiMzOTtzIGNvbXBpbGVkIHVuY29uZGl0aW9uYWxseSBmb3IgSVB2NCwgaXNuJiMzOTt0IGl0PyBCZXR0ZXIgZG91YmxlLWNoZWNrIHRoZSBgbmV0L2lwdjQvTWFrZWZpbGVgIGp1c3QgdG8gYmUgY2VydGFpbi4gSSBkb24mIzM5O3Qgd2FudCB0byB3YXN0ZSB0aW1lIGNvbmZpZ3VyaW5nIHNvbWV0aGluZyB0aGF0JiMzOTtzIGFscmVhZHkgZW5hYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwOToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXh0aG9wLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxuLS1cbm5ldC9pcHY0L01ha2VmaWxlLTE2LVx0ICAgICBpbmV0X2ZyYWdtZW50Lm8gcGluZy5vIGlwX3R1bm5lbF9jb3JlLm8gZ3JlX29mZmxvYWQubyBcXFxubmV0L2lwdjQvTWFrZWZpbGU6MTc6XHQgICAgIG1ldHJpY3MubyBuZXRsaW5rLm8gbmV4dGhvcC5vIHVkcF90dW5uZWxfc3R1Yi5vXG5uZXQvaXB2NC9NYWtlZmlsZS0xOC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwOToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODAxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUsIG15IGluaXRpYWwgdGhvdWdodCBpczoKCioqRXhhbWluaW5nIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uIGluIE5ldHdvcmtpbmcgQ29kZSoqCgpBbHJpZ2h0LCBzbyBgbmV4dGhvcC5vYCBpcyBhbHdheXMgYnVpbHQgZm9yIElQdjQuIE1ha2VzIHNlbnNlLCBpdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIHJvdXRpbmcuIE5vdywgd2hhdCYjMzk7cyB0aGUgZGVhbCB3aXRoIGB2eGxhbi5oYD8gTXkgZ3V0IHNheXMgdGhhdCYjMzk7cyBsaWtlbHkgdGllZCB0byB0aGUgYENPTkZJR19WWExBTmAgY29uZmlndXJhdGlvbiBvcHRpb24sIHJpZ2h0PyBZZWFoLCB0aGF0IHJpbmdzIGEgYmVsbC4gVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvdnhsYW4vTWFrZWZpbGVgIGZpbGUuIEl0JiMzOTtzIHRoZSBNYWtlZmlsZSB0aGF0IHRlbGxzIHRoZSBrZXJuZWwgd2hhdCB0byBpbmNsdWRlLiBJIGNvdWxkIGFsc28gc2tpbSB0aGUgZGlyZWN0b3J5IGl0c2VsZiBidXQgdGhlIE1ha2VmaWxlIHdpbGwgZ2l2ZSBhIGRlZmluaXRpdmUgYW5zd2VyLiBJJiMzOTtsbCBnZXQgdGhlIGFuc3dlciBpbW1lZGlhdGVseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwOToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92eGxhbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTI2NTA9c3RhdGljIHZvaWQgdnhsYW5feG1pdF9uaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjYzLVx0XHRnb3RvIGRyb3A7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjY2NDpcdGRvX3htaXQgPSB2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3QobmgsIGhhc2gsIFx1MDAyNm5oX3Jkc3QpO1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2NjUtXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTI2ODA9c3RhdGljIG5ldGRldl90eF90IHZ4bGFuX3htaXRfbmhpZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjk3LVx0fVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI2OTg6XHRkb194bWl0ID0gdnhsYW5fZmRiX25oX3BhdGhfc2VsZWN0KG5oLCBoYXNoLCBcdTAwMjZuaF9yZHN0KTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjk5LVx0cmN1X3JlYWRfdW5sb2NrKCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDk6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM2MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5leHRob3AgYW5kIFZYTEFOIEludGVncmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IHNlZSB0aGF0IGB2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3RgIGlzIHVzZWQgaW4gdGhlIFZYTEFOIGNvcmUsIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jYC4gIFRoYXQgbWVhbnMgYENPTkZJR19WWExBTmAgaXMgYSBwcmVyZXF1aXNpdGUsIHdoaWNoIGlzIGV4cGVjdGVkLgoKTm93LCBsZXQmIzM5O3MgYnJvYWRlbiB0aGUgc2NvcGUuIFRoaXMgcGF0Y2ggYWxzbyB0b3VjaGVzIGBuZXQvaXB2NC9uZXh0aG9wLmNgLiAgVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBhcmUgYG5oX2ZpbGxfbm9kZWAsIGBuaF9ubG1zZ19zaXplX3NpbmdsZWAsIGBuZXh0aG9wX2NyZWF0ZWAsIGFuZCBgcnRtX3RvX25oX2NvbmZpZ2AuIFRoZXNlIGFyZSBhbGwgcmVsYXRlZCB0byB0aGUgbmV4dGhvcCBuZXRsaW5rIGludGVyZmFjZSwgc28gdGhhdCYjMzk7cyBhIGtleSBhcmVhIHRvIGV4cGxvcmUuCgpJIHdhbnQgdG8gZGl2ZSBkZWVwZXIgaW50byBgbmV4dGhvcF9jcmVhdGVgIGFuZCBgcnRtX3RvX25oX2NvbmZpZ2Agd2l0aGluIGBuZXQvaXB2NC9uZXh0aG9wLmNgLiBUaGV5JiMzOTtyZSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIGludm9sdmVkIGluIGNyZWF0aW5nIGFuZCBjb25maWd1cmluZyBuZXh0aG9wcyB2aWEgbmV0bGluaywgd2hpY2ggaXMgdGhlIGhlYXJ0IG9mIGhvdyB0aGlzIHdvcmtzLgoKVGhlIGZvY3VzIHN5bWJvbHMgaGVyZSBhcmUgZ29pbmcgdG8gYmUgYG5leHRob3BfY3JlYXRlYCwgYHJ0bV90b19uaF9jb25maWdgLCBgbmhfZmlsbF9ub2RlYCwgYG5oX25sbXNnX3NpemVfc2luZ2xlYCDigJMgdGhleSYjMzk7cmUgYWxsIGRpcmVjdGx5IGludm9sdmVkIGluIG5ldGxpbmsgaW50ZXJhY3Rpb24gZm9yIG5leHRob3BzLiAgVGhlbiwgd2UgYWxzbyBoYXZlIGB2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3RgLCB3aGljaCBpcyBhIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24gZGVmaW5lZCBpbiBgaW5jbHVkZS9uZXQvdnhsYW4uaGAuIEJlY2F1c2UgaXQmIzM5O3MgaW5saW5lLCBpdCYjMzk7cyBhY3R1YWxseSBpbmxpbmVkIGludG8gdGhlIHR3byBmdW5jdGlvbnMgdGhhdCB1c2UgaXQ6IGB2eGxhbl94bWl0X25oYCBhbmQgYHZ4bGFuX3htaXRfbmhpZGAuCgpUaGVyZWZvcmUsIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgaWYgYHZ4bGFuX3htaXRfbmhgIGFuZCBgdnhsYW5feG1pdF9uaGlkYCBhcmUgZ29vZCBmb2N1cyBzeW1ib2xzIHNpbmNlIHRob3NlIGFyZSB0aGUgcGxhY2VzIHdoZXJlIGB2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3RgIGlzIGFjdHVhbGx5IGdldHRpbmcgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwOToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2eGxhbl94bWl0X25oJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0yMzQ0PXZvaWQgdnhsYW5feG1pdF9vbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY0OS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjUwOnN0YXRpYyB2b2lkIHZ4bGFuX3htaXRfbmgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjUxLVx0XHRcdCAgc3RydWN0IHZ4bGFuX2ZkYiAqZiwgX19iZTMyIHZuaSwgYm9vbCBkaWRfcnNjKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjc5LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI2ODA6c3RhdGljIG5ldGRldl90eF90IHZ4bGFuX3htaXRfbmhpZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2ODEtXHRcdFx0XHQgICB1MzIgbmhpZCwgX19iZTMyIHZuaSlcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MjcyNT1zdGF0aWMgbmV0ZGV2X3R4X3QgdnhsYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzcyLVx0aWYgKG5oaWQpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mjc3MzpcdFx0cmV0dXJuIHZ4bGFuX3htaXRfbmhpZChza2IsIGRldiwgbmhpZCwgdm5pKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzc0LVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODE4LVx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihmLVx1MDAzZW5oKSkge1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI4MTk6XHRcdHZ4bGFuX3htaXRfbmgoc2tiLCBkZXYsIGYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjgyMC1cdFx0XHQgICAgICAodm5pID8gOiB2eGxhbi1cdTAwM2VkZWZhdWx0X2RzdC5yZW1vdGVfdm5pKSwgZGlkX3JzYyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDk6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzY1NgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDI5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVlhMQU4gTmV4dGhvcCBUcmFuc21pc3Npb24gUGF0aCoqCgpPa2F5LCBzbyBJJiMzOTttIGhvbmluZyBpbiBvbiB0aGUga2V5IHN5bWJvbHMgZm9yIHRoaXMgaW52ZXN0aWdhdGlvbjogYHZ4bGFuX3htaXRfbmhgIGFuZCBgdnhsYW5feG1pdF9uaGlkYC4gVGhlc2UgYXJlIG15IHByaW1hcnkgZm9jdXMgcG9pbnRzLiBJIHNob3VsZCBhbHNvIGtlZXAgYW4gZXllIG9uIGBydG1fdG9fbmhfY29uZmlnYCwgYG5leHRob3BfY3JlYXRlYCwgYG5oX2ZpbGxfbm9kZWAsIGFuZCBgbmhfbmxtc2dfc2l6ZV9zaW5nbGVgLgoKTm93LCBsZXQmIzM5O3MgZGV0ZXJtaW5lIGlmIGBuZXh0aG9wX2NyZWF0ZWAgaXMgcGVyZm9ybWFuY2UgY3JpdGljYWwuIFRoaW5raW5nIHRocm91Z2ggaXQsIGl0JiMzOTtzIHRyaWdnZXJlZCBkdXJpbmcgbmV4dGhvcCBjcmVhdGlvbiB0aHJvdWdoIG5ldGxpbmssIHdoaWNoIGZpcm1seSBwbGFjZXMgaXQgaW4gdGhlIGNvbnRyb2wgcGF0aC4gYHJ0bV90b19uaF9jb25maWdgIGlzIGFsc28gY29udHJvbCBwbGFuZS4gYG5oX2ZpbGxfbm9kZWAsIGludm9sdmVkIGluIG5leHRob3AgZHVtcGluZywgY2xlYXJseSBiZWxvbmdzIHRvIHRoZSBjb250cm9sIHBhdGggYXMgd2VsbC4gQW5kIGBuaF9ubG1zZ19zaXplX3NpbmdsZWAsIGFsc28gY29udHJvbCBwbGFuZS4KCkNydWNpYWxseSwgYHZ4bGFuX3htaXRfbmhgIGFuZCBgdnhsYW5feG1pdF9uaGlkYCBhcmUgZGF0YXBhdGggZnVuY3Rpb25zLCBhbmQgdGhleSYjMzk7cmUgc3BlY2lmaWNhbGx5IHRpZWQgdG8gbmV4dGhvcC1iYXNlZCBWWExBTiB0cmFuc21pc3Npb24sIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJJiMzOTttIGxvb2tpbmcgdG8gb3B0aW1pemUuCgpCZWZvcmUgSSBnbyBmdXJ0aGVyLCBsZXQmIzM5O3MgbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG5lZWQgYW55IGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGVuYWJsZWQuIFRoZSBvYnZpb3VzIG9uZSBpcyBgQ09ORklHX1ZYTEFOYCwgcmVxdWlyZWQgZm9yIHRoZSBkYXRhcGF0aCBmdW5jdGlvbnMuIEkgc2hvdWxkIGFsc28gdGhpbmsgYWJvdXQgYENPTkZJR19JUF9ST1VURV9NVUxUSVBBVEhgLiBOZXh0aG9wcyBhcmUgcHJldHR5IGZ1bmRhbWVudGFsIHRvIElQdjQgcm91dGluZywgc28gSSYjMzk7bGwgZG91YmxlLWNoZWNrIGBuZXQvaXB2NC9LY29uZmlnYCBqdXN0IHRvIGJlIGNlcnRhaW4gdGhhdCBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBwZXJ0aW5lbnQgdG8gbmV4dGhvcCBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDk6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXh0aG9wJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA5OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzNDUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSVB2NCBOZXh0IEhvcCBJbnZlc3RpZ2F0aW9uKioKClJpZ2h0LCB0aGlzIHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQg4oCTIGl0JiMzOTtzIGp1c3Qgc3RhbmRhcmQgSVB2NCBiZWhhdmlvciB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLiBObyBtYWpvciBzdXJwcmlzZXMgdGhlcmUuIEJ1dCwgZ2l2ZW4gdGhlIHJlY2VudCBtb2RpZmljYXRpb25zLCBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBrZXJuZWwgY29kZSwgc3BlY2lmaWNhbGx5LCBgbmV0L2lwdjQvbmV4dGhvcC5jYC4gSSBuZWVkIHRvIG1ldGljdWxvdXNseSBjaGVjayBmb3IgYW55IHByZXByb2Nlc3NvciBkaXJlY3RpdmVzLCBhbnkgYCNpZmRlZmAgYmxvY2tzLCBzdXJyb3VuZGluZyB0aGlzIHBhcnRpY3VsYXIgY29kZSBzZWN0aW9uLiBUaGUgZ29hbCBpcyB0byBpZGVudGlmeSBpZiB0aGUgY2hhbmdlcyBhcmUgY29uZGl0aW9uYWxseSBjb21waWxlZCBvciBpZiB0aGV5JiMzOTtyZSB1bml2ZXJzYWxseSBhcHBsaWVkLiBVbmRlcnN0YW5kaW5nIHRoZSBzY29wZSBvZiB0aGUgbW9kaWZpY2F0aW9ucyBpcyBwYXJhbW91bnQuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwOToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtOSEFfRkRCX1BPUlQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXh0aG9wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV4dGhvcC5jPTMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBydG1fbmhfcG9saWN5X25ld1tdID0ge1xuLS1cbm5ldC9pcHY0L25leHRob3AuYy00MS1cdFtOSEFfRkRCXVx0XHQ9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LFxubmV0L2lwdjQvbmV4dGhvcC5jOjQyOlx0W05IQV9GREJfUE9SVF1cdFx0PSB7IC50eXBlID0gTkxBX1UxNiB9LFxubmV0L2lwdjQvbmV4dGhvcC5jLTQzLVx0W05IQV9SRVNfR1JPVVBdXHRcdD0geyAudHlwZSA9IE5MQV9ORVNURUQgfSxcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmM9OTE1PXN0YXRpYyBpbnQgbmhfZmlsbF9ub2RlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXh0aG9wICpuaCxcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtOTYwLVx0XHRpZiAobmhpLVx1MDAzZWZkYl9wb3J0IFx1MDAyNlx1MDAyNlxubmV0L2lwdjQvbmV4dGhvcC5jOjk2MTpcdFx0ICAgIG5sYV9wdXRfYmUxNihza2IsIE5IQV9GREJfUE9SVCwgbmhpLVx1MDAzZWZkYl9wb3J0KSlcbm5ldC9pcHY0L25leHRob3AuYy05NjItXHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jPTEwMzk9c3RhdGljIHNpemVfdCBuaF9ubG1zZ19zaXplX3NpbmdsZShzdHJ1Y3QgbmV4dGhvcCAqbmgpXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTEwNjItXHRpZiAobmhpLVx1MDAzZWZkYl9uaClcbm5ldC9pcHY0L25leHRob3AuYzoxMDYzOlx0XHRzeiAmIzQzOz0gbmxhX3RvdGFsX3NpemUoMik7XHQvKiBOSEFfRkRCX1BPUlQgKi9cbm5ldC9pcHY0L25leHRob3AuYy0xMDY0LVxuLS1cbm5ldC9pcHY0L25leHRob3AuYz0zMTAyPXN0YXRpYyBpbnQgcnRtX3RvX25oX2NvbmZpZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTMxNTgtXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzE1OTpcdGlmICh0YltOSEFfRkRCX1BPUlRdKSB7XG5uZXQvaXB2NC9uZXh0aG9wLmMtMzE2MC1cdFx0aWYgKCF0YltOSEFfRkRCXSB8fCAhdGJbTkhBX0dBVEVXQVldKSB7XG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTMxNjQtXHRcdH1cbm5ldC9pcHY0L25leHRob3AuYzozMTY1Olx0XHRjZmctXHUwMDNlbmhfZmRiX3BvcnQgPSBubGFfZ2V0X2JlMTYodGJbTkhBX0ZEQl9QT1JUXSk7XG5uZXQvaXB2NC9uZXh0aG9wLmMtMzE2Ni1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDk6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTIxNwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDEzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqQW5hbHl6aW5nIFZYTEFOIENvbmZpZ3VyYXRpb24gSW50ZXJhY3Rpb25zKioKCkFscmlnaHQsIG5vIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzLCBzcGVjaWZpY2FsbHkgYCNpZmRlZmBzLCBhcmUgYmVpbmcgdXNlZCB0byBjb25kaXRpb25hbGx5IGluY2x1ZGUgY29kZSByZWxhdGVkIHRvIGBOSEFfRkRCX1BPUlRgLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdyDigJMgZmV3ZXIgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gZ290Y2hhcy4gVGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyBzaW1wbHkgYFZYTEFOYC4KCk5vdywgSSBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIHNwZWNpZmljIHN5bWJvbHM6IGBydG1fdG9fbmhfY29uZmlnYCwgYG5leHRob3BfY3JlYXRlYCwgYG5oX2ZpbGxfbm9kZWAsIGBuaF9ubG1zZ19zaXplX3NpbmdsZWAsIGB2eGxhbl94bWl0X25oYCwgYW5kIGB2eGxhbl94bWl0X25oaWRgLiBUaGVzZSBhcHBlYXIgdG8gYmUgdGhlIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gdGhlIFZYTEFOIG5leHQtaG9wIGNvbmZpZ3VyYXRpb24gcHJvY2Vzcy4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdW5kZXJzdGFuZGluZyBob3cgdGhleSBpbnRlcmFjdCwgaG93IG5leHQgaG9wcyBhcmUgY3JlYXRlZCwgZmlsbGVkLCBhbmQgdHJhbnNtaXR0ZWQuCgpXYWl0IGEgc2Vjb25kLi4uIGEgcXVpY2sgcmVhbGl0eSBjaGVjay4gYHZ4bGFuX3htaXRfbmhgIGFuZCBgdnhsYW5feG1pdF9uaGlkYCBhcmUgKnN0YXRpYyogZnVuY3Rpb25zLCBhbmQgSSYjMzk7bSBwcmV0dHkgc3VyZSB0aGV5IGFyZSBpbiBgZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jYC4gSSBzaG91bGQgdmVyaWZ5IHRob3NlIG5hbWVzIHRvIG1ha2Ugc3VyZS4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhhdCBJJiMzOTttIHJlZmVyZW5jaW5nIHRoZSBjb3JyZWN0IGZ1bmN0aW9uIGRlZmluaXRpb25zLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoZXNlIGFyZSBpbXBvcnRhbnQsIGJ1dCBzdGF0aWMgZnVuY3Rpb25zIGNhbiBpbnRyb2R1Y2UgdW5leHBlY3RlZCBiZWhhdmlvciBpZiBub3QgYWNjb3VudGVkIGZvciBjb3JyZWN0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA5OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Z4bGFuX3htaXRfbmgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTIzNDQ9dm9pZCB2eGxhbl94bWl0X29uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjQ5LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI2NTA6c3RhdGljIHZvaWQgdnhsYW5feG1pdF9uaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2NTEtXHRcdFx0ICBzdHJ1Y3QgdnhsYW5fZmRiICpmLCBfX2JlMzIgdm5pLCBib29sIGRpZF9yc2MpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2NzktXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjY4MDpzdGF0aWMgbmV0ZGV2X3R4X3QgdnhsYW5feG1pdF9uaGlkKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY4MS1cdFx0XHRcdCAgIHUzMiBuaGlkLCBfX2JlMzIgdm5pKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0yNzI1PXN0YXRpYyBuZXRkZXZfdHhfdCB2eGxhbl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI3NzItXHRpZiAobmhpZClcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNzczOlx0XHRyZXR1cm4gdnhsYW5feG1pdF9uaGlkKHNrYiwgZGV2LCBuaGlkLCB2bmkpO1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI3NzQtXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI4MTgtXHRpZiAocmN1X2FjY2Vzc19wb2ludGVyKGYtXHUwMDNlbmgpKSB7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjgxOTpcdFx0dnhsYW5feG1pdF9uaChza2IsIGRldiwgZixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODIwLVx0XHRcdCAgICAgICh2bmkgPyA6IHZ4bGFuLVx1MDAzZWRlZmF1bHRfZHN0LnJlbW90ZV92bmkpLCBkaWRfcnNjKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDk6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyMTIKCQkJCQkJCW91dHB1dDogMTQxCgkJCQkJCQl0aG91Z2h0czogMTE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGFzc2Vzc21lbnQgb2YgdGhpcyBwYXRjaCwgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIHdobyB1bmRlcnN0YW5kcyB0aGlzIGxvdy1sZXZlbCBuZXR3b3JraW5nIGNvZGU6CgoqKkFuYWx5emluZyB0aGUgUGF0Y2gmIzM5O3MgRnVuY3Rpb25hbGl0eSBhbmQgVGVzdGFiaWxpdHkqKgoKUmlnaHQsIHNvIHRoZXNlIGFyZSBjb25maXJtZWQgYXMgc3RhdGljIGZ1bmN0aW9ucywgd2hpY2ggaXMgZ29vZCB0byBrZWVwIGluIG1pbmQgZm9yIHNjb3BpbmcgYW5kIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuIE15IGluaXRpYWwgcXVlc3Rpb24gaXMgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IG5lZWQgdG8gYmUgY29uc2lkZXJlZC4gVGhlIHBhdGNoIGluY2x1ZGVzIGEgbmV3IHNlbGZ0ZXN0LCBgZmliX25leHRob3BzX2ZkYl9wb3J0LnNoYCwgd2hpY2ggaXMgYSBwb3NpdGl2ZSBzaWduLiBGdW5jdGlvbmFsbHksIHRoaXMgcGF0Y2ggbG9va3Mgc29saWQsIGFuZCBpdCYjMzk7cyBkZWZpbml0ZWx5IHNvbWV0aGluZyB0aGF0JiMzOTtzIHJpcGUgZm9yIGZ1enppbmcuIEdvb2QgdG8gc2VlIHRoZXkmIzM5O3JlIHRoaW5raW5nIGFib3V0IHRoYXQuCgpOb3csIGxldCYjMzk7cyBkcmlsbCBkb3duIHRvIHRoZSBjcml0aWNhbCBzeW1ib2xzIHRoZSBwYXRjaCBmb2N1c2VzIG9uLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZXNlIGFyZSB0aGUgY29ycmVjdCBvbmVzLiBFeGFtaW5pbmcgdGhlIGNvZGUsIEkgc2VlOgoKKiAgIGBydG1fdG9fbmhfY29uZmlnYAoqICAgYG5leHRob3BfY3JlYXRlYAoqICAgYG5oX2ZpbGxfbm9kZWAKKiAgIGB2eGxhbl94bWl0X25oYAoqICAgYHZ4bGFuX3htaXRfbmhpZGAKClllcCwgdGhlc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zLCBhbmQgdGhlc2UgY2hvaWNlcyBtYWtlIHNlbnNlIGdpdmVuIHdoYXQgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBwYXRjaCB0byBhZGRyZXNzLiBUaGF0JiMzOTtzIGEgZ29vZCBzZXQgb2YgZm9jdXMgcG9pbnRzIGZvciB0aGlzIHdvcmsuIE5vdyBJIGNhbiBtb3ZlIG9uIHRvIHRoZSBuZXh0IHNldCBvZiBjb2RlIGJsb2Nrcy4gTGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDk6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZYTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRtX3RvX25oX2NvbmZpZyYjMzQ7LAogICAgJiMzNDtuZXh0aG9wX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtuaF9maWxsX25vZGUmIzM0OywKICAgICYjMzQ7dnhsYW5feG1pdF9uaCYjMzQ7LAogICAgJiMzNDt2eGxhbl94bWl0X25oaWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBuZXRsaW5rIGF0dHJpYnV0ZSBOSEFfRkRCX1BPUlQgZm9yIGZkYiBuZXh0aG9wcywgbW9kaWZ5aW5nIG5leHRob3AgY3JlYXRpb24gYW5kIGR1bXBpbmcgbG9naWMsIGFzIHdlbGwgYXMgVlhMQU4gdHJhbnNtaXNzaW9uIHBhdGhzIHRvIHV0aWxpemUgdGhpcyBuZXcgcG9ydC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29ya2luZyBhbmQgVlhMQU4gZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWWExBTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0bV90b19uaF9jb25maWcmIzM0OywKICAgICYjMzQ7bmV4dGhvcF9jcmVhdGUmIzM0OywKICAgICYjMzQ7bmhfZmlsbF9ub2RlJiMzNDssCiAgICAmIzM0O3Z4bGFuX3htaXRfbmgmIzM0OywKICAgICYjMzQ7dnhsYW5feG1pdF9uaGlkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbmV0bGluayBhdHRyaWJ1dGUgTkhBX0ZEQl9QT1JUIGZvciBmZGIgbmV4dGhvcHMsIG1vZGlmeWluZyBuZXh0aG9wIGNyZWF0aW9uIGFuZCBkdW1waW5nIGxvZ2ljLCBhcyB3ZWxsIGFzIFZYTEFOIHRyYW5zbWlzc2lvbiBwYXRocyB0byB1dGlsaXplIHRoaXMgbmV3IHBvcnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmtpbmcgYW5kIFZYTEFOIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA5OjIwOjM1Ljc5MDcwOTU1OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NjcyOTU1OTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZYTEFOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnRtX3RvX25oX2NvbmZpZ1wiLFxuICAgIFwibmV4dGhvcF9jcmVhdGVcIixcbiAgICBcIm5oX2ZpbGxfbm9kZVwiLFxuICAgIFwidnhsYW5feG1pdF9uaFwiLFxuICAgIFwidnhsYW5feG1pdF9uaGlkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBuZXRsaW5rIGF0dHJpYnV0ZSBOSEFfRkRCX1BPUlQgZm9yIGZkYiBuZXh0aG9wcywgbW9kaWZ5aW5nIG5leHRob3AgY3JlYXRpb24gYW5kIGR1bXBpbmcgbG9naWMsIGFzIHdlbGwgYXMgVlhMQU4gdHJhbnNtaXNzaW9uIHBhdGhzIHRvIHV0aWxpemUgdGhpcyBuZXcgcG9ydC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29ya2luZyBhbmQgVlhMQU4gZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwOToyMDozNS43OTA3MTc0MzhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2Mzg2MTcwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDM1NjE2NjE2NzE2NmNlNDRiYzVkM2Q3MjYwOWRiNzAyZGJiY2UwMDFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMTcgMDk6MjA6MzMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV4dGhvcC5oIGIvaW5jbHVkZS9uZXQvbmV4dGhvcC5oXFxuaW5kZXggNTcyZTY5Y2RhNDc2NmQuLjdmYjYxMmE3MzA3ZjI1IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L25leHRob3AuaFxcbisrKyBiL2luY2x1ZGUvbmV0L25leHRob3AuaFxcbkBAIC0yOCw2ICsyOCw3IEBAIHN0cnVjdCBuaF9jb25maWcge1xcbiBcXHR1OFxcdFxcdG5oX3Byb3RvY29sO1xcbiBcXHR1OFxcdFxcdG5oX2JsYWNraG9sZTtcXG4gXFx0dThcXHRcXHRuaF9mZGI7XFxuK1xcdF9fYmUxNlxcdFxcdG5oX2ZkYl9wb3J0O1xcbiBcXHR1MzJcXHRcXHRuaF9mbGFncztcXG4gXFxuIFxcdGludFxcdFxcdG5oX2lmaW5kZXg7XFxuQEAgLTYzLDYgKzY0LDcgQEAgc3RydWN0IG5oX2luZm8ge1xcbiBcXHR1OFxcdFxcdFxcdGZhbWlseTtcXG4gXFx0Ym9vbFxcdFxcdFxcdHJlamVjdF9uaDtcXG4gXFx0Ym9vbFxcdFxcdFxcdGZkYl9uaDtcXG4rXFx0X19iZTE2XFx0XFx0XFx0ZmRiX3BvcnQ7XFxuIFxcbiBcXHR1bmlvbiB7XFxuIFxcdFxcdHN0cnVjdCBmaWJfbmhfY29tbW9uXFx0ZmliX25oYztcXG5AQCAtNTc0LDcgKzU3Niw4IEBAIHN0cnVjdCBmaWJfbmhfY29tbW9uICpuZXh0aG9wX2ZkYl9uaGMoc3RydWN0IG5leHRob3AgKm5oKVxcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBmaWJfbmhfY29tbW9uICpuZXh0aG9wX3BhdGhfZmRiX3Jlc3VsdChzdHJ1Y3QgbmV4dGhvcCAqbmgsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBpbnQgaGFzaClcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGludCBoYXNoLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgX19iZTE2ICpmZGJfcG9ydClcXG4ge1xcbiBcXHRzdHJ1Y3QgbmhfaW5mbyAqbmhpO1xcbiBcXHRzdHJ1Y3QgbmV4dGhvcCAqbmhwO1xcbkBAIC01ODMsNiArNTg2LDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmV4dGhvcF9wYXRoX2ZkYl9yZXN1bHQoc3RydWN0IG5leHRob3AgKm5oLFxcbiBcXHRpZiAodW5saWtlbHkoIW5ocCkpXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHRuaGkgPSByY3VfZGVyZWZlcmVuY2UobmhwLVxcdTAwM2VuaF9pbmZvKTtcXG4rXFx0aWYgKGZkYl9wb3J0KVxcbitcXHRcXHQqZmRiX3BvcnQgPSBuaGktXFx1MDAzZWZkYl9wb3J0O1xcbiBcXHRyZXR1cm4gXFx1MDAyNm5oaS1cXHUwMDNlZmliX25oYztcXG4gfVxcbiAjZW5kaWZcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvdnhsYW4uaCBiL2luY2x1ZGUvbmV0L3Z4bGFuLmhcXG5pbmRleCBkZmJhODk2OTVlZmNmYS4uZGU0MWIzNzQ2ODhmMjkgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvdnhsYW4uaFxcbisrKyBiL2luY2x1ZGUvbmV0L3Z4bGFuLmhcXG5AQCAtNTY3LDggKzU2Nyw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3Qoc3RydWN0IG5leHRob3AgKm5oLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IHZ4bGFuX3Jkc3QgKnJkc3QpXFxuIHtcXG4gXFx0c3RydWN0IGZpYl9uaF9jb21tb24gKm5oYztcXG4rXFx0X19iZTE2IGZkYl9wb3J0ID0gMDtcXG4gXFxuLVxcdG5oYyA9IG5leHRob3BfcGF0aF9mZGJfcmVzdWx0KG5oLCBoYXNoIFxcdTAwM2VcXHUwMDNlIDEpO1xcbitcXHRuaGMgPSBuZXh0aG9wX3BhdGhfZmRiX3Jlc3VsdChuaCwgaGFzaCBcXHUwMDNlXFx1MDAzZSAxLCBcXHUwMDI2ZmRiX3BvcnQpO1xcbiBcXHRpZiAodW5saWtlbHkoIW5oYykpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFxuQEAgLTU4Myw2ICs1ODQsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdnhsYW5fZmRiX25oX3BhdGhfc2VsZWN0KHN0cnVjdCBuZXh0aG9wICpuaCxcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4gXFxuK1xcdHJkc3QtXFx1MDAzZXJlbW90ZV9wb3J0ID0gZmRiX3BvcnQ7XFxuK1xcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L25leHRob3AuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9uZXh0aG9wLmhcXG5pbmRleCBiYzQ5YmFmNGEyNjdmMC4uZTU4N2JiZjNiODkwYTMgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L25leHRob3AuaFxcbisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9uZXh0aG9wLmhcXG5AQCAtODMsNiArODMsOSBAQCBlbnVtIHtcXG4gXFx0LyogdTMyOyByZWFkLW9ubHk7IHdoZXRoZXIgYW55IGRyaXZlciBjb2xsZWN0cyBIVyBzdGF0cyAqL1xcbiBcXHROSEFfSFdfU1RBVFNfVVNFRCxcXG4gXFxuK1xcdC8qIGJlMTY7IFVEUCBkZXN0aW5hdGlvbiBwb3J0IGZvciBhbiBmZGIgbmV4dGhvcCAoZS5nLiBWWExBTikgKi9cXG4rXFx0TkhBX0ZEQl9QT1JULFxcbitcXG4gXFx0X19OSEFfTUFYLFxcbiB9O1xcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvbmV4dGhvcC5jIGIvbmV0L2lwdjQvbmV4dGhvcC5jXFxuaW5kZXggNjIwNWJkNTdhYTg1MjAuLjViMjdjYzlhOTE5MWQ3IDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L25leHRob3AuY1xcbisrKyBiL25ldC9pcHY0L25leHRob3AuY1xcbkBAIC0zOSw2ICszOSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBydG1fbmhfcG9saWN5X25ld1tdID0ge1xcbiBcXHRbTkhBX0VOQ0FQX1RZUEVdXFx0PSB7IC50eXBlID0gTkxBX1UxNiB9LFxcbiBcXHRbTkhBX0VOQ0FQXVxcdFxcdD0geyAudHlwZSA9IE5MQV9ORVNURUQgfSxcXG4gXFx0W05IQV9GREJdXFx0XFx0PSB7IC50eXBlID0gTkxBX0ZMQUcgfSxcXG4rXFx0W05IQV9GREJfUE9SVF1cXHRcXHQ9IHsgLnR5cGUgPSBOTEFfVTE2IH0sXFxuIFxcdFtOSEFfUkVTX0dST1VQXVxcdFxcdD0geyAudHlwZSA9IE5MQV9ORVNURUQgfSxcXG4gXFx0W05IQV9IV19TVEFUU19FTkFCTEVdXFx0PSBOTEFfUE9MSUNZX01BWChOTEFfVTMyLCB0cnVlKSxcXG4gfTtcXG5AQCAtOTU2LDYgKzk1Nyw5IEBAIHN0YXRpYyBpbnQgbmhfZmlsbF9ub2RlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXh0aG9wICpuaCxcXG4gXFx0fSBlbHNlIGlmIChuaGktXFx1MDAzZWZkYl9uaCkge1xcbiBcXHRcXHRpZiAobmxhX3B1dF9mbGFnKHNrYiwgTkhBX0ZEQikpXFxuIFxcdFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbitcXHRcXHRpZiAobmhpLVxcdTAwM2VmZGJfcG9ydCBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgbmxhX3B1dF9iZTE2KHNrYiwgTkhBX0ZEQl9QT1JULCBuaGktXFx1MDAzZWZkYl9wb3J0KSlcXG4rXFx0XFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxuIFxcbkBAIC0xMDU1LDYgKzEwNTksOSBAQCBzdGF0aWMgc2l6ZV90IG5oX25sbXNnX3NpemVfc2luZ2xlKHN0cnVjdCBuZXh0aG9wICpuaClcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4gXFxuK1xcdGlmIChuaGktXFx1MDAzZWZkYl9uaClcXG4rXFx0XFx0c3ogKz0gbmxhX3RvdGFsX3NpemUoMik7XFx0LyogTkhBX0ZEQl9QT1JUICovXFxuK1xcbiBcXHRpZiAobmhpLVxcdTAwM2VmaWJfbmhjLm5oY19sd3RzdGF0ZSkge1xcbiBcXHRcXHRzeiArPSBsd3R1bm5lbF9nZXRfZW5jYXBfc2l6ZShuaGktXFx1MDAzZWZpYl9uaGMubmhjX2x3dHN0YXRlKTtcXG4gXFx0XFx0c3ogKz0gbmxhX3RvdGFsX3NpemUoMik7ICAvKiBOSEFfRU5DQVBfVFlQRSAqL1xcbkBAIC0yOTU2LDggKzI5NjMsMTAgQEAgc3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuaF9jb25maWcgKmNmZyxcXG4gXFx0bmhpLVxcdTAwM2VmYW1pbHkgPSBjZmctXFx1MDAzZW5oX2ZhbWlseTtcXG4gXFx0bmhpLVxcdTAwM2VmaWJfbmhjLm5oY19zY29wZSA9IFJUX1NDT1BFX0xJTks7XFxuIFxcbi1cXHRpZiAoY2ZnLVxcdTAwM2VuaF9mZGIpXFxuK1xcdGlmIChjZmctXFx1MDAzZW5oX2ZkYikge1xcbiBcXHRcXHRuaGktXFx1MDAzZWZkYl9uaCA9IDE7XFxuK1xcdFxcdG5oaS1cXHUwMDNlZmRiX3BvcnQgPSBjZmctXFx1MDAzZW5oX2ZkYl9wb3J0O1xcbitcXHR9XFxuIFxcbiBcXHRpZiAoY2ZnLVxcdTAwM2VuaF9ibGFja2hvbGUpIHtcXG4gXFx0XFx0bmhpLVxcdTAwM2VyZWplY3RfbmggPSAxO1xcbkBAIC0zMTQ3LDYgKzMxNTYsMTUgQEAgc3RhdGljIGludCBydG1fdG9fbmhfY29uZmlnKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0Y2ZnLVxcdTAwM2VuaF9mZGIgPSBubGFfZ2V0X2ZsYWcodGJbTkhBX0ZEQl0pO1xcbiBcXHR9XFxuIFxcbitcXHRpZiAodGJbTkhBX0ZEQl9QT1JUXSkge1xcbitcXHRcXHRpZiAoIXRiW05IQV9GREJdIHx8ICF0YltOSEFfR0FURVdBWV0pIHtcXG4rXFx0XFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLFxcbitcXHRcXHRcXHRcXHQgICAgICAgXFxcIkZEQiBwb3J0IGNhbiBvbmx5IGJlIHNldCBvbiBmZGIgbmV4dGhvcHMgdGhhdCBoYXZlIGEgZ2F0ZXdheVxcXCIpO1xcbitcXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0fVxcbitcXHRcXHRjZmctXFx1MDAzZW5oX2ZkYl9wb3J0ID0gbmxhX2dldF9iZTE2KHRiW05IQV9GREJfUE9SVF0pO1xcbitcXHR9XFxuK1xcbiBcXHRpZiAodGJbTkhBX0dST1VQXSkge1xcbiBcXHRcXHRpZiAobmhtLVxcdTAwM2VuaF9mYW1pbHkgIT0gQUZfVU5TUEVDKSB7XFxuIFxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXFxcIkludmFsaWQgZmFtaWx5IGZvciBncm91cFxcXCIpO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcXG5pbmRleCA3MDhkOTYwYWUwN2Q1Yi4uYzA2ZWI0OTI3Y2Q5Y2IgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXFxuQEAgLTM2LDYgKzM2LDcgQEAgVEVTVF9QUk9HUyA6PSBcXFxcXFxuIFxcdGZpYl9uZXh0aG9wX211bHRpcHJlZml4LnNoIFxcXFxcXG4gXFx0ZmliX25leHRob3Bfbm9uZ3cuc2ggXFxcXFxcbiBcXHRmaWJfbmV4dGhvcHMuc2ggXFxcXFxcbitcXHRmaWJfbmV4dGhvcHNfZmRiX3BvcnQuc2ggXFxcXFxcbiBcXHRmaWJfcnVsZV90ZXN0cy5zaCBcXFxcXFxuIFxcdGZpYl90ZXN0cy5zaCBcXFxcXFxuIFxcdGZpbl9hY2tfbGF0LnNoIFxcXFxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZpYl9uZXh0aG9wc19mZGJfcG9ydC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9maWJfbmV4dGhvcHNfZmRiX3BvcnQuc2hcXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi44YjQwMWM2ZDI0YTE0Zlxcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZmliX25leHRob3BzX2ZkYl9wb3J0LnNoXFxuQEAgLTAsMCArMSw3OCBAQFxcbisjIS9iaW4vYmFzaFxcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKyNcXG4rIyBDb250cm9sLXBsYW5lIHNlbGZ0ZXN0IGZvciBwZXItbmV4dGhvcCBWWExBTiBmZGIgZGVzdGluYXRpb24gcG9ydFxcbisjIChOSEFfRkRCX1BPUlQpLiAgVmVyaWZpZXMgdGhlIGFjY2VwdC9yZWplY3QgcnVsZXMgYW5kIHRoZSBkdW1wIHJvdW5kdHJpcC5cXG4rIyBObyBkYXRhcGF0aCB0cmFmZmljIGhlcmUgLS0gc2VlIHRlc3RzL2ludGVnL3Z4bGFuLWZkYi1wb3J0LWludGVnLnNoIGZvciB0aGVcXG4rIyByZWFsIGZvcndhcmRpbmcgdGVzdC5cXG4rI1xcbisjIFJlcXVpcmVzOiBwYXRjaGVkIGtlcm5lbCAoTkhBX0ZEQl9QT1JUKSBhbmQgcGF0Y2hlZCBpcHJvdXRlMiAodGhlIFxcXCJwb3J0XFxcIlxcbisjIGtleXdvcmQgb24gXFxcImlwIG5leHRob3AgLi4uIGZkYlxcXCIpLiAgU0tJUHMgY2xlYW5seSBvdGhlcndpc2UuXFxuK1xcbitzZXQgLXVcXG4rXFxuK2tzZnRfc2tpcD00XFxuK05TPVxcXCJuaGZkYnBvcnQtJCRcXFwiXFxuK0lQPVxcXCJpcCAtbmV0bnMgJE5TXFxcIlxcbityZXQ9MFxcbitcXG4rbG9nX3Rlc3QoKSB7XFx0IyAkMSBhY3R1YWxfcmMgICQyIGV4cGVjdGVkX3JjICAkMyBuYW1lXFxuK1xcdGlmIFsgXFxcIiQxXFxcIiA9IFxcXCIkMlxcXCIgXTsgdGhlblxcbitcXHRcXHRwcmludGYgXFxcIlRFU1Q6ICUtNThzIFsgT0sgXVxcXFxuXFxcIiBcXFwiJDNcXFwiXFxuK1xcdGVsc2VcXG4rXFx0XFx0cHJpbnRmIFxcXCJURVNUOiAlLTU4cyBbRkFJTF0gKHJjPSQxIHdhbnQ9JDIpXFxcXG5cXFwiIFxcXCIkM1xcXCJcXG4rXFx0XFx0cmV0PTFcXG4rXFx0ZmlcXG4rfVxcbitcXG4rIyBwYXNzZXMgKHJldHVybnMgMCkgaWZmIHRoZSBjb21tYW5kIEZBSUxTXFxuK2V4cGVjdF9mYWlsKCkge1xcbitcXHRpZiBcXFwiJEBcXFwiIFxcdTAwM2UvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MTsgdGhlbiByZXR1cm4gMTsgZWxzZSByZXR1cm4gMDsgZmlcXG4rfVxcbitcXG4rY2xlYW51cCgpIHsgaXAgbmV0bnMgZGVsIFxcXCIkTlNcXFwiIDJcXHUwMDNlL2Rldi9udWxsOyB9XFxuK1xcbitjb21tYW5kIC12IGlwIFxcdTAwM2UvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MSB8fCB7IGVjaG8gXFxcIlNLSVA6IGlwcm91dGUyIG5vdCBmb3VuZFxcXCI7IGV4aXQgJGtzZnRfc2tpcDsgfVxcbitpcCBuZXh0aG9wIGhlbHAgMlxcdTAwM2VcXHUwMDI2MSB8IGdyZXAgLXEgZmRiIHx8IHsgZWNobyBcXFwiU0tJUDogbm8gZmRiIG5leHRob3Agc3VwcG9ydFxcXCI7IGV4aXQgJGtzZnRfc2tpcDsgfVxcbitcXG4rdHJhcCBjbGVhbnVwIEVYSVRcXG4rY2xlYW51cFxcbitpcCBuZXRucyBhZGQgXFxcIiROU1xcXCIgfHwgeyBlY2hvIFxcXCJTS0lQOiBjYW5ub3QgY3JlYXRlIG5ldG5zXFxcIjsgZXhpdCAka3NmdF9za2lwOyB9XFxuKyRJUCBsaW5rIHNldCBsbyB1cFxcbitcXG4rIyBQcm9iZSBmb3IgXFxcInBvcnRcXFwiIGtleXdvcmQgKyBrZXJuZWwgTkhBX0ZEQl9QT1JUIHN1cHBvcnQ7IFNLSVAgaWYgbWlzc2luZy5cXG4raWYgISAkSVAgbmV4dGhvcCBhZGQgaWQgMSB2aWEgMTAuMC4wLjEgZmRiIHBvcnQgNDc5MCAyXFx1MDAzZS9kZXYvbnVsbDsgdGhlblxcbitcXHRlY2hvIFxcXCJTS0lQOiAnaXAgbmV4dGhvcCAuLi4gZmRiIHBvcnQnIHVuc3VwcG9ydGVkIChuZWVkcyBwYXRjaGVkIGtlcm5lbCArIGlwcm91dGUyKVxcXCJcXG4rXFx0ZXhpdCAka3NmdF9za2lwXFxuK2ZpXFxuK2xvZ190ZXN0IDAgMCBcXFwiYWRkIGZkYiBuZXh0aG9wIHdpdGggcG9ydFxcXCJcXG4rXFxuKyMgRHVtcCByb3VuZHRyaXAgbXVzdCBlY2hvIHRoZSBwb3J0IGJhY2suXFxuKyRJUCBuZXh0aG9wIHNob3cgaWQgMSB8IGdyZXAgLXF3IFxcXCJwb3J0IDQ3OTBcXFwiXFxuK2xvZ190ZXN0ICQ/IDAgXFxcImR1bXAgc2hvd3MgZmRiIHBvcnQgNDc5MFxcXCJcXG4rXFxuKyMgUmVqZWN0OiBwb3J0IG9uIGEgcm91dGVkIChub24tZmRiKSBuZXh0aG9wLlxcbitleHBlY3RfZmFpbCAkSVAgbmV4dGhvcCBhZGQgaWQgMiB2aWEgMTAuMC4wLjEgZGV2IGxvIHBvcnQgNDc5MFxcbitsb2dfdGVzdCAkPyAwIFxcXCJyZWplY3QgcG9ydCBvbiBub24tZmRiIG5leHRob3BcXFwiXFxuK1xcbisjIFJlamVjdDogZmRiIHBvcnQgd2l0aG91dCBhIGdhdGV3YXkuXFxuK2V4cGVjdF9mYWlsICRJUCBuZXh0aG9wIGFkZCBpZCAzIGZkYiBwb3J0IDQ3OTBcXG4rbG9nX3Rlc3QgJD8gMCBcXFwicmVqZWN0IGZkYiBwb3J0IHdpdGhvdXQgZ2F0ZXdheVxcXCJcXG4rXFxuKyMgVGhlIEhBIGNhc2U6IGEgZ3JvdXAgd2hvc2UgbGVncyBzaGFyZSB0aGUgZ2F0ZXdheSBidXQgZGlmZmVyIGluIHBvcnQuXFxuKyRJUCBuZXh0aG9wIGFkZCBpZCAxMCB2aWEgMTAuMC4wLjEgZmRiIHBvcnQgNDc4OSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuKyRJUCBuZXh0aG9wIGFkZCBpZCAxMSB2aWEgMTAuMC4wLjEgZmRiIHBvcnQgNTc4OSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuKyRJUCBuZXh0aG9wIGFkZCBpZCAxMDAgZ3JvdXAgMTAvMTEgZmRiXFxuK2xvZ190ZXN0ICQ/IDAgXFxcImFkZCBmZGIgbmV4dGhvcCBncm91cCB3aXRoIGRpZmZlcmluZyBwb3J0c1xcXCJcXG4rXFxuKyMgQSBmZGIgbmV4dGhvcCB3aXRob3V0IGEgcG9ydCBtdXN0IE5PVCBlbWl0IG9uZSAoYmFja3dhcmQgY29tcGF0KS5cXG4rJElQIG5leHRob3AgYWRkIGlkIDIwIHZpYSAxMC4wLjAuMSBmZGJcXG4rJElQIG5leHRob3Agc2hvdyBpZCAyMCB8IGdyZXAgLXF3IFxcXCJwb3J0XFxcIlxcbitsb2dfdGVzdCAkPyAxIFxcXCJmZGIgbmV4dGhvcCB3aXRob3V0IHBvcnQgb21pdHMgTkhBX0ZEQl9QT1JUXFxcIlxcbitcXG4raWYgWyAkcmV0IC1lcSAwIF07IHRoZW5cXG4rXFx0ZWNobyBcXFwiUEFTUzogYWxsIE5IQV9GREJfUE9SVCBjb250cm9sLXBsYW5lIGNoZWNrc1xcXCJcXG4rZWxzZVxcbitcXHRlY2hvIFxcXCJGQUlMOiBvbmUgb3IgbW9yZSBOSEFfRkRCX1BPUlQgY2hlY2tzIGZhaWxlZFxcXCJcXG4rZmlcXG4rZXhpdCAkcmV0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA5OjIwOjM2LjY1ODMxMzM3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzgwNTMzOTY2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWWExBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bV90b19uaF9jb25maWdcIixcbiAgICBcIm5leHRob3BfY3JlYXRlXCIsXG4gICAgXCJuaF9maWxsX25vZGVcIixcbiAgICBcInZ4bGFuX3htaXRfbmhcIixcbiAgICBcInZ4bGFuX3htaXRfbmhpZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbmV0bGluayBhdHRyaWJ1dGUgTkhBX0ZEQl9QT1JUIGZvciBmZGIgbmV4dGhvcHMsIG1vZGlmeWluZyBuZXh0aG9wIGNyZWF0aW9uIGFuZCBkdW1waW5nIGxvZ2ljLCBhcyB3ZWxsIGFzIFZYTEFOIHRyYW5zbWlzc2lvbiBwYXRocyB0byB1dGlsaXplIHRoaXMgbmV3IHBvcnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmtpbmcgYW5kIFZYTEFOIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzNTYxNjYxNjcxNjZjZTQ0YmM1ZDNkNzI2MDlkYjcwMmRiYmNlMDAxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTcgMDk6MjA6MzMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9uZXh0aG9wLmggYi9pbmNsdWRlL25ldC9uZXh0aG9wLmhcbmluZGV4IDU3MmU2OWNkYTQ3NjZkLi43ZmI2MTJhNzMwN2YyNSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L25leHRob3AuaFxuKysrIGIvaW5jbHVkZS9uZXQvbmV4dGhvcC5oXG5AQCAtMjgsNiArMjgsNyBAQCBzdHJ1Y3QgbmhfY29uZmlnIHtcbiBcdHU4XHRcdG5oX3Byb3RvY29sO1xuIFx0dThcdFx0bmhfYmxhY2tob2xlO1xuIFx0dThcdFx0bmhfZmRiO1xuK1x0X19iZTE2XHRcdG5oX2ZkYl9wb3J0O1xuIFx0dTMyXHRcdG5oX2ZsYWdzO1xuIFxuIFx0aW50XHRcdG5oX2lmaW5kZXg7XG5AQCAtNjMsNiArNjQsNyBAQCBzdHJ1Y3QgbmhfaW5mbyB7XG4gXHR1OFx0XHRcdGZhbWlseTtcbiBcdGJvb2xcdFx0XHRyZWplY3Rfbmg7XG4gXHRib29sXHRcdFx0ZmRiX25oO1xuK1x0X19iZTE2XHRcdFx0ZmRiX3BvcnQ7XG4gXG4gXHR1bmlvbiB7XG4gXHRcdHN0cnVjdCBmaWJfbmhfY29tbW9uXHRmaWJfbmhjO1xuQEAgLTU3NCw3ICs1NzYsOCBAQCBzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmV4dGhvcF9mZGJfbmhjKHN0cnVjdCBuZXh0aG9wICpuaClcbiB9XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmV4dGhvcF9wYXRoX2ZkYl9yZXN1bHQoc3RydWN0IG5leHRob3AgKm5oLFxuLVx0XHRcdFx0XHRcdFx0ICAgIGludCBoYXNoKVxuK1x0XHRcdFx0XHRcdCAgICBpbnQgaGFzaCxcbitcdFx0XHRcdFx0XHQgICAgX19iZTE2ICpmZGJfcG9ydClcbiB7XG4gXHRzdHJ1Y3QgbmhfaW5mbyAqbmhpO1xuIFx0c3RydWN0IG5leHRob3AgKm5ocDtcbkBAIC01ODMsNiArNTg2LDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmV4dGhvcF9wYXRoX2ZkYl9yZXN1bHQoc3RydWN0IG5leHRob3AgKm5oLFxuIFx0aWYgKHVubGlrZWx5KCFuaHApKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdG5oaSA9IHJjdV9kZXJlZmVyZW5jZShuaHAtXHUwMDNlbmhfaW5mbyk7XG4rXHRpZiAoZmRiX3BvcnQpXG4rXHRcdCpmZGJfcG9ydCA9IG5oaS1cdTAwM2VmZGJfcG9ydDtcbiBcdHJldHVybiBcdTAwMjZuaGktXHUwMDNlZmliX25oYztcbiB9XG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvdnhsYW4uaCBiL2luY2x1ZGUvbmV0L3Z4bGFuLmhcbmluZGV4IGRmYmE4OTY5NWVmY2ZhLi5kZTQxYjM3NDY4OGYyOSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3Z4bGFuLmhcbisrKyBiL2luY2x1ZGUvbmV0L3Z4bGFuLmhcbkBAIC01NjcsOCArNTY3LDkgQEAgc3RhdGljIGlubGluZSBib29sIHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdChzdHJ1Y3QgbmV4dGhvcCAqbmgsXG4gXHRcdFx0XHRcdCAgICBzdHJ1Y3QgdnhsYW5fcmRzdCAqcmRzdClcbiB7XG4gXHRzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmhjO1xuK1x0X19iZTE2IGZkYl9wb3J0ID0gMDtcbiBcbi1cdG5oYyA9IG5leHRob3BfcGF0aF9mZGJfcmVzdWx0KG5oLCBoYXNoIFx1MDAzZVx1MDAzZSAxKTtcbitcdG5oYyA9IG5leHRob3BfcGF0aF9mZGJfcmVzdWx0KG5oLCBoYXNoIFx1MDAzZVx1MDAzZSAxLCBcdTAwMjZmZGJfcG9ydCk7XG4gXHRpZiAodW5saWtlbHkoIW5oYykpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbkBAIC01ODMsNiArNTg0LDggQEAgc3RhdGljIGlubGluZSBib29sIHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdChzdHJ1Y3QgbmV4dGhvcCAqbmgsXG4gXHRcdGJyZWFrO1xuIFx0fVxuIFxuK1x0cmRzdC1cdTAwM2VyZW1vdGVfcG9ydCA9IGZkYl9wb3J0O1xuK1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9uZXh0aG9wLmggYi9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oXG5pbmRleCBiYzQ5YmFmNGEyNjdmMC4uZTU4N2JiZjNiODkwYTMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oXG5AQCAtODMsNiArODMsOSBAQCBlbnVtIHtcbiBcdC8qIHUzMjsgcmVhZC1vbmx5OyB3aGV0aGVyIGFueSBkcml2ZXIgY29sbGVjdHMgSFcgc3RhdHMgKi9cbiBcdE5IQV9IV19TVEFUU19VU0VELFxuIFxuK1x0LyogYmUxNjsgVURQIGRlc3RpbmF0aW9uIHBvcnQgZm9yIGFuIGZkYiBuZXh0aG9wIChlLmcuIFZYTEFOKSAqL1xuK1x0TkhBX0ZEQl9QT1JULFxuK1xuIFx0X19OSEFfTUFYLFxuIH07XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvbmV4dGhvcC5jIGIvbmV0L2lwdjQvbmV4dGhvcC5jXG5pbmRleCA2MjA1YmQ1N2FhODUyMC4uNWIyN2NjOWE5MTkxZDcgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9uZXh0aG9wLmNcbisrKyBiL25ldC9pcHY0L25leHRob3AuY1xuQEAgLTM5LDYgKzM5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHJ0bV9uaF9wb2xpY3lfbmV3W10gPSB7XG4gXHRbTkhBX0VOQ0FQX1RZUEVdXHQ9IHsgLnR5cGUgPSBOTEFfVTE2IH0sXG4gXHRbTkhBX0VOQ0FQXVx0XHQ9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXG4gXHRbTkhBX0ZEQl1cdFx0PSB7IC50eXBlID0gTkxBX0ZMQUcgfSxcbitcdFtOSEFfRkRCX1BPUlRdXHRcdD0geyAudHlwZSA9IE5MQV9VMTYgfSxcbiBcdFtOSEFfUkVTX0dST1VQXVx0XHQ9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXG4gXHRbTkhBX0hXX1NUQVRTX0VOQUJMRV1cdD0gTkxBX1BPTElDWV9NQVgoTkxBX1UzMiwgdHJ1ZSksXG4gfTtcbkBAIC05NTYsNiArOTU3LDkgQEAgc3RhdGljIGludCBuaF9maWxsX25vZGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5leHRob3AgKm5oLFxuIFx0fSBlbHNlIGlmIChuaGktXHUwMDNlZmRiX25oKSB7XG4gXHRcdGlmIChubGFfcHV0X2ZsYWcoc2tiLCBOSEFfRkRCKSlcbiBcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbitcdFx0aWYgKG5oaS1cdTAwM2VmZGJfcG9ydCBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIG5sYV9wdXRfYmUxNihza2IsIE5IQV9GREJfUE9SVCwgbmhpLVx1MDAzZWZkYl9wb3J0KSlcbitcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcdH0gZWxzZSB7XG4gXHRcdGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XG4gXG5AQCAtMTA1NSw2ICsxMDU5LDkgQEAgc3RhdGljIHNpemVfdCBuaF9ubG1zZ19zaXplX3NpbmdsZShzdHJ1Y3QgbmV4dGhvcCAqbmgpXG4gXHRcdGJyZWFrO1xuIFx0fVxuIFxuK1x0aWYgKG5oaS1cdTAwM2VmZGJfbmgpXG4rXHRcdHN6ICs9IG5sYV90b3RhbF9zaXplKDIpO1x0LyogTkhBX0ZEQl9QT1JUICovXG4rXG4gXHRpZiAobmhpLVx1MDAzZWZpYl9uaGMubmhjX2x3dHN0YXRlKSB7XG4gXHRcdHN6ICs9IGx3dHVubmVsX2dldF9lbmNhcF9zaXplKG5oaS1cdTAwM2VmaWJfbmhjLm5oY19sd3RzdGF0ZSk7XG4gXHRcdHN6ICs9IG5sYV90b3RhbF9zaXplKDIpOyAgLyogTkhBX0VOQ0FQX1RZUEUgKi9cbkBAIC0yOTU2LDggKzI5NjMsMTAgQEAgc3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuaF9jb25maWcgKmNmZyxcbiBcdG5oaS1cdTAwM2VmYW1pbHkgPSBjZmctXHUwMDNlbmhfZmFtaWx5O1xuIFx0bmhpLVx1MDAzZWZpYl9uaGMubmhjX3Njb3BlID0gUlRfU0NPUEVfTElOSztcbiBcbi1cdGlmIChjZmctXHUwMDNlbmhfZmRiKVxuK1x0aWYgKGNmZy1cdTAwM2VuaF9mZGIpIHtcbiBcdFx0bmhpLVx1MDAzZWZkYl9uaCA9IDE7XG4rXHRcdG5oaS1cdTAwM2VmZGJfcG9ydCA9IGNmZy1cdTAwM2VuaF9mZGJfcG9ydDtcbitcdH1cbiBcbiBcdGlmIChjZmctXHUwMDNlbmhfYmxhY2tob2xlKSB7XG4gXHRcdG5oaS1cdTAwM2VyZWplY3RfbmggPSAxO1xuQEAgLTMxNDcsNiArMzE1NiwxNSBAQCBzdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWcoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRjZmctXHUwMDNlbmhfZmRiID0gbmxhX2dldF9mbGFnKHRiW05IQV9GREJdKTtcbiBcdH1cbiBcbitcdGlmICh0YltOSEFfRkRCX1BPUlRdKSB7XG4rXHRcdGlmICghdGJbTkhBX0ZEQl0gfHwgIXRiW05IQV9HQVRFV0FZXSkge1xuK1x0XHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcbitcdFx0XHRcdCAgICAgICBcIkZEQiBwb3J0IGNhbiBvbmx5IGJlIHNldCBvbiBmZGIgbmV4dGhvcHMgdGhhdCBoYXZlIGEgZ2F0ZXdheVwiKTtcbitcdFx0XHRnb3RvIG91dDtcbitcdFx0fVxuK1x0XHRjZmctXHUwMDNlbmhfZmRiX3BvcnQgPSBubGFfZ2V0X2JlMTYodGJbTkhBX0ZEQl9QT1JUXSk7XG4rXHR9XG4rXG4gXHRpZiAodGJbTkhBX0dST1VQXSkge1xuIFx0XHRpZiAobmhtLVx1MDAzZW5oX2ZhbWlseSAhPSBBRl9VTlNQRUMpIHtcbiBcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiSW52YWxpZCBmYW1pbHkgZm9yIGdyb3VwXCIpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZVxuaW5kZXggNzA4ZDk2MGFlMDdkNWIuLmMwNmViNDkyN2NkOWNiIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcbkBAIC0zNiw2ICszNiw3IEBAIFRFU1RfUFJPR1MgOj0gXFxcbiBcdGZpYl9uZXh0aG9wX211bHRpcHJlZml4LnNoIFxcXG4gXHRmaWJfbmV4dGhvcF9ub25ndy5zaCBcXFxuIFx0ZmliX25leHRob3BzLnNoIFxcXG4rXHRmaWJfbmV4dGhvcHNfZmRiX3BvcnQuc2ggXFxcbiBcdGZpYl9ydWxlX3Rlc3RzLnNoIFxcXG4gXHRmaWJfdGVzdHMuc2ggXFxcbiBcdGZpbl9hY2tfbGF0LnNoIFxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZpYl9uZXh0aG9wc19mZGJfcG9ydC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9maWJfbmV4dGhvcHNfZmRiX3BvcnQuc2hcbm5ldyBmaWxlIG1vZGUgMTAwNzU1XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uOGI0MDFjNmQyNGExNGZcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9maWJfbmV4dGhvcHNfZmRiX3BvcnQuc2hcbkBAIC0wLDAgKzEsNzggQEBcbisjIS9iaW4vYmFzaFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisjXG4rIyBDb250cm9sLXBsYW5lIHNlbGZ0ZXN0IGZvciBwZXItbmV4dGhvcCBWWExBTiBmZGIgZGVzdGluYXRpb24gcG9ydFxuKyMgKE5IQV9GREJfUE9SVCkuICBWZXJpZmllcyB0aGUgYWNjZXB0L3JlamVjdCBydWxlcyBhbmQgdGhlIGR1bXAgcm91bmR0cmlwLlxuKyMgTm8gZGF0YXBhdGggdHJhZmZpYyBoZXJlIC0tIHNlZSB0ZXN0cy9pbnRlZy92eGxhbi1mZGItcG9ydC1pbnRlZy5zaCBmb3IgdGhlXG4rIyByZWFsIGZvcndhcmRpbmcgdGVzdC5cbisjXG4rIyBSZXF1aXJlczogcGF0Y2hlZCBrZXJuZWwgKE5IQV9GREJfUE9SVCkgYW5kIHBhdGNoZWQgaXByb3V0ZTIgKHRoZSBcInBvcnRcIlxuKyMga2V5d29yZCBvbiBcImlwIG5leHRob3AgLi4uIGZkYlwiKS4gIFNLSVBzIGNsZWFubHkgb3RoZXJ3aXNlLlxuK1xuK3NldCAtdVxuK1xuK2tzZnRfc2tpcD00XG4rTlM9XCJuaGZkYnBvcnQtJCRcIlxuK0lQPVwiaXAgLW5ldG5zICROU1wiXG4rcmV0PTBcbitcbitsb2dfdGVzdCgpIHtcdCMgJDEgYWN0dWFsX3JjICAkMiBleHBlY3RlZF9yYyAgJDMgbmFtZVxuK1x0aWYgWyBcIiQxXCIgPSBcIiQyXCIgXTsgdGhlblxuK1x0XHRwcmludGYgXCJURVNUOiAlLTU4cyBbIE9LIF1cXG5cIiBcIiQzXCJcbitcdGVsc2VcbitcdFx0cHJpbnRmIFwiVEVTVDogJS01OHMgW0ZBSUxdIChyYz0kMSB3YW50PSQyKVxcblwiIFwiJDNcIlxuK1x0XHRyZXQ9MVxuK1x0Zmlcbit9XG4rXG4rIyBwYXNzZXMgKHJldHVybnMgMCkgaWZmIHRoZSBjb21tYW5kIEZBSUxTXG4rZXhwZWN0X2ZhaWwoKSB7XG4rXHRpZiBcIiRAXCIgXHUwMDNlL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxOyB0aGVuIHJldHVybiAxOyBlbHNlIHJldHVybiAwOyBmaVxuK31cbitcbitjbGVhbnVwKCkgeyBpcCBuZXRucyBkZWwgXCIkTlNcIiAyXHUwMDNlL2Rldi9udWxsOyB9XG4rXG4rY29tbWFuZCAtdiBpcCBcdTAwM2UvZGV2L251bGwgMlx1MDAzZVx1MDAyNjEgfHwgeyBlY2hvIFwiU0tJUDogaXByb3V0ZTIgbm90IGZvdW5kXCI7IGV4aXQgJGtzZnRfc2tpcDsgfVxuK2lwIG5leHRob3AgaGVscCAyXHUwMDNlXHUwMDI2MSB8IGdyZXAgLXEgZmRiIHx8IHsgZWNobyBcIlNLSVA6IG5vIGZkYiBuZXh0aG9wIHN1cHBvcnRcIjsgZXhpdCAka3NmdF9za2lwOyB9XG4rXG4rdHJhcCBjbGVhbnVwIEVYSVRcbitjbGVhbnVwXG4raXAgbmV0bnMgYWRkIFwiJE5TXCIgfHwgeyBlY2hvIFwiU0tJUDogY2Fubm90IGNyZWF0ZSBuZXRuc1wiOyBleGl0ICRrc2Z0X3NraXA7IH1cbiskSVAgbGluayBzZXQgbG8gdXBcbitcbisjIFByb2JlIGZvciBcInBvcnRcIiBrZXl3b3JkICsga2VybmVsIE5IQV9GREJfUE9SVCBzdXBwb3J0OyBTS0lQIGlmIG1pc3NpbmcuXG4raWYgISAkSVAgbmV4dGhvcCBhZGQgaWQgMSB2aWEgMTAuMC4wLjEgZmRiIHBvcnQgNDc5MCAyXHUwMDNlL2Rldi9udWxsOyB0aGVuXG4rXHRlY2hvIFwiU0tJUDogJ2lwIG5leHRob3AgLi4uIGZkYiBwb3J0JyB1bnN1cHBvcnRlZCAobmVlZHMgcGF0Y2hlZCBrZXJuZWwgKyBpcHJvdXRlMilcIlxuK1x0ZXhpdCAka3NmdF9za2lwXG4rZmlcbitsb2dfdGVzdCAwIDAgXCJhZGQgZmRiIG5leHRob3Agd2l0aCBwb3J0XCJcbitcbisjIER1bXAgcm91bmR0cmlwIG11c3QgZWNobyB0aGUgcG9ydCBiYWNrLlxuKyRJUCBuZXh0aG9wIHNob3cgaWQgMSB8IGdyZXAgLXF3IFwicG9ydCA0NzkwXCJcbitsb2dfdGVzdCAkPyAwIFwiZHVtcCBzaG93cyBmZGIgcG9ydCA0NzkwXCJcbitcbisjIFJlamVjdDogcG9ydCBvbiBhIHJvdXRlZCAobm9uLWZkYikgbmV4dGhvcC5cbitleHBlY3RfZmFpbCAkSVAgbmV4dGhvcCBhZGQgaWQgMiB2aWEgMTAuMC4wLjEgZGV2IGxvIHBvcnQgNDc5MFxuK2xvZ190ZXN0ICQ/IDAgXCJyZWplY3QgcG9ydCBvbiBub24tZmRiIG5leHRob3BcIlxuK1xuKyMgUmVqZWN0OiBmZGIgcG9ydCB3aXRob3V0IGEgZ2F0ZXdheS5cbitleHBlY3RfZmFpbCAkSVAgbmV4dGhvcCBhZGQgaWQgMyBmZGIgcG9ydCA0NzkwXG4rbG9nX3Rlc3QgJD8gMCBcInJlamVjdCBmZGIgcG9ydCB3aXRob3V0IGdhdGV3YXlcIlxuK1xuKyMgVGhlIEhBIGNhc2U6IGEgZ3JvdXAgd2hvc2UgbGVncyBzaGFyZSB0aGUgZ2F0ZXdheSBidXQgZGlmZmVyIGluIHBvcnQuXG4rJElQIG5leHRob3AgYWRkIGlkIDEwIHZpYSAxMC4wLjAuMSBmZGIgcG9ydCA0Nzg5IFx1MDAyNlx1MDAyNiBcXFxuKyRJUCBuZXh0aG9wIGFkZCBpZCAxMSB2aWEgMTAuMC4wLjEgZmRiIHBvcnQgNTc4OSBcdTAwMjZcdTAwMjYgXFxcbiskSVAgbmV4dGhvcCBhZGQgaWQgMTAwIGdyb3VwIDEwLzExIGZkYlxuK2xvZ190ZXN0ICQ/IDAgXCJhZGQgZmRiIG5leHRob3AgZ3JvdXAgd2l0aCBkaWZmZXJpbmcgcG9ydHNcIlxuK1xuKyMgQSBmZGIgbmV4dGhvcCB3aXRob3V0IGEgcG9ydCBtdXN0IE5PVCBlbWl0IG9uZSAoYmFja3dhcmQgY29tcGF0KS5cbiskSVAgbmV4dGhvcCBhZGQgaWQgMjAgdmlhIDEwLjAuMC4xIGZkYlxuKyRJUCBuZXh0aG9wIHNob3cgaWQgMjAgfCBncmVwIC1xdyBcInBvcnRcIlxuK2xvZ190ZXN0ICQ/IDEgXCJmZGIgbmV4dGhvcCB3aXRob3V0IHBvcnQgb21pdHMgTkhBX0ZEQl9QT1JUXCJcbitcbitpZiBbICRyZXQgLWVxIDAgXTsgdGhlblxuK1x0ZWNobyBcIlBBU1M6IGFsbCBOSEFfRkRCX1BPUlQgY29udHJvbC1wbGFuZSBjaGVja3NcIlxuK2Vsc2VcbitcdGVjaG8gXCJGQUlMOiBvbmUgb3IgbW9yZSBOSEFfRkRCX1BPUlQgY2hlY2tzIGZhaWxlZFwiXG4rZmlcbitleGl0ICRyZXRcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA5OjIwOjM2LjY1ODMxNjM1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE2ODI3NjAxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZYTEFOIEZEQiBOZXh0aG9wIFBhdGNoKipcblxuT2theSwgc28gd2UndmUgZ290IGEgbmV3IHBhdGNoIGhlcmUuIEl0J3MgYWRkaW5nIGBOSEFfRkRCX1BPUlRgLCBhIG5ldyBmZWF0dXJlIGZvciBGREIgbmV4dGhvcHMsIHNwZWNpZmljYWxseSBmb3IgdGhpbmdzIGxpa2UgVlhMQU4uIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gg4oCTIHdlJ3JlIGdpdmluZyB0aGUgdXNlciB0aGUgYWJpbGl0eSB0byBzZXQgYSBVRFAgZGVzdGluYXRpb24gcG9ydCBmb3IgdGhlc2UgbmV4dGhvcHMuIFRoaXMgaXMgZ29vZDsgbW9yZSBncmFudWxhciBjb250cm9sIGlzIGFsd2F5cyBhIHBsdXMuXG5cblRoZSBwYXRjaCBpdHNlbGYgdG91Y2hlcyBzb21lIGtleSBhcmVhczogYGluY2x1ZGUvbmV0L25leHRob3AuaGAsIGBpbmNsdWRlL25ldC92eGxhbi5oYCwgYGluY2x1ZGUvdWFwaS9saW51eC9uZXh0aG9wLmhgLCBhbmQgYG5ldC9pcHY0L25leHRob3AuY2AsIHdoaWNoIG1ha2VzIHNlbnNlIGdpdmVuIHRoZSBmdW5jdGlvbmFsaXR5LiBQbHVzLCB3ZSBnZXQgYSBzZWxmdGVzdCwgd2hpY2ggaXMgYWJzb2x1dGVseSBjcnVjaWFsLiBHb3R0YSBtYWtlIHN1cmUgdGhpcyBzdHVmZiBpcyBiZWhhdmluZyBhcyBleHBlY3RlZCwgYW5kIHRlc3QgY292ZXJhZ2UgaXMga2V5IGZvciBuZXR3b3JraW5nLlxuXG5Ob3csIGJlZm9yZSBJIGRpZyBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgSSBzaG91bGQgZmlndXJlIG91dCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMgZm9yIHRlc3RpbmcuIFRoaXMgZmVhdHVyZSBhZmZlY3RzIGBuZXQvaXB2NC9uZXh0aG9wLmNgIGFuZCBgaW5jbHVkZS9uZXQvdnhsYW4uaGAgcHJpbWFyaWx5LiBMZXQncyB0aGluay4uLmBuZXQvaXB2NC9uZXh0aG9wLmNgLi4uaXMgdGhhdCBkZXBlbmRlbnQgb24gYENPTkZJR19JUF9ST1VURV9NVUxUSVBBVEhgIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBBY3R1YWxseSwgSSB0aGluayB0aGF0J3MgY29tcGlsZWQgdW5jb25kaXRpb25hbGx5IGZvciBJUHY0LCBpc24ndCBpdD8gQmV0dGVyIGRvdWJsZS1jaGVjayB0aGUgYG5ldC9pcHY0L01ha2VmaWxlYCBqdXN0IHRvIGJlIGNlcnRhaW4uIEkgZG9uJ3Qgd2FudCB0byB3YXN0ZSB0aW1lIGNvbmZpZ3VyaW5nIHNvbWV0aGluZyB0aGF0J3MgYWxyZWFkeSBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDkzLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDk6MjA6NDEuODI2NTk1MDk2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNjcwMzIwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXh0aG9wLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcXFxcbi0tXFxubmV0L2lwdjQvTWFrZWZpbGUtMTYtXFx0ICAgICBpbmV0X2ZyYWdtZW50Lm8gcGluZy5vIGlwX3R1bm5lbF9jb3JlLm8gZ3JlX29mZmxvYWQubyBcXFxcXFxubmV0L2lwdjQvTWFrZWZpbGU6MTc6XFx0ICAgICBtZXRyaWNzLm8gbmV0bGluay5vIG5leHRob3AubyB1ZHBfdHVubmVsX3N0dWIub1xcbm5ldC9pcHY0L01ha2VmaWxlLTE4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwOToyMDo0Mi4wNTMzMDY5MDFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjg0ODAzMzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUsIG15IGluaXRpYWwgdGhvdWdodCBpczpcblxuKipFeGFtaW5pbmcgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24gaW4gTmV0d29ya2luZyBDb2RlKipcblxuQWxyaWdodCwgc28gYG5leHRob3Aub2AgaXMgYWx3YXlzIGJ1aWx0IGZvciBJUHY0LiBNYWtlcyBzZW5zZSwgaXQncyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIHJvdXRpbmcuIE5vdywgd2hhdCdzIHRoZSBkZWFsIHdpdGggYHZ4bGFuLmhgPyBNeSBndXQgc2F5cyB0aGF0J3MgbGlrZWx5IHRpZWQgdG8gdGhlIGBDT05GSUdfVlhMQU5gIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCByaWdodD8gWWVhaCwgdGhhdCByaW5ncyBhIGJlbGwuIFRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvdnhsYW4vTWFrZWZpbGVgIGZpbGUuIEl0J3MgdGhlIE1ha2VmaWxlIHRoYXQgdGVsbHMgdGhlIGtlcm5lbCB3aGF0IHRvIGluY2x1ZGUuIEkgY291bGQgYWxzbyBza2ltIHRoZSBkaXJlY3RvcnkgaXRzZWxmIGJ1dCB0aGUgTWFrZWZpbGUgd2lsbCBnaXZlIGEgZGVmaW5pdGl2ZSBhbnN3ZXIuIEknbGwgZ2V0IHRoZSBhbnN3ZXIgaW1tZWRpYXRlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MDEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwOToyMDo0NS4zMzgxMTMwMTVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1NDgzMjg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92eGxhbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTI2NTA9c3RhdGljIHZvaWQgdnhsYW5feG1pdF9uaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2NjMtXFx0XFx0Z290byBkcm9wO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjY0OlxcdGRvX3htaXQgPSB2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3QobmgsIGhhc2gsIFxcdTAwMjZuaF9yZHN0KTtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY2NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0yNjgwPXN0YXRpYyBuZXRkZXZfdHhfdCB2eGxhbl94bWl0X25oaWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjk3LVxcdH1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjY5ODpcXHRkb194bWl0ID0gdnhsYW5fZmRiX25oX3BhdGhfc2VsZWN0KG5oLCBoYXNoLCBcXHUwMDI2bmhfcmRzdCk7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2OTktXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA5OjIwOjQ1LjQ2MzYwNDU3MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2OTE5MTExODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXh0aG9wIGFuZCBWWExBTiBJbnRlZ3JhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoYXQgYHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdGAgaXMgdXNlZCBpbiB0aGUgVlhMQU4gY29yZSwgc3BlY2lmaWNhbGx5IGluIGBkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNgLiAgVGhhdCBtZWFucyBgQ09ORklHX1ZYTEFOYCBpcyBhIHByZXJlcXVpc2l0ZSwgd2hpY2ggaXMgZXhwZWN0ZWQuXG5cbk5vdywgbGV0J3MgYnJvYWRlbiB0aGUgc2NvcGUuIFRoaXMgcGF0Y2ggYWxzbyB0b3VjaGVzIGBuZXQvaXB2NC9uZXh0aG9wLmNgLiAgVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBhcmUgYG5oX2ZpbGxfbm9kZWAsIGBuaF9ubG1zZ19zaXplX3NpbmdsZWAsIGBuZXh0aG9wX2NyZWF0ZWAsIGFuZCBgcnRtX3RvX25oX2NvbmZpZ2AuIFRoZXNlIGFyZSBhbGwgcmVsYXRlZCB0byB0aGUgbmV4dGhvcCBuZXRsaW5rIGludGVyZmFjZSwgc28gdGhhdCdzIGEga2V5IGFyZWEgdG8gZXhwbG9yZS5cblxuSSB3YW50IHRvIGRpdmUgZGVlcGVyIGludG8gYG5leHRob3BfY3JlYXRlYCBhbmQgYHJ0bV90b19uaF9jb25maWdgIHdpdGhpbiBgbmV0L2lwdjQvbmV4dGhvcC5jYC4gVGhleSdyZSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIGludm9sdmVkIGluIGNyZWF0aW5nIGFuZCBjb25maWd1cmluZyBuZXh0aG9wcyB2aWEgbmV0bGluaywgd2hpY2ggaXMgdGhlIGhlYXJ0IG9mIGhvdyB0aGlzIHdvcmtzLlxuXG5UaGUgZm9jdXMgc3ltYm9scyBoZXJlIGFyZSBnb2luZyB0byBiZSBgbmV4dGhvcF9jcmVhdGVgLCBgcnRtX3RvX25oX2NvbmZpZ2AsIGBuaF9maWxsX25vZGVgLCBgbmhfbmxtc2dfc2l6ZV9zaW5nbGVgIOKAkyB0aGV5J3JlIGFsbCBkaXJlY3RseSBpbnZvbHZlZCBpbiBuZXRsaW5rIGludGVyYWN0aW9uIGZvciBuZXh0aG9wcy4gIFRoZW4sIHdlIGFsc28gaGF2ZSBgdnhsYW5fZmRiX25oX3BhdGhfc2VsZWN0YCwgd2hpY2ggaXMgYSBzdGF0aWMgaW5saW5lIGZ1bmN0aW9uIGRlZmluZWQgaW4gYGluY2x1ZGUvbmV0L3Z4bGFuLmhgLiBCZWNhdXNlIGl0J3MgaW5saW5lLCBpdCdzIGFjdHVhbGx5IGlubGluZWQgaW50byB0aGUgdHdvIGZ1bmN0aW9ucyB0aGF0IHVzZSBpdDogYHZ4bGFuX3htaXRfbmhgIGFuZCBgdnhsYW5feG1pdF9uaGlkYC5cblxuVGhlcmVmb3JlLCBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgYHZ4bGFuX3htaXRfbmhgIGFuZCBgdnhsYW5feG1pdF9uaGlkYCBhcmUgZ29vZCBmb2N1cyBzeW1ib2xzIHNpbmNlIHRob3NlIGFyZSB0aGUgcGxhY2VzIHdoZXJlIGB2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3RgIGlzIGFjdHVhbGx5IGdldHRpbmcgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM2MCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwOToyMDo1MS4xNTU1MjA1NDdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE4MzMzNzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZ4bGFuX3htaXRfbmhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0yMzQ0PXZvaWQgdnhsYW5feG1pdF9vbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjQ5LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjUwOnN0YXRpYyB2b2lkIHZ4bGFuX3htaXRfbmgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY1MS1cXHRcXHRcXHQgIHN0cnVjdCB2eGxhbl9mZGIgKmYsIF9fYmUzMiB2bmksIGJvb2wgZGlkX3JzYylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjc5LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjgwOnN0YXRpYyBuZXRkZXZfdHhfdCB2eGxhbl94bWl0X25oaWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY4MS1cXHRcXHRcXHRcXHQgICB1MzIgbmhpZCwgX19iZTMyIHZuaSlcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0yNzI1PXN0YXRpYyBuZXRkZXZfdHhfdCB2eGxhbl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjc3Mi1cXHRpZiAobmhpZClcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mjc3MzpcXHRcXHRyZXR1cm4gdnhsYW5feG1pdF9uaGlkKHNrYiwgZGV2LCBuaGlkLCB2bmkpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzc0LVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI4MTgtXFx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihmLVxcdTAwM2VuaCkpIHtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjgxOTpcXHRcXHR2eGxhbl94bWl0X25oKHNrYiwgZGV2LCBmLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODIwLVxcdFxcdFxcdCAgICAgICh2bmkgPyA6IHZ4bGFuLVxcdTAwM2VkZWZhdWx0X2RzdC5yZW1vdGVfdm5pKSwgZGlkX3JzYyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA5OjIwOjUxLjI3Mzg2MTI0NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyMDkwNzAxMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFZYTEFOIE5leHRob3AgVHJhbnNtaXNzaW9uIFBhdGgqKlxuXG5Pa2F5LCBzbyBJJ20gaG9uaW5nIGluIG9uIHRoZSBrZXkgc3ltYm9scyBmb3IgdGhpcyBpbnZlc3RpZ2F0aW9uOiBgdnhsYW5feG1pdF9uaGAgYW5kIGB2eGxhbl94bWl0X25oaWRgLiBUaGVzZSBhcmUgbXkgcHJpbWFyeSBmb2N1cyBwb2ludHMuIEkgc2hvdWxkIGFsc28ga2VlcCBhbiBleWUgb24gYHJ0bV90b19uaF9jb25maWdgLCBgbmV4dGhvcF9jcmVhdGVgLCBgbmhfZmlsbF9ub2RlYCwgYW5kIGBuaF9ubG1zZ19zaXplX3NpbmdsZWAuXG5cbk5vdywgbGV0J3MgZGV0ZXJtaW5lIGlmIGBuZXh0aG9wX2NyZWF0ZWAgaXMgcGVyZm9ybWFuY2UgY3JpdGljYWwuIFRoaW5raW5nIHRocm91Z2ggaXQsIGl0J3MgdHJpZ2dlcmVkIGR1cmluZyBuZXh0aG9wIGNyZWF0aW9uIHRocm91Z2ggbmV0bGluaywgd2hpY2ggZmlybWx5IHBsYWNlcyBpdCBpbiB0aGUgY29udHJvbCBwYXRoLiBgcnRtX3RvX25oX2NvbmZpZ2AgaXMgYWxzbyBjb250cm9sIHBsYW5lLiBgbmhfZmlsbF9ub2RlYCwgaW52b2x2ZWQgaW4gbmV4dGhvcCBkdW1waW5nLCBjbGVhcmx5IGJlbG9uZ3MgdG8gdGhlIGNvbnRyb2wgcGF0aCBhcyB3ZWxsLiBBbmQgYG5oX25sbXNnX3NpemVfc2luZ2xlYCwgYWxzbyBjb250cm9sIHBsYW5lLlxuXG5DcnVjaWFsbHksIGB2eGxhbl94bWl0X25oYCBhbmQgYHZ4bGFuX3htaXRfbmhpZGAgYXJlIGRhdGFwYXRoIGZ1bmN0aW9ucywgYW5kIHRoZXkncmUgc3BlY2lmaWNhbGx5IHRpZWQgdG8gbmV4dGhvcC1iYXNlZCBWWExBTiB0cmFuc21pc3Npb24sIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJJ20gbG9va2luZyB0byBvcHRpbWl6ZS5cblxuQmVmb3JlIEkgZ28gZnVydGhlciwgbGV0J3MgbWFrZSBzdXJlIEkgZG9uJ3QgbmVlZCBhbnkgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZW5hYmxlZC4gVGhlIG9idmlvdXMgb25lIGlzIGBDT05GSUdfVlhMQU5gLCByZXF1aXJlZCBmb3IgdGhlIGRhdGFwYXRoIGZ1bmN0aW9ucy4gSSBzaG91bGQgYWxzbyB0aGluayBhYm91dCBgQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSGAuIE5leHRob3BzIGFyZSBwcmV0dHkgZnVuZGFtZW50YWwgdG8gSVB2NCByb3V0aW5nLCBzbyBJJ2xsIGRvdWJsZS1jaGVjayBgbmV0L2lwdjQvS2NvbmZpZ2AganVzdCB0byBiZSBjZXJ0YWluIHRoYXQgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBwZXJ0aW5lbnQgdG8gbmV4dGhvcCBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6NzY1NiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwOToyMDo1Ny40ODI5MzQyNTlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NzYyMTMwNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV4dGhvcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwOToyMDo1Ny43MzA1Njc2ODRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk0MTMwODY1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSVB2NCBOZXh0IEhvcCBJbnZlc3RpZ2F0aW9uKipcblxuUmlnaHQsIHRoaXMgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMgaXQncyBqdXN0IHN0YW5kYXJkIElQdjQgYmVoYXZpb3Igd2UncmUgZGVhbGluZyB3aXRoLiBObyBtYWpvciBzdXJwcmlzZXMgdGhlcmUuIEJ1dCwgZ2l2ZW4gdGhlIHJlY2VudCBtb2RpZmljYXRpb25zLCBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBrZXJuZWwgY29kZSwgc3BlY2lmaWNhbGx5LCBgbmV0L2lwdjQvbmV4dGhvcC5jYC4gSSBuZWVkIHRvIG1ldGljdWxvdXNseSBjaGVjayBmb3IgYW55IHByZXByb2Nlc3NvciBkaXJlY3RpdmVzLCBhbnkgYCNpZmRlZmAgYmxvY2tzLCBzdXJyb3VuZGluZyB0aGlzIHBhcnRpY3VsYXIgY29kZSBzZWN0aW9uLiBUaGUgZ29hbCBpcyB0byBpZGVudGlmeSBpZiB0aGUgY2hhbmdlcyBhcmUgY29uZGl0aW9uYWxseSBjb21waWxlZCBvciBpZiB0aGV5J3JlIHVuaXZlcnNhbGx5IGFwcGxpZWQuIFVuZGVyc3RhbmRpbmcgdGhlIHNjb3BlIG9mIHRoZSBtb2RpZmljYXRpb25zIGlzIHBhcmFtb3VudC4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MzQ1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDk6MjE6MDEuNjcxODc4NzM1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDk4MDk2NzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5IQV9GREJfUE9SVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9uZXh0aG9wLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV4dGhvcC5jPTMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBydG1fbmhfcG9saWN5X25ld1tdID0ge1xcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTQxLVxcdFtOSEFfRkRCXVxcdFxcdD0geyAudHlwZSA9IE5MQV9GTEFHIH0sXFxubmV0L2lwdjQvbmV4dGhvcC5jOjQyOlxcdFtOSEFfRkRCX1BPUlRdXFx0XFx0PSB7IC50eXBlID0gTkxBX1UxNiB9LFxcbm5ldC9pcHY0L25leHRob3AuYy00My1cXHRbTkhBX1JFU19HUk9VUF1cXHRcXHQ9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmM9OTE1PXN0YXRpYyBpbnQgbmhfZmlsbF9ub2RlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXh0aG9wICpuaCxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy05NjAtXFx0XFx0aWYgKG5oaS1cXHUwMDNlZmRiX3BvcnQgXFx1MDAyNlxcdTAwMjZcXG5uZXQvaXB2NC9uZXh0aG9wLmM6OTYxOlxcdFxcdCAgICBubGFfcHV0X2JlMTYoc2tiLCBOSEFfRkRCX1BPUlQsIG5oaS1cXHUwMDNlZmRiX3BvcnQpKVxcbm5ldC9pcHY0L25leHRob3AuYy05NjItXFx0XFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmM9MTAzOT1zdGF0aWMgc2l6ZV90IG5oX25sbXNnX3NpemVfc2luZ2xlKHN0cnVjdCBuZXh0aG9wICpuaClcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0xMDYyLVxcdGlmIChuaGktXFx1MDAzZWZkYl9uaClcXG5uZXQvaXB2NC9uZXh0aG9wLmM6MTA2MzpcXHRcXHRzeiArPSBubGFfdG90YWxfc2l6ZSgyKTtcXHQvKiBOSEFfRkRCX1BPUlQgKi9cXG5uZXQvaXB2NC9uZXh0aG9wLmMtMTA2NC1cXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYz0zMTAyPXN0YXRpYyBpbnQgcnRtX3RvX25oX2NvbmZpZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzE1OC1cXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzE1OTpcXHRpZiAodGJbTkhBX0ZEQl9QT1JUXSkge1xcbm5ldC9pcHY0L25leHRob3AuYy0zMTYwLVxcdFxcdGlmICghdGJbTkhBX0ZEQl0gfHwgIXRiW05IQV9HQVRFV0FZXSkge1xcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTMxNjQtXFx0XFx0fVxcbm5ldC9pcHY0L25leHRob3AuYzozMTY1OlxcdFxcdGNmZy1cXHUwMDNlbmhfZmRiX3BvcnQgPSBubGFfZ2V0X2JlMTYodGJbTkhBX0ZEQl9QT1JUXSk7XFxubmV0L2lwdjQvbmV4dGhvcC5jLTMxNjYtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwOToyMTowMy43Njk5ODI2NDJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYzOTM5OTExNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkFuYWx5emluZyBWWExBTiBDb25maWd1cmF0aW9uIEludGVyYWN0aW9ucyoqXG5cbkFscmlnaHQsIG5vIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzLCBzcGVjaWZpY2FsbHkgYCNpZmRlZmBzLCBhcmUgYmVpbmcgdXNlZCB0byBjb25kaXRpb25hbGx5IGluY2x1ZGUgY29kZSByZWxhdGVkIHRvIGBOSEFfRkRCX1BPUlRgLiBUaGF0J3MgZ29vZCB0byBrbm93IOKAkyBmZXdlciBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBnb3RjaGFzLiBUaGUgY3VycmVudCBjb25maWd1cmF0aW9uIGlzIHNpbXBseSBgVlhMQU5gLlxuXG5Ob3csIEkgbmVlZCB0byBmb2N1cyBvbiB0aGVzZSBzcGVjaWZpYyBzeW1ib2xzOiBgcnRtX3RvX25oX2NvbmZpZ2AsIGBuZXh0aG9wX2NyZWF0ZWAsIGBuaF9maWxsX25vZGVgLCBgbmhfbmxtc2dfc2l6ZV9zaW5nbGVgLCBgdnhsYW5feG1pdF9uaGAsIGFuZCBgdnhsYW5feG1pdF9uaGlkYC4gVGhlc2UgYXBwZWFyIHRvIGJlIHRoZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkIGluIHRoZSBWWExBTiBuZXh0LWhvcCBjb25maWd1cmF0aW9uIHByb2Nlc3MuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdW5kZXJzdGFuZGluZyBob3cgdGhleSBpbnRlcmFjdCwgaG93IG5leHQgaG9wcyBhcmUgY3JlYXRlZCwgZmlsbGVkLCBhbmQgdHJhbnNtaXR0ZWQuXG5cbldhaXQgYSBzZWNvbmQuLi4gYSBxdWljayByZWFsaXR5IGNoZWNrLiBgdnhsYW5feG1pdF9uaGAgYW5kIGB2eGxhbl94bWl0X25oaWRgIGFyZSAqc3RhdGljKiBmdW5jdGlvbnMsIGFuZCBJJ20gcHJldHR5IHN1cmUgdGhleSBhcmUgaW4gYGRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY2AuIEkgc2hvdWxkIHZlcmlmeSB0aG9zZSBuYW1lcyB0byBtYWtlIHN1cmUuIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhhdCBJJ20gcmVmZXJlbmNpbmcgdGhlIGNvcnJlY3QgZnVuY3Rpb24gZGVmaW5pdGlvbnMuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhlc2UgYXJlIGltcG9ydGFudCwgYnV0IHN0YXRpYyBmdW5jdGlvbnMgY2FuIGludHJvZHVjZSB1bmV4cGVjdGVkIGJlaGF2aW9yIGlmIG5vdCBhY2NvdW50ZWQgZm9yIGNvcnJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTIxNywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwOToyMTowOC40MDkzODQzNThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5ODYxOTI2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2eGxhbl94bWl0X25oXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MjM0ND12b2lkIHZ4bGFuX3htaXRfb25lKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY0OS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjY1MDpzdGF0aWMgdm9pZCB2eGxhbl94bWl0X25oKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2NTEtXFx0XFx0XFx0ICBzdHJ1Y3QgdnhsYW5fZmRiICpmLCBfX2JlMzIgdm5pLCBib29sIGRpZF9yc2MpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY3OS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjY4MDpzdGF0aWMgbmV0ZGV2X3R4X3QgdnhsYW5feG1pdF9uaGlkKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2ODEtXFx0XFx0XFx0XFx0ICAgdTMyIG5oaWQsIF9fYmUzMiB2bmkpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MjcyNT1zdGF0aWMgbmV0ZGV2X3R4X3QgdnhsYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI3NzItXFx0aWYgKG5oaWQpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI3NzM6XFx0XFx0cmV0dXJuIHZ4bGFuX3htaXRfbmhpZChza2IsIGRldiwgbmhpZCwgdm5pKTtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjc3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODE4LVxcdGlmIChyY3VfYWNjZXNzX3BvaW50ZXIoZi1cXHUwMDNlbmgpKSB7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI4MTk6XFx0XFx0dnhsYW5feG1pdF9uaChza2IsIGRldiwgZixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjgyMC1cXHRcXHRcXHQgICAgICAodm5pID8gOiB2eGxhbi1cXHUwMDNlZGVmYXVsdF9kc3QucmVtb3RlX3ZuaSksIGRpZF9yc2MpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwOToyMTowOS4wMDgwMTMwODZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI2MzE2NjI2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGFzc2Vzc21lbnQgb2YgdGhpcyBwYXRjaCwgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIHdobyB1bmRlcnN0YW5kcyB0aGlzIGxvdy1sZXZlbCBuZXR3b3JraW5nIGNvZGU6XG5cbioqQW5hbHl6aW5nIHRoZSBQYXRjaCdzIEZ1bmN0aW9uYWxpdHkgYW5kIFRlc3RhYmlsaXR5KipcblxuUmlnaHQsIHNvIHRoZXNlIGFyZSBjb25maXJtZWQgYXMgc3RhdGljIGZ1bmN0aW9ucywgd2hpY2ggaXMgZ29vZCB0byBrZWVwIGluIG1pbmQgZm9yIHNjb3BpbmcgYW5kIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuIE15IGluaXRpYWwgcXVlc3Rpb24gaXMgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IG5lZWQgdG8gYmUgY29uc2lkZXJlZC4gVGhlIHBhdGNoIGluY2x1ZGVzIGEgbmV3IHNlbGZ0ZXN0LCBgZmliX25leHRob3BzX2ZkYl9wb3J0LnNoYCwgd2hpY2ggaXMgYSBwb3NpdGl2ZSBzaWduLiBGdW5jdGlvbmFsbHksIHRoaXMgcGF0Y2ggbG9va3Mgc29saWQsIGFuZCBpdCdzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQncyByaXBlIGZvciBmdXp6aW5nLiBHb29kIHRvIHNlZSB0aGV5J3JlIHRoaW5raW5nIGFib3V0IHRoYXQuXG5cbk5vdywgbGV0J3MgZHJpbGwgZG93biB0byB0aGUgY3JpdGljYWwgc3ltYm9scyB0aGUgcGF0Y2ggZm9jdXNlcyBvbi4gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGVzZSBhcmUgdGhlIGNvcnJlY3Qgb25lcy4gRXhhbWluaW5nIHRoZSBjb2RlLCBJIHNlZTpcblxuKiAgIGBydG1fdG9fbmhfY29uZmlnYFxuKiAgIGBuZXh0aG9wX2NyZWF0ZWBcbiogICBgbmhfZmlsbF9ub2RlYFxuKiAgIGB2eGxhbl94bWl0X25oYFxuKiAgIGB2eGxhbl94bWl0X25oaWRgXG5cblllcCwgdGhlc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zLCBhbmQgdGhlc2UgY2hvaWNlcyBtYWtlIHNlbnNlIGdpdmVuIHdoYXQgSSdtIGV4cGVjdGluZyB0aGlzIHBhdGNoIHRvIGFkZHJlc3MuIFRoYXQncyBhIGdvb2Qgc2V0IG9mIGZvY3VzIHBvaW50cyBmb3IgdGhpcyB3b3JrLiBOb3cgSSBjYW4gbW92ZSBvbiB0byB0aGUgbmV4dCBzZXQgb2YgY29kZSBibG9ja3MuIExldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyMTIsIk91dHB1dFRva2VucyI6MTQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA5OjIxOjE0LjI3MTE4MjAxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkyNDY0OTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWWExBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bV90b19uaF9jb25maWdcIixcbiAgICBcIm5leHRob3BfY3JlYXRlXCIsXG4gICAgXCJuaF9maWxsX25vZGVcIixcbiAgICBcInZ4bGFuX3htaXRfbmhcIixcbiAgICBcInZ4bGFuX3htaXRfbmhpZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbmV0bGluayBhdHRyaWJ1dGUgTkhBX0ZEQl9QT1JUIGZvciBmZGIgbmV4dGhvcHMsIG1vZGlmeWluZyBuZXh0aG9wIGNyZWF0aW9uIGFuZCBkdW1waW5nIGxvZ2ljLCBhcyB3ZWxsIGFzIFZYTEFOIHRyYW5zbWlzc2lvbiBwYXRocyB0byB1dGlsaXplIHRoaXMgbmV3IHBvcnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmtpbmcgYW5kIFZYTEFOIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWWExBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bV90b19uaF9jb25maWdcIixcbiAgICBcIm5leHRob3BfY3JlYXRlXCIsXG4gICAgXCJuaF9maWxsX25vZGVcIixcbiAgICBcInZ4bGFuX3htaXRfbmhcIixcbiAgICBcInZ4bGFuX3htaXRfbmhpZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbmV0bGluayBhdHRyaWJ1dGUgTkhBX0ZEQl9QT1JUIGZvciBmZGIgbmV4dGhvcHMsIG1vZGlmeWluZyBuZXh0aG9wIGNyZWF0aW9uIGFuZCBkdW1waW5nIGxvZ2ljLCBhcyB3ZWxsIGFzIFZYTEFOIHRyYW5zbWlzc2lvbiBwYXRocyB0byB1dGlsaXplIHRoaXMgbmV3IHBvcnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmtpbmcgYW5kIFZYTEFOIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9vdqk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-17 08:58:13 +0000 UTC FinishedAt: 2026-07-17 09:21:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VXLAN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VXLAN" ], "series_id": "2b022f27-fc4e-4e8c-99e1-975f048f73ea" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtm_to_nh_config", "nexthop_create", "nh_fill_node", "vxlan_xmit_nh", "vxlan_xmit_nhid" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE3IDA5OjIwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZYTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRtX3RvX25oX2NvbmZpZyYjMzQ7LAogICAgJiMzNDtuZXh0aG9wX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtuaF9maWxsX25vZGUmIzM0OywKICAgICYjMzQ7dnhsYW5feG1pdF9uaCYjMzQ7LAogICAgJiMzNDt2eGxhbl94bWl0X25oaWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBuZXRsaW5rIGF0dHJpYnV0ZSBOSEFfRkRCX1BPUlQgZm9yIGZkYiBuZXh0aG9wcywgbW9kaWZ5aW5nIG5leHRob3AgY3JlYXRpb24gYW5kIGR1bXBpbmcgbG9naWMsIGFzIHdlbGwgYXMgVlhMQU4gdHJhbnNtaXNzaW9uIHBhdGhzIHRvIHV0aWxpemUgdGhpcyBuZXcgcG9ydC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29ya2luZyBhbmQgVlhMQU4gZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA5OjIwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMzU2MTY2MTY3MTY2Y2U0NGJjNWQzZDcyNjA5ZGI3MDJkYmJjZTAwMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDE3IDA5OjIwOjMzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L25leHRob3AuaCBiL2luY2x1ZGUvbmV0L25leHRob3AuaFxuaW5kZXggNTcyZTY5Y2RhNDc2NmQuLjdmYjYxMmE3MzA3ZjI1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbmV4dGhvcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9uZXh0aG9wLmhcbkBAIC0yOCw2ICYjNDM7MjgsNyBAQCBzdHJ1Y3QgbmhfY29uZmlnIHtcbiBcdHU4XHRcdG5oX3Byb3RvY29sO1xuIFx0dThcdFx0bmhfYmxhY2tob2xlO1xuIFx0dThcdFx0bmhfZmRiO1xuJiM0MztcdF9fYmUxNlx0XHRuaF9mZGJfcG9ydDtcbiBcdHUzMlx0XHRuaF9mbGFncztcbiBcbiBcdGludFx0XHRuaF9pZmluZGV4O1xuQEAgLTYzLDYgJiM0Mzs2NCw3IEBAIHN0cnVjdCBuaF9pbmZvIHtcbiBcdHU4XHRcdFx0ZmFtaWx5O1xuIFx0Ym9vbFx0XHRcdHJlamVjdF9uaDtcbiBcdGJvb2xcdFx0XHRmZGJfbmg7XG4mIzQzO1x0X19iZTE2XHRcdFx0ZmRiX3BvcnQ7XG4gXG4gXHR1bmlvbiB7XG4gXHRcdHN0cnVjdCBmaWJfbmhfY29tbW9uXHRmaWJfbmhjO1xuQEAgLTU3NCw3ICYjNDM7NTc2LDggQEAgc3RydWN0IGZpYl9uaF9jb21tb24gKm5leHRob3BfZmRiX25oYyhzdHJ1Y3QgbmV4dGhvcCAqbmgpXG4gfVxuIFxuIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZpYl9uaF9jb21tb24gKm5leHRob3BfcGF0aF9mZGJfcmVzdWx0KHN0cnVjdCBuZXh0aG9wICpuaCxcbi1cdFx0XHRcdFx0XHRcdCAgICBpbnQgaGFzaClcbiYjNDM7XHRcdFx0XHRcdFx0ICAgIGludCBoYXNoLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgX19iZTE2ICpmZGJfcG9ydClcbiB7XG4gXHRzdHJ1Y3QgbmhfaW5mbyAqbmhpO1xuIFx0c3RydWN0IG5leHRob3AgKm5ocDtcbkBAIC01ODMsNiAmIzQzOzU4Niw4IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZpYl9uaF9jb21tb24gKm5leHRob3BfcGF0aF9mZGJfcmVzdWx0KHN0cnVjdCBuZXh0aG9wICpuaCxcbiBcdGlmICh1bmxpa2VseSghbmhwKSlcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHRuaGkgPSByY3VfZGVyZWZlcmVuY2UobmhwLVx1MDAzZW5oX2luZm8pO1xuJiM0MztcdGlmIChmZGJfcG9ydClcbiYjNDM7XHRcdCpmZGJfcG9ydCA9IG5oaS1cdTAwM2VmZGJfcG9ydDtcbiBcdHJldHVybiBcdTAwMjZuaGktXHUwMDNlZmliX25oYztcbiB9XG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvdnhsYW4uaCBiL2luY2x1ZGUvbmV0L3Z4bGFuLmhcbmluZGV4IGRmYmE4OTY5NWVmY2ZhLi5kZTQxYjM3NDY4OGYyOSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3Z4bGFuLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L3Z4bGFuLmhcbkBAIC01NjcsOCAmIzQzOzU2Nyw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3Qoc3RydWN0IG5leHRob3AgKm5oLFxuIFx0XHRcdFx0XHQgICAgc3RydWN0IHZ4bGFuX3Jkc3QgKnJkc3QpXG4ge1xuIFx0c3RydWN0IGZpYl9uaF9jb21tb24gKm5oYztcbiYjNDM7XHRfX2JlMTYgZmRiX3BvcnQgPSAwO1xuIFxuLVx0bmhjID0gbmV4dGhvcF9wYXRoX2ZkYl9yZXN1bHQobmgsIGhhc2ggXHUwMDNlXHUwMDNlIDEpO1xuJiM0MztcdG5oYyA9IG5leHRob3BfcGF0aF9mZGJfcmVzdWx0KG5oLCBoYXNoIFx1MDAzZVx1MDAzZSAxLCBcdTAwMjZmZGJfcG9ydCk7XG4gXHRpZiAodW5saWtlbHkoIW5oYykpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbkBAIC01ODMsNiAmIzQzOzU4NCw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3Qoc3RydWN0IG5leHRob3AgKm5oLFxuIFx0XHRicmVhaztcbiBcdH1cbiBcbiYjNDM7XHRyZHN0LVx1MDAzZXJlbW90ZV9wb3J0ID0gZmRiX3BvcnQ7XG4mIzQzO1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9uZXh0aG9wLmggYi9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oXG5pbmRleCBiYzQ5YmFmNGEyNjdmMC4uZTU4N2JiZjNiODkwYTMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oXG5AQCAtODMsNiAmIzQzOzgzLDkgQEAgZW51bSB7XG4gXHQvKiB1MzI7IHJlYWQtb25seTsgd2hldGhlciBhbnkgZHJpdmVyIGNvbGxlY3RzIEhXIHN0YXRzICovXG4gXHROSEFfSFdfU1RBVFNfVVNFRCxcbiBcbiYjNDM7XHQvKiBiZTE2OyBVRFAgZGVzdGluYXRpb24gcG9ydCBmb3IgYW4gZmRiIG5leHRob3AgKGUuZy4gVlhMQU4pICovXG4mIzQzO1x0TkhBX0ZEQl9QT1JULFxuJiM0MztcbiBcdF9fTkhBX01BWCxcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L25leHRob3AuYyBiL25ldC9pcHY0L25leHRob3AuY1xuaW5kZXggNjIwNWJkNTdhYTg1MjAuLjViMjdjYzlhOTE5MWQ3IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvbmV4dGhvcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9uZXh0aG9wLmNcbkBAIC0zOSw2ICYjNDM7MzksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgcnRtX25oX3BvbGljeV9uZXdbXSA9IHtcbiBcdFtOSEFfRU5DQVBfVFlQRV1cdD0geyAudHlwZSA9IE5MQV9VMTYgfSxcbiBcdFtOSEFfRU5DQVBdXHRcdD0geyAudHlwZSA9IE5MQV9ORVNURUQgfSxcbiBcdFtOSEFfRkRCXVx0XHQ9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LFxuJiM0MztcdFtOSEFfRkRCX1BPUlRdXHRcdD0geyAudHlwZSA9IE5MQV9VMTYgfSxcbiBcdFtOSEFfUkVTX0dST1VQXVx0XHQ9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXG4gXHRbTkhBX0hXX1NUQVRTX0VOQUJMRV1cdD0gTkxBX1BPTElDWV9NQVgoTkxBX1UzMiwgdHJ1ZSksXG4gfTtcbkBAIC05NTYsNiAmIzQzOzk1Nyw5IEBAIHN0YXRpYyBpbnQgbmhfZmlsbF9ub2RlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXh0aG9wICpuaCxcbiBcdH0gZWxzZSBpZiAobmhpLVx1MDAzZWZkYl9uaCkge1xuIFx0XHRpZiAobmxhX3B1dF9mbGFnKHNrYiwgTkhBX0ZEQikpXG4gXHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4mIzQzO1x0XHRpZiAobmhpLVx1MDAzZWZkYl9wb3J0IFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIG5sYV9wdXRfYmUxNihza2IsIE5IQV9GREJfUE9SVCwgbmhpLVx1MDAzZWZkYl9wb3J0KSlcbiYjNDM7XHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4gXHR9IGVsc2Uge1xuIFx0XHRjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xuIFxuQEAgLTEwNTUsNiAmIzQzOzEwNTksOSBAQCBzdGF0aWMgc2l6ZV90IG5oX25sbXNnX3NpemVfc2luZ2xlKHN0cnVjdCBuZXh0aG9wICpuaClcbiBcdFx0YnJlYWs7XG4gXHR9XG4gXG4mIzQzO1x0aWYgKG5oaS1cdTAwM2VmZGJfbmgpXG4mIzQzO1x0XHRzeiAmIzQzOz0gbmxhX3RvdGFsX3NpemUoMik7XHQvKiBOSEFfRkRCX1BPUlQgKi9cbiYjNDM7XG4gXHRpZiAobmhpLVx1MDAzZWZpYl9uaGMubmhjX2x3dHN0YXRlKSB7XG4gXHRcdHN6ICYjNDM7PSBsd3R1bm5lbF9nZXRfZW5jYXBfc2l6ZShuaGktXHUwMDNlZmliX25oYy5uaGNfbHd0c3RhdGUpO1xuIFx0XHRzeiAmIzQzOz0gbmxhX3RvdGFsX3NpemUoMik7ICAvKiBOSEFfRU5DQVBfVFlQRSAqL1xuQEAgLTI5NTYsOCAmIzQzOzI5NjMsMTAgQEAgc3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuaF9jb25maWcgKmNmZyxcbiBcdG5oaS1cdTAwM2VmYW1pbHkgPSBjZmctXHUwMDNlbmhfZmFtaWx5O1xuIFx0bmhpLVx1MDAzZWZpYl9uaGMubmhjX3Njb3BlID0gUlRfU0NPUEVfTElOSztcbiBcbi1cdGlmIChjZmctXHUwMDNlbmhfZmRiKVxuJiM0MztcdGlmIChjZmctXHUwMDNlbmhfZmRiKSB7XG4gXHRcdG5oaS1cdTAwM2VmZGJfbmggPSAxO1xuJiM0MztcdFx0bmhpLVx1MDAzZWZkYl9wb3J0ID0gY2ZnLVx1MDAzZW5oX2ZkYl9wb3J0O1xuJiM0MztcdH1cbiBcbiBcdGlmIChjZmctXHUwMDNlbmhfYmxhY2tob2xlKSB7XG4gXHRcdG5oaS1cdTAwM2VyZWplY3RfbmggPSAxO1xuQEAgLTMxNDcsNiAmIzQzOzMxNTYsMTUgQEAgc3RhdGljIGludCBydG1fdG9fbmhfY29uZmlnKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0Y2ZnLVx1MDAzZW5oX2ZkYiA9IG5sYV9nZXRfZmxhZyh0YltOSEFfRkRCXSk7XG4gXHR9XG4gXG4mIzQzO1x0aWYgKHRiW05IQV9GREJfUE9SVF0pIHtcbiYjNDM7XHRcdGlmICghdGJbTkhBX0ZEQl0gfHwgIXRiW05IQV9HQVRFV0FZXSkge1xuJiM0MztcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssXG4mIzQzO1x0XHRcdFx0ICAgICAgIFwmIzM0O0ZEQiBwb3J0IGNhbiBvbmx5IGJlIHNldCBvbiBmZGIgbmV4dGhvcHMgdGhhdCBoYXZlIGEgZ2F0ZXdheVwmIzM0Oyk7XG4mIzQzO1x0XHRcdGdvdG8gb3V0O1xuJiM0MztcdFx0fVxuJiM0MztcdFx0Y2ZnLVx1MDAzZW5oX2ZkYl9wb3J0ID0gbmxhX2dldF9iZTE2KHRiW05IQV9GREJfUE9SVF0pO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRpZiAodGJbTkhBX0dST1VQXSkge1xuIFx0XHRpZiAobmhtLVx1MDAzZW5oX2ZhbWlseSAhPSBBRl9VTlNQRUMpIHtcbiBcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwmIzM0O0ludmFsaWQgZmFtaWx5IGZvciBncm91cFwmIzM0Oyk7XG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXG5pbmRleCA3MDhkOTYwYWUwN2Q1Yi4uYzA2ZWI0OTI3Y2Q5Y2IgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZVxuQEAgLTM2LDYgJiM0MzszNiw3IEBAIFRFU1RfUFJPR1MgOj0gXFxcbiBcdGZpYl9uZXh0aG9wX211bHRpcHJlZml4LnNoIFxcXG4gXHRmaWJfbmV4dGhvcF9ub25ndy5zaCBcXFxuIFx0ZmliX25leHRob3BzLnNoIFxcXG4mIzQzO1x0ZmliX25leHRob3BzX2ZkYl9wb3J0LnNoIFxcXG4gXHRmaWJfcnVsZV90ZXN0cy5zaCBcXFxuIFx0ZmliX3Rlc3RzLnNoIFxcXG4gXHRmaW5fYWNrX2xhdC5zaCBcXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9maWJfbmV4dGhvcHNfZmRiX3BvcnQuc2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZmliX25leHRob3BzX2ZkYl9wb3J0LnNoXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjhiNDAxYzZkMjRhMTRmXG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZmliX25leHRob3BzX2ZkYl9wb3J0LnNoXG5AQCAtMCwwICYjNDM7MSw3OCBAQFxuJiM0MzsjIS9iaW4vYmFzaFxuJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOyNcbiYjNDM7IyBDb250cm9sLXBsYW5lIHNlbGZ0ZXN0IGZvciBwZXItbmV4dGhvcCBWWExBTiBmZGIgZGVzdGluYXRpb24gcG9ydFxuJiM0MzsjIChOSEFfRkRCX1BPUlQpLiAgVmVyaWZpZXMgdGhlIGFjY2VwdC9yZWplY3QgcnVsZXMgYW5kIHRoZSBkdW1wIHJvdW5kdHJpcC5cbiYjNDM7IyBObyBkYXRhcGF0aCB0cmFmZmljIGhlcmUgLS0gc2VlIHRlc3RzL2ludGVnL3Z4bGFuLWZkYi1wb3J0LWludGVnLnNoIGZvciB0aGVcbiYjNDM7IyByZWFsIGZvcndhcmRpbmcgdGVzdC5cbiYjNDM7I1xuJiM0MzsjIFJlcXVpcmVzOiBwYXRjaGVkIGtlcm5lbCAoTkhBX0ZEQl9QT1JUKSBhbmQgcGF0Y2hlZCBpcHJvdXRlMiAodGhlIFwmIzM0O3BvcnRcJiMzNDtcbiYjNDM7IyBrZXl3b3JkIG9uIFwmIzM0O2lwIG5leHRob3AgLi4uIGZkYlwmIzM0OykuICBTS0lQcyBjbGVhbmx5IG90aGVyd2lzZS5cbiYjNDM7XG4mIzQzO3NldCAtdVxuJiM0MztcbiYjNDM7a3NmdF9za2lwPTRcbiYjNDM7TlM9XCYjMzQ7bmhmZGJwb3J0LSQkXCYjMzQ7XG4mIzQzO0lQPVwmIzM0O2lwIC1uZXRucyAkTlNcJiMzNDtcbiYjNDM7cmV0PTBcbiYjNDM7XG4mIzQzO2xvZ190ZXN0KCkge1x0IyAkMSBhY3R1YWxfcmMgICQyIGV4cGVjdGVkX3JjICAkMyBuYW1lXG4mIzQzO1x0aWYgWyBcJiMzNDskMVwmIzM0OyA9IFwmIzM0OyQyXCYjMzQ7IF07IHRoZW5cbiYjNDM7XHRcdHByaW50ZiBcJiMzNDtURVNUOiAlLTU4cyBbIE9LIF1cXG5cJiMzNDsgXCYjMzQ7JDNcJiMzNDtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRwcmludGYgXCYjMzQ7VEVTVDogJS01OHMgW0ZBSUxdIChyYz0kMSB3YW50PSQyKVxcblwmIzM0OyBcJiMzNDskM1wmIzM0O1xuJiM0MztcdFx0cmV0PTFcbiYjNDM7XHRmaVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsjIHBhc3NlcyAocmV0dXJucyAwKSBpZmYgdGhlIGNvbW1hbmQgRkFJTFNcbiYjNDM7ZXhwZWN0X2ZhaWwoKSB7XG4mIzQzO1x0aWYgXCYjMzQ7JEBcJiMzNDsgXHUwMDNlL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxOyB0aGVuIHJldHVybiAxOyBlbHNlIHJldHVybiAwOyBmaVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztjbGVhbnVwKCkgeyBpcCBuZXRucyBkZWwgXCYjMzQ7JE5TXCYjMzQ7IDJcdTAwM2UvZGV2L251bGw7IH1cbiYjNDM7XG4mIzQzO2NvbW1hbmQgLXYgaXAgXHUwMDNlL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxIHx8IHsgZWNobyBcJiMzNDtTS0lQOiBpcHJvdXRlMiBub3QgZm91bmRcJiMzNDs7IGV4aXQgJGtzZnRfc2tpcDsgfVxuJiM0MztpcCBuZXh0aG9wIGhlbHAgMlx1MDAzZVx1MDAyNjEgfCBncmVwIC1xIGZkYiB8fCB7IGVjaG8gXCYjMzQ7U0tJUDogbm8gZmRiIG5leHRob3Agc3VwcG9ydFwmIzM0OzsgZXhpdCAka3NmdF9za2lwOyB9XG4mIzQzO1xuJiM0Mzt0cmFwIGNsZWFudXAgRVhJVFxuJiM0MztjbGVhbnVwXG4mIzQzO2lwIG5ldG5zIGFkZCBcJiMzNDskTlNcJiMzNDsgfHwgeyBlY2hvIFwmIzM0O1NLSVA6IGNhbm5vdCBjcmVhdGUgbmV0bnNcJiMzNDs7IGV4aXQgJGtzZnRfc2tpcDsgfVxuJiM0MzskSVAgbGluayBzZXQgbG8gdXBcbiYjNDM7XG4mIzQzOyMgUHJvYmUgZm9yIFwmIzM0O3BvcnRcJiMzNDsga2V5d29yZCAmIzQzOyBrZXJuZWwgTkhBX0ZEQl9QT1JUIHN1cHBvcnQ7IFNLSVAgaWYgbWlzc2luZy5cbiYjNDM7aWYgISAkSVAgbmV4dGhvcCBhZGQgaWQgMSB2aWEgMTAuMC4wLjEgZmRiIHBvcnQgNDc5MCAyXHUwMDNlL2Rldi9udWxsOyB0aGVuXG4mIzQzO1x0ZWNobyBcJiMzNDtTS0lQOiAmIzM5O2lwIG5leHRob3AgLi4uIGZkYiBwb3J0JiMzOTsgdW5zdXBwb3J0ZWQgKG5lZWRzIHBhdGNoZWQga2VybmVsICYjNDM7IGlwcm91dGUyKVwmIzM0O1xuJiM0MztcdGV4aXQgJGtzZnRfc2tpcFxuJiM0MztmaVxuJiM0Mztsb2dfdGVzdCAwIDAgXCYjMzQ7YWRkIGZkYiBuZXh0aG9wIHdpdGggcG9ydFwmIzM0O1xuJiM0MztcbiYjNDM7IyBEdW1wIHJvdW5kdHJpcCBtdXN0IGVjaG8gdGhlIHBvcnQgYmFjay5cbiYjNDM7JElQIG5leHRob3Agc2hvdyBpZCAxIHwgZ3JlcCAtcXcgXCYjMzQ7cG9ydCA0NzkwXCYjMzQ7XG4mIzQzO2xvZ190ZXN0ICQ/IDAgXCYjMzQ7ZHVtcCBzaG93cyBmZGIgcG9ydCA0NzkwXCYjMzQ7XG4mIzQzO1xuJiM0MzsjIFJlamVjdDogcG9ydCBvbiBhIHJvdXRlZCAobm9uLWZkYikgbmV4dGhvcC5cbiYjNDM7ZXhwZWN0X2ZhaWwgJElQIG5leHRob3AgYWRkIGlkIDIgdmlhIDEwLjAuMC4xIGRldiBsbyBwb3J0IDQ3OTBcbiYjNDM7bG9nX3Rlc3QgJD8gMCBcJiMzNDtyZWplY3QgcG9ydCBvbiBub24tZmRiIG5leHRob3BcJiMzNDtcbiYjNDM7XG4mIzQzOyMgUmVqZWN0OiBmZGIgcG9ydCB3aXRob3V0IGEgZ2F0ZXdheS5cbiYjNDM7ZXhwZWN0X2ZhaWwgJElQIG5leHRob3AgYWRkIGlkIDMgZmRiIHBvcnQgNDc5MFxuJiM0Mztsb2dfdGVzdCAkPyAwIFwmIzM0O3JlamVjdCBmZGIgcG9ydCB3aXRob3V0IGdhdGV3YXlcJiMzNDtcbiYjNDM7XG4mIzQzOyMgVGhlIEhBIGNhc2U6IGEgZ3JvdXAgd2hvc2UgbGVncyBzaGFyZSB0aGUgZ2F0ZXdheSBidXQgZGlmZmVyIGluIHBvcnQuXG4mIzQzOyRJUCBuZXh0aG9wIGFkZCBpZCAxMCB2aWEgMTAuMC4wLjEgZmRiIHBvcnQgNDc4OSBcdTAwMjZcdTAwMjYgXFxcbiYjNDM7JElQIG5leHRob3AgYWRkIGlkIDExIHZpYSAxMC4wLjAuMSBmZGIgcG9ydCA1Nzg5IFx1MDAyNlx1MDAyNiBcXFxuJiM0MzskSVAgbmV4dGhvcCBhZGQgaWQgMTAwIGdyb3VwIDEwLzExIGZkYlxuJiM0Mztsb2dfdGVzdCAkPyAwIFwmIzM0O2FkZCBmZGIgbmV4dGhvcCBncm91cCB3aXRoIGRpZmZlcmluZyBwb3J0c1wmIzM0O1xuJiM0MztcbiYjNDM7IyBBIGZkYiBuZXh0aG9wIHdpdGhvdXQgYSBwb3J0IG11c3QgTk9UIGVtaXQgb25lIChiYWNrd2FyZCBjb21wYXQpLlxuJiM0MzskSVAgbmV4dGhvcCBhZGQgaWQgMjAgdmlhIDEwLjAuMC4xIGZkYlxuJiM0MzskSVAgbmV4dGhvcCBzaG93IGlkIDIwIHwgZ3JlcCAtcXcgXCYjMzQ7cG9ydFwmIzM0O1xuJiM0Mztsb2dfdGVzdCAkPyAxIFwmIzM0O2ZkYiBuZXh0aG9wIHdpdGhvdXQgcG9ydCBvbWl0cyBOSEFfRkRCX1BPUlRcJiMzNDtcbiYjNDM7XG4mIzQzO2lmIFsgJHJldCAtZXEgMCBdOyB0aGVuXG4mIzQzO1x0ZWNobyBcJiMzNDtQQVNTOiBhbGwgTkhBX0ZEQl9QT1JUIGNvbnRyb2wtcGxhbmUgY2hlY2tzXCYjMzQ7XG4mIzQzO2Vsc2VcbiYjNDM7XHRlY2hvIFwmIzM0O0ZBSUw6IG9uZSBvciBtb3JlIE5IQV9GREJfUE9SVCBjaGVja3MgZmFpbGVkXCYjMzQ7XG4mIzQzO2ZpXG4mIzQzO2V4aXQgJHJldFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA5OjIwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZYTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRtX3RvX25oX2NvbmZpZyYjMzQ7LAogICAgJiMzNDtuZXh0aG9wX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtuaF9maWxsX25vZGUmIzM0OywKICAgICYjMzQ7dnhsYW5feG1pdF9uaCYjMzQ7LAogICAgJiMzNDt2eGxhbl94bWl0X25oaWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBuZXRsaW5rIGF0dHJpYnV0ZSBOSEFfRkRCX1BPUlQgZm9yIGZkYiBuZXh0aG9wcywgbW9kaWZ5aW5nIG5leHRob3AgY3JlYXRpb24gYW5kIGR1bXBpbmcgbG9naWMsIGFzIHdlbGwgYXMgVlhMQU4gdHJhbnNtaXNzaW9uIHBhdGhzIHRvIHV0aWxpemUgdGhpcyBuZXcgcG9ydC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29ya2luZyBhbmQgVlhMQU4gZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzNTYxNjYxNjcxNjZjZTQ0YmM1ZDNkNzI2MDlkYjcwMmRiYmNlMDAxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBKdWwgMTcgMDk6MjA6MzMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9uZXh0aG9wLmggYi9pbmNsdWRlL25ldC9uZXh0aG9wLmgKaW5kZXggNTcyZTY5Y2RhNDc2NmQuLjdmYjYxMmE3MzA3ZjI1IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9uZXh0aG9wLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvbmV4dGhvcC5oCkBAIC0yOCw2ICYjNDM7MjgsNyBAQCBzdHJ1Y3QgbmhfY29uZmlnIHsKIAl1OAkJbmhfcHJvdG9jb2w7CiAJdTgJCW5oX2JsYWNraG9sZTsKIAl1OAkJbmhfZmRiOwomIzQzOwlfX2JlMTYJCW5oX2ZkYl9wb3J0OwogCXUzMgkJbmhfZmxhZ3M7CiAKIAlpbnQJCW5oX2lmaW5kZXg7CkBAIC02Myw2ICYjNDM7NjQsNyBAQCBzdHJ1Y3QgbmhfaW5mbyB7CiAJdTgJCQlmYW1pbHk7CiAJYm9vbAkJCXJlamVjdF9uaDsKIAlib29sCQkJZmRiX25oOwomIzQzOwlfX2JlMTYJCQlmZGJfcG9ydDsKIAogCXVuaW9uIHsKIAkJc3RydWN0IGZpYl9uaF9jb21tb24JZmliX25oYzsKQEAgLTU3NCw3ICYjNDM7NTc2LDggQEAgc3RydWN0IGZpYl9uaF9jb21tb24gKm5leHRob3BfZmRiX25oYyhzdHJ1Y3QgbmV4dGhvcCAqbmgpCiB9CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZpYl9uaF9jb21tb24gKm5leHRob3BfcGF0aF9mZGJfcmVzdWx0KHN0cnVjdCBuZXh0aG9wICpuaCwKLQkJCQkJCQkgICAgaW50IGhhc2gpCiYjNDM7CQkJCQkJICAgIGludCBoYXNoLAomIzQzOwkJCQkJCSAgICBfX2JlMTYgKmZkYl9wb3J0KQogewogCXN0cnVjdCBuaF9pbmZvICpuaGk7CiAJc3RydWN0IG5leHRob3AgKm5ocDsKQEAgLTU4Myw2ICYjNDM7NTg2LDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmV4dGhvcF9wYXRoX2ZkYl9yZXN1bHQoc3RydWN0IG5leHRob3AgKm5oLAogCWlmICh1bmxpa2VseSghbmhwKSkKIAkJcmV0dXJuIE5VTEw7CiAJbmhpID0gcmN1X2RlcmVmZXJlbmNlKG5ocC0mZ3Q7bmhfaW5mbyk7CiYjNDM7CWlmIChmZGJfcG9ydCkKJiM0MzsJCSpmZGJfcG9ydCA9IG5oaS0mZ3Q7ZmRiX3BvcnQ7CiAJcmV0dXJuICZhbXA7bmhpLSZndDtmaWJfbmhjOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC92eGxhbi5oIGIvaW5jbHVkZS9uZXQvdnhsYW4uaAppbmRleCBkZmJhODk2OTVlZmNmYS4uZGU0MWIzNzQ2ODhmMjkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3Z4bGFuLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvdnhsYW4uaApAQCAtNTY3LDggJiM0Mzs1NjcsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdnhsYW5fZmRiX25oX3BhdGhfc2VsZWN0KHN0cnVjdCBuZXh0aG9wICpuaCwKIAkJCQkJICAgIHN0cnVjdCB2eGxhbl9yZHN0ICpyZHN0KQogewogCXN0cnVjdCBmaWJfbmhfY29tbW9uICpuaGM7CiYjNDM7CV9fYmUxNiBmZGJfcG9ydCA9IDA7CiAKLQluaGMgPSBuZXh0aG9wX3BhdGhfZmRiX3Jlc3VsdChuaCwgaGFzaCAmZ3Q7Jmd0OyAxKTsKJiM0MzsJbmhjID0gbmV4dGhvcF9wYXRoX2ZkYl9yZXN1bHQobmgsIGhhc2ggJmd0OyZndDsgMSwgJmFtcDtmZGJfcG9ydCk7CiAJaWYgKHVubGlrZWx5KCFuaGMpKQogCQlyZXR1cm4gZmFsc2U7CiAKQEAgLTU4Myw2ICYjNDM7NTg0LDggQEAgc3RhdGljIGlubGluZSBib29sIHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdChzdHJ1Y3QgbmV4dGhvcCAqbmgsCiAJCWJyZWFrOwogCX0KIAomIzQzOwlyZHN0LSZndDtyZW1vdGVfcG9ydCA9IGZkYl9wb3J0OwomIzQzOwogCXJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L25leHRob3AuaAppbmRleCBiYzQ5YmFmNGEyNjdmMC4uZTU4N2JiZjNiODkwYTMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9uZXh0aG9wLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS91YXBpL2xpbnV4L25leHRob3AuaApAQCAtODMsNiAmIzQzOzgzLDkgQEAgZW51bSB7CiAJLyogdTMyOyByZWFkLW9ubHk7IHdoZXRoZXIgYW55IGRyaXZlciBjb2xsZWN0cyBIVyBzdGF0cyAqLwogCU5IQV9IV19TVEFUU19VU0VELAogCiYjNDM7CS8qIGJlMTY7IFVEUCBkZXN0aW5hdGlvbiBwb3J0IGZvciBhbiBmZGIgbmV4dGhvcCAoZS5nLiBWWExBTikgKi8KJiM0MzsJTkhBX0ZEQl9QT1JULAomIzQzOwogCV9fTkhBX01BWCwKIH07CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY0L25leHRob3AuYyBiL25ldC9pcHY0L25leHRob3AuYwppbmRleCA2MjA1YmQ1N2FhODUyMC4uNWIyN2NjOWE5MTkxZDcgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L25leHRob3AuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9uZXh0aG9wLmMKQEAgLTM5LDYgJiM0MzszOSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBydG1fbmhfcG9saWN5X25ld1tdID0gewogCVtOSEFfRU5DQVBfVFlQRV0JPSB7IC50eXBlID0gTkxBX1UxNiB9LAogCVtOSEFfRU5DQVBdCQk9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sCiAJW05IQV9GREJdCQk9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LAomIzQzOwlbTkhBX0ZEQl9QT1JUXQkJPSB7IC50eXBlID0gTkxBX1UxNiB9LAogCVtOSEFfUkVTX0dST1VQXQkJPSB7IC50eXBlID0gTkxBX05FU1RFRCB9LAogCVtOSEFfSFdfU1RBVFNfRU5BQkxFXQk9IE5MQV9QT0xJQ1lfTUFYKE5MQV9VMzIsIHRydWUpLAogfTsKQEAgLTk1Niw2ICYjNDM7OTU3LDkgQEAgc3RhdGljIGludCBuaF9maWxsX25vZGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5leHRob3AgKm5oLAogCX0gZWxzZSBpZiAobmhpLSZndDtmZGJfbmgpIHsKIAkJaWYgKG5sYV9wdXRfZmxhZyhza2IsIE5IQV9GREIpKQogCQkJZ290byBubGFfcHV0X2ZhaWx1cmU7CiYjNDM7CQlpZiAobmhpLSZndDtmZGJfcG9ydCAmYW1wOyZhbXA7CiYjNDM7CQkgICAgbmxhX3B1dF9iZTE2KHNrYiwgTkhBX0ZEQl9QT1JULCBuaGktJmd0O2ZkYl9wb3J0KSkKJiM0MzsJCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsKIAl9IGVsc2UgewogCQljb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2OwogCkBAIC0xMDU1LDYgJiM0MzsxMDU5LDkgQEAgc3RhdGljIHNpemVfdCBuaF9ubG1zZ19zaXplX3NpbmdsZShzdHJ1Y3QgbmV4dGhvcCAqbmgpCiAJCWJyZWFrOwogCX0KIAomIzQzOwlpZiAobmhpLSZndDtmZGJfbmgpCiYjNDM7CQlzeiAmIzQzOz0gbmxhX3RvdGFsX3NpemUoMik7CS8qIE5IQV9GREJfUE9SVCAqLwomIzQzOwogCWlmIChuaGktJmd0O2ZpYl9uaGMubmhjX2x3dHN0YXRlKSB7CiAJCXN6ICYjNDM7PSBsd3R1bm5lbF9nZXRfZW5jYXBfc2l6ZShuaGktJmd0O2ZpYl9uaGMubmhjX2x3dHN0YXRlKTsKIAkJc3ogJiM0Mzs9IG5sYV90b3RhbF9zaXplKDIpOyAgLyogTkhBX0VOQ0FQX1RZUEUgKi8KQEAgLTI5NTYsOCAmIzQzOzI5NjMsMTAgQEAgc3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuaF9jb25maWcgKmNmZywKIAluaGktJmd0O2ZhbWlseSA9IGNmZy0mZ3Q7bmhfZmFtaWx5OwogCW5oaS0mZ3Q7ZmliX25oYy5uaGNfc2NvcGUgPSBSVF9TQ09QRV9MSU5LOwogCi0JaWYgKGNmZy0mZ3Q7bmhfZmRiKQomIzQzOwlpZiAoY2ZnLSZndDtuaF9mZGIpIHsKIAkJbmhpLSZndDtmZGJfbmggPSAxOwomIzQzOwkJbmhpLSZndDtmZGJfcG9ydCA9IGNmZy0mZ3Q7bmhfZmRiX3BvcnQ7CiYjNDM7CX0KIAogCWlmIChjZmctJmd0O25oX2JsYWNraG9sZSkgewogCQluaGktJmd0O3JlamVjdF9uaCA9IDE7CkBAIC0zMTQ3LDYgJiM0MzszMTU2LDE1IEBAIHN0YXRpYyBpbnQgcnRtX3RvX25oX2NvbmZpZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsCiAJCWNmZy0mZ3Q7bmhfZmRiID0gbmxhX2dldF9mbGFnKHRiW05IQV9GREJdKTsKIAl9CiAKJiM0MzsJaWYgKHRiW05IQV9GREJfUE9SVF0pIHsKJiM0MzsJCWlmICghdGJbTkhBX0ZEQl0gfHwgIXRiW05IQV9HQVRFV0FZXSkgewomIzQzOwkJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywKJiM0MzsJCQkJICAgICAgICYjMzQ7RkRCIHBvcnQgY2FuIG9ubHkgYmUgc2V0IG9uIGZkYiBuZXh0aG9wcyB0aGF0IGhhdmUgYSBnYXRld2F5JiMzNDspOwomIzQzOwkJCWdvdG8gb3V0OwomIzQzOwkJfQomIzQzOwkJY2ZnLSZndDtuaF9mZGJfcG9ydCA9IG5sYV9nZXRfYmUxNih0YltOSEFfRkRCX1BPUlRdKTsKJiM0MzsJfQomIzQzOwogCWlmICh0YltOSEFfR1JPVVBdKSB7CiAJCWlmIChuaG0tJmd0O25oX2ZhbWlseSAhPSBBRl9VTlNQRUMpIHsKIAkJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywgJiMzNDtJbnZhbGlkIGZhbWlseSBmb3IgZ3JvdXAmIzM0Oyk7CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUKaW5kZXggNzA4ZDk2MGFlMDdkNWIuLmMwNmViNDkyN2NkOWNiIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlCkBAIC0zNiw2ICYjNDM7MzYsNyBAQCBURVNUX1BST0dTIDo9IFwKIAlmaWJfbmV4dGhvcF9tdWx0aXByZWZpeC5zaCBcCiAJZmliX25leHRob3Bfbm9uZ3cuc2ggXAogCWZpYl9uZXh0aG9wcy5zaCBcCiYjNDM7CWZpYl9uZXh0aG9wc19mZGJfcG9ydC5zaCBcCiAJZmliX3J1bGVfdGVzdHMuc2ggXAogCWZpYl90ZXN0cy5zaCBcCiAJZmluX2Fja19sYXQuc2ggXApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZpYl9uZXh0aG9wc19mZGJfcG9ydC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9maWJfbmV4dGhvcHNfZmRiX3BvcnQuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAuLjhiNDAxYzZkMjRhMTRmCi0tLSAvZGV2L251bGwKJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZpYl9uZXh0aG9wc19mZGJfcG9ydC5zaApAQCAtMCwwICYjNDM7MSw3OCBAQAomIzQzOyMhL2Jpbi9iYXNoCiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyMKJiM0MzsjIENvbnRyb2wtcGxhbmUgc2VsZnRlc3QgZm9yIHBlci1uZXh0aG9wIFZYTEFOIGZkYiBkZXN0aW5hdGlvbiBwb3J0CiYjNDM7IyAoTkhBX0ZEQl9QT1JUKS4gIFZlcmlmaWVzIHRoZSBhY2NlcHQvcmVqZWN0IHJ1bGVzIGFuZCB0aGUgZHVtcCByb3VuZHRyaXAuCiYjNDM7IyBObyBkYXRhcGF0aCB0cmFmZmljIGhlcmUgLS0gc2VlIHRlc3RzL2ludGVnL3Z4bGFuLWZkYi1wb3J0LWludGVnLnNoIGZvciB0aGUKJiM0MzsjIHJlYWwgZm9yd2FyZGluZyB0ZXN0LgomIzQzOyMKJiM0MzsjIFJlcXVpcmVzOiBwYXRjaGVkIGtlcm5lbCAoTkhBX0ZEQl9QT1JUKSBhbmQgcGF0Y2hlZCBpcHJvdXRlMiAodGhlICYjMzQ7cG9ydCYjMzQ7CiYjNDM7IyBrZXl3b3JkIG9uICYjMzQ7aXAgbmV4dGhvcCAuLi4gZmRiJiMzNDspLiAgU0tJUHMgY2xlYW5seSBvdGhlcndpc2UuCiYjNDM7CiYjNDM7c2V0IC11CiYjNDM7CiYjNDM7a3NmdF9za2lwPTQKJiM0MztOUz0mIzM0O25oZmRicG9ydC0kJCYjMzQ7CiYjNDM7SVA9JiMzNDtpcCAtbmV0bnMgJE5TJiMzNDsKJiM0MztyZXQ9MAomIzQzOwomIzQzO2xvZ190ZXN0KCkgewkjICQxIGFjdHVhbF9yYyAgJDIgZXhwZWN0ZWRfcmMgICQzIG5hbWUKJiM0MzsJaWYgWyAmIzM0OyQxJiMzNDsgPSAmIzM0OyQyJiMzNDsgXTsgdGhlbgomIzQzOwkJcHJpbnRmICYjMzQ7VEVTVDogJS01OHMgWyBPSyBdXG4mIzM0OyAmIzM0OyQzJiMzNDsKJiM0MzsJZWxzZQomIzQzOwkJcHJpbnRmICYjMzQ7VEVTVDogJS01OHMgW0ZBSUxdIChyYz0kMSB3YW50PSQyKVxuJiMzNDsgJiMzNDskMyYjMzQ7CiYjNDM7CQlyZXQ9MQomIzQzOwlmaQomIzQzO30KJiM0MzsKJiM0MzsjIHBhc3NlcyAocmV0dXJucyAwKSBpZmYgdGhlIGNvbW1hbmQgRkFJTFMKJiM0MztleHBlY3RfZmFpbCgpIHsKJiM0MzsJaWYgJiMzNDskQCYjMzQ7ICZndDsvZGV2L251bGwgMiZndDsmYW1wOzE7IHRoZW4gcmV0dXJuIDE7IGVsc2UgcmV0dXJuIDA7IGZpCiYjNDM7fQomIzQzOwomIzQzO2NsZWFudXAoKSB7IGlwIG5ldG5zIGRlbCAmIzM0OyROUyYjMzQ7IDImZ3Q7L2Rldi9udWxsOyB9CiYjNDM7CiYjNDM7Y29tbWFuZCAtdiBpcCAmZ3Q7L2Rldi9udWxsIDImZ3Q7JmFtcDsxIHx8IHsgZWNobyAmIzM0O1NLSVA6IGlwcm91dGUyIG5vdCBmb3VuZCYjMzQ7OyBleGl0ICRrc2Z0X3NraXA7IH0KJiM0MztpcCBuZXh0aG9wIGhlbHAgMiZndDsmYW1wOzEgfCBncmVwIC1xIGZkYiB8fCB7IGVjaG8gJiMzNDtTS0lQOiBubyBmZGIgbmV4dGhvcCBzdXBwb3J0JiMzNDs7IGV4aXQgJGtzZnRfc2tpcDsgfQomIzQzOwomIzQzO3RyYXAgY2xlYW51cCBFWElUCiYjNDM7Y2xlYW51cAomIzQzO2lwIG5ldG5zIGFkZCAmIzM0OyROUyYjMzQ7IHx8IHsgZWNobyAmIzM0O1NLSVA6IGNhbm5vdCBjcmVhdGUgbmV0bnMmIzM0OzsgZXhpdCAka3NmdF9za2lwOyB9CiYjNDM7JElQIGxpbmsgc2V0IGxvIHVwCiYjNDM7CiYjNDM7IyBQcm9iZSBmb3IgJiMzNDtwb3J0JiMzNDsga2V5d29yZCAmIzQzOyBrZXJuZWwgTkhBX0ZEQl9QT1JUIHN1cHBvcnQ7IFNLSVAgaWYgbWlzc2luZy4KJiM0MztpZiAhICRJUCBuZXh0aG9wIGFkZCBpZCAxIHZpYSAxMC4wLjAuMSBmZGIgcG9ydCA0NzkwIDImZ3Q7L2Rldi9udWxsOyB0aGVuCiYjNDM7CWVjaG8gJiMzNDtTS0lQOiAmIzM5O2lwIG5leHRob3AgLi4uIGZkYiBwb3J0JiMzOTsgdW5zdXBwb3J0ZWQgKG5lZWRzIHBhdGNoZWQga2VybmVsICYjNDM7IGlwcm91dGUyKSYjMzQ7CiYjNDM7CWV4aXQgJGtzZnRfc2tpcAomIzQzO2ZpCiYjNDM7bG9nX3Rlc3QgMCAwICYjMzQ7YWRkIGZkYiBuZXh0aG9wIHdpdGggcG9ydCYjMzQ7CiYjNDM7CiYjNDM7IyBEdW1wIHJvdW5kdHJpcCBtdXN0IGVjaG8gdGhlIHBvcnQgYmFjay4KJiM0MzskSVAgbmV4dGhvcCBzaG93IGlkIDEgfCBncmVwIC1xdyAmIzM0O3BvcnQgNDc5MCYjMzQ7CiYjNDM7bG9nX3Rlc3QgJD8gMCAmIzM0O2R1bXAgc2hvd3MgZmRiIHBvcnQgNDc5MCYjMzQ7CiYjNDM7CiYjNDM7IyBSZWplY3Q6IHBvcnQgb24gYSByb3V0ZWQgKG5vbi1mZGIpIG5leHRob3AuCiYjNDM7ZXhwZWN0X2ZhaWwgJElQIG5leHRob3AgYWRkIGlkIDIgdmlhIDEwLjAuMC4xIGRldiBsbyBwb3J0IDQ3OTAKJiM0Mztsb2dfdGVzdCAkPyAwICYjMzQ7cmVqZWN0IHBvcnQgb24gbm9uLWZkYiBuZXh0aG9wJiMzNDsKJiM0MzsKJiM0MzsjIFJlamVjdDogZmRiIHBvcnQgd2l0aG91dCBhIGdhdGV3YXkuCiYjNDM7ZXhwZWN0X2ZhaWwgJElQIG5leHRob3AgYWRkIGlkIDMgZmRiIHBvcnQgNDc5MAomIzQzO2xvZ190ZXN0ICQ/IDAgJiMzNDtyZWplY3QgZmRiIHBvcnQgd2l0aG91dCBnYXRld2F5JiMzNDsKJiM0MzsKJiM0MzsjIFRoZSBIQSBjYXNlOiBhIGdyb3VwIHdob3NlIGxlZ3Mgc2hhcmUgdGhlIGdhdGV3YXkgYnV0IGRpZmZlciBpbiBwb3J0LgomIzQzOyRJUCBuZXh0aG9wIGFkZCBpZCAxMCB2aWEgMTAuMC4wLjEgZmRiIHBvcnQgNDc4OSAmYW1wOyZhbXA7IFwKJiM0MzskSVAgbmV4dGhvcCBhZGQgaWQgMTEgdmlhIDEwLjAuMC4xIGZkYiBwb3J0IDU3ODkgJmFtcDsmYW1wOyBcCiYjNDM7JElQIG5leHRob3AgYWRkIGlkIDEwMCBncm91cCAxMC8xMSBmZGIKJiM0Mztsb2dfdGVzdCAkPyAwICYjMzQ7YWRkIGZkYiBuZXh0aG9wIGdyb3VwIHdpdGggZGlmZmVyaW5nIHBvcnRzJiMzNDsKJiM0MzsKJiM0MzsjIEEgZmRiIG5leHRob3Agd2l0aG91dCBhIHBvcnQgbXVzdCBOT1QgZW1pdCBvbmUgKGJhY2t3YXJkIGNvbXBhdCkuCiYjNDM7JElQIG5leHRob3AgYWRkIGlkIDIwIHZpYSAxMC4wLjAuMSBmZGIKJiM0MzskSVAgbmV4dGhvcCBzaG93IGlkIDIwIHwgZ3JlcCAtcXcgJiMzNDtwb3J0JiMzNDsKJiM0Mztsb2dfdGVzdCAkPyAxICYjMzQ7ZmRiIG5leHRob3Agd2l0aG91dCBwb3J0IG9taXRzIE5IQV9GREJfUE9SVCYjMzQ7CiYjNDM7CiYjNDM7aWYgWyAkcmV0IC1lcSAwIF07IHRoZW4KJiM0MzsJZWNobyAmIzM0O1BBU1M6IGFsbCBOSEFfRkRCX1BPUlQgY29udHJvbC1wbGFuZSBjaGVja3MmIzM0OwomIzQzO2Vsc2UKJiM0MzsJZWNobyAmIzM0O0ZBSUw6IG9uZSBvciBtb3JlIE5IQV9GREJfUE9SVCBjaGVja3MgZmFpbGVkJiMzNDsKJiM0MztmaQomIzQzO2V4aXQgJHJldAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwOToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDkzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVlhMQU4gRkRCIE5leHRob3AgUGF0Y2gqKgoKT2theSwgc28gd2UmIzM5O3ZlIGdvdCBhIG5ldyBwYXRjaCBoZXJlLiBJdCYjMzk7cyBhZGRpbmcgYE5IQV9GREJfUE9SVGAsIGEgbmV3IGZlYXR1cmUgZm9yIEZEQiBuZXh0aG9wcywgc3BlY2lmaWNhbGx5IGZvciB0aGluZ3MgbGlrZSBWWExBTi4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCDigJMgd2UmIzM5O3JlIGdpdmluZyB0aGUgdXNlciB0aGUgYWJpbGl0eSB0byBzZXQgYSBVRFAgZGVzdGluYXRpb24gcG9ydCBmb3IgdGhlc2UgbmV4dGhvcHMuIFRoaXMgaXMgZ29vZDsgbW9yZSBncmFudWxhciBjb250cm9sIGlzIGFsd2F5cyBhIHBsdXMuCgpUaGUgcGF0Y2ggaXRzZWxmIHRvdWNoZXMgc29tZSBrZXkgYXJlYXM6IGBpbmNsdWRlL25ldC9uZXh0aG9wLmhgLCBgaW5jbHVkZS9uZXQvdnhsYW4uaGAsIGBpbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oYCwgYW5kIGBuZXQvaXB2NC9uZXh0aG9wLmNgLCB3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgZnVuY3Rpb25hbGl0eS4gUGx1cywgd2UgZ2V0IGEgc2VsZnRlc3QsIHdoaWNoIGlzIGFic29sdXRlbHkgY3J1Y2lhbC4gR290dGEgbWFrZSBzdXJlIHRoaXMgc3R1ZmYgaXMgYmVoYXZpbmcgYXMgZXhwZWN0ZWQsIGFuZCB0ZXN0IGNvdmVyYWdlIGlzIGtleSBmb3IgbmV0d29ya2luZy4KCk5vdywgYmVmb3JlIEkgZGlnIGludG8gdGhlIGNvZGUgaXRzZWxmLCBJIHNob3VsZCBmaWd1cmUgb3V0IHRoZSBidWlsZCBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cyBmb3IgdGVzdGluZy4gVGhpcyBmZWF0dXJlIGFmZmVjdHMgYG5ldC9pcHY0L25leHRob3AuY2AgYW5kIGBpbmNsdWRlL25ldC92eGxhbi5oYCBwcmltYXJpbHkuIExldCYjMzk7cyB0aGluay4uLmBuZXQvaXB2NC9uZXh0aG9wLmNgLi4uaXMgdGhhdCBkZXBlbmRlbnQgb24gYENPTkZJR19JUF9ST1VURV9NVUxUSVBBVEhgIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBBY3R1YWxseSwgSSB0aGluayB0aGF0JiMzOTtzIGNvbXBpbGVkIHVuY29uZGl0aW9uYWxseSBmb3IgSVB2NCwgaXNuJiMzOTt0IGl0PyBCZXR0ZXIgZG91YmxlLWNoZWNrIHRoZSBgbmV0L2lwdjQvTWFrZWZpbGVgIGp1c3QgdG8gYmUgY2VydGFpbi4gSSBkb24mIzM5O3Qgd2FudCB0byB3YXN0ZSB0aW1lIGNvbmZpZ3VyaW5nIHNvbWV0aGluZyB0aGF0JiMzOTtzIGFscmVhZHkgZW5hYmxlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwOToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXh0aG9wLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT02PW9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxuLS1cbm5ldC9pcHY0L01ha2VmaWxlLTE2LVx0ICAgICBpbmV0X2ZyYWdtZW50Lm8gcGluZy5vIGlwX3R1bm5lbF9jb3JlLm8gZ3JlX29mZmxvYWQubyBcXFxubmV0L2lwdjQvTWFrZWZpbGU6MTc6XHQgICAgIG1ldHJpY3MubyBuZXRsaW5rLm8gbmV4dGhvcC5vIHVkcF90dW5uZWxfc3R1Yi5vXG5uZXQvaXB2NC9NYWtlZmlsZS0xOC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwOToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODAxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUsIG15IGluaXRpYWwgdGhvdWdodCBpczoKCioqRXhhbWluaW5nIENvbmRpdGlvbmFsIENvbXBpbGF0aW9uIGluIE5ldHdvcmtpbmcgQ29kZSoqCgpBbHJpZ2h0LCBzbyBgbmV4dGhvcC5vYCBpcyBhbHdheXMgYnVpbHQgZm9yIElQdjQuIE1ha2VzIHNlbnNlLCBpdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIHJvdXRpbmcuIE5vdywgd2hhdCYjMzk7cyB0aGUgZGVhbCB3aXRoIGB2eGxhbi5oYD8gTXkgZ3V0IHNheXMgdGhhdCYjMzk7cyBsaWtlbHkgdGllZCB0byB0aGUgYENPTkZJR19WWExBTmAgY29uZmlndXJhdGlvbiBvcHRpb24sIHJpZ2h0PyBZZWFoLCB0aGF0IHJpbmdzIGEgYmVsbC4gVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvdnhsYW4vTWFrZWZpbGVgIGZpbGUuIEl0JiMzOTtzIHRoZSBNYWtlZmlsZSB0aGF0IHRlbGxzIHRoZSBrZXJuZWwgd2hhdCB0byBpbmNsdWRlLiBJIGNvdWxkIGFsc28gc2tpbSB0aGUgZGlyZWN0b3J5IGl0c2VsZiBidXQgdGhlIE1ha2VmaWxlIHdpbGwgZ2l2ZSBhIGRlZmluaXRpdmUgYW5zd2VyLiBJJiMzOTtsbCBnZXQgdGhlIGFuc3dlciBpbW1lZGlhdGVseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwOToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92eGxhbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTI2NTA9c3RhdGljIHZvaWQgdnhsYW5feG1pdF9uaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjYzLVx0XHRnb3RvIGRyb3A7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjY2NDpcdGRvX3htaXQgPSB2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3QobmgsIGhhc2gsIFx1MDAyNm5oX3Jkc3QpO1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2NjUtXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTI2ODA9c3RhdGljIG5ldGRldl90eF90IHZ4bGFuX3htaXRfbmhpZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjk3LVx0fVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI2OTg6XHRkb194bWl0ID0gdnhsYW5fZmRiX25oX3BhdGhfc2VsZWN0KG5oLCBoYXNoLCBcdTAwMjZuaF9yZHN0KTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjk5LVx0cmN1X3JlYWRfdW5sb2NrKCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDk6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM2MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDI5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5leHRob3AgYW5kIFZYTEFOIEludGVncmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IHNlZSB0aGF0IGB2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3RgIGlzIHVzZWQgaW4gdGhlIFZYTEFOIGNvcmUsIHNwZWNpZmljYWxseSBpbiBgZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jYC4gIFRoYXQgbWVhbnMgYENPTkZJR19WWExBTmAgaXMgYSBwcmVyZXF1aXNpdGUsIHdoaWNoIGlzIGV4cGVjdGVkLgoKTm93LCBsZXQmIzM5O3MgYnJvYWRlbiB0aGUgc2NvcGUuIFRoaXMgcGF0Y2ggYWxzbyB0b3VjaGVzIGBuZXQvaXB2NC9uZXh0aG9wLmNgLiAgVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBhcmUgYG5oX2ZpbGxfbm9kZWAsIGBuaF9ubG1zZ19zaXplX3NpbmdsZWAsIGBuZXh0aG9wX2NyZWF0ZWAsIGFuZCBgcnRtX3RvX25oX2NvbmZpZ2AuIFRoZXNlIGFyZSBhbGwgcmVsYXRlZCB0byB0aGUgbmV4dGhvcCBuZXRsaW5rIGludGVyZmFjZSwgc28gdGhhdCYjMzk7cyBhIGtleSBhcmVhIHRvIGV4cGxvcmUuCgpJIHdhbnQgdG8gZGl2ZSBkZWVwZXIgaW50byBgbmV4dGhvcF9jcmVhdGVgIGFuZCBgcnRtX3RvX25oX2NvbmZpZ2Agd2l0aGluIGBuZXQvaXB2NC9uZXh0aG9wLmNgLiBUaGV5JiMzOTtyZSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIGludm9sdmVkIGluIGNyZWF0aW5nIGFuZCBjb25maWd1cmluZyBuZXh0aG9wcyB2aWEgbmV0bGluaywgd2hpY2ggaXMgdGhlIGhlYXJ0IG9mIGhvdyB0aGlzIHdvcmtzLgoKVGhlIGZvY3VzIHN5bWJvbHMgaGVyZSBhcmUgZ29pbmcgdG8gYmUgYG5leHRob3BfY3JlYXRlYCwgYHJ0bV90b19uaF9jb25maWdgLCBgbmhfZmlsbF9ub2RlYCwgYG5oX25sbXNnX3NpemVfc2luZ2xlYCDigJMgdGhleSYjMzk7cmUgYWxsIGRpcmVjdGx5IGludm9sdmVkIGluIG5ldGxpbmsgaW50ZXJhY3Rpb24gZm9yIG5leHRob3BzLiAgVGhlbiwgd2UgYWxzbyBoYXZlIGB2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3RgLCB3aGljaCBpcyBhIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24gZGVmaW5lZCBpbiBgaW5jbHVkZS9uZXQvdnhsYW4uaGAuIEJlY2F1c2UgaXQmIzM5O3MgaW5saW5lLCBpdCYjMzk7cyBhY3R1YWxseSBpbmxpbmVkIGludG8gdGhlIHR3byBmdW5jdGlvbnMgdGhhdCB1c2UgaXQ6IGB2eGxhbl94bWl0X25oYCBhbmQgYHZ4bGFuX3htaXRfbmhpZGAuCgpUaGVyZWZvcmUsIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgaWYgYHZ4bGFuX3htaXRfbmhgIGFuZCBgdnhsYW5feG1pdF9uaGlkYCBhcmUgZ29vZCBmb2N1cyBzeW1ib2xzIHNpbmNlIHRob3NlIGFyZSB0aGUgcGxhY2VzIHdoZXJlIGB2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3RgIGlzIGFjdHVhbGx5IGdldHRpbmcgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwOToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2eGxhbl94bWl0X25oJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0yMzQ0PXZvaWQgdnhsYW5feG1pdF9vbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY0OS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjUwOnN0YXRpYyB2b2lkIHZ4bGFuX3htaXRfbmgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjUxLVx0XHRcdCAgc3RydWN0IHZ4bGFuX2ZkYiAqZiwgX19iZTMyIHZuaSwgYm9vbCBkaWRfcnNjKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjc5LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI2ODA6c3RhdGljIG5ldGRldl90eF90IHZ4bGFuX3htaXRfbmhpZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2ODEtXHRcdFx0XHQgICB1MzIgbmhpZCwgX19iZTMyIHZuaSlcbi0tXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MjcyNT1zdGF0aWMgbmV0ZGV2X3R4X3QgdnhsYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzcyLVx0aWYgKG5oaWQpXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mjc3MzpcdFx0cmV0dXJuIHZ4bGFuX3htaXRfbmhpZChza2IsIGRldiwgbmhpZCwgdm5pKTtcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzc0LVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODE4LVx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihmLVx1MDAzZW5oKSkge1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI4MTk6XHRcdHZ4bGFuX3htaXRfbmgoc2tiLCBkZXYsIGYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjgyMC1cdFx0XHQgICAgICAodm5pID8gOiB2eGxhbi1cdTAwM2VkZWZhdWx0X2RzdC5yZW1vdGVfdm5pKSwgZGlkX3JzYyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDk6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzY1NgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDI5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVlhMQU4gTmV4dGhvcCBUcmFuc21pc3Npb24gUGF0aCoqCgpPa2F5LCBzbyBJJiMzOTttIGhvbmluZyBpbiBvbiB0aGUga2V5IHN5bWJvbHMgZm9yIHRoaXMgaW52ZXN0aWdhdGlvbjogYHZ4bGFuX3htaXRfbmhgIGFuZCBgdnhsYW5feG1pdF9uaGlkYC4gVGhlc2UgYXJlIG15IHByaW1hcnkgZm9jdXMgcG9pbnRzLiBJIHNob3VsZCBhbHNvIGtlZXAgYW4gZXllIG9uIGBydG1fdG9fbmhfY29uZmlnYCwgYG5leHRob3BfY3JlYXRlYCwgYG5oX2ZpbGxfbm9kZWAsIGFuZCBgbmhfbmxtc2dfc2l6ZV9zaW5nbGVgLgoKTm93LCBsZXQmIzM5O3MgZGV0ZXJtaW5lIGlmIGBuZXh0aG9wX2NyZWF0ZWAgaXMgcGVyZm9ybWFuY2UgY3JpdGljYWwuIFRoaW5raW5nIHRocm91Z2ggaXQsIGl0JiMzOTtzIHRyaWdnZXJlZCBkdXJpbmcgbmV4dGhvcCBjcmVhdGlvbiB0aHJvdWdoIG5ldGxpbmssIHdoaWNoIGZpcm1seSBwbGFjZXMgaXQgaW4gdGhlIGNvbnRyb2wgcGF0aC4gYHJ0bV90b19uaF9jb25maWdgIGlzIGFsc28gY29udHJvbCBwbGFuZS4gYG5oX2ZpbGxfbm9kZWAsIGludm9sdmVkIGluIG5leHRob3AgZHVtcGluZywgY2xlYXJseSBiZWxvbmdzIHRvIHRoZSBjb250cm9sIHBhdGggYXMgd2VsbC4gQW5kIGBuaF9ubG1zZ19zaXplX3NpbmdsZWAsIGFsc28gY29udHJvbCBwbGFuZS4KCkNydWNpYWxseSwgYHZ4bGFuX3htaXRfbmhgIGFuZCBgdnhsYW5feG1pdF9uaGlkYCBhcmUgZGF0YXBhdGggZnVuY3Rpb25zLCBhbmQgdGhleSYjMzk7cmUgc3BlY2lmaWNhbGx5IHRpZWQgdG8gbmV4dGhvcC1iYXNlZCBWWExBTiB0cmFuc21pc3Npb24sIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJJiMzOTttIGxvb2tpbmcgdG8gb3B0aW1pemUuCgpCZWZvcmUgSSBnbyBmdXJ0aGVyLCBsZXQmIzM5O3MgbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG5lZWQgYW55IGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIGVuYWJsZWQuIFRoZSBvYnZpb3VzIG9uZSBpcyBgQ09ORklHX1ZYTEFOYCwgcmVxdWlyZWQgZm9yIHRoZSBkYXRhcGF0aCBmdW5jdGlvbnMuIEkgc2hvdWxkIGFsc28gdGhpbmsgYWJvdXQgYENPTkZJR19JUF9ST1VURV9NVUxUSVBBVEhgLiBOZXh0aG9wcyBhcmUgcHJldHR5IGZ1bmRhbWVudGFsIHRvIElQdjQgcm91dGluZywgc28gSSYjMzk7bGwgZG91YmxlLWNoZWNrIGBuZXQvaXB2NC9LY29uZmlnYCBqdXN0IHRvIGJlIGNlcnRhaW4gdGhhdCBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBwZXJ0aW5lbnQgdG8gbmV4dGhvcCBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDk6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXh0aG9wJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA5OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzNDUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSVB2NCBOZXh0IEhvcCBJbnZlc3RpZ2F0aW9uKioKClJpZ2h0LCB0aGlzIHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQg4oCTIGl0JiMzOTtzIGp1c3Qgc3RhbmRhcmQgSVB2NCBiZWhhdmlvciB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoLiBObyBtYWpvciBzdXJwcmlzZXMgdGhlcmUuIEJ1dCwgZ2l2ZW4gdGhlIHJlY2VudCBtb2RpZmljYXRpb25zLCBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBrZXJuZWwgY29kZSwgc3BlY2lmaWNhbGx5LCBgbmV0L2lwdjQvbmV4dGhvcC5jYC4gSSBuZWVkIHRvIG1ldGljdWxvdXNseSBjaGVjayBmb3IgYW55IHByZXByb2Nlc3NvciBkaXJlY3RpdmVzLCBhbnkgYCNpZmRlZmAgYmxvY2tzLCBzdXJyb3VuZGluZyB0aGlzIHBhcnRpY3VsYXIgY29kZSBzZWN0aW9uLiBUaGUgZ29hbCBpcyB0byBpZGVudGlmeSBpZiB0aGUgY2hhbmdlcyBhcmUgY29uZGl0aW9uYWxseSBjb21waWxlZCBvciBpZiB0aGV5JiMzOTtyZSB1bml2ZXJzYWxseSBhcHBsaWVkLiBVbmRlcnN0YW5kaW5nIHRoZSBzY29wZSBvZiB0aGUgbW9kaWZpY2F0aW9ucyBpcyBwYXJhbW91bnQuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwOToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtOSEFfRkRCX1BPUlQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXh0aG9wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvbmV4dGhvcC5jPTMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBydG1fbmhfcG9saWN5X25ld1tdID0ge1xuLS1cbm5ldC9pcHY0L25leHRob3AuYy00MS1cdFtOSEFfRkRCXVx0XHQ9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LFxubmV0L2lwdjQvbmV4dGhvcC5jOjQyOlx0W05IQV9GREJfUE9SVF1cdFx0PSB7IC50eXBlID0gTkxBX1UxNiB9LFxubmV0L2lwdjQvbmV4dGhvcC5jLTQzLVx0W05IQV9SRVNfR1JPVVBdXHRcdD0geyAudHlwZSA9IE5MQV9ORVNURUQgfSxcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmM9OTE1PXN0YXRpYyBpbnQgbmhfZmlsbF9ub2RlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXh0aG9wICpuaCxcbi0tXG5uZXQvaXB2NC9uZXh0aG9wLmMtOTYwLVx0XHRpZiAobmhpLVx1MDAzZWZkYl9wb3J0IFx1MDAyNlx1MDAyNlxubmV0L2lwdjQvbmV4dGhvcC5jOjk2MTpcdFx0ICAgIG5sYV9wdXRfYmUxNihza2IsIE5IQV9GREJfUE9SVCwgbmhpLVx1MDAzZWZkYl9wb3J0KSlcbm5ldC9pcHY0L25leHRob3AuYy05NjItXHRcdFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jPTEwMzk9c3RhdGljIHNpemVfdCBuaF9ubG1zZ19zaXplX3NpbmdsZShzdHJ1Y3QgbmV4dGhvcCAqbmgpXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTEwNjItXHRpZiAobmhpLVx1MDAzZWZkYl9uaClcbm5ldC9pcHY0L25leHRob3AuYzoxMDYzOlx0XHRzeiAmIzQzOz0gbmxhX3RvdGFsX3NpemUoMik7XHQvKiBOSEFfRkRCX1BPUlQgKi9cbm5ldC9pcHY0L25leHRob3AuYy0xMDY0LVxuLS1cbm5ldC9pcHY0L25leHRob3AuYz0zMTAyPXN0YXRpYyBpbnQgcnRtX3RvX25oX2NvbmZpZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTMxNTgtXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzE1OTpcdGlmICh0YltOSEFfRkRCX1BPUlRdKSB7XG5uZXQvaXB2NC9uZXh0aG9wLmMtMzE2MC1cdFx0aWYgKCF0YltOSEFfRkRCXSB8fCAhdGJbTkhBX0dBVEVXQVldKSB7XG4tLVxubmV0L2lwdjQvbmV4dGhvcC5jLTMxNjQtXHRcdH1cbm5ldC9pcHY0L25leHRob3AuYzozMTY1Olx0XHRjZmctXHUwMDNlbmhfZmRiX3BvcnQgPSBubGFfZ2V0X2JlMTYodGJbTkhBX0ZEQl9QT1JUXSk7XG5uZXQvaXB2NC9uZXh0aG9wLmMtMzE2Ni1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDk6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTIxNwoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDEzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqQW5hbHl6aW5nIFZYTEFOIENvbmZpZ3VyYXRpb24gSW50ZXJhY3Rpb25zKioKCkFscmlnaHQsIG5vIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzLCBzcGVjaWZpY2FsbHkgYCNpZmRlZmBzLCBhcmUgYmVpbmcgdXNlZCB0byBjb25kaXRpb25hbGx5IGluY2x1ZGUgY29kZSByZWxhdGVkIHRvIGBOSEFfRkRCX1BPUlRgLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdyDigJMgZmV3ZXIgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gZ290Y2hhcy4gVGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyBzaW1wbHkgYFZYTEFOYC4KCk5vdywgSSBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIHNwZWNpZmljIHN5bWJvbHM6IGBydG1fdG9fbmhfY29uZmlnYCwgYG5leHRob3BfY3JlYXRlYCwgYG5oX2ZpbGxfbm9kZWAsIGBuaF9ubG1zZ19zaXplX3NpbmdsZWAsIGB2eGxhbl94bWl0X25oYCwgYW5kIGB2eGxhbl94bWl0X25oaWRgLiBUaGVzZSBhcHBlYXIgdG8gYmUgdGhlIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gdGhlIFZYTEFOIG5leHQtaG9wIGNvbmZpZ3VyYXRpb24gcHJvY2Vzcy4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdW5kZXJzdGFuZGluZyBob3cgdGhleSBpbnRlcmFjdCwgaG93IG5leHQgaG9wcyBhcmUgY3JlYXRlZCwgZmlsbGVkLCBhbmQgdHJhbnNtaXR0ZWQuCgpXYWl0IGEgc2Vjb25kLi4uIGEgcXVpY2sgcmVhbGl0eSBjaGVjay4gYHZ4bGFuX3htaXRfbmhgIGFuZCBgdnhsYW5feG1pdF9uaGlkYCBhcmUgKnN0YXRpYyogZnVuY3Rpb25zLCBhbmQgSSYjMzk7bSBwcmV0dHkgc3VyZSB0aGV5IGFyZSBpbiBgZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jYC4gSSBzaG91bGQgdmVyaWZ5IHRob3NlIG5hbWVzIHRvIG1ha2Ugc3VyZS4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhhdCBJJiMzOTttIHJlZmVyZW5jaW5nIHRoZSBjb3JyZWN0IGZ1bmN0aW9uIGRlZmluaXRpb25zLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoZXNlIGFyZSBpbXBvcnRhbnQsIGJ1dCBzdGF0aWMgZnVuY3Rpb25zIGNhbiBpbnRyb2R1Y2UgdW5leHBlY3RlZCBiZWhhdmlvciBpZiBub3QgYWNjb3VudGVkIGZvciBjb3JyZWN0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA5OjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Z4bGFuX3htaXRfbmgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTIzNDQ9dm9pZCB2eGxhbl94bWl0X29uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjQ5LVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI2NTA6c3RhdGljIHZvaWQgdnhsYW5feG1pdF9uaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2NTEtXHRcdFx0ICBzdHJ1Y3QgdnhsYW5fZmRiICpmLCBfX2JlMzIgdm5pLCBib29sIGRpZF9yc2MpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2NzktXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjY4MDpzdGF0aWMgbmV0ZGV2X3R4X3QgdnhsYW5feG1pdF9uaGlkKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY4MS1cdFx0XHRcdCAgIHUzMiBuaGlkLCBfX2JlMzIgdm5pKVxuLS1cbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0yNzI1PXN0YXRpYyBuZXRkZXZfdHhfdCB2eGxhbl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI3NzItXHRpZiAobmhpZClcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNzczOlx0XHRyZXR1cm4gdnhsYW5feG1pdF9uaGlkKHNrYiwgZGV2LCBuaGlkLCB2bmkpO1xuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI3NzQtXG4tLVxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI4MTgtXHRpZiAocmN1X2FjY2Vzc19wb2ludGVyKGYtXHUwMDNlbmgpKSB7XG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjgxOTpcdFx0dnhsYW5feG1pdF9uaChza2IsIGRldiwgZixcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODIwLVx0XHRcdCAgICAgICh2bmkgPyA6IHZ4bGFuLVx1MDAzZWRlZmF1bHRfZHN0LnJlbW90ZV92bmkpLCBkaWRfcnNjKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDk6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyMTIKCQkJCQkJCW91dHB1dDogMTQxCgkJCQkJCQl0aG91Z2h0czogMTE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGFzc2Vzc21lbnQgb2YgdGhpcyBwYXRjaCwgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIHdobyB1bmRlcnN0YW5kcyB0aGlzIGxvdy1sZXZlbCBuZXR3b3JraW5nIGNvZGU6CgoqKkFuYWx5emluZyB0aGUgUGF0Y2gmIzM5O3MgRnVuY3Rpb25hbGl0eSBhbmQgVGVzdGFiaWxpdHkqKgoKUmlnaHQsIHNvIHRoZXNlIGFyZSBjb25maXJtZWQgYXMgc3RhdGljIGZ1bmN0aW9ucywgd2hpY2ggaXMgZ29vZCB0byBrZWVwIGluIG1pbmQgZm9yIHNjb3BpbmcgYW5kIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuIE15IGluaXRpYWwgcXVlc3Rpb24gaXMgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IG5lZWQgdG8gYmUgY29uc2lkZXJlZC4gVGhlIHBhdGNoIGluY2x1ZGVzIGEgbmV3IHNlbGZ0ZXN0LCBgZmliX25leHRob3BzX2ZkYl9wb3J0LnNoYCwgd2hpY2ggaXMgYSBwb3NpdGl2ZSBzaWduLiBGdW5jdGlvbmFsbHksIHRoaXMgcGF0Y2ggbG9va3Mgc29saWQsIGFuZCBpdCYjMzk7cyBkZWZpbml0ZWx5IHNvbWV0aGluZyB0aGF0JiMzOTtzIHJpcGUgZm9yIGZ1enppbmcuIEdvb2QgdG8gc2VlIHRoZXkmIzM5O3JlIHRoaW5raW5nIGFib3V0IHRoYXQuCgpOb3csIGxldCYjMzk7cyBkcmlsbCBkb3duIHRvIHRoZSBjcml0aWNhbCBzeW1ib2xzIHRoZSBwYXRjaCBmb2N1c2VzIG9uLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZXNlIGFyZSB0aGUgY29ycmVjdCBvbmVzLiBFeGFtaW5pbmcgdGhlIGNvZGUsIEkgc2VlOgoKKiAgIGBydG1fdG9fbmhfY29uZmlnYAoqICAgYG5leHRob3BfY3JlYXRlYAoqICAgYG5oX2ZpbGxfbm9kZWAKKiAgIGB2eGxhbl94bWl0X25oYAoqICAgYHZ4bGFuX3htaXRfbmhpZGAKClllcCwgdGhlc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zLCBhbmQgdGhlc2UgY2hvaWNlcyBtYWtlIHNlbnNlIGdpdmVuIHdoYXQgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBwYXRjaCB0byBhZGRyZXNzLiBUaGF0JiMzOTtzIGEgZ29vZCBzZXQgb2YgZm9jdXMgcG9pbnRzIGZvciB0aGlzIHdvcmsuIE5vdyBJIGNhbiBtb3ZlIG9uIHRvIHRoZSBuZXh0IHNldCBvZiBjb2RlIGJsb2Nrcy4gTGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDk6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZYTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnRtX3RvX25oX2NvbmZpZyYjMzQ7LAogICAgJiMzNDtuZXh0aG9wX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtuaF9maWxsX25vZGUmIzM0OywKICAgICYjMzQ7dnhsYW5feG1pdF9uaCYjMzQ7LAogICAgJiMzNDt2eGxhbl94bWl0X25oaWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBuZXRsaW5rIGF0dHJpYnV0ZSBOSEFfRkRCX1BPUlQgZm9yIGZkYiBuZXh0aG9wcywgbW9kaWZ5aW5nIG5leHRob3AgY3JlYXRpb24gYW5kIGR1bXBpbmcgbG9naWMsIGFzIHdlbGwgYXMgVlhMQU4gdHJhbnNtaXNzaW9uIHBhdGhzIHRvIHV0aWxpemUgdGhpcyBuZXcgcG9ydC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29ya2luZyBhbmQgVlhMQU4gZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWWExBTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0bV90b19uaF9jb25maWcmIzM0OywKICAgICYjMzQ7bmV4dGhvcF9jcmVhdGUmIzM0OywKICAgICYjMzQ7bmhfZmlsbF9ub2RlJiMzNDssCiAgICAmIzM0O3Z4bGFuX3htaXRfbmgmIzM0OywKICAgICYjMzQ7dnhsYW5feG1pdF9uaGlkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbmV0bGluayBhdHRyaWJ1dGUgTkhBX0ZEQl9QT1JUIGZvciBmZGIgbmV4dGhvcHMsIG1vZGlmeWluZyBuZXh0aG9wIGNyZWF0aW9uIGFuZCBkdW1waW5nIGxvZ2ljLCBhcyB3ZWxsIGFzIFZYTEFOIHRyYW5zbWlzc2lvbiBwYXRocyB0byB1dGlsaXplIHRoaXMgbmV3IHBvcnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmtpbmcgYW5kIFZYTEFOIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA5OjIwOjM1Ljc5MDcwOTU1OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NjcyOTU1OTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZYTEFOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnRtX3RvX25oX2NvbmZpZ1wiLFxuICAgIFwibmV4dGhvcF9jcmVhdGVcIixcbiAgICBcIm5oX2ZpbGxfbm9kZVwiLFxuICAgIFwidnhsYW5feG1pdF9uaFwiLFxuICAgIFwidnhsYW5feG1pdF9uaGlkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBuZXRsaW5rIGF0dHJpYnV0ZSBOSEFfRkRCX1BPUlQgZm9yIGZkYiBuZXh0aG9wcywgbW9kaWZ5aW5nIG5leHRob3AgY3JlYXRpb24gYW5kIGR1bXBpbmcgbG9naWMsIGFzIHdlbGwgYXMgVlhMQU4gdHJhbnNtaXNzaW9uIHBhdGhzIHRvIHV0aWxpemUgdGhpcyBuZXcgcG9ydC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29ya2luZyBhbmQgVlhMQU4gZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwOToyMDozNS43OTA3MTc0MzhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg2Mzg2MTcwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDM1NjE2NjE2NzE2NmNlNDRiYzVkM2Q3MjYwOWRiNzAyZGJiY2UwMDFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMTcgMDk6MjA6MzMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbmV4dGhvcC5oIGIvaW5jbHVkZS9uZXQvbmV4dGhvcC5oXFxuaW5kZXggNTcyZTY5Y2RhNDc2NmQuLjdmYjYxMmE3MzA3ZjI1IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L25leHRob3AuaFxcbisrKyBiL2luY2x1ZGUvbmV0L25leHRob3AuaFxcbkBAIC0yOCw2ICsyOCw3IEBAIHN0cnVjdCBuaF9jb25maWcge1xcbiBcXHR1OFxcdFxcdG5oX3Byb3RvY29sO1xcbiBcXHR1OFxcdFxcdG5oX2JsYWNraG9sZTtcXG4gXFx0dThcXHRcXHRuaF9mZGI7XFxuK1xcdF9fYmUxNlxcdFxcdG5oX2ZkYl9wb3J0O1xcbiBcXHR1MzJcXHRcXHRuaF9mbGFncztcXG4gXFxuIFxcdGludFxcdFxcdG5oX2lmaW5kZXg7XFxuQEAgLTYzLDYgKzY0LDcgQEAgc3RydWN0IG5oX2luZm8ge1xcbiBcXHR1OFxcdFxcdFxcdGZhbWlseTtcXG4gXFx0Ym9vbFxcdFxcdFxcdHJlamVjdF9uaDtcXG4gXFx0Ym9vbFxcdFxcdFxcdGZkYl9uaDtcXG4rXFx0X19iZTE2XFx0XFx0XFx0ZmRiX3BvcnQ7XFxuIFxcbiBcXHR1bmlvbiB7XFxuIFxcdFxcdHN0cnVjdCBmaWJfbmhfY29tbW9uXFx0ZmliX25oYztcXG5AQCAtNTc0LDcgKzU3Niw4IEBAIHN0cnVjdCBmaWJfbmhfY29tbW9uICpuZXh0aG9wX2ZkYl9uaGMoc3RydWN0IG5leHRob3AgKm5oKVxcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lIHN0cnVjdCBmaWJfbmhfY29tbW9uICpuZXh0aG9wX3BhdGhfZmRiX3Jlc3VsdChzdHJ1Y3QgbmV4dGhvcCAqbmgsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBpbnQgaGFzaClcXG4rXFx0XFx0XFx0XFx0XFx0XFx0ICAgIGludCBoYXNoLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgX19iZTE2ICpmZGJfcG9ydClcXG4ge1xcbiBcXHRzdHJ1Y3QgbmhfaW5mbyAqbmhpO1xcbiBcXHRzdHJ1Y3QgbmV4dGhvcCAqbmhwO1xcbkBAIC01ODMsNiArNTg2LDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmV4dGhvcF9wYXRoX2ZkYl9yZXN1bHQoc3RydWN0IG5leHRob3AgKm5oLFxcbiBcXHRpZiAodW5saWtlbHkoIW5ocCkpXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXHRuaGkgPSByY3VfZGVyZWZlcmVuY2UobmhwLVxcdTAwM2VuaF9pbmZvKTtcXG4rXFx0aWYgKGZkYl9wb3J0KVxcbitcXHRcXHQqZmRiX3BvcnQgPSBuaGktXFx1MDAzZWZkYl9wb3J0O1xcbiBcXHRyZXR1cm4gXFx1MDAyNm5oaS1cXHUwMDNlZmliX25oYztcXG4gfVxcbiAjZW5kaWZcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvdnhsYW4uaCBiL2luY2x1ZGUvbmV0L3Z4bGFuLmhcXG5pbmRleCBkZmJhODk2OTVlZmNmYS4uZGU0MWIzNzQ2ODhmMjkgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvdnhsYW4uaFxcbisrKyBiL2luY2x1ZGUvbmV0L3Z4bGFuLmhcXG5AQCAtNTY3LDggKzU2Nyw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3Qoc3RydWN0IG5leHRob3AgKm5oLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IHZ4bGFuX3Jkc3QgKnJkc3QpXFxuIHtcXG4gXFx0c3RydWN0IGZpYl9uaF9jb21tb24gKm5oYztcXG4rXFx0X19iZTE2IGZkYl9wb3J0ID0gMDtcXG4gXFxuLVxcdG5oYyA9IG5leHRob3BfcGF0aF9mZGJfcmVzdWx0KG5oLCBoYXNoIFxcdTAwM2VcXHUwMDNlIDEpO1xcbitcXHRuaGMgPSBuZXh0aG9wX3BhdGhfZmRiX3Jlc3VsdChuaCwgaGFzaCBcXHUwMDNlXFx1MDAzZSAxLCBcXHUwMDI2ZmRiX3BvcnQpO1xcbiBcXHRpZiAodW5saWtlbHkoIW5oYykpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXG4gXFxuQEAgLTU4Myw2ICs1ODQsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdnhsYW5fZmRiX25oX3BhdGhfc2VsZWN0KHN0cnVjdCBuZXh0aG9wICpuaCxcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4gXFxuK1xcdHJkc3QtXFx1MDAzZXJlbW90ZV9wb3J0ID0gZmRiX3BvcnQ7XFxuK1xcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L25leHRob3AuaCBiL2luY2x1ZGUvdWFwaS9saW51eC9uZXh0aG9wLmhcXG5pbmRleCBiYzQ5YmFmNGEyNjdmMC4uZTU4N2JiZjNiODkwYTMgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L25leHRob3AuaFxcbisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9uZXh0aG9wLmhcXG5AQCAtODMsNiArODMsOSBAQCBlbnVtIHtcXG4gXFx0LyogdTMyOyByZWFkLW9ubHk7IHdoZXRoZXIgYW55IGRyaXZlciBjb2xsZWN0cyBIVyBzdGF0cyAqL1xcbiBcXHROSEFfSFdfU1RBVFNfVVNFRCxcXG4gXFxuK1xcdC8qIGJlMTY7IFVEUCBkZXN0aW5hdGlvbiBwb3J0IGZvciBhbiBmZGIgbmV4dGhvcCAoZS5nLiBWWExBTikgKi9cXG4rXFx0TkhBX0ZEQl9QT1JULFxcbitcXG4gXFx0X19OSEFfTUFYLFxcbiB9O1xcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvbmV4dGhvcC5jIGIvbmV0L2lwdjQvbmV4dGhvcC5jXFxuaW5kZXggNjIwNWJkNTdhYTg1MjAuLjViMjdjYzlhOTE5MWQ3IDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L25leHRob3AuY1xcbisrKyBiL25ldC9pcHY0L25leHRob3AuY1xcbkBAIC0zOSw2ICszOSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBydG1fbmhfcG9saWN5X25ld1tdID0ge1xcbiBcXHRbTkhBX0VOQ0FQX1RZUEVdXFx0PSB7IC50eXBlID0gTkxBX1UxNiB9LFxcbiBcXHRbTkhBX0VOQ0FQXVxcdFxcdD0geyAudHlwZSA9IE5MQV9ORVNURUQgfSxcXG4gXFx0W05IQV9GREJdXFx0XFx0PSB7IC50eXBlID0gTkxBX0ZMQUcgfSxcXG4rXFx0W05IQV9GREJfUE9SVF1cXHRcXHQ9IHsgLnR5cGUgPSBOTEFfVTE2IH0sXFxuIFxcdFtOSEFfUkVTX0dST1VQXVxcdFxcdD0geyAudHlwZSA9IE5MQV9ORVNURUQgfSxcXG4gXFx0W05IQV9IV19TVEFUU19FTkFCTEVdXFx0PSBOTEFfUE9MSUNZX01BWChOTEFfVTMyLCB0cnVlKSxcXG4gfTtcXG5AQCAtOTU2LDYgKzk1Nyw5IEBAIHN0YXRpYyBpbnQgbmhfZmlsbF9ub2RlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXh0aG9wICpuaCxcXG4gXFx0fSBlbHNlIGlmIChuaGktXFx1MDAzZWZkYl9uaCkge1xcbiBcXHRcXHRpZiAobmxhX3B1dF9mbGFnKHNrYiwgTkhBX0ZEQikpXFxuIFxcdFxcdFxcdGdvdG8gbmxhX3B1dF9mYWlsdXJlO1xcbitcXHRcXHRpZiAobmhpLVxcdTAwM2VmZGJfcG9ydCBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHQgICAgbmxhX3B1dF9iZTE2KHNrYiwgTkhBX0ZEQl9QT1JULCBuaGktXFx1MDAzZWZkYl9wb3J0KSlcXG4rXFx0XFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxuIFxcbkBAIC0xMDU1LDYgKzEwNTksOSBAQCBzdGF0aWMgc2l6ZV90IG5oX25sbXNnX3NpemVfc2luZ2xlKHN0cnVjdCBuZXh0aG9wICpuaClcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdH1cXG4gXFxuK1xcdGlmIChuaGktXFx1MDAzZWZkYl9uaClcXG4rXFx0XFx0c3ogKz0gbmxhX3RvdGFsX3NpemUoMik7XFx0LyogTkhBX0ZEQl9QT1JUICovXFxuK1xcbiBcXHRpZiAobmhpLVxcdTAwM2VmaWJfbmhjLm5oY19sd3RzdGF0ZSkge1xcbiBcXHRcXHRzeiArPSBsd3R1bm5lbF9nZXRfZW5jYXBfc2l6ZShuaGktXFx1MDAzZWZpYl9uaGMubmhjX2x3dHN0YXRlKTtcXG4gXFx0XFx0c3ogKz0gbmxhX3RvdGFsX3NpemUoMik7ICAvKiBOSEFfRU5DQVBfVFlQRSAqL1xcbkBAIC0yOTU2LDggKzI5NjMsMTAgQEAgc3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuaF9jb25maWcgKmNmZyxcXG4gXFx0bmhpLVxcdTAwM2VmYW1pbHkgPSBjZmctXFx1MDAzZW5oX2ZhbWlseTtcXG4gXFx0bmhpLVxcdTAwM2VmaWJfbmhjLm5oY19zY29wZSA9IFJUX1NDT1BFX0xJTks7XFxuIFxcbi1cXHRpZiAoY2ZnLVxcdTAwM2VuaF9mZGIpXFxuK1xcdGlmIChjZmctXFx1MDAzZW5oX2ZkYikge1xcbiBcXHRcXHRuaGktXFx1MDAzZWZkYl9uaCA9IDE7XFxuK1xcdFxcdG5oaS1cXHUwMDNlZmRiX3BvcnQgPSBjZmctXFx1MDAzZW5oX2ZkYl9wb3J0O1xcbitcXHR9XFxuIFxcbiBcXHRpZiAoY2ZnLVxcdTAwM2VuaF9ibGFja2hvbGUpIHtcXG4gXFx0XFx0bmhpLVxcdTAwM2VyZWplY3RfbmggPSAxO1xcbkBAIC0zMTQ3LDYgKzMxNTYsMTUgQEAgc3RhdGljIGludCBydG1fdG9fbmhfY29uZmlnKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0Y2ZnLVxcdTAwM2VuaF9mZGIgPSBubGFfZ2V0X2ZsYWcodGJbTkhBX0ZEQl0pO1xcbiBcXHR9XFxuIFxcbitcXHRpZiAodGJbTkhBX0ZEQl9QT1JUXSkge1xcbitcXHRcXHRpZiAoIXRiW05IQV9GREJdIHx8ICF0YltOSEFfR0FURVdBWV0pIHtcXG4rXFx0XFx0XFx0TkxfU0VUX0VSUl9NU0coZXh0YWNrLFxcbitcXHRcXHRcXHRcXHQgICAgICAgXFxcIkZEQiBwb3J0IGNhbiBvbmx5IGJlIHNldCBvbiBmZGIgbmV4dGhvcHMgdGhhdCBoYXZlIGEgZ2F0ZXdheVxcXCIpO1xcbitcXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0fVxcbitcXHRcXHRjZmctXFx1MDAzZW5oX2ZkYl9wb3J0ID0gbmxhX2dldF9iZTE2KHRiW05IQV9GREJfUE9SVF0pO1xcbitcXHR9XFxuK1xcbiBcXHRpZiAodGJbTkhBX0dST1VQXSkge1xcbiBcXHRcXHRpZiAobmhtLVxcdTAwM2VuaF9mYW1pbHkgIT0gQUZfVU5TUEVDKSB7XFxuIFxcdFxcdFxcdE5MX1NFVF9FUlJfTVNHKGV4dGFjaywgXFxcIkludmFsaWQgZmFtaWx5IGZvciBncm91cFxcXCIpO1xcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcXG5pbmRleCA3MDhkOTYwYWUwN2Q1Yi4uYzA2ZWI0OTI3Y2Q5Y2IgMTAwNjQ0XFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXFxuQEAgLTM2LDYgKzM2LDcgQEAgVEVTVF9QUk9HUyA6PSBcXFxcXFxuIFxcdGZpYl9uZXh0aG9wX211bHRpcHJlZml4LnNoIFxcXFxcXG4gXFx0ZmliX25leHRob3Bfbm9uZ3cuc2ggXFxcXFxcbiBcXHRmaWJfbmV4dGhvcHMuc2ggXFxcXFxcbitcXHRmaWJfbmV4dGhvcHNfZmRiX3BvcnQuc2ggXFxcXFxcbiBcXHRmaWJfcnVsZV90ZXN0cy5zaCBcXFxcXFxuIFxcdGZpYl90ZXN0cy5zaCBcXFxcXFxuIFxcdGZpbl9hY2tfbGF0LnNoIFxcXFxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZpYl9uZXh0aG9wc19mZGJfcG9ydC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9maWJfbmV4dGhvcHNfZmRiX3BvcnQuc2hcXG5uZXcgZmlsZSBtb2RlIDEwMDc1NVxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi44YjQwMWM2ZDI0YTE0Zlxcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZmliX25leHRob3BzX2ZkYl9wb3J0LnNoXFxuQEAgLTAsMCArMSw3OCBAQFxcbisjIS9iaW4vYmFzaFxcbisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuKyNcXG4rIyBDb250cm9sLXBsYW5lIHNlbGZ0ZXN0IGZvciBwZXItbmV4dGhvcCBWWExBTiBmZGIgZGVzdGluYXRpb24gcG9ydFxcbisjIChOSEFfRkRCX1BPUlQpLiAgVmVyaWZpZXMgdGhlIGFjY2VwdC9yZWplY3QgcnVsZXMgYW5kIHRoZSBkdW1wIHJvdW5kdHJpcC5cXG4rIyBObyBkYXRhcGF0aCB0cmFmZmljIGhlcmUgLS0gc2VlIHRlc3RzL2ludGVnL3Z4bGFuLWZkYi1wb3J0LWludGVnLnNoIGZvciB0aGVcXG4rIyByZWFsIGZvcndhcmRpbmcgdGVzdC5cXG4rI1xcbisjIFJlcXVpcmVzOiBwYXRjaGVkIGtlcm5lbCAoTkhBX0ZEQl9QT1JUKSBhbmQgcGF0Y2hlZCBpcHJvdXRlMiAodGhlIFxcXCJwb3J0XFxcIlxcbisjIGtleXdvcmQgb24gXFxcImlwIG5leHRob3AgLi4uIGZkYlxcXCIpLiAgU0tJUHMgY2xlYW5seSBvdGhlcndpc2UuXFxuK1xcbitzZXQgLXVcXG4rXFxuK2tzZnRfc2tpcD00XFxuK05TPVxcXCJuaGZkYnBvcnQtJCRcXFwiXFxuK0lQPVxcXCJpcCAtbmV0bnMgJE5TXFxcIlxcbityZXQ9MFxcbitcXG4rbG9nX3Rlc3QoKSB7XFx0IyAkMSBhY3R1YWxfcmMgICQyIGV4cGVjdGVkX3JjICAkMyBuYW1lXFxuK1xcdGlmIFsgXFxcIiQxXFxcIiA9IFxcXCIkMlxcXCIgXTsgdGhlblxcbitcXHRcXHRwcmludGYgXFxcIlRFU1Q6ICUtNThzIFsgT0sgXVxcXFxuXFxcIiBcXFwiJDNcXFwiXFxuK1xcdGVsc2VcXG4rXFx0XFx0cHJpbnRmIFxcXCJURVNUOiAlLTU4cyBbRkFJTF0gKHJjPSQxIHdhbnQ9JDIpXFxcXG5cXFwiIFxcXCIkM1xcXCJcXG4rXFx0XFx0cmV0PTFcXG4rXFx0ZmlcXG4rfVxcbitcXG4rIyBwYXNzZXMgKHJldHVybnMgMCkgaWZmIHRoZSBjb21tYW5kIEZBSUxTXFxuK2V4cGVjdF9mYWlsKCkge1xcbitcXHRpZiBcXFwiJEBcXFwiIFxcdTAwM2UvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MTsgdGhlbiByZXR1cm4gMTsgZWxzZSByZXR1cm4gMDsgZmlcXG4rfVxcbitcXG4rY2xlYW51cCgpIHsgaXAgbmV0bnMgZGVsIFxcXCIkTlNcXFwiIDJcXHUwMDNlL2Rldi9udWxsOyB9XFxuK1xcbitjb21tYW5kIC12IGlwIFxcdTAwM2UvZGV2L251bGwgMlxcdTAwM2VcXHUwMDI2MSB8fCB7IGVjaG8gXFxcIlNLSVA6IGlwcm91dGUyIG5vdCBmb3VuZFxcXCI7IGV4aXQgJGtzZnRfc2tpcDsgfVxcbitpcCBuZXh0aG9wIGhlbHAgMlxcdTAwM2VcXHUwMDI2MSB8IGdyZXAgLXEgZmRiIHx8IHsgZWNobyBcXFwiU0tJUDogbm8gZmRiIG5leHRob3Agc3VwcG9ydFxcXCI7IGV4aXQgJGtzZnRfc2tpcDsgfVxcbitcXG4rdHJhcCBjbGVhbnVwIEVYSVRcXG4rY2xlYW51cFxcbitpcCBuZXRucyBhZGQgXFxcIiROU1xcXCIgfHwgeyBlY2hvIFxcXCJTS0lQOiBjYW5ub3QgY3JlYXRlIG5ldG5zXFxcIjsgZXhpdCAka3NmdF9za2lwOyB9XFxuKyRJUCBsaW5rIHNldCBsbyB1cFxcbitcXG4rIyBQcm9iZSBmb3IgXFxcInBvcnRcXFwiIGtleXdvcmQgKyBrZXJuZWwgTkhBX0ZEQl9QT1JUIHN1cHBvcnQ7IFNLSVAgaWYgbWlzc2luZy5cXG4raWYgISAkSVAgbmV4dGhvcCBhZGQgaWQgMSB2aWEgMTAuMC4wLjEgZmRiIHBvcnQgNDc5MCAyXFx1MDAzZS9kZXYvbnVsbDsgdGhlblxcbitcXHRlY2hvIFxcXCJTS0lQOiAnaXAgbmV4dGhvcCAuLi4gZmRiIHBvcnQnIHVuc3VwcG9ydGVkIChuZWVkcyBwYXRjaGVkIGtlcm5lbCArIGlwcm91dGUyKVxcXCJcXG4rXFx0ZXhpdCAka3NmdF9za2lwXFxuK2ZpXFxuK2xvZ190ZXN0IDAgMCBcXFwiYWRkIGZkYiBuZXh0aG9wIHdpdGggcG9ydFxcXCJcXG4rXFxuKyMgRHVtcCByb3VuZHRyaXAgbXVzdCBlY2hvIHRoZSBwb3J0IGJhY2suXFxuKyRJUCBuZXh0aG9wIHNob3cgaWQgMSB8IGdyZXAgLXF3IFxcXCJwb3J0IDQ3OTBcXFwiXFxuK2xvZ190ZXN0ICQ/IDAgXFxcImR1bXAgc2hvd3MgZmRiIHBvcnQgNDc5MFxcXCJcXG4rXFxuKyMgUmVqZWN0OiBwb3J0IG9uIGEgcm91dGVkIChub24tZmRiKSBuZXh0aG9wLlxcbitleHBlY3RfZmFpbCAkSVAgbmV4dGhvcCBhZGQgaWQgMiB2aWEgMTAuMC4wLjEgZGV2IGxvIHBvcnQgNDc5MFxcbitsb2dfdGVzdCAkPyAwIFxcXCJyZWplY3QgcG9ydCBvbiBub24tZmRiIG5leHRob3BcXFwiXFxuK1xcbisjIFJlamVjdDogZmRiIHBvcnQgd2l0aG91dCBhIGdhdGV3YXkuXFxuK2V4cGVjdF9mYWlsICRJUCBuZXh0aG9wIGFkZCBpZCAzIGZkYiBwb3J0IDQ3OTBcXG4rbG9nX3Rlc3QgJD8gMCBcXFwicmVqZWN0IGZkYiBwb3J0IHdpdGhvdXQgZ2F0ZXdheVxcXCJcXG4rXFxuKyMgVGhlIEhBIGNhc2U6IGEgZ3JvdXAgd2hvc2UgbGVncyBzaGFyZSB0aGUgZ2F0ZXdheSBidXQgZGlmZmVyIGluIHBvcnQuXFxuKyRJUCBuZXh0aG9wIGFkZCBpZCAxMCB2aWEgMTAuMC4wLjEgZmRiIHBvcnQgNDc4OSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuKyRJUCBuZXh0aG9wIGFkZCBpZCAxMSB2aWEgMTAuMC4wLjEgZmRiIHBvcnQgNTc4OSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuKyRJUCBuZXh0aG9wIGFkZCBpZCAxMDAgZ3JvdXAgMTAvMTEgZmRiXFxuK2xvZ190ZXN0ICQ/IDAgXFxcImFkZCBmZGIgbmV4dGhvcCBncm91cCB3aXRoIGRpZmZlcmluZyBwb3J0c1xcXCJcXG4rXFxuKyMgQSBmZGIgbmV4dGhvcCB3aXRob3V0IGEgcG9ydCBtdXN0IE5PVCBlbWl0IG9uZSAoYmFja3dhcmQgY29tcGF0KS5cXG4rJElQIG5leHRob3AgYWRkIGlkIDIwIHZpYSAxMC4wLjAuMSBmZGJcXG4rJElQIG5leHRob3Agc2hvdyBpZCAyMCB8IGdyZXAgLXF3IFxcXCJwb3J0XFxcIlxcbitsb2dfdGVzdCAkPyAxIFxcXCJmZGIgbmV4dGhvcCB3aXRob3V0IHBvcnQgb21pdHMgTkhBX0ZEQl9QT1JUXFxcIlxcbitcXG4raWYgWyAkcmV0IC1lcSAwIF07IHRoZW5cXG4rXFx0ZWNobyBcXFwiUEFTUzogYWxsIE5IQV9GREJfUE9SVCBjb250cm9sLXBsYW5lIGNoZWNrc1xcXCJcXG4rZWxzZVxcbitcXHRlY2hvIFxcXCJGQUlMOiBvbmUgb3IgbW9yZSBOSEFfRkRCX1BPUlQgY2hlY2tzIGZhaWxlZFxcXCJcXG4rZmlcXG4rZXhpdCAkcmV0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA5OjIwOjM2LjY1ODMxMzM3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzgwNTMzOTY2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWWExBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bV90b19uaF9jb25maWdcIixcbiAgICBcIm5leHRob3BfY3JlYXRlXCIsXG4gICAgXCJuaF9maWxsX25vZGVcIixcbiAgICBcInZ4bGFuX3htaXRfbmhcIixcbiAgICBcInZ4bGFuX3htaXRfbmhpZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbmV0bGluayBhdHRyaWJ1dGUgTkhBX0ZEQl9QT1JUIGZvciBmZGIgbmV4dGhvcHMsIG1vZGlmeWluZyBuZXh0aG9wIGNyZWF0aW9uIGFuZCBkdW1waW5nIGxvZ2ljLCBhcyB3ZWxsIGFzIFZYTEFOIHRyYW5zbWlzc2lvbiBwYXRocyB0byB1dGlsaXplIHRoaXMgbmV3IHBvcnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmtpbmcgYW5kIFZYTEFOIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzNTYxNjYxNjcxNjZjZTQ0YmM1ZDNkNzI2MDlkYjcwMmRiYmNlMDAxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTcgMDk6MjA6MzMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9uZXh0aG9wLmggYi9pbmNsdWRlL25ldC9uZXh0aG9wLmhcbmluZGV4IDU3MmU2OWNkYTQ3NjZkLi43ZmI2MTJhNzMwN2YyNSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L25leHRob3AuaFxuKysrIGIvaW5jbHVkZS9uZXQvbmV4dGhvcC5oXG5AQCAtMjgsNiArMjgsNyBAQCBzdHJ1Y3QgbmhfY29uZmlnIHtcbiBcdHU4XHRcdG5oX3Byb3RvY29sO1xuIFx0dThcdFx0bmhfYmxhY2tob2xlO1xuIFx0dThcdFx0bmhfZmRiO1xuK1x0X19iZTE2XHRcdG5oX2ZkYl9wb3J0O1xuIFx0dTMyXHRcdG5oX2ZsYWdzO1xuIFxuIFx0aW50XHRcdG5oX2lmaW5kZXg7XG5AQCAtNjMsNiArNjQsNyBAQCBzdHJ1Y3QgbmhfaW5mbyB7XG4gXHR1OFx0XHRcdGZhbWlseTtcbiBcdGJvb2xcdFx0XHRyZWplY3Rfbmg7XG4gXHRib29sXHRcdFx0ZmRiX25oO1xuK1x0X19iZTE2XHRcdFx0ZmRiX3BvcnQ7XG4gXG4gXHR1bmlvbiB7XG4gXHRcdHN0cnVjdCBmaWJfbmhfY29tbW9uXHRmaWJfbmhjO1xuQEAgLTU3NCw3ICs1NzYsOCBAQCBzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmV4dGhvcF9mZGJfbmhjKHN0cnVjdCBuZXh0aG9wICpuaClcbiB9XG4gXG4gc3RhdGljIGlubGluZSBzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmV4dGhvcF9wYXRoX2ZkYl9yZXN1bHQoc3RydWN0IG5leHRob3AgKm5oLFxuLVx0XHRcdFx0XHRcdFx0ICAgIGludCBoYXNoKVxuK1x0XHRcdFx0XHRcdCAgICBpbnQgaGFzaCxcbitcdFx0XHRcdFx0XHQgICAgX19iZTE2ICpmZGJfcG9ydClcbiB7XG4gXHRzdHJ1Y3QgbmhfaW5mbyAqbmhpO1xuIFx0c3RydWN0IG5leHRob3AgKm5ocDtcbkBAIC01ODMsNiArNTg2LDggQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmV4dGhvcF9wYXRoX2ZkYl9yZXN1bHQoc3RydWN0IG5leHRob3AgKm5oLFxuIFx0aWYgKHVubGlrZWx5KCFuaHApKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcdG5oaSA9IHJjdV9kZXJlZmVyZW5jZShuaHAtXHUwMDNlbmhfaW5mbyk7XG4rXHRpZiAoZmRiX3BvcnQpXG4rXHRcdCpmZGJfcG9ydCA9IG5oaS1cdTAwM2VmZGJfcG9ydDtcbiBcdHJldHVybiBcdTAwMjZuaGktXHUwMDNlZmliX25oYztcbiB9XG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvdnhsYW4uaCBiL2luY2x1ZGUvbmV0L3Z4bGFuLmhcbmluZGV4IGRmYmE4OTY5NWVmY2ZhLi5kZTQxYjM3NDY4OGYyOSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3Z4bGFuLmhcbisrKyBiL2luY2x1ZGUvbmV0L3Z4bGFuLmhcbkBAIC01NjcsOCArNTY3LDkgQEAgc3RhdGljIGlubGluZSBib29sIHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdChzdHJ1Y3QgbmV4dGhvcCAqbmgsXG4gXHRcdFx0XHRcdCAgICBzdHJ1Y3QgdnhsYW5fcmRzdCAqcmRzdClcbiB7XG4gXHRzdHJ1Y3QgZmliX25oX2NvbW1vbiAqbmhjO1xuK1x0X19iZTE2IGZkYl9wb3J0ID0gMDtcbiBcbi1cdG5oYyA9IG5leHRob3BfcGF0aF9mZGJfcmVzdWx0KG5oLCBoYXNoIFx1MDAzZVx1MDAzZSAxKTtcbitcdG5oYyA9IG5leHRob3BfcGF0aF9mZGJfcmVzdWx0KG5oLCBoYXNoIFx1MDAzZVx1MDAzZSAxLCBcdTAwMjZmZGJfcG9ydCk7XG4gXHRpZiAodW5saWtlbHkoIW5oYykpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbkBAIC01ODMsNiArNTg0LDggQEAgc3RhdGljIGlubGluZSBib29sIHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdChzdHJ1Y3QgbmV4dGhvcCAqbmgsXG4gXHRcdGJyZWFrO1xuIFx0fVxuIFxuK1x0cmRzdC1cdTAwM2VyZW1vdGVfcG9ydCA9IGZkYl9wb3J0O1xuK1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9uZXh0aG9wLmggYi9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oXG5pbmRleCBiYzQ5YmFmNGEyNjdmMC4uZTU4N2JiZjNiODkwYTMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oXG4rKysgYi9pbmNsdWRlL3VhcGkvbGludXgvbmV4dGhvcC5oXG5AQCAtODMsNiArODMsOSBAQCBlbnVtIHtcbiBcdC8qIHUzMjsgcmVhZC1vbmx5OyB3aGV0aGVyIGFueSBkcml2ZXIgY29sbGVjdHMgSFcgc3RhdHMgKi9cbiBcdE5IQV9IV19TVEFUU19VU0VELFxuIFxuK1x0LyogYmUxNjsgVURQIGRlc3RpbmF0aW9uIHBvcnQgZm9yIGFuIGZkYiBuZXh0aG9wIChlLmcuIFZYTEFOKSAqL1xuK1x0TkhBX0ZEQl9QT1JULFxuK1xuIFx0X19OSEFfTUFYLFxuIH07XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvbmV4dGhvcC5jIGIvbmV0L2lwdjQvbmV4dGhvcC5jXG5pbmRleCA2MjA1YmQ1N2FhODUyMC4uNWIyN2NjOWE5MTkxZDcgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9uZXh0aG9wLmNcbisrKyBiL25ldC9pcHY0L25leHRob3AuY1xuQEAgLTM5LDYgKzM5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IHJ0bV9uaF9wb2xpY3lfbmV3W10gPSB7XG4gXHRbTkhBX0VOQ0FQX1RZUEVdXHQ9IHsgLnR5cGUgPSBOTEFfVTE2IH0sXG4gXHRbTkhBX0VOQ0FQXVx0XHQ9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXG4gXHRbTkhBX0ZEQl1cdFx0PSB7IC50eXBlID0gTkxBX0ZMQUcgfSxcbitcdFtOSEFfRkRCX1BPUlRdXHRcdD0geyAudHlwZSA9IE5MQV9VMTYgfSxcbiBcdFtOSEFfUkVTX0dST1VQXVx0XHQ9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXG4gXHRbTkhBX0hXX1NUQVRTX0VOQUJMRV1cdD0gTkxBX1BPTElDWV9NQVgoTkxBX1UzMiwgdHJ1ZSksXG4gfTtcbkBAIC05NTYsNiArOTU3LDkgQEAgc3RhdGljIGludCBuaF9maWxsX25vZGUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5leHRob3AgKm5oLFxuIFx0fSBlbHNlIGlmIChuaGktXHUwMDNlZmRiX25oKSB7XG4gXHRcdGlmIChubGFfcHV0X2ZsYWcoc2tiLCBOSEFfRkRCKSlcbiBcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbitcdFx0aWYgKG5oaS1cdTAwM2VmZGJfcG9ydCBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIG5sYV9wdXRfYmUxNihza2IsIE5IQV9GREJfUE9SVCwgbmhpLVx1MDAzZWZkYl9wb3J0KSlcbitcdFx0XHRnb3RvIG5sYV9wdXRfZmFpbHVyZTtcbiBcdH0gZWxzZSB7XG4gXHRcdGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XG4gXG5AQCAtMTA1NSw2ICsxMDU5LDkgQEAgc3RhdGljIHNpemVfdCBuaF9ubG1zZ19zaXplX3NpbmdsZShzdHJ1Y3QgbmV4dGhvcCAqbmgpXG4gXHRcdGJyZWFrO1xuIFx0fVxuIFxuK1x0aWYgKG5oaS1cdTAwM2VmZGJfbmgpXG4rXHRcdHN6ICs9IG5sYV90b3RhbF9zaXplKDIpO1x0LyogTkhBX0ZEQl9QT1JUICovXG4rXG4gXHRpZiAobmhpLVx1MDAzZWZpYl9uaGMubmhjX2x3dHN0YXRlKSB7XG4gXHRcdHN6ICs9IGx3dHVubmVsX2dldF9lbmNhcF9zaXplKG5oaS1cdTAwM2VmaWJfbmhjLm5oY19sd3RzdGF0ZSk7XG4gXHRcdHN6ICs9IG5sYV90b3RhbF9zaXplKDIpOyAgLyogTkhBX0VOQ0FQX1RZUEUgKi9cbkBAIC0yOTU2LDggKzI5NjMsMTAgQEAgc3RhdGljIHN0cnVjdCBuZXh0aG9wICpuZXh0aG9wX2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBuaF9jb25maWcgKmNmZyxcbiBcdG5oaS1cdTAwM2VmYW1pbHkgPSBjZmctXHUwMDNlbmhfZmFtaWx5O1xuIFx0bmhpLVx1MDAzZWZpYl9uaGMubmhjX3Njb3BlID0gUlRfU0NPUEVfTElOSztcbiBcbi1cdGlmIChjZmctXHUwMDNlbmhfZmRiKVxuK1x0aWYgKGNmZy1cdTAwM2VuaF9mZGIpIHtcbiBcdFx0bmhpLVx1MDAzZWZkYl9uaCA9IDE7XG4rXHRcdG5oaS1cdTAwM2VmZGJfcG9ydCA9IGNmZy1cdTAwM2VuaF9mZGJfcG9ydDtcbitcdH1cbiBcbiBcdGlmIChjZmctXHUwMDNlbmhfYmxhY2tob2xlKSB7XG4gXHRcdG5oaS1cdTAwM2VyZWplY3RfbmggPSAxO1xuQEAgLTMxNDcsNiArMzE1NiwxNSBAQCBzdGF0aWMgaW50IHJ0bV90b19uaF9jb25maWcoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRjZmctXHUwMDNlbmhfZmRiID0gbmxhX2dldF9mbGFnKHRiW05IQV9GREJdKTtcbiBcdH1cbiBcbitcdGlmICh0YltOSEFfRkRCX1BPUlRdKSB7XG4rXHRcdGlmICghdGJbTkhBX0ZEQl0gfHwgIXRiW05IQV9HQVRFV0FZXSkge1xuK1x0XHRcdE5MX1NFVF9FUlJfTVNHKGV4dGFjayxcbitcdFx0XHRcdCAgICAgICBcIkZEQiBwb3J0IGNhbiBvbmx5IGJlIHNldCBvbiBmZGIgbmV4dGhvcHMgdGhhdCBoYXZlIGEgZ2F0ZXdheVwiKTtcbitcdFx0XHRnb3RvIG91dDtcbitcdFx0fVxuK1x0XHRjZmctXHUwMDNlbmhfZmRiX3BvcnQgPSBubGFfZ2V0X2JlMTYodGJbTkhBX0ZEQl9QT1JUXSk7XG4rXHR9XG4rXG4gXHRpZiAodGJbTkhBX0dST1VQXSkge1xuIFx0XHRpZiAobmhtLVx1MDAzZW5oX2ZhbWlseSAhPSBBRl9VTlNQRUMpIHtcbiBcdFx0XHROTF9TRVRfRVJSX01TRyhleHRhY2ssIFwiSW52YWxpZCBmYW1pbHkgZm9yIGdyb3VwXCIpO1xuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9NYWtlZmlsZVxuaW5kZXggNzA4ZDk2MGFlMDdkNWIuLmMwNmViNDkyN2NkOWNiIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L01ha2VmaWxlXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvTWFrZWZpbGVcbkBAIC0zNiw2ICszNiw3IEBAIFRFU1RfUFJPR1MgOj0gXFxcbiBcdGZpYl9uZXh0aG9wX211bHRpcHJlZml4LnNoIFxcXG4gXHRmaWJfbmV4dGhvcF9ub25ndy5zaCBcXFxuIFx0ZmliX25leHRob3BzLnNoIFxcXG4rXHRmaWJfbmV4dGhvcHNfZmRiX3BvcnQuc2ggXFxcbiBcdGZpYl9ydWxlX3Rlc3RzLnNoIFxcXG4gXHRmaWJfdGVzdHMuc2ggXFxcbiBcdGZpbl9hY2tfbGF0LnNoIFxcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2ZpYl9uZXh0aG9wc19mZGJfcG9ydC5zaCBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9maWJfbmV4dGhvcHNfZmRiX3BvcnQuc2hcbm5ldyBmaWxlIG1vZGUgMTAwNzU1XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uOGI0MDFjNmQyNGExNGZcbi0tLSAvZGV2L251bGxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9maWJfbmV4dGhvcHNfZmRiX3BvcnQuc2hcbkBAIC0wLDAgKzEsNzggQEBcbisjIS9iaW4vYmFzaFxuKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbisjXG4rIyBDb250cm9sLXBsYW5lIHNlbGZ0ZXN0IGZvciBwZXItbmV4dGhvcCBWWExBTiBmZGIgZGVzdGluYXRpb24gcG9ydFxuKyMgKE5IQV9GREJfUE9SVCkuICBWZXJpZmllcyB0aGUgYWNjZXB0L3JlamVjdCBydWxlcyBhbmQgdGhlIGR1bXAgcm91bmR0cmlwLlxuKyMgTm8gZGF0YXBhdGggdHJhZmZpYyBoZXJlIC0tIHNlZSB0ZXN0cy9pbnRlZy92eGxhbi1mZGItcG9ydC1pbnRlZy5zaCBmb3IgdGhlXG4rIyByZWFsIGZvcndhcmRpbmcgdGVzdC5cbisjXG4rIyBSZXF1aXJlczogcGF0Y2hlZCBrZXJuZWwgKE5IQV9GREJfUE9SVCkgYW5kIHBhdGNoZWQgaXByb3V0ZTIgKHRoZSBcInBvcnRcIlxuKyMga2V5d29yZCBvbiBcImlwIG5leHRob3AgLi4uIGZkYlwiKS4gIFNLSVBzIGNsZWFubHkgb3RoZXJ3aXNlLlxuK1xuK3NldCAtdVxuK1xuK2tzZnRfc2tpcD00XG4rTlM9XCJuaGZkYnBvcnQtJCRcIlxuK0lQPVwiaXAgLW5ldG5zICROU1wiXG4rcmV0PTBcbitcbitsb2dfdGVzdCgpIHtcdCMgJDEgYWN0dWFsX3JjICAkMiBleHBlY3RlZF9yYyAgJDMgbmFtZVxuK1x0aWYgWyBcIiQxXCIgPSBcIiQyXCIgXTsgdGhlblxuK1x0XHRwcmludGYgXCJURVNUOiAlLTU4cyBbIE9LIF1cXG5cIiBcIiQzXCJcbitcdGVsc2VcbitcdFx0cHJpbnRmIFwiVEVTVDogJS01OHMgW0ZBSUxdIChyYz0kMSB3YW50PSQyKVxcblwiIFwiJDNcIlxuK1x0XHRyZXQ9MVxuK1x0Zmlcbit9XG4rXG4rIyBwYXNzZXMgKHJldHVybnMgMCkgaWZmIHRoZSBjb21tYW5kIEZBSUxTXG4rZXhwZWN0X2ZhaWwoKSB7XG4rXHRpZiBcIiRAXCIgXHUwMDNlL2Rldi9udWxsIDJcdTAwM2VcdTAwMjYxOyB0aGVuIHJldHVybiAxOyBlbHNlIHJldHVybiAwOyBmaVxuK31cbitcbitjbGVhbnVwKCkgeyBpcCBuZXRucyBkZWwgXCIkTlNcIiAyXHUwMDNlL2Rldi9udWxsOyB9XG4rXG4rY29tbWFuZCAtdiBpcCBcdTAwM2UvZGV2L251bGwgMlx1MDAzZVx1MDAyNjEgfHwgeyBlY2hvIFwiU0tJUDogaXByb3V0ZTIgbm90IGZvdW5kXCI7IGV4aXQgJGtzZnRfc2tpcDsgfVxuK2lwIG5leHRob3AgaGVscCAyXHUwMDNlXHUwMDI2MSB8IGdyZXAgLXEgZmRiIHx8IHsgZWNobyBcIlNLSVA6IG5vIGZkYiBuZXh0aG9wIHN1cHBvcnRcIjsgZXhpdCAka3NmdF9za2lwOyB9XG4rXG4rdHJhcCBjbGVhbnVwIEVYSVRcbitjbGVhbnVwXG4raXAgbmV0bnMgYWRkIFwiJE5TXCIgfHwgeyBlY2hvIFwiU0tJUDogY2Fubm90IGNyZWF0ZSBuZXRuc1wiOyBleGl0ICRrc2Z0X3NraXA7IH1cbiskSVAgbGluayBzZXQgbG8gdXBcbitcbisjIFByb2JlIGZvciBcInBvcnRcIiBrZXl3b3JkICsga2VybmVsIE5IQV9GREJfUE9SVCBzdXBwb3J0OyBTS0lQIGlmIG1pc3NpbmcuXG4raWYgISAkSVAgbmV4dGhvcCBhZGQgaWQgMSB2aWEgMTAuMC4wLjEgZmRiIHBvcnQgNDc5MCAyXHUwMDNlL2Rldi9udWxsOyB0aGVuXG4rXHRlY2hvIFwiU0tJUDogJ2lwIG5leHRob3AgLi4uIGZkYiBwb3J0JyB1bnN1cHBvcnRlZCAobmVlZHMgcGF0Y2hlZCBrZXJuZWwgKyBpcHJvdXRlMilcIlxuK1x0ZXhpdCAka3NmdF9za2lwXG4rZmlcbitsb2dfdGVzdCAwIDAgXCJhZGQgZmRiIG5leHRob3Agd2l0aCBwb3J0XCJcbitcbisjIER1bXAgcm91bmR0cmlwIG11c3QgZWNobyB0aGUgcG9ydCBiYWNrLlxuKyRJUCBuZXh0aG9wIHNob3cgaWQgMSB8IGdyZXAgLXF3IFwicG9ydCA0NzkwXCJcbitsb2dfdGVzdCAkPyAwIFwiZHVtcCBzaG93cyBmZGIgcG9ydCA0NzkwXCJcbitcbisjIFJlamVjdDogcG9ydCBvbiBhIHJvdXRlZCAobm9uLWZkYikgbmV4dGhvcC5cbitleHBlY3RfZmFpbCAkSVAgbmV4dGhvcCBhZGQgaWQgMiB2aWEgMTAuMC4wLjEgZGV2IGxvIHBvcnQgNDc5MFxuK2xvZ190ZXN0ICQ/IDAgXCJyZWplY3QgcG9ydCBvbiBub24tZmRiIG5leHRob3BcIlxuK1xuKyMgUmVqZWN0OiBmZGIgcG9ydCB3aXRob3V0IGEgZ2F0ZXdheS5cbitleHBlY3RfZmFpbCAkSVAgbmV4dGhvcCBhZGQgaWQgMyBmZGIgcG9ydCA0NzkwXG4rbG9nX3Rlc3QgJD8gMCBcInJlamVjdCBmZGIgcG9ydCB3aXRob3V0IGdhdGV3YXlcIlxuK1xuKyMgVGhlIEhBIGNhc2U6IGEgZ3JvdXAgd2hvc2UgbGVncyBzaGFyZSB0aGUgZ2F0ZXdheSBidXQgZGlmZmVyIGluIHBvcnQuXG4rJElQIG5leHRob3AgYWRkIGlkIDEwIHZpYSAxMC4wLjAuMSBmZGIgcG9ydCA0Nzg5IFx1MDAyNlx1MDAyNiBcXFxuKyRJUCBuZXh0aG9wIGFkZCBpZCAxMSB2aWEgMTAuMC4wLjEgZmRiIHBvcnQgNTc4OSBcdTAwMjZcdTAwMjYgXFxcbiskSVAgbmV4dGhvcCBhZGQgaWQgMTAwIGdyb3VwIDEwLzExIGZkYlxuK2xvZ190ZXN0ICQ/IDAgXCJhZGQgZmRiIG5leHRob3AgZ3JvdXAgd2l0aCBkaWZmZXJpbmcgcG9ydHNcIlxuK1xuKyMgQSBmZGIgbmV4dGhvcCB3aXRob3V0IGEgcG9ydCBtdXN0IE5PVCBlbWl0IG9uZSAoYmFja3dhcmQgY29tcGF0KS5cbiskSVAgbmV4dGhvcCBhZGQgaWQgMjAgdmlhIDEwLjAuMC4xIGZkYlxuKyRJUCBuZXh0aG9wIHNob3cgaWQgMjAgfCBncmVwIC1xdyBcInBvcnRcIlxuK2xvZ190ZXN0ICQ/IDEgXCJmZGIgbmV4dGhvcCB3aXRob3V0IHBvcnQgb21pdHMgTkhBX0ZEQl9QT1JUXCJcbitcbitpZiBbICRyZXQgLWVxIDAgXTsgdGhlblxuK1x0ZWNobyBcIlBBU1M6IGFsbCBOSEFfRkRCX1BPUlQgY29udHJvbC1wbGFuZSBjaGVja3NcIlxuK2Vsc2VcbitcdGVjaG8gXCJGQUlMOiBvbmUgb3IgbW9yZSBOSEFfRkRCX1BPUlQgY2hlY2tzIGZhaWxlZFwiXG4rZmlcbitleGl0ICRyZXRcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA5OjIwOjM2LjY1ODMxNjM1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE2ODI3NjAxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZYTEFOIEZEQiBOZXh0aG9wIFBhdGNoKipcblxuT2theSwgc28gd2UndmUgZ290IGEgbmV3IHBhdGNoIGhlcmUuIEl0J3MgYWRkaW5nIGBOSEFfRkRCX1BPUlRgLCBhIG5ldyBmZWF0dXJlIGZvciBGREIgbmV4dGhvcHMsIHNwZWNpZmljYWxseSBmb3IgdGhpbmdzIGxpa2UgVlhMQU4uIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gg4oCTIHdlJ3JlIGdpdmluZyB0aGUgdXNlciB0aGUgYWJpbGl0eSB0byBzZXQgYSBVRFAgZGVzdGluYXRpb24gcG9ydCBmb3IgdGhlc2UgbmV4dGhvcHMuIFRoaXMgaXMgZ29vZDsgbW9yZSBncmFudWxhciBjb250cm9sIGlzIGFsd2F5cyBhIHBsdXMuXG5cblRoZSBwYXRjaCBpdHNlbGYgdG91Y2hlcyBzb21lIGtleSBhcmVhczogYGluY2x1ZGUvbmV0L25leHRob3AuaGAsIGBpbmNsdWRlL25ldC92eGxhbi5oYCwgYGluY2x1ZGUvdWFwaS9saW51eC9uZXh0aG9wLmhgLCBhbmQgYG5ldC9pcHY0L25leHRob3AuY2AsIHdoaWNoIG1ha2VzIHNlbnNlIGdpdmVuIHRoZSBmdW5jdGlvbmFsaXR5LiBQbHVzLCB3ZSBnZXQgYSBzZWxmdGVzdCwgd2hpY2ggaXMgYWJzb2x1dGVseSBjcnVjaWFsLiBHb3R0YSBtYWtlIHN1cmUgdGhpcyBzdHVmZiBpcyBiZWhhdmluZyBhcyBleHBlY3RlZCwgYW5kIHRlc3QgY292ZXJhZ2UgaXMga2V5IGZvciBuZXR3b3JraW5nLlxuXG5Ob3csIGJlZm9yZSBJIGRpZyBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgSSBzaG91bGQgZmlndXJlIG91dCB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMgZm9yIHRlc3RpbmcuIFRoaXMgZmVhdHVyZSBhZmZlY3RzIGBuZXQvaXB2NC9uZXh0aG9wLmNgIGFuZCBgaW5jbHVkZS9uZXQvdnhsYW4uaGAgcHJpbWFyaWx5LiBMZXQncyB0aGluay4uLmBuZXQvaXB2NC9uZXh0aG9wLmNgLi4uaXMgdGhhdCBkZXBlbmRlbnQgb24gYENPTkZJR19JUF9ST1VURV9NVUxUSVBBVEhgIG9yIHNvbWV0aGluZyBzaW1pbGFyPyBBY3R1YWxseSwgSSB0aGluayB0aGF0J3MgY29tcGlsZWQgdW5jb25kaXRpb25hbGx5IGZvciBJUHY0LCBpc24ndCBpdD8gQmV0dGVyIGRvdWJsZS1jaGVjayB0aGUgYG5ldC9pcHY0L01ha2VmaWxlYCBqdXN0IHRvIGJlIGNlcnRhaW4uIEkgZG9uJ3Qgd2FudCB0byB3YXN0ZSB0aW1lIGNvbmZpZ3VyaW5nIHNvbWV0aGluZyB0aGF0J3MgYWxyZWFkeSBlbmFibGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDkzLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDk6MjA6NDEuODI2NTk1MDk2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNjcwMzIwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXh0aG9wLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcXFxcbi0tXFxubmV0L2lwdjQvTWFrZWZpbGUtMTYtXFx0ICAgICBpbmV0X2ZyYWdtZW50Lm8gcGluZy5vIGlwX3R1bm5lbF9jb3JlLm8gZ3JlX29mZmxvYWQubyBcXFxcXFxubmV0L2lwdjQvTWFrZWZpbGU6MTc6XFx0ICAgICBtZXRyaWNzLm8gbmV0bGluay5vIG5leHRob3AubyB1ZHBfdHVubmVsX3N0dWIub1xcbm5ldC9pcHY0L01ha2VmaWxlLTE4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwOToyMDo0Mi4wNTMzMDY5MDFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjg0ODAzMzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUsIG15IGluaXRpYWwgdGhvdWdodCBpczpcblxuKipFeGFtaW5pbmcgQ29uZGl0aW9uYWwgQ29tcGlsYXRpb24gaW4gTmV0d29ya2luZyBDb2RlKipcblxuQWxyaWdodCwgc28gYG5leHRob3Aub2AgaXMgYWx3YXlzIGJ1aWx0IGZvciBJUHY0LiBNYWtlcyBzZW5zZSwgaXQncyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIHJvdXRpbmcuIE5vdywgd2hhdCdzIHRoZSBkZWFsIHdpdGggYHZ4bGFuLmhgPyBNeSBndXQgc2F5cyB0aGF0J3MgbGlrZWx5IHRpZWQgdG8gdGhlIGBDT05GSUdfVlhMQU5gIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCByaWdodD8gWWVhaCwgdGhhdCByaW5ncyBhIGJlbGwuIFRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvdnhsYW4vTWFrZWZpbGVgIGZpbGUuIEl0J3MgdGhlIE1ha2VmaWxlIHRoYXQgdGVsbHMgdGhlIGtlcm5lbCB3aGF0IHRvIGluY2x1ZGUuIEkgY291bGQgYWxzbyBza2ltIHRoZSBkaXJlY3RvcnkgaXRzZWxmIGJ1dCB0aGUgTWFrZWZpbGUgd2lsbCBnaXZlIGEgZGVmaW5pdGl2ZSBhbnN3ZXIuIEknbGwgZ2V0IHRoZSBhbnN3ZXIgaW1tZWRpYXRlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MDEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwOToyMDo0NS4zMzgxMTMwMTVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1NDgzMjg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92eGxhbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jPTI2NTA9c3RhdGljIHZvaWQgdnhsYW5feG1pdF9uaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2NjMtXFx0XFx0Z290byBkcm9wO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjY0OlxcdGRvX3htaXQgPSB2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3QobmgsIGhhc2gsIFxcdTAwMjZuaF9yZHN0KTtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY2NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0yNjgwPXN0YXRpYyBuZXRkZXZfdHhfdCB2eGxhbl94bWl0X25oaWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjk3LVxcdH1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjY5ODpcXHRkb194bWl0ID0gdnhsYW5fZmRiX25oX3BhdGhfc2VsZWN0KG5oLCBoYXNoLCBcXHUwMDI2bmhfcmRzdCk7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2OTktXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA5OjIwOjQ1LjQ2MzYwNDU3MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2OTE5MTExODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOZXh0aG9wIGFuZCBWWExBTiBJbnRlZ3JhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoYXQgYHZ4bGFuX2ZkYl9uaF9wYXRoX3NlbGVjdGAgaXMgdXNlZCBpbiB0aGUgVlhMQU4gY29yZSwgc3BlY2lmaWNhbGx5IGluIGBkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmNgLiAgVGhhdCBtZWFucyBgQ09ORklHX1ZYTEFOYCBpcyBhIHByZXJlcXVpc2l0ZSwgd2hpY2ggaXMgZXhwZWN0ZWQuXG5cbk5vdywgbGV0J3MgYnJvYWRlbiB0aGUgc2NvcGUuIFRoaXMgcGF0Y2ggYWxzbyB0b3VjaGVzIGBuZXQvaXB2NC9uZXh0aG9wLmNgLiAgVGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyBhcmUgYG5oX2ZpbGxfbm9kZWAsIGBuaF9ubG1zZ19zaXplX3NpbmdsZWAsIGBuZXh0aG9wX2NyZWF0ZWAsIGFuZCBgcnRtX3RvX25oX2NvbmZpZ2AuIFRoZXNlIGFyZSBhbGwgcmVsYXRlZCB0byB0aGUgbmV4dGhvcCBuZXRsaW5rIGludGVyZmFjZSwgc28gdGhhdCdzIGEga2V5IGFyZWEgdG8gZXhwbG9yZS5cblxuSSB3YW50IHRvIGRpdmUgZGVlcGVyIGludG8gYG5leHRob3BfY3JlYXRlYCBhbmQgYHJ0bV90b19uaF9jb25maWdgIHdpdGhpbiBgbmV0L2lwdjQvbmV4dGhvcC5jYC4gVGhleSdyZSB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIGludm9sdmVkIGluIGNyZWF0aW5nIGFuZCBjb25maWd1cmluZyBuZXh0aG9wcyB2aWEgbmV0bGluaywgd2hpY2ggaXMgdGhlIGhlYXJ0IG9mIGhvdyB0aGlzIHdvcmtzLlxuXG5UaGUgZm9jdXMgc3ltYm9scyBoZXJlIGFyZSBnb2luZyB0byBiZSBgbmV4dGhvcF9jcmVhdGVgLCBgcnRtX3RvX25oX2NvbmZpZ2AsIGBuaF9maWxsX25vZGVgLCBgbmhfbmxtc2dfc2l6ZV9zaW5nbGVgIOKAkyB0aGV5J3JlIGFsbCBkaXJlY3RseSBpbnZvbHZlZCBpbiBuZXRsaW5rIGludGVyYWN0aW9uIGZvciBuZXh0aG9wcy4gIFRoZW4sIHdlIGFsc28gaGF2ZSBgdnhsYW5fZmRiX25oX3BhdGhfc2VsZWN0YCwgd2hpY2ggaXMgYSBzdGF0aWMgaW5saW5lIGZ1bmN0aW9uIGRlZmluZWQgaW4gYGluY2x1ZGUvbmV0L3Z4bGFuLmhgLiBCZWNhdXNlIGl0J3MgaW5saW5lLCBpdCdzIGFjdHVhbGx5IGlubGluZWQgaW50byB0aGUgdHdvIGZ1bmN0aW9ucyB0aGF0IHVzZSBpdDogYHZ4bGFuX3htaXRfbmhgIGFuZCBgdnhsYW5feG1pdF9uaGlkYC5cblxuVGhlcmVmb3JlLCBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgYHZ4bGFuX3htaXRfbmhgIGFuZCBgdnhsYW5feG1pdF9uaGlkYCBhcmUgZ29vZCBmb2N1cyBzeW1ib2xzIHNpbmNlIHRob3NlIGFyZSB0aGUgcGxhY2VzIHdoZXJlIGB2eGxhbl9mZGJfbmhfcGF0aF9zZWxlY3RgIGlzIGFjdHVhbGx5IGdldHRpbmcgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM2MCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwOToyMDo1MS4xNTU1MjA1NDdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE4MzMzNzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZ4bGFuX3htaXRfbmhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdnhsYW4vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0yMzQ0PXZvaWQgdnhsYW5feG1pdF9vbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjQ5LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjUwOnN0YXRpYyB2b2lkIHZ4bGFuX3htaXRfbmgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY1MS1cXHRcXHRcXHQgIHN0cnVjdCB2eGxhbl9mZGIgKmYsIF9fYmUzMiB2bmksIGJvb2wgZGlkX3JzYylcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNjc5LVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYzoyNjgwOnN0YXRpYyBuZXRkZXZfdHhfdCB2eGxhbl94bWl0X25oaWQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY4MS1cXHRcXHRcXHRcXHQgICB1MzIgbmhpZCwgX19iZTMyIHZuaSlcXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYz0yNzI1PXN0YXRpYyBuZXRkZXZfdHhfdCB2eGxhbl94bWl0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjc3Mi1cXHRpZiAobmhpZClcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6Mjc3MzpcXHRcXHRyZXR1cm4gdnhsYW5feG1pdF9uaGlkKHNrYiwgZGV2LCBuaGlkLCB2bmkpO1xcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yNzc0LVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI4MTgtXFx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihmLVxcdTAwM2VuaCkpIHtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjgxOTpcXHRcXHR2eGxhbl94bWl0X25oKHNrYiwgZGV2LCBmLFxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODIwLVxcdFxcdFxcdCAgICAgICh2bmkgPyA6IHZ4bGFuLVxcdTAwM2VkZWZhdWx0X2RzdC5yZW1vdGVfdm5pKSwgZGlkX3JzYyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA5OjIwOjUxLjI3Mzg2MTI0NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyMDkwNzAxMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFZYTEFOIE5leHRob3AgVHJhbnNtaXNzaW9uIFBhdGgqKlxuXG5Pa2F5LCBzbyBJJ20gaG9uaW5nIGluIG9uIHRoZSBrZXkgc3ltYm9scyBmb3IgdGhpcyBpbnZlc3RpZ2F0aW9uOiBgdnhsYW5feG1pdF9uaGAgYW5kIGB2eGxhbl94bWl0X25oaWRgLiBUaGVzZSBhcmUgbXkgcHJpbWFyeSBmb2N1cyBwb2ludHMuIEkgc2hvdWxkIGFsc28ga2VlcCBhbiBleWUgb24gYHJ0bV90b19uaF9jb25maWdgLCBgbmV4dGhvcF9jcmVhdGVgLCBgbmhfZmlsbF9ub2RlYCwgYW5kIGBuaF9ubG1zZ19zaXplX3NpbmdsZWAuXG5cbk5vdywgbGV0J3MgZGV0ZXJtaW5lIGlmIGBuZXh0aG9wX2NyZWF0ZWAgaXMgcGVyZm9ybWFuY2UgY3JpdGljYWwuIFRoaW5raW5nIHRocm91Z2ggaXQsIGl0J3MgdHJpZ2dlcmVkIGR1cmluZyBuZXh0aG9wIGNyZWF0aW9uIHRocm91Z2ggbmV0bGluaywgd2hpY2ggZmlybWx5IHBsYWNlcyBpdCBpbiB0aGUgY29udHJvbCBwYXRoLiBgcnRtX3RvX25oX2NvbmZpZ2AgaXMgYWxzbyBjb250cm9sIHBsYW5lLiBgbmhfZmlsbF9ub2RlYCwgaW52b2x2ZWQgaW4gbmV4dGhvcCBkdW1waW5nLCBjbGVhcmx5IGJlbG9uZ3MgdG8gdGhlIGNvbnRyb2wgcGF0aCBhcyB3ZWxsLiBBbmQgYG5oX25sbXNnX3NpemVfc2luZ2xlYCwgYWxzbyBjb250cm9sIHBsYW5lLlxuXG5DcnVjaWFsbHksIGB2eGxhbl94bWl0X25oYCBhbmQgYHZ4bGFuX3htaXRfbmhpZGAgYXJlIGRhdGFwYXRoIGZ1bmN0aW9ucywgYW5kIHRoZXkncmUgc3BlY2lmaWNhbGx5IHRpZWQgdG8gbmV4dGhvcC1iYXNlZCBWWExBTiB0cmFuc21pc3Npb24sIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJJ20gbG9va2luZyB0byBvcHRpbWl6ZS5cblxuQmVmb3JlIEkgZ28gZnVydGhlciwgbGV0J3MgbWFrZSBzdXJlIEkgZG9uJ3QgbmVlZCBhbnkgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZW5hYmxlZC4gVGhlIG9idmlvdXMgb25lIGlzIGBDT05GSUdfVlhMQU5gLCByZXF1aXJlZCBmb3IgdGhlIGRhdGFwYXRoIGZ1bmN0aW9ucy4gSSBzaG91bGQgYWxzbyB0aGluayBhYm91dCBgQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSGAuIE5leHRob3BzIGFyZSBwcmV0dHkgZnVuZGFtZW50YWwgdG8gSVB2NCByb3V0aW5nLCBzbyBJJ2xsIGRvdWJsZS1jaGVjayBgbmV0L2lwdjQvS2NvbmZpZ2AganVzdCB0byBiZSBjZXJ0YWluIHRoYXQgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBwZXJ0aW5lbnQgdG8gbmV4dGhvcCBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6NzY1NiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwOToyMDo1Ny40ODI5MzQyNTlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NzYyMTMwNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV4dGhvcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwOToyMDo1Ny43MzA1Njc2ODRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk0MTMwODY1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSVB2NCBOZXh0IEhvcCBJbnZlc3RpZ2F0aW9uKipcblxuUmlnaHQsIHRoaXMgc2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMgaXQncyBqdXN0IHN0YW5kYXJkIElQdjQgYmVoYXZpb3Igd2UncmUgZGVhbGluZyB3aXRoLiBObyBtYWpvciBzdXJwcmlzZXMgdGhlcmUuIEJ1dCwgZ2l2ZW4gdGhlIHJlY2VudCBtb2RpZmljYXRpb25zLCBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBrZXJuZWwgY29kZSwgc3BlY2lmaWNhbGx5LCBgbmV0L2lwdjQvbmV4dGhvcC5jYC4gSSBuZWVkIHRvIG1ldGljdWxvdXNseSBjaGVjayBmb3IgYW55IHByZXByb2Nlc3NvciBkaXJlY3RpdmVzLCBhbnkgYCNpZmRlZmAgYmxvY2tzLCBzdXJyb3VuZGluZyB0aGlzIHBhcnRpY3VsYXIgY29kZSBzZWN0aW9uLiBUaGUgZ29hbCBpcyB0byBpZGVudGlmeSBpZiB0aGUgY2hhbmdlcyBhcmUgY29uZGl0aW9uYWxseSBjb21waWxlZCBvciBpZiB0aGV5J3JlIHVuaXZlcnNhbGx5IGFwcGxpZWQuIFVuZGVyc3RhbmRpbmcgdGhlIHNjb3BlIG9mIHRoZSBtb2RpZmljYXRpb25zIGlzIHBhcmFtb3VudC4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MzQ1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDk6MjE6MDEuNjcxODc4NzM1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDk4MDk2NzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5IQV9GREJfUE9SVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9uZXh0aG9wLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvbmV4dGhvcC5jPTMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBydG1fbmhfcG9saWN5X25ld1tdID0ge1xcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTQxLVxcdFtOSEFfRkRCXVxcdFxcdD0geyAudHlwZSA9IE5MQV9GTEFHIH0sXFxubmV0L2lwdjQvbmV4dGhvcC5jOjQyOlxcdFtOSEFfRkRCX1BPUlRdXFx0XFx0PSB7IC50eXBlID0gTkxBX1UxNiB9LFxcbm5ldC9pcHY0L25leHRob3AuYy00My1cXHRbTkhBX1JFU19HUk9VUF1cXHRcXHQ9IHsgLnR5cGUgPSBOTEFfTkVTVEVEIH0sXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmM9OTE1PXN0YXRpYyBpbnQgbmhfZmlsbF9ub2RlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXh0aG9wICpuaCxcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy05NjAtXFx0XFx0aWYgKG5oaS1cXHUwMDNlZmRiX3BvcnQgXFx1MDAyNlxcdTAwMjZcXG5uZXQvaXB2NC9uZXh0aG9wLmM6OTYxOlxcdFxcdCAgICBubGFfcHV0X2JlMTYoc2tiLCBOSEFfRkRCX1BPUlQsIG5oaS1cXHUwMDNlZmRiX3BvcnQpKVxcbm5ldC9pcHY0L25leHRob3AuYy05NjItXFx0XFx0XFx0Z290byBubGFfcHV0X2ZhaWx1cmU7XFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmM9MTAzOT1zdGF0aWMgc2l6ZV90IG5oX25sbXNnX3NpemVfc2luZ2xlKHN0cnVjdCBuZXh0aG9wICpuaClcXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYy0xMDYyLVxcdGlmIChuaGktXFx1MDAzZWZkYl9uaClcXG5uZXQvaXB2NC9uZXh0aG9wLmM6MTA2MzpcXHRcXHRzeiArPSBubGFfdG90YWxfc2l6ZSgyKTtcXHQvKiBOSEFfRkRCX1BPUlQgKi9cXG5uZXQvaXB2NC9uZXh0aG9wLmMtMTA2NC1cXG4tLVxcbm5ldC9pcHY0L25leHRob3AuYz0zMTAyPXN0YXRpYyBpbnQgcnRtX3RvX25oX2NvbmZpZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvaXB2NC9uZXh0aG9wLmMtMzE1OC1cXG5uZXQvaXB2NC9uZXh0aG9wLmM6MzE1OTpcXHRpZiAodGJbTkhBX0ZEQl9QT1JUXSkge1xcbm5ldC9pcHY0L25leHRob3AuYy0zMTYwLVxcdFxcdGlmICghdGJbTkhBX0ZEQl0gfHwgIXRiW05IQV9HQVRFV0FZXSkge1xcbi0tXFxubmV0L2lwdjQvbmV4dGhvcC5jLTMxNjQtXFx0XFx0fVxcbm5ldC9pcHY0L25leHRob3AuYzozMTY1OlxcdFxcdGNmZy1cXHUwMDNlbmhfZmRiX3BvcnQgPSBubGFfZ2V0X2JlMTYodGJbTkhBX0ZEQl9QT1JUXSk7XFxubmV0L2lwdjQvbmV4dGhvcC5jLTMxNjYtXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwOToyMTowMy43Njk5ODI2NDJaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYzOTM5OTExNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkFuYWx5emluZyBWWExBTiBDb25maWd1cmF0aW9uIEludGVyYWN0aW9ucyoqXG5cbkFscmlnaHQsIG5vIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzLCBzcGVjaWZpY2FsbHkgYCNpZmRlZmBzLCBhcmUgYmVpbmcgdXNlZCB0byBjb25kaXRpb25hbGx5IGluY2x1ZGUgY29kZSByZWxhdGVkIHRvIGBOSEFfRkRCX1BPUlRgLiBUaGF0J3MgZ29vZCB0byBrbm93IOKAkyBmZXdlciBwb3RlbnRpYWwgY29uZmlndXJhdGlvbiBnb3RjaGFzLiBUaGUgY3VycmVudCBjb25maWd1cmF0aW9uIGlzIHNpbXBseSBgVlhMQU5gLlxuXG5Ob3csIEkgbmVlZCB0byBmb2N1cyBvbiB0aGVzZSBzcGVjaWZpYyBzeW1ib2xzOiBgcnRtX3RvX25oX2NvbmZpZ2AsIGBuZXh0aG9wX2NyZWF0ZWAsIGBuaF9maWxsX25vZGVgLCBgbmhfbmxtc2dfc2l6ZV9zaW5nbGVgLCBgdnhsYW5feG1pdF9uaGAsIGFuZCBgdnhsYW5feG1pdF9uaGlkYC4gVGhlc2UgYXBwZWFyIHRvIGJlIHRoZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkIGluIHRoZSBWWExBTiBuZXh0LWhvcCBjb25maWd1cmF0aW9uIHByb2Nlc3MuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdW5kZXJzdGFuZGluZyBob3cgdGhleSBpbnRlcmFjdCwgaG93IG5leHQgaG9wcyBhcmUgY3JlYXRlZCwgZmlsbGVkLCBhbmQgdHJhbnNtaXR0ZWQuXG5cbldhaXQgYSBzZWNvbmQuLi4gYSBxdWljayByZWFsaXR5IGNoZWNrLiBgdnhsYW5feG1pdF9uaGAgYW5kIGB2eGxhbl94bWl0X25oaWRgIGFyZSAqc3RhdGljKiBmdW5jdGlvbnMsIGFuZCBJJ20gcHJldHR5IHN1cmUgdGhleSBhcmUgaW4gYGRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY2AuIEkgc2hvdWxkIHZlcmlmeSB0aG9zZSBuYW1lcyB0byBtYWtlIHN1cmUuIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhhdCBJJ20gcmVmZXJlbmNpbmcgdGhlIGNvcnJlY3QgZnVuY3Rpb24gZGVmaW5pdGlvbnMuIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhlc2UgYXJlIGltcG9ydGFudCwgYnV0IHN0YXRpYyBmdW5jdGlvbnMgY2FuIGludHJvZHVjZSB1bmV4cGVjdGVkIGJlaGF2aW9yIGlmIG5vdCBhY2NvdW50ZWQgZm9yIGNvcnJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTIxNywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwOToyMTowOC40MDkzODQzNThaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5ODYxOTI2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2eGxhbl94bWl0X25oXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MjM0ND12b2lkIHZ4bGFuX3htaXRfb25lKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY0OS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjY1MDpzdGF0aWMgdm9pZCB2eGxhbl94bWl0X25oKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2NTEtXFx0XFx0XFx0ICBzdHJ1Y3QgdnhsYW5fZmRiICpmLCBfX2JlMzIgdm5pLCBib29sIGRpZF9yc2MpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjY3OS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM6MjY4MDpzdGF0aWMgbmV0ZGV2X3R4X3QgdnhsYW5feG1pdF9uaGlkKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI2ODEtXFx0XFx0XFx0XFx0ICAgdTMyIG5oaWQsIF9fYmUzMiB2bmkpXFxuLS1cXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmM9MjcyNT1zdGF0aWMgbmV0ZGV2X3R4X3QgdnhsYW5feG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jLTI3NzItXFx0aWYgKG5oaWQpXFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI3NzM6XFx0XFx0cmV0dXJuIHZ4bGFuX3htaXRfbmhpZChza2IsIGRldiwgbmhpZCwgdm5pKTtcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjc3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3Z4bGFuL3Z4bGFuX2NvcmUuYy0yODE4LVxcdGlmIChyY3VfYWNjZXNzX3BvaW50ZXIoZi1cXHUwMDNlbmgpKSB7XFxuZHJpdmVycy9uZXQvdnhsYW4vdnhsYW5fY29yZS5jOjI4MTk6XFx0XFx0dnhsYW5feG1pdF9uaChza2IsIGRldiwgZixcXG5kcml2ZXJzL25ldC92eGxhbi92eGxhbl9jb3JlLmMtMjgyMC1cXHRcXHRcXHQgICAgICAodm5pID8gOiB2eGxhbi1cXHUwMDNlZGVmYXVsdF9kc3QucmVtb3RlX3ZuaSksIGRpZF9yc2MpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwOToyMTowOS4wMDgwMTMwODZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI2MzE2NjI2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGFzc2Vzc21lbnQgb2YgdGhpcyBwYXRjaCwgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIHdobyB1bmRlcnN0YW5kcyB0aGlzIGxvdy1sZXZlbCBuZXR3b3JraW5nIGNvZGU6XG5cbioqQW5hbHl6aW5nIHRoZSBQYXRjaCdzIEZ1bmN0aW9uYWxpdHkgYW5kIFRlc3RhYmlsaXR5KipcblxuUmlnaHQsIHNvIHRoZXNlIGFyZSBjb25maXJtZWQgYXMgc3RhdGljIGZ1bmN0aW9ucywgd2hpY2ggaXMgZ29vZCB0byBrZWVwIGluIG1pbmQgZm9yIHNjb3BpbmcgYW5kIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuIE15IGluaXRpYWwgcXVlc3Rpb24gaXMgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IG5lZWQgdG8gYmUgY29uc2lkZXJlZC4gVGhlIHBhdGNoIGluY2x1ZGVzIGEgbmV3IHNlbGZ0ZXN0LCBgZmliX25leHRob3BzX2ZkYl9wb3J0LnNoYCwgd2hpY2ggaXMgYSBwb3NpdGl2ZSBzaWduLiBGdW5jdGlvbmFsbHksIHRoaXMgcGF0Y2ggbG9va3Mgc29saWQsIGFuZCBpdCdzIGRlZmluaXRlbHkgc29tZXRoaW5nIHRoYXQncyByaXBlIGZvciBmdXp6aW5nLiBHb29kIHRvIHNlZSB0aGV5J3JlIHRoaW5raW5nIGFib3V0IHRoYXQuXG5cbk5vdywgbGV0J3MgZHJpbGwgZG93biB0byB0aGUgY3JpdGljYWwgc3ltYm9scyB0aGUgcGF0Y2ggZm9jdXNlcyBvbi4gSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGVzZSBhcmUgdGhlIGNvcnJlY3Qgb25lcy4gRXhhbWluaW5nIHRoZSBjb2RlLCBJIHNlZTpcblxuKiAgIGBydG1fdG9fbmhfY29uZmlnYFxuKiAgIGBuZXh0aG9wX2NyZWF0ZWBcbiogICBgbmhfZmlsbF9ub2RlYFxuKiAgIGB2eGxhbl94bWl0X25oYFxuKiAgIGB2eGxhbl94bWl0X25oaWRgXG5cblllcCwgdGhlc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zLCBhbmQgdGhlc2UgY2hvaWNlcyBtYWtlIHNlbnNlIGdpdmVuIHdoYXQgSSdtIGV4cGVjdGluZyB0aGlzIHBhdGNoIHRvIGFkZHJlc3MuIFRoYXQncyBhIGdvb2Qgc2V0IG9mIGZvY3VzIHBvaW50cyBmb3IgdGhpcyB3b3JrLiBOb3cgSSBjYW4gbW92ZSBvbiB0byB0aGUgbmV4dCBzZXQgb2YgY29kZSBibG9ja3MuIExldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyMTIsIk91dHB1dFRva2VucyI6MTQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA5OjIxOjE0LjI3MTE4MjAxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkyNDY0OTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWWExBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bV90b19uaF9jb25maWdcIixcbiAgICBcIm5leHRob3BfY3JlYXRlXCIsXG4gICAgXCJuaF9maWxsX25vZGVcIixcbiAgICBcInZ4bGFuX3htaXRfbmhcIixcbiAgICBcInZ4bGFuX3htaXRfbmhpZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbmV0bGluayBhdHRyaWJ1dGUgTkhBX0ZEQl9QT1JUIGZvciBmZGIgbmV4dGhvcHMsIG1vZGlmeWluZyBuZXh0aG9wIGNyZWF0aW9uIGFuZCBkdW1waW5nIGxvZ2ljLCBhcyB3ZWxsIGFzIFZYTEFOIHRyYW5zbWlzc2lvbiBwYXRocyB0byB1dGlsaXplIHRoaXMgbmV3IHBvcnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmtpbmcgYW5kIFZYTEFOIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWWExBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0bV90b19uaF9jb25maWdcIixcbiAgICBcIm5leHRob3BfY3JlYXRlXCIsXG4gICAgXCJuaF9maWxsX25vZGVcIixcbiAgICBcInZ4bGFuX3htaXRfbmhcIixcbiAgICBcInZ4bGFuX3htaXRfbmhpZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbmV0bGluayBhdHRyaWJ1dGUgTkhBX0ZEQl9QT1JUIGZvciBmZGIgbmV4dGhvcHMsIG1vZGlmeWluZyBuZXh0aG9wIGNyZWF0aW9uIGFuZCBkdW1waW5nIGxvZ2ljLCBhcyB3ZWxsIGFzIFZYTEFOIHRyYW5zbWlzc2lvbiBwYXRocyB0byB1dGlsaXplIHRoaXMgbmV3IHBvcnQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIG5ldHdvcmtpbmcgYW5kIFZYTEFOIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9vdqk[1] Phase: Succeeded StartedAt: 2026-07-17 09:21:26 +0000 UTC FinishedAt: 2026-07-17 09:21:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9vdqk[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-17 09:21:26 +0000 UTC FinishedAt: 2026-07-17 09:21:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9vdqk[2] Phase: Succeeded StartedAt: 2026-07-17 09:21:26 +0000 UTC FinishedAt: 2026-07-17 13:34:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-17 09:21:27 +0000 UTC FinishedAt: 2026-07-17 13:34:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-17 09:21:27 +0000 UTC FinishedAt: 2026-07-17 09:21:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-17 09:21:27 +0000 UTC FinishedAt: 2026-07-17 09:21:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow9vdqk/series-workflow9vdqk-convert-artifact-3693526962/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-17 09:21:38 +0000 UTC FinishedAt: 2026-07-17 09:51:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-17 09:21:38 +0000 UTC FinishedAt: 2026-07-17 09:51: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:*400f41a3-272e-460d-86bc-bc2c03db4df1,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-workflow9vdqk/series-workflow9vdqk-convert-artifact-3693526962/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": "cfd21794-3e63-4293-b841-d3c516d23a84", "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-workflow9vdqk/series-workflow9vdqk-build-action-1872957744/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-17 09:21:38 +0000 UTC FinishedAt: 2026-07-17 09:51:31 +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:*400f41a3-272e-460d-86bc-bc2c03db4df1,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-workflow9vdqk/series-workflow9vdqk-convert-artifact-3693526962/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": "cfd21794-3e63-4293-b841-d3c516d23a84", "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-workflow9vdqk/series-workflow9vdqk-build-action-1872957744/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-17 09:51:55 +0000 UTC FinishedAt: 2026-07-17 09:51:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-17 09:51:55 +0000 UTC FinishedAt: 2026-07-17 09:51:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-17 09:51:55 +0000 UTC FinishedAt: 2026-07-17 09:52:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-17 09:51:55 +0000 UTC FinishedAt: 2026-07-17 09:52:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow9vdqk/series-workflow9vdqk-convert-artifact-3134052557/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-17 09:52:05 +0000 UTC FinishedAt: 2026-07-17 09:54:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-17 09:52:05 +0000 UTC FinishedAt: 2026-07-17 09:53:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cfd21794-3e63-4293-b841-d3c516d23a84,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-workflow9vdqk/series-workflow9vdqk-build-action-1872957744/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-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-17 09:54:05 +0000 UTC FinishedAt: 2026-07-17 09:54:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-17 09:54:05 +0000 UTC FinishedAt: 2026-07-17 09:54:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-17 09:54:05 +0000 UTC FinishedAt: 2026-07-17 10:28:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-17 09:54:05 +0000 UTC FinishedAt: 2026-07-17 10:28:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*400f41a3-272e-460d-86bc-bc2c03db4df1,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-workflow9vdqk/series-workflow9vdqk-convert-artifact-3134052557/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": "6ed932a2-07cd-42a5-a6c6-a6b5230efbe0", "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-workflow9vdqk/series-workflow9vdqk-build-action-3286566569/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-17 09:54:05 +0000 UTC FinishedAt: 2026-07-17 10:28:20 +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:*400f41a3-272e-460d-86bc-bc2c03db4df1,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-workflow9vdqk/series-workflow9vdqk-convert-artifact-3134052557/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": "6ed932a2-07cd-42a5-a6c6-a6b5230efbe0", "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-workflow9vdqk/series-workflow9vdqk-build-action-3286566569/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-17 10:28:31 +0000 UTC FinishedAt: 2026-07-17 10:28:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-17 10:28:31 +0000 UTC FinishedAt: 2026-07-17 10:28:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-17 10:28:31 +0000 UTC FinishedAt: 2026-07-17 10:30:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-17 10:28:31 +0000 UTC FinishedAt: 2026-07-17 10:30:20 +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:*6ed932a2-07cd-42a5-a6c6-a6b5230efbe0,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-workflow9vdqk/series-workflow9vdqk-build-action-3286566569/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-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-17 10:30:30 +0000 UTC FinishedAt: 2026-07-17 13:34:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-17 10:30:30 +0000 UTC FinishedAt: 2026-07-17 13:34:27 +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":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"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:*cfd21794-3e63-4293-b841-d3c516d23a84,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6ed932a2-07cd-42a5-a6c6-a6b5230efbe0,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-workflow9vdqk/series-workflow9vdqk-build-action-1872957744/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-workflow9vdqk/series-workflow9vdqk-build-action-3286566569/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-17 10:30:30 +0000 UTC FinishedAt: 2026-07-17 10:30:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-17 10:30:30 +0000 UTC FinishedAt: 2026-07-17 10:30:50 +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":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"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-workflow9vdqk/series-workflow9vdqk-convert-artifact-220203954/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-17 10:30:30 +0000 UTC FinishedAt: 2026-07-17 10:30:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-17 10:30:30 +0000 UTC FinishedAt: 2026-07-17 10:30:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-17 10:30:30 +0000 UTC FinishedAt: 2026-07-17 10:30:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-17 10:30:58 +0000 UTC FinishedAt: 2026-07-17 13:34:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9vdqk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtm_to_nh_config","nexthop_create","nh_fill_node","vxlan_xmit_nh","vxlan_xmit_nhid"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f6f3b36c15ed44de1fbb44e645e4fae8c4a4453e","config_name":"upstream-apparmor-kasan.config","enable_configs":["VXLAN"],"series_id":"2b022f27-fc4e-4e8c-99e1-975f048f73ea","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-17 10:30:58 +0000 UTC FinishedAt: 2026-07-17 13:34:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cfd21794-3e63-4293-b841-d3c516d23a84,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6ed932a2-07cd-42a5-a6c6-a6b5230efbe0,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-workflow9vdqk/series-workflow9vdqk-build-action-1872957744/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-workflow9vdqk/series-workflow9vdqk-build-action-3286566569/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-workflow9vdqk/series-workflow9vdqk-convert-artifact-220203954/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,}