Name: series-workflowrdz9z Phase: Succeeded StartedAt: 2026-07-19 15:34:10 +0000 UTC FinishedAt: 2026-07-19 20:09:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdz9z[0] Phase: Succeeded StartedAt: 2026-07-19 15:34:10 +0000 UTC FinishedAt: 2026-07-19 16:05:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdz9z[0].run-triage Phase: Succeeded StartedAt: 2026-07-19 15:34:10 +0000 UTC FinishedAt: 2026-07-19 16:05:40 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "94515f3a7d4256a5062176b7d6ed0471938cd51a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_STREAM_PARSER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "94515f3a7d4256a5062176b7d6ed0471938cd51a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_STREAM_PARSER" ], "series_id": "1902f7c7-ee6f-4357-b927-9b550c8d9afe" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "tcp_bpf_send_verdict", "tcp_bpf_sendmsg", "tcp_bpf_sendmsg_redir" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE2OjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9TVFJFQU1fUEFSU0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX2JwZl9zZW5kX3ZlcmRpY3QmIzM0OywKICAgICYjMzQ7dGNwX2JwZl9zZW5kbXNnJiMzNDssCiAgICAmIzM0O3RjcF9icGZfc2VuZG1zZ19yZWRpciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZSBpbiBgdGNwX2JwZl9zZW5kX3ZlcmRpY3RgIGJ5IGhvbGRpbmcgYSByZWZlcmVuY2UgdG8gYHNrX3JlZGlyYCB3aGlsZSBpdCBpcyBiZWluZyB1c2VkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHNvY2ttYXAgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTY6MDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxZDIwYmE2MDdkZGYyMTkwNTI1MTAzZTIwM2I1MTI0NGVmYTRmN2RhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTkgMTY6MDQ6NTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2JwZi5jIGIvbmV0L2lwdjQvdGNwX2JwZi5jXG5pbmRleCA4ZTkwNWI1MGRlYWRiZS4uNjljYzhiYzMzYmNkMWMgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3BfYnBmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3RjcF9icGYuY1xuQEAgLTQ2OSw2ICYjNDM7NDY5LDcgQEAgc3RhdGljIGludCB0Y3BfYnBmX3NlbmRfdmVyZGljdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19wc29jayAqcHNvY2ssXG4gXHRjYXNlIF9fU0tfUkVESVJFQ1Q6XG4gXHRcdHJlZGlyX2luZ3Jlc3MgPSBwc29jay1cdTAwM2VyZWRpcl9pbmdyZXNzO1xuIFx0XHRza19yZWRpciA9IHBzb2NrLVx1MDAzZXNrX3JlZGlyO1xuJiM0MztcdFx0c29ja19ob2xkKHNrX3JlZGlyKTtcbiBcdFx0c2tfbXNnX2FwcGx5X2J5dGVzKHBzb2NrLCB0b3NlbmQpO1xuIFx0XHRpZiAoIXBzb2NrLVx1MDAzZWFwcGx5X2J5dGVzKSB7XG4gXHRcdFx0LyogQ2xlYW4gdXAgYmVmb3JlIHJlbGVhc2luZyB0aGUgc29jayBsb2NrLiAqL1xuQEAgLTQ4OSw2ICYjNDM7NDkwLDcgQEAgc3RhdGljIGludCB0Y3BfYnBmX3NlbmRfdmVyZGljdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19wc29jayAqcHNvY2ssXG4gXG4gXHRcdGlmIChldmFsID09IF9fU0tfUkVESVJFQ1QpXG4gXHRcdFx0c29ja19wdXQoc2tfcmVkaXIpO1xuJiM0MztcdFx0c29ja19wdXQoc2tfcmVkaXIpO1xuIFxuIFx0XHRsb2NrX3NvY2soc2spO1xuIFx0XHRza19tZW1fdW5jaGFyZ2Uoc2ssIHNlbnQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE2OjA0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9TVFJFQU1fUEFSU0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX2JwZl9zZW5kX3ZlcmRpY3QmIzM0OywKICAgICYjMzQ7dGNwX2JwZl9zZW5kbXNnJiMzNDssCiAgICAmIzM0O3RjcF9icGZfc2VuZG1zZ19yZWRpciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZSBpbiBgdGNwX2JwZl9zZW5kX3ZlcmRpY3RgIGJ5IGhvbGRpbmcgYSByZWZlcmVuY2UgdG8gYHNrX3JlZGlyYCB3aGlsZSBpdCBpcyBiZWluZyB1c2VkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHNvY2ttYXAgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDFkMjBiYTYwN2RkZjIxOTA1MjUxMDNlMjAzYjUxMjQ0ZWZhNGY3ZGEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1bCAxOSAxNjowNDo1MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9icGYuYyBiL25ldC9pcHY0L3RjcF9icGYuYwppbmRleCA4ZTkwNWI1MGRlYWRiZS4uNjljYzhiYzMzYmNkMWMgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9icGYuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfYnBmLmMKQEAgLTQ2OSw2ICYjNDM7NDY5LDcgQEAgc3RhdGljIGludCB0Y3BfYnBmX3NlbmRfdmVyZGljdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19wc29jayAqcHNvY2ssCiAJY2FzZSBfX1NLX1JFRElSRUNUOgogCQlyZWRpcl9pbmdyZXNzID0gcHNvY2stJmd0O3JlZGlyX2luZ3Jlc3M7CiAJCXNrX3JlZGlyID0gcHNvY2stJmd0O3NrX3JlZGlyOwomIzQzOwkJc29ja19ob2xkKHNrX3JlZGlyKTsKIAkJc2tfbXNnX2FwcGx5X2J5dGVzKHBzb2NrLCB0b3NlbmQpOwogCQlpZiAoIXBzb2NrLSZndDthcHBseV9ieXRlcykgewogCQkJLyogQ2xlYW4gdXAgYmVmb3JlIHJlbGVhc2luZyB0aGUgc29jayBsb2NrLiAqLwpAQCAtNDg5LDYgJiM0Mzs0OTAsNyBAQCBzdGF0aWMgaW50IHRjcF9icGZfc2VuZF92ZXJkaWN0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX3Bzb2NrICpwc29jaywKIAogCQlpZiAoZXZhbCA9PSBfX1NLX1JFRElSRUNUKQogCQkJc29ja19wdXQoc2tfcmVkaXIpOwomIzQzOwkJc29ja19wdXQoc2tfcmVkaXIpOwogCiAJCWxvY2tfc29jayhzayk7CiAJCXNrX21lbV91bmNoYXJnZShzaywgc2VudCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE2OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NDgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVENQIEJQRiBQYXRjaCoqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBhIHBhdGNoIHN1Ym1pdHRlZCB0byBgbmV0L2lwdjQvdGNwX2JwZi5jYC4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCB0aGUgYHRjcF9icGZfc2VuZF92ZXJkaWN0YCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBhZGRpbmcgYHNvY2tfaG9sZChza19yZWRpcilgIGFuZCBgc29ja19wdXQoc2tfcmVkaXIpYC4gSW1tZWRpYXRlbHksIEkgcmVjb2duaXplIHRoaXMgYXMgYSBsaWtlbHkgZml4IGZvciBhIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlIOKAkyBwcm9iYWJseSBhIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvIG9yIHNvbWV0aGluZyBzaW1pbGFyIHJlbGF0ZWQgdG8gdGhhdCBgc2tfcmVkaXJgIHNvY2tldCBwb2ludGVyLiBUaGUgY29kZSBjb21tZW50cyBhcmVuJiMzOTt0IGV4cGxpY2l0bHkgc3RhdGluZyB0aGUgaXNzdWUsIGJ1dCB0aGVzZSBob2xkL3B1dCBvcGVyYXRpb25zIGFyZSByZWQgZmxhZ3MgdGhhdCBhcmUgbGlrZWx5IHJlbGF0ZWQgdG8gdHJhY2tpbmcgdXNhZ2UuCgpHaXZlbiB0aGF0IGl0JiMzOTtzIGluIGEgY3JpdGljYWwgZnVuY3Rpb24gbGlrZSB0aGlzLCBJIG5lZWQgdG8gdGhvcm91Z2hseSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIGB0Y3BfYnBmX3NlbmRfdmVyZGljdGAuIEkmIzM5O2xsIGhhdmUgdG8gZGVsdmUgaW50byB0aGUgZnVuY3Rpb24mIzM5O3MgbG9naWMgYW5kIHRyYWNlIHRoZSB1c2FnZSBvZiBgc2tfcmVkaXJgIHRvIHNlZSB3aGVyZSB0aGUgcG90ZW50aWFsIHJhY2Ugb3IgbWVtb3J5IGNvcnJ1cHRpb24gY291bGQgb2NjdXIuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoZW4gYHNrX3JlZGlyYCBpcyBiZWluZyBhc3NpZ25lZCwgd2hlbiBpdCBtaWdodCBiZSBhY2Nlc3NlZCBhZnRlciBiZWluZyBmcmVlZCwgYW5kIGhvdyB0aGVzZSBgc29ja19ob2xkYCBhbmQgYHNvY2tfcHV0YCBjYWxscyBhcmUgbWVhbnQgdG8gcmVtZWR5IHRoZSBwcm9ibGVtLiBVbmRlcnN0YW5kaW5nIHRoZSBwcmVjaXNlIGNhbGwgcGF0aCBhbmQgZGF0YSBmbG93IGlzIGVzc2VudGlhbCB0byB2ZXJpZnlpbmcgdGhlIGZpeCYjMzk7cyBjb3JyZWN0bmVzcyBhbmQgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IGNvbmN1cnJlbnQgYWNjZXNzIHNjZW5hcmlvcyBhbmQgaG93IHRoaXMgcGF0Y2ggYWZmZWN0cyB0aGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE2OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF9icGZfc2VuZF92ZXJkaWN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2JwZi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9icGYuYz0zNjg9c3RhdGljIGludCB0Y3BfYnBmX3JlY3Ztc2coc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4sXG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTQxNy1cbm5ldC9pcHY0L3RjcF9icGYuYzo0MTg6c3RhdGljIGludCB0Y3BfYnBmX3NlbmRfdmVyZGljdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19wc29jayAqcHNvY2ssXG5uZXQvaXB2NC90Y3BfYnBmLmMtNDE5LVx0XHRcdFx0c3RydWN0IHNrX21zZyAqbXNnLCBpbnQgKmNvcGllZCwgaW50IGZsYWdzKVxuLS1cbm5ldC9pcHY0L3RjcF9icGYuYz01MzQ9c3RhdGljIGludCB0Y3BfYnBmX3NlbmRtc2coc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKVxuLS1cbm5ldC9pcHY0L3RjcF9icGYuYy01OTktXG5uZXQvaXB2NC90Y3BfYnBmLmM6NjAwOlx0XHRlcnIgPSB0Y3BfYnBmX3NlbmRfdmVyZGljdChzaywgcHNvY2ssIG1zZ190eCwgXHUwMDI2Y29waWVkLCBmbGFncyk7XG5uZXQvaXB2NC90Y3BfYnBmLmMtNjAxLVx0XHRpZiAodW5saWtlbHkoZXJyIFx1MDAzYyAwKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNjowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjg0CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgdGhlIGB0Y3BfYnBmX3NlbmRfdmVyZGljdGAgUGF0aCoqCgpSaWdodCwgc28gYHRjcF9icGZfc2VuZF92ZXJkaWN0YCBpcyBiZWluZyBjYWxsZWQgZnJvbSB3aXRoaW4gYHRjcF9icGZfc2VuZG1zZ2AuIEhtbSwgdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBhdGggaW4gYHRjcF9icGYuY2AuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBjYXN1YWwgZ2xhbmNlOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGljaCBmZWF0dXJlcyBhbmQgZGVwZW5kZW5jaWVzIG5lZWQgdG8gYmUgZW5hYmxlZCBhdCBjb21waWxlIHRpbWUgdG8gbWFrZSB0aGlzIHBhcnRpY3VsYXIgZmxvdyBvcGVyYXRpb25hbC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSB0cmFjaW5nIHRoZSBjYWxsIGNoYWluLCBjaGVja2luZyB0aGUgY29uZmlnIHN5bWJvbHMgaW52b2x2ZWQsIGFuZCBtYWtpbmcgc3VyZSBJIGhhdmUgYSBnb29kIGdyYXNwIG9mIHRoZSBjb250cm9sIGZsb3cgd2l0aGluIGB0Y3BfYnBmLmNgIGFuZCBpdHMgZGVwZW5kZW5jaWVzLiBNeSB1bHRpbWF0ZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIHZlcmRpY3QgcGF0aCBmb3Iga2VybmVsIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTY6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwX2JwZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L01ha2VmaWxlPTYyPW9iai0kKENPTkZJR19UQ1BfQ09OR19JTExJTk9JUykgJiM0Mzs9IHRjcF9pbGxpbm9pcy5vXG5uZXQvaXB2NC9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfTkVUX1NPQ0tfTVNHKSAmIzQzOz0gdGNwX2JwZi5vXG5uZXQvaXB2NC9NYWtlZmlsZS02NC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSB1ZHBfYnBmLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNjowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDQ3CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgcGVyc3BlY3RpdmU6CgoqKkRlYnVnZ2luZyBOZXR3b3JrIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyBJJiMzOTt2ZSBnb3QgdG8gc29ydCBvdXQgaXMgdGhpcyBgQ09ORklHX05FVF9TT0NLX01TR2AgZGVwZW5kZW5jeS4gU2VlbXMgbGlrZSBpdCYjMzk7cyBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBwdXp6bGUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZnVuY3Rpb25hbGl0eSByZWxpZXMgb24gaXQgYW5kIGlmIEkgbmVlZCB0byBlbmFibGUgb3IgdHdlYWsgaXQuCgpCZWZvcmUgSSBjb21taXQgdG8gYW55dGhpbmcsIEkgd2FudCB0byB0YWtlIGEgbW9yZSBob2xpc3RpYyB2aWV3LiBJIHNob3VsZCBwcm9iYWJseSBzY2FuIHRoZSBicm9hZGVyIGNvbmZpZ3VyYXRpb24gc3BhY2UuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlICpvdGhlciogbmV0d29yayBjb25maWd1cmF0aW9ucyB0aGF0IHRoaXMgb25lIGRlcGVuZHMgb24sIG9yIHRoYXQgZGVwZW5kIG9uICppdCouIFBlcmhhcHMgdGhlcmUmIzM5O3Mgc29tZSBicm9hZGVyIGNvbnRleHQgb3IgcmVsYXRlZCBzZXR0aW5ncyBJIHNob3VsZCBiZSBhd2FyZSBvZiBiZWZvcmUgbWFraW5nIGFueSBjaGFuZ2VzLiBUaGlzIGlzIHN0YW5kYXJkIG9wZXJhdGluZyBwcm9jZWR1cmUsIHJlYWxseTsgSSBjYW4mIzM5O3QganVzdCByZWFjdCB0byBvbmUgZmxhZyB3aXRob3V0IHVuZGVyc3RhbmRpbmcgdGhlIGJpZ2dlciBwaWN0dXJlLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29uZmlnIGZpbGVzIGFuZCBzZWUgd2hhdCYjMzk7cyBjb25uZWN0ZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgYnJlYWtpbmcgYW55dGhpbmcgZG93bnN0cmVhbSBvciBzZXR0aW5nIG9mZiBhbnkgdW5pbnRlbmRlZCBjb25zZXF1ZW5jZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTY6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkVUX1NPQ0tfTVNHJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9MzYxPWNvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUlxuLS1cbm5ldC9LY29uZmlnLTM2Ni1cdHNlbGVjdCBTVFJFQU1fUEFSU0VSXG5uZXQvS2NvbmZpZzozNjc6XHRzZWxlY3QgTkVUX1NPQ0tfTVNHXG5uZXQvS2NvbmZpZy0zNjgtXHRoZWxwXG4tLVxubmV0L0tjb25maWc9NDc1PWNvbmZpZyBORVRfU0VMRlRFU1RTXG4tLVxubmV0L0tjb25maWctNDc4LVxubmV0L0tjb25maWc6NDc5OmNvbmZpZyBORVRfU09DS19NU0dcbm5ldC9LY29uZmlnLTQ4MC1cdGJvb2xcbi0tXG5uZXQvS2NvbmZpZy00ODItXHRoZWxwXG5uZXQvS2NvbmZpZzo0ODM6XHQgIFRoZSBORVRfU09DS19NU0cgcHJvdmlkZXMgYSBmcmFtZXdvcmsgZm9yIHBsYWluIHNvY2tldHMgKGUuZy4gVENQKSBvclxubmV0L0tjb25maWctNDg0LVx0ICBVTFBzICh1cHBlciBsYXllciBtb2R1bGVzLCBlLmcuIFRMUykgdG8gcHJvY2VzcyBMNyBhcHBsaWNhdGlvbiBkYXRhXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTY6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUyMwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSB0aG91Z2h0IHByb2Nlc3MgdW5mb2xkczoKCioqRGlnZ2luZyBpbnRvIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGVuY291bnRlcmluZyB0aGlzIGBORVRfU09DS19NU0dgIHNldHRpbmcsIGFuZCBpdCBzZWVtcyB0byBiZSBpbnRlcnR3aW5lZCB3aXRoIGBCUEZfU1RSRUFNX1BBUlNFUmAuIEkga25vdyBgTkVUX1NPQ0tfTVNHYCBpcyBoaWRkZW4gd2hpY2ggc3VnZ2VzdHMgaXQmIzM5O3MgbGlrZWx5IGEgc3VwcG9ydGluZyBjb25maWd1cmF0aW9uIG9wdGlvbi4gTXkgaW5zdGluY3QgaXMgdGhhdCB0aGlzIHJlbGF0aW9uc2hpcCBpcyBkcml2ZW4gYnkgdGhlIGBCUEZfU1RSRUFNX1BBUlNFUmAgY29uZmlndXJhdGlvbi4gVGhpcyBzb3VuZHMgbGlrZSBpdCBtaWdodCBiZSBrZXkgdG8gZW5hYmxpbmcgc29tZSBhZHZhbmNlZCBCUEYgc3RyZWFtIHByb2Nlc3NpbmcuCgpJIG5lZWQgdG8gc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aCBgQlBGX1NUUkVBTV9QQVJTRVJgLiBUaGUga2VybmVsIGNvbmZpZyBzeXN0ZW0gaXMgdGhlIHBsYWNlIHRvIHN0YXJ0LCBzbyBJJiMzOTtsbCBnbyBjaGVjayB0aGUgYG5ldC9LY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSBkZWZpbml0aXZlIHNvdXJjZSB0byBzZWUgaG93IHRoZXNlIG9wdGlvbnMgYXJlIGRlZmluZWQgYW5kIHJlbGF0ZWQuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgc29tZSBkZXBlbmRlbmNpZXMgb3IgZGVmYXVsdHMgdGhhdCBleHBsYWluIHdoeSBgTkVUX1NPQ0tfTVNHYCBnZXRzIHB1bGxlZCBpbiB3aGVuIGBCUEZfU1RSRUFNX1BBUlNFUmAgaXMgc2VsZWN0ZWQuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgS2NvbmZpZyBzYXlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNjowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCUEZfU1RSRUFNX1BBUlNFUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnPTM1ND1jb25maWcgQlFMXG4tLVxubmV0L0tjb25maWctMzYwLVxubmV0L0tjb25maWc6MzYxOmNvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUlxubmV0L0tjb25maWctMzYyLVx0Ym9vbCBcJiMzNDtlbmFibGUgQlBGIFNUUkVBTV9QQVJTRVJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTY6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg5NQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIEJQRiBTdHJlYW0gUGFyc2VyIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgc28gSSBuZWVkIHRvIGVuYWJsZSBgQlBGX1NUUkVBTV9QQVJTRVJgLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgdGhpcyBmZWF0dXJlLCBvYnZpb3VzbHkuIEJ1dCBob2xkIG9uIGEgc2Vjb25k4oCmIGl0IGxvb2tzIGxpa2UgYE5FVF9TT0NLX01TR2AgaXMgYWxzbyBnZXR0aW5nIHB1bGxlZCBpbiBieSBgQ0dST1VQX0JQRmA/IEkgbmVlZCB0byBjb25maXJtIHRoYXQgcmVsYXRpb25zaGlwLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGF0IGRlcGVuZGVuY3kgZXhpc3RzIGFuZCB3aGF0IGltcGxpY2F0aW9ucyBpdCBtaWdodCBoYXZlIGZvciB0aGUgY29uZmlndXJhdGlvbiBhbmQgb3BlcmF0aW9uIG9mIHRoZSBzdHJlYW0gcGFyc2VyIGluIGRpZmZlcmVudCBjZ3JvdXAgY29udGV4dHMuIEkmIzM5O2xsIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMgdG8gY2xhcmlmeSB0aGlzLiBHb3R0YSBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBjcml0aWNhbCBpbiB0aGUgc2V0dXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE2OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05FVF9TT0NLX01TRyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTg4Nj1zdHJ1Y3Qgc2tfYnVmZiB7XG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC05MjYtXHRcdHN0cnVjdCBsaXN0X2hlYWRcdHRjcF90c29ydGVkX2FuY2hvcjtcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6OTI3OiNpZmRlZiBDT05GSUdfTkVUX1NPQ0tfTVNHXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTkyOC1cdFx0dW5zaWduZWQgbG9uZ1x0XHRfc2tfcmVkaXI7XG4tLVxuaW5jbHVkZS9saW51eC9za21zZy5oPTU1NT1zdGF0aWMgaW5saW5lIHNzaXplX3Qgc2tfbXNnX2ZpcnN0X2xlbihzdHJ1Y3Qgc29jayAqc2spXG4tLVxuaW5jbHVkZS9saW51eC9za21zZy5oLTU3Mi1cbmluY2x1ZGUvbGludXgvc2ttc2cuaDo1NzM6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9TT0NLX01TRylcbmluY2x1ZGUvbGludXgvc2ttc2cuaC01NzQtXG4tLVxuaW5jbHVkZS9saW51eC9za21zZy5oPTYxOT1zdGF0aWMgaW5saW5lIHZvaWQgc2tiX2JwZl9yZWRpcmVjdF9jbGVhcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmluY2x1ZGUvbGludXgvc2ttc2cuaC02MjItfVxuaW5jbHVkZS9saW51eC9za21zZy5oOjYyMzojZW5kaWYgLyogQ09ORklHX05FVF9TT0NLX01TRyAqL1xuaW5jbHVkZS9saW51eC9za21zZy5oLTYyNC0jZW5kaWYgLyogX0xJTlVYX1NLTVNHX0ggKi9cbi0tXG5pbmNsdWRlL25ldC90Y3AuaD0yODI3PXZvaWQgdGNwX3VwZGF0ZV91bHAoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcHJvdG8gKnAsXG4tLVxuaW5jbHVkZS9uZXQvdGNwLmgtMjgzMy1cbmluY2x1ZGUvbmV0L3RjcC5oOjI4MzQ6I2lmZGVmIENPTkZJR19ORVRfU09DS19NU0dcbmluY2x1ZGUvbmV0L3RjcC5oLTI4MzUtc3RydWN0IHNrX21zZztcbi0tXG5pbmNsdWRlL25ldC90Y3AuaD0yODU2PWludCB0Y3BfYnBmX3NlbmRtc2dfcmVkaXIoc3RydWN0IHNvY2sgKnNrLCBib29sIGluZ3Jlc3MsXG5pbmNsdWRlL25ldC90Y3AuaC0yODU3LVx0XHRcdCAgc3RydWN0IHNrX21zZyAqbXNnLCB1MzIgYnl0ZXMsIGludCBmbGFncyk7XG5pbmNsdWRlL25ldC90Y3AuaDoyODU4OiNlbmRpZiAvKiBDT05GSUdfTkVUX1NPQ0tfTVNHICovXG5pbmNsdWRlL25ldC90Y3AuaC0yODU5LVxuaW5jbHVkZS9uZXQvdGNwLmg6Mjg2MDojaWYgIWRlZmluZWQoQ09ORklHX0JQRl9TWVNDQUxMKSB8fCAhZGVmaW5lZChDT05GSUdfTkVUX1NPQ0tfTVNHKVxuaW5jbHVkZS9uZXQvdGNwLmgtMjg2MS1zdGF0aWMgaW5saW5lIHZvaWQgdGNwX2JwZl9jbG9uZShjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrICpuZXdzaylcbi0tXG5rZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTMzLVx0c2VsZWN0IEJJTkFSWV9QUklOVEZcbmtlcm5lbC9icGYvS2NvbmZpZzozNDpcdHNlbGVjdCBORVRfU09DS19NU0cgaWYgTkVUXG5rZXJuZWwvYnBmL0tjb25maWctMzUtXHRzZWxlY3QgTkVUX1hHUkVTUyBpZiBORVRcbi0tXG5uZXQvS2NvbmZpZz0zNjE9Y29uZmlnIEJQRl9TVFJFQU1fUEFSU0VSXG4tLVxubmV0L0tjb25maWctMzY2LVx0c2VsZWN0IFNUUkVBTV9QQVJTRVJcbm5ldC9LY29uZmlnOjM2NzpcdHNlbGVjdCBORVRfU09DS19NU0dcbm5ldC9LY29uZmlnLTM2OC1cdGhlbHBcbi0tXG5uZXQvS2NvbmZpZz00NzU9Y29uZmlnIE5FVF9TRUxGVEVTVFNcbi0tXG5uZXQvS2NvbmZpZy00NzgtXG5uZXQvS2NvbmZpZzo0Nzk6Y29uZmlnIE5FVF9TT0NLX01TR1xubmV0L0tjb25maWctNDgwLVx0Ym9vbFxuLS1cbm5ldC9LY29uZmlnLTQ4Mi1cdGhlbHBcbm5ldC9LY29uZmlnOjQ4MzpcdCAgVGhlIE5FVF9TT0NLX01TRyBwcm92aWRlcyBhIGZyYW1ld29yayBmb3IgcGxhaW4gc29ja2V0cyAoZS5nLiBUQ1ApIG9yXG5uZXQvS2NvbmZpZy00ODQtXHQgIFVMUHMgKHVwcGVyIGxheWVyIG1vZHVsZXMsIGUuZy4gVExTKSB0byBwcm9jZXNzIEw3IGFwcGxpY2F0aW9uIGRhdGFcbi0tXG5uZXQvY29yZS9NYWtlZmlsZT00Mz1vYmotJChDT05GSUdfRkFJTE9WRVIpICYjNDM7PSBmYWlsb3Zlci5vXG5uZXQvY29yZS9NYWtlZmlsZTo0NDpvYmotJChDT05GSUdfTkVUX1NPQ0tfTVNHKSAmIzQzOz0gc2ttc2cub1xubmV0L2NvcmUvTWFrZWZpbGUtNDUtb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gc29ja19tYXAub1xuLS1cbm5ldC9pcHY0L0tjb25maWc9MzgyPWNvbmZpZyBJTkVUX0VTUElOVENQXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zODUtXHRzZWxlY3QgU1RSRUFNX1BBUlNFUlxubmV0L2lwdjQvS2NvbmZpZzozODY6XHRzZWxlY3QgTkVUX1NPQ0tfTVNHXG5uZXQvaXB2NC9LY29uZmlnLTM4Ny1cdHNlbGVjdCBYRlJNX0VTUElOVENQXG4tLVxubmV0L2lwdjQvTWFrZWZpbGU9NjI9b2JqLSQoQ09ORklHX1RDUF9DT05HX0lMTElOT0lTKSAmIzQzOz0gdGNwX2lsbGlub2lzLm9cbm5ldC9pcHY0L01ha2VmaWxlOjYzOm9iai0kKENPTkZJR19ORVRfU09DS19NU0cpICYjNDM7PSB0Y3BfYnBmLm9cbm5ldC9pcHY0L01ha2VmaWxlLTY0LW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHVkcF9icGYub1xuLS1cbm5ldC9pcHY2L0tjb25maWc9OTA9Y29uZmlnIElORVQ2X0VTUElOVENQXG4tLVxubmV0L2lwdjYvS2NvbmZpZy05My1cdHNlbGVjdCBTVFJFQU1fUEFSU0VSXG5uZXQvaXB2Ni9LY29uZmlnOjk0Olx0c2VsZWN0IE5FVF9TT0NLX01TR1xubmV0L2lwdjYvS2NvbmZpZy05NS1cdHNlbGVjdCBYRlJNX0VTUElOVENQXG4tLVxubmV0L3Rscy9LY29uZmlnPTU9Y29uZmlnIFRMU1xuLS1cbm5ldC90bHMvS2NvbmZpZy0xMC1cdHNlbGVjdCBDUllQVE9fR0NNXG5uZXQvdGxzL0tjb25maWc6MTE6XHRzZWxlY3QgTkVUX1NPQ0tfTVNHXG5uZXQvdGxzL0tjb25maWctMTItXHRkZWZhdWx0IG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTY6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM3OQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIGZvciBOZXR3b3JrIFNvY2tldCBNZXNzYWdlIEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYE5FVF9TT0NLX01TR2AgZmVhdHVyZSwgYW5kIGl0IGxvb2tzIGxpa2UgYEJQRl9TWVNDQUxMYCBnZXRzIGNob3NlbiB3aGVuIHRoZSBgTkVUYCBvcHRpb24gaXMgZW5hYmxlZCwgd2hpY2ggaXMgdGhlIGtleSBoZXJlLiBTbywgYEJQRl9TWVNDQUxMYCBhbG9uZSAqc2hvdWxkKiBiZSBzdWZmaWNpZW50LCBlc3BlY2lhbGx5IHNpbmNlIGl0JiMzOTtzIGRlZmluaXRlbHkgZW5hYmxlZCB3aXRoaW4gU3l6a2FsbGVyLiBIb3dldmVyLCBJJiMzOTttIHRoaW5raW5nLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBhbmQgY292ZXIgYWxsIGJhc2VzLCBpdCBtaWdodCBiZSBwcnVkZW50IHRvIGFsc28gc3BlY2lmeSBgQlBGX1NUUkVBTV9QQVJTRVJgIGFuZCBgVExTYCBpbiB0aGUgY29uZmlndXJhdGlvbiBhcyB3ZWxsLCBhcyBhIGtpbmQgb2YgZGVmZW5zaXZlIHByb2dyYW1taW5nLiBCdXQgaG9sZCBvbiwgdGhlIGNvcmUgZWxlbWVudCBpcyBpbmRlZWQgYEJQRl9TWVNDQUxMYCB3aGljaCBpcyBhIG1vcmUgZ2VuZXJpYyBjb25maWd1cmF0aW9uLiBUaGVyZWZvcmUsIGFzIEkgdGhpbmsgaXQgdGhyb3VnaCwgSSBzZWUgSSBkb24mIzM5O3QgbmVlZCB0byBzcGVjaWZ5IGBCUEZfU1lTQ0FMTGAsIGJ1dCBJIHdpbGwgYWRkIGBCUEZfU1RSRUFNX1BBUlNFUmAgYW5kIGBUTFNgIGZvciBwZWFjZSBvZiBtaW5kLgoKVGhlIGNyaXRpY2FsIGNoYW5nZSBzZWVtcyB0byBiZSB3aXRoaW4gYHRjcF9icGZfc2VuZF92ZXJkaWN0YC4gUmlnaHQsIGxldCYjMzk7cyBnbyBhbmQgY2hlY2sgb3V0IHdoYXQgZXhhY3RseSBgdGNwX2JwZl9zZW5kX3ZlcmRpY3RgIGRvZXMsIGFuZCBpdHMgaW1wbGljYXRpb25zIGhlcmUuIEFoLCByaWdodCwgaXQmIzM5O3MgY2FsbGVkIGZyb20gYHRjcF9icGZfc2VuZG1zZ2AgYW5kLCBpZiBpdCBleGlzdHMsIGB0Y3BfYnBmX3NlbmRwYWdlYC4gTm93LCBsZXQgbWUgdGFrZSBhIGxvb2sgYXQgYHRjcF9icGZfc2VuZG1zZ2AgdG8gZ2V0IHRoZSB3aG9sZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNjowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y3BfYnBmX3NlbmRtc2cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfYnBmLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2JwZi5jPTE1Mz1zdGF0aWMgaW50IHRjcF9icGZfcHVzaF9sb2NrZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfbXNnICptc2csXG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTE2My1cbm5ldC9pcHY0L3RjcF9icGYuYzoxNjQ6aW50IHRjcF9icGZfc2VuZG1zZ19yZWRpcihzdHJ1Y3Qgc29jayAqc2ssIGJvb2wgaW5ncmVzcyxcbm5ldC9pcHY0L3RjcF9icGYuYy0xNjUtXHRcdFx0ICBzdHJ1Y3Qgc2tfbXNnICptc2csIHUzMiBieXRlcywgaW50IGZsYWdzKVxuLS1cbm5ldC9pcHY0L3RjcF9icGYuYy0xNzctfVxubmV0L2lwdjQvdGNwX2JwZi5jOjE3ODpFWFBPUlRfU1lNQk9MX0dQTCh0Y3BfYnBmX3NlbmRtc2dfcmVkaXIpO1xubmV0L2lwdjQvdGNwX2JwZi5jLTE3OS1cbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmM9NDE4PXN0YXRpYyBpbnQgdGNwX2JwZl9zZW5kX3ZlcmRpY3Qoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrLFxuLS1cbm5ldC9pcHY0L3RjcF9icGYuYy00ODYtXHRcdG9yaWdzaXplID0gbXNnLVx1MDAzZXNnLnNpemU7XG5uZXQvaXB2NC90Y3BfYnBmLmM6NDg3Olx0XHRyZXQgPSB0Y3BfYnBmX3NlbmRtc2dfcmVkaXIoc2tfcmVkaXIsIHJlZGlyX2luZ3Jlc3MsXG5uZXQvaXB2NC90Y3BfYnBmLmMtNDg4LVx0XHRcdFx0XHQgICAgbXNnLCB0b3NlbmQsIGZsYWdzKTtcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmMtNTMzLVxubmV0L2lwdjQvdGNwX2JwZi5jOjUzNDpzdGF0aWMgaW50IHRjcF9icGZfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUpXG5uZXQvaXB2NC90Y3BfYnBmLmMtNTM1LXtcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmM9NjQwPXN0YXRpYyB2b2lkIHRjcF9icGZfcmVidWlsZF9wcm90b3Moc3RydWN0IHByb3RvIHByb3RbVENQX0JQRl9OVU1fQ0ZHU10sXG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTY1MC1cdHByb3RbVENQX0JQRl9UWF1cdFx0XHQ9IHByb3RbVENQX0JQRl9CQVNFXTtcbm5ldC9pcHY0L3RjcF9icGYuYzo2NTE6XHRwcm90W1RDUF9CUEZfVFhdLnNlbmRtc2dcdFx0PSB0Y3BfYnBmX3NlbmRtc2c7XG5uZXQvaXB2NC90Y3BfYnBmLmMtNjUyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNjowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTE3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2Ygd2hhdCBJJiMzOTttIHNlZWluZzoKCioqQW5hbHl6aW5nIGB0Y3BfYnBmX3NlbmRtc2dgIGFuZCBpdHMgQ29ubmVjdGlvbiB0byBgc29ja21hcGAqKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiBgdGNwX2JwZl9zZW5kbXNnYCByaWdodCBub3cuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQgd2l0aGluIGB0Y3BfYnBmX3JlYnVpbGRfcHJvdG9zYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYXMgSSBrbm93IHRoYXQgYHNvY2ttYXBgIGlzIG9mdGVuIGludm9sdmVkIGluIHRoZXNlIGtpbmRzIG9mIGxvdy1sZXZlbCBuZXR3b3JrIG9wZXJhdGlvbnMuIE15IGV4cGVydGlzZSB0ZWxscyBtZSB0aGF0IHRoaXMgY29tYmluYXRpb24gbGlrZWx5IGluZGljYXRlcyBzb21lIGZvcm0gb2YgQlBGLWJhc2VkIHBhY2tldCBtYW5pcHVsYXRpb24gb3Igc3RhdGUgbWFuYWdlbWVudCB3aXRoaW4gdGhlIFRDUCBzdGFjaywgcGFydGljdWxhcmx5IGNvbmNlcm5pbmcgc29ja21hcC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCwgc28gSSYjMzk7bGwgZGl2ZSBpbnRvIGB0Y3BfYnBmX3JlYnVpbGRfcHJvdG9zYCBuZXh0IHRvIHNlZSBob3cgYHRjcF9icGZfc2VuZG1zZ2AgaXMgdXRpbGl6ZWQgaW4gdGhhdCBjb250ZXh0IGFuZCB3aGVyZSBzb2NrbWFwIGZpdHMgaW4uIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSBob3cgZGF0YSBpcyBiZWluZyBjb25zdHJ1Y3RlZCBvciBtb2RpZmllZCBiZWZvcmUgaXQmIzM5O3MgdHJhbnNtaXR0ZWQsIHBvdGVudGlhbGx5IGxldmVyYWdpbmcgc29ja21hcCYjMzk7cyBjYXBhYmlsaXRpZXMgZm9yIGRpcmVjdGluZyBwYWNrZXRzIG9yIGFwcGx5aW5nIGN1c3RvbSBsb2dpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTY6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwX2JwZl9yZWJ1aWxkX3Byb3RvcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9icGYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfYnBmLmM9NjM4PXN0YXRpYyBzdHJ1Y3QgcHJvdG8gdGNwX2JwZl9wcm90c1tUQ1BfQlBGX05VTV9QUk9UU11bVENQX0JQRl9OVU1fQ0ZHU107XG5uZXQvaXB2NC90Y3BfYnBmLmMtNjM5LVxubmV0L2lwdjQvdGNwX2JwZi5jOjY0MDpzdGF0aWMgdm9pZCB0Y3BfYnBmX3JlYnVpbGRfcHJvdG9zKHN0cnVjdCBwcm90byBwcm90W1RDUF9CUEZfTlVNX0NGR1NdLFxubmV0L2lwdjQvdGNwX2JwZi5jLTY0MS1cdFx0XHRcdCAgIHN0cnVjdCBwcm90byAqYmFzZSlcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmM9NjYwPXN0YXRpYyB2b2lkIHRjcF9icGZfY2hlY2tfdjZfbmVlZHNfcmVidWlsZChzdHJ1Y3QgcHJvdG8gKm9wcylcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjY0LVx0XHRpZiAobGlrZWx5KG9wcyAhPSB0Y3B2Nl9wcm90X3NhdmVkKSkge1xubmV0L2lwdjQvdGNwX2JwZi5jOjY2NTpcdFx0XHR0Y3BfYnBmX3JlYnVpbGRfcHJvdG9zKHRjcF9icGZfcHJvdHNbVENQX0JQRl9JUFY2XSwgb3BzKTtcbm5ldC9pcHY0L3RjcF9icGYuYy02NjYtXHRcdFx0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2dGNwdjZfcHJvdF9zYXZlZCwgb3BzKTtcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmM9NjcyPXN0YXRpYyBpbnQgX19pbml0IHRjcF9icGZfdjRfYnVpbGRfcHJvdG8odm9pZClcbm5ldC9pcHY0L3RjcF9icGYuYy02NzMte1xubmV0L2lwdjQvdGNwX2JwZi5jOjY3NDpcdHRjcF9icGZfcmVidWlsZF9wcm90b3ModGNwX2JwZl9wcm90c1tUQ1BfQlBGX0lQVjRdLCBcdTAwMjZ0Y3BfcHJvdCk7XG5uZXQvaXB2NC90Y3BfYnBmLmMtNjc1LVx0cmV0dXJuIDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE2OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyNDcKCQkJCQkJCW91dHB1dDogMTQ3CgkJCQkJCQl0aG91Z2h0czogNTYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJQRiBTb2NrbWFwIFBhdGNoIGZvciBUQ1AgU29ja2V0cyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFpbWVkIGF0IGZpeGluZyBhIGJ1ZyByZWxhdGVkIHRvIGBzZW5kbXNnYCBoYW5kbGluZyBmb3IgVENQIHNvY2tldHMgdGhhdCBhcmUgcGFydCBvZiBhIHNvY2ttYXAuIFRoZSBjb3JlIG9mIHRoZSBsb2dpYyBpcyBpbiBgdGNwX2JwZl9zZW5kX3ZlcmRpY3RgLCB3aGljaCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBkZWFscyB3aXRoIHRoZSB2ZXJkaWN0IHJldHVybmVkIGJ5IGEgQlBGIHByb2dyYW0gYXR0YWNoZWQgdG8gdGhlIHNvY2ttYXAuIFRoZSBrZXkgY2hhbmdlIGhlcmUgaXMgdGhlIGFkZGl0aW9uIG9mIGBzb2NrX2hvbGQoc2tfcmVkaXIpYCBhbmQgYHNvY2tfcHV0KHNrX3JlZGlyKWAgY2FsbHMgYXJvdW5kIGBza19tc2dfYXBwbHlfYnl0ZXNgIGFuZCBgdGNwX2JwZl9zZW5kbXNnX3JlZGlyYC4gIFRoaXMgc3VnZ2VzdHMgc29tZSByZWZlcmVuY2UgY291bnRpbmcgb3IgbGlmZXRpbWUgbWFuYWdlbWVudCBpc3N1ZSB0aGF0JiMzOTtzIGJlaW5nIGFkZHJlc3NlZC4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgZml4LCBub3QganVzdCBhIHBlcmZvcm1hbmNlIHR3ZWFrLgoKTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBmdXp6IHRoaXMuICBHaXZlbiB0aGUgcG90ZW50aWFsIGZvciBzdWJ0bGUgcmFjZSBjb25kaXRpb25zIG9yIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MgaW4gc29ja2V0LWxldmVsIGNvZGUsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZhbGlkYXRlIHRoZSBmaXgmIzM5O3MgY29ycmVjdG5lc3MgYW5kIHJvYnVzdG5lc3MuCgpMZXQmIzM5O3MgcXVpY2tseSByZXZpZXcgdGhlIHJlbGV2YW50IHN5bWJvbHM6IGB0Y3BfYnBmX3NlbmRfdmVyZGljdGAsIGB0Y3BfYnBmX3NlbmRtc2dgLCBhbmQgYHRjcF9icGZfc2VuZG1zZ19yZWRpcmAg4oCTIHRob3NlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyB0byBrZWVwIGluIG1pbmQuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBrZXJuZWwgY29uZmlncy4gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJpZ2h0IGZlYXR1cmVzIGFyZSBlbmFibGVkIGZvciB0aGUgcGF0Y2ggdG8gYmUgcmVsZXZhbnQuIFRoZSBvcmlnaW5hbCBub3RlcyBtZW50aW9uIGBCUEZfU1lTQ0FMTGAsIGBORVRfU09DS19NU0dgLCBhbmQgYEJQRl9TVFJFQU1fUEFSU0VSYC4gV2FpdCBhIG1pbnV0ZSwgYE5FVF9TT0NLX01TR2AgaXMgYSBoaWRkZW4gY29uZmlnOyB0aGF0IHNpbXBsaWZpZXMgdGhpbmdzLiAgSSBjYW4ganVzdCBlbmFibGUgYEJQRl9TWVNDQUxMYCBhbmQgYEJQRl9TVFJFQU1fUEFSU0VSYC4gIExldCYjMzk7cyBkb3VibGUgY2hlY2sgdGhhdC4uLiBZZXAsIGBCUEZfU1lTQ0FMTGAgYXV0b21hdGljYWxseSBicmluZ3MgaW4gYE5FVF9TT0NLX01TR2AgYXMgbG9uZyBhcyBgTkVUYCBpcyBlbmFibGVkLCBhbmQgd2UmIzM5O3JlIGRlZmluaXRlbHkgaW4gdGhlIG5ldHdvcmtpbmcgY29kZS4gU28sIGBCUEZfU1lTQ0FMTGAgaXMgdGhlIG1haW4gb25lOyBgQlBGX1NUUkVBTV9QQVJTRVJgIG1pZ2h0IHByb3ZpZGUgYWRkaXRpb25hbCBjb3ZlcmFnZSwgYnV0IGBCUEZfU1lTQ0FMTGAgaXMgdGhlIGNydWNpYWwgb25lIHRvIGZvY3VzIG9uLgoKT2theSwgdGltZSBmb3IgYSBtb3JlIHRob3JvdWdoIGNvZGUgcmV2aWV3IG9mIHRoZSBwYXRjaC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLiAgVGhlIGBzb2NrX2hvbGRgIGFuZCBgc29ja19wdXRgIGFkZGl0aW9ucyBhcmUgZGVmaW5pdGVseSB0aGVyZSwgc3Vycm91bmRpbmcgdGhlIGNvcmUgbG9naWMuIERvdWJsZSBjaGVjayB0aGUgY29udGV4dC4uLiB5ZXMsIHRoYXQgbG9va3MgcmlnaHQuIEl0JiMzOTtzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IGp1c3QgYSBjb3NtZXRpYyBvbmUuICBUaGlzIHN0cmVuZ3RoZW5zIG15IGNvbnZpY3Rpb24gdGhhdCBpdCBzaG91bGQgYmUgZnV6emVkLgoKUmlnaHQsIEkmIzM5O20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNjowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX1NUUkVBTV9QQVJTRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfYnBmX3NlbmRfdmVyZGljdCYjMzQ7LAogICAgJiMzNDt0Y3BfYnBmX3NlbmRtc2cmIzM0OywKICAgICYjMzQ7dGNwX2JwZl9zZW5kbXNnX3JlZGlyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGlzc3VlIGluIGB0Y3BfYnBmX3NlbmRfdmVyZGljdGAgYnkgaG9sZGluZyBhIHJlZmVyZW5jZSB0byBgc2tfcmVkaXJgIHdoaWxlIGl0IGlzIGJlaW5nIHVzZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc29ja21hcCBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX1NUUkVBTV9QQVJTRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfYnBmX3NlbmRfdmVyZGljdCYjMzQ7LAogICAgJiMzNDt0Y3BfYnBmX3NlbmRtc2cmIzM0OywKICAgICYjMzQ7dGNwX2JwZl9zZW5kbXNnX3JlZGlyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGlzc3VlIGluIGB0Y3BfYnBmX3NlbmRfdmVyZGljdGAgYnkgaG9sZGluZyBhIHJlZmVyZW5jZSB0byBgc2tfcmVkaXJgIHdoaWxlIGl0IGlzIGJlaW5nIHVzZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc29ja21hcCBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE2OjA0OjUxLjYzMTUxODg0M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3MTQyMDg0MDkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfU1RSRUFNX1BBUlNFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjcF9icGZfc2VuZF92ZXJkaWN0XCIsXG4gICAgXCJ0Y3BfYnBmX3NlbmRtc2dcIixcbiAgICBcInRjcF9icGZfc2VuZG1zZ19yZWRpclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGlzc3VlIGluIGB0Y3BfYnBmX3NlbmRfdmVyZGljdGAgYnkgaG9sZGluZyBhIHJlZmVyZW5jZSB0byBgc2tfcmVkaXJgIHdoaWxlIGl0IGlzIGJlaW5nIHVzZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc29ja21hcCBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTY6MDQ6NTEuNjMxNTI1NDkzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDM4NzIwNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxZDIwYmE2MDdkZGYyMTkwNTI1MTAzZTIwM2I1MTI0NGVmYTRmN2RhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDE5IDE2OjA0OjUwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9icGYuYyBiL25ldC9pcHY0L3RjcF9icGYuY1xcbmluZGV4IDhlOTA1YjUwZGVhZGJlLi42OWNjOGJjMzNiY2QxYyAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC90Y3BfYnBmLmNcXG4rKysgYi9uZXQvaXB2NC90Y3BfYnBmLmNcXG5AQCAtNDY5LDYgKzQ2OSw3IEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9zZW5kX3ZlcmRpY3Qoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrLFxcbiBcXHRjYXNlIF9fU0tfUkVESVJFQ1Q6XFxuIFxcdFxcdHJlZGlyX2luZ3Jlc3MgPSBwc29jay1cXHUwMDNlcmVkaXJfaW5ncmVzcztcXG4gXFx0XFx0c2tfcmVkaXIgPSBwc29jay1cXHUwMDNlc2tfcmVkaXI7XFxuK1xcdFxcdHNvY2tfaG9sZChza19yZWRpcik7XFxuIFxcdFxcdHNrX21zZ19hcHBseV9ieXRlcyhwc29jaywgdG9zZW5kKTtcXG4gXFx0XFx0aWYgKCFwc29jay1cXHUwMDNlYXBwbHlfYnl0ZXMpIHtcXG4gXFx0XFx0XFx0LyogQ2xlYW4gdXAgYmVmb3JlIHJlbGVhc2luZyB0aGUgc29jayBsb2NrLiAqL1xcbkBAIC00ODksNiArNDkwLDcgQEAgc3RhdGljIGludCB0Y3BfYnBmX3NlbmRfdmVyZGljdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19wc29jayAqcHNvY2ssXFxuIFxcbiBcXHRcXHRpZiAoZXZhbCA9PSBfX1NLX1JFRElSRUNUKVxcbiBcXHRcXHRcXHRzb2NrX3B1dChza19yZWRpcik7XFxuK1xcdFxcdHNvY2tfcHV0KHNrX3JlZGlyKTtcXG4gXFxuIFxcdFxcdGxvY2tfc29jayhzayk7XFxuIFxcdFxcdHNrX21lbV91bmNoYXJnZShzaywgc2VudCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE2OjA0OjUyLjE3NTkzOTQ3N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY1OTc2NTA3MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9TVFJFQU1fUEFSU0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX2JwZl9zZW5kX3ZlcmRpY3RcIixcbiAgICBcInRjcF9icGZfc2VuZG1zZ1wiLFxuICAgIFwidGNwX2JwZl9zZW5kbXNnX3JlZGlyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaXNzdWUgaW4gYHRjcF9icGZfc2VuZF92ZXJkaWN0YCBieSBob2xkaW5nIGEgcmVmZXJlbmNlIHRvIGBza19yZWRpcmAgd2hpbGUgaXQgaXMgYmVpbmcgdXNlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBzb2NrbWFwIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDFkMjBiYTYwN2RkZjIxOTA1MjUxMDNlMjAzYjUxMjQ0ZWZhNGY3ZGFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAxOSAxNjowNDo1MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9icGYuYyBiL25ldC9pcHY0L3RjcF9icGYuY1xuaW5kZXggOGU5MDViNTBkZWFkYmUuLjY5Y2M4YmMzM2JjZDFjIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdGNwX2JwZi5jXG4rKysgYi9uZXQvaXB2NC90Y3BfYnBmLmNcbkBAIC00NjksNiArNDY5LDcgQEAgc3RhdGljIGludCB0Y3BfYnBmX3NlbmRfdmVyZGljdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19wc29jayAqcHNvY2ssXG4gXHRjYXNlIF9fU0tfUkVESVJFQ1Q6XG4gXHRcdHJlZGlyX2luZ3Jlc3MgPSBwc29jay1cdTAwM2VyZWRpcl9pbmdyZXNzO1xuIFx0XHRza19yZWRpciA9IHBzb2NrLVx1MDAzZXNrX3JlZGlyO1xuK1x0XHRzb2NrX2hvbGQoc2tfcmVkaXIpO1xuIFx0XHRza19tc2dfYXBwbHlfYnl0ZXMocHNvY2ssIHRvc2VuZCk7XG4gXHRcdGlmICghcHNvY2stXHUwMDNlYXBwbHlfYnl0ZXMpIHtcbiBcdFx0XHQvKiBDbGVhbiB1cCBiZWZvcmUgcmVsZWFzaW5nIHRoZSBzb2NrIGxvY2suICovXG5AQCAtNDg5LDYgKzQ5MCw3IEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9zZW5kX3ZlcmRpY3Qoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrLFxuIFxuIFx0XHRpZiAoZXZhbCA9PSBfX1NLX1JFRElSRUNUKVxuIFx0XHRcdHNvY2tfcHV0KHNrX3JlZGlyKTtcbitcdFx0c29ja19wdXQoc2tfcmVkaXIpO1xuIFxuIFx0XHRsb2NrX3NvY2soc2spO1xuIFx0XHRza19tZW1fdW5jaGFyZ2Uoc2ssIHNlbnQpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTY6MDQ6NTIuMTc1OTQwOTA4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk0ODY0MTUyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBUQ1AgQlBGIFBhdGNoKipcblxuT2theSwgc28gdGhlcmUncyBhIHBhdGNoIHN1Ym1pdHRlZCB0byBgbmV0L2lwdjQvdGNwX2JwZi5jYC4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCB0aGUgYHRjcF9icGZfc2VuZF92ZXJkaWN0YCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCdzIGFkZGluZyBgc29ja19ob2xkKHNrX3JlZGlyKWAgYW5kIGBzb2NrX3B1dChza19yZWRpcilgLiBJbW1lZGlhdGVseSwgSSByZWNvZ25pemUgdGhpcyBhcyBhIGxpa2VseSBmaXggZm9yIGEgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWUg4oCTIHByb2JhYmx5IGEgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8gb3Igc29tZXRoaW5nIHNpbWlsYXIgcmVsYXRlZCB0byB0aGF0IGBza19yZWRpcmAgc29ja2V0IHBvaW50ZXIuIFRoZSBjb2RlIGNvbW1lbnRzIGFyZW4ndCBleHBsaWNpdGx5IHN0YXRpbmcgdGhlIGlzc3VlLCBidXQgdGhlc2UgaG9sZC9wdXQgb3BlcmF0aW9ucyBhcmUgcmVkIGZsYWdzIHRoYXQgYXJlIGxpa2VseSByZWxhdGVkIHRvIHRyYWNraW5nIHVzYWdlLlxuXG5HaXZlbiB0aGF0IGl0J3MgaW4gYSBjcml0aWNhbCBmdW5jdGlvbiBsaWtlIHRoaXMsIEkgbmVlZCB0byB0aG9yb3VnaGx5IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgYHRjcF9icGZfc2VuZF92ZXJkaWN0YC4gSSdsbCBoYXZlIHRvIGRlbHZlIGludG8gdGhlIGZ1bmN0aW9uJ3MgbG9naWMgYW5kIHRyYWNlIHRoZSB1c2FnZSBvZiBgc2tfcmVkaXJgIHRvIHNlZSB3aGVyZSB0aGUgcG90ZW50aWFsIHJhY2Ugb3IgbWVtb3J5IGNvcnJ1cHRpb24gY291bGQgb2NjdXIuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IGV4YWN0bHkgd2hlbiBgc2tfcmVkaXJgIGlzIGJlaW5nIGFzc2lnbmVkLCB3aGVuIGl0IG1pZ2h0IGJlIGFjY2Vzc2VkIGFmdGVyIGJlaW5nIGZyZWVkLCBhbmQgaG93IHRoZXNlIGBzb2NrX2hvbGRgIGFuZCBgc29ja19wdXRgIGNhbGxzIGFyZSBtZWFudCB0byByZW1lZHkgdGhlIHByb2JsZW0uIFVuZGVyc3RhbmRpbmcgdGhlIHByZWNpc2UgY2FsbCBwYXRoIGFuZCBkYXRhIGZsb3cgaXMgZXNzZW50aWFsIHRvIHZlcmlmeWluZyB0aGUgZml4J3MgY29ycmVjdG5lc3MgYW5kIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGNvbmN1cnJlbnQgYWNjZXNzIHNjZW5hcmlvcyBhbmQgaG93IHRoaXMgcGF0Y2ggYWZmZWN0cyB0aGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTQ4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTY6MDQ6NTYuMTI0NTg0NzQzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NzE5MzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjcF9icGZfc2VuZF92ZXJkaWN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3RjcF9icGYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC90Y3BfYnBmLmM9MzY4PXN0YXRpYyBpbnQgdGNwX2JwZl9yZWN2bXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuLFxcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTQxNy1cXG5uZXQvaXB2NC90Y3BfYnBmLmM6NDE4OnN0YXRpYyBpbnQgdGNwX2JwZl9zZW5kX3ZlcmRpY3Qoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrLFxcbm5ldC9pcHY0L3RjcF9icGYuYy00MTktXFx0XFx0XFx0XFx0c3RydWN0IHNrX21zZyAqbXNnLCBpbnQgKmNvcGllZCwgaW50IGZsYWdzKVxcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jPTUzND1zdGF0aWMgaW50IHRjcF9icGZfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUpXFxuLS1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtNTk5LVxcbm5ldC9pcHY0L3RjcF9icGYuYzo2MDA6XFx0XFx0ZXJyID0gdGNwX2JwZl9zZW5kX3ZlcmRpY3Qoc2ssIHBzb2NrLCBtc2dfdHgsIFxcdTAwMjZjb3BpZWQsIGZsYWdzKTtcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjAxLVxcdFxcdGlmICh1bmxpa2VseShlcnIgXFx1MDAzYyAwKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTY6MDQ6NTYuMjAyMzA4MzU3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkzNzYzNjU1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGB0Y3BfYnBmX3NlbmRfdmVyZGljdGAgUGF0aCoqXG5cblJpZ2h0LCBzbyBgdGNwX2JwZl9zZW5kX3ZlcmRpY3RgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIHdpdGhpbiBgdGNwX2JwZl9zZW5kbXNnYC4gSG1tLCB0aGF0J3MgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhpcyBwYXRoIGluIGB0Y3BfYnBmLmNgLiBUaGlzIGlzbid0IGp1c3QgYSBjYXN1YWwgZ2xhbmNlOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGljaCBmZWF0dXJlcyBhbmQgZGVwZW5kZW5jaWVzIG5lZWQgdG8gYmUgZW5hYmxlZCBhdCBjb21waWxlIHRpbWUgdG8gbWFrZSB0aGlzIHBhcnRpY3VsYXIgZmxvdyBvcGVyYXRpb25hbC4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlIGNhbGwgY2hhaW4sIGNoZWNraW5nIHRoZSBjb25maWcgc3ltYm9scyBpbnZvbHZlZCwgYW5kIG1ha2luZyBzdXJlIEkgaGF2ZSBhIGdvb2QgZ3Jhc3Agb2YgdGhlIGNvbnRyb2wgZmxvdyB3aXRoaW4gYHRjcF9icGYuY2AgYW5kIGl0cyBkZXBlbmRlbmNpZXMuIE15IHVsdGltYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgdmVyZGljdCBwYXRoIGZvciBrZXJuZWwgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY4NCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE2OjA0OjU5LjEzOTk0NzYwOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTYyMjA2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3BfYnBmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlPTYyPW9iai0kKENPTkZJR19UQ1BfQ09OR19JTExJTk9JUykgKz0gdGNwX2lsbGlub2lzLm9cXG5uZXQvaXB2NC9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfTkVUX1NPQ0tfTVNHKSArPSB0Y3BfYnBmLm9cXG5uZXQvaXB2NC9NYWtlZmlsZS02NC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHVkcF9icGYub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNjowNDo1OS4yMTk1ODA2OTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTQwNzQzMzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgcGVyc3BlY3RpdmU6XG5cbioqRGVidWdnaW5nIE5ldHdvcmsgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgSSd2ZSBnb3QgdG8gc29ydCBvdXQgaXMgdGhpcyBgQ09ORklHX05FVF9TT0NLX01TR2AgZGVwZW5kZW5jeS4gU2VlbXMgbGlrZSBpdCdzIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBmdW5jdGlvbmFsaXR5IHJlbGllcyBvbiBpdCBhbmQgaWYgSSBuZWVkIHRvIGVuYWJsZSBvciB0d2VhayBpdC5cblxuQmVmb3JlIEkgY29tbWl0IHRvIGFueXRoaW5nLCBJIHdhbnQgdG8gdGFrZSBhIG1vcmUgaG9saXN0aWMgdmlldy4gSSBzaG91bGQgcHJvYmFibHkgc2NhbiB0aGUgYnJvYWRlciBjb25maWd1cmF0aW9uIHNwYWNlLiBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlICpvdGhlciogbmV0d29yayBjb25maWd1cmF0aW9ucyB0aGF0IHRoaXMgb25lIGRlcGVuZHMgb24sIG9yIHRoYXQgZGVwZW5kIG9uICppdCouIFBlcmhhcHMgdGhlcmUncyBzb21lIGJyb2FkZXIgY29udGV4dCBvciByZWxhdGVkIHNldHRpbmdzIEkgc2hvdWxkIGJlIGF3YXJlIG9mIGJlZm9yZSBtYWtpbmcgYW55IGNoYW5nZXMuIFRoaXMgaXMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSwgcmVhbGx5OyBJIGNhbid0IGp1c3QgcmVhY3QgdG8gb25lIGZsYWcgd2l0aG91dCB1bmRlcnN0YW5kaW5nIHRoZSBiaWdnZXIgcGljdHVyZS4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvbmZpZyBmaWxlcyBhbmQgc2VlIHdoYXQncyBjb25uZWN0ZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBicmVha2luZyBhbnl0aGluZyBkb3duc3RyZWFtIG9yIHNldHRpbmcgb2ZmIGFueSB1bmludGVuZGVkIGNvbnNlcXVlbmNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA0NywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE2OjA1OjAyLjM2MDMyNjUyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNDYyMjI4MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRfU09DS19NU0dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9MzYxPWNvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUlxcbi0tXFxubmV0L0tjb25maWctMzY2LVxcdHNlbGVjdCBTVFJFQU1fUEFSU0VSXFxubmV0L0tjb25maWc6MzY3OlxcdHNlbGVjdCBORVRfU09DS19NU0dcXG5uZXQvS2NvbmZpZy0zNjgtXFx0aGVscFxcbi0tXFxubmV0L0tjb25maWc9NDc1PWNvbmZpZyBORVRfU0VMRlRFU1RTXFxuLS1cXG5uZXQvS2NvbmZpZy00NzgtXFxubmV0L0tjb25maWc6NDc5OmNvbmZpZyBORVRfU09DS19NU0dcXG5uZXQvS2NvbmZpZy00ODAtXFx0Ym9vbFxcbi0tXFxubmV0L0tjb25maWctNDgyLVxcdGhlbHBcXG5uZXQvS2NvbmZpZzo0ODM6XFx0ICBUaGUgTkVUX1NPQ0tfTVNHIHByb3ZpZGVzIGEgZnJhbWV3b3JrIGZvciBwbGFpbiBzb2NrZXRzIChlLmcuIFRDUCkgb3JcXG5uZXQvS2NvbmZpZy00ODQtXFx0ICBVTFBzICh1cHBlciBsYXllciBtb2R1bGVzLCBlLmcuIFRMUykgdG8gcHJvY2VzcyBMNyBhcHBsaWNhdGlvbiBkYXRhXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE2OjA1OjAyLjQ4NDk1Mjk0MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NTYyNDYwMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHVuZm9sZHM6XG5cbioqRGlnZ2luZyBpbnRvIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBlbmNvdW50ZXJpbmcgdGhpcyBgTkVUX1NPQ0tfTVNHYCBzZXR0aW5nLCBhbmQgaXQgc2VlbXMgdG8gYmUgaW50ZXJ0d2luZWQgd2l0aCBgQlBGX1NUUkVBTV9QQVJTRVJgLiBJIGtub3cgYE5FVF9TT0NLX01TR2AgaXMgaGlkZGVuIHdoaWNoIHN1Z2dlc3RzIGl0J3MgbGlrZWx5IGEgc3VwcG9ydGluZyBjb25maWd1cmF0aW9uIG9wdGlvbi4gTXkgaW5zdGluY3QgaXMgdGhhdCB0aGlzIHJlbGF0aW9uc2hpcCBpcyBkcml2ZW4gYnkgdGhlIGBCUEZfU1RSRUFNX1BBUlNFUmAgY29uZmlndXJhdGlvbi4gVGhpcyBzb3VuZHMgbGlrZSBpdCBtaWdodCBiZSBrZXkgdG8gZW5hYmxpbmcgc29tZSBhZHZhbmNlZCBCUEYgc3RyZWFtIHByb2Nlc3NpbmcuXG5cbkkgbmVlZCB0byBzZWUgd2hhdCdzIGdvaW5nIG9uIHdpdGggYEJQRl9TVFJFQU1fUEFSU0VSYC4gVGhlIGtlcm5lbCBjb25maWcgc3lzdGVtIGlzIHRoZSBwbGFjZSB0byBzdGFydCwgc28gSSdsbCBnbyBjaGVjayB0aGUgYG5ldC9LY29uZmlnYCBmaWxlLiBUaGF0J3MgdGhlIGRlZmluaXRpdmUgc291cmNlIHRvIHNlZSBob3cgdGhlc2Ugb3B0aW9ucyBhcmUgZGVmaW5lZCBhbmQgcmVsYXRlZC4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHNvbWUgZGVwZW5kZW5jaWVzIG9yIGRlZmF1bHRzIHRoYXQgZXhwbGFpbiB3aHkgYE5FVF9TT0NLX01TR2AgZ2V0cyBwdWxsZWQgaW4gd2hlbiBgQlBGX1NUUkVBTV9QQVJTRVJgIGlzIHNlbGVjdGVkLiBMZXQncyBzZWUgd2hhdCB0aGUgS2NvbmZpZyBzYXlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTIzLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTY6MDU6MDYuMTQxMjAxNjg2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjMyMDc3NzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlBGX1NUUkVBTV9QQVJTRVJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9MzU0PWNvbmZpZyBCUUxcXG4tLVxcbm5ldC9LY29uZmlnLTM2MC1cXG5uZXQvS2NvbmZpZzozNjE6Y29uZmlnIEJQRl9TVFJFQU1fUEFSU0VSXFxubmV0L0tjb25maWctMzYyLVxcdGJvb2wgXFxcImVuYWJsZSBCUEYgU1RSRUFNX1BBUlNFUlxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTY6MDU6MDYuMjY0NDE1Mjc4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MjEwODQ3NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgQlBGIFN0cmVhbSBQYXJzZXIgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHNvIEkgbmVlZCB0byBlbmFibGUgYEJQRl9TVFJFQU1fUEFSU0VSYC4gVGhhdCdzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgdGhpcyBmZWF0dXJlLCBvYnZpb3VzbHkuIEJ1dCBob2xkIG9uIGEgc2Vjb25k4oCmIGl0IGxvb2tzIGxpa2UgYE5FVF9TT0NLX01TR2AgaXMgYWxzbyBnZXR0aW5nIHB1bGxlZCBpbiBieSBgQ0dST1VQX0JQRmA/IEkgbmVlZCB0byBjb25maXJtIHRoYXQgcmVsYXRpb25zaGlwLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGF0IGRlcGVuZGVuY3kgZXhpc3RzIGFuZCB3aGF0IGltcGxpY2F0aW9ucyBpdCBtaWdodCBoYXZlIGZvciB0aGUgY29uZmlndXJhdGlvbiBhbmQgb3BlcmF0aW9uIG9mIHRoZSBzdHJlYW0gcGFyc2VyIGluIGRpZmZlcmVudCBjZ3JvdXAgY29udGV4dHMuIEknbGwgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcyB0byBjbGFyaWZ5IHRoaXMuIEdvdHRhIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcgY3JpdGljYWwgaW4gdGhlIHNldHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODk1LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTY6MDU6MDguOTg1NTAxNjUyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzA1MTEwNzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5FVF9TT0NLX01TR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9za2J1ZmYuaD04ODY9c3RydWN0IHNrX2J1ZmYge1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC05MjYtXFx0XFx0c3RydWN0IGxpc3RfaGVhZFxcdHRjcF90c29ydGVkX2FuY2hvcjtcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjkyNzojaWZkZWYgQ09ORklHX05FVF9TT0NLX01TR1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtOTI4LVxcdFxcdHVuc2lnbmVkIGxvbmdcXHRcXHRfc2tfcmVkaXI7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrbXNnLmg9NTU1PXN0YXRpYyBpbmxpbmUgc3NpemVfdCBza19tc2dfZmlyc3RfbGVuKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbmluY2x1ZGUvbGludXgvc2ttc2cuaC01NzItXFxuaW5jbHVkZS9saW51eC9za21zZy5oOjU3MzojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX1NPQ0tfTVNHKVxcbmluY2x1ZGUvbGludXgvc2ttc2cuaC01NzQtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrbXNnLmg9NjE5PXN0YXRpYyBpbmxpbmUgdm9pZCBza2JfYnBmX3JlZGlyZWN0X2NsZWFyKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrbXNnLmgtNjIyLX1cXG5pbmNsdWRlL2xpbnV4L3NrbXNnLmg6NjIzOiNlbmRpZiAvKiBDT05GSUdfTkVUX1NPQ0tfTVNHICovXFxuaW5jbHVkZS9saW51eC9za21zZy5oLTYyNC0jZW5kaWYgLyogX0xJTlVYX1NLTVNHX0ggKi9cXG4tLVxcbmluY2x1ZGUvbmV0L3RjcC5oPTI4Mjc9dm9pZCB0Y3BfdXBkYXRlX3VscChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBwcm90byAqcCxcXG4tLVxcbmluY2x1ZGUvbmV0L3RjcC5oLTI4MzMtXFxuaW5jbHVkZS9uZXQvdGNwLmg6MjgzNDojaWZkZWYgQ09ORklHX05FVF9TT0NLX01TR1xcbmluY2x1ZGUvbmV0L3RjcC5oLTI4MzUtc3RydWN0IHNrX21zZztcXG4tLVxcbmluY2x1ZGUvbmV0L3RjcC5oPTI4NTY9aW50IHRjcF9icGZfc2VuZG1zZ19yZWRpcihzdHJ1Y3Qgc29jayAqc2ssIGJvb2wgaW5ncmVzcyxcXG5pbmNsdWRlL25ldC90Y3AuaC0yODU3LVxcdFxcdFxcdCAgc3RydWN0IHNrX21zZyAqbXNnLCB1MzIgYnl0ZXMsIGludCBmbGFncyk7XFxuaW5jbHVkZS9uZXQvdGNwLmg6Mjg1ODojZW5kaWYgLyogQ09ORklHX05FVF9TT0NLX01TRyAqL1xcbmluY2x1ZGUvbmV0L3RjcC5oLTI4NTktXFxuaW5jbHVkZS9uZXQvdGNwLmg6Mjg2MDojaWYgIWRlZmluZWQoQ09ORklHX0JQRl9TWVNDQUxMKSB8fCAhZGVmaW5lZChDT05GSUdfTkVUX1NPQ0tfTVNHKVxcbmluY2x1ZGUvbmV0L3RjcC5oLTI4NjEtc3RhdGljIGlubGluZSB2b2lkIHRjcF9icGZfY2xvbmUoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc29jayAqbmV3c2spXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctMzMtXFx0c2VsZWN0IEJJTkFSWV9QUklOVEZcXG5rZXJuZWwvYnBmL0tjb25maWc6MzQ6XFx0c2VsZWN0IE5FVF9TT0NLX01TRyBpZiBORVRcXG5rZXJuZWwvYnBmL0tjb25maWctMzUtXFx0c2VsZWN0IE5FVF9YR1JFU1MgaWYgTkVUXFxuLS1cXG5uZXQvS2NvbmZpZz0zNjE9Y29uZmlnIEJQRl9TVFJFQU1fUEFSU0VSXFxuLS1cXG5uZXQvS2NvbmZpZy0zNjYtXFx0c2VsZWN0IFNUUkVBTV9QQVJTRVJcXG5uZXQvS2NvbmZpZzozNjc6XFx0c2VsZWN0IE5FVF9TT0NLX01TR1xcbm5ldC9LY29uZmlnLTM2OC1cXHRoZWxwXFxuLS1cXG5uZXQvS2NvbmZpZz00NzU9Y29uZmlnIE5FVF9TRUxGVEVTVFNcXG4tLVxcbm5ldC9LY29uZmlnLTQ3OC1cXG5uZXQvS2NvbmZpZzo0Nzk6Y29uZmlnIE5FVF9TT0NLX01TR1xcbm5ldC9LY29uZmlnLTQ4MC1cXHRib29sXFxuLS1cXG5uZXQvS2NvbmZpZy00ODItXFx0aGVscFxcbm5ldC9LY29uZmlnOjQ4MzpcXHQgIFRoZSBORVRfU09DS19NU0cgcHJvdmlkZXMgYSBmcmFtZXdvcmsgZm9yIHBsYWluIHNvY2tldHMgKGUuZy4gVENQKSBvclxcbm5ldC9LY29uZmlnLTQ4NC1cXHQgIFVMUHMgKHVwcGVyIGxheWVyIG1vZHVsZXMsIGUuZy4gVExTKSB0byBwcm9jZXNzIEw3IGFwcGxpY2F0aW9uIGRhdGFcXG4tLVxcbm5ldC9jb3JlL01ha2VmaWxlPTQzPW9iai0kKENPTkZJR19GQUlMT1ZFUikgKz0gZmFpbG92ZXIub1xcbm5ldC9jb3JlL01ha2VmaWxlOjQ0Om9iai0kKENPTkZJR19ORVRfU09DS19NU0cpICs9IHNrbXNnLm9cXG5uZXQvY29yZS9NYWtlZmlsZS00NS1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHNvY2tfbWFwLm9cXG4tLVxcbm5ldC9pcHY0L0tjb25maWc9MzgyPWNvbmZpZyBJTkVUX0VTUElOVENQXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTM4NS1cXHRzZWxlY3QgU1RSRUFNX1BBUlNFUlxcbm5ldC9pcHY0L0tjb25maWc6Mzg2OlxcdHNlbGVjdCBORVRfU09DS19NU0dcXG5uZXQvaXB2NC9LY29uZmlnLTM4Ny1cXHRzZWxlY3QgWEZSTV9FU1BJTlRDUFxcbi0tXFxubmV0L2lwdjQvTWFrZWZpbGU9NjI9b2JqLSQoQ09ORklHX1RDUF9DT05HX0lMTElOT0lTKSArPSB0Y3BfaWxsaW5vaXMub1xcbm5ldC9pcHY0L01ha2VmaWxlOjYzOm9iai0kKENPTkZJR19ORVRfU09DS19NU0cpICs9IHRjcF9icGYub1xcbm5ldC9pcHY0L01ha2VmaWxlLTY0LW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gdWRwX2JwZi5vXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTkwPWNvbmZpZyBJTkVUNl9FU1BJTlRDUFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy05My1cXHRzZWxlY3QgU1RSRUFNX1BBUlNFUlxcbm5ldC9pcHY2L0tjb25maWc6OTQ6XFx0c2VsZWN0IE5FVF9TT0NLX01TR1xcbm5ldC9pcHY2L0tjb25maWctOTUtXFx0c2VsZWN0IFhGUk1fRVNQSU5UQ1BcXG4tLVxcbm5ldC90bHMvS2NvbmZpZz01PWNvbmZpZyBUTFNcXG4tLVxcbm5ldC90bHMvS2NvbmZpZy0xMC1cXHRzZWxlY3QgQ1JZUFRPX0dDTVxcbm5ldC90bHMvS2NvbmZpZzoxMTpcXHRzZWxlY3QgTkVUX1NPQ0tfTVNHXFxubmV0L3Rscy9LY29uZmlnLTEyLVxcdGRlZmF1bHQgblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNjowNToxMS4yOTA2MTczNTRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE4NjkzNjI3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIGZvciBOZXR3b3JrIFNvY2tldCBNZXNzYWdlIEhhbmRsaW5nKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBORVRfU09DS19NU0dgIGZlYXR1cmUsIGFuZCBpdCBsb29rcyBsaWtlIGBCUEZfU1lTQ0FMTGAgZ2V0cyBjaG9zZW4gd2hlbiB0aGUgYE5FVGAgb3B0aW9uIGlzIGVuYWJsZWQsIHdoaWNoIGlzIHRoZSBrZXkgaGVyZS4gU28sIGBCUEZfU1lTQ0FMTGAgYWxvbmUgKnNob3VsZCogYmUgc3VmZmljaWVudCwgZXNwZWNpYWxseSBzaW5jZSBpdCdzIGRlZmluaXRlbHkgZW5hYmxlZCB3aXRoaW4gU3l6a2FsbGVyLiBIb3dldmVyLCBJJ20gdGhpbmtpbmcsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIGFuZCBjb3ZlciBhbGwgYmFzZXMsIGl0IG1pZ2h0IGJlIHBydWRlbnQgdG8gYWxzbyBzcGVjaWZ5IGBCUEZfU1RSRUFNX1BBUlNFUmAgYW5kIGBUTFNgIGluIHRoZSBjb25maWd1cmF0aW9uIGFzIHdlbGwsIGFzIGEga2luZCBvZiBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcuIEJ1dCBob2xkIG9uLCB0aGUgY29yZSBlbGVtZW50IGlzIGluZGVlZCBgQlBGX1NZU0NBTExgIHdoaWNoIGlzIGEgbW9yZSBnZW5lcmljIGNvbmZpZ3VyYXRpb24uIFRoZXJlZm9yZSwgYXMgSSB0aGluayBpdCB0aHJvdWdoLCBJIHNlZSBJIGRvbid0IG5lZWQgdG8gc3BlY2lmeSBgQlBGX1NZU0NBTExgLCBidXQgSSB3aWxsIGFkZCBgQlBGX1NUUkVBTV9QQVJTRVJgIGFuZCBgVExTYCBmb3IgcGVhY2Ugb2YgbWluZC5cblxuVGhlIGNyaXRpY2FsIGNoYW5nZSBzZWVtcyB0byBiZSB3aXRoaW4gYHRjcF9icGZfc2VuZF92ZXJkaWN0YC4gUmlnaHQsIGxldCdzIGdvIGFuZCBjaGVjayBvdXQgd2hhdCBleGFjdGx5IGB0Y3BfYnBmX3NlbmRfdmVyZGljdGAgZG9lcywgYW5kIGl0cyBpbXBsaWNhdGlvbnMgaGVyZS4gQWgsIHJpZ2h0LCBpdCdzIGNhbGxlZCBmcm9tIGB0Y3BfYnBmX3NlbmRtc2dgIGFuZCwgaWYgaXQgZXhpc3RzLCBgdGNwX2JwZl9zZW5kcGFnZWAuIE5vdywgbGV0IG1lIHRha2UgYSBsb29rIGF0IGB0Y3BfYnBmX3NlbmRtc2dgIHRvIGdldCB0aGUgd2hvbGUgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM3OSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNjowNToxNi40Nzc1NTU4NzlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDAwMzY4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3BfYnBmX3NlbmRtc2dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdGNwX2JwZi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9icGYuYz0xNTM9c3RhdGljIGludCB0Y3BfYnBmX3B1c2hfbG9ja2VkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX21zZyAqbXNnLFxcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTE2My1cXG5uZXQvaXB2NC90Y3BfYnBmLmM6MTY0OmludCB0Y3BfYnBmX3NlbmRtc2dfcmVkaXIoc3RydWN0IHNvY2sgKnNrLCBib29sIGluZ3Jlc3MsXFxubmV0L2lwdjQvdGNwX2JwZi5jLTE2NS1cXHRcXHRcXHQgIHN0cnVjdCBza19tc2cgKm1zZywgdTMyIGJ5dGVzLCBpbnQgZmxhZ3MpXFxuLS1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtMTc3LX1cXG5uZXQvaXB2NC90Y3BfYnBmLmM6MTc4OkVYUE9SVF9TWU1CT0xfR1BMKHRjcF9icGZfc2VuZG1zZ19yZWRpcik7XFxubmV0L2lwdjQvdGNwX2JwZi5jLTE3OS1cXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYz00MTg9c3RhdGljIGludCB0Y3BfYnBmX3NlbmRfdmVyZGljdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19wc29jayAqcHNvY2ssXFxuLS1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtNDg2LVxcdFxcdG9yaWdzaXplID0gbXNnLVxcdTAwM2VzZy5zaXplO1xcbm5ldC9pcHY0L3RjcF9icGYuYzo0ODc6XFx0XFx0cmV0ID0gdGNwX2JwZl9zZW5kbXNnX3JlZGlyKHNrX3JlZGlyLCByZWRpcl9pbmdyZXNzLFxcbm5ldC9pcHY0L3RjcF9icGYuYy00ODgtXFx0XFx0XFx0XFx0XFx0ICAgIG1zZywgdG9zZW5kLCBmbGFncyk7XFxuLS1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtNTMzLVxcbm5ldC9pcHY0L3RjcF9icGYuYzo1MzQ6c3RhdGljIGludCB0Y3BfYnBmX3NlbmRtc2coc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKVxcbm5ldC9pcHY0L3RjcF9icGYuYy01MzUte1xcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jPTY0MD1zdGF0aWMgdm9pZCB0Y3BfYnBmX3JlYnVpbGRfcHJvdG9zKHN0cnVjdCBwcm90byBwcm90W1RDUF9CUEZfTlVNX0NGR1NdLFxcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTY1MC1cXHRwcm90W1RDUF9CUEZfVFhdXFx0XFx0XFx0PSBwcm90W1RDUF9CUEZfQkFTRV07XFxubmV0L2lwdjQvdGNwX2JwZi5jOjY1MTpcXHRwcm90W1RDUF9CUEZfVFhdLnNlbmRtc2dcXHRcXHQ9IHRjcF9icGZfc2VuZG1zZztcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjUyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNjowNToxNi41Nzc1NjM4MTJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI4MzMzMTczOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHdoYXQgSSdtIHNlZWluZzpcblxuKipBbmFseXppbmcgYHRjcF9icGZfc2VuZG1zZ2AgYW5kIGl0cyBDb25uZWN0aW9uIHRvIGBzb2NrbWFwYCoqXG5cbk9rYXksIHNvIEknbSBmb2N1c2luZyBvbiBgdGNwX2JwZl9zZW5kbXNnYCByaWdodCBub3cuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQgd2l0aGluIGB0Y3BfYnBmX3JlYnVpbGRfcHJvdG9zYC4gVGhhdCdzIGludGVyZXN0aW5nLCBhcyBJIGtub3cgdGhhdCBgc29ja21hcGAgaXMgb2Z0ZW4gaW52b2x2ZWQgaW4gdGhlc2Uga2luZHMgb2YgbG93LWxldmVsIG5ldHdvcmsgb3BlcmF0aW9ucy4gTXkgZXhwZXJ0aXNlIHRlbGxzIG1lIHRoYXQgdGhpcyBjb21iaW5hdGlvbiBsaWtlbHkgaW5kaWNhdGVzIHNvbWUgZm9ybSBvZiBCUEYtYmFzZWQgcGFja2V0IG1hbmlwdWxhdGlvbiBvciBzdGF0ZSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgVENQIHN0YWNrLCBwYXJ0aWN1bGFybHkgY29uY2VybmluZyBzb2NrbWFwLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwLCBzbyBJJ2xsIGRpdmUgaW50byBgdGNwX2JwZl9yZWJ1aWxkX3Byb3Rvc2AgbmV4dCB0byBzZWUgaG93IGB0Y3BfYnBmX3NlbmRtc2dgIGlzIHV0aWxpemVkIGluIHRoYXQgY29udGV4dCBhbmQgd2hlcmUgc29ja21hcCBmaXRzIGluLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSBob3cgZGF0YSBpcyBiZWluZyBjb25zdHJ1Y3RlZCBvciBtb2RpZmllZCBiZWZvcmUgaXQncyB0cmFuc21pdHRlZCwgcG90ZW50aWFsbHkgbGV2ZXJhZ2luZyBzb2NrbWFwJ3MgY2FwYWJpbGl0aWVzIGZvciBkaXJlY3RpbmcgcGFja2V0cyBvciBhcHBseWluZyBjdXN0b20gbG9naWMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1MTcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNjowNToxOS44NjA4OTc3NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwNzI2MDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjcF9icGZfcmVidWlsZF9wcm90b3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdGNwX2JwZi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9icGYuYz02Mzg9c3RhdGljIHN0cnVjdCBwcm90byB0Y3BfYnBmX3Byb3RzW1RDUF9CUEZfTlVNX1BST1RTXVtUQ1BfQlBGX05VTV9DRkdTXTtcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjM5LVxcbm5ldC9pcHY0L3RjcF9icGYuYzo2NDA6c3RhdGljIHZvaWQgdGNwX2JwZl9yZWJ1aWxkX3Byb3RvcyhzdHJ1Y3QgcHJvdG8gcHJvdFtUQ1BfQlBGX05VTV9DRkdTXSxcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjQxLVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBwcm90byAqYmFzZSlcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYz02NjA9c3RhdGljIHZvaWQgdGNwX2JwZl9jaGVja192Nl9uZWVkc19yZWJ1aWxkKHN0cnVjdCBwcm90byAqb3BzKVxcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTY2NC1cXHRcXHRpZiAobGlrZWx5KG9wcyAhPSB0Y3B2Nl9wcm90X3NhdmVkKSkge1xcbm5ldC9pcHY0L3RjcF9icGYuYzo2NjU6XFx0XFx0XFx0dGNwX2JwZl9yZWJ1aWxkX3Byb3Rvcyh0Y3BfYnBmX3Byb3RzW1RDUF9CUEZfSVBWNl0sIG9wcyk7XFxubmV0L2lwdjQvdGNwX2JwZi5jLTY2Ni1cXHRcXHRcXHRzbXBfc3RvcmVfcmVsZWFzZShcXHUwMDI2dGNwdjZfcHJvdF9zYXZlZCwgb3BzKTtcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYz02NzI9c3RhdGljIGludCBfX2luaXQgdGNwX2JwZl92NF9idWlsZF9wcm90byh2b2lkKVxcbm5ldC9pcHY0L3RjcF9icGYuYy02NzMte1xcbm5ldC9pcHY0L3RjcF9icGYuYzo2NzQ6XFx0dGNwX2JwZl9yZWJ1aWxkX3Byb3Rvcyh0Y3BfYnBmX3Byb3RzW1RDUF9CUEZfSVBWNF0sIFxcdTAwMjZ0Y3BfcHJvdCk7XFxubmV0L2lwdjQvdGNwX2JwZi5jLTY3NS1cXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTY6MDU6MTkuOTcxNjMxOTczWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg2NDYyMTMxNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQlBGIFNvY2ttYXAgUGF0Y2ggZm9yIFRDUCBTb2NrZXRzKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhaW1lZCBhdCBmaXhpbmcgYSBidWcgcmVsYXRlZCB0byBgc2VuZG1zZ2AgaGFuZGxpbmcgZm9yIFRDUCBzb2NrZXRzIHRoYXQgYXJlIHBhcnQgb2YgYSBzb2NrbWFwLiBUaGUgY29yZSBvZiB0aGUgbG9naWMgaXMgaW4gYHRjcF9icGZfc2VuZF92ZXJkaWN0YCwgd2hpY2ggaXMgdGhlIGZ1bmN0aW9uIHRoYXQgZGVhbHMgd2l0aCB0aGUgdmVyZGljdCByZXR1cm5lZCBieSBhIEJQRiBwcm9ncmFtIGF0dGFjaGVkIHRvIHRoZSBzb2NrbWFwLiBUaGUga2V5IGNoYW5nZSBoZXJlIGlzIHRoZSBhZGRpdGlvbiBvZiBgc29ja19ob2xkKHNrX3JlZGlyKWAgYW5kIGBzb2NrX3B1dChza19yZWRpcilgIGNhbGxzIGFyb3VuZCBgc2tfbXNnX2FwcGx5X2J5dGVzYCBhbmQgYHRjcF9icGZfc2VuZG1zZ19yZWRpcmAuICBUaGlzIHN1Z2dlc3RzIHNvbWUgcmVmZXJlbmNlIGNvdW50aW5nIG9yIGxpZmV0aW1lIG1hbmFnZW1lbnQgaXNzdWUgdGhhdCdzIGJlaW5nIGFkZHJlc3NlZC4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgZml4LCBub3QganVzdCBhIHBlcmZvcm1hbmNlIHR3ZWFrLlxuXG5NeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGZ1enogdGhpcy4gIEdpdmVuIHRoZSBwb3RlbnRpYWwgZm9yIHN1YnRsZSByYWNlIGNvbmRpdGlvbnMgb3IgbWVtb3J5IGNvcnJ1cHRpb24gYnVncyBpbiBzb2NrZXQtbGV2ZWwgY29kZSwgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmFsaWRhdGUgdGhlIGZpeCdzIGNvcnJlY3RuZXNzIGFuZCByb2J1c3RuZXNzLlxuXG5MZXQncyBxdWlja2x5IHJldmlldyB0aGUgcmVsZXZhbnQgc3ltYm9sczogYHRjcF9icGZfc2VuZF92ZXJkaWN0YCwgYHRjcF9icGZfc2VuZG1zZ2AsIGFuZCBgdGNwX2JwZl9zZW5kbXNnX3JlZGlyYCDigJMgdGhvc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIHRvIGtlZXAgaW4gbWluZC5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBrZXJuZWwgY29uZmlncy4gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJpZ2h0IGZlYXR1cmVzIGFyZSBlbmFibGVkIGZvciB0aGUgcGF0Y2ggdG8gYmUgcmVsZXZhbnQuIFRoZSBvcmlnaW5hbCBub3RlcyBtZW50aW9uIGBCUEZfU1lTQ0FMTGAsIGBORVRfU09DS19NU0dgLCBhbmQgYEJQRl9TVFJFQU1fUEFSU0VSYC4gV2FpdCBhIG1pbnV0ZSwgYE5FVF9TT0NLX01TR2AgaXMgYSBoaWRkZW4gY29uZmlnOyB0aGF0IHNpbXBsaWZpZXMgdGhpbmdzLiAgSSBjYW4ganVzdCBlbmFibGUgYEJQRl9TWVNDQUxMYCBhbmQgYEJQRl9TVFJFQU1fUEFSU0VSYC4gIExldCdzIGRvdWJsZSBjaGVjayB0aGF0Li4uIFllcCwgYEJQRl9TWVNDQUxMYCBhdXRvbWF0aWNhbGx5IGJyaW5ncyBpbiBgTkVUX1NPQ0tfTVNHYCBhcyBsb25nIGFzIGBORVRgIGlzIGVuYWJsZWQsIGFuZCB3ZSdyZSBkZWZpbml0ZWx5IGluIHRoZSBuZXR3b3JraW5nIGNvZGUuIFNvLCBgQlBGX1NZU0NBTExgIGlzIHRoZSBtYWluIG9uZTsgYEJQRl9TVFJFQU1fUEFSU0VSYCBtaWdodCBwcm92aWRlIGFkZGl0aW9uYWwgY292ZXJhZ2UsIGJ1dCBgQlBGX1NZU0NBTExgIGlzIHRoZSBjcnVjaWFsIG9uZSB0byBmb2N1cyBvbi5cblxuT2theSwgdGltZSBmb3IgYSBtb3JlIHRob3JvdWdoIGNvZGUgcmV2aWV3IG9mIHRoZSBwYXRjaC4gTGV0J3MgbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy4gIFRoZSBgc29ja19ob2xkYCBhbmQgYHNvY2tfcHV0YCBhZGRpdGlvbnMgYXJlIGRlZmluaXRlbHkgdGhlcmUsIHN1cnJvdW5kaW5nIHRoZSBjb3JlIGxvZ2ljLiBEb3VibGUgY2hlY2sgdGhlIGNvbnRleHQuLi4geWVzLCB0aGF0IGxvb2tzIHJpZ2h0LiBJdCdzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IGp1c3QgYSBjb3NtZXRpYyBvbmUuICBUaGlzIHN0cmVuZ3RoZW5zIG15IGNvbnZpY3Rpb24gdGhhdCBpdCBzaG91bGQgYmUgZnV6emVkLlxuXG5SaWdodCwgSSdtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI0NywiT3V0cHV0VG9rZW5zIjoxNDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTY6MDU6MjguNjE3ODQ3NTU1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU1NzM2MTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX1NUUkVBTV9QQVJTRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfYnBmX3NlbmRfdmVyZGljdFwiLFxuICAgIFwidGNwX2JwZl9zZW5kbXNnXCIsXG4gICAgXCJ0Y3BfYnBmX3NlbmRtc2dfcmVkaXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZSBpbiBgdGNwX2JwZl9zZW5kX3ZlcmRpY3RgIGJ5IGhvbGRpbmcgYSByZWZlcmVuY2UgdG8gYHNrX3JlZGlyYCB3aGlsZSBpdCBpcyBiZWluZyB1c2VkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHNvY2ttYXAgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9TVFJFQU1fUEFSU0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX2JwZl9zZW5kX3ZlcmRpY3RcIixcbiAgICBcInRjcF9icGZfc2VuZG1zZ1wiLFxuICAgIFwidGNwX2JwZl9zZW5kbXNnX3JlZGlyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaXNzdWUgaW4gYHRjcF9icGZfc2VuZF92ZXJkaWN0YCBieSBob2xkaW5nIGEgcmVmZXJlbmNlIHRvIGBza19yZWRpcmAgd2hpbGUgaXQgaXMgYmVpbmcgdXNlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBzb2NrbWFwIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowrdz9z[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-19 15:34:10 +0000 UTC FinishedAt: 2026-07-19 16:05:30 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "94515f3a7d4256a5062176b7d6ed0471938cd51a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_STREAM_PARSER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "94515f3a7d4256a5062176b7d6ed0471938cd51a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL", "BPF_STREAM_PARSER" ], "series_id": "1902f7c7-ee6f-4357-b927-9b550c8d9afe" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "tcp_bpf_send_verdict", "tcp_bpf_sendmsg", "tcp_bpf_sendmsg_redir" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE2OjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9TVFJFQU1fUEFSU0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX2JwZl9zZW5kX3ZlcmRpY3QmIzM0OywKICAgICYjMzQ7dGNwX2JwZl9zZW5kbXNnJiMzNDssCiAgICAmIzM0O3RjcF9icGZfc2VuZG1zZ19yZWRpciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZSBpbiBgdGNwX2JwZl9zZW5kX3ZlcmRpY3RgIGJ5IGhvbGRpbmcgYSByZWZlcmVuY2UgdG8gYHNrX3JlZGlyYCB3aGlsZSBpdCBpcyBiZWluZyB1c2VkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHNvY2ttYXAgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTY6MDQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxZDIwYmE2MDdkZGYyMTkwNTI1MTAzZTIwM2I1MTI0NGVmYTRmN2RhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMTkgMTY6MDQ6NTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX2JwZi5jIGIvbmV0L2lwdjQvdGNwX2JwZi5jXG5pbmRleCA4ZTkwNWI1MGRlYWRiZS4uNjljYzhiYzMzYmNkMWMgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC90Y3BfYnBmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3RjcF9icGYuY1xuQEAgLTQ2OSw2ICYjNDM7NDY5LDcgQEAgc3RhdGljIGludCB0Y3BfYnBmX3NlbmRfdmVyZGljdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19wc29jayAqcHNvY2ssXG4gXHRjYXNlIF9fU0tfUkVESVJFQ1Q6XG4gXHRcdHJlZGlyX2luZ3Jlc3MgPSBwc29jay1cdTAwM2VyZWRpcl9pbmdyZXNzO1xuIFx0XHRza19yZWRpciA9IHBzb2NrLVx1MDAzZXNrX3JlZGlyO1xuJiM0MztcdFx0c29ja19ob2xkKHNrX3JlZGlyKTtcbiBcdFx0c2tfbXNnX2FwcGx5X2J5dGVzKHBzb2NrLCB0b3NlbmQpO1xuIFx0XHRpZiAoIXBzb2NrLVx1MDAzZWFwcGx5X2J5dGVzKSB7XG4gXHRcdFx0LyogQ2xlYW4gdXAgYmVmb3JlIHJlbGVhc2luZyB0aGUgc29jayBsb2NrLiAqL1xuQEAgLTQ4OSw2ICYjNDM7NDkwLDcgQEAgc3RhdGljIGludCB0Y3BfYnBmX3NlbmRfdmVyZGljdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19wc29jayAqcHNvY2ssXG4gXG4gXHRcdGlmIChldmFsID09IF9fU0tfUkVESVJFQ1QpXG4gXHRcdFx0c29ja19wdXQoc2tfcmVkaXIpO1xuJiM0MztcdFx0c29ja19wdXQoc2tfcmVkaXIpO1xuIFxuIFx0XHRsb2NrX3NvY2soc2spO1xuIFx0XHRza19tZW1fdW5jaGFyZ2Uoc2ssIHNlbnQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE2OjA0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDssCiAgICAmIzM0O0JQRl9TVFJFQU1fUEFSU0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dGNwX2JwZl9zZW5kX3ZlcmRpY3QmIzM0OywKICAgICYjMzQ7dGNwX2JwZl9zZW5kbXNnJiMzNDssCiAgICAmIzM0O3RjcF9icGZfc2VuZG1zZ19yZWRpciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZSBpbiBgdGNwX2JwZl9zZW5kX3ZlcmRpY3RgIGJ5IGhvbGRpbmcgYSByZWZlcmVuY2UgdG8gYHNrX3JlZGlyYCB3aGlsZSBpdCBpcyBiZWluZyB1c2VkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHNvY2ttYXAgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDFkMjBiYTYwN2RkZjIxOTA1MjUxMDNlMjAzYjUxMjQ0ZWZhNGY3ZGEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1bCAxOSAxNjowNDo1MCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9icGYuYyBiL25ldC9pcHY0L3RjcF9icGYuYwppbmRleCA4ZTkwNWI1MGRlYWRiZS4uNjljYzhiYzMzYmNkMWMgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3RjcF9icGYuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC90Y3BfYnBmLmMKQEAgLTQ2OSw2ICYjNDM7NDY5LDcgQEAgc3RhdGljIGludCB0Y3BfYnBmX3NlbmRfdmVyZGljdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19wc29jayAqcHNvY2ssCiAJY2FzZSBfX1NLX1JFRElSRUNUOgogCQlyZWRpcl9pbmdyZXNzID0gcHNvY2stJmd0O3JlZGlyX2luZ3Jlc3M7CiAJCXNrX3JlZGlyID0gcHNvY2stJmd0O3NrX3JlZGlyOwomIzQzOwkJc29ja19ob2xkKHNrX3JlZGlyKTsKIAkJc2tfbXNnX2FwcGx5X2J5dGVzKHBzb2NrLCB0b3NlbmQpOwogCQlpZiAoIXBzb2NrLSZndDthcHBseV9ieXRlcykgewogCQkJLyogQ2xlYW4gdXAgYmVmb3JlIHJlbGVhc2luZyB0aGUgc29jayBsb2NrLiAqLwpAQCAtNDg5LDYgJiM0Mzs0OTAsNyBAQCBzdGF0aWMgaW50IHRjcF9icGZfc2VuZF92ZXJkaWN0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX3Bzb2NrICpwc29jaywKIAogCQlpZiAoZXZhbCA9PSBfX1NLX1JFRElSRUNUKQogCQkJc29ja19wdXQoc2tfcmVkaXIpOwomIzQzOwkJc29ja19wdXQoc2tfcmVkaXIpOwogCiAJCWxvY2tfc29jayhzayk7CiAJCXNrX21lbV91bmNoYXJnZShzaywgc2VudCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE2OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NDgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVENQIEJQRiBQYXRjaCoqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBhIHBhdGNoIHN1Ym1pdHRlZCB0byBgbmV0L2lwdjQvdGNwX2JwZi5jYC4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCB0aGUgYHRjcF9icGZfc2VuZF92ZXJkaWN0YCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBhZGRpbmcgYHNvY2tfaG9sZChza19yZWRpcilgIGFuZCBgc29ja19wdXQoc2tfcmVkaXIpYC4gSW1tZWRpYXRlbHksIEkgcmVjb2duaXplIHRoaXMgYXMgYSBsaWtlbHkgZml4IGZvciBhIG1lbW9yeSBtYW5hZ2VtZW50IGlzc3VlIOKAkyBwcm9iYWJseSBhIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvIG9yIHNvbWV0aGluZyBzaW1pbGFyIHJlbGF0ZWQgdG8gdGhhdCBgc2tfcmVkaXJgIHNvY2tldCBwb2ludGVyLiBUaGUgY29kZSBjb21tZW50cyBhcmVuJiMzOTt0IGV4cGxpY2l0bHkgc3RhdGluZyB0aGUgaXNzdWUsIGJ1dCB0aGVzZSBob2xkL3B1dCBvcGVyYXRpb25zIGFyZSByZWQgZmxhZ3MgdGhhdCBhcmUgbGlrZWx5IHJlbGF0ZWQgdG8gdHJhY2tpbmcgdXNhZ2UuCgpHaXZlbiB0aGF0IGl0JiMzOTtzIGluIGEgY3JpdGljYWwgZnVuY3Rpb24gbGlrZSB0aGlzLCBJIG5lZWQgdG8gdGhvcm91Z2hseSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIGB0Y3BfYnBmX3NlbmRfdmVyZGljdGAuIEkmIzM5O2xsIGhhdmUgdG8gZGVsdmUgaW50byB0aGUgZnVuY3Rpb24mIzM5O3MgbG9naWMgYW5kIHRyYWNlIHRoZSB1c2FnZSBvZiBgc2tfcmVkaXJgIHRvIHNlZSB3aGVyZSB0aGUgcG90ZW50aWFsIHJhY2Ugb3IgbWVtb3J5IGNvcnJ1cHRpb24gY291bGQgb2NjdXIuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoZW4gYHNrX3JlZGlyYCBpcyBiZWluZyBhc3NpZ25lZCwgd2hlbiBpdCBtaWdodCBiZSBhY2Nlc3NlZCBhZnRlciBiZWluZyBmcmVlZCwgYW5kIGhvdyB0aGVzZSBgc29ja19ob2xkYCBhbmQgYHNvY2tfcHV0YCBjYWxscyBhcmUgbWVhbnQgdG8gcmVtZWR5IHRoZSBwcm9ibGVtLiBVbmRlcnN0YW5kaW5nIHRoZSBwcmVjaXNlIGNhbGwgcGF0aCBhbmQgZGF0YSBmbG93IGlzIGVzc2VudGlhbCB0byB2ZXJpZnlpbmcgdGhlIGZpeCYjMzk7cyBjb3JyZWN0bmVzcyBhbmQgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IGNvbmN1cnJlbnQgYWNjZXNzIHNjZW5hcmlvcyBhbmQgaG93IHRoaXMgcGF0Y2ggYWZmZWN0cyB0aGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE2OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjcF9icGZfc2VuZF92ZXJkaWN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2JwZi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9icGYuYz0zNjg9c3RhdGljIGludCB0Y3BfYnBmX3JlY3Ztc2coc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBsZW4sXG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTQxNy1cbm5ldC9pcHY0L3RjcF9icGYuYzo0MTg6c3RhdGljIGludCB0Y3BfYnBmX3NlbmRfdmVyZGljdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19wc29jayAqcHNvY2ssXG5uZXQvaXB2NC90Y3BfYnBmLmMtNDE5LVx0XHRcdFx0c3RydWN0IHNrX21zZyAqbXNnLCBpbnQgKmNvcGllZCwgaW50IGZsYWdzKVxuLS1cbm5ldC9pcHY0L3RjcF9icGYuYz01MzQ9c3RhdGljIGludCB0Y3BfYnBmX3NlbmRtc2coc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKVxuLS1cbm5ldC9pcHY0L3RjcF9icGYuYy01OTktXG5uZXQvaXB2NC90Y3BfYnBmLmM6NjAwOlx0XHRlcnIgPSB0Y3BfYnBmX3NlbmRfdmVyZGljdChzaywgcHNvY2ssIG1zZ190eCwgXHUwMDI2Y29waWVkLCBmbGFncyk7XG5uZXQvaXB2NC90Y3BfYnBmLmMtNjAxLVx0XHRpZiAodW5saWtlbHkoZXJyIFx1MDAzYyAwKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNjowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjg0CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgdGhlIGB0Y3BfYnBmX3NlbmRfdmVyZGljdGAgUGF0aCoqCgpSaWdodCwgc28gYHRjcF9icGZfc2VuZF92ZXJkaWN0YCBpcyBiZWluZyBjYWxsZWQgZnJvbSB3aXRoaW4gYHRjcF9icGZfc2VuZG1zZ2AuIEhtbSwgdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBhdGggaW4gYHRjcF9icGYuY2AuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBjYXN1YWwgZ2xhbmNlOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGljaCBmZWF0dXJlcyBhbmQgZGVwZW5kZW5jaWVzIG5lZWQgdG8gYmUgZW5hYmxlZCBhdCBjb21waWxlIHRpbWUgdG8gbWFrZSB0aGlzIHBhcnRpY3VsYXIgZmxvdyBvcGVyYXRpb25hbC4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSB0cmFjaW5nIHRoZSBjYWxsIGNoYWluLCBjaGVja2luZyB0aGUgY29uZmlnIHN5bWJvbHMgaW52b2x2ZWQsIGFuZCBtYWtpbmcgc3VyZSBJIGhhdmUgYSBnb29kIGdyYXNwIG9mIHRoZSBjb250cm9sIGZsb3cgd2l0aGluIGB0Y3BfYnBmLmNgIGFuZCBpdHMgZGVwZW5kZW5jaWVzLiBNeSB1bHRpbWF0ZSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIHZlcmRpY3QgcGF0aCBmb3Iga2VybmVsIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTY6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwX2JwZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L01ha2VmaWxlPTYyPW9iai0kKENPTkZJR19UQ1BfQ09OR19JTExJTk9JUykgJiM0Mzs9IHRjcF9pbGxpbm9pcy5vXG5uZXQvaXB2NC9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfTkVUX1NPQ0tfTVNHKSAmIzQzOz0gdGNwX2JwZi5vXG5uZXQvaXB2NC9NYWtlZmlsZS02NC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSB1ZHBfYnBmLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNjowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDQ3CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgcGVyc3BlY3RpdmU6CgoqKkRlYnVnZ2luZyBOZXR3b3JrIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyBJJiMzOTt2ZSBnb3QgdG8gc29ydCBvdXQgaXMgdGhpcyBgQ09ORklHX05FVF9TT0NLX01TR2AgZGVwZW5kZW5jeS4gU2VlbXMgbGlrZSBpdCYjMzk7cyBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBwdXp6bGUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZnVuY3Rpb25hbGl0eSByZWxpZXMgb24gaXQgYW5kIGlmIEkgbmVlZCB0byBlbmFibGUgb3IgdHdlYWsgaXQuCgpCZWZvcmUgSSBjb21taXQgdG8gYW55dGhpbmcsIEkgd2FudCB0byB0YWtlIGEgbW9yZSBob2xpc3RpYyB2aWV3LiBJIHNob3VsZCBwcm9iYWJseSBzY2FuIHRoZSBicm9hZGVyIGNvbmZpZ3VyYXRpb24gc3BhY2UuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlICpvdGhlciogbmV0d29yayBjb25maWd1cmF0aW9ucyB0aGF0IHRoaXMgb25lIGRlcGVuZHMgb24sIG9yIHRoYXQgZGVwZW5kIG9uICppdCouIFBlcmhhcHMgdGhlcmUmIzM5O3Mgc29tZSBicm9hZGVyIGNvbnRleHQgb3IgcmVsYXRlZCBzZXR0aW5ncyBJIHNob3VsZCBiZSBhd2FyZSBvZiBiZWZvcmUgbWFraW5nIGFueSBjaGFuZ2VzLiBUaGlzIGlzIHN0YW5kYXJkIG9wZXJhdGluZyBwcm9jZWR1cmUsIHJlYWxseTsgSSBjYW4mIzM5O3QganVzdCByZWFjdCB0byBvbmUgZmxhZyB3aXRob3V0IHVuZGVyc3RhbmRpbmcgdGhlIGJpZ2dlciBwaWN0dXJlLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29uZmlnIGZpbGVzIGFuZCBzZWUgd2hhdCYjMzk7cyBjb25uZWN0ZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgYnJlYWtpbmcgYW55dGhpbmcgZG93bnN0cmVhbSBvciBzZXR0aW5nIG9mZiBhbnkgdW5pbnRlbmRlZCBjb25zZXF1ZW5jZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTY6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkVUX1NPQ0tfTVNHJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9MzYxPWNvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUlxuLS1cbm5ldC9LY29uZmlnLTM2Ni1cdHNlbGVjdCBTVFJFQU1fUEFSU0VSXG5uZXQvS2NvbmZpZzozNjc6XHRzZWxlY3QgTkVUX1NPQ0tfTVNHXG5uZXQvS2NvbmZpZy0zNjgtXHRoZWxwXG4tLVxubmV0L0tjb25maWc9NDc1PWNvbmZpZyBORVRfU0VMRlRFU1RTXG4tLVxubmV0L0tjb25maWctNDc4LVxubmV0L0tjb25maWc6NDc5OmNvbmZpZyBORVRfU09DS19NU0dcbm5ldC9LY29uZmlnLTQ4MC1cdGJvb2xcbi0tXG5uZXQvS2NvbmZpZy00ODItXHRoZWxwXG5uZXQvS2NvbmZpZzo0ODM6XHQgIFRoZSBORVRfU09DS19NU0cgcHJvdmlkZXMgYSBmcmFtZXdvcmsgZm9yIHBsYWluIHNvY2tldHMgKGUuZy4gVENQKSBvclxubmV0L0tjb25maWctNDg0LVx0ICBVTFBzICh1cHBlciBsYXllciBtb2R1bGVzLCBlLmcuIFRMUykgdG8gcHJvY2VzcyBMNyBhcHBsaWNhdGlvbiBkYXRhXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTY6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUyMwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSB0aG91Z2h0IHByb2Nlc3MgdW5mb2xkczoKCioqRGlnZ2luZyBpbnRvIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGVuY291bnRlcmluZyB0aGlzIGBORVRfU09DS19NU0dgIHNldHRpbmcsIGFuZCBpdCBzZWVtcyB0byBiZSBpbnRlcnR3aW5lZCB3aXRoIGBCUEZfU1RSRUFNX1BBUlNFUmAuIEkga25vdyBgTkVUX1NPQ0tfTVNHYCBpcyBoaWRkZW4gd2hpY2ggc3VnZ2VzdHMgaXQmIzM5O3MgbGlrZWx5IGEgc3VwcG9ydGluZyBjb25maWd1cmF0aW9uIG9wdGlvbi4gTXkgaW5zdGluY3QgaXMgdGhhdCB0aGlzIHJlbGF0aW9uc2hpcCBpcyBkcml2ZW4gYnkgdGhlIGBCUEZfU1RSRUFNX1BBUlNFUmAgY29uZmlndXJhdGlvbi4gVGhpcyBzb3VuZHMgbGlrZSBpdCBtaWdodCBiZSBrZXkgdG8gZW5hYmxpbmcgc29tZSBhZHZhbmNlZCBCUEYgc3RyZWFtIHByb2Nlc3NpbmcuCgpJIG5lZWQgdG8gc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aCBgQlBGX1NUUkVBTV9QQVJTRVJgLiBUaGUga2VybmVsIGNvbmZpZyBzeXN0ZW0gaXMgdGhlIHBsYWNlIHRvIHN0YXJ0LCBzbyBJJiMzOTtsbCBnbyBjaGVjayB0aGUgYG5ldC9LY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSBkZWZpbml0aXZlIHNvdXJjZSB0byBzZWUgaG93IHRoZXNlIG9wdGlvbnMgYXJlIGRlZmluZWQgYW5kIHJlbGF0ZWQuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgc29tZSBkZXBlbmRlbmNpZXMgb3IgZGVmYXVsdHMgdGhhdCBleHBsYWluIHdoeSBgTkVUX1NPQ0tfTVNHYCBnZXRzIHB1bGxlZCBpbiB3aGVuIGBCUEZfU1RSRUFNX1BBUlNFUmAgaXMgc2VsZWN0ZWQuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgS2NvbmZpZyBzYXlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNjowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCUEZfU1RSRUFNX1BBUlNFUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnPTM1ND1jb25maWcgQlFMXG4tLVxubmV0L0tjb25maWctMzYwLVxubmV0L0tjb25maWc6MzYxOmNvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUlxubmV0L0tjb25maWctMzYyLVx0Ym9vbCBcJiMzNDtlbmFibGUgQlBGIFNUUkVBTV9QQVJTRVJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTY6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg5NQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIEJQRiBTdHJlYW0gUGFyc2VyIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgc28gSSBuZWVkIHRvIGVuYWJsZSBgQlBGX1NUUkVBTV9QQVJTRVJgLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgdGhpcyBmZWF0dXJlLCBvYnZpb3VzbHkuIEJ1dCBob2xkIG9uIGEgc2Vjb25k4oCmIGl0IGxvb2tzIGxpa2UgYE5FVF9TT0NLX01TR2AgaXMgYWxzbyBnZXR0aW5nIHB1bGxlZCBpbiBieSBgQ0dST1VQX0JQRmA/IEkgbmVlZCB0byBjb25maXJtIHRoYXQgcmVsYXRpb25zaGlwLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGF0IGRlcGVuZGVuY3kgZXhpc3RzIGFuZCB3aGF0IGltcGxpY2F0aW9ucyBpdCBtaWdodCBoYXZlIGZvciB0aGUgY29uZmlndXJhdGlvbiBhbmQgb3BlcmF0aW9uIG9mIHRoZSBzdHJlYW0gcGFyc2VyIGluIGRpZmZlcmVudCBjZ3JvdXAgY29udGV4dHMuIEkmIzM5O2xsIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgS2NvbmZpZyBkZXBlbmRlbmNpZXMgdG8gY2xhcmlmeSB0aGlzLiBHb3R0YSBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBjcml0aWNhbCBpbiB0aGUgc2V0dXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE2OjA1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05FVF9TT0NLX01TRyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3NrYnVmZi5oPTg4Nj1zdHJ1Y3Qgc2tfYnVmZiB7XG4tLVxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC05MjYtXHRcdHN0cnVjdCBsaXN0X2hlYWRcdHRjcF90c29ydGVkX2FuY2hvcjtcbmluY2x1ZGUvbGludXgvc2tidWZmLmg6OTI3OiNpZmRlZiBDT05GSUdfTkVUX1NPQ0tfTVNHXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oLTkyOC1cdFx0dW5zaWduZWQgbG9uZ1x0XHRfc2tfcmVkaXI7XG4tLVxuaW5jbHVkZS9saW51eC9za21zZy5oPTU1NT1zdGF0aWMgaW5saW5lIHNzaXplX3Qgc2tfbXNnX2ZpcnN0X2xlbihzdHJ1Y3Qgc29jayAqc2spXG4tLVxuaW5jbHVkZS9saW51eC9za21zZy5oLTU3Mi1cbmluY2x1ZGUvbGludXgvc2ttc2cuaDo1NzM6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9TT0NLX01TRylcbmluY2x1ZGUvbGludXgvc2ttc2cuaC01NzQtXG4tLVxuaW5jbHVkZS9saW51eC9za21zZy5oPTYxOT1zdGF0aWMgaW5saW5lIHZvaWQgc2tiX2JwZl9yZWRpcmVjdF9jbGVhcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmluY2x1ZGUvbGludXgvc2ttc2cuaC02MjItfVxuaW5jbHVkZS9saW51eC9za21zZy5oOjYyMzojZW5kaWYgLyogQ09ORklHX05FVF9TT0NLX01TRyAqL1xuaW5jbHVkZS9saW51eC9za21zZy5oLTYyNC0jZW5kaWYgLyogX0xJTlVYX1NLTVNHX0ggKi9cbi0tXG5pbmNsdWRlL25ldC90Y3AuaD0yODI3PXZvaWQgdGNwX3VwZGF0ZV91bHAoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcHJvdG8gKnAsXG4tLVxuaW5jbHVkZS9uZXQvdGNwLmgtMjgzMy1cbmluY2x1ZGUvbmV0L3RjcC5oOjI4MzQ6I2lmZGVmIENPTkZJR19ORVRfU09DS19NU0dcbmluY2x1ZGUvbmV0L3RjcC5oLTI4MzUtc3RydWN0IHNrX21zZztcbi0tXG5pbmNsdWRlL25ldC90Y3AuaD0yODU2PWludCB0Y3BfYnBmX3NlbmRtc2dfcmVkaXIoc3RydWN0IHNvY2sgKnNrLCBib29sIGluZ3Jlc3MsXG5pbmNsdWRlL25ldC90Y3AuaC0yODU3LVx0XHRcdCAgc3RydWN0IHNrX21zZyAqbXNnLCB1MzIgYnl0ZXMsIGludCBmbGFncyk7XG5pbmNsdWRlL25ldC90Y3AuaDoyODU4OiNlbmRpZiAvKiBDT05GSUdfTkVUX1NPQ0tfTVNHICovXG5pbmNsdWRlL25ldC90Y3AuaC0yODU5LVxuaW5jbHVkZS9uZXQvdGNwLmg6Mjg2MDojaWYgIWRlZmluZWQoQ09ORklHX0JQRl9TWVNDQUxMKSB8fCAhZGVmaW5lZChDT05GSUdfTkVUX1NPQ0tfTVNHKVxuaW5jbHVkZS9uZXQvdGNwLmgtMjg2MS1zdGF0aWMgaW5saW5lIHZvaWQgdGNwX2JwZl9jbG9uZShjb25zdCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrICpuZXdzaylcbi0tXG5rZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXG4tLVxua2VybmVsL2JwZi9LY29uZmlnLTMzLVx0c2VsZWN0IEJJTkFSWV9QUklOVEZcbmtlcm5lbC9icGYvS2NvbmZpZzozNDpcdHNlbGVjdCBORVRfU09DS19NU0cgaWYgTkVUXG5rZXJuZWwvYnBmL0tjb25maWctMzUtXHRzZWxlY3QgTkVUX1hHUkVTUyBpZiBORVRcbi0tXG5uZXQvS2NvbmZpZz0zNjE9Y29uZmlnIEJQRl9TVFJFQU1fUEFSU0VSXG4tLVxubmV0L0tjb25maWctMzY2LVx0c2VsZWN0IFNUUkVBTV9QQVJTRVJcbm5ldC9LY29uZmlnOjM2NzpcdHNlbGVjdCBORVRfU09DS19NU0dcbm5ldC9LY29uZmlnLTM2OC1cdGhlbHBcbi0tXG5uZXQvS2NvbmZpZz00NzU9Y29uZmlnIE5FVF9TRUxGVEVTVFNcbi0tXG5uZXQvS2NvbmZpZy00NzgtXG5uZXQvS2NvbmZpZzo0Nzk6Y29uZmlnIE5FVF9TT0NLX01TR1xubmV0L0tjb25maWctNDgwLVx0Ym9vbFxuLS1cbm5ldC9LY29uZmlnLTQ4Mi1cdGhlbHBcbm5ldC9LY29uZmlnOjQ4MzpcdCAgVGhlIE5FVF9TT0NLX01TRyBwcm92aWRlcyBhIGZyYW1ld29yayBmb3IgcGxhaW4gc29ja2V0cyAoZS5nLiBUQ1ApIG9yXG5uZXQvS2NvbmZpZy00ODQtXHQgIFVMUHMgKHVwcGVyIGxheWVyIG1vZHVsZXMsIGUuZy4gVExTKSB0byBwcm9jZXNzIEw3IGFwcGxpY2F0aW9uIGRhdGFcbi0tXG5uZXQvY29yZS9NYWtlZmlsZT00Mz1vYmotJChDT05GSUdfRkFJTE9WRVIpICYjNDM7PSBmYWlsb3Zlci5vXG5uZXQvY29yZS9NYWtlZmlsZTo0NDpvYmotJChDT05GSUdfTkVUX1NPQ0tfTVNHKSAmIzQzOz0gc2ttc2cub1xubmV0L2NvcmUvTWFrZWZpbGUtNDUtb2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gc29ja19tYXAub1xuLS1cbm5ldC9pcHY0L0tjb25maWc9MzgyPWNvbmZpZyBJTkVUX0VTUElOVENQXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zODUtXHRzZWxlY3QgU1RSRUFNX1BBUlNFUlxubmV0L2lwdjQvS2NvbmZpZzozODY6XHRzZWxlY3QgTkVUX1NPQ0tfTVNHXG5uZXQvaXB2NC9LY29uZmlnLTM4Ny1cdHNlbGVjdCBYRlJNX0VTUElOVENQXG4tLVxubmV0L2lwdjQvTWFrZWZpbGU9NjI9b2JqLSQoQ09ORklHX1RDUF9DT05HX0lMTElOT0lTKSAmIzQzOz0gdGNwX2lsbGlub2lzLm9cbm5ldC9pcHY0L01ha2VmaWxlOjYzOm9iai0kKENPTkZJR19ORVRfU09DS19NU0cpICYjNDM7PSB0Y3BfYnBmLm9cbm5ldC9pcHY0L01ha2VmaWxlLTY0LW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgJiM0Mzs9IHVkcF9icGYub1xuLS1cbm5ldC9pcHY2L0tjb25maWc9OTA9Y29uZmlnIElORVQ2X0VTUElOVENQXG4tLVxubmV0L2lwdjYvS2NvbmZpZy05My1cdHNlbGVjdCBTVFJFQU1fUEFSU0VSXG5uZXQvaXB2Ni9LY29uZmlnOjk0Olx0c2VsZWN0IE5FVF9TT0NLX01TR1xubmV0L2lwdjYvS2NvbmZpZy05NS1cdHNlbGVjdCBYRlJNX0VTUElOVENQXG4tLVxubmV0L3Rscy9LY29uZmlnPTU9Y29uZmlnIFRMU1xuLS1cbm5ldC90bHMvS2NvbmZpZy0xMC1cdHNlbGVjdCBDUllQVE9fR0NNXG5uZXQvdGxzL0tjb25maWc6MTE6XHRzZWxlY3QgTkVUX1NPQ0tfTVNHXG5uZXQvdGxzL0tjb25maWctMTItXHRkZWZhdWx0IG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTY6MDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM3OQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIGZvciBOZXR3b3JrIFNvY2tldCBNZXNzYWdlIEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYE5FVF9TT0NLX01TR2AgZmVhdHVyZSwgYW5kIGl0IGxvb2tzIGxpa2UgYEJQRl9TWVNDQUxMYCBnZXRzIGNob3NlbiB3aGVuIHRoZSBgTkVUYCBvcHRpb24gaXMgZW5hYmxlZCwgd2hpY2ggaXMgdGhlIGtleSBoZXJlLiBTbywgYEJQRl9TWVNDQUxMYCBhbG9uZSAqc2hvdWxkKiBiZSBzdWZmaWNpZW50LCBlc3BlY2lhbGx5IHNpbmNlIGl0JiMzOTtzIGRlZmluaXRlbHkgZW5hYmxlZCB3aXRoaW4gU3l6a2FsbGVyLiBIb3dldmVyLCBJJiMzOTttIHRoaW5raW5nLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBhbmQgY292ZXIgYWxsIGJhc2VzLCBpdCBtaWdodCBiZSBwcnVkZW50IHRvIGFsc28gc3BlY2lmeSBgQlBGX1NUUkVBTV9QQVJTRVJgIGFuZCBgVExTYCBpbiB0aGUgY29uZmlndXJhdGlvbiBhcyB3ZWxsLCBhcyBhIGtpbmQgb2YgZGVmZW5zaXZlIHByb2dyYW1taW5nLiBCdXQgaG9sZCBvbiwgdGhlIGNvcmUgZWxlbWVudCBpcyBpbmRlZWQgYEJQRl9TWVNDQUxMYCB3aGljaCBpcyBhIG1vcmUgZ2VuZXJpYyBjb25maWd1cmF0aW9uLiBUaGVyZWZvcmUsIGFzIEkgdGhpbmsgaXQgdGhyb3VnaCwgSSBzZWUgSSBkb24mIzM5O3QgbmVlZCB0byBzcGVjaWZ5IGBCUEZfU1lTQ0FMTGAsIGJ1dCBJIHdpbGwgYWRkIGBCUEZfU1RSRUFNX1BBUlNFUmAgYW5kIGBUTFNgIGZvciBwZWFjZSBvZiBtaW5kLgoKVGhlIGNyaXRpY2FsIGNoYW5nZSBzZWVtcyB0byBiZSB3aXRoaW4gYHRjcF9icGZfc2VuZF92ZXJkaWN0YC4gUmlnaHQsIGxldCYjMzk7cyBnbyBhbmQgY2hlY2sgb3V0IHdoYXQgZXhhY3RseSBgdGNwX2JwZl9zZW5kX3ZlcmRpY3RgIGRvZXMsIGFuZCBpdHMgaW1wbGljYXRpb25zIGhlcmUuIEFoLCByaWdodCwgaXQmIzM5O3MgY2FsbGVkIGZyb20gYHRjcF9icGZfc2VuZG1zZ2AgYW5kLCBpZiBpdCBleGlzdHMsIGB0Y3BfYnBmX3NlbmRwYWdlYC4gTm93LCBsZXQgbWUgdGFrZSBhIGxvb2sgYXQgYHRjcF9icGZfc2VuZG1zZ2AgdG8gZ2V0IHRoZSB3aG9sZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNjowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y3BfYnBmX3NlbmRtc2cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfYnBmLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdGNwX2JwZi5jPTE1Mz1zdGF0aWMgaW50IHRjcF9icGZfcHVzaF9sb2NrZWQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfbXNnICptc2csXG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTE2My1cbm5ldC9pcHY0L3RjcF9icGYuYzoxNjQ6aW50IHRjcF9icGZfc2VuZG1zZ19yZWRpcihzdHJ1Y3Qgc29jayAqc2ssIGJvb2wgaW5ncmVzcyxcbm5ldC9pcHY0L3RjcF9icGYuYy0xNjUtXHRcdFx0ICBzdHJ1Y3Qgc2tfbXNnICptc2csIHUzMiBieXRlcywgaW50IGZsYWdzKVxuLS1cbm5ldC9pcHY0L3RjcF9icGYuYy0xNzctfVxubmV0L2lwdjQvdGNwX2JwZi5jOjE3ODpFWFBPUlRfU1lNQk9MX0dQTCh0Y3BfYnBmX3NlbmRtc2dfcmVkaXIpO1xubmV0L2lwdjQvdGNwX2JwZi5jLTE3OS1cbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmM9NDE4PXN0YXRpYyBpbnQgdGNwX2JwZl9zZW5kX3ZlcmRpY3Qoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrLFxuLS1cbm5ldC9pcHY0L3RjcF9icGYuYy00ODYtXHRcdG9yaWdzaXplID0gbXNnLVx1MDAzZXNnLnNpemU7XG5uZXQvaXB2NC90Y3BfYnBmLmM6NDg3Olx0XHRyZXQgPSB0Y3BfYnBmX3NlbmRtc2dfcmVkaXIoc2tfcmVkaXIsIHJlZGlyX2luZ3Jlc3MsXG5uZXQvaXB2NC90Y3BfYnBmLmMtNDg4LVx0XHRcdFx0XHQgICAgbXNnLCB0b3NlbmQsIGZsYWdzKTtcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmMtNTMzLVxubmV0L2lwdjQvdGNwX2JwZi5jOjUzNDpzdGF0aWMgaW50IHRjcF9icGZfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUpXG5uZXQvaXB2NC90Y3BfYnBmLmMtNTM1LXtcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmM9NjQwPXN0YXRpYyB2b2lkIHRjcF9icGZfcmVidWlsZF9wcm90b3Moc3RydWN0IHByb3RvIHByb3RbVENQX0JQRl9OVU1fQ0ZHU10sXG4tLVxubmV0L2lwdjQvdGNwX2JwZi5jLTY1MC1cdHByb3RbVENQX0JQRl9UWF1cdFx0XHQ9IHByb3RbVENQX0JQRl9CQVNFXTtcbm5ldC9pcHY0L3RjcF9icGYuYzo2NTE6XHRwcm90W1RDUF9CUEZfVFhdLnNlbmRtc2dcdFx0PSB0Y3BfYnBmX3NlbmRtc2c7XG5uZXQvaXB2NC90Y3BfYnBmLmMtNjUyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNjowNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTE3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2Ygd2hhdCBJJiMzOTttIHNlZWluZzoKCioqQW5hbHl6aW5nIGB0Y3BfYnBmX3NlbmRtc2dgIGFuZCBpdHMgQ29ubmVjdGlvbiB0byBgc29ja21hcGAqKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiBgdGNwX2JwZl9zZW5kbXNnYCByaWdodCBub3cuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQgd2l0aGluIGB0Y3BfYnBmX3JlYnVpbGRfcHJvdG9zYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYXMgSSBrbm93IHRoYXQgYHNvY2ttYXBgIGlzIG9mdGVuIGludm9sdmVkIGluIHRoZXNlIGtpbmRzIG9mIGxvdy1sZXZlbCBuZXR3b3JrIG9wZXJhdGlvbnMuIE15IGV4cGVydGlzZSB0ZWxscyBtZSB0aGF0IHRoaXMgY29tYmluYXRpb24gbGlrZWx5IGluZGljYXRlcyBzb21lIGZvcm0gb2YgQlBGLWJhc2VkIHBhY2tldCBtYW5pcHVsYXRpb24gb3Igc3RhdGUgbWFuYWdlbWVudCB3aXRoaW4gdGhlIFRDUCBzdGFjaywgcGFydGljdWxhcmx5IGNvbmNlcm5pbmcgc29ja21hcC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCwgc28gSSYjMzk7bGwgZGl2ZSBpbnRvIGB0Y3BfYnBmX3JlYnVpbGRfcHJvdG9zYCBuZXh0IHRvIHNlZSBob3cgYHRjcF9icGZfc2VuZG1zZ2AgaXMgdXRpbGl6ZWQgaW4gdGhhdCBjb250ZXh0IGFuZCB3aGVyZSBzb2NrbWFwIGZpdHMgaW4uIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSBob3cgZGF0YSBpcyBiZWluZyBjb25zdHJ1Y3RlZCBvciBtb2RpZmllZCBiZWZvcmUgaXQmIzM5O3MgdHJhbnNtaXR0ZWQsIHBvdGVudGlhbGx5IGxldmVyYWdpbmcgc29ja21hcCYjMzk7cyBjYXBhYmlsaXRpZXMgZm9yIGRpcmVjdGluZyBwYWNrZXRzIG9yIGFwcGx5aW5nIGN1c3RvbSBsb2dpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTkgMTY6MDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGNwX2JwZl9yZWJ1aWxkX3Byb3RvcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3RjcF9icGYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC90Y3BfYnBmLmM9NjM4PXN0YXRpYyBzdHJ1Y3QgcHJvdG8gdGNwX2JwZl9wcm90c1tUQ1BfQlBGX05VTV9QUk9UU11bVENQX0JQRl9OVU1fQ0ZHU107XG5uZXQvaXB2NC90Y3BfYnBmLmMtNjM5LVxubmV0L2lwdjQvdGNwX2JwZi5jOjY0MDpzdGF0aWMgdm9pZCB0Y3BfYnBmX3JlYnVpbGRfcHJvdG9zKHN0cnVjdCBwcm90byBwcm90W1RDUF9CUEZfTlVNX0NGR1NdLFxubmV0L2lwdjQvdGNwX2JwZi5jLTY0MS1cdFx0XHRcdCAgIHN0cnVjdCBwcm90byAqYmFzZSlcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmM9NjYwPXN0YXRpYyB2b2lkIHRjcF9icGZfY2hlY2tfdjZfbmVlZHNfcmVidWlsZChzdHJ1Y3QgcHJvdG8gKm9wcylcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjY0LVx0XHRpZiAobGlrZWx5KG9wcyAhPSB0Y3B2Nl9wcm90X3NhdmVkKSkge1xubmV0L2lwdjQvdGNwX2JwZi5jOjY2NTpcdFx0XHR0Y3BfYnBmX3JlYnVpbGRfcHJvdG9zKHRjcF9icGZfcHJvdHNbVENQX0JQRl9JUFY2XSwgb3BzKTtcbm5ldC9pcHY0L3RjcF9icGYuYy02NjYtXHRcdFx0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2dGNwdjZfcHJvdF9zYXZlZCwgb3BzKTtcbi0tXG5uZXQvaXB2NC90Y3BfYnBmLmM9NjcyPXN0YXRpYyBpbnQgX19pbml0IHRjcF9icGZfdjRfYnVpbGRfcHJvdG8odm9pZClcbm5ldC9pcHY0L3RjcF9icGYuYy02NzMte1xubmV0L2lwdjQvdGNwX2JwZi5jOjY3NDpcdHRjcF9icGZfcmVidWlsZF9wcm90b3ModGNwX2JwZl9wcm90c1tUQ1BfQlBGX0lQVjRdLCBcdTAwMjZ0Y3BfcHJvdCk7XG5uZXQvaXB2NC90Y3BfYnBmLmMtNjc1LVx0cmV0dXJuIDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE5IDE2OjA1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyNDcKCQkJCQkJCW91dHB1dDogMTQ3CgkJCQkJCQl0aG91Z2h0czogNTYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJQRiBTb2NrbWFwIFBhdGNoIGZvciBUQ1AgU29ja2V0cyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFpbWVkIGF0IGZpeGluZyBhIGJ1ZyByZWxhdGVkIHRvIGBzZW5kbXNnYCBoYW5kbGluZyBmb3IgVENQIHNvY2tldHMgdGhhdCBhcmUgcGFydCBvZiBhIHNvY2ttYXAuIFRoZSBjb3JlIG9mIHRoZSBsb2dpYyBpcyBpbiBgdGNwX2JwZl9zZW5kX3ZlcmRpY3RgLCB3aGljaCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBkZWFscyB3aXRoIHRoZSB2ZXJkaWN0IHJldHVybmVkIGJ5IGEgQlBGIHByb2dyYW0gYXR0YWNoZWQgdG8gdGhlIHNvY2ttYXAuIFRoZSBrZXkgY2hhbmdlIGhlcmUgaXMgdGhlIGFkZGl0aW9uIG9mIGBzb2NrX2hvbGQoc2tfcmVkaXIpYCBhbmQgYHNvY2tfcHV0KHNrX3JlZGlyKWAgY2FsbHMgYXJvdW5kIGBza19tc2dfYXBwbHlfYnl0ZXNgIGFuZCBgdGNwX2JwZl9zZW5kbXNnX3JlZGlyYC4gIFRoaXMgc3VnZ2VzdHMgc29tZSByZWZlcmVuY2UgY291bnRpbmcgb3IgbGlmZXRpbWUgbWFuYWdlbWVudCBpc3N1ZSB0aGF0JiMzOTtzIGJlaW5nIGFkZHJlc3NlZC4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgZml4LCBub3QganVzdCBhIHBlcmZvcm1hbmNlIHR3ZWFrLgoKTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBmdXp6IHRoaXMuICBHaXZlbiB0aGUgcG90ZW50aWFsIGZvciBzdWJ0bGUgcmFjZSBjb25kaXRpb25zIG9yIG1lbW9yeSBjb3JydXB0aW9uIGJ1Z3MgaW4gc29ja2V0LWxldmVsIGNvZGUsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZhbGlkYXRlIHRoZSBmaXgmIzM5O3MgY29ycmVjdG5lc3MgYW5kIHJvYnVzdG5lc3MuCgpMZXQmIzM5O3MgcXVpY2tseSByZXZpZXcgdGhlIHJlbGV2YW50IHN5bWJvbHM6IGB0Y3BfYnBmX3NlbmRfdmVyZGljdGAsIGB0Y3BfYnBmX3NlbmRtc2dgLCBhbmQgYHRjcF9icGZfc2VuZG1zZ19yZWRpcmAg4oCTIHRob3NlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyB0byBrZWVwIGluIG1pbmQuCgpOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBrZXJuZWwgY29uZmlncy4gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJpZ2h0IGZlYXR1cmVzIGFyZSBlbmFibGVkIGZvciB0aGUgcGF0Y2ggdG8gYmUgcmVsZXZhbnQuIFRoZSBvcmlnaW5hbCBub3RlcyBtZW50aW9uIGBCUEZfU1lTQ0FMTGAsIGBORVRfU09DS19NU0dgLCBhbmQgYEJQRl9TVFJFQU1fUEFSU0VSYC4gV2FpdCBhIG1pbnV0ZSwgYE5FVF9TT0NLX01TR2AgaXMgYSBoaWRkZW4gY29uZmlnOyB0aGF0IHNpbXBsaWZpZXMgdGhpbmdzLiAgSSBjYW4ganVzdCBlbmFibGUgYEJQRl9TWVNDQUxMYCBhbmQgYEJQRl9TVFJFQU1fUEFSU0VSYC4gIExldCYjMzk7cyBkb3VibGUgY2hlY2sgdGhhdC4uLiBZZXAsIGBCUEZfU1lTQ0FMTGAgYXV0b21hdGljYWxseSBicmluZ3MgaW4gYE5FVF9TT0NLX01TR2AgYXMgbG9uZyBhcyBgTkVUYCBpcyBlbmFibGVkLCBhbmQgd2UmIzM5O3JlIGRlZmluaXRlbHkgaW4gdGhlIG5ldHdvcmtpbmcgY29kZS4gU28sIGBCUEZfU1lTQ0FMTGAgaXMgdGhlIG1haW4gb25lOyBgQlBGX1NUUkVBTV9QQVJTRVJgIG1pZ2h0IHByb3ZpZGUgYWRkaXRpb25hbCBjb3ZlcmFnZSwgYnV0IGBCUEZfU1lTQ0FMTGAgaXMgdGhlIGNydWNpYWwgb25lIHRvIGZvY3VzIG9uLgoKT2theSwgdGltZSBmb3IgYSBtb3JlIHRob3JvdWdoIGNvZGUgcmV2aWV3IG9mIHRoZSBwYXRjaC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLiAgVGhlIGBzb2NrX2hvbGRgIGFuZCBgc29ja19wdXRgIGFkZGl0aW9ucyBhcmUgZGVmaW5pdGVseSB0aGVyZSwgc3Vycm91bmRpbmcgdGhlIGNvcmUgbG9naWMuIERvdWJsZSBjaGVjayB0aGUgY29udGV4dC4uLiB5ZXMsIHRoYXQgbG9va3MgcmlnaHQuIEl0JiMzOTtzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IGp1c3QgYSBjb3NtZXRpYyBvbmUuICBUaGlzIHN0cmVuZ3RoZW5zIG15IGNvbnZpY3Rpb24gdGhhdCBpdCBzaG91bGQgYmUgZnV6emVkLgoKUmlnaHQsIEkmIzM5O20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xOSAxNjowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX1NUUkVBTV9QQVJTRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfYnBmX3NlbmRfdmVyZGljdCYjMzQ7LAogICAgJiMzNDt0Y3BfYnBmX3NlbmRtc2cmIzM0OywKICAgICYjMzQ7dGNwX2JwZl9zZW5kbXNnX3JlZGlyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGlzc3VlIGluIGB0Y3BfYnBmX3NlbmRfdmVyZGljdGAgYnkgaG9sZGluZyBhIHJlZmVyZW5jZSB0byBgc2tfcmVkaXJgIHdoaWxlIGl0IGlzIGJlaW5nIHVzZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc29ja21hcCBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OywKICAgICYjMzQ7QlBGX1NUUkVBTV9QQVJTRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0Y3BfYnBmX3NlbmRfdmVyZGljdCYjMzQ7LAogICAgJiMzNDt0Y3BfYnBmX3NlbmRtc2cmIzM0OywKICAgICYjMzQ7dGNwX2JwZl9zZW5kbXNnX3JlZGlyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGlzc3VlIGluIGB0Y3BfYnBmX3NlbmRfdmVyZGljdGAgYnkgaG9sZGluZyBhIHJlZmVyZW5jZSB0byBgc2tfcmVkaXJgIHdoaWxlIGl0IGlzIGJlaW5nIHVzZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc29ja21hcCBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE2OjA0OjUxLjYzMTUxODg0M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3MTQyMDg0MDkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCIsXG4gICAgXCJCUEZfU1RSRUFNX1BBUlNFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRjcF9icGZfc2VuZF92ZXJkaWN0XCIsXG4gICAgXCJ0Y3BfYnBmX3NlbmRtc2dcIixcbiAgICBcInRjcF9icGZfc2VuZG1zZ19yZWRpclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGlzc3VlIGluIGB0Y3BfYnBmX3NlbmRfdmVyZGljdGAgYnkgaG9sZGluZyBhIHJlZmVyZW5jZSB0byBgc2tfcmVkaXJgIHdoaWxlIGl0IGlzIGJlaW5nIHVzZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBCUEYgc29ja21hcCBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTY6MDQ6NTEuNjMxNTI1NDkzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDM4NzIwNzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxZDIwYmE2MDdkZGYyMTkwNTI1MTAzZTIwM2I1MTI0NGVmYTRmN2RhXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDE5IDE2OjA0OjUwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9icGYuYyBiL25ldC9pcHY0L3RjcF9icGYuY1xcbmluZGV4IDhlOTA1YjUwZGVhZGJlLi42OWNjOGJjMzNiY2QxYyAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC90Y3BfYnBmLmNcXG4rKysgYi9uZXQvaXB2NC90Y3BfYnBmLmNcXG5AQCAtNDY5LDYgKzQ2OSw3IEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9zZW5kX3ZlcmRpY3Qoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrLFxcbiBcXHRjYXNlIF9fU0tfUkVESVJFQ1Q6XFxuIFxcdFxcdHJlZGlyX2luZ3Jlc3MgPSBwc29jay1cXHUwMDNlcmVkaXJfaW5ncmVzcztcXG4gXFx0XFx0c2tfcmVkaXIgPSBwc29jay1cXHUwMDNlc2tfcmVkaXI7XFxuK1xcdFxcdHNvY2tfaG9sZChza19yZWRpcik7XFxuIFxcdFxcdHNrX21zZ19hcHBseV9ieXRlcyhwc29jaywgdG9zZW5kKTtcXG4gXFx0XFx0aWYgKCFwc29jay1cXHUwMDNlYXBwbHlfYnl0ZXMpIHtcXG4gXFx0XFx0XFx0LyogQ2xlYW4gdXAgYmVmb3JlIHJlbGVhc2luZyB0aGUgc29jayBsb2NrLiAqL1xcbkBAIC00ODksNiArNDkwLDcgQEAgc3RhdGljIGludCB0Y3BfYnBmX3NlbmRfdmVyZGljdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19wc29jayAqcHNvY2ssXFxuIFxcbiBcXHRcXHRpZiAoZXZhbCA9PSBfX1NLX1JFRElSRUNUKVxcbiBcXHRcXHRcXHRzb2NrX3B1dChza19yZWRpcik7XFxuK1xcdFxcdHNvY2tfcHV0KHNrX3JlZGlyKTtcXG4gXFxuIFxcdFxcdGxvY2tfc29jayhzayk7XFxuIFxcdFxcdHNrX21lbV91bmNoYXJnZShzaywgc2VudCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE2OjA0OjUyLjE3NTkzOTQ3N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY1OTc2NTA3MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9TVFJFQU1fUEFSU0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX2JwZl9zZW5kX3ZlcmRpY3RcIixcbiAgICBcInRjcF9icGZfc2VuZG1zZ1wiLFxuICAgIFwidGNwX2JwZl9zZW5kbXNnX3JlZGlyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaXNzdWUgaW4gYHRjcF9icGZfc2VuZF92ZXJkaWN0YCBieSBob2xkaW5nIGEgcmVmZXJlbmNlIHRvIGBza19yZWRpcmAgd2hpbGUgaXQgaXMgYmVpbmcgdXNlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBzb2NrbWFwIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDFkMjBiYTYwN2RkZjIxOTA1MjUxMDNlMjAzYjUxMjQ0ZWZhNGY3ZGFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAxOSAxNjowNDo1MCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9icGYuYyBiL25ldC9pcHY0L3RjcF9icGYuY1xuaW5kZXggOGU5MDViNTBkZWFkYmUuLjY5Y2M4YmMzM2JjZDFjIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvdGNwX2JwZi5jXG4rKysgYi9uZXQvaXB2NC90Y3BfYnBmLmNcbkBAIC00NjksNiArNDY5LDcgQEAgc3RhdGljIGludCB0Y3BfYnBmX3NlbmRfdmVyZGljdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19wc29jayAqcHNvY2ssXG4gXHRjYXNlIF9fU0tfUkVESVJFQ1Q6XG4gXHRcdHJlZGlyX2luZ3Jlc3MgPSBwc29jay1cdTAwM2VyZWRpcl9pbmdyZXNzO1xuIFx0XHRza19yZWRpciA9IHBzb2NrLVx1MDAzZXNrX3JlZGlyO1xuK1x0XHRzb2NrX2hvbGQoc2tfcmVkaXIpO1xuIFx0XHRza19tc2dfYXBwbHlfYnl0ZXMocHNvY2ssIHRvc2VuZCk7XG4gXHRcdGlmICghcHNvY2stXHUwMDNlYXBwbHlfYnl0ZXMpIHtcbiBcdFx0XHQvKiBDbGVhbiB1cCBiZWZvcmUgcmVsZWFzaW5nIHRoZSBzb2NrIGxvY2suICovXG5AQCAtNDg5LDYgKzQ5MCw3IEBAIHN0YXRpYyBpbnQgdGNwX2JwZl9zZW5kX3ZlcmRpY3Qoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrLFxuIFxuIFx0XHRpZiAoZXZhbCA9PSBfX1NLX1JFRElSRUNUKVxuIFx0XHRcdHNvY2tfcHV0KHNrX3JlZGlyKTtcbitcdFx0c29ja19wdXQoc2tfcmVkaXIpO1xuIFxuIFx0XHRsb2NrX3NvY2soc2spO1xuIFx0XHRza19tZW1fdW5jaGFyZ2Uoc2ssIHNlbnQpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTY6MDQ6NTIuMTc1OTQwOTA4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk0ODY0MTUyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBUQ1AgQlBGIFBhdGNoKipcblxuT2theSwgc28gdGhlcmUncyBhIHBhdGNoIHN1Ym1pdHRlZCB0byBgbmV0L2lwdjQvdGNwX2JwZi5jYC4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBvZiB0aGUgY2hhbmdlIHJldm9sdmVzIGFyb3VuZCB0aGUgYHRjcF9icGZfc2VuZF92ZXJkaWN0YCBmdW5jdGlvbi4gU3BlY2lmaWNhbGx5LCBpdCdzIGFkZGluZyBgc29ja19ob2xkKHNrX3JlZGlyKWAgYW5kIGBzb2NrX3B1dChza19yZWRpcilgLiBJbW1lZGlhdGVseSwgSSByZWNvZ25pemUgdGhpcyBhcyBhIGxpa2VseSBmaXggZm9yIGEgbWVtb3J5IG1hbmFnZW1lbnQgaXNzdWUg4oCTIHByb2JhYmx5IGEgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW8gb3Igc29tZXRoaW5nIHNpbWlsYXIgcmVsYXRlZCB0byB0aGF0IGBza19yZWRpcmAgc29ja2V0IHBvaW50ZXIuIFRoZSBjb2RlIGNvbW1lbnRzIGFyZW4ndCBleHBsaWNpdGx5IHN0YXRpbmcgdGhlIGlzc3VlLCBidXQgdGhlc2UgaG9sZC9wdXQgb3BlcmF0aW9ucyBhcmUgcmVkIGZsYWdzIHRoYXQgYXJlIGxpa2VseSByZWxhdGVkIHRvIHRyYWNraW5nIHVzYWdlLlxuXG5HaXZlbiB0aGF0IGl0J3MgaW4gYSBjcml0aWNhbCBmdW5jdGlvbiBsaWtlIHRoaXMsIEkgbmVlZCB0byB0aG9yb3VnaGx5IHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgYHRjcF9icGZfc2VuZF92ZXJkaWN0YC4gSSdsbCBoYXZlIHRvIGRlbHZlIGludG8gdGhlIGZ1bmN0aW9uJ3MgbG9naWMgYW5kIHRyYWNlIHRoZSB1c2FnZSBvZiBgc2tfcmVkaXJgIHRvIHNlZSB3aGVyZSB0aGUgcG90ZW50aWFsIHJhY2Ugb3IgbWVtb3J5IGNvcnJ1cHRpb24gY291bGQgb2NjdXIuIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IGV4YWN0bHkgd2hlbiBgc2tfcmVkaXJgIGlzIGJlaW5nIGFzc2lnbmVkLCB3aGVuIGl0IG1pZ2h0IGJlIGFjY2Vzc2VkIGFmdGVyIGJlaW5nIGZyZWVkLCBhbmQgaG93IHRoZXNlIGBzb2NrX2hvbGRgIGFuZCBgc29ja19wdXRgIGNhbGxzIGFyZSBtZWFudCB0byByZW1lZHkgdGhlIHByb2JsZW0uIFVuZGVyc3RhbmRpbmcgdGhlIHByZWNpc2UgY2FsbCBwYXRoIGFuZCBkYXRhIGZsb3cgaXMgZXNzZW50aWFsIHRvIHZlcmlmeWluZyB0aGUgZml4J3MgY29ycmVjdG5lc3MgYW5kIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGNvbmN1cnJlbnQgYWNjZXNzIHNjZW5hcmlvcyBhbmQgaG93IHRoaXMgcGF0Y2ggYWZmZWN0cyB0aGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTQ4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA3LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTY6MDQ6NTYuMTI0NTg0NzQzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3NzE5MzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjcF9icGZfc2VuZF92ZXJkaWN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3RjcF9icGYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC90Y3BfYnBmLmM9MzY4PXN0YXRpYyBpbnQgdGNwX2JwZl9yZWN2bXNnKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IG1zZ2hkciAqbXNnLCBzaXplX3QgbGVuLFxcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTQxNy1cXG5uZXQvaXB2NC90Y3BfYnBmLmM6NDE4OnN0YXRpYyBpbnQgdGNwX2JwZl9zZW5kX3ZlcmRpY3Qoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfcHNvY2sgKnBzb2NrLFxcbm5ldC9pcHY0L3RjcF9icGYuYy00MTktXFx0XFx0XFx0XFx0c3RydWN0IHNrX21zZyAqbXNnLCBpbnQgKmNvcGllZCwgaW50IGZsYWdzKVxcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jPTUzND1zdGF0aWMgaW50IHRjcF9icGZfc2VuZG1zZyhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBtc2doZHIgKm1zZywgc2l6ZV90IHNpemUpXFxuLS1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtNTk5LVxcbm5ldC9pcHY0L3RjcF9icGYuYzo2MDA6XFx0XFx0ZXJyID0gdGNwX2JwZl9zZW5kX3ZlcmRpY3Qoc2ssIHBzb2NrLCBtc2dfdHgsIFxcdTAwMjZjb3BpZWQsIGZsYWdzKTtcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjAxLVxcdFxcdGlmICh1bmxpa2VseShlcnIgXFx1MDAzYyAwKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTY6MDQ6NTYuMjAyMzA4MzU3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkzNzYzNjU1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGB0Y3BfYnBmX3NlbmRfdmVyZGljdGAgUGF0aCoqXG5cblJpZ2h0LCBzbyBgdGNwX2JwZl9zZW5kX3ZlcmRpY3RgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIHdpdGhpbiBgdGNwX2JwZl9zZW5kbXNnYC4gSG1tLCB0aGF0J3MgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhpcyBwYXRoIGluIGB0Y3BfYnBmLmNgLiBUaGlzIGlzbid0IGp1c3QgYSBjYXN1YWwgZ2xhbmNlOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGljaCBmZWF0dXJlcyBhbmQgZGVwZW5kZW5jaWVzIG5lZWQgdG8gYmUgZW5hYmxlZCBhdCBjb21waWxlIHRpbWUgdG8gbWFrZSB0aGlzIHBhcnRpY3VsYXIgZmxvdyBvcGVyYXRpb25hbC4gSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IHRyYWNpbmcgdGhlIGNhbGwgY2hhaW4sIGNoZWNraW5nIHRoZSBjb25maWcgc3ltYm9scyBpbnZvbHZlZCwgYW5kIG1ha2luZyBzdXJlIEkgaGF2ZSBhIGdvb2QgZ3Jhc3Agb2YgdGhlIGNvbnRyb2wgZmxvdyB3aXRoaW4gYHRjcF9icGYuY2AgYW5kIGl0cyBkZXBlbmRlbmNpZXMuIE15IHVsdGltYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgdmVyZGljdCBwYXRoIGZvciBrZXJuZWwgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY4NCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE2OjA0OjU5LjEzOTk0NzYwOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTYyMjA2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3BfYnBmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L01ha2VmaWxlPTYyPW9iai0kKENPTkZJR19UQ1BfQ09OR19JTExJTk9JUykgKz0gdGNwX2lsbGlub2lzLm9cXG5uZXQvaXB2NC9NYWtlZmlsZTo2MzpvYmotJChDT05GSUdfTkVUX1NPQ0tfTVNHKSArPSB0Y3BfYnBmLm9cXG5uZXQvaXB2NC9NYWtlZmlsZS02NC1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHVkcF9icGYub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNjowNDo1OS4yMTk1ODA2OTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTQwNzQzMzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgcGVyc3BlY3RpdmU6XG5cbioqRGVidWdnaW5nIE5ldHdvcmsgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgSSd2ZSBnb3QgdG8gc29ydCBvdXQgaXMgdGhpcyBgQ09ORklHX05FVF9TT0NLX01TR2AgZGVwZW5kZW5jeS4gU2VlbXMgbGlrZSBpdCdzIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBmdW5jdGlvbmFsaXR5IHJlbGllcyBvbiBpdCBhbmQgaWYgSSBuZWVkIHRvIGVuYWJsZSBvciB0d2VhayBpdC5cblxuQmVmb3JlIEkgY29tbWl0IHRvIGFueXRoaW5nLCBJIHdhbnQgdG8gdGFrZSBhIG1vcmUgaG9saXN0aWMgdmlldy4gSSBzaG91bGQgcHJvYmFibHkgc2NhbiB0aGUgYnJvYWRlciBjb25maWd1cmF0aW9uIHNwYWNlLiBJJ2xsIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlICpvdGhlciogbmV0d29yayBjb25maWd1cmF0aW9ucyB0aGF0IHRoaXMgb25lIGRlcGVuZHMgb24sIG9yIHRoYXQgZGVwZW5kIG9uICppdCouIFBlcmhhcHMgdGhlcmUncyBzb21lIGJyb2FkZXIgY29udGV4dCBvciByZWxhdGVkIHNldHRpbmdzIEkgc2hvdWxkIGJlIGF3YXJlIG9mIGJlZm9yZSBtYWtpbmcgYW55IGNoYW5nZXMuIFRoaXMgaXMgc3RhbmRhcmQgb3BlcmF0aW5nIHByb2NlZHVyZSwgcmVhbGx5OyBJIGNhbid0IGp1c3QgcmVhY3QgdG8gb25lIGZsYWcgd2l0aG91dCB1bmRlcnN0YW5kaW5nIHRoZSBiaWdnZXIgcGljdHVyZS4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvbmZpZyBmaWxlcyBhbmQgc2VlIHdoYXQncyBjb25uZWN0ZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBicmVha2luZyBhbnl0aGluZyBkb3duc3RyZWFtIG9yIHNldHRpbmcgb2ZmIGFueSB1bmludGVuZGVkIGNvbnNlcXVlbmNlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA0NywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE2OjA1OjAyLjM2MDMyNjUyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNDYyMjI4MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRfU09DS19NU0dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9MzYxPWNvbmZpZyBCUEZfU1RSRUFNX1BBUlNFUlxcbi0tXFxubmV0L0tjb25maWctMzY2LVxcdHNlbGVjdCBTVFJFQU1fUEFSU0VSXFxubmV0L0tjb25maWc6MzY3OlxcdHNlbGVjdCBORVRfU09DS19NU0dcXG5uZXQvS2NvbmZpZy0zNjgtXFx0aGVscFxcbi0tXFxubmV0L0tjb25maWc9NDc1PWNvbmZpZyBORVRfU0VMRlRFU1RTXFxuLS1cXG5uZXQvS2NvbmZpZy00NzgtXFxubmV0L0tjb25maWc6NDc5OmNvbmZpZyBORVRfU09DS19NU0dcXG5uZXQvS2NvbmZpZy00ODAtXFx0Ym9vbFxcbi0tXFxubmV0L0tjb25maWctNDgyLVxcdGhlbHBcXG5uZXQvS2NvbmZpZzo0ODM6XFx0ICBUaGUgTkVUX1NPQ0tfTVNHIHByb3ZpZGVzIGEgZnJhbWV3b3JrIGZvciBwbGFpbiBzb2NrZXRzIChlLmcuIFRDUCkgb3JcXG5uZXQvS2NvbmZpZy00ODQtXFx0ICBVTFBzICh1cHBlciBsYXllciBtb2R1bGVzLCBlLmcuIFRMUykgdG8gcHJvY2VzcyBMNyBhcHBsaWNhdGlvbiBkYXRhXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE5VDE2OjA1OjAyLjQ4NDk1Mjk0MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NTYyNDYwMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aGUgdGhvdWdodCBwcm9jZXNzIHVuZm9sZHM6XG5cbioqRGlnZ2luZyBpbnRvIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBlbmNvdW50ZXJpbmcgdGhpcyBgTkVUX1NPQ0tfTVNHYCBzZXR0aW5nLCBhbmQgaXQgc2VlbXMgdG8gYmUgaW50ZXJ0d2luZWQgd2l0aCBgQlBGX1NUUkVBTV9QQVJTRVJgLiBJIGtub3cgYE5FVF9TT0NLX01TR2AgaXMgaGlkZGVuIHdoaWNoIHN1Z2dlc3RzIGl0J3MgbGlrZWx5IGEgc3VwcG9ydGluZyBjb25maWd1cmF0aW9uIG9wdGlvbi4gTXkgaW5zdGluY3QgaXMgdGhhdCB0aGlzIHJlbGF0aW9uc2hpcCBpcyBkcml2ZW4gYnkgdGhlIGBCUEZfU1RSRUFNX1BBUlNFUmAgY29uZmlndXJhdGlvbi4gVGhpcyBzb3VuZHMgbGlrZSBpdCBtaWdodCBiZSBrZXkgdG8gZW5hYmxpbmcgc29tZSBhZHZhbmNlZCBCUEYgc3RyZWFtIHByb2Nlc3NpbmcuXG5cbkkgbmVlZCB0byBzZWUgd2hhdCdzIGdvaW5nIG9uIHdpdGggYEJQRl9TVFJFQU1fUEFSU0VSYC4gVGhlIGtlcm5lbCBjb25maWcgc3lzdGVtIGlzIHRoZSBwbGFjZSB0byBzdGFydCwgc28gSSdsbCBnbyBjaGVjayB0aGUgYG5ldC9LY29uZmlnYCBmaWxlLiBUaGF0J3MgdGhlIGRlZmluaXRpdmUgc291cmNlIHRvIHNlZSBob3cgdGhlc2Ugb3B0aW9ucyBhcmUgZGVmaW5lZCBhbmQgcmVsYXRlZC4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHNvbWUgZGVwZW5kZW5jaWVzIG9yIGRlZmF1bHRzIHRoYXQgZXhwbGFpbiB3aHkgYE5FVF9TT0NLX01TR2AgZ2V0cyBwdWxsZWQgaW4gd2hlbiBgQlBGX1NUUkVBTV9QQVJTRVJgIGlzIHNlbGVjdGVkLiBMZXQncyBzZWUgd2hhdCB0aGUgS2NvbmZpZyBzYXlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTIzLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTY6MDU6MDYuMTQxMjAxNjg2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjMyMDc3NzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlBGX1NUUkVBTV9QQVJTRVJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9MzU0PWNvbmZpZyBCUUxcXG4tLVxcbm5ldC9LY29uZmlnLTM2MC1cXG5uZXQvS2NvbmZpZzozNjE6Y29uZmlnIEJQRl9TVFJFQU1fUEFSU0VSXFxubmV0L0tjb25maWctMzYyLVxcdGJvb2wgXFxcImVuYWJsZSBCUEYgU1RSRUFNX1BBUlNFUlxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTY6MDU6MDYuMjY0NDE1Mjc4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MjEwODQ3NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgQlBGIFN0cmVhbSBQYXJzZXIgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHNvIEkgbmVlZCB0byBlbmFibGUgYEJQRl9TVFJFQU1fUEFSU0VSYC4gVGhhdCdzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgdGhpcyBmZWF0dXJlLCBvYnZpb3VzbHkuIEJ1dCBob2xkIG9uIGEgc2Vjb25k4oCmIGl0IGxvb2tzIGxpa2UgYE5FVF9TT0NLX01TR2AgaXMgYWxzbyBnZXR0aW5nIHB1bGxlZCBpbiBieSBgQ0dST1VQX0JQRmA/IEkgbmVlZCB0byBjb25maXJtIHRoYXQgcmVsYXRpb25zaGlwLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGF0IGRlcGVuZGVuY3kgZXhpc3RzIGFuZCB3aGF0IGltcGxpY2F0aW9ucyBpdCBtaWdodCBoYXZlIGZvciB0aGUgY29uZmlndXJhdGlvbiBhbmQgb3BlcmF0aW9uIG9mIHRoZSBzdHJlYW0gcGFyc2VyIGluIGRpZmZlcmVudCBjZ3JvdXAgY29udGV4dHMuIEknbGwgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcyB0byBjbGFyaWZ5IHRoaXMuIEdvdHRhIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcgY3JpdGljYWwgaW4gdGhlIHNldHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODk1LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTY6MDU6MDguOTg1NTAxNjUyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzA1MTEwNzkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5FVF9TT0NLX01TR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9za2J1ZmYuaD04ODY9c3RydWN0IHNrX2J1ZmYge1xcbi0tXFxuaW5jbHVkZS9saW51eC9za2J1ZmYuaC05MjYtXFx0XFx0c3RydWN0IGxpc3RfaGVhZFxcdHRjcF90c29ydGVkX2FuY2hvcjtcXG5pbmNsdWRlL2xpbnV4L3NrYnVmZi5oOjkyNzojaWZkZWYgQ09ORklHX05FVF9TT0NLX01TR1xcbmluY2x1ZGUvbGludXgvc2tidWZmLmgtOTI4LVxcdFxcdHVuc2lnbmVkIGxvbmdcXHRcXHRfc2tfcmVkaXI7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrbXNnLmg9NTU1PXN0YXRpYyBpbmxpbmUgc3NpemVfdCBza19tc2dfZmlyc3RfbGVuKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbmluY2x1ZGUvbGludXgvc2ttc2cuaC01NzItXFxuaW5jbHVkZS9saW51eC9za21zZy5oOjU3MzojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX1NPQ0tfTVNHKVxcbmluY2x1ZGUvbGludXgvc2ttc2cuaC01NzQtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrbXNnLmg9NjE5PXN0YXRpYyBpbmxpbmUgdm9pZCBza2JfYnBmX3JlZGlyZWN0X2NsZWFyKHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NrbXNnLmgtNjIyLX1cXG5pbmNsdWRlL2xpbnV4L3NrbXNnLmg6NjIzOiNlbmRpZiAvKiBDT05GSUdfTkVUX1NPQ0tfTVNHICovXFxuaW5jbHVkZS9saW51eC9za21zZy5oLTYyNC0jZW5kaWYgLyogX0xJTlVYX1NLTVNHX0ggKi9cXG4tLVxcbmluY2x1ZGUvbmV0L3RjcC5oPTI4Mjc9dm9pZCB0Y3BfdXBkYXRlX3VscChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBwcm90byAqcCxcXG4tLVxcbmluY2x1ZGUvbmV0L3RjcC5oLTI4MzMtXFxuaW5jbHVkZS9uZXQvdGNwLmg6MjgzNDojaWZkZWYgQ09ORklHX05FVF9TT0NLX01TR1xcbmluY2x1ZGUvbmV0L3RjcC5oLTI4MzUtc3RydWN0IHNrX21zZztcXG4tLVxcbmluY2x1ZGUvbmV0L3RjcC5oPTI4NTY9aW50IHRjcF9icGZfc2VuZG1zZ19yZWRpcihzdHJ1Y3Qgc29jayAqc2ssIGJvb2wgaW5ncmVzcyxcXG5pbmNsdWRlL25ldC90Y3AuaC0yODU3LVxcdFxcdFxcdCAgc3RydWN0IHNrX21zZyAqbXNnLCB1MzIgYnl0ZXMsIGludCBmbGFncyk7XFxuaW5jbHVkZS9uZXQvdGNwLmg6Mjg1ODojZW5kaWYgLyogQ09ORklHX05FVF9TT0NLX01TRyAqL1xcbmluY2x1ZGUvbmV0L3RjcC5oLTI4NTktXFxuaW5jbHVkZS9uZXQvdGNwLmg6Mjg2MDojaWYgIWRlZmluZWQoQ09ORklHX0JQRl9TWVNDQUxMKSB8fCAhZGVmaW5lZChDT05GSUdfTkVUX1NPQ0tfTVNHKVxcbmluY2x1ZGUvbmV0L3RjcC5oLTI4NjEtc3RhdGljIGlubGluZSB2b2lkIHRjcF9icGZfY2xvbmUoY29uc3Qgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc29jayAqbmV3c2spXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWc9Mjc9Y29uZmlnIEJQRl9TWVNDQUxMXFxuLS1cXG5rZXJuZWwvYnBmL0tjb25maWctMzMtXFx0c2VsZWN0IEJJTkFSWV9QUklOVEZcXG5rZXJuZWwvYnBmL0tjb25maWc6MzQ6XFx0c2VsZWN0IE5FVF9TT0NLX01TRyBpZiBORVRcXG5rZXJuZWwvYnBmL0tjb25maWctMzUtXFx0c2VsZWN0IE5FVF9YR1JFU1MgaWYgTkVUXFxuLS1cXG5uZXQvS2NvbmZpZz0zNjE9Y29uZmlnIEJQRl9TVFJFQU1fUEFSU0VSXFxuLS1cXG5uZXQvS2NvbmZpZy0zNjYtXFx0c2VsZWN0IFNUUkVBTV9QQVJTRVJcXG5uZXQvS2NvbmZpZzozNjc6XFx0c2VsZWN0IE5FVF9TT0NLX01TR1xcbm5ldC9LY29uZmlnLTM2OC1cXHRoZWxwXFxuLS1cXG5uZXQvS2NvbmZpZz00NzU9Y29uZmlnIE5FVF9TRUxGVEVTVFNcXG4tLVxcbm5ldC9LY29uZmlnLTQ3OC1cXG5uZXQvS2NvbmZpZzo0Nzk6Y29uZmlnIE5FVF9TT0NLX01TR1xcbm5ldC9LY29uZmlnLTQ4MC1cXHRib29sXFxuLS1cXG5uZXQvS2NvbmZpZy00ODItXFx0aGVscFxcbm5ldC9LY29uZmlnOjQ4MzpcXHQgIFRoZSBORVRfU09DS19NU0cgcHJvdmlkZXMgYSBmcmFtZXdvcmsgZm9yIHBsYWluIHNvY2tldHMgKGUuZy4gVENQKSBvclxcbm5ldC9LY29uZmlnLTQ4NC1cXHQgIFVMUHMgKHVwcGVyIGxheWVyIG1vZHVsZXMsIGUuZy4gVExTKSB0byBwcm9jZXNzIEw3IGFwcGxpY2F0aW9uIGRhdGFcXG4tLVxcbm5ldC9jb3JlL01ha2VmaWxlPTQzPW9iai0kKENPTkZJR19GQUlMT1ZFUikgKz0gZmFpbG92ZXIub1xcbm5ldC9jb3JlL01ha2VmaWxlOjQ0Om9iai0kKENPTkZJR19ORVRfU09DS19NU0cpICs9IHNrbXNnLm9cXG5uZXQvY29yZS9NYWtlZmlsZS00NS1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IHNvY2tfbWFwLm9cXG4tLVxcbm5ldC9pcHY0L0tjb25maWc9MzgyPWNvbmZpZyBJTkVUX0VTUElOVENQXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTM4NS1cXHRzZWxlY3QgU1RSRUFNX1BBUlNFUlxcbm5ldC9pcHY0L0tjb25maWc6Mzg2OlxcdHNlbGVjdCBORVRfU09DS19NU0dcXG5uZXQvaXB2NC9LY29uZmlnLTM4Ny1cXHRzZWxlY3QgWEZSTV9FU1BJTlRDUFxcbi0tXFxubmV0L2lwdjQvTWFrZWZpbGU9NjI9b2JqLSQoQ09ORklHX1RDUF9DT05HX0lMTElOT0lTKSArPSB0Y3BfaWxsaW5vaXMub1xcbm5ldC9pcHY0L01ha2VmaWxlOjYzOm9iai0kKENPTkZJR19ORVRfU09DS19NU0cpICs9IHRjcF9icGYub1xcbm5ldC9pcHY0L01ha2VmaWxlLTY0LW9iai0kKENPTkZJR19CUEZfU1lTQ0FMTCkgKz0gdWRwX2JwZi5vXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTkwPWNvbmZpZyBJTkVUNl9FU1BJTlRDUFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy05My1cXHRzZWxlY3QgU1RSRUFNX1BBUlNFUlxcbm5ldC9pcHY2L0tjb25maWc6OTQ6XFx0c2VsZWN0IE5FVF9TT0NLX01TR1xcbm5ldC9pcHY2L0tjb25maWctOTUtXFx0c2VsZWN0IFhGUk1fRVNQSU5UQ1BcXG4tLVxcbm5ldC90bHMvS2NvbmZpZz01PWNvbmZpZyBUTFNcXG4tLVxcbm5ldC90bHMvS2NvbmZpZy0xMC1cXHRzZWxlY3QgQ1JZUFRPX0dDTVxcbm5ldC90bHMvS2NvbmZpZzoxMTpcXHRzZWxlY3QgTkVUX1NPQ0tfTVNHXFxubmV0L3Rscy9LY29uZmlnLTEyLVxcdGRlZmF1bHQgblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNjowNToxMS4yOTA2MTczNTRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE4NjkzNjI3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uIGZvciBOZXR3b3JrIFNvY2tldCBNZXNzYWdlIEhhbmRsaW5nKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBORVRfU09DS19NU0dgIGZlYXR1cmUsIGFuZCBpdCBsb29rcyBsaWtlIGBCUEZfU1lTQ0FMTGAgZ2V0cyBjaG9zZW4gd2hlbiB0aGUgYE5FVGAgb3B0aW9uIGlzIGVuYWJsZWQsIHdoaWNoIGlzIHRoZSBrZXkgaGVyZS4gU28sIGBCUEZfU1lTQ0FMTGAgYWxvbmUgKnNob3VsZCogYmUgc3VmZmljaWVudCwgZXNwZWNpYWxseSBzaW5jZSBpdCdzIGRlZmluaXRlbHkgZW5hYmxlZCB3aXRoaW4gU3l6a2FsbGVyLiBIb3dldmVyLCBJJ20gdGhpbmtpbmcsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIGFuZCBjb3ZlciBhbGwgYmFzZXMsIGl0IG1pZ2h0IGJlIHBydWRlbnQgdG8gYWxzbyBzcGVjaWZ5IGBCUEZfU1RSRUFNX1BBUlNFUmAgYW5kIGBUTFNgIGluIHRoZSBjb25maWd1cmF0aW9uIGFzIHdlbGwsIGFzIGEga2luZCBvZiBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcuIEJ1dCBob2xkIG9uLCB0aGUgY29yZSBlbGVtZW50IGlzIGluZGVlZCBgQlBGX1NZU0NBTExgIHdoaWNoIGlzIGEgbW9yZSBnZW5lcmljIGNvbmZpZ3VyYXRpb24uIFRoZXJlZm9yZSwgYXMgSSB0aGluayBpdCB0aHJvdWdoLCBJIHNlZSBJIGRvbid0IG5lZWQgdG8gc3BlY2lmeSBgQlBGX1NZU0NBTExgLCBidXQgSSB3aWxsIGFkZCBgQlBGX1NUUkVBTV9QQVJTRVJgIGFuZCBgVExTYCBmb3IgcGVhY2Ugb2YgbWluZC5cblxuVGhlIGNyaXRpY2FsIGNoYW5nZSBzZWVtcyB0byBiZSB3aXRoaW4gYHRjcF9icGZfc2VuZF92ZXJkaWN0YC4gUmlnaHQsIGxldCdzIGdvIGFuZCBjaGVjayBvdXQgd2hhdCBleGFjdGx5IGB0Y3BfYnBmX3NlbmRfdmVyZGljdGAgZG9lcywgYW5kIGl0cyBpbXBsaWNhdGlvbnMgaGVyZS4gQWgsIHJpZ2h0LCBpdCdzIGNhbGxlZCBmcm9tIGB0Y3BfYnBmX3NlbmRtc2dgIGFuZCwgaWYgaXQgZXhpc3RzLCBgdGNwX2JwZl9zZW5kcGFnZWAuIE5vdywgbGV0IG1lIHRha2UgYSBsb29rIGF0IGB0Y3BfYnBmX3NlbmRtc2dgIHRvIGdldCB0aGUgd2hvbGUgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM3OSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNjowNToxNi40Nzc1NTU4NzlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDAwMzY4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y3BfYnBmX3NlbmRtc2dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdGNwX2JwZi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9icGYuYz0xNTM9c3RhdGljIGludCB0Y3BfYnBmX3B1c2hfbG9ja2VkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX21zZyAqbXNnLFxcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTE2My1cXG5uZXQvaXB2NC90Y3BfYnBmLmM6MTY0OmludCB0Y3BfYnBmX3NlbmRtc2dfcmVkaXIoc3RydWN0IHNvY2sgKnNrLCBib29sIGluZ3Jlc3MsXFxubmV0L2lwdjQvdGNwX2JwZi5jLTE2NS1cXHRcXHRcXHQgIHN0cnVjdCBza19tc2cgKm1zZywgdTMyIGJ5dGVzLCBpbnQgZmxhZ3MpXFxuLS1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtMTc3LX1cXG5uZXQvaXB2NC90Y3BfYnBmLmM6MTc4OkVYUE9SVF9TWU1CT0xfR1BMKHRjcF9icGZfc2VuZG1zZ19yZWRpcik7XFxubmV0L2lwdjQvdGNwX2JwZi5jLTE3OS1cXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYz00MTg9c3RhdGljIGludCB0Y3BfYnBmX3NlbmRfdmVyZGljdChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19wc29jayAqcHNvY2ssXFxuLS1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtNDg2LVxcdFxcdG9yaWdzaXplID0gbXNnLVxcdTAwM2VzZy5zaXplO1xcbm5ldC9pcHY0L3RjcF9icGYuYzo0ODc6XFx0XFx0cmV0ID0gdGNwX2JwZl9zZW5kbXNnX3JlZGlyKHNrX3JlZGlyLCByZWRpcl9pbmdyZXNzLFxcbm5ldC9pcHY0L3RjcF9icGYuYy00ODgtXFx0XFx0XFx0XFx0XFx0ICAgIG1zZywgdG9zZW5kLCBmbGFncyk7XFxuLS1cXG5uZXQvaXB2NC90Y3BfYnBmLmMtNTMzLVxcbm5ldC9pcHY0L3RjcF9icGYuYzo1MzQ6c3RhdGljIGludCB0Y3BfYnBmX3NlbmRtc2coc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBzaXplKVxcbm5ldC9pcHY0L3RjcF9icGYuYy01MzUte1xcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jPTY0MD1zdGF0aWMgdm9pZCB0Y3BfYnBmX3JlYnVpbGRfcHJvdG9zKHN0cnVjdCBwcm90byBwcm90W1RDUF9CUEZfTlVNX0NGR1NdLFxcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTY1MC1cXHRwcm90W1RDUF9CUEZfVFhdXFx0XFx0XFx0PSBwcm90W1RDUF9CUEZfQkFTRV07XFxubmV0L2lwdjQvdGNwX2JwZi5jOjY1MTpcXHRwcm90W1RDUF9CUEZfVFhdLnNlbmRtc2dcXHRcXHQ9IHRjcF9icGZfc2VuZG1zZztcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjUyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNjowNToxNi41Nzc1NjM4MTJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI4MzMzMTczOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHdoYXQgSSdtIHNlZWluZzpcblxuKipBbmFseXppbmcgYHRjcF9icGZfc2VuZG1zZ2AgYW5kIGl0cyBDb25uZWN0aW9uIHRvIGBzb2NrbWFwYCoqXG5cbk9rYXksIHNvIEknbSBmb2N1c2luZyBvbiBgdGNwX2JwZl9zZW5kbXNnYCByaWdodCBub3cuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQgd2l0aGluIGB0Y3BfYnBmX3JlYnVpbGRfcHJvdG9zYC4gVGhhdCdzIGludGVyZXN0aW5nLCBhcyBJIGtub3cgdGhhdCBgc29ja21hcGAgaXMgb2Z0ZW4gaW52b2x2ZWQgaW4gdGhlc2Uga2luZHMgb2YgbG93LWxldmVsIG5ldHdvcmsgb3BlcmF0aW9ucy4gTXkgZXhwZXJ0aXNlIHRlbGxzIG1lIHRoYXQgdGhpcyBjb21iaW5hdGlvbiBsaWtlbHkgaW5kaWNhdGVzIHNvbWUgZm9ybSBvZiBCUEYtYmFzZWQgcGFja2V0IG1hbmlwdWxhdGlvbiBvciBzdGF0ZSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUgVENQIHN0YWNrLCBwYXJ0aWN1bGFybHkgY29uY2VybmluZyBzb2NrbWFwLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwLCBzbyBJJ2xsIGRpdmUgaW50byBgdGNwX2JwZl9yZWJ1aWxkX3Byb3Rvc2AgbmV4dCB0byBzZWUgaG93IGB0Y3BfYnBmX3NlbmRtc2dgIGlzIHV0aWxpemVkIGluIHRoYXQgY29udGV4dCBhbmQgd2hlcmUgc29ja21hcCBmaXRzIGluLiBJJ20gZXhwZWN0aW5nIHRvIHNlZSBob3cgZGF0YSBpcyBiZWluZyBjb25zdHJ1Y3RlZCBvciBtb2RpZmllZCBiZWZvcmUgaXQncyB0cmFuc21pdHRlZCwgcG90ZW50aWFsbHkgbGV2ZXJhZ2luZyBzb2NrbWFwJ3MgY2FwYWJpbGl0aWVzIGZvciBkaXJlY3RpbmcgcGFja2V0cyBvciBhcHBseWluZyBjdXN0b20gbG9naWMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1MTcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xOVQxNjowNToxOS44NjA4OTc3NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwNzI2MDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjcF9icGZfcmVidWlsZF9wcm90b3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvdGNwX2JwZi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3RjcF9icGYuYz02Mzg9c3RhdGljIHN0cnVjdCBwcm90byB0Y3BfYnBmX3Byb3RzW1RDUF9CUEZfTlVNX1BST1RTXVtUQ1BfQlBGX05VTV9DRkdTXTtcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjM5LVxcbm5ldC9pcHY0L3RjcF9icGYuYzo2NDA6c3RhdGljIHZvaWQgdGNwX2JwZl9yZWJ1aWxkX3Byb3RvcyhzdHJ1Y3QgcHJvdG8gcHJvdFtUQ1BfQlBGX05VTV9DRkdTXSxcXG5uZXQvaXB2NC90Y3BfYnBmLmMtNjQxLVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBwcm90byAqYmFzZSlcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYz02NjA9c3RhdGljIHZvaWQgdGNwX2JwZl9jaGVja192Nl9uZWVkc19yZWJ1aWxkKHN0cnVjdCBwcm90byAqb3BzKVxcbi0tXFxubmV0L2lwdjQvdGNwX2JwZi5jLTY2NC1cXHRcXHRpZiAobGlrZWx5KG9wcyAhPSB0Y3B2Nl9wcm90X3NhdmVkKSkge1xcbm5ldC9pcHY0L3RjcF9icGYuYzo2NjU6XFx0XFx0XFx0dGNwX2JwZl9yZWJ1aWxkX3Byb3Rvcyh0Y3BfYnBmX3Byb3RzW1RDUF9CUEZfSVBWNl0sIG9wcyk7XFxubmV0L2lwdjQvdGNwX2JwZi5jLTY2Ni1cXHRcXHRcXHRzbXBfc3RvcmVfcmVsZWFzZShcXHUwMDI2dGNwdjZfcHJvdF9zYXZlZCwgb3BzKTtcXG4tLVxcbm5ldC9pcHY0L3RjcF9icGYuYz02NzI9c3RhdGljIGludCBfX2luaXQgdGNwX2JwZl92NF9idWlsZF9wcm90byh2b2lkKVxcbm5ldC9pcHY0L3RjcF9icGYuYy02NzMte1xcbm5ldC9pcHY0L3RjcF9icGYuYzo2NzQ6XFx0dGNwX2JwZl9yZWJ1aWxkX3Byb3Rvcyh0Y3BfYnBmX3Byb3RzW1RDUF9CUEZfSVBWNF0sIFxcdTAwMjZ0Y3BfcHJvdCk7XFxubmV0L2lwdjQvdGNwX2JwZi5jLTY3NS1cXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTY6MDU6MTkuOTcxNjMxOTczWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg2NDYyMTMxNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQlBGIFNvY2ttYXAgUGF0Y2ggZm9yIFRDUCBTb2NrZXRzKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhaW1lZCBhdCBmaXhpbmcgYSBidWcgcmVsYXRlZCB0byBgc2VuZG1zZ2AgaGFuZGxpbmcgZm9yIFRDUCBzb2NrZXRzIHRoYXQgYXJlIHBhcnQgb2YgYSBzb2NrbWFwLiBUaGUgY29yZSBvZiB0aGUgbG9naWMgaXMgaW4gYHRjcF9icGZfc2VuZF92ZXJkaWN0YCwgd2hpY2ggaXMgdGhlIGZ1bmN0aW9uIHRoYXQgZGVhbHMgd2l0aCB0aGUgdmVyZGljdCByZXR1cm5lZCBieSBhIEJQRiBwcm9ncmFtIGF0dGFjaGVkIHRvIHRoZSBzb2NrbWFwLiBUaGUga2V5IGNoYW5nZSBoZXJlIGlzIHRoZSBhZGRpdGlvbiBvZiBgc29ja19ob2xkKHNrX3JlZGlyKWAgYW5kIGBzb2NrX3B1dChza19yZWRpcilgIGNhbGxzIGFyb3VuZCBgc2tfbXNnX2FwcGx5X2J5dGVzYCBhbmQgYHRjcF9icGZfc2VuZG1zZ19yZWRpcmAuICBUaGlzIHN1Z2dlc3RzIHNvbWUgcmVmZXJlbmNlIGNvdW50aW5nIG9yIGxpZmV0aW1lIG1hbmFnZW1lbnQgaXNzdWUgdGhhdCdzIGJlaW5nIGFkZHJlc3NlZC4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgZml4LCBub3QganVzdCBhIHBlcmZvcm1hbmNlIHR3ZWFrLlxuXG5NeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGZ1enogdGhpcy4gIEdpdmVuIHRoZSBwb3RlbnRpYWwgZm9yIHN1YnRsZSByYWNlIGNvbmRpdGlvbnMgb3IgbWVtb3J5IGNvcnJ1cHRpb24gYnVncyBpbiBzb2NrZXQtbGV2ZWwgY29kZSwgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmFsaWRhdGUgdGhlIGZpeCdzIGNvcnJlY3RuZXNzIGFuZCByb2J1c3RuZXNzLlxuXG5MZXQncyBxdWlja2x5IHJldmlldyB0aGUgcmVsZXZhbnQgc3ltYm9sczogYHRjcF9icGZfc2VuZF92ZXJkaWN0YCwgYHRjcF9icGZfc2VuZG1zZ2AsIGFuZCBgdGNwX2JwZl9zZW5kbXNnX3JlZGlyYCDigJMgdGhvc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIHRvIGtlZXAgaW4gbWluZC5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBrZXJuZWwgY29uZmlncy4gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJpZ2h0IGZlYXR1cmVzIGFyZSBlbmFibGVkIGZvciB0aGUgcGF0Y2ggdG8gYmUgcmVsZXZhbnQuIFRoZSBvcmlnaW5hbCBub3RlcyBtZW50aW9uIGBCUEZfU1lTQ0FMTGAsIGBORVRfU09DS19NU0dgLCBhbmQgYEJQRl9TVFJFQU1fUEFSU0VSYC4gV2FpdCBhIG1pbnV0ZSwgYE5FVF9TT0NLX01TR2AgaXMgYSBoaWRkZW4gY29uZmlnOyB0aGF0IHNpbXBsaWZpZXMgdGhpbmdzLiAgSSBjYW4ganVzdCBlbmFibGUgYEJQRl9TWVNDQUxMYCBhbmQgYEJQRl9TVFJFQU1fUEFSU0VSYC4gIExldCdzIGRvdWJsZSBjaGVjayB0aGF0Li4uIFllcCwgYEJQRl9TWVNDQUxMYCBhdXRvbWF0aWNhbGx5IGJyaW5ncyBpbiBgTkVUX1NPQ0tfTVNHYCBhcyBsb25nIGFzIGBORVRgIGlzIGVuYWJsZWQsIGFuZCB3ZSdyZSBkZWZpbml0ZWx5IGluIHRoZSBuZXR3b3JraW5nIGNvZGUuIFNvLCBgQlBGX1NZU0NBTExgIGlzIHRoZSBtYWluIG9uZTsgYEJQRl9TVFJFQU1fUEFSU0VSYCBtaWdodCBwcm92aWRlIGFkZGl0aW9uYWwgY292ZXJhZ2UsIGJ1dCBgQlBGX1NZU0NBTExgIGlzIHRoZSBjcnVjaWFsIG9uZSB0byBmb2N1cyBvbi5cblxuT2theSwgdGltZSBmb3IgYSBtb3JlIHRob3JvdWdoIGNvZGUgcmV2aWV3IG9mIHRoZSBwYXRjaC4gTGV0J3MgbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy4gIFRoZSBgc29ja19ob2xkYCBhbmQgYHNvY2tfcHV0YCBhZGRpdGlvbnMgYXJlIGRlZmluaXRlbHkgdGhlcmUsIHN1cnJvdW5kaW5nIHRoZSBjb3JlIGxvZ2ljLiBEb3VibGUgY2hlY2sgdGhlIGNvbnRleHQuLi4geWVzLCB0aGF0IGxvb2tzIHJpZ2h0LiBJdCdzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IGp1c3QgYSBjb3NtZXRpYyBvbmUuICBUaGlzIHN0cmVuZ3RoZW5zIG15IGNvbnZpY3Rpb24gdGhhdCBpdCBzaG91bGQgYmUgZnV6emVkLlxuXG5SaWdodCwgSSdtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI0NywiT3V0cHV0VG9rZW5zIjoxNDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTlUMTY6MDU6MjguNjE3ODQ3NTU1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU1NzM2MTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUEZfU1lTQ0FMTFwiLFxuICAgIFwiQlBGX1NUUkVBTV9QQVJTRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0Y3BfYnBmX3NlbmRfdmVyZGljdFwiLFxuICAgIFwidGNwX2JwZl9zZW5kbXNnXCIsXG4gICAgXCJ0Y3BfYnBmX3NlbmRtc2dfcmVkaXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZSBpbiBgdGNwX2JwZl9zZW5kX3ZlcmRpY3RgIGJ5IGhvbGRpbmcgYSByZWZlcmVuY2UgdG8gYHNrX3JlZGlyYCB3aGlsZSBpdCBpcyBiZWluZyB1c2VkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQlBGIHNvY2ttYXAgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIixcbiAgICBcIkJQRl9TVFJFQU1fUEFSU0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidGNwX2JwZl9zZW5kX3ZlcmRpY3RcIixcbiAgICBcInRjcF9icGZfc2VuZG1zZ1wiLFxuICAgIFwidGNwX2JwZl9zZW5kbXNnX3JlZGlyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaXNzdWUgaW4gYHRjcF9icGZfc2VuZF92ZXJkaWN0YCBieSBob2xkaW5nIGEgcmVmZXJlbmNlIHRvIGBza19yZWRpcmAgd2hpbGUgaXQgaXMgYmVpbmcgdXNlZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEJQRiBzb2NrbWFwIGxvZ2ljIHRoYXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowrdz9z[1] Phase: Succeeded StartedAt: 2026-07-19 16:05:40 +0000 UTC FinishedAt: 2026-07-19 16:05:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdz9z[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-19 16:05:40 +0000 UTC FinishedAt: 2026-07-19 16:05:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdz9z[2] Phase: Succeeded StartedAt: 2026-07-19 16:05:40 +0000 UTC FinishedAt: 2026-07-19 20:09:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-19 16:05:40 +0000 UTC FinishedAt: 2026-07-19 20:09:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-19 16:05:40 +0000 UTC FinishedAt: 2026-07-19 16:06:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-19 16:05:40 +0000 UTC FinishedAt: 2026-07-19 16:05:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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-workflowrdz9z/series-workflowrdz9z-convert-artifact-937817989/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-19 16:06:02 +0000 UTC FinishedAt: 2026-07-19 16:30:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-19 16:06:02 +0000 UTC FinishedAt: 2026-07-19 16:30:34 +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:*f2f5619e-7223-465d-951b-dae1589d970c,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-workflowrdz9z/series-workflowrdz9z-convert-artifact-937817989/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": "4ec6d2a0-21f9-4f7d-be46-82583541c197", "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-workflowrdz9z/series-workflowrdz9z-build-action-681882411/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-19 16:06:02 +0000 UTC FinishedAt: 2026-07-19 16:30:24 +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:*f2f5619e-7223-465d-951b-dae1589d970c,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-workflowrdz9z/series-workflowrdz9z-convert-artifact-937817989/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": "4ec6d2a0-21f9-4f7d-be46-82583541c197", "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-workflowrdz9z/series-workflowrdz9z-build-action-681882411/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-19 16:30:34 +0000 UTC FinishedAt: 2026-07-19 16:30:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-19 16:30:34 +0000 UTC FinishedAt: 2026-07-19 16:30:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-19 16:30:34 +0000 UTC FinishedAt: 2026-07-19 16:30:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-19 16:30:34 +0000 UTC FinishedAt: 2026-07-19 16:30:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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-workflowrdz9z/series-workflowrdz9z-convert-artifact-2686194784/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-19 16:30:44 +0000 UTC FinishedAt: 2026-07-19 16:33:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-19 16:30:44 +0000 UTC FinishedAt: 2026-07-19 16:33:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4ec6d2a0-21f9-4f7d-be46-82583541c197,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-workflowrdz9z/series-workflowrdz9z-build-action-681882411/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-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-19 16:33:18 +0000 UTC FinishedAt: 2026-07-19 16:33:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-19 16:33:18 +0000 UTC FinishedAt: 2026-07-19 16:33:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-19 16:33:18 +0000 UTC FinishedAt: 2026-07-19 17:03:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-19 16:33:18 +0000 UTC FinishedAt: 2026-07-19 17:03:26 +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:*f2f5619e-7223-465d-951b-dae1589d970c,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-workflowrdz9z/series-workflowrdz9z-convert-artifact-2686194784/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": "aa28791d-dd17-4890-bf87-830d32ca6387", "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-workflowrdz9z/series-workflowrdz9z-build-action-4203643164/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-19 16:33:18 +0000 UTC FinishedAt: 2026-07-19 17:03:16 +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:*f2f5619e-7223-465d-951b-dae1589d970c,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-workflowrdz9z/series-workflowrdz9z-convert-artifact-2686194784/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": "aa28791d-dd17-4890-bf87-830d32ca6387", "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-workflowrdz9z/series-workflowrdz9z-build-action-4203643164/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-19 17:03:26 +0000 UTC FinishedAt: 2026-07-19 17:03:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-19 17:03:26 +0000 UTC FinishedAt: 2026-07-19 17:03:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-19 17:03:26 +0000 UTC FinishedAt: 2026-07-19 17:05:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-19 17:03:26 +0000 UTC FinishedAt: 2026-07-19 17:04:57 +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:*aa28791d-dd17-4890-bf87-830d32ca6387,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-workflowrdz9z/series-workflowrdz9z-build-action-4203643164/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-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-19 17:05:07 +0000 UTC FinishedAt: 2026-07-19 20:09:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-19 17:05:07 +0000 UTC FinishedAt: 2026-07-19 20:09:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"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:*4ec6d2a0-21f9-4f7d-be46-82583541c197,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*aa28791d-dd17-4890-bf87-830d32ca6387,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-workflowrdz9z/series-workflowrdz9z-build-action-681882411/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-workflowrdz9z/series-workflowrdz9z-build-action-4203643164/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-19 17:05:07 +0000 UTC FinishedAt: 2026-07-19 17:05:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-19 17:05:07 +0000 UTC FinishedAt: 2026-07-19 17:05:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"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-workflowrdz9z/series-workflowrdz9z-convert-artifact-4094444217/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-19 17:05:07 +0000 UTC FinishedAt: 2026-07-19 17:05:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-19 17:05:07 +0000 UTC FinishedAt: 2026-07-19 17:05:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-19 17:05:07 +0000 UTC FinishedAt: 2026-07-19 17:05:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-19 17:05:44 +0000 UTC FinishedAt: 2026-07-19 20:09:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrdz9z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["tcp_bpf_send_verdict","tcp_bpf_sendmsg","tcp_bpf_sendmsg_redir"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"94515f3a7d4256a5062176b7d6ed0471938cd51a","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL","BPF_STREAM_PARSER"],"series_id":"1902f7c7-ee6f-4357-b927-9b550c8d9afe","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-19 17:05:44 +0000 UTC FinishedAt: 2026-07-19 20:09:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*4ec6d2a0-21f9-4f7d-be46-82583541c197,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*aa28791d-dd17-4890-bf87-830d32ca6387,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-workflowrdz9z/series-workflowrdz9z-build-action-681882411/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-workflowrdz9z/series-workflowrdz9z-build-action-4203643164/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-workflowrdz9z/series-workflowrdz9z-convert-artifact-4094444217/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,}