Name: series-workflowwm4ln Phase: Succeeded StartedAt: 2026-07-08 15:57:38 +0000 UTC FinishedAt: 2026-07-08 20:43:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwm4ln[0] Phase: Succeeded StartedAt: 2026-07-08 15:57:38 +0000 UTC FinishedAt: 2026-07-08 16:25:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwm4ln[0].run-triage Phase: Succeeded StartedAt: 2026-07-08 15:57:38 +0000 UTC FinishedAt: 2026-07-08 16:25:46 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "60444706aa17616efc03190d099ac347e28b3d0a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFT_CONNLIMIT", "NETFILTER_XT_MATCH_CONNLIMIT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "60444706aa17616efc03190d099ac347e28b3d0a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFT_CONNLIMIT", "NETFILTER_XT_MATCH_CONNLIMIT" ], "series_id": "1f3ddb5c-cd3c-40a8-a67c-de01772545b3" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__nf_conncount_add", "nf_conncount_add_skb", "nf_conncount_count_skb", "nft_connlimit_do_eval", "connlimit_mt" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GVF9DT05OTElNSVQmIzM0OywKICAgICYjMzQ7TkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fbmZfY29ubmNvdW50X2FkZCYjMzQ7LAogICAgJiMzNDtuZl9jb25uY291bnRfYWRkX3NrYiYjMzQ7LAogICAgJiMzNDtuZl9jb25uY291bnRfY291bnRfc2tiJiMzNDssCiAgICAmIzM0O25mdF9jb25ubGltaXRfZG9fZXZhbCYjMzQ7LAogICAgJiMzNDtjb25ubGltaXRfbXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvbm5lY3Rpb24gY291bnRpbmcgbG9naWMgaW4gbmV0ZmlsdGVyIHRvIGNvcnJlY3RseSB1c2UgSVBfQ1RfRElSX09SSUdJTkFMIGluc3RlYWQgb2Ygem9uZS1cdTAwM2VkaXIgd2hlbiBjb21wYXJpbmcgY29ubmVjdGlvbiB6b25lcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMDFiZmE2OTM2Nzc1MDY2YTliNTQ1OTc4NTc4N2U1M2ZkMDQwZjhhZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMTY6MjU6MDMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmNcbmluZGV4IDkxNTgyMDY5ZjZkMmVlLi5lOWVhNmQ5NDY2ZTc0YyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmNcbkBAIC0yMTEsOCAmIzQzOzIxMSw4IEBAIHN0YXRpYyBpbnQgX19uZl9jb25uY291bnRfYWRkKHN0cnVjdCBuZXQgKm5ldCxcbiBcdFx0XHQvKiBOb3QgZm91bmQsIGJ1dCBtaWdodCBiZSBhYm91dCB0byBiZSBjb25maXJtZWQgKi9cbiBcdFx0XHRpZiAoUFRSX0VSUihmb3VuZCkgPT0gLUVBR0FJTikge1xuIFx0XHRcdFx0aWYgKG5mX2N0X3R1cGxlX2VxdWFsKFx1MDAyNmNvbm4tXHUwMDNldHVwbGUsIFx1MDAyNnR1cGxlKSBcdTAwMjZcdTAwMjZcbi1cdFx0XHRcdCAgICBuZl9jdF96b25lX2lkKFx1MDAyNmNvbm4tXHUwMDNlem9uZSwgY29ubi1cdTAwM2V6b25lLmRpcikgPT1cbi1cdFx0XHRcdCAgICBuZl9jdF96b25lX2lkKHpvbmUsIHpvbmUtXHUwMDNlZGlyKSlcbiYjNDM7XHRcdFx0XHQgICAgbmZfY3Rfem9uZV9pZChcdTAwMjZjb25uLVx1MDAzZXpvbmUsIElQX0NUX0RJUl9PUklHSU5BTCkgPT1cbiYjNDM7XHRcdFx0XHQgICAgbmZfY3Rfem9uZV9pZCh6b25lLCBJUF9DVF9ESVJfT1JJR0lOQUwpKVxuIFx0XHRcdFx0XHRnb3RvIG91dF9wdXQ7IC8qIGFscmVhZHkgZXhpc3RzICovXG4gXHRcdFx0fSBlbHNlIHtcbiBcdFx0XHRcdGNvbGxlY3QmIzQzOyYjNDM7O1xuQEAgLTIyMyw3ICYjNDM7MjIzLDcgQEAgc3RhdGljIGludCBfX25mX2Nvbm5jb3VudF9hZGQoc3RydWN0IG5ldCAqbmV0LFxuIFx0XHRmb3VuZF9jdCA9IG5mX2N0X3R1cGxlaGFzaF90b19jdHJhY2soZm91bmQpO1xuIFxuIFx0XHRpZiAobmZfY3RfdHVwbGVfZXF1YWwoXHUwMDI2Y29ubi1cdTAwM2V0dXBsZSwgXHUwMDI2dHVwbGUpIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgbmZfY3Rfem9uZV9lcXVhbChmb3VuZF9jdCwgem9uZSwgem9uZS1cdTAwM2VkaXIpKSB7XG4mIzQzO1x0XHQgICAgbmZfY3Rfem9uZV9lcXVhbChmb3VuZF9jdCwgem9uZSwgSVBfQ1RfRElSX09SSUdJTkFMKSkge1xuIFx0XHRcdC8qXG4gXHRcdFx0ICogV2Ugc2hvdWxkIG5vdCBzZWUgdHVwbGVzIHR3aWNlIHVubGVzcyBzb21lb25lIGhvb2tzXG4gXHRcdFx0ICogdGhpcyBpbnRvIGEgdGFibGUgd2l0aG91dCBcJiMzNDstcCB0Y3AgLS1zeW5cJiMzNDsuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6MjU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZUX0NPTk5MSU1JVCYjMzQ7LAogICAgJiMzNDtORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19uZl9jb25uY291bnRfYWRkJiMzNDssCiAgICAmIzM0O25mX2Nvbm5jb3VudF9hZGRfc2tiJiMzNDssCiAgICAmIzM0O25mX2Nvbm5jb3VudF9jb3VudF9za2ImIzM0OywKICAgICYjMzQ7bmZ0X2Nvbm5saW1pdF9kb19ldmFsJiMzNDssCiAgICAmIzM0O2Nvbm5saW1pdF9tdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29ubmVjdGlvbiBjb3VudGluZyBsb2dpYyBpbiBuZXRmaWx0ZXIgdG8gY29ycmVjdGx5IHVzZSBJUF9DVF9ESVJfT1JJR0lOQUwgaW5zdGVhZCBvZiB6b25lLVx1MDAzZWRpciB3aGVuIGNvbXBhcmluZyBjb25uZWN0aW9uIHpvbmVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDAxYmZhNjkzNjc3NTA2NmE5YjU0NTk3ODU3ODdlNTNmZDA0MGY4YWQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCA4IDE2OjI1OjAzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMKaW5kZXggOTE1ODIwNjlmNmQyZWUuLmU5ZWE2ZDk0NjZlNzRjIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMKQEAgLTIxMSw4ICYjNDM7MjExLDggQEAgc3RhdGljIGludCBfX25mX2Nvbm5jb3VudF9hZGQoc3RydWN0IG5ldCAqbmV0LAogCQkJLyogTm90IGZvdW5kLCBidXQgbWlnaHQgYmUgYWJvdXQgdG8gYmUgY29uZmlybWVkICovCiAJCQlpZiAoUFRSX0VSUihmb3VuZCkgPT0gLUVBR0FJTikgewogCQkJCWlmIChuZl9jdF90dXBsZV9lcXVhbCgmYW1wO2Nvbm4tJmd0O3R1cGxlLCAmYW1wO3R1cGxlKSAmYW1wOyZhbXA7Ci0JCQkJICAgIG5mX2N0X3pvbmVfaWQoJmFtcDtjb25uLSZndDt6b25lLCBjb25uLSZndDt6b25lLmRpcikgPT0KLQkJCQkgICAgbmZfY3Rfem9uZV9pZCh6b25lLCB6b25lLSZndDtkaXIpKQomIzQzOwkJCQkgICAgbmZfY3Rfem9uZV9pZCgmYW1wO2Nvbm4tJmd0O3pvbmUsIElQX0NUX0RJUl9PUklHSU5BTCkgPT0KJiM0MzsJCQkJICAgIG5mX2N0X3pvbmVfaWQoem9uZSwgSVBfQ1RfRElSX09SSUdJTkFMKSkKIAkJCQkJZ290byBvdXRfcHV0OyAvKiBhbHJlYWR5IGV4aXN0cyAqLwogCQkJfSBlbHNlIHsKIAkJCQljb2xsZWN0JiM0MzsmIzQzOzsKQEAgLTIyMyw3ICYjNDM7MjIzLDcgQEAgc3RhdGljIGludCBfX25mX2Nvbm5jb3VudF9hZGQoc3RydWN0IG5ldCAqbmV0LAogCQlmb3VuZF9jdCA9IG5mX2N0X3R1cGxlaGFzaF90b19jdHJhY2soZm91bmQpOwogCiAJCWlmIChuZl9jdF90dXBsZV9lcXVhbCgmYW1wO2Nvbm4tJmd0O3R1cGxlLCAmYW1wO3R1cGxlKSAmYW1wOyZhbXA7Ci0JCSAgICBuZl9jdF96b25lX2VxdWFsKGZvdW5kX2N0LCB6b25lLCB6b25lLSZndDtkaXIpKSB7CiYjNDM7CQkgICAgbmZfY3Rfem9uZV9lcXVhbChmb3VuZF9jdCwgem9uZSwgSVBfQ1RfRElSX09SSUdJTkFMKSkgewogCQkJLyoKIAkJCSAqIFdlIHNob3VsZCBub3Qgc2VlIHR1cGxlcyB0d2ljZSB1bmxlc3Mgc29tZW9uZSBob29rcwogCQkJICogdGhpcyBpbnRvIGEgdGFibGUgd2l0aG91dCAmIzM0Oy1wIHRjcCAtLXN5biYjMzQ7Lgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDc1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgbmV0ZmlsdGVyIENvbm5lY3Rpb24gQ291bnQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHBva2luZyBhcm91bmQgaW4gYG5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmNgLiBJIGltbWVkaWF0ZWx5IG5vdGljZSBpdCYjMzk7cyBtYWtpbmcgc29tZSBjaGFuZ2VzIHRvIGhvdyBjb25uZWN0aW9uIHRyYWNraW5nIHpvbmVzIGFyZSBoYW5kbGVkLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSB1cGRhdGluZyBob3cgdGhlIGRpcmVjdGlvbmFsaXR5IG9mIGNvbm5lY3Rpb25zIGlzIG1hbmFnZWQgd2l0aGluIHRoZSB6b25lIGlkZW50aWZpY2F0aW9uIGFuZCBjb21wYXJpc29uIGZ1bmN0aW9ucy4KClNwZWNpZmljYWxseSwgaXQmIzM5O3MgbW9kaWZ5aW5nIGEgZmV3IGtleSBjYWxsczogcmVwbGFjaW5nIGluc3RhbmNlcyBvZiBgbmZfY3Rfem9uZV9pZCgmYW1wO2Nvbm4tJmd0O3pvbmUsIGNvbm4tJmd0O3pvbmUuZGlyKWAgd2l0aCBgbmZfY3Rfem9uZV9pZCgmYW1wO2Nvbm4tJmd0O3pvbmUsIElQX0NUX0RJUl9PUklHSU5BTClgLiBJdCBpcyBkb2luZyB0aGUgc2FtZSBjaGFuZ2UgZnJvbSBgbmZfY3Rfem9uZV9pZCh6b25lLCB6b25lLSZndDtkaXIpYCB0byBgbmZfY3Rfem9uZV9pZCh6b25lLCBJUF9DVF9ESVJfT1JJR0lOQUwpYC4gQW5kIGFnYWluLCBgbmZfY3Rfem9uZV9lcXVhbChmb3VuZF9jdCwgem9uZSwgem9uZS0mZ3Q7ZGlyKWAgd2l0aCBgbmZfY3Rfem9uZV9lcXVhbChmb3VuZF9jdCwgem9uZSwgSVBfQ1RfRElSX09SSUdJTkFMKWAuIFRoaXMgc2VlbXMgdG8gc3VnZ2VzdCB0aGF0IHRoZSBwYXRjaCBpcyBzdGFuZGFyZGl6aW5nIHRoZSBkaXJlY3Rpb24gdXNlZCBmb3IgdGhlc2UgY2FsbHMgdG8gYElQX0NUX0RJUl9PUklHSU5BTGAuCgpNeSBmaXJzdCBpbmNsaW5hdGlvbiBpcyB0byB1bmRlcnN0YW5kIHdoeSB3ZSBhcmUgaGFyZGNvZGluZyBgSVBfQ1RfRElSX09SSUdJTkFMYC4gSXMgaXQgYSBzaW1wbGlmaWNhdGlvbiwgb3IgZG9lcyB0aGlzIGluZGljYXRlIGFuIGVycm9yIG9yIGEgc3BlY2lmaWMgYXJjaGl0ZWN0dXJhbCBjaGFuZ2Ugd2l0aGluIG5ldGZpbHRlcj8gSXQgY291bGQgYmUgdG8gYWRkcmVzcyBzb21lIHN1YnRsZSBpc3N1ZSByZWxhdGVkIHRvIGNvbm5lY3Rpb24gY291bnQgYWNjdXJhY3kgb3IgaG93IGRpcmVjdGlvbmFsaXR5IGlzIGJlaW5nIGludGVycHJldGVkIHdpdGhpbiB0aGUgY29ubmNvdW50IG1vZHVsZS4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gdGhvcm91Z2hseSBleGFtaW5lIHRoZSBjb250ZXh0IG9mIHRoZXNlIGNoYW5nZXMsIHNwZWNpZmljYWxseSB0aGUgYF9fbmZfY29ubmNvdW50X2FkZGAgZnVuY3Rpb24sIHRvIHNlZSBob3cgdGhlc2UgZGlyZWN0aW9uYWwgY2FsbHMgYXJlIGJlaW5nIHVzZWQgYW5kIGhvdyB0aGlzIGNoYW5nZSBpbXBhY3RzIHRoZSBvdmVyYWxsIGxvZ2ljLiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBob3cgdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgZGF0YSBpcyBiZWluZyB1dGlsaXplZCBhbmQgaWYgYW55IGFzc3VtcHRpb25zIGFyZSBiZWluZyBpbnZhbGlkYXRlZCBieSB0aGlzIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX25mX2Nvbm5jb3VudF9hZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmM9MTMwPXN0YXRpYyBib29sIGdldF9jdF9vcl90dXBsZV9mcm9tX3NrYihzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYy0xNjYtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jOjE2NzpzdGF0aWMgaW50IF9fbmZfY29ubmNvdW50X2FkZChzdHJ1Y3QgbmV0ICpuZXQsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jLTE2OC1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmM9Mjc2PWludCBuZl9jb25uY291bnRfYWRkX3NrYihzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYy0yODQtXHRzcGluX2xvY2tfYmgoXHUwMDI2bGlzdC1cdTAwM2VsaXN0X2xvY2spO1xubmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYzoyODU6XHRyZXQgPSBfX25mX2Nvbm5jb3VudF9hZGQobmV0LCBza2IsIGwzbnVtLCBsaXN0KTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMtMjg2LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bGlzdC1cdTAwM2VsaXN0X2xvY2spO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmM9NTMxPWNvdW50X3RyZWUoc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMtNTgwLVx0Lyogc2FtZSBzb3VyY2UgbmV0d29yayAtXHUwMDNlIGJlIGNvdW50ZWQhICovXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jOjU4MTpcdHJldCA9IF9fbmZfY29ubmNvdW50X2FkZChuZXQsIHNrYiwgbDNudW0sIFx1MDAyNnJiY29ubi1cdTAwM2VsaXN0KTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMtNTgyLVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cmJjb25uLVx1MDAzZWxpc3QubGlzdF9sb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDczCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIGEgQ29ubmVjdGlvbiBUcmFja2luZyBQYXRjaCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIGNsZWFybHkgbWVzc2luZyB3aXRoIGBfX25mX2Nvbm5jb3VudF9hZGRgLiBJbW1lZGlhdGVseSwgSSBzZWUgdGhhdCB0aGlzIGlzIGEgY3JpdGljYWwgZnVuY3Rpb247IGl0JiMzOTtzIHRoZSBjb3JlIG9mIGhvdyBjb25uZWN0aW9uIGNvdW50cyBhcmUgaW5jcmVtZW50ZWQuIEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCBldmVuIG1pbm9yIHR3ZWFrcyBoZXJlIGNhbiBoYXZlIGNhc2NhZGluZyBlZmZlY3RzLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIHRvIHVuZGVyc3RhbmQgKndoZXJlKiBhbmQgKndoeSogdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQuIEl0IGxvb2tzIGxpa2UgYG5mX2Nvbm5jb3VudF9hZGRfc2tiYCBhbmQgYGNvdW50X3RyZWVgIGFyZSB0aGUgcHJpbWFyeSBjYWxsZXJzLiBUaGlzIGdpdmVzIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludCwgYXMgSSYjMzk7bGwgbmVlZCB0byBhbmFseXplIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IG9mIHRoZSBjYWxscy4gTm93LCBpdCYjMzk7cyBLY29uZmlnIHRpbWUhIExldCYjMzk7cyBnZXQgdGhlIG92ZXJhbGwgY29udGV4dCBieSBjaGVja2luZyB0aGUgS2NvbmZpZyBvcHRpb25zIGZvciBgbmZfY29ubmNvdW50LmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBtb2R1bGUgaXMgY29uZmlndXJlZCBhbmQgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzIHRoaXMgY29kZSBpcyBhY3RpdmUuIFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gd2lsbCBoZWxwIGRldGVybWluZSB0aGUgbGlrZWx5IGltcGFjdCBhbmQgZGVwZW5kZW5jaWVzIG9mIHRoaXMgbW9kaWZpY2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX2Nvbm5jb3VudC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTc5PW9iai0kKENPTkZJR19ORVRGSUxURVJfU1lOUFJPWFkpICYjNDM7PSBuZl9zeW5wcm94eV9jb3JlLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtODAtXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjgxOm9iai0kKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKSAmIzQzOz0gbmZfY29ubmNvdW50Lm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtODItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ3NwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgTmV0d29yayBDb25uZWN0aW9uIFRyYWNraW5nIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlnIEkmIzM5O20gbG9va2luZyBhdCBpcyBgTkVURklMVEVSX0NPTk5DT1VOVGAuIEkgc2VlIHRoYXQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBwYXVzZSBmb3IgYSBtb21lbnQgYW5kIGNvbnNpZGVyIGlmIHRoaXMgaXMgdGhlICpvbmx5KiByZWxldmFudCBjb25maWcsIG9yIGlmIHRoZXJlIG1pZ2h0IGJlIG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBJIHNob3VsZCBiZSBhd2FyZSBvZiwgb3RoZXIgJiMzNDtrbm9icyYjMzQ7IHRoYXQgaW50ZXJhY3Qgd2l0aCB0aGlzIHNldHRpbmcuIEJlZm9yZSBkaXZpbmcgZGVlcGVyLCBJIG5lZWQgdG8gZ2V0IHRoZSAmIzM0O2JpZyBwaWN0dXJlJiMzNDsuIEFyZSB0aGVyZSBhbnkgb3RoZXIgdmFyaWFibGVzIGF0IHBsYXkgaGVyZT8gSSBuZWVkIHRvIHF1aWNrbHkgc2NhbiBhbmQgdmVyaWZ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05FVEZJTFRFUl9DT05OQ09VTlQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTExMD1pZiBORl9DT05OVFJBQ0tcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTE6Y29uZmlnIE5FVEZJTFRFUl9DT05OQ09VTlRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTItXHR0cmlzdGF0ZVxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz01MTE9Y29uZmlnIE5GVF9DT05OTElNSVRcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTE0LVx0ZGVwZW5kcyBvbiBORVRGSUxURVJfQURWQU5DRURcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo1MTU6XHRzZWxlY3QgTkVURklMVEVSX0NPTk5DT1VOVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTUxNi1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9MTIyOD1jb25maWcgTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjMxLVx0ZGVwZW5kcyBvbiBORVRGSUxURVJfQURWQU5DRURcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjMyOlx0c2VsZWN0IE5FVEZJTFRFUl9DT05OQ09VTlRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjMzLVx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4OTIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgQ29ubmVjdGlvbiBMaW1pdCBDb25maWd1cmF0aW9ucyBhbmQgRnV6emluZyBGb2N1cyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhlIGNvbm5lY3Rpb24gbGltaXRpbmcgZnVuY3Rpb25hbGl0eS4gSSBzZWUgdGhhdCBgTkZUX0NPTk5MSU1JVGAgYW5kIGBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUYCBib3RoIHNlbGVjdCBgTkVURklMVEVSX0NPTk5DT1VOVGAuIEkmIzM5O2xsIGFkZCB0aG9zZSB0aHJlZSB0byBFbmFibGVDb25maWdzLCBidXQgd2FpdCwgYE5FVEZJTFRFUl9DT05OQ09VTlRgIGlzIGEgdHJpc3RhdGUgY29uZmlnIOKAkyBpdCBjYW4gYmUgZW5hYmxlZCBkaXJlY3RseSwgYnV0IGl0IGhhcyBubyBwcm9tcHQsIG1lYW5pbmcgaXQmIzM5O3MgZW5hYmxlZCBieSBzb21ldGhpbmcgZWxzZS4gU28gSSYjMzk7bGwganVzdCBhZGQgYE5GVF9DT05OTElNSVRgIGFuZCBgTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVGAgdG8gYEVuYWJsZUNvbmZpZ3NgIHRvIGtlZXAgdGhpbmdzIHRpZHkuCgpUaGUgcGF0Y2ggaXRzZWxmIGxvb2tzIGZ1bmN0aW9uYWw7IGl0JiMzOTtzIGNoYW5naW5nIHRoZSBiZWhhdmlvciBvZiBgX19uZl9jb25uY291bnRfYWRkYC4gSXQgc2VlbXMgdG8gZml4IGEgYnVnIHdoZXJlIGB6b25lLSZndDtkaXJgIHdhcyBpbmNvcnJlY3RseSB1c2VkIGluc3RlYWQgb2YgYElQX0NUX0RJUl9PUklHSU5BTGAuIFRoYXQgbWFrZXMgYF9fbmZfY29ubmNvdW50X2FkZGAgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuCgpOb3csIHNob3VsZCBJIGNvbnNpZGVyIGl0IGEgaG90IHBhdGg/IEl0JiMzOTtzIGNhbGxlZCB3aGVuIGFkZGluZyBhIG5ldyBjb25uZWN0aW9uIHRvIHRoZSBjb25uZWN0aW9uIGNvdW50IGxpc3QuIEhtbSwgaXQmIzM5O3Mgbm90IGEgZ2VuZXJpYyBob3QgcGF0aCwgYnV0IGl0ICppcyogY2FsbGVkIG9uIGEgcGVyLWNvbm5lY3Rpb24gYmFzaXMgaWYgdGhlIGNvbm5lY3Rpb24gbGltaXQgaXMgaW4gdXNlLiBUaGF0JiMzOTtzIHNpZ25pZmljYW50IGVub3VnaC4gSSYjMzk7bGwgZGVmaW5pdGVseSBhZGQgYF9fbmZfY29ubmNvdW50X2FkZGAgdG8gYEZvY3VzU3ltYm9sc2AuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgbG9vayBhdCBgbmZfY29ubmNvdW50X2FkZF9za2JgIGFuZCBgY291bnRfdHJlZWAgdG8gc2VlIGlmIHRoZXkgd2FycmFudCBpbmNsdXNpb24uIEFscmlnaHQsIGBuZl9jb25uY291bnRfYWRkX3NrYmAgaXMgZXhwb3J0ZWQuIEhvd2V2ZXIsIEkgdGhpbmsgZm9jdXNpbmcgb24gYF9fbmZfY29ubmNvdW50X2FkZGAgaXMgdGhlIG1vc3QgZWZmZWN0aXZlIGFwcHJvYWNoIGdpdmVuIHRoZSBidWcgZml4IGFuZCBpdHMgcm9sZSBpbiBjb25uZWN0aW9uIGxpbWl0IGVuZm9yY2VtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9jb25uY291bnRfYWRkX3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmM9MTY3PXN0YXRpYyBpbnQgX19uZl9jb25uY291bnRfYWRkKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jLTI3NS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmM6Mjc2OmludCBuZl9jb25uY291bnRfYWRkX3NrYihzdHJ1Y3QgbmV0ICpuZXQsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jLTI3Ny1cdFx0XHQgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jLTI4OS19XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jOjI5MDpFWFBPUlRfU1lNQk9MX0dQTChuZl9jb25uY291bnRfYWRkX3NrYik7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jLTI5MS1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jPTQwMT1pbnNlcnRfdHJlZShzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYy00MzUtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jOjQzNjpcdFx0XHRyZXQgPSBuZl9jb25uY291bnRfYWRkX3NrYihuZXQsIHNrYiwgbDNudW0sIFx1MDAyNnJiY29ubi1cdTAwM2VsaXN0KTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMtNDM3LVx0XHRcdGlmIChyZXQgXHUwMDI2XHUwMDI2IHJldCAhPSAtRUVYSVNUKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2Nvbm5saW1pdC5jPTIyPXN0YXRpYyBpbmxpbmUgdm9pZCBuZnRfY29ubmxpbWl0X2RvX2V2YWwoc3RydWN0IG5mdF9jb25ubGltaXQgKnByaXYsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY29ubmxpbWl0LmMtMjktXG5uZXQvbmV0ZmlsdGVyL25mdF9jb25ubGltaXQuYzozMDpcdGVyciA9IG5mX2Nvbm5jb3VudF9hZGRfc2tiKG5mdF9uZXQocGt0KSwgcGt0LVx1MDAzZXNrYiwgbmZ0X3BmKHBrdCksIHByaXYtXHUwMDNlbGlzdCk7XG5uZXQvbmV0ZmlsdGVyL25mdF9jb25ubGltaXQuYy0zMS1cdGlmIChlcnIpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA1NwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipNeSBDb25uZWN0aW9uIExpbWl0IEFuYWx5c2lzKioKCk9rYXksIHNvIEkgc2VlIGBuZnRfY29ubmxpbWl0X2RvX2V2YWxgIGNhbGxzIGBuZl9jb25uY291bnRfYWRkX3NrYmAuIFRoaXMgaXMgdGhlIGNvcmUgbG9naWMuIFRoaXMgc3VnZ2VzdHMgdGhlIGNvbm5lY3Rpb24gbGltaXQgZXZhbHVhdGlvbiBmdW5jdGlvbiBpcyBkaXJlY3RseSBmZWVkaW5nIGludG8gc29tZSBjb25uZWN0aW9uIGNvdW50IHRyYWNraW5nIG1lY2hhbmlzbS4gQW5kIHRoYXQgdHJhY2tpbmcgbWVjaGFuaXNtIGl0c2VsZiBpcyBkZXBlbmRlbnQgb24gdGhlIGBuZl9jb25uY291bnRfY291bnRgLCB3aGljaCBjYWxscyBgY291bnRfdHJlZWAuIFNvLCBgY291bnRfdHJlZWAgaXMgdGhlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrIGJlaW5nIHVzZWQgaGVyZSBmb3IgY291bnRpbmcgY29ubmVjdGlvbnMuIFRoaXMgYWxsIHBvaW50cyB0byBhIHRyZWUtYmFzZWQgZGF0YSBzdHJ1Y3R1cmUgYXQgdGhlIGhlYXJ0IG9mIGNvbm5lY3Rpb24gdHJhY2tpbmcgd2l0aGluIHRoaXMgbW9kdWxlLiBUaGlzIGluZGljYXRlcyBhbiBlZmZpY2llbnQgd2F5IHRvIG1hbmFnZSBhbmQgcXVlcnkgYWN0aXZlIGNvbm5lY3Rpb25zLCBsaWtlbHkgb3JnYW5pemVkIGJ5IHNvdXJjZSBvciBkZXN0aW5hdGlvbiwgYWxsb3dpbmcgZm9yIHRoZSBxdWljayBlbmZvcmNlbWVudCBvZiBjb25uZWN0aW9uIGxpbWl0cyBhcyBwYWNrZXRzIGFycml2ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfY29ubmNvdW50X2NvdW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYz01OTM9c3RhdGljIHZvaWQgdHJlZV9nY193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMtNjYzLSAqL1xubmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYzo2NjQ6dW5zaWduZWQgaW50IG5mX2Nvbm5jb3VudF9jb3VudF9za2Ioc3RydWN0IG5ldCAqbmV0LFxubmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYy02NjUtXHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jLTY3Mi19XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jOjY3MzpFWFBPUlRfU1lNQk9MX0dQTChuZl9jb25uY291bnRfY291bnRfc2tiKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMtNjc0LVxuLS1cbm5ldC9uZXRmaWx0ZXIveHRfY29ubmxpbWl0LmM9MzE9Y29ubmxpbWl0X210KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbi0tXG5uZXQvbmV0ZmlsdGVyL3h0X2Nvbm5saW1pdC5jLTY1LVxubmV0L25ldGZpbHRlci94dF9jb25ubGltaXQuYzo2NjpcdGNvbm5lY3Rpb25zID0gbmZfY29ubmNvdW50X2NvdW50X3NrYihuZXQsIHNrYiwgeHRfZmFtaWx5KHBhciksIGluZm8tXHUwMDNlZGF0YSwga2V5KTtcbm5ldC9uZXRmaWx0ZXIveHRfY29ubmxpbWl0LmMtNjctXHRpZiAoY29ubmVjdGlvbnMgPT0gMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTYxOAoJCQkJCQkJb3V0cHV0OiAxNDcKCQkJCQkJCXRob3VnaHRzOiAyMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgTmV0ZmlsdGVyIENvbm5lY3Rpb24gVHJhY2tpbmcgQ2hhbmdlcyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIG5ldGZpbHRlciBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29yZSBjaGFuZ2VzLiBJIHNlZSB0aGF0IHRoZSBjb2RlIGlzIG1vZGlmeWluZyB0aGUgY29ubmVjdGlvbiBjb3VudGluZyBsb2dpYywgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gaG93IGNvbm5lY3Rpb25zIGFyZSB0cmFja2VkIGFuZCBldmFsdWF0ZWQuCgpGaXJzdCwgSSYjMzk7dmUgbm90aWNlZCB0aGUga2V5IGZ1bmN0aW9ucyBpbnZvbHZlZDogYHh0X2Nvbm5saW1pdGAgd2hpY2ggdXNlcyBgbmZfY29ubmNvdW50X2NvdW50X3NrYmAgYW5kIGNhbGxzIGBjb3VudF90cmVlYCwgdWx0aW1hdGVseSBlbmRpbmcgdXAgYXQgYF9fbmZfY29ubmNvdW50X2FkZGAuIFRoZW4gdGhlcmUmIzM5O3MgYG5mdF9jb25ubGltaXRgLCB3aGljaCBjYWxscyBgbmZfY29ubmNvdW50X2FkZF9za2JgLCBhbmQgYWxzbyBlbmRzIGF0IGBfX25mX2Nvbm5jb3VudF9hZGRgLiBJdCBzZWVtcyBsaWtlIGBfX25mX2Nvbm5jb3VudF9hZGRgIGlzIHRoZSBoZWFydCBvZiB0aGUgY29ubmVjdGlvbiBjb3VudCB1cGRhdGUgbWVjaGFuaXNtLiBUaGlzIGlzIHdoYXQmIzM5O3MgaW1wb3J0YW50LCBzbyBJJiMzOTttIGdvaW5nIHRvIGFkZCB0aGVzZSBmdW5jdGlvbnMsIGFsb25nIHdpdGggYG5mX2Nvbm5jb3VudF9hZGRfc2tiYCwgYG5mX2Nvbm5jb3VudF9jb3VudF9za2JgLCBgbmZ0X2Nvbm5saW1pdF9kb19ldmFsYCwgYW5kIGBjb25ubGltaXRfbXRgIHRvIG15IEZvY3VzU3ltYm9scyBsaXN0LiBUaGF0IHdpbGwgaGVscCBtZSBrZWVwIG15IGV5ZSBvbiB0aGVtLgoKTm93LCBsZXQgbWUgc2VlIGlmIEkgY2FuIGZpZ3VyZSBvdXQgaG93IHRoZSBrZXJuZWwgaXMgY29uZmlndXJlZC4gSSYjMzk7bSBnb2luZyB0byBjaGVjayBmb3Igb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMsIHN1Y2ggYXMgYE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVRgIGFuZCBgTkZUX0NPTk5MSU1JVGAuIFllcywgbGV0JiMzOTtzIGFkZCB0aGVtIHRvIHRoZSBFbmFibGVDb25maWdzIGxpc3Qgc28gSSBoYXZlIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkLgoKVWx0aW1hdGVseSwgdGhlIGdvYWwgaXMgdG8gbWFrZSBzdXJlIHRoaXMgY29ubmVjdGlvbiB0cmFja2luZyBsb2dpYywgYW5kIGFueSBhc3NvY2lhdGVkIGNvbm5lY3Rpb24gbGltaXRpbmcsIGlzIGZ1bmN0aW9uaW5nIGNvcnJlY3RseS4gVGhpcyBwYXRjaCBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYXQgdGhlIGNvcmUgbGV2ZWwsIHNvIEkmIzM5O2xsIGJlIGtlZXBpbmcgYSBjbG9zZSBleWUgb24gdGhpcy4gVGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyBJIHdhbnQgdG8gZnV6ei4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GVF9DT05OTElNSVQmIzM0OywKICAgICYjMzQ7TkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fbmZfY29ubmNvdW50X2FkZCYjMzQ7LAogICAgJiMzNDtuZl9jb25uY291bnRfYWRkX3NrYiYjMzQ7LAogICAgJiMzNDtuZl9jb25uY291bnRfY291bnRfc2tiJiMzNDssCiAgICAmIzM0O25mdF9jb25ubGltaXRfZG9fZXZhbCYjMzQ7LAogICAgJiMzNDtjb25ubGltaXRfbXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvbm5lY3Rpb24gY291bnRpbmcgbG9naWMgaW4gbmV0ZmlsdGVyIHRvIGNvcnJlY3RseSB1c2UgSVBfQ1RfRElSX09SSUdJTkFMIGluc3RlYWQgb2Ygem9uZS1cdTAwM2VkaXIgd2hlbiBjb21wYXJpbmcgY29ubmVjdGlvbiB6b25lcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORlRfQ09OTkxJTUlUJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX25mX2Nvbm5jb3VudF9hZGQmIzM0OywKICAgICYjMzQ7bmZfY29ubmNvdW50X2FkZF9za2ImIzM0OywKICAgICYjMzQ7bmZfY29ubmNvdW50X2NvdW50X3NrYiYjMzQ7LAogICAgJiMzNDtuZnRfY29ubmxpbWl0X2RvX2V2YWwmIzM0OywKICAgICYjMzQ7Y29ubmxpbWl0X210JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb25uZWN0aW9uIGNvdW50aW5nIGxvZ2ljIGluIG5ldGZpbHRlciB0byBjb3JyZWN0bHkgdXNlIElQX0NUX0RJUl9PUklHSU5BTCBpbnN0ZWFkIG9mIHpvbmUtXHUwMDNlZGlyIHdoZW4gY29tcGFyaW5nIGNvbm5lY3Rpb24gem9uZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjI1OjA1LjU3MzcyNTkyNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MTg0Mzg1MDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GVF9DT05OTElNSVRcIixcbiAgICBcIk5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX25mX2Nvbm5jb3VudF9hZGRcIixcbiAgICBcIm5mX2Nvbm5jb3VudF9hZGRfc2tiXCIsXG4gICAgXCJuZl9jb25uY291bnRfY291bnRfc2tiXCIsXG4gICAgXCJuZnRfY29ubmxpbWl0X2RvX2V2YWxcIixcbiAgICBcImNvbm5saW1pdF9tdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb25uZWN0aW9uIGNvdW50aW5nIGxvZ2ljIGluIG5ldGZpbHRlciB0byBjb3JyZWN0bHkgdXNlIElQX0NUX0RJUl9PUklHSU5BTCBpbnN0ZWFkIG9mIHpvbmUtXFx1MDAzZWRpciB3aGVuIGNvbXBhcmluZyBjb25uZWN0aW9uIHpvbmVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjI1OjA1LjU3MzczOTA0NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM0NDc4NzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDFiZmE2OTM2Nzc1MDY2YTliNTQ1OTc4NTc4N2U1M2ZkMDQwZjhhZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCA4IDE2OjI1OjAzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jXFxuaW5kZXggOTE1ODIwNjlmNmQyZWUuLmU5ZWE2ZDk0NjZlNzRjIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jXFxuQEAgLTIxMSw4ICsyMTEsOCBAQCBzdGF0aWMgaW50IF9fbmZfY29ubmNvdW50X2FkZChzdHJ1Y3QgbmV0ICpuZXQsXFxuIFxcdFxcdFxcdC8qIE5vdCBmb3VuZCwgYnV0IG1pZ2h0IGJlIGFib3V0IHRvIGJlIGNvbmZpcm1lZCAqL1xcbiBcXHRcXHRcXHRpZiAoUFRSX0VSUihmb3VuZCkgPT0gLUVBR0FJTikge1xcbiBcXHRcXHRcXHRcXHRpZiAobmZfY3RfdHVwbGVfZXF1YWwoXFx1MDAyNmNvbm4tXFx1MDAzZXR1cGxlLCBcXHUwMDI2dHVwbGUpIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdFxcdFxcdCAgICBuZl9jdF96b25lX2lkKFxcdTAwMjZjb25uLVxcdTAwM2V6b25lLCBjb25uLVxcdTAwM2V6b25lLmRpcikgPT1cXG4tXFx0XFx0XFx0XFx0ICAgIG5mX2N0X3pvbmVfaWQoem9uZSwgem9uZS1cXHUwMDNlZGlyKSlcXG4rXFx0XFx0XFx0XFx0ICAgIG5mX2N0X3pvbmVfaWQoXFx1MDAyNmNvbm4tXFx1MDAzZXpvbmUsIElQX0NUX0RJUl9PUklHSU5BTCkgPT1cXG4rXFx0XFx0XFx0XFx0ICAgIG5mX2N0X3pvbmVfaWQoem9uZSwgSVBfQ1RfRElSX09SSUdJTkFMKSlcXG4gXFx0XFx0XFx0XFx0XFx0Z290byBvdXRfcHV0OyAvKiBhbHJlYWR5IGV4aXN0cyAqL1xcbiBcXHRcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHRcXHRjb2xsZWN0Kys7XFxuQEAgLTIyMyw3ICsyMjMsNyBAQCBzdGF0aWMgaW50IF9fbmZfY29ubmNvdW50X2FkZChzdHJ1Y3QgbmV0ICpuZXQsXFxuIFxcdFxcdGZvdW5kX2N0ID0gbmZfY3RfdHVwbGVoYXNoX3RvX2N0cmFjayhmb3VuZCk7XFxuIFxcbiBcXHRcXHRpZiAobmZfY3RfdHVwbGVfZXF1YWwoXFx1MDAyNmNvbm4tXFx1MDAzZXR1cGxlLCBcXHUwMDI2dHVwbGUpIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdCAgICBuZl9jdF96b25lX2VxdWFsKGZvdW5kX2N0LCB6b25lLCB6b25lLVxcdTAwM2VkaXIpKSB7XFxuK1xcdFxcdCAgICBuZl9jdF96b25lX2VxdWFsKGZvdW5kX2N0LCB6b25lLCBJUF9DVF9ESVJfT1JJR0lOQUwpKSB7XFxuIFxcdFxcdFxcdC8qXFxuIFxcdFxcdFxcdCAqIFdlIHNob3VsZCBub3Qgc2VlIHR1cGxlcyB0d2ljZSB1bmxlc3Mgc29tZW9uZSBob29rc1xcbiBcXHRcXHRcXHQgKiB0aGlzIGludG8gYSB0YWJsZSB3aXRob3V0IFxcXCItcCB0Y3AgLS1zeW5cXFwiLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjoyNTowNi40MTE2Mjc5OTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4MzQ2NDY2NjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GVF9DT05OTElNSVRcIixcbiAgICBcIk5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX25mX2Nvbm5jb3VudF9hZGRcIixcbiAgICBcIm5mX2Nvbm5jb3VudF9hZGRfc2tiXCIsXG4gICAgXCJuZl9jb25uY291bnRfY291bnRfc2tiXCIsXG4gICAgXCJuZnRfY29ubmxpbWl0X2RvX2V2YWxcIixcbiAgICBcImNvbm5saW1pdF9tdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb25uZWN0aW9uIGNvdW50aW5nIGxvZ2ljIGluIG5ldGZpbHRlciB0byBjb3JyZWN0bHkgdXNlIElQX0NUX0RJUl9PUklHSU5BTCBpbnN0ZWFkIG9mIHpvbmUtXFx1MDAzZWRpciB3aGVuIGNvbXBhcmluZyBjb25uZWN0aW9uIHpvbmVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDFiZmE2OTM2Nzc1MDY2YTliNTQ1OTc4NTc4N2U1M2ZkMDQwZjhhZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMTY6MjU6MDMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuY1xuaW5kZXggOTE1ODIwNjlmNmQyZWUuLmU5ZWE2ZDk0NjZlNzRjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuY1xuQEAgLTIxMSw4ICsyMTEsOCBAQCBzdGF0aWMgaW50IF9fbmZfY29ubmNvdW50X2FkZChzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRcdFx0LyogTm90IGZvdW5kLCBidXQgbWlnaHQgYmUgYWJvdXQgdG8gYmUgY29uZmlybWVkICovXG4gXHRcdFx0aWYgKFBUUl9FUlIoZm91bmQpID09IC1FQUdBSU4pIHtcbiBcdFx0XHRcdGlmIChuZl9jdF90dXBsZV9lcXVhbChcdTAwMjZjb25uLVx1MDAzZXR1cGxlLCBcdTAwMjZ0dXBsZSkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0XHQgICAgbmZfY3Rfem9uZV9pZChcdTAwMjZjb25uLVx1MDAzZXpvbmUsIGNvbm4tXHUwMDNlem9uZS5kaXIpID09XG4tXHRcdFx0XHQgICAgbmZfY3Rfem9uZV9pZCh6b25lLCB6b25lLVx1MDAzZWRpcikpXG4rXHRcdFx0XHQgICAgbmZfY3Rfem9uZV9pZChcdTAwMjZjb25uLVx1MDAzZXpvbmUsIElQX0NUX0RJUl9PUklHSU5BTCkgPT1cbitcdFx0XHRcdCAgICBuZl9jdF96b25lX2lkKHpvbmUsIElQX0NUX0RJUl9PUklHSU5BTCkpXG4gXHRcdFx0XHRcdGdvdG8gb3V0X3B1dDsgLyogYWxyZWFkeSBleGlzdHMgKi9cbiBcdFx0XHR9IGVsc2Uge1xuIFx0XHRcdFx0Y29sbGVjdCsrO1xuQEAgLTIyMyw3ICsyMjMsNyBAQCBzdGF0aWMgaW50IF9fbmZfY29ubmNvdW50X2FkZChzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRcdGZvdW5kX2N0ID0gbmZfY3RfdHVwbGVoYXNoX3RvX2N0cmFjayhmb3VuZCk7XG4gXG4gXHRcdGlmIChuZl9jdF90dXBsZV9lcXVhbChcdTAwMjZjb25uLVx1MDAzZXR1cGxlLCBcdTAwMjZ0dXBsZSkgXHUwMDI2XHUwMDI2XG4tXHRcdCAgICBuZl9jdF96b25lX2VxdWFsKGZvdW5kX2N0LCB6b25lLCB6b25lLVx1MDAzZWRpcikpIHtcbitcdFx0ICAgIG5mX2N0X3pvbmVfZXF1YWwoZm91bmRfY3QsIHpvbmUsIElQX0NUX0RJUl9PUklHSU5BTCkpIHtcbiBcdFx0XHQvKlxuIFx0XHRcdCAqIFdlIHNob3VsZCBub3Qgc2VlIHR1cGxlcyB0d2ljZSB1bmxlc3Mgc29tZW9uZSBob29rc1xuIFx0XHRcdCAqIHRoaXMgaW50byBhIHRhYmxlIHdpdGhvdXQgXCItcCB0Y3AgLS1zeW5cIi5cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjI1OjA2LjQxMTYzMTc2N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNjcwODU1NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBuZXRmaWx0ZXIgQ29ubmVjdGlvbiBDb3VudCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3MgcG9raW5nIGFyb3VuZCBpbiBgbmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuY2AuIEkgaW1tZWRpYXRlbHkgbm90aWNlIGl0J3MgbWFraW5nIHNvbWUgY2hhbmdlcyB0byBob3cgY29ubmVjdGlvbiB0cmFja2luZyB6b25lcyBhcmUgaGFuZGxlZC4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgdXBkYXRpbmcgaG93IHRoZSBkaXJlY3Rpb25hbGl0eSBvZiBjb25uZWN0aW9ucyBpcyBtYW5hZ2VkIHdpdGhpbiB0aGUgem9uZSBpZGVudGlmaWNhdGlvbiBhbmQgY29tcGFyaXNvbiBmdW5jdGlvbnMuXG5cblNwZWNpZmljYWxseSwgaXQncyBtb2RpZnlpbmcgYSBmZXcga2V5IGNhbGxzOiByZXBsYWNpbmcgaW5zdGFuY2VzIG9mIGBuZl9jdF96b25lX2lkKFx1MDAyNmNvbm4tXHUwMDNlem9uZSwgY29ubi1cdTAwM2V6b25lLmRpcilgIHdpdGggYG5mX2N0X3pvbmVfaWQoXHUwMDI2Y29ubi1cdTAwM2V6b25lLCBJUF9DVF9ESVJfT1JJR0lOQUwpYC4gSXQgaXMgZG9pbmcgdGhlIHNhbWUgY2hhbmdlIGZyb20gYG5mX2N0X3pvbmVfaWQoem9uZSwgem9uZS1cdTAwM2VkaXIpYCB0byBgbmZfY3Rfem9uZV9pZCh6b25lLCBJUF9DVF9ESVJfT1JJR0lOQUwpYC4gQW5kIGFnYWluLCBgbmZfY3Rfem9uZV9lcXVhbChmb3VuZF9jdCwgem9uZSwgem9uZS1cdTAwM2VkaXIpYCB3aXRoIGBuZl9jdF96b25lX2VxdWFsKGZvdW5kX2N0LCB6b25lLCBJUF9DVF9ESVJfT1JJR0lOQUwpYC4gVGhpcyBzZWVtcyB0byBzdWdnZXN0IHRoYXQgdGhlIHBhdGNoIGlzIHN0YW5kYXJkaXppbmcgdGhlIGRpcmVjdGlvbiB1c2VkIGZvciB0aGVzZSBjYWxscyB0byBgSVBfQ1RfRElSX09SSUdJTkFMYC5cblxuTXkgZmlyc3QgaW5jbGluYXRpb24gaXMgdG8gdW5kZXJzdGFuZCB3aHkgd2UgYXJlIGhhcmRjb2RpbmcgYElQX0NUX0RJUl9PUklHSU5BTGAuIElzIGl0IGEgc2ltcGxpZmljYXRpb24sIG9yIGRvZXMgdGhpcyBpbmRpY2F0ZSBhbiBlcnJvciBvciBhIHNwZWNpZmljIGFyY2hpdGVjdHVyYWwgY2hhbmdlIHdpdGhpbiBuZXRmaWx0ZXI/IEl0IGNvdWxkIGJlIHRvIGFkZHJlc3Mgc29tZSBzdWJ0bGUgaXNzdWUgcmVsYXRlZCB0byBjb25uZWN0aW9uIGNvdW50IGFjY3VyYWN5IG9yIGhvdyBkaXJlY3Rpb25hbGl0eSBpcyBiZWluZyBpbnRlcnByZXRlZCB3aXRoaW4gdGhlIGNvbm5jb3VudCBtb2R1bGUuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIHRob3JvdWdobHkgZXhhbWluZSB0aGUgY29udGV4dCBvZiB0aGVzZSBjaGFuZ2VzLCBzcGVjaWZpY2FsbHkgdGhlIGBfX25mX2Nvbm5jb3VudF9hZGRgIGZ1bmN0aW9uLCB0byBzZWUgaG93IHRoZXNlIGRpcmVjdGlvbmFsIGNhbGxzIGFyZSBiZWluZyB1c2VkIGFuZCBob3cgdGhpcyBjaGFuZ2UgaW1wYWN0cyB0aGUgb3ZlcmFsbCBsb2dpYy4gSSdsbCBuZWVkIHRvIHNlZSBob3cgdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgZGF0YSBpcyBiZWluZyB1dGlsaXplZCBhbmQgaWYgYW55IGFzc3VtcHRpb25zIGFyZSBiZWluZyBpbnZhbGlkYXRlZCBieSB0aGlzIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA3NSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjI1OjExLjY3ODcyMDcxNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjUzNDM2NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19uZl9jb25uY291bnRfYWRkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYz0xMzA9c3RhdGljIGJvb2wgZ2V0X2N0X29yX3R1cGxlX2Zyb21fc2tiKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMtMTY2LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmM6MTY3OnN0YXRpYyBpbnQgX19uZl9jb25uY291bnRfYWRkKHN0cnVjdCBuZXQgKm5ldCxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jLTE2OC1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYz0yNzY9aW50IG5mX2Nvbm5jb3VudF9hZGRfc2tiKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMtMjg0LVxcdHNwaW5fbG9ja19iaChcXHUwMDI2bGlzdC1cXHUwMDNlbGlzdF9sb2NrKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jOjI4NTpcXHRyZXQgPSBfX25mX2Nvbm5jb3VudF9hZGQobmV0LCBza2IsIGwzbnVtLCBsaXN0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jLTI4Ni1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2bGlzdC1cXHUwMDNlbGlzdF9sb2NrKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmM9NTMxPWNvdW50X3RyZWUoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYy01ODAtXFx0Lyogc2FtZSBzb3VyY2UgbmV0d29yayAtXFx1MDAzZSBiZSBjb3VudGVkISAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmM6NTgxOlxcdHJldCA9IF9fbmZfY29ubmNvdW50X2FkZChuZXQsIHNrYiwgbDNudW0sIFxcdTAwMjZyYmNvbm4tXFx1MDAzZWxpc3QpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMtNTgyLVxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZyYmNvbm4tXFx1MDAzZWxpc3QubGlzdF9sb2NrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6MjU6MTEuOTA0MDczNjI4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA0OTcxMzMxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIGEgQ29ubmVjdGlvbiBUcmFja2luZyBQYXRjaCoqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCdzIGNsZWFybHkgbWVzc2luZyB3aXRoIGBfX25mX2Nvbm5jb3VudF9hZGRgLiBJbW1lZGlhdGVseSwgSSBzZWUgdGhhdCB0aGlzIGlzIGEgY3JpdGljYWwgZnVuY3Rpb247IGl0J3MgdGhlIGNvcmUgb2YgaG93IGNvbm5lY3Rpb24gY291bnRzIGFyZSBpbmNyZW1lbnRlZC4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IGV2ZW4gbWlub3IgdHdlYWtzIGhlcmUgY2FuIGhhdmUgY2FzY2FkaW5nIGVmZmVjdHMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gdW5kZXJzdGFuZCAqd2hlcmUqIGFuZCAqd2h5KiB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZC4gSXQgbG9va3MgbGlrZSBgbmZfY29ubmNvdW50X2FkZF9za2JgIGFuZCBgY291bnRfdHJlZWAgYXJlIHRoZSBwcmltYXJ5IGNhbGxlcnMuIFRoaXMgZ2l2ZXMgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBhcyBJJ2xsIG5lZWQgdG8gYW5hbHl6ZSB0aGUgc3Vycm91bmRpbmcgY29udGV4dCBvZiB0aGUgY2FsbHMuIE5vdywgaXQncyBLY29uZmlnIHRpbWUhIExldCdzIGdldCB0aGUgb3ZlcmFsbCBjb250ZXh0IGJ5IGNoZWNraW5nIHRoZSBLY29uZmlnIG9wdGlvbnMgZm9yIGBuZl9jb25uY291bnQuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIG1vZHVsZSBpcyBjb25maWd1cmVkIGFuZCB1bmRlciB3aGF0IGNpcmN1bXN0YW5jZXMgdGhpcyBjb2RlIGlzIGFjdGl2ZS4gVW5kZXJzdGFuZGluZyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiB3aWxsIGhlbHAgZGV0ZXJtaW5lIHRoZSBsaWtlbHkgaW1wYWN0IGFuZCBkZXBlbmRlbmNpZXMgb2YgdGhpcyBtb2RpZmljYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNzMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjoyNToxNS45NTM3OTExNjVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMxMzg2ODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX2Nvbm5jb3VudC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT03OT1vYmotJChDT05GSUdfTkVURklMVEVSX1NZTlBST1hZKSArPSBuZl9zeW5wcm94eV9jb3JlLm9cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTgwLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6ODE6b2JqLSQoQ09ORklHX05FVEZJTFRFUl9DT05OQ09VTlQpICs9IG5mX2Nvbm5jb3VudC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS04Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6MjU6MTYuMTg1MTkxNjU1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjU5Mzg3NzQ4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIENvbm5lY3Rpb24gVHJhY2tpbmcgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZyBJJ20gbG9va2luZyBhdCBpcyBgTkVURklMVEVSX0NPTk5DT1VOVGAuIEkgc2VlIHRoYXQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBwYXVzZSBmb3IgYSBtb21lbnQgYW5kIGNvbnNpZGVyIGlmIHRoaXMgaXMgdGhlICpvbmx5KiByZWxldmFudCBjb25maWcsIG9yIGlmIHRoZXJlIG1pZ2h0IGJlIG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBJIHNob3VsZCBiZSBhd2FyZSBvZiwgb3RoZXIgXCJrbm9ic1wiIHRoYXQgaW50ZXJhY3Qgd2l0aCB0aGlzIHNldHRpbmcuIEJlZm9yZSBkaXZpbmcgZGVlcGVyLCBJIG5lZWQgdG8gZ2V0IHRoZSBcImJpZyBwaWN0dXJlXCIuIEFyZSB0aGVyZSBhbnkgb3RoZXIgdmFyaWFibGVzIGF0IHBsYXkgaGVyZT8gSSBuZWVkIHRvIHF1aWNrbHkgc2NhbiBhbmQgdmVyaWZ5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDc3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6MjU6MTguNzc5MDcyMTc2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjY0NjA1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRGSUxURVJfQ09OTkNPVU5UXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9MTEwPWlmIE5GX0NPTk5UUkFDS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTE6Y29uZmlnIE5FVEZJTFRFUl9DT05OQ09VTlRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTEyLVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9NTExPWNvbmZpZyBORlRfQ09OTkxJTUlUXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTE0LVxcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjUxNTpcXHRzZWxlY3QgTkVURklMVEVSX0NPTk5DT1VOVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01MTYtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTEyMjg9Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVRcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjMxLVxcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyMzI6XFx0c2VsZWN0IE5FVEZJTFRFUl9DT05OQ09VTlRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTIzMy1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjI1OjE4Ljg5MTcyNzExOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyMzE0Njg5NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgQ29ubmVjdGlvbiBMaW1pdCBDb25maWd1cmF0aW9ucyBhbmQgRnV6emluZyBGb2N1cyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoZSBjb25uZWN0aW9uIGxpbWl0aW5nIGZ1bmN0aW9uYWxpdHkuIEkgc2VlIHRoYXQgYE5GVF9DT05OTElNSVRgIGFuZCBgTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVGAgYm90aCBzZWxlY3QgYE5FVEZJTFRFUl9DT05OQ09VTlRgLiBJJ2xsIGFkZCB0aG9zZSB0aHJlZSB0byBFbmFibGVDb25maWdzLCBidXQgd2FpdCwgYE5FVEZJTFRFUl9DT05OQ09VTlRgIGlzIGEgdHJpc3RhdGUgY29uZmlnIOKAkyBpdCBjYW4gYmUgZW5hYmxlZCBkaXJlY3RseSwgYnV0IGl0IGhhcyBubyBwcm9tcHQsIG1lYW5pbmcgaXQncyBlbmFibGVkIGJ5IHNvbWV0aGluZyBlbHNlLiBTbyBJJ2xsIGp1c3QgYWRkIGBORlRfQ09OTkxJTUlUYCBhbmQgYE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVRgIHRvIGBFbmFibGVDb25maWdzYCB0byBrZWVwIHRoaW5ncyB0aWR5LlxuXG5UaGUgcGF0Y2ggaXRzZWxmIGxvb2tzIGZ1bmN0aW9uYWw7IGl0J3MgY2hhbmdpbmcgdGhlIGJlaGF2aW9yIG9mIGBfX25mX2Nvbm5jb3VudF9hZGRgLiBJdCBzZWVtcyB0byBmaXggYSBidWcgd2hlcmUgYHpvbmUtXHUwMDNlZGlyYCB3YXMgaW5jb3JyZWN0bHkgdXNlZCBpbnN0ZWFkIG9mIGBJUF9DVF9ESVJfT1JJR0lOQUxgLiBUaGF0IG1ha2VzIGBfX25mX2Nvbm5jb3VudF9hZGRgIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLlxuXG5Ob3csIHNob3VsZCBJIGNvbnNpZGVyIGl0IGEgaG90IHBhdGg/IEl0J3MgY2FsbGVkIHdoZW4gYWRkaW5nIGEgbmV3IGNvbm5lY3Rpb24gdG8gdGhlIGNvbm5lY3Rpb24gY291bnQgbGlzdC4gSG1tLCBpdCdzIG5vdCBhIGdlbmVyaWMgaG90IHBhdGgsIGJ1dCBpdCAqaXMqIGNhbGxlZCBvbiBhIHBlci1jb25uZWN0aW9uIGJhc2lzIGlmIHRoZSBjb25uZWN0aW9uIGxpbWl0IGlzIGluIHVzZS4gVGhhdCdzIHNpZ25pZmljYW50IGVub3VnaC4gSSdsbCBkZWZpbml0ZWx5IGFkZCBgX19uZl9jb25uY291bnRfYWRkYCB0byBgRm9jdXNTeW1ib2xzYC5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSdsbCB0YWtlIGEgcXVpY2sgbG9vayBhdCBgbmZfY29ubmNvdW50X2FkZF9za2JgIGFuZCBgY291bnRfdHJlZWAgdG8gc2VlIGlmIHRoZXkgd2FycmFudCBpbmNsdXNpb24uIEFscmlnaHQsIGBuZl9jb25uY291bnRfYWRkX3NrYmAgaXMgZXhwb3J0ZWQuIEhvd2V2ZXIsIEkgdGhpbmsgZm9jdXNpbmcgb24gYF9fbmZfY29ubmNvdW50X2FkZGAgaXMgdGhlIG1vc3QgZWZmZWN0aXZlIGFwcHJvYWNoIGdpdmVuIHRoZSBidWcgZml4IGFuZCBpdHMgcm9sZSBpbiBjb25uZWN0aW9uIGxpbWl0IGVuZm9yY2VtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjozODkyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjI1OjI1LjEyMzE5OTg4OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4MzgyMDE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX2Nvbm5jb3VudF9hZGRfc2tiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmM9MTY3PXN0YXRpYyBpbnQgX19uZl9jb25uY291bnRfYWRkKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMtMjc1LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmM6Mjc2OmludCBuZl9jb25uY291bnRfYWRkX3NrYihzdHJ1Y3QgbmV0ICpuZXQsXFxubmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYy0yNzctXFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jLTI4OS19XFxubmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYzoyOTA6RVhQT1JUX1NZTUJPTF9HUEwobmZfY29ubmNvdW50X2FkZF9za2IpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMtMjkxLVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYz00MDE9aW5zZXJ0X3RyZWUoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYy00MzUtXFxubmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYzo0MzY6XFx0XFx0XFx0cmV0ID0gbmZfY29ubmNvdW50X2FkZF9za2IobmV0LCBza2IsIGwzbnVtLCBcXHUwMDI2cmJjb25uLVxcdTAwM2VsaXN0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jLTQzNy1cXHRcXHRcXHRpZiAocmV0IFxcdTAwMjZcXHUwMDI2IHJldCAhPSAtRUVYSVNUKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY29ubmxpbWl0LmM9MjI9c3RhdGljIGlubGluZSB2b2lkIG5mdF9jb25ubGltaXRfZG9fZXZhbChzdHJ1Y3QgbmZ0X2Nvbm5saW1pdCAqcHJpdixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2Nvbm5saW1pdC5jLTI5LVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2Nvbm5saW1pdC5jOjMwOlxcdGVyciA9IG5mX2Nvbm5jb3VudF9hZGRfc2tiKG5mdF9uZXQocGt0KSwgcGt0LVxcdTAwM2Vza2IsIG5mdF9wZihwa3QpLCBwcml2LVxcdTAwM2VsaXN0KTtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jb25ubGltaXQuYy0zMS1cXHRpZiAoZXJyKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjI1OjI1LjI5MTU5Mjc0M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDkxNjY5ODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqTXkgQ29ubmVjdGlvbiBMaW1pdCBBbmFseXNpcyoqXG5cbk9rYXksIHNvIEkgc2VlIGBuZnRfY29ubmxpbWl0X2RvX2V2YWxgIGNhbGxzIGBuZl9jb25uY291bnRfYWRkX3NrYmAuIFRoaXMgaXMgdGhlIGNvcmUgbG9naWMuIFRoaXMgc3VnZ2VzdHMgdGhlIGNvbm5lY3Rpb24gbGltaXQgZXZhbHVhdGlvbiBmdW5jdGlvbiBpcyBkaXJlY3RseSBmZWVkaW5nIGludG8gc29tZSBjb25uZWN0aW9uIGNvdW50IHRyYWNraW5nIG1lY2hhbmlzbS4gQW5kIHRoYXQgdHJhY2tpbmcgbWVjaGFuaXNtIGl0c2VsZiBpcyBkZXBlbmRlbnQgb24gdGhlIGBuZl9jb25uY291bnRfY291bnRgLCB3aGljaCBjYWxscyBgY291bnRfdHJlZWAuIFNvLCBgY291bnRfdHJlZWAgaXMgdGhlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrIGJlaW5nIHVzZWQgaGVyZSBmb3IgY291bnRpbmcgY29ubmVjdGlvbnMuIFRoaXMgYWxsIHBvaW50cyB0byBhIHRyZWUtYmFzZWQgZGF0YSBzdHJ1Y3R1cmUgYXQgdGhlIGhlYXJ0IG9mIGNvbm5lY3Rpb24gdHJhY2tpbmcgd2l0aGluIHRoaXMgbW9kdWxlLiBUaGlzIGluZGljYXRlcyBhbiBlZmZpY2llbnQgd2F5IHRvIG1hbmFnZSBhbmQgcXVlcnkgYWN0aXZlIGNvbm5lY3Rpb25zLCBsaWtlbHkgb3JnYW5pemVkIGJ5IHNvdXJjZSBvciBkZXN0aW5hdGlvbiwgYWxsb3dpbmcgZm9yIHRoZSBxdWljayBlbmZvcmNlbWVudCBvZiBjb25uZWN0aW9uIGxpbWl0cyBhcyBwYWNrZXRzIGFycml2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA1NywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjI1OjI4LjM4MzI2NjUxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDQ2NzgwMDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfY29ubmNvdW50X2NvdW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmM9NTkzPXN0YXRpYyB2b2lkIHRyZWVfZ2Nfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMtNjYzLSAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmM6NjY0OnVuc2lnbmVkIGludCBuZl9jb25uY291bnRfY291bnRfc2tiKHN0cnVjdCBuZXQgKm5ldCxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jLTY2NS1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMtNjcyLX1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jOjY3MzpFWFBPUlRfU1lNQk9MX0dQTChuZl9jb25uY291bnRfY291bnRfc2tiKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jLTY3NC1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIveHRfY29ubmxpbWl0LmM9MzE9Y29ubmxpbWl0X210KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4tLVxcbm5ldC9uZXRmaWx0ZXIveHRfY29ubmxpbWl0LmMtNjUtXFxubmV0L25ldGZpbHRlci94dF9jb25ubGltaXQuYzo2NjpcXHRjb25uZWN0aW9ucyA9IG5mX2Nvbm5jb3VudF9jb3VudF9za2IobmV0LCBza2IsIHh0X2ZhbWlseShwYXIpLCBpbmZvLVxcdTAwM2VkYXRhLCBrZXkpO1xcbm5ldC9uZXRmaWx0ZXIveHRfY29ubmxpbWl0LmMtNjctXFx0aWYgKGNvbm5lY3Rpb25zID09IDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjI1OjI4LjYyNzk1NTU5MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODg0MzMwNTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIE5ldGZpbHRlciBDb25uZWN0aW9uIFRyYWNraW5nIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gZGlnZ2luZyBpbnRvIHRoaXMgbmV0ZmlsdGVyIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb3JlIGNoYW5nZXMuIEkgc2VlIHRoYXQgdGhlIGNvZGUgaXMgbW9kaWZ5aW5nIHRoZSBjb25uZWN0aW9uIGNvdW50aW5nIGxvZ2ljLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBob3cgY29ubmVjdGlvbnMgYXJlIHRyYWNrZWQgYW5kIGV2YWx1YXRlZC5cblxuRmlyc3QsIEkndmUgbm90aWNlZCB0aGUga2V5IGZ1bmN0aW9ucyBpbnZvbHZlZDogYHh0X2Nvbm5saW1pdGAgd2hpY2ggdXNlcyBgbmZfY29ubmNvdW50X2NvdW50X3NrYmAgYW5kIGNhbGxzIGBjb3VudF90cmVlYCwgdWx0aW1hdGVseSBlbmRpbmcgdXAgYXQgYF9fbmZfY29ubmNvdW50X2FkZGAuIFRoZW4gdGhlcmUncyBgbmZ0X2Nvbm5saW1pdGAsIHdoaWNoIGNhbGxzIGBuZl9jb25uY291bnRfYWRkX3NrYmAsIGFuZCBhbHNvIGVuZHMgYXQgYF9fbmZfY29ubmNvdW50X2FkZGAuIEl0IHNlZW1zIGxpa2UgYF9fbmZfY29ubmNvdW50X2FkZGAgaXMgdGhlIGhlYXJ0IG9mIHRoZSBjb25uZWN0aW9uIGNvdW50IHVwZGF0ZSBtZWNoYW5pc20uIFRoaXMgaXMgd2hhdCdzIGltcG9ydGFudCwgc28gSSdtIGdvaW5nIHRvIGFkZCB0aGVzZSBmdW5jdGlvbnMsIGFsb25nIHdpdGggYG5mX2Nvbm5jb3VudF9hZGRfc2tiYCwgYG5mX2Nvbm5jb3VudF9jb3VudF9za2JgLCBgbmZ0X2Nvbm5saW1pdF9kb19ldmFsYCwgYW5kIGBjb25ubGltaXRfbXRgIHRvIG15IEZvY3VzU3ltYm9scyBsaXN0LiBUaGF0IHdpbGwgaGVscCBtZSBrZWVwIG15IGV5ZSBvbiB0aGVtLlxuXG5Ob3csIGxldCBtZSBzZWUgaWYgSSBjYW4gZmlndXJlIG91dCBob3cgdGhlIGtlcm5lbCBpcyBjb25maWd1cmVkLiBJJ20gZ29pbmcgdG8gY2hlY2sgZm9yIG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLCBzdWNoIGFzIGBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUYCBhbmQgYE5GVF9DT05OTElNSVRgLiBZZXMsIGxldCdzIGFkZCB0aGVtIHRvIHRoZSBFbmFibGVDb25maWdzIGxpc3Qgc28gSSBoYXZlIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkLlxuXG5VbHRpbWF0ZWx5LCB0aGUgZ29hbCBpcyB0byBtYWtlIHN1cmUgdGhpcyBjb25uZWN0aW9uIHRyYWNraW5nIGxvZ2ljLCBhbmQgYW55IGFzc29jaWF0ZWQgY29ubmVjdGlvbiBsaW1pdGluZywgaXMgZnVuY3Rpb25pbmcgY29ycmVjdGx5LiBUaGlzIHBhdGNoIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSBhdCB0aGUgY29yZSBsZXZlbCwgc28gSSdsbCBiZSBrZWVwaW5nIGEgY2xvc2UgZXllIG9uIHRoaXMuIFRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgSSB3YW50IHRvIGZ1enouXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2MTgsIk91dHB1dFRva2VucyI6MTQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjI1OjM0LjUxMjI5MDg3MloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NTc5NDc0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZUX0NPTk5MSU1JVFwiLFxuICAgIFwiTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fbmZfY29ubmNvdW50X2FkZFwiLFxuICAgIFwibmZfY29ubmNvdW50X2FkZF9za2JcIixcbiAgICBcIm5mX2Nvbm5jb3VudF9jb3VudF9za2JcIixcbiAgICBcIm5mdF9jb25ubGltaXRfZG9fZXZhbFwiLFxuICAgIFwiY29ubmxpbWl0X210XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvbm5lY3Rpb24gY291bnRpbmcgbG9naWMgaW4gbmV0ZmlsdGVyIHRvIGNvcnJlY3RseSB1c2UgSVBfQ1RfRElSX09SSUdJTkFMIGluc3RlYWQgb2Ygem9uZS1cXHUwMDNlZGlyIHdoZW4gY29tcGFyaW5nIGNvbm5lY3Rpb24gem9uZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORlRfQ09OTkxJTUlUXCIsXG4gICAgXCJORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19uZl9jb25uY291bnRfYWRkXCIsXG4gICAgXCJuZl9jb25uY291bnRfYWRkX3NrYlwiLFxuICAgIFwibmZfY29ubmNvdW50X2NvdW50X3NrYlwiLFxuICAgIFwibmZ0X2Nvbm5saW1pdF9kb19ldmFsXCIsXG4gICAgXCJjb25ubGltaXRfbXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29ubmVjdGlvbiBjb3VudGluZyBsb2dpYyBpbiBuZXRmaWx0ZXIgdG8gY29ycmVjdGx5IHVzZSBJUF9DVF9ESVJfT1JJR0lOQUwgaW5zdGVhZCBvZiB6b25lLVxcdTAwM2VkaXIgd2hlbiBjb21wYXJpbmcgY29ubmVjdGlvbiB6b25lcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwm4ln[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-08 15:57:38 +0000 UTC FinishedAt: 2026-07-08 16:25:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "60444706aa17616efc03190d099ac347e28b3d0a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFT_CONNLIMIT", "NETFILTER_XT_MATCH_CONNLIMIT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "60444706aa17616efc03190d099ac347e28b3d0a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFT_CONNLIMIT", "NETFILTER_XT_MATCH_CONNLIMIT" ], "series_id": "1f3ddb5c-cd3c-40a8-a67c-de01772545b3" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__nf_conncount_add", "nf_conncount_add_skb", "nf_conncount_count_skb", "nft_connlimit_do_eval", "connlimit_mt" ], "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+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GVF9DT05OTElNSVQmIzM0OywKICAgICYjMzQ7TkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fbmZfY29ubmNvdW50X2FkZCYjMzQ7LAogICAgJiMzNDtuZl9jb25uY291bnRfYWRkX3NrYiYjMzQ7LAogICAgJiMzNDtuZl9jb25uY291bnRfY291bnRfc2tiJiMzNDssCiAgICAmIzM0O25mdF9jb25ubGltaXRfZG9fZXZhbCYjMzQ7LAogICAgJiMzNDtjb25ubGltaXRfbXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvbm5lY3Rpb24gY291bnRpbmcgbG9naWMgaW4gbmV0ZmlsdGVyIHRvIGNvcnJlY3RseSB1c2UgSVBfQ1RfRElSX09SSUdJTkFMIGluc3RlYWQgb2Ygem9uZS1cdTAwM2VkaXIgd2hlbiBjb21wYXJpbmcgY29ubmVjdGlvbiB6b25lcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMDFiZmE2OTM2Nzc1MDY2YTliNTQ1OTc4NTc4N2U1M2ZkMDQwZjhhZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMTY6MjU6MDMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmNcbmluZGV4IDkxNTgyMDY5ZjZkMmVlLi5lOWVhNmQ5NDY2ZTc0YyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmNcbkBAIC0yMTEsOCAmIzQzOzIxMSw4IEBAIHN0YXRpYyBpbnQgX19uZl9jb25uY291bnRfYWRkKHN0cnVjdCBuZXQgKm5ldCxcbiBcdFx0XHQvKiBOb3QgZm91bmQsIGJ1dCBtaWdodCBiZSBhYm91dCB0byBiZSBjb25maXJtZWQgKi9cbiBcdFx0XHRpZiAoUFRSX0VSUihmb3VuZCkgPT0gLUVBR0FJTikge1xuIFx0XHRcdFx0aWYgKG5mX2N0X3R1cGxlX2VxdWFsKFx1MDAyNmNvbm4tXHUwMDNldHVwbGUsIFx1MDAyNnR1cGxlKSBcdTAwMjZcdTAwMjZcbi1cdFx0XHRcdCAgICBuZl9jdF96b25lX2lkKFx1MDAyNmNvbm4tXHUwMDNlem9uZSwgY29ubi1cdTAwM2V6b25lLmRpcikgPT1cbi1cdFx0XHRcdCAgICBuZl9jdF96b25lX2lkKHpvbmUsIHpvbmUtXHUwMDNlZGlyKSlcbiYjNDM7XHRcdFx0XHQgICAgbmZfY3Rfem9uZV9pZChcdTAwMjZjb25uLVx1MDAzZXpvbmUsIElQX0NUX0RJUl9PUklHSU5BTCkgPT1cbiYjNDM7XHRcdFx0XHQgICAgbmZfY3Rfem9uZV9pZCh6b25lLCBJUF9DVF9ESVJfT1JJR0lOQUwpKVxuIFx0XHRcdFx0XHRnb3RvIG91dF9wdXQ7IC8qIGFscmVhZHkgZXhpc3RzICovXG4gXHRcdFx0fSBlbHNlIHtcbiBcdFx0XHRcdGNvbGxlY3QmIzQzOyYjNDM7O1xuQEAgLTIyMyw3ICYjNDM7MjIzLDcgQEAgc3RhdGljIGludCBfX25mX2Nvbm5jb3VudF9hZGQoc3RydWN0IG5ldCAqbmV0LFxuIFx0XHRmb3VuZF9jdCA9IG5mX2N0X3R1cGxlaGFzaF90b19jdHJhY2soZm91bmQpO1xuIFxuIFx0XHRpZiAobmZfY3RfdHVwbGVfZXF1YWwoXHUwMDI2Y29ubi1cdTAwM2V0dXBsZSwgXHUwMDI2dHVwbGUpIFx1MDAyNlx1MDAyNlxuLVx0XHQgICAgbmZfY3Rfem9uZV9lcXVhbChmb3VuZF9jdCwgem9uZSwgem9uZS1cdTAwM2VkaXIpKSB7XG4mIzQzO1x0XHQgICAgbmZfY3Rfem9uZV9lcXVhbChmb3VuZF9jdCwgem9uZSwgSVBfQ1RfRElSX09SSUdJTkFMKSkge1xuIFx0XHRcdC8qXG4gXHRcdFx0ICogV2Ugc2hvdWxkIG5vdCBzZWUgdHVwbGVzIHR3aWNlIHVubGVzcyBzb21lb25lIGhvb2tzXG4gXHRcdFx0ICogdGhpcyBpbnRvIGEgdGFibGUgd2l0aG91dCBcJiMzNDstcCB0Y3AgLS1zeW5cJiMzNDsuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6MjU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZUX0NPTk5MSU1JVCYjMzQ7LAogICAgJiMzNDtORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19uZl9jb25uY291bnRfYWRkJiMzNDssCiAgICAmIzM0O25mX2Nvbm5jb3VudF9hZGRfc2tiJiMzNDssCiAgICAmIzM0O25mX2Nvbm5jb3VudF9jb3VudF9za2ImIzM0OywKICAgICYjMzQ7bmZ0X2Nvbm5saW1pdF9kb19ldmFsJiMzNDssCiAgICAmIzM0O2Nvbm5saW1pdF9tdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29ubmVjdGlvbiBjb3VudGluZyBsb2dpYyBpbiBuZXRmaWx0ZXIgdG8gY29ycmVjdGx5IHVzZSBJUF9DVF9ESVJfT1JJR0lOQUwgaW5zdGVhZCBvZiB6b25lLVx1MDAzZWRpciB3aGVuIGNvbXBhcmluZyBjb25uZWN0aW9uIHpvbmVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDAxYmZhNjkzNjc3NTA2NmE5YjU0NTk3ODU3ODdlNTNmZDA0MGY4YWQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCA4IDE2OjI1OjAzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMKaW5kZXggOTE1ODIwNjlmNmQyZWUuLmU5ZWE2ZDk0NjZlNzRjIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMKQEAgLTIxMSw4ICYjNDM7MjExLDggQEAgc3RhdGljIGludCBfX25mX2Nvbm5jb3VudF9hZGQoc3RydWN0IG5ldCAqbmV0LAogCQkJLyogTm90IGZvdW5kLCBidXQgbWlnaHQgYmUgYWJvdXQgdG8gYmUgY29uZmlybWVkICovCiAJCQlpZiAoUFRSX0VSUihmb3VuZCkgPT0gLUVBR0FJTikgewogCQkJCWlmIChuZl9jdF90dXBsZV9lcXVhbCgmYW1wO2Nvbm4tJmd0O3R1cGxlLCAmYW1wO3R1cGxlKSAmYW1wOyZhbXA7Ci0JCQkJICAgIG5mX2N0X3pvbmVfaWQoJmFtcDtjb25uLSZndDt6b25lLCBjb25uLSZndDt6b25lLmRpcikgPT0KLQkJCQkgICAgbmZfY3Rfem9uZV9pZCh6b25lLCB6b25lLSZndDtkaXIpKQomIzQzOwkJCQkgICAgbmZfY3Rfem9uZV9pZCgmYW1wO2Nvbm4tJmd0O3pvbmUsIElQX0NUX0RJUl9PUklHSU5BTCkgPT0KJiM0MzsJCQkJICAgIG5mX2N0X3pvbmVfaWQoem9uZSwgSVBfQ1RfRElSX09SSUdJTkFMKSkKIAkJCQkJZ290byBvdXRfcHV0OyAvKiBhbHJlYWR5IGV4aXN0cyAqLwogCQkJfSBlbHNlIHsKIAkJCQljb2xsZWN0JiM0MzsmIzQzOzsKQEAgLTIyMyw3ICYjNDM7MjIzLDcgQEAgc3RhdGljIGludCBfX25mX2Nvbm5jb3VudF9hZGQoc3RydWN0IG5ldCAqbmV0LAogCQlmb3VuZF9jdCA9IG5mX2N0X3R1cGxlaGFzaF90b19jdHJhY2soZm91bmQpOwogCiAJCWlmIChuZl9jdF90dXBsZV9lcXVhbCgmYW1wO2Nvbm4tJmd0O3R1cGxlLCAmYW1wO3R1cGxlKSAmYW1wOyZhbXA7Ci0JCSAgICBuZl9jdF96b25lX2VxdWFsKGZvdW5kX2N0LCB6b25lLCB6b25lLSZndDtkaXIpKSB7CiYjNDM7CQkgICAgbmZfY3Rfem9uZV9lcXVhbChmb3VuZF9jdCwgem9uZSwgSVBfQ1RfRElSX09SSUdJTkFMKSkgewogCQkJLyoKIAkJCSAqIFdlIHNob3VsZCBub3Qgc2VlIHR1cGxlcyB0d2ljZSB1bmxlc3Mgc29tZW9uZSBob29rcwogCQkJICogdGhpcyBpbnRvIGEgdGFibGUgd2l0aG91dCAmIzM0Oy1wIHRjcCAtLXN5biYjMzQ7Lgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDc1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgbmV0ZmlsdGVyIENvbm5lY3Rpb24gQ291bnQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHBva2luZyBhcm91bmQgaW4gYG5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmNgLiBJIGltbWVkaWF0ZWx5IG5vdGljZSBpdCYjMzk7cyBtYWtpbmcgc29tZSBjaGFuZ2VzIHRvIGhvdyBjb25uZWN0aW9uIHRyYWNraW5nIHpvbmVzIGFyZSBoYW5kbGVkLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSB1cGRhdGluZyBob3cgdGhlIGRpcmVjdGlvbmFsaXR5IG9mIGNvbm5lY3Rpb25zIGlzIG1hbmFnZWQgd2l0aGluIHRoZSB6b25lIGlkZW50aWZpY2F0aW9uIGFuZCBjb21wYXJpc29uIGZ1bmN0aW9ucy4KClNwZWNpZmljYWxseSwgaXQmIzM5O3MgbW9kaWZ5aW5nIGEgZmV3IGtleSBjYWxsczogcmVwbGFjaW5nIGluc3RhbmNlcyBvZiBgbmZfY3Rfem9uZV9pZCgmYW1wO2Nvbm4tJmd0O3pvbmUsIGNvbm4tJmd0O3pvbmUuZGlyKWAgd2l0aCBgbmZfY3Rfem9uZV9pZCgmYW1wO2Nvbm4tJmd0O3pvbmUsIElQX0NUX0RJUl9PUklHSU5BTClgLiBJdCBpcyBkb2luZyB0aGUgc2FtZSBjaGFuZ2UgZnJvbSBgbmZfY3Rfem9uZV9pZCh6b25lLCB6b25lLSZndDtkaXIpYCB0byBgbmZfY3Rfem9uZV9pZCh6b25lLCBJUF9DVF9ESVJfT1JJR0lOQUwpYC4gQW5kIGFnYWluLCBgbmZfY3Rfem9uZV9lcXVhbChmb3VuZF9jdCwgem9uZSwgem9uZS0mZ3Q7ZGlyKWAgd2l0aCBgbmZfY3Rfem9uZV9lcXVhbChmb3VuZF9jdCwgem9uZSwgSVBfQ1RfRElSX09SSUdJTkFMKWAuIFRoaXMgc2VlbXMgdG8gc3VnZ2VzdCB0aGF0IHRoZSBwYXRjaCBpcyBzdGFuZGFyZGl6aW5nIHRoZSBkaXJlY3Rpb24gdXNlZCBmb3IgdGhlc2UgY2FsbHMgdG8gYElQX0NUX0RJUl9PUklHSU5BTGAuCgpNeSBmaXJzdCBpbmNsaW5hdGlvbiBpcyB0byB1bmRlcnN0YW5kIHdoeSB3ZSBhcmUgaGFyZGNvZGluZyBgSVBfQ1RfRElSX09SSUdJTkFMYC4gSXMgaXQgYSBzaW1wbGlmaWNhdGlvbiwgb3IgZG9lcyB0aGlzIGluZGljYXRlIGFuIGVycm9yIG9yIGEgc3BlY2lmaWMgYXJjaGl0ZWN0dXJhbCBjaGFuZ2Ugd2l0aGluIG5ldGZpbHRlcj8gSXQgY291bGQgYmUgdG8gYWRkcmVzcyBzb21lIHN1YnRsZSBpc3N1ZSByZWxhdGVkIHRvIGNvbm5lY3Rpb24gY291bnQgYWNjdXJhY3kgb3IgaG93IGRpcmVjdGlvbmFsaXR5IGlzIGJlaW5nIGludGVycHJldGVkIHdpdGhpbiB0aGUgY29ubmNvdW50IG1vZHVsZS4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gdGhvcm91Z2hseSBleGFtaW5lIHRoZSBjb250ZXh0IG9mIHRoZXNlIGNoYW5nZXMsIHNwZWNpZmljYWxseSB0aGUgYF9fbmZfY29ubmNvdW50X2FkZGAgZnVuY3Rpb24sIHRvIHNlZSBob3cgdGhlc2UgZGlyZWN0aW9uYWwgY2FsbHMgYXJlIGJlaW5nIHVzZWQgYW5kIGhvdyB0aGlzIGNoYW5nZSBpbXBhY3RzIHRoZSBvdmVyYWxsIGxvZ2ljLiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBob3cgdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgZGF0YSBpcyBiZWluZyB1dGlsaXplZCBhbmQgaWYgYW55IGFzc3VtcHRpb25zIGFyZSBiZWluZyBpbnZhbGlkYXRlZCBieSB0aGlzIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX25mX2Nvbm5jb3VudF9hZGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmM9MTMwPXN0YXRpYyBib29sIGdldF9jdF9vcl90dXBsZV9mcm9tX3NrYihzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYy0xNjYtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jOjE2NzpzdGF0aWMgaW50IF9fbmZfY29ubmNvdW50X2FkZChzdHJ1Y3QgbmV0ICpuZXQsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jLTE2OC1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmM9Mjc2PWludCBuZl9jb25uY291bnRfYWRkX3NrYihzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYy0yODQtXHRzcGluX2xvY2tfYmgoXHUwMDI2bGlzdC1cdTAwM2VsaXN0X2xvY2spO1xubmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYzoyODU6XHRyZXQgPSBfX25mX2Nvbm5jb3VudF9hZGQobmV0LCBza2IsIGwzbnVtLCBsaXN0KTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMtMjg2LVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2bGlzdC1cdTAwM2VsaXN0X2xvY2spO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmM9NTMxPWNvdW50X3RyZWUoc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMtNTgwLVx0Lyogc2FtZSBzb3VyY2UgbmV0d29yayAtXHUwMDNlIGJlIGNvdW50ZWQhICovXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jOjU4MTpcdHJldCA9IF9fbmZfY29ubmNvdW50X2FkZChuZXQsIHNrYiwgbDNudW0sIFx1MDAyNnJiY29ubi1cdTAwM2VsaXN0KTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMtNTgyLVx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cmJjb25uLVx1MDAzZWxpc3QubGlzdF9sb2NrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDczCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIGEgQ29ubmVjdGlvbiBUcmFja2luZyBQYXRjaCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIGNsZWFybHkgbWVzc2luZyB3aXRoIGBfX25mX2Nvbm5jb3VudF9hZGRgLiBJbW1lZGlhdGVseSwgSSBzZWUgdGhhdCB0aGlzIGlzIGEgY3JpdGljYWwgZnVuY3Rpb247IGl0JiMzOTtzIHRoZSBjb3JlIG9mIGhvdyBjb25uZWN0aW9uIGNvdW50cyBhcmUgaW5jcmVtZW50ZWQuIEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCBldmVuIG1pbm9yIHR3ZWFrcyBoZXJlIGNhbiBoYXZlIGNhc2NhZGluZyBlZmZlY3RzLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIHRvIHVuZGVyc3RhbmQgKndoZXJlKiBhbmQgKndoeSogdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQuIEl0IGxvb2tzIGxpa2UgYG5mX2Nvbm5jb3VudF9hZGRfc2tiYCBhbmQgYGNvdW50X3RyZWVgIGFyZSB0aGUgcHJpbWFyeSBjYWxsZXJzLiBUaGlzIGdpdmVzIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludCwgYXMgSSYjMzk7bGwgbmVlZCB0byBhbmFseXplIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IG9mIHRoZSBjYWxscy4gTm93LCBpdCYjMzk7cyBLY29uZmlnIHRpbWUhIExldCYjMzk7cyBnZXQgdGhlIG92ZXJhbGwgY29udGV4dCBieSBjaGVja2luZyB0aGUgS2NvbmZpZyBvcHRpb25zIGZvciBgbmZfY29ubmNvdW50LmNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBtb2R1bGUgaXMgY29uZmlndXJlZCBhbmQgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzIHRoaXMgY29kZSBpcyBhY3RpdmUuIFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gd2lsbCBoZWxwIGRldGVybWluZSB0aGUgbGlrZWx5IGltcGFjdCBhbmQgZGVwZW5kZW5jaWVzIG9mIHRoaXMgbW9kaWZpY2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mX2Nvbm5jb3VudC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTc5PW9iai0kKENPTkZJR19ORVRGSUxURVJfU1lOUFJPWFkpICYjNDM7PSBuZl9zeW5wcm94eV9jb3JlLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtODAtXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjgxOm9iai0kKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKSAmIzQzOz0gbmZfY29ubmNvdW50Lm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtODItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ3NwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgTmV0d29yayBDb25uZWN0aW9uIFRyYWNraW5nIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlnIEkmIzM5O20gbG9va2luZyBhdCBpcyBgTkVURklMVEVSX0NPTk5DT1VOVGAuIEkgc2VlIHRoYXQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBwYXVzZSBmb3IgYSBtb21lbnQgYW5kIGNvbnNpZGVyIGlmIHRoaXMgaXMgdGhlICpvbmx5KiByZWxldmFudCBjb25maWcsIG9yIGlmIHRoZXJlIG1pZ2h0IGJlIG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBJIHNob3VsZCBiZSBhd2FyZSBvZiwgb3RoZXIgJiMzNDtrbm9icyYjMzQ7IHRoYXQgaW50ZXJhY3Qgd2l0aCB0aGlzIHNldHRpbmcuIEJlZm9yZSBkaXZpbmcgZGVlcGVyLCBJIG5lZWQgdG8gZ2V0IHRoZSAmIzM0O2JpZyBwaWN0dXJlJiMzNDsuIEFyZSB0aGVyZSBhbnkgb3RoZXIgdmFyaWFibGVzIGF0IHBsYXkgaGVyZT8gSSBuZWVkIHRvIHF1aWNrbHkgc2NhbiBhbmQgdmVyaWZ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05FVEZJTFRFUl9DT05OQ09VTlQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTExMD1pZiBORl9DT05OVFJBQ0tcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTE6Y29uZmlnIE5FVEZJTFRFUl9DT05OQ09VTlRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMTItXHR0cmlzdGF0ZVxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz01MTE9Y29uZmlnIE5GVF9DT05OTElNSVRcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTE0LVx0ZGVwZW5kcyBvbiBORVRGSUxURVJfQURWQU5DRURcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo1MTU6XHRzZWxlY3QgTkVURklMVEVSX0NPTk5DT1VOVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTUxNi1cdGhlbHBcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9MTIyOD1jb25maWcgTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjMxLVx0ZGVwZW5kcyBvbiBORVRGSUxURVJfQURWQU5DRURcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMjMyOlx0c2VsZWN0IE5FVEZJTFRFUl9DT05OQ09VTlRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjMzLVx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE2OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4OTIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgQ29ubmVjdGlvbiBMaW1pdCBDb25maWd1cmF0aW9ucyBhbmQgRnV6emluZyBGb2N1cyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgdGhlIGNvbm5lY3Rpb24gbGltaXRpbmcgZnVuY3Rpb25hbGl0eS4gSSBzZWUgdGhhdCBgTkZUX0NPTk5MSU1JVGAgYW5kIGBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUYCBib3RoIHNlbGVjdCBgTkVURklMVEVSX0NPTk5DT1VOVGAuIEkmIzM5O2xsIGFkZCB0aG9zZSB0aHJlZSB0byBFbmFibGVDb25maWdzLCBidXQgd2FpdCwgYE5FVEZJTFRFUl9DT05OQ09VTlRgIGlzIGEgdHJpc3RhdGUgY29uZmlnIOKAkyBpdCBjYW4gYmUgZW5hYmxlZCBkaXJlY3RseSwgYnV0IGl0IGhhcyBubyBwcm9tcHQsIG1lYW5pbmcgaXQmIzM5O3MgZW5hYmxlZCBieSBzb21ldGhpbmcgZWxzZS4gU28gSSYjMzk7bGwganVzdCBhZGQgYE5GVF9DT05OTElNSVRgIGFuZCBgTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVGAgdG8gYEVuYWJsZUNvbmZpZ3NgIHRvIGtlZXAgdGhpbmdzIHRpZHkuCgpUaGUgcGF0Y2ggaXRzZWxmIGxvb2tzIGZ1bmN0aW9uYWw7IGl0JiMzOTtzIGNoYW5naW5nIHRoZSBiZWhhdmlvciBvZiBgX19uZl9jb25uY291bnRfYWRkYC4gSXQgc2VlbXMgdG8gZml4IGEgYnVnIHdoZXJlIGB6b25lLSZndDtkaXJgIHdhcyBpbmNvcnJlY3RseSB1c2VkIGluc3RlYWQgb2YgYElQX0NUX0RJUl9PUklHSU5BTGAuIFRoYXQgbWFrZXMgYF9fbmZfY29ubmNvdW50X2FkZGAgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuCgpOb3csIHNob3VsZCBJIGNvbnNpZGVyIGl0IGEgaG90IHBhdGg/IEl0JiMzOTtzIGNhbGxlZCB3aGVuIGFkZGluZyBhIG5ldyBjb25uZWN0aW9uIHRvIHRoZSBjb25uZWN0aW9uIGNvdW50IGxpc3QuIEhtbSwgaXQmIzM5O3Mgbm90IGEgZ2VuZXJpYyBob3QgcGF0aCwgYnV0IGl0ICppcyogY2FsbGVkIG9uIGEgcGVyLWNvbm5lY3Rpb24gYmFzaXMgaWYgdGhlIGNvbm5lY3Rpb24gbGltaXQgaXMgaW4gdXNlLiBUaGF0JiMzOTtzIHNpZ25pZmljYW50IGVub3VnaC4gSSYjMzk7bGwgZGVmaW5pdGVseSBhZGQgYF9fbmZfY29ubmNvdW50X2FkZGAgdG8gYEZvY3VzU3ltYm9sc2AuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgbG9vayBhdCBgbmZfY29ubmNvdW50X2FkZF9za2JgIGFuZCBgY291bnRfdHJlZWAgdG8gc2VlIGlmIHRoZXkgd2FycmFudCBpbmNsdXNpb24uIEFscmlnaHQsIGBuZl9jb25uY291bnRfYWRkX3NrYmAgaXMgZXhwb3J0ZWQuIEhvd2V2ZXIsIEkgdGhpbmsgZm9jdXNpbmcgb24gYF9fbmZfY29ubmNvdW50X2FkZGAgaXMgdGhlIG1vc3QgZWZmZWN0aXZlIGFwcHJvYWNoIGdpdmVuIHRoZSBidWcgZml4IGFuZCBpdHMgcm9sZSBpbiBjb25uZWN0aW9uIGxpbWl0IGVuZm9yY2VtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxNjoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9jb25uY291bnRfYWRkX3NrYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmM9MTY3PXN0YXRpYyBpbnQgX19uZl9jb25uY291bnRfYWRkKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jLTI3NS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmM6Mjc2OmludCBuZl9jb25uY291bnRfYWRkX3NrYihzdHJ1Y3QgbmV0ICpuZXQsXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jLTI3Ny1cdFx0XHQgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jLTI4OS19XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jOjI5MDpFWFBPUlRfU1lNQk9MX0dQTChuZl9jb25uY291bnRfYWRkX3NrYik7XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jLTI5MS1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jPTQwMT1pbnNlcnRfdHJlZShzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxubmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYy00MzUtXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jOjQzNjpcdFx0XHRyZXQgPSBuZl9jb25uY291bnRfYWRkX3NrYihuZXQsIHNrYiwgbDNudW0sIFx1MDAyNnJiY29ubi1cdTAwM2VsaXN0KTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMtNDM3LVx0XHRcdGlmIChyZXQgXHUwMDI2XHUwMDI2IHJldCAhPSAtRUVYSVNUKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2Nvbm5saW1pdC5jPTIyPXN0YXRpYyBpbmxpbmUgdm9pZCBuZnRfY29ubmxpbWl0X2RvX2V2YWwoc3RydWN0IG5mdF9jb25ubGltaXQgKnByaXYsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfY29ubmxpbWl0LmMtMjktXG5uZXQvbmV0ZmlsdGVyL25mdF9jb25ubGltaXQuYzozMDpcdGVyciA9IG5mX2Nvbm5jb3VudF9hZGRfc2tiKG5mdF9uZXQocGt0KSwgcGt0LVx1MDAzZXNrYiwgbmZ0X3BmKHBrdCksIHByaXYtXHUwMDNlbGlzdCk7XG5uZXQvbmV0ZmlsdGVyL25mdF9jb25ubGltaXQuYy0zMS1cdGlmIChlcnIpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA1NwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipNeSBDb25uZWN0aW9uIExpbWl0IEFuYWx5c2lzKioKCk9rYXksIHNvIEkgc2VlIGBuZnRfY29ubmxpbWl0X2RvX2V2YWxgIGNhbGxzIGBuZl9jb25uY291bnRfYWRkX3NrYmAuIFRoaXMgaXMgdGhlIGNvcmUgbG9naWMuIFRoaXMgc3VnZ2VzdHMgdGhlIGNvbm5lY3Rpb24gbGltaXQgZXZhbHVhdGlvbiBmdW5jdGlvbiBpcyBkaXJlY3RseSBmZWVkaW5nIGludG8gc29tZSBjb25uZWN0aW9uIGNvdW50IHRyYWNraW5nIG1lY2hhbmlzbS4gQW5kIHRoYXQgdHJhY2tpbmcgbWVjaGFuaXNtIGl0c2VsZiBpcyBkZXBlbmRlbnQgb24gdGhlIGBuZl9jb25uY291bnRfY291bnRgLCB3aGljaCBjYWxscyBgY291bnRfdHJlZWAuIFNvLCBgY291bnRfdHJlZWAgaXMgdGhlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrIGJlaW5nIHVzZWQgaGVyZSBmb3IgY291bnRpbmcgY29ubmVjdGlvbnMuIFRoaXMgYWxsIHBvaW50cyB0byBhIHRyZWUtYmFzZWQgZGF0YSBzdHJ1Y3R1cmUgYXQgdGhlIGhlYXJ0IG9mIGNvbm5lY3Rpb24gdHJhY2tpbmcgd2l0aGluIHRoaXMgbW9kdWxlLiBUaGlzIGluZGljYXRlcyBhbiBlZmZpY2llbnQgd2F5IHRvIG1hbmFnZSBhbmQgcXVlcnkgYWN0aXZlIGNvbm5lY3Rpb25zLCBsaWtlbHkgb3JnYW5pemVkIGJ5IHNvdXJjZSBvciBkZXN0aW5hdGlvbiwgYWxsb3dpbmcgZm9yIHRoZSBxdWljayBlbmZvcmNlbWVudCBvZiBjb25uZWN0aW9uIGxpbWl0cyBhcyBwYWNrZXRzIGFycml2ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfY29ubmNvdW50X2NvdW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYz01OTM9c3RhdGljIHZvaWQgdHJlZV9nY193b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMtNjYzLSAqL1xubmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYzo2NjQ6dW5zaWduZWQgaW50IG5mX2Nvbm5jb3VudF9jb3VudF9za2Ioc3RydWN0IG5ldCAqbmV0LFxubmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYy02NjUtXHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jLTY3Mi19XG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jOjY3MzpFWFBPUlRfU1lNQk9MX0dQTChuZl9jb25uY291bnRfY291bnRfc2tiKTtcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMtNjc0LVxuLS1cbm5ldC9uZXRmaWx0ZXIveHRfY29ubmxpbWl0LmM9MzE9Y29ubmxpbWl0X210KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbi0tXG5uZXQvbmV0ZmlsdGVyL3h0X2Nvbm5saW1pdC5jLTY1LVxubmV0L25ldGZpbHRlci94dF9jb25ubGltaXQuYzo2NjpcdGNvbm5lY3Rpb25zID0gbmZfY29ubmNvdW50X2NvdW50X3NrYihuZXQsIHNrYiwgeHRfZmFtaWx5KHBhciksIGluZm8tXHUwMDNlZGF0YSwga2V5KTtcbm5ldC9uZXRmaWx0ZXIveHRfY29ubmxpbWl0LmMtNjctXHRpZiAoY29ubmVjdGlvbnMgPT0gMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTYxOAoJCQkJCQkJb3V0cHV0OiAxNDcKCQkJCQkJCXRob3VnaHRzOiAyMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgTmV0ZmlsdGVyIENvbm5lY3Rpb24gVHJhY2tpbmcgQ2hhbmdlcyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIG5ldGZpbHRlciBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29yZSBjaGFuZ2VzLiBJIHNlZSB0aGF0IHRoZSBjb2RlIGlzIG1vZGlmeWluZyB0aGUgY29ubmVjdGlvbiBjb3VudGluZyBsb2dpYywgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gaG93IGNvbm5lY3Rpb25zIGFyZSB0cmFja2VkIGFuZCBldmFsdWF0ZWQuCgpGaXJzdCwgSSYjMzk7dmUgbm90aWNlZCB0aGUga2V5IGZ1bmN0aW9ucyBpbnZvbHZlZDogYHh0X2Nvbm5saW1pdGAgd2hpY2ggdXNlcyBgbmZfY29ubmNvdW50X2NvdW50X3NrYmAgYW5kIGNhbGxzIGBjb3VudF90cmVlYCwgdWx0aW1hdGVseSBlbmRpbmcgdXAgYXQgYF9fbmZfY29ubmNvdW50X2FkZGAuIFRoZW4gdGhlcmUmIzM5O3MgYG5mdF9jb25ubGltaXRgLCB3aGljaCBjYWxscyBgbmZfY29ubmNvdW50X2FkZF9za2JgLCBhbmQgYWxzbyBlbmRzIGF0IGBfX25mX2Nvbm5jb3VudF9hZGRgLiBJdCBzZWVtcyBsaWtlIGBfX25mX2Nvbm5jb3VudF9hZGRgIGlzIHRoZSBoZWFydCBvZiB0aGUgY29ubmVjdGlvbiBjb3VudCB1cGRhdGUgbWVjaGFuaXNtLiBUaGlzIGlzIHdoYXQmIzM5O3MgaW1wb3J0YW50LCBzbyBJJiMzOTttIGdvaW5nIHRvIGFkZCB0aGVzZSBmdW5jdGlvbnMsIGFsb25nIHdpdGggYG5mX2Nvbm5jb3VudF9hZGRfc2tiYCwgYG5mX2Nvbm5jb3VudF9jb3VudF9za2JgLCBgbmZ0X2Nvbm5saW1pdF9kb19ldmFsYCwgYW5kIGBjb25ubGltaXRfbXRgIHRvIG15IEZvY3VzU3ltYm9scyBsaXN0LiBUaGF0IHdpbGwgaGVscCBtZSBrZWVwIG15IGV5ZSBvbiB0aGVtLgoKTm93LCBsZXQgbWUgc2VlIGlmIEkgY2FuIGZpZ3VyZSBvdXQgaG93IHRoZSBrZXJuZWwgaXMgY29uZmlndXJlZC4gSSYjMzk7bSBnb2luZyB0byBjaGVjayBmb3Igb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMsIHN1Y2ggYXMgYE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVRgIGFuZCBgTkZUX0NPTk5MSU1JVGAuIFllcywgbGV0JiMzOTtzIGFkZCB0aGVtIHRvIHRoZSBFbmFibGVDb25maWdzIGxpc3Qgc28gSSBoYXZlIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkLgoKVWx0aW1hdGVseSwgdGhlIGdvYWwgaXMgdG8gbWFrZSBzdXJlIHRoaXMgY29ubmVjdGlvbiB0cmFja2luZyBsb2dpYywgYW5kIGFueSBhc3NvY2lhdGVkIGNvbm5lY3Rpb24gbGltaXRpbmcsIGlzIGZ1bmN0aW9uaW5nIGNvcnJlY3RseS4gVGhpcyBwYXRjaCBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYXQgdGhlIGNvcmUgbGV2ZWwsIHNvIEkmIzM5O2xsIGJlIGtlZXBpbmcgYSBjbG9zZSBleWUgb24gdGhpcy4gVGhpcyBpcyBkZWZpbml0ZWx5IHNvbWV0aGluZyBJIHdhbnQgdG8gZnV6ei4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTY6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GVF9DT05OTElNSVQmIzM0OywKICAgICYjMzQ7TkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fbmZfY29ubmNvdW50X2FkZCYjMzQ7LAogICAgJiMzNDtuZl9jb25uY291bnRfYWRkX3NrYiYjMzQ7LAogICAgJiMzNDtuZl9jb25uY291bnRfY291bnRfc2tiJiMzNDssCiAgICAmIzM0O25mdF9jb25ubGltaXRfZG9fZXZhbCYjMzQ7LAogICAgJiMzNDtjb25ubGltaXRfbXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvbm5lY3Rpb24gY291bnRpbmcgbG9naWMgaW4gbmV0ZmlsdGVyIHRvIGNvcnJlY3RseSB1c2UgSVBfQ1RfRElSX09SSUdJTkFMIGluc3RlYWQgb2Ygem9uZS1cdTAwM2VkaXIgd2hlbiBjb21wYXJpbmcgY29ubmVjdGlvbiB6b25lcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORlRfQ09OTkxJTUlUJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX25mX2Nvbm5jb3VudF9hZGQmIzM0OywKICAgICYjMzQ7bmZfY29ubmNvdW50X2FkZF9za2ImIzM0OywKICAgICYjMzQ7bmZfY29ubmNvdW50X2NvdW50X3NrYiYjMzQ7LAogICAgJiMzNDtuZnRfY29ubmxpbWl0X2RvX2V2YWwmIzM0OywKICAgICYjMzQ7Y29ubmxpbWl0X210JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb25uZWN0aW9uIGNvdW50aW5nIGxvZ2ljIGluIG5ldGZpbHRlciB0byBjb3JyZWN0bHkgdXNlIElQX0NUX0RJUl9PUklHSU5BTCBpbnN0ZWFkIG9mIHpvbmUtXHUwMDNlZGlyIHdoZW4gY29tcGFyaW5nIGNvbm5lY3Rpb24gem9uZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjI1OjA1LjU3MzcyNTkyNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MTg0Mzg1MDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GVF9DT05OTElNSVRcIixcbiAgICBcIk5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX25mX2Nvbm5jb3VudF9hZGRcIixcbiAgICBcIm5mX2Nvbm5jb3VudF9hZGRfc2tiXCIsXG4gICAgXCJuZl9jb25uY291bnRfY291bnRfc2tiXCIsXG4gICAgXCJuZnRfY29ubmxpbWl0X2RvX2V2YWxcIixcbiAgICBcImNvbm5saW1pdF9tdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb25uZWN0aW9uIGNvdW50aW5nIGxvZ2ljIGluIG5ldGZpbHRlciB0byBjb3JyZWN0bHkgdXNlIElQX0NUX0RJUl9PUklHSU5BTCBpbnN0ZWFkIG9mIHpvbmUtXFx1MDAzZWRpciB3aGVuIGNvbXBhcmluZyBjb25uZWN0aW9uIHpvbmVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjI1OjA1LjU3MzczOTA0NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM0NDc4NzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDFiZmE2OTM2Nzc1MDY2YTliNTQ1OTc4NTc4N2U1M2ZkMDQwZjhhZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCA4IDE2OjI1OjAzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jXFxuaW5kZXggOTE1ODIwNjlmNmQyZWUuLmU5ZWE2ZDk0NjZlNzRjIDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jXFxuQEAgLTIxMSw4ICsyMTEsOCBAQCBzdGF0aWMgaW50IF9fbmZfY29ubmNvdW50X2FkZChzdHJ1Y3QgbmV0ICpuZXQsXFxuIFxcdFxcdFxcdC8qIE5vdCBmb3VuZCwgYnV0IG1pZ2h0IGJlIGFib3V0IHRvIGJlIGNvbmZpcm1lZCAqL1xcbiBcXHRcXHRcXHRpZiAoUFRSX0VSUihmb3VuZCkgPT0gLUVBR0FJTikge1xcbiBcXHRcXHRcXHRcXHRpZiAobmZfY3RfdHVwbGVfZXF1YWwoXFx1MDAyNmNvbm4tXFx1MDAzZXR1cGxlLCBcXHUwMDI2dHVwbGUpIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdFxcdFxcdCAgICBuZl9jdF96b25lX2lkKFxcdTAwMjZjb25uLVxcdTAwM2V6b25lLCBjb25uLVxcdTAwM2V6b25lLmRpcikgPT1cXG4tXFx0XFx0XFx0XFx0ICAgIG5mX2N0X3pvbmVfaWQoem9uZSwgem9uZS1cXHUwMDNlZGlyKSlcXG4rXFx0XFx0XFx0XFx0ICAgIG5mX2N0X3pvbmVfaWQoXFx1MDAyNmNvbm4tXFx1MDAzZXpvbmUsIElQX0NUX0RJUl9PUklHSU5BTCkgPT1cXG4rXFx0XFx0XFx0XFx0ICAgIG5mX2N0X3pvbmVfaWQoem9uZSwgSVBfQ1RfRElSX09SSUdJTkFMKSlcXG4gXFx0XFx0XFx0XFx0XFx0Z290byBvdXRfcHV0OyAvKiBhbHJlYWR5IGV4aXN0cyAqL1xcbiBcXHRcXHRcXHR9IGVsc2Uge1xcbiBcXHRcXHRcXHRcXHRjb2xsZWN0Kys7XFxuQEAgLTIyMyw3ICsyMjMsNyBAQCBzdGF0aWMgaW50IF9fbmZfY29ubmNvdW50X2FkZChzdHJ1Y3QgbmV0ICpuZXQsXFxuIFxcdFxcdGZvdW5kX2N0ID0gbmZfY3RfdHVwbGVoYXNoX3RvX2N0cmFjayhmb3VuZCk7XFxuIFxcbiBcXHRcXHRpZiAobmZfY3RfdHVwbGVfZXF1YWwoXFx1MDAyNmNvbm4tXFx1MDAzZXR1cGxlLCBcXHUwMDI2dHVwbGUpIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdCAgICBuZl9jdF96b25lX2VxdWFsKGZvdW5kX2N0LCB6b25lLCB6b25lLVxcdTAwM2VkaXIpKSB7XFxuK1xcdFxcdCAgICBuZl9jdF96b25lX2VxdWFsKGZvdW5kX2N0LCB6b25lLCBJUF9DVF9ESVJfT1JJR0lOQUwpKSB7XFxuIFxcdFxcdFxcdC8qXFxuIFxcdFxcdFxcdCAqIFdlIHNob3VsZCBub3Qgc2VlIHR1cGxlcyB0d2ljZSB1bmxlc3Mgc29tZW9uZSBob29rc1xcbiBcXHRcXHRcXHQgKiB0aGlzIGludG8gYSB0YWJsZSB3aXRob3V0IFxcXCItcCB0Y3AgLS1zeW5cXFwiLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjoyNTowNi40MTE2Mjc5OTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4MzQ2NDY2NjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GVF9DT05OTElNSVRcIixcbiAgICBcIk5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX25mX2Nvbm5jb3VudF9hZGRcIixcbiAgICBcIm5mX2Nvbm5jb3VudF9hZGRfc2tiXCIsXG4gICAgXCJuZl9jb25uY291bnRfY291bnRfc2tiXCIsXG4gICAgXCJuZnRfY29ubmxpbWl0X2RvX2V2YWxcIixcbiAgICBcImNvbm5saW1pdF9tdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb25uZWN0aW9uIGNvdW50aW5nIGxvZ2ljIGluIG5ldGZpbHRlciB0byBjb3JyZWN0bHkgdXNlIElQX0NUX0RJUl9PUklHSU5BTCBpbnN0ZWFkIG9mIHpvbmUtXFx1MDAzZWRpciB3aGVuIGNvbXBhcmluZyBjb25uZWN0aW9uIHpvbmVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDFiZmE2OTM2Nzc1MDY2YTliNTQ1OTc4NTc4N2U1M2ZkMDQwZjhhZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMTY6MjU6MDMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuY1xuaW5kZXggOTE1ODIwNjlmNmQyZWUuLmU5ZWE2ZDk0NjZlNzRjIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuY1xuQEAgLTIxMSw4ICsyMTEsOCBAQCBzdGF0aWMgaW50IF9fbmZfY29ubmNvdW50X2FkZChzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRcdFx0LyogTm90IGZvdW5kLCBidXQgbWlnaHQgYmUgYWJvdXQgdG8gYmUgY29uZmlybWVkICovXG4gXHRcdFx0aWYgKFBUUl9FUlIoZm91bmQpID09IC1FQUdBSU4pIHtcbiBcdFx0XHRcdGlmIChuZl9jdF90dXBsZV9lcXVhbChcdTAwMjZjb25uLVx1MDAzZXR1cGxlLCBcdTAwMjZ0dXBsZSkgXHUwMDI2XHUwMDI2XG4tXHRcdFx0XHQgICAgbmZfY3Rfem9uZV9pZChcdTAwMjZjb25uLVx1MDAzZXpvbmUsIGNvbm4tXHUwMDNlem9uZS5kaXIpID09XG4tXHRcdFx0XHQgICAgbmZfY3Rfem9uZV9pZCh6b25lLCB6b25lLVx1MDAzZWRpcikpXG4rXHRcdFx0XHQgICAgbmZfY3Rfem9uZV9pZChcdTAwMjZjb25uLVx1MDAzZXpvbmUsIElQX0NUX0RJUl9PUklHSU5BTCkgPT1cbitcdFx0XHRcdCAgICBuZl9jdF96b25lX2lkKHpvbmUsIElQX0NUX0RJUl9PUklHSU5BTCkpXG4gXHRcdFx0XHRcdGdvdG8gb3V0X3B1dDsgLyogYWxyZWFkeSBleGlzdHMgKi9cbiBcdFx0XHR9IGVsc2Uge1xuIFx0XHRcdFx0Y29sbGVjdCsrO1xuQEAgLTIyMyw3ICsyMjMsNyBAQCBzdGF0aWMgaW50IF9fbmZfY29ubmNvdW50X2FkZChzdHJ1Y3QgbmV0ICpuZXQsXG4gXHRcdGZvdW5kX2N0ID0gbmZfY3RfdHVwbGVoYXNoX3RvX2N0cmFjayhmb3VuZCk7XG4gXG4gXHRcdGlmIChuZl9jdF90dXBsZV9lcXVhbChcdTAwMjZjb25uLVx1MDAzZXR1cGxlLCBcdTAwMjZ0dXBsZSkgXHUwMDI2XHUwMDI2XG4tXHRcdCAgICBuZl9jdF96b25lX2VxdWFsKGZvdW5kX2N0LCB6b25lLCB6b25lLVx1MDAzZWRpcikpIHtcbitcdFx0ICAgIG5mX2N0X3pvbmVfZXF1YWwoZm91bmRfY3QsIHpvbmUsIElQX0NUX0RJUl9PUklHSU5BTCkpIHtcbiBcdFx0XHQvKlxuIFx0XHRcdCAqIFdlIHNob3VsZCBub3Qgc2VlIHR1cGxlcyB0d2ljZSB1bmxlc3Mgc29tZW9uZSBob29rc1xuIFx0XHRcdCAqIHRoaXMgaW50byBhIHRhYmxlIHdpdGhvdXQgXCItcCB0Y3AgLS1zeW5cIi5cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjI1OjA2LjQxMTYzMTc2N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNjcwODU1NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBuZXRmaWx0ZXIgQ29ubmVjdGlvbiBDb3VudCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3MgcG9raW5nIGFyb3VuZCBpbiBgbmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuY2AuIEkgaW1tZWRpYXRlbHkgbm90aWNlIGl0J3MgbWFraW5nIHNvbWUgY2hhbmdlcyB0byBob3cgY29ubmVjdGlvbiB0cmFja2luZyB6b25lcyBhcmUgaGFuZGxlZC4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgdXBkYXRpbmcgaG93IHRoZSBkaXJlY3Rpb25hbGl0eSBvZiBjb25uZWN0aW9ucyBpcyBtYW5hZ2VkIHdpdGhpbiB0aGUgem9uZSBpZGVudGlmaWNhdGlvbiBhbmQgY29tcGFyaXNvbiBmdW5jdGlvbnMuXG5cblNwZWNpZmljYWxseSwgaXQncyBtb2RpZnlpbmcgYSBmZXcga2V5IGNhbGxzOiByZXBsYWNpbmcgaW5zdGFuY2VzIG9mIGBuZl9jdF96b25lX2lkKFx1MDAyNmNvbm4tXHUwMDNlem9uZSwgY29ubi1cdTAwM2V6b25lLmRpcilgIHdpdGggYG5mX2N0X3pvbmVfaWQoXHUwMDI2Y29ubi1cdTAwM2V6b25lLCBJUF9DVF9ESVJfT1JJR0lOQUwpYC4gSXQgaXMgZG9pbmcgdGhlIHNhbWUgY2hhbmdlIGZyb20gYG5mX2N0X3pvbmVfaWQoem9uZSwgem9uZS1cdTAwM2VkaXIpYCB0byBgbmZfY3Rfem9uZV9pZCh6b25lLCBJUF9DVF9ESVJfT1JJR0lOQUwpYC4gQW5kIGFnYWluLCBgbmZfY3Rfem9uZV9lcXVhbChmb3VuZF9jdCwgem9uZSwgem9uZS1cdTAwM2VkaXIpYCB3aXRoIGBuZl9jdF96b25lX2VxdWFsKGZvdW5kX2N0LCB6b25lLCBJUF9DVF9ESVJfT1JJR0lOQUwpYC4gVGhpcyBzZWVtcyB0byBzdWdnZXN0IHRoYXQgdGhlIHBhdGNoIGlzIHN0YW5kYXJkaXppbmcgdGhlIGRpcmVjdGlvbiB1c2VkIGZvciB0aGVzZSBjYWxscyB0byBgSVBfQ1RfRElSX09SSUdJTkFMYC5cblxuTXkgZmlyc3QgaW5jbGluYXRpb24gaXMgdG8gdW5kZXJzdGFuZCB3aHkgd2UgYXJlIGhhcmRjb2RpbmcgYElQX0NUX0RJUl9PUklHSU5BTGAuIElzIGl0IGEgc2ltcGxpZmljYXRpb24sIG9yIGRvZXMgdGhpcyBpbmRpY2F0ZSBhbiBlcnJvciBvciBhIHNwZWNpZmljIGFyY2hpdGVjdHVyYWwgY2hhbmdlIHdpdGhpbiBuZXRmaWx0ZXI/IEl0IGNvdWxkIGJlIHRvIGFkZHJlc3Mgc29tZSBzdWJ0bGUgaXNzdWUgcmVsYXRlZCB0byBjb25uZWN0aW9uIGNvdW50IGFjY3VyYWN5IG9yIGhvdyBkaXJlY3Rpb25hbGl0eSBpcyBiZWluZyBpbnRlcnByZXRlZCB3aXRoaW4gdGhlIGNvbm5jb3VudCBtb2R1bGUuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIHRob3JvdWdobHkgZXhhbWluZSB0aGUgY29udGV4dCBvZiB0aGVzZSBjaGFuZ2VzLCBzcGVjaWZpY2FsbHkgdGhlIGBfX25mX2Nvbm5jb3VudF9hZGRgIGZ1bmN0aW9uLCB0byBzZWUgaG93IHRoZXNlIGRpcmVjdGlvbmFsIGNhbGxzIGFyZSBiZWluZyB1c2VkIGFuZCBob3cgdGhpcyBjaGFuZ2UgaW1wYWN0cyB0aGUgb3ZlcmFsbCBsb2dpYy4gSSdsbCBuZWVkIHRvIHNlZSBob3cgdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgZGF0YSBpcyBiZWluZyB1dGlsaXplZCBhbmQgaWYgYW55IGFzc3VtcHRpb25zIGFyZSBiZWluZyBpbnZhbGlkYXRlZCBieSB0aGlzIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA3NSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjI1OjExLjY3ODcyMDcxNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjUzNDM2NDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19uZl9jb25uY291bnRfYWRkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYz0xMzA9c3RhdGljIGJvb2wgZ2V0X2N0X29yX3R1cGxlX2Zyb21fc2tiKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMtMTY2LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmM6MTY3OnN0YXRpYyBpbnQgX19uZl9jb25uY291bnRfYWRkKHN0cnVjdCBuZXQgKm5ldCxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jLTE2OC1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYz0yNzY9aW50IG5mX2Nvbm5jb3VudF9hZGRfc2tiKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMtMjg0LVxcdHNwaW5fbG9ja19iaChcXHUwMDI2bGlzdC1cXHUwMDNlbGlzdF9sb2NrKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jOjI4NTpcXHRyZXQgPSBfX25mX2Nvbm5jb3VudF9hZGQobmV0LCBza2IsIGwzbnVtLCBsaXN0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jLTI4Ni1cXHRzcGluX3VubG9ja19iaChcXHUwMDI2bGlzdC1cXHUwMDNlbGlzdF9sb2NrKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmM9NTMxPWNvdW50X3RyZWUoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYy01ODAtXFx0Lyogc2FtZSBzb3VyY2UgbmV0d29yayAtXFx1MDAzZSBiZSBjb3VudGVkISAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmM6NTgxOlxcdHJldCA9IF9fbmZfY29ubmNvdW50X2FkZChuZXQsIHNrYiwgbDNudW0sIFxcdTAwMjZyYmNvbm4tXFx1MDAzZWxpc3QpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMtNTgyLVxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZyYmNvbm4tXFx1MDAzZWxpc3QubGlzdF9sb2NrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6MjU6MTEuOTA0MDczNjI4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA0OTcxMzMxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIGEgQ29ubmVjdGlvbiBUcmFja2luZyBQYXRjaCoqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCdzIGNsZWFybHkgbWVzc2luZyB3aXRoIGBfX25mX2Nvbm5jb3VudF9hZGRgLiBJbW1lZGlhdGVseSwgSSBzZWUgdGhhdCB0aGlzIGlzIGEgY3JpdGljYWwgZnVuY3Rpb247IGl0J3MgdGhlIGNvcmUgb2YgaG93IGNvbm5lY3Rpb24gY291bnRzIGFyZSBpbmNyZW1lbnRlZC4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IGV2ZW4gbWlub3IgdHdlYWtzIGhlcmUgY2FuIGhhdmUgY2FzY2FkaW5nIGVmZmVjdHMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gdW5kZXJzdGFuZCAqd2hlcmUqIGFuZCAqd2h5KiB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZC4gSXQgbG9va3MgbGlrZSBgbmZfY29ubmNvdW50X2FkZF9za2JgIGFuZCBgY291bnRfdHJlZWAgYXJlIHRoZSBwcmltYXJ5IGNhbGxlcnMuIFRoaXMgZ2l2ZXMgbWUgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBhcyBJJ2xsIG5lZWQgdG8gYW5hbHl6ZSB0aGUgc3Vycm91bmRpbmcgY29udGV4dCBvZiB0aGUgY2FsbHMuIE5vdywgaXQncyBLY29uZmlnIHRpbWUhIExldCdzIGdldCB0aGUgb3ZlcmFsbCBjb250ZXh0IGJ5IGNoZWNraW5nIHRoZSBLY29uZmlnIG9wdGlvbnMgZm9yIGBuZl9jb25uY291bnQuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIG1vZHVsZSBpcyBjb25maWd1cmVkIGFuZCB1bmRlciB3aGF0IGNpcmN1bXN0YW5jZXMgdGhpcyBjb2RlIGlzIGFjdGl2ZS4gVW5kZXJzdGFuZGluZyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiB3aWxsIGhlbHAgZGV0ZXJtaW5lIHRoZSBsaWtlbHkgaW1wYWN0IGFuZCBkZXBlbmRlbmNpZXMgb2YgdGhpcyBtb2RpZmljYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNzMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxNjoyNToxNS45NTM3OTExNjVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMxMzg2ODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX2Nvbm5jb3VudC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT03OT1vYmotJChDT05GSUdfTkVURklMVEVSX1NZTlBST1hZKSArPSBuZl9zeW5wcm94eV9jb3JlLm9cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTgwLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6ODE6b2JqLSQoQ09ORklHX05FVEZJTFRFUl9DT05OQ09VTlQpICs9IG5mX2Nvbm5jb3VudC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS04Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6MjU6MTYuMTg1MTkxNjU1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjU5Mzg3NzQ4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIENvbm5lY3Rpb24gVHJhY2tpbmcgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZyBJJ20gbG9va2luZyBhdCBpcyBgTkVURklMVEVSX0NPTk5DT1VOVGAuIEkgc2VlIHRoYXQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBwYXVzZSBmb3IgYSBtb21lbnQgYW5kIGNvbnNpZGVyIGlmIHRoaXMgaXMgdGhlICpvbmx5KiByZWxldmFudCBjb25maWcsIG9yIGlmIHRoZXJlIG1pZ2h0IGJlIG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgdGhhdCBJIHNob3VsZCBiZSBhd2FyZSBvZiwgb3RoZXIgXCJrbm9ic1wiIHRoYXQgaW50ZXJhY3Qgd2l0aCB0aGlzIHNldHRpbmcuIEJlZm9yZSBkaXZpbmcgZGVlcGVyLCBJIG5lZWQgdG8gZ2V0IHRoZSBcImJpZyBwaWN0dXJlXCIuIEFyZSB0aGVyZSBhbnkgb3RoZXIgdmFyaWFibGVzIGF0IHBsYXkgaGVyZT8gSSBuZWVkIHRvIHF1aWNrbHkgc2NhbiBhbmQgdmVyaWZ5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDc3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTY6MjU6MTguNzc5MDcyMTc2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjY0NjA1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRGSUxURVJfQ09OTkNPVU5UXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9MTEwPWlmIE5GX0NPTk5UUkFDS1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxMTE6Y29uZmlnIE5FVEZJTFRFUl9DT05OQ09VTlRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTEyLVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9NTExPWNvbmZpZyBORlRfQ09OTkxJTUlUXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTE0LVxcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjUxNTpcXHRzZWxlY3QgTkVURklMVEVSX0NPTk5DT1VOVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01MTYtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTEyMjg9Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVRcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjMxLVxcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyMzI6XFx0c2VsZWN0IE5FVEZJTFRFUl9DT05OQ09VTlRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTIzMy1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjI1OjE4Ljg5MTcyNzExOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyMzE0Njg5NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgQ29ubmVjdGlvbiBMaW1pdCBDb25maWd1cmF0aW9ucyBhbmQgRnV6emluZyBGb2N1cyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoZSBjb25uZWN0aW9uIGxpbWl0aW5nIGZ1bmN0aW9uYWxpdHkuIEkgc2VlIHRoYXQgYE5GVF9DT05OTElNSVRgIGFuZCBgTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVGAgYm90aCBzZWxlY3QgYE5FVEZJTFRFUl9DT05OQ09VTlRgLiBJJ2xsIGFkZCB0aG9zZSB0aHJlZSB0byBFbmFibGVDb25maWdzLCBidXQgd2FpdCwgYE5FVEZJTFRFUl9DT05OQ09VTlRgIGlzIGEgdHJpc3RhdGUgY29uZmlnIOKAkyBpdCBjYW4gYmUgZW5hYmxlZCBkaXJlY3RseSwgYnV0IGl0IGhhcyBubyBwcm9tcHQsIG1lYW5pbmcgaXQncyBlbmFibGVkIGJ5IHNvbWV0aGluZyBlbHNlLiBTbyBJJ2xsIGp1c3QgYWRkIGBORlRfQ09OTkxJTUlUYCBhbmQgYE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVRgIHRvIGBFbmFibGVDb25maWdzYCB0byBrZWVwIHRoaW5ncyB0aWR5LlxuXG5UaGUgcGF0Y2ggaXRzZWxmIGxvb2tzIGZ1bmN0aW9uYWw7IGl0J3MgY2hhbmdpbmcgdGhlIGJlaGF2aW9yIG9mIGBfX25mX2Nvbm5jb3VudF9hZGRgLiBJdCBzZWVtcyB0byBmaXggYSBidWcgd2hlcmUgYHpvbmUtXHUwMDNlZGlyYCB3YXMgaW5jb3JyZWN0bHkgdXNlZCBpbnN0ZWFkIG9mIGBJUF9DVF9ESVJfT1JJR0lOQUxgLiBUaGF0IG1ha2VzIGBfX25mX2Nvbm5jb3VudF9hZGRgIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLlxuXG5Ob3csIHNob3VsZCBJIGNvbnNpZGVyIGl0IGEgaG90IHBhdGg/IEl0J3MgY2FsbGVkIHdoZW4gYWRkaW5nIGEgbmV3IGNvbm5lY3Rpb24gdG8gdGhlIGNvbm5lY3Rpb24gY291bnQgbGlzdC4gSG1tLCBpdCdzIG5vdCBhIGdlbmVyaWMgaG90IHBhdGgsIGJ1dCBpdCAqaXMqIGNhbGxlZCBvbiBhIHBlci1jb25uZWN0aW9uIGJhc2lzIGlmIHRoZSBjb25uZWN0aW9uIGxpbWl0IGlzIGluIHVzZS4gVGhhdCdzIHNpZ25pZmljYW50IGVub3VnaC4gSSdsbCBkZWZpbml0ZWx5IGFkZCBgX19uZl9jb25uY291bnRfYWRkYCB0byBgRm9jdXNTeW1ib2xzYC5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSdsbCB0YWtlIGEgcXVpY2sgbG9vayBhdCBgbmZfY29ubmNvdW50X2FkZF9za2JgIGFuZCBgY291bnRfdHJlZWAgdG8gc2VlIGlmIHRoZXkgd2FycmFudCBpbmNsdXNpb24uIEFscmlnaHQsIGBuZl9jb25uY291bnRfYWRkX3NrYmAgaXMgZXhwb3J0ZWQuIEhvd2V2ZXIsIEkgdGhpbmsgZm9jdXNpbmcgb24gYF9fbmZfY29ubmNvdW50X2FkZGAgaXMgdGhlIG1vc3QgZWZmZWN0aXZlIGFwcHJvYWNoIGdpdmVuIHRoZSBidWcgZml4IGFuZCBpdHMgcm9sZSBpbiBjb25uZWN0aW9uIGxpbWl0IGVuZm9yY2VtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjozODkyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjI1OjI1LjEyMzE5OTg4OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4MzgyMDE0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX2Nvbm5jb3VudF9hZGRfc2tiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmM9MTY3PXN0YXRpYyBpbnQgX19uZl9jb25uY291bnRfYWRkKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMtMjc1LVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmM6Mjc2OmludCBuZl9jb25uY291bnRfYWRkX3NrYihzdHJ1Y3QgbmV0ICpuZXQsXFxubmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYy0yNzctXFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jLTI4OS19XFxubmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYzoyOTA6RVhQT1JUX1NZTUJPTF9HUEwobmZfY29ubmNvdW50X2FkZF9za2IpO1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMtMjkxLVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYz00MDE9aW5zZXJ0X3RyZWUoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYy00MzUtXFxubmV0L25ldGZpbHRlci9uZl9jb25uY291bnQuYzo0MzY6XFx0XFx0XFx0cmV0ID0gbmZfY29ubmNvdW50X2FkZF9za2IobmV0LCBza2IsIGwzbnVtLCBcXHUwMDI2cmJjb25uLVxcdTAwM2VsaXN0KTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jLTQzNy1cXHRcXHRcXHRpZiAocmV0IFxcdTAwMjZcXHUwMDI2IHJldCAhPSAtRUVYSVNUKVxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfY29ubmxpbWl0LmM9MjI9c3RhdGljIGlubGluZSB2b2lkIG5mdF9jb25ubGltaXRfZG9fZXZhbChzdHJ1Y3QgbmZ0X2Nvbm5saW1pdCAqcHJpdixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2Nvbm5saW1pdC5jLTI5LVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2Nvbm5saW1pdC5jOjMwOlxcdGVyciA9IG5mX2Nvbm5jb3VudF9hZGRfc2tiKG5mdF9uZXQocGt0KSwgcGt0LVxcdTAwM2Vza2IsIG5mdF9wZihwa3QpLCBwcml2LVxcdTAwM2VsaXN0KTtcXG5uZXQvbmV0ZmlsdGVyL25mdF9jb25ubGltaXQuYy0zMS1cXHRpZiAoZXJyKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjI1OjI1LjI5MTU5Mjc0M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDkxNjY5ODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqTXkgQ29ubmVjdGlvbiBMaW1pdCBBbmFseXNpcyoqXG5cbk9rYXksIHNvIEkgc2VlIGBuZnRfY29ubmxpbWl0X2RvX2V2YWxgIGNhbGxzIGBuZl9jb25uY291bnRfYWRkX3NrYmAuIFRoaXMgaXMgdGhlIGNvcmUgbG9naWMuIFRoaXMgc3VnZ2VzdHMgdGhlIGNvbm5lY3Rpb24gbGltaXQgZXZhbHVhdGlvbiBmdW5jdGlvbiBpcyBkaXJlY3RseSBmZWVkaW5nIGludG8gc29tZSBjb25uZWN0aW9uIGNvdW50IHRyYWNraW5nIG1lY2hhbmlzbS4gQW5kIHRoYXQgdHJhY2tpbmcgbWVjaGFuaXNtIGl0c2VsZiBpcyBkZXBlbmRlbnQgb24gdGhlIGBuZl9jb25uY291bnRfY291bnRgLCB3aGljaCBjYWxscyBgY291bnRfdHJlZWAuIFNvLCBgY291bnRfdHJlZWAgaXMgdGhlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2NrIGJlaW5nIHVzZWQgaGVyZSBmb3IgY291bnRpbmcgY29ubmVjdGlvbnMuIFRoaXMgYWxsIHBvaW50cyB0byBhIHRyZWUtYmFzZWQgZGF0YSBzdHJ1Y3R1cmUgYXQgdGhlIGhlYXJ0IG9mIGNvbm5lY3Rpb24gdHJhY2tpbmcgd2l0aGluIHRoaXMgbW9kdWxlLiBUaGlzIGluZGljYXRlcyBhbiBlZmZpY2llbnQgd2F5IHRvIG1hbmFnZSBhbmQgcXVlcnkgYWN0aXZlIGNvbm5lY3Rpb25zLCBsaWtlbHkgb3JnYW5pemVkIGJ5IHNvdXJjZSBvciBkZXN0aW5hdGlvbiwgYWxsb3dpbmcgZm9yIHRoZSBxdWljayBlbmZvcmNlbWVudCBvZiBjb25uZWN0aW9uIGxpbWl0cyBhcyBwYWNrZXRzIGFycml2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA1NywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjI1OjI4LjM4MzI2NjUxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDQ2NzgwMDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfY29ubmNvdW50X2NvdW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmM9NTkzPXN0YXRpYyB2b2lkIHRyZWVfZ2Nfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMtNjYzLSAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmM6NjY0OnVuc2lnbmVkIGludCBuZl9jb25uY291bnRfY291bnRfc2tiKHN0cnVjdCBuZXQgKm5ldCxcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jLTY2NS1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubmNvdW50LmMtNjcyLX1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jOjY3MzpFWFBPUlRfU1lNQk9MX0dQTChuZl9jb25uY291bnRfY291bnRfc2tiKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm5jb3VudC5jLTY3NC1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIveHRfY29ubmxpbWl0LmM9MzE9Y29ubmxpbWl0X210KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4tLVxcbm5ldC9uZXRmaWx0ZXIveHRfY29ubmxpbWl0LmMtNjUtXFxubmV0L25ldGZpbHRlci94dF9jb25ubGltaXQuYzo2NjpcXHRjb25uZWN0aW9ucyA9IG5mX2Nvbm5jb3VudF9jb3VudF9za2IobmV0LCBza2IsIHh0X2ZhbWlseShwYXIpLCBpbmZvLVxcdTAwM2VkYXRhLCBrZXkpO1xcbm5ldC9uZXRmaWx0ZXIveHRfY29ubmxpbWl0LmMtNjctXFx0aWYgKGNvbm5lY3Rpb25zID09IDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjI1OjI4LjYyNzk1NTU5MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODg0MzMwNTIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIE5ldGZpbHRlciBDb25uZWN0aW9uIFRyYWNraW5nIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gZGlnZ2luZyBpbnRvIHRoaXMgbmV0ZmlsdGVyIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb3JlIGNoYW5nZXMuIEkgc2VlIHRoYXQgdGhlIGNvZGUgaXMgbW9kaWZ5aW5nIHRoZSBjb25uZWN0aW9uIGNvdW50aW5nIGxvZ2ljLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byBob3cgY29ubmVjdGlvbnMgYXJlIHRyYWNrZWQgYW5kIGV2YWx1YXRlZC5cblxuRmlyc3QsIEkndmUgbm90aWNlZCB0aGUga2V5IGZ1bmN0aW9ucyBpbnZvbHZlZDogYHh0X2Nvbm5saW1pdGAgd2hpY2ggdXNlcyBgbmZfY29ubmNvdW50X2NvdW50X3NrYmAgYW5kIGNhbGxzIGBjb3VudF90cmVlYCwgdWx0aW1hdGVseSBlbmRpbmcgdXAgYXQgYF9fbmZfY29ubmNvdW50X2FkZGAuIFRoZW4gdGhlcmUncyBgbmZ0X2Nvbm5saW1pdGAsIHdoaWNoIGNhbGxzIGBuZl9jb25uY291bnRfYWRkX3NrYmAsIGFuZCBhbHNvIGVuZHMgYXQgYF9fbmZfY29ubmNvdW50X2FkZGAuIEl0IHNlZW1zIGxpa2UgYF9fbmZfY29ubmNvdW50X2FkZGAgaXMgdGhlIGhlYXJ0IG9mIHRoZSBjb25uZWN0aW9uIGNvdW50IHVwZGF0ZSBtZWNoYW5pc20uIFRoaXMgaXMgd2hhdCdzIGltcG9ydGFudCwgc28gSSdtIGdvaW5nIHRvIGFkZCB0aGVzZSBmdW5jdGlvbnMsIGFsb25nIHdpdGggYG5mX2Nvbm5jb3VudF9hZGRfc2tiYCwgYG5mX2Nvbm5jb3VudF9jb3VudF9za2JgLCBgbmZ0X2Nvbm5saW1pdF9kb19ldmFsYCwgYW5kIGBjb25ubGltaXRfbXRgIHRvIG15IEZvY3VzU3ltYm9scyBsaXN0LiBUaGF0IHdpbGwgaGVscCBtZSBrZWVwIG15IGV5ZSBvbiB0aGVtLlxuXG5Ob3csIGxldCBtZSBzZWUgaWYgSSBjYW4gZmlndXJlIG91dCBob3cgdGhlIGtlcm5lbCBpcyBjb25maWd1cmVkLiBJJ20gZ29pbmcgdG8gY2hlY2sgZm9yIG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLCBzdWNoIGFzIGBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUYCBhbmQgYE5GVF9DT05OTElNSVRgLiBZZXMsIGxldCdzIGFkZCB0aGVtIHRvIHRoZSBFbmFibGVDb25maWdzIGxpc3Qgc28gSSBoYXZlIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkLlxuXG5VbHRpbWF0ZWx5LCB0aGUgZ29hbCBpcyB0byBtYWtlIHN1cmUgdGhpcyBjb25uZWN0aW9uIHRyYWNraW5nIGxvZ2ljLCBhbmQgYW55IGFzc29jaWF0ZWQgY29ubmVjdGlvbiBsaW1pdGluZywgaXMgZnVuY3Rpb25pbmcgY29ycmVjdGx5LiBUaGlzIHBhdGNoIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSBhdCB0aGUgY29yZSBsZXZlbCwgc28gSSdsbCBiZSBrZWVwaW5nIGEgY2xvc2UgZXllIG9uIHRoaXMuIFRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgSSB3YW50IHRvIGZ1enouXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2MTgsIk91dHB1dFRva2VucyI6MTQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE2OjI1OjM0LjUxMjI5MDg3MloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NTc5NDc0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZUX0NPTk5MSU1JVFwiLFxuICAgIFwiTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fbmZfY29ubmNvdW50X2FkZFwiLFxuICAgIFwibmZfY29ubmNvdW50X2FkZF9za2JcIixcbiAgICBcIm5mX2Nvbm5jb3VudF9jb3VudF9za2JcIixcbiAgICBcIm5mdF9jb25ubGltaXRfZG9fZXZhbFwiLFxuICAgIFwiY29ubmxpbWl0X210XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvbm5lY3Rpb24gY291bnRpbmcgbG9naWMgaW4gbmV0ZmlsdGVyIHRvIGNvcnJlY3RseSB1c2UgSVBfQ1RfRElSX09SSUdJTkFMIGluc3RlYWQgb2Ygem9uZS1cXHUwMDNlZGlyIHdoZW4gY29tcGFyaW5nIGNvbm5lY3Rpb24gem9uZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORlRfQ09OTkxJTUlUXCIsXG4gICAgXCJORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19uZl9jb25uY291bnRfYWRkXCIsXG4gICAgXCJuZl9jb25uY291bnRfYWRkX3NrYlwiLFxuICAgIFwibmZfY29ubmNvdW50X2NvdW50X3NrYlwiLFxuICAgIFwibmZ0X2Nvbm5saW1pdF9kb19ldmFsXCIsXG4gICAgXCJjb25ubGltaXRfbXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29ubmVjdGlvbiBjb3VudGluZyBsb2dpYyBpbiBuZXRmaWx0ZXIgdG8gY29ycmVjdGx5IHVzZSBJUF9DVF9ESVJfT1JJR0lOQUwgaW5zdGVhZCBvZiB6b25lLVxcdTAwM2VkaXIgd2hlbiBjb21wYXJpbmcgY29ubmVjdGlvbiB6b25lcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwm4ln[1] Phase: Succeeded StartedAt: 2026-07-08 16:25:46 +0000 UTC FinishedAt: 2026-07-08 16:25:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwm4ln[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-08 16:25:46 +0000 UTC FinishedAt: 2026-07-08 16:25:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwm4ln[2] Phase: Succeeded StartedAt: 2026-07-08 16:25:46 +0000 UTC FinishedAt: 2026-07-08 20:43:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-08 16:25:46 +0000 UTC FinishedAt: 2026-07-08 20:43:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-08 16:25:46 +0000 UTC FinishedAt: 2026-07-08 16:26:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-08 16:25:46 +0000 UTC FinishedAt: 2026-07-08 16:26:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwm4ln/series-workflowwm4ln-convert-artifact-1548465807/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-08 16:26:21 +0000 UTC FinishedAt: 2026-07-08 17:01:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-08 16:26:24 +0000 UTC FinishedAt: 2026-07-08 17:01:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*660729a3-4098-468d-ab62-cb45a770f91d,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-workflowwm4ln/series-workflowwm4ln-convert-artifact-1548465807/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": "88cb6c84-9168-427a-a836-e8fa7869f709", "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-workflowwm4ln/series-workflowwm4ln-build-action-192521173/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-08 16:26:24 +0000 UTC FinishedAt: 2026-07-08 17:00:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*660729a3-4098-468d-ab62-cb45a770f91d,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-workflowwm4ln/series-workflowwm4ln-convert-artifact-1548465807/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": "88cb6c84-9168-427a-a836-e8fa7869f709", "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-workflowwm4ln/series-workflowwm4ln-build-action-192521173/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-08 17:01:00 +0000 UTC FinishedAt: 2026-07-08 17:01:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-08 17:01:00 +0000 UTC FinishedAt: 2026-07-08 17:01:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-08 17:01:00 +0000 UTC FinishedAt: 2026-07-08 17:01:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-08 17:01:00 +0000 UTC FinishedAt: 2026-07-08 17:01:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwm4ln/series-workflowwm4ln-convert-artifact-3290407902/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-08 17:01:22 +0000 UTC FinishedAt: 2026-07-08 17:03:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-08 17:01:22 +0000 UTC FinishedAt: 2026-07-08 17:03:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*88cb6c84-9168-427a-a836-e8fa7869f709,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-workflowwm4ln/series-workflowwm4ln-build-action-192521173/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-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-08 17:03:45 +0000 UTC FinishedAt: 2026-07-08 17:03:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-08 17:03:45 +0000 UTC FinishedAt: 2026-07-08 17:03:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-08 17:03:45 +0000 UTC FinishedAt: 2026-07-08 17:37:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-08 17:03:45 +0000 UTC FinishedAt: 2026-07-08 17:37:33 +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:*660729a3-4098-468d-ab62-cb45a770f91d,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-workflowwm4ln/series-workflowwm4ln-convert-artifact-3290407902/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": "b7e18887-2bd4-4e3b-865e-23afa4ce7646", "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-workflowwm4ln/series-workflowwm4ln-build-action-2801855666/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-08 17:03:45 +0000 UTC FinishedAt: 2026-07-08 17:37:23 +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:*660729a3-4098-468d-ab62-cb45a770f91d,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-workflowwm4ln/series-workflowwm4ln-convert-artifact-3290407902/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": "b7e18887-2bd4-4e3b-865e-23afa4ce7646", "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-workflowwm4ln/series-workflowwm4ln-build-action-2801855666/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-08 17:37:33 +0000 UTC FinishedAt: 2026-07-08 17:37:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-08 17:37:33 +0000 UTC FinishedAt: 2026-07-08 17:37:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-08 17:37:33 +0000 UTC FinishedAt: 2026-07-08 17:40:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-08 17:37:33 +0000 UTC FinishedAt: 2026-07-08 17:40:44 +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:*b7e18887-2bd4-4e3b-865e-23afa4ce7646,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-workflowwm4ln/series-workflowwm4ln-build-action-2801855666/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-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-08 17:40:54 +0000 UTC FinishedAt: 2026-07-08 20:43:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-08 17:40:54 +0000 UTC FinishedAt: 2026-07-08 20:43:34 +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":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"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:*88cb6c84-9168-427a-a836-e8fa7869f709,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b7e18887-2bd4-4e3b-865e-23afa4ce7646,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-workflowwm4ln/series-workflowwm4ln-build-action-192521173/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-workflowwm4ln/series-workflowwm4ln-build-action-2801855666/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-08 17:40:54 +0000 UTC FinishedAt: 2026-07-08 17:41:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-08 17:40:54 +0000 UTC FinishedAt: 2026-07-08 17:41:32 +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":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"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-workflowwm4ln/series-workflowwm4ln-convert-artifact-1076967651/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-08 17:40:54 +0000 UTC FinishedAt: 2026-07-08 17:40:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-08 17:40:54 +0000 UTC FinishedAt: 2026-07-08 17:40:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-08 17:40:54 +0000 UTC FinishedAt: 2026-07-08 17:40:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-08 17:41:39 +0000 UTC FinishedAt: 2026-07-08 20:43:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwm4ln[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__nf_conncount_add","nf_conncount_add_skb","nf_conncount_count_skb","nft_connlimit_do_eval","connlimit_mt"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"60444706aa17616efc03190d099ac347e28b3d0a","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFT_CONNLIMIT","NETFILTER_XT_MATCH_CONNLIMIT"],"series_id":"1f3ddb5c-cd3c-40a8-a67c-de01772545b3","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-08 17:41:39 +0000 UTC FinishedAt: 2026-07-08 20:43:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*88cb6c84-9168-427a-a836-e8fa7869f709,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b7e18887-2bd4-4e3b-865e-23afa4ce7646,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-workflowwm4ln/series-workflowwm4ln-build-action-192521173/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-workflowwm4ln/series-workflowwm4ln-build-action-2801855666/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-workflowwm4ln/series-workflowwm4ln-convert-artifact-1076967651/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,}