Name: series-workflow4drg8 Phase: Succeeded StartedAt: 2026-08-07 00:59:08 +0000 UTC FinishedAt: 2026-08-07 05:00:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4drg8[0] Phase: Succeeded StartedAt: 2026-08-07 00:59:08 +0000 UTC FinishedAt: 2026-08-07 01:14:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4drg8[0].run-triage Phase: Succeeded StartedAt: 2026-08-07 00:59:08 +0000 UTC FinishedAt: 2026-08-07 01:14:53 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "594d905195024b228c962627ae5ae7c17bd582a4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XDP_SOCKETS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "594d905195024b228c962627ae5ae7c17bd582a4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XDP_SOCKETS" ], "series_id": "81b4f4df-13e8-451b-a7fe-edd22b522bbf" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "xsk_generic_rcv", "__xsk_map_redirect" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hEUF9TT0NLRVRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eHNrX2dlbmVyaWNfcmN2JiMzNDssCiAgICAmIzM0O19feHNrX21hcF9yZWRpcmVjdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBidWZmZXIgYWxsb2NhdGlvbiBhbmQgaGFuZGxpbmcgZm9yIGZyYWdtZW50ZWQgWERQIGJ1ZmZlcnMgaW4gQUZfWERQIHNvY2tldHMgKGBfX3hza19yY3ZgKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFhEUCBzb2NrZXQgcmVjZWl2ZSBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjE0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjBmNmE4MTc4MTMzYWY1ZTQ4Y2FiNTE3NjQzNjM0ZmFjNDUyYzM2NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMDE6MTQ6MDcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3hkcC94c2suYyBiL25ldC94ZHAveHNrLmNcbmluZGV4IDc4NTVlZTA5YzRiNjQuLjAyZmYzYWQ5NzQxMGYgMTAwNjQ0XG4tLS0gYS9uZXQveGRwL3hzay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGRwL3hzay5jXG5AQCAtMjk3LDEwICYjNDM7Mjk3LDExIEBAIHN0YXRpYyBpbnQgX194c2tfcmN2KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLCB1MzIgbGVuKVxuIHtcbiBcdHUzMiBmcmFtZV9zaXplID0gX194c2tfcG9vbF9nZXRfcnhfZnJhbWVfc2l6ZSh4cy1cdTAwM2Vwb29sKTtcbiBcdHZvaWQgKmNvcHlfZnJvbSA9IHhza19jb3B5X3hkcF9zdGFydCh4ZHApLCAqY29weV90bztcbiYjNDM7XHRzdHJ1Y3QgeGRwX2J1ZmYgKmZpcnN0LCAqbmV4dCwgKnhza194ZHA7XG4gXHR1MzIgZnJvbV9sZW4sIG1ldGFfbGVuLCByZW0sIG51bV9kZXNjO1xuIFx0c3RydWN0IHhkcF9idWZmX3hzayAqeHNrYjtcbi1cdHN0cnVjdCB4ZHBfYnVmZiAqeHNrX3hkcDtcbiBcdHNrYl9mcmFnX3QgKmZyYWc7XG4mIzQzO1x0dTMyIGk7XG4gXG4gXHRmcm9tX2xlbiA9IHhkcC1cdTAwM2VkYXRhX2VuZCAtIGNvcHlfZnJvbTtcbiBcdG1ldGFfbGVuID0geGRwLVx1MDAzZWRhdGEgLSBjb3B5X2Zyb207XG5AQCAtMzQzLDExICYjNDM7MzQ0LDM0IEBAIHN0YXRpYyBpbnQgX194c2tfcmN2KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLCB1MzIgbGVuKVxuIFx0XHRmcmFnID0gIFx1MDAyNnNpbmZvLVx1MDAzZWZyYWdzWzBdO1xuIFx0fVxuIFxuJiM0MztcdGlmIChXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXHUwMDI2eHMtXHUwMDNlcG9vbC1cdTAwM2V4c2tiX2xpc3QpKSlcbiYjNDM7XHRcdGdvdG8gZXJyX2FsbG9jO1xuJiM0MztcbiYjNDM7XHRmaXJzdCA9IHhza19idWZmX2FsbG9jKHhzLVx1MDAzZXBvb2wpO1xuJiM0MztcdGlmICghZmlyc3QpXG4mIzQzO1x0XHRnb3RvIGVycl9hbGxvYztcbiYjNDM7XG4mIzQzO1x0eGRwX2J1ZmZfc2V0X2ZyYWdzX2ZsYWcoZmlyc3QpO1xuJiM0MztcdGZvciAoaSA9IDE7IGkgXHUwMDNjIG51bV9kZXNjOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0eHNrX3hkcCA9IHhza19idWZmX2FsbG9jKHhzLVx1MDAzZXBvb2wpO1xuJiM0MztcdFx0aWYgKCF4c2tfeGRwKVxuJiM0MztcdFx0XHRnb3RvIGVycl9mcmVlO1xuJiM0MztcbiYjNDM7XHRcdHhza2IgPSBjb250YWluZXJfb2YoeHNrX3hkcCwgc3RydWN0IHhkcF9idWZmX3hzaywgeGRwKTtcbiYjNDM7XHRcdGlmICh1bmxpa2VseSh4c2tfeGRwID09IGZpcnN0IHx8XG4mIzQzO1x0XHRcdCAgICAgIWxpc3RfZW1wdHkoXHUwMDI2eHNrYi1cdTAwM2VsaXN0X25vZGUpKSlcbiYjNDM7XHRcdFx0Z290byBlcnJfZnJlZTtcbiYjNDM7XG4mIzQzO1x0XHRsaXN0X2FkZF90YWlsKFx1MDAyNnhza2ItXHUwMDNlbGlzdF9ub2RlLCBcdTAwMjZ4cy1cdTAwM2Vwb29sLVx1MDAzZXhza2JfbGlzdCk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHR4ZHBfYnVmZl9jbGVhcl9mcmFnc19mbGFnKGZpcnN0KTtcbiYjNDM7XHR4c2tfeGRwID0gZmlyc3Q7XG4gXHRkbyB7XG4gXHRcdHUzMiB0b19sZW4gPSBmcmFtZV9zaXplICYjNDM7IG1ldGFfbGVuO1xuIFx0XHR1MzIgY29waWVkO1xuIFxuLVx0XHR4c2tfeGRwID0geHNrX2J1ZmZfYWxsb2MoeHMtXHUwMDNlcG9vbCk7XG4mIzQzO1x0XHRuZXh0ID0geHNrX2J1ZmZfZ2V0X2ZyYWcoeHNrX3hkcCk7XG4gXHRcdGNvcHlfdG8gPSB4c2tfeGRwLVx1MDAzZWRhdGEgLSBtZXRhX2xlbjtcbiBcbiBcdFx0Y29waWVkID0geHNrX2NvcHlfeGRwKGNvcHlfdG8sIFx1MDAyNmNvcHlfZnJvbSwgdG9fbGVuLCBcdTAwMjZmcm9tX2xlbiwgXHUwMDI2ZnJhZywgcmVtKTtcbkBAIC0zNTYsMTAgJiM0MzszODAsMjEgQEAgc3RhdGljIGludCBfX3hza19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHAsIHUzMiBsZW4pXG4gXHRcdHhza2IgPSBjb250YWluZXJfb2YoeHNrX3hkcCwgc3RydWN0IHhkcF9idWZmX3hzaywgeGRwKTtcbiBcdFx0X194c2tfcmN2X3pjX3NhZmUoeHMsIHhza2IsIGNvcGllZCAtIG1ldGFfbGVuLFxuIFx0XHRcdFx0ICByZW0gPyBYRFBfUEtUX0NPTlREIDogMCk7XG4mIzQzO1x0XHR4c2tfeGRwID0gbmV4dDtcbiBcdFx0bWV0YV9sZW4gPSAwO1xuIFx0fSB3aGlsZSAocmVtKTtcbiBcbiBcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7ZXJyX2ZyZWU6XG4mIzQzO1x0LyogUmUtc2V0IGZyYWdzIGZsYWc7IHhza19idWZmX2FsbG9jKCkgbWF5IGhhdmUgY2xlYXJlZCBmaXJzdC1cdTAwM2VmbGFnc1xuJiM0MztcdCAqIGlmIHRoZSBzYW1lIEZpbGwgUmluZyBhZGRyZXNzIGFsaWFzZWQgYmFjayB0byBmaXJzdC5cbiYjNDM7XHQgKi9cbiYjNDM7XHR4ZHBfYnVmZl9zZXRfZnJhZ3NfZmxhZyhmaXJzdCk7XG4mIzQzO1x0eHNrX2J1ZmZfZnJlZShmaXJzdCk7XG4mIzQzO2Vycl9hbGxvYzpcbiYjNDM7XHR4cy1cdTAwM2VyeF9kcm9wcGVkJiM0MzsmIzQzOztcbiYjNDM7XHRyZXR1cm4gLUVOT01FTTtcbiB9XG4gXG4gc3RhdGljIGJvb2wgeHNrX3R4X3dyaXRlYWJsZShzdHJ1Y3QgeGRwX3NvY2sgKnhzKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjE0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRFBfU09DS0VUUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hza19nZW5lcmljX3JjdiYjMzQ7LAogICAgJiMzNDtfX3hza19tYXBfcmVkaXJlY3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYnVmZmVyIGFsbG9jYXRpb24gYW5kIGhhbmRsaW5nIGZvciBmcmFnbWVudGVkIFhEUCBidWZmZXJzIGluIEFGX1hEUCBzb2NrZXRzIChgX194c2tfcmN2YCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBYRFAgc29ja2V0IHJlY2VpdmUgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDYwZjZhODE3ODEzM2FmNWU0OGNhYjUxNzY0MzYzNGZhYzQ1MmMzNjUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyA3IDAxOjE0OjA3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3hkcC94c2suYyBiL25ldC94ZHAveHNrLmMKaW5kZXggNzg1NWVlMDljNGI2NC4uMDJmZjNhZDk3NDEwZiAxMDA2NDQKLS0tIGEvbmV0L3hkcC94c2suYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQveGRwL3hzay5jCkBAIC0yOTcsMTAgJiM0MzsyOTcsMTEgQEAgc3RhdGljIGludCBfX3hza19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHAsIHUzMiBsZW4pCiB7CiAJdTMyIGZyYW1lX3NpemUgPSBfX3hza19wb29sX2dldF9yeF9mcmFtZV9zaXplKHhzLSZndDtwb29sKTsKIAl2b2lkICpjb3B5X2Zyb20gPSB4c2tfY29weV94ZHBfc3RhcnQoeGRwKSwgKmNvcHlfdG87CiYjNDM7CXN0cnVjdCB4ZHBfYnVmZiAqZmlyc3QsICpuZXh0LCAqeHNrX3hkcDsKIAl1MzIgZnJvbV9sZW4sIG1ldGFfbGVuLCByZW0sIG51bV9kZXNjOwogCXN0cnVjdCB4ZHBfYnVmZl94c2sgKnhza2I7Ci0Jc3RydWN0IHhkcF9idWZmICp4c2tfeGRwOwogCXNrYl9mcmFnX3QgKmZyYWc7CiYjNDM7CXUzMiBpOwogCiAJZnJvbV9sZW4gPSB4ZHAtJmd0O2RhdGFfZW5kIC0gY29weV9mcm9tOwogCW1ldGFfbGVuID0geGRwLSZndDtkYXRhIC0gY29weV9mcm9tOwpAQCAtMzQzLDExICYjNDM7MzQ0LDM0IEBAIHN0YXRpYyBpbnQgX194c2tfcmN2KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLCB1MzIgbGVuKQogCQlmcmFnID0gICZhbXA7c2luZm8tJmd0O2ZyYWdzWzBdOwogCX0KIAomIzQzOwlpZiAoV0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KCZhbXA7eHMtJmd0O3Bvb2wtJmd0O3hza2JfbGlzdCkpKQomIzQzOwkJZ290byBlcnJfYWxsb2M7CiYjNDM7CiYjNDM7CWZpcnN0ID0geHNrX2J1ZmZfYWxsb2MoeHMtJmd0O3Bvb2wpOwomIzQzOwlpZiAoIWZpcnN0KQomIzQzOwkJZ290byBlcnJfYWxsb2M7CiYjNDM7CiYjNDM7CXhkcF9idWZmX3NldF9mcmFnc19mbGFnKGZpcnN0KTsKJiM0MzsJZm9yIChpID0gMTsgaSAmbHQ7IG51bV9kZXNjOyBpJiM0MzsmIzQzOykgewomIzQzOwkJeHNrX3hkcCA9IHhza19idWZmX2FsbG9jKHhzLSZndDtwb29sKTsKJiM0MzsJCWlmICgheHNrX3hkcCkKJiM0MzsJCQlnb3RvIGVycl9mcmVlOwomIzQzOwomIzQzOwkJeHNrYiA9IGNvbnRhaW5lcl9vZih4c2tfeGRwLCBzdHJ1Y3QgeGRwX2J1ZmZfeHNrLCB4ZHApOwomIzQzOwkJaWYgKHVubGlrZWx5KHhza194ZHAgPT0gZmlyc3QgfHwKJiM0MzsJCQkgICAgICFsaXN0X2VtcHR5KCZhbXA7eHNrYi0mZ3Q7bGlzdF9ub2RlKSkpCiYjNDM7CQkJZ290byBlcnJfZnJlZTsKJiM0MzsKJiM0MzsJCWxpc3RfYWRkX3RhaWwoJmFtcDt4c2tiLSZndDtsaXN0X25vZGUsICZhbXA7eHMtJmd0O3Bvb2wtJmd0O3hza2JfbGlzdCk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJeGRwX2J1ZmZfY2xlYXJfZnJhZ3NfZmxhZyhmaXJzdCk7CiYjNDM7CXhza194ZHAgPSBmaXJzdDsKIAlkbyB7CiAJCXUzMiB0b19sZW4gPSBmcmFtZV9zaXplICYjNDM7IG1ldGFfbGVuOwogCQl1MzIgY29waWVkOwogCi0JCXhza194ZHAgPSB4c2tfYnVmZl9hbGxvYyh4cy0mZ3Q7cG9vbCk7CiYjNDM7CQluZXh0ID0geHNrX2J1ZmZfZ2V0X2ZyYWcoeHNrX3hkcCk7CiAJCWNvcHlfdG8gPSB4c2tfeGRwLSZndDtkYXRhIC0gbWV0YV9sZW47CiAKIAkJY29waWVkID0geHNrX2NvcHlfeGRwKGNvcHlfdG8sICZhbXA7Y29weV9mcm9tLCB0b19sZW4sICZhbXA7ZnJvbV9sZW4sICZhbXA7ZnJhZywgcmVtKTsKQEAgLTM1NiwxMCAmIzQzOzM4MCwyMSBAQCBzdGF0aWMgaW50IF9feHNrX3JjdihzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCwgdTMyIGxlbikKIAkJeHNrYiA9IGNvbnRhaW5lcl9vZih4c2tfeGRwLCBzdHJ1Y3QgeGRwX2J1ZmZfeHNrLCB4ZHApOwogCQlfX3hza19yY3ZfemNfc2FmZSh4cywgeHNrYiwgY29waWVkIC0gbWV0YV9sZW4sCiAJCQkJICByZW0gPyBYRFBfUEtUX0NPTlREIDogMCk7CiYjNDM7CQl4c2tfeGRwID0gbmV4dDsKIAkJbWV0YV9sZW4gPSAwOwogCX0gd2hpbGUgKHJlbSk7CiAKIAlyZXR1cm4gMDsKJiM0MzsKJiM0MztlcnJfZnJlZToKJiM0MzsJLyogUmUtc2V0IGZyYWdzIGZsYWc7IHhza19idWZmX2FsbG9jKCkgbWF5IGhhdmUgY2xlYXJlZCBmaXJzdC0mZ3Q7ZmxhZ3MKJiM0MzsJICogaWYgdGhlIHNhbWUgRmlsbCBSaW5nIGFkZHJlc3MgYWxpYXNlZCBiYWNrIHRvIGZpcnN0LgomIzQzOwkgKi8KJiM0MzsJeGRwX2J1ZmZfc2V0X2ZyYWdzX2ZsYWcoZmlyc3QpOwomIzQzOwl4c2tfYnVmZl9mcmVlKGZpcnN0KTsKJiM0MztlcnJfYWxsb2M6CiYjNDM7CXhzLSZndDtyeF9kcm9wcGVkJiM0MzsmIzQzOzsKJiM0MzsJcmV0dXJuIC1FTk9NRU07CiB9CiAKIHN0YXRpYyBib29sIHhza190eF93cml0ZWFibGUoc3RydWN0IHhkcF9zb2NrICp4cykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkyOQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBYRFAgU29ja2V0IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXTigJlzIHR3ZWFraW5nIHRoZSBgX194c2tfcmN2YCBmdW5jdGlvbiB3aXRoaW4gYG5ldC94ZHAveHNrLmNgLiBGcm9tIHdoYXQgSSBnYXRoZXIsIGl0JiMzOTtzIGFib3V0IGFsdGVyaW5nIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBtYW5hZ2VtZW50IHdpdGhpbiB0aGF0IGNydWNpYWwgYF9feHNrX3JjdmAgZnVuY3Rpb24sIHRoZSBjb3JlIG9mIEFGX1hEUCYjMzk7cyBkYXRhIGhhbmRsaW5nLgoKRXNzZW50aWFsbHksIHRoZXkmIzM5O3JlIGFsbG9jYXRpbmcgYSBgZmlyc3RgIGJ1ZmZlciBhbmQgdGhlbiBsb29waW5nIHRvIGdldCBgbnVtX2Rlc2MgLSAxYCBtb3JlLCBhZGRpbmcgdGhlbSB0byB0aGUgYHhzLSZndDtwb29sLSZndDt4c2tiX2xpc3RgLiBUaGVuLCB0aGV5JiMzOTtyZSBpdGVyYXRpbmcgdGhyb3VnaCB0aG9zZSBidWZmZXJzLCB1c2luZyBgeHNrX2J1ZmZfZ2V0X2ZyYWcoeHNrX3hkcClgLiBJZiB0aGVyZSYjMzk7cyBhbiBhbGxvY2F0aW9uIGZhaWx1cmUgYWxvbmcgdGhlIHdheSwgaXQgdHJpZ2dlcnMgYSBjbGVhbi11cCBhbmQgZnJlZXMgdGhlIGJ1ZmZlcnMuCgpUaGlzIGlzIGEgY2xlYXIsIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBBRl9YRFAgc3Vic3lzdGVtIOKAkyBhbmQgbXkgZXhwZXJ0IGludHVpdGlvbiBpbW1lZGlhdGVseSBzY3JlYW1zICYjMzQ7RlVaWiBJVCEmIzM0Oy4gQW55dGltZSB5b3UmIzM5O3JlIHRvdWNoaW5nIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24sIGVzcGVjaWFsbHkgaW4gc29tZXRoaW5nIGFzIHBlcmZvcm1hbmNlLXNlbnNpdGl2ZSBhcyBBRl9YRFAsIHlvdSYjMzk7cmUgb3BlbmluZyB0aGUgZG9vciB0byBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGFuZCBzdWJ0bGUgY29ybmVyIGNhc2VzLiBXZSBuZWVkIHRvIGhhbW1lciB0aGlzIHdpdGggZnV6emluZy4KCk15IG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkmIzM5O20gZ29pbmcgdG8gc2VhcmNoIHRocm91Z2ggdGhlIGBuZXQveGRwL0tjb25maWdgIGZpbGUuIEkmIzM5O2xsIHN0YXJ0IHdpdGggc29tZXRoaW5nIG9idmlvdXMgbGlrZSBgWERQX1NPQ0tFVFNgLCBvciBtYXliZSBqdXN0IGBYRFBgIGFuZCBzZWUgd2hhdCBjb21lcyB1cC4gTmVlZCB0byBtYWtlIHN1cmUgdGhpcyBjb2RlIGlzIGVuYWJsZWQgaW4gdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhEUF9TT0NLRVRTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hkcC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZHAvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L3hkcC9LY29uZmlnOjI6Y29uZmlnIFhEUF9TT0NLRVRTXG5uZXQveGRwL0tjb25maWctMy1cdGJvb2wgXCYjMzQ7WERQIHNvY2tldHNcJiMzNDtcbi0tXG5uZXQveGRwL0tjb25maWctOS1cbm5ldC94ZHAvS2NvbmZpZzoxMDpjb25maWcgWERQX1NPQ0tFVFNfRElBR1xubmV0L3hkcC9LY29uZmlnLTExLVx0dHJpc3RhdGUgXCYjMzQ7WERQIHNvY2tldHM6IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYwMgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRlcGVuZGVuY2llcyBhbmQgdGhlIGBYRFBfU09DS0VUU2AgQ29uZmlnKioKCk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gSSYjMzk7bSBsb29raW5nIGF0IGhhcyBgWERQX1NPQ0tFVFNgIGVuYWJsZWQuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgc2V0dGluZy4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBkZXBlbmRlbmN5IGFuYWx5c2lzLiBJIGhhdmUgdG8gcXVpY2tseSBhc2NlcnRhaW4gaWYgYFhEUF9TT0NLRVRTYCByZWxpZXMgb24gYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIG9yIGZlYXR1cmVzIGJlaW5nIGFjdGl2ZS4gQXJlIHRoZXJlIGFueSBwcmVyZXF1aXNpdGVzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgc3BlY2lmaWMga2VybmVsIG1vZHVsZXMgb3IgbGlicmFyaWVzIHRoYXQgdGhpcyBlbmFibGVzIGFuZCB0aGVyZWZvcmUsIEkgc2hvdWxkIGJlIGxvb2tpbmcgb3V0IGZvcj8gVW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgY3JpdGljYWwgdG8gZ3Jhc3BpbmcgaG93IGBYRFBfU09DS0VUU2AgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgYW5kIHBvdGVudGlhbGx5IHdoYXQgb3RoZXIgYXNwZWN0cyBvZiB0aGUgc3lzdGVtIEkgbWlnaHQgbmVlZCB0byBjb25zaWRlciB3aGVuIHRyb3VibGVzaG9vdGluZyBvciB0dW5pbmcgaXQuIFRoZSBkZXBlbmRlbmNpZXMgd2lsbCBsaWtlbHkgZ3VpZGUgdGhlIG5leHQgc3RlcHMgb2YgbXkgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hkcC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZHAvS2NvbmZpZz0yPWNvbmZpZyBYRFBfU09DS0VUU1xubmV0L3hkcC9LY29uZmlnLTMtXHRib29sIFwmIzM0O1hEUCBzb2NrZXRzXCYjMzQ7XG5uZXQveGRwL0tjb25maWc6NDpcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcbm5ldC94ZHAvS2NvbmZpZy01LVx0ZGVmYXVsdCBuXG4tLVxubmV0L3hkcC9LY29uZmlnPTEwPWNvbmZpZyBYRFBfU09DS0VUU19ESUFHXG5uZXQveGRwL0tjb25maWctMTEtXHR0cmlzdGF0ZSBcJiMzNDtYRFAgc29ja2V0czogbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbm5ldC94ZHAvS2NvbmZpZzoxMjpcdGRlcGVuZHMgb24gWERQX1NPQ0tFVFNcbm5ldC94ZHAvS2NvbmZpZy0xMy1cdGRlZmF1bHQgblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5ODgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgbXkgb3duIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFhEUF9TT0NLRVRTIGFuZCBCUEZfU1lTQ0FMTCBEZXBlbmRlbmN5KioKCkFscmlnaHQsIEkmIzM5O20gZGlnZ2luZyBpbnRvIGBYRFBfU09DS0VUU2AgYW5kIHRoZSBhcHBhcmVudCBkZXBlbmRlbmN5IG9uIGBCUEZfU1lTQ0FMTGAuIE15IGZpcnN0IHN0ZXAgaXMgdG8gcGlucG9pbnQgdGhlIGNvcmUgc3ltYm9scyBpbnZvbHZlZC4gUmlnaHQsIGxldCYjMzk7cyBzZWUsIHRoZSBjb2RlIHNlZW1zIHRvIHJldm9sdmUgYXJvdW5kIGBfX3hza19yY3ZgLiBJcyBpdCBhIHN0YXRpYyBmdW5jdGlvbiwgSSB3b25kZXI/IFllcCwgdGhlcmUgaXQgaXM6IGBzdGF0aWMgaW50IF9feHNrX3JjdihzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCwgdTMyIGxlbilgLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQuIFRpbWUgdG8gdHJhY2UgdGhlIGNhbGxlcnMgb2YgYF9feHNrX3JjdmAgYW5kIGdldCBhIGJldHRlciBwaWN0dXJlIG9mIHRoZSB3b3JrZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3hza19yY3YmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGRwL3hzay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZHAveHNrLmM9MTY1PWludCB4c2tfcmVnX3Bvb2xfYXRfcWlkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuLS1cbm5ldC94ZHAveHNrLmMtMTkwLVxubmV0L3hkcC94c2suYzoxOTE6c3RhdGljIGludCBfX3hza19yY3ZfemMoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmX3hzayAqeHNrYiwgdTMyIGxlbixcbm5ldC94ZHAveHNrLmMtMTkyLVx0XHRcdHUzMiBmbGFncylcbi0tXG5uZXQveGRwL3hzay5jLTIwNy1cbm5ldC94ZHAveHNrLmM6MjA4OnN0YXRpYyB2b2lkIF9feHNrX3Jjdl96Y19zYWZlKHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZl94c2sgKnhza2IsXG5uZXQveGRwL3hzay5jLTIwOS1cdFx0XHQgICAgICB1MzIgbGVuLCB1MzIgZmxhZ3MpXG4tLVxubmV0L3hkcC94c2suYz0yMTk9c3RhdGljIGludCB4c2tfcmN2X3pjKHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLCB1MzIgbGVuKVxuLS1cbm5ldC94ZHAveHNrLmMtMjI5LVx0aWYgKGxpa2VseSghZnJhZ3MpKSB7XG5uZXQveGRwL3hzay5jOjIzMDpcdFx0ZXJyID0gX194c2tfcmN2X3pjKHhzLCB4c2tiLCBsZW4sIGNvbnRkKTtcbm5ldC94ZHAveHNrLmMtMjMxLVx0XHRpZiAoZXJyKVxuLS1cbm5ldC94ZHAveHNrLmMtMjQzLVxubmV0L3hkcC94c2suYzoyNDQ6XHRfX3hza19yY3ZfemNfc2FmZSh4cywgeHNrYiwgbGVuLCBjb250ZCk7XG5uZXQveGRwL3hzay5jLTI0NS1cdHhza2JfbGlzdCA9IFx1MDAyNnhza2ItXHUwMDNlcG9vbC1cdTAwM2V4c2tiX2xpc3Q7XG4tLVxubmV0L3hkcC94c2suYy0yNDktXHRcdGxlbiA9IHBvcy1cdTAwM2V4ZHAuZGF0YV9lbmQgLSBwb3MtXHUwMDNleGRwLmRhdGE7XG5uZXQveGRwL3hzay5jOjI1MDpcdFx0X194c2tfcmN2X3pjX3NhZmUoeHMsIHBvcywgbGVuLCBjb250ZCk7XG5uZXQveGRwL3hzay5jLTI1MS1cdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZwb3MtXHUwMDNlbGlzdF9ub2RlKTtcbi0tXG5uZXQveGRwL3hzay5jPTI2OD1zdGF0aWMgdTMyIHhza19jb3B5X3hkcCh2b2lkICp0bywgdm9pZCAqKmZyb20sIHUzMiB0b19sZW4sXG4tLVxubmV0L3hkcC94c2suYy0yOTUtXG5uZXQveGRwL3hzay5jOjI5NjpzdGF0aWMgaW50IF9feHNrX3JjdihzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCwgdTMyIGxlbilcbm5ldC94ZHAveHNrLmMtMjk3LXtcbi0tXG5uZXQveGRwL3hzay5jLTMxOS1cdFx0eHNrYiA9IGNvbnRhaW5lcl9vZih4c2tfeGRwLCBzdHJ1Y3QgeGRwX2J1ZmZfeHNrLCB4ZHApO1xubmV0L3hkcC94c2suYzozMjA6XHRcdGVyciA9IF9feHNrX3Jjdl96Yyh4cywgeHNrYiwgbGVuLCAwKTtcbm5ldC94ZHAveHNrLmMtMzIxLVx0XHRpZiAoZXJyKSB7XG4tLVxubmV0L3hkcC94c2suYy0zODAtXHRcdHhza2IgPSBjb250YWluZXJfb2YoeHNrX3hkcCwgc3RydWN0IHhkcF9idWZmX3hzaywgeGRwKTtcbm5ldC94ZHAveHNrLmM6MzgxOlx0XHRfX3hza19yY3ZfemNfc2FmZSh4cywgeHNrYiwgY29waWVkIC0gbWV0YV9sZW4sXG5uZXQveGRwL3hzay5jLTM4Mi1cdFx0XHRcdCAgcmVtID8gWERQX1BLVF9DT05URCA6IDApO1xuLS1cbm5ldC94ZHAveHNrLmM9NDcyPWludCB4c2tfZ2VuZXJpY19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHApXG4tLVxubmV0L3hkcC94c2suYy00NzktXHRcdHNwaW5fbG9ja19iaChcdTAwMjZ4cy1cdTAwM2Vwb29sLVx1MDAzZXJ4X2xvY2spO1xubmV0L3hkcC94c2suYzo0ODA6XHRcdGVyciA9IF9feHNrX3Jjdih4cywgeGRwLCBsZW4pO1xubmV0L3hkcC94c2suYy00ODEtXHRcdHhza19mbHVzaCh4cyk7XG4tLVxubmV0L3hkcC94c2suYz00ODg9c3RhdGljIGludCB4c2tfcmN2KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxuLS1cbm5ldC94ZHAveHNrLmMtNTAxLVxubmV0L3hkcC94c2suYzo1MDI6XHRlcnIgPSBfX3hza19yY3YoeHMsIHhkcCwgbGVuKTtcbm5ldC94ZHAveHNrLmMtNTAzLVx0aWYgKCFlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ0MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBYU0sgUmVjZWl2ZSBQYXRoKioKCkFscmlnaHQsIHNvIGBfX3hza19yY3ZgIGlzIHRoZSBjb3JlIHJlY2VpdmUgZnVuY3Rpb24sIHRoYXQgbXVjaCBpcyBjbGVhci4gVGhlIGtleSBpcyBob3cgaXQmIzM5O3MgYmVpbmcgaW52b2tlZC4gSXQgbG9va3MgbGlrZSBib3RoIGB4c2tfZ2VuZXJpY19yY3ZgIGFuZCB0aGUgc3RyYWlnaHRmb3J3YXJkIGB4c2tfcmN2YCBhcmUgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgYF9feHNrX3JjdmAuIFRoaXMgc3VnZ2VzdHMgYSBwb3RlbnRpYWwgbGF5ZXJpbmcgb3IgYWJzdHJhY3Rpb24gaW4gdGhlIHJlY2VpdmUgcGF0aC4gTm93LCB0aGUgaW50ZXJlc3RpbmcgcXVlc3Rpb24gaXMgd2hldGhlciBgeHNrX2dlbmVyaWNfcmN2YCBpcyBleHBvcnRlZC4gSWYgc28sIHRoYXQgaW1tZWRpYXRlbHkgd2lkZW5zIHRoZSBuZXQgb2YgcG90ZW50aWFsIGNhbGxlcnMsIGFuZCBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBzcGVjaWZpYyBzY2VuYXJpb3MgaXQmIzM5O3MgaW50ZW5kZWQgZm9yIHRvIHNlZSBob3cgb3RoZXIga2VybmVsIG1vZHVsZXMgbWlnaHQgYmUgbGV2ZXJhZ2luZyBpdC4gQSBxdWljayBjaGVjayBvZiB0aGUgZXhwb3J0IHN5bWJvbHMgaXMgaW4gb3JkZXIuIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHNrX2dlbmVyaWNfcmN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hkcC94c2suYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGRwL3hzay5jPTQ2NT1zdGF0aWMgdm9pZCB4c2tfZmx1c2goc3RydWN0IHhkcF9zb2NrICp4cylcbi0tXG5uZXQveGRwL3hzay5jLTQ3MS1cbm5ldC94ZHAveHNrLmM6NDcyOmludCB4c2tfZ2VuZXJpY19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHApXG5uZXQveGRwL3hzay5jLTQ3My17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MjMKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQW5hbHl6aW5nIENvZGUgSW50ZXJhY3Rpb25zKioKCkFscmlnaHQsIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBiaXQgb2YgY29kZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGJlZm9yZSBJIGdldCB0b28gZGVlcCBpbnRvIHRoZSBuaXR0eS1ncml0dHkgb2YgdGhlIGxvZ2ljLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gSXMgdGhpcyBhIHNlbGYtY29udGFpbmVkIG1vZHVsZSwgb3IgaXMgaXQgaW50ZXJhY3Rpbmcgd2l0aCBvdGhlciBmaWxlcyBhbmQgbW9kdWxlcz8gSXQmIzM5O3MgY3J1Y2lhbCB0byBpZGVudGlmeSBpZiB0aGlzIGZ1bmN0aW9uLCBjbGFzcywgb3Igd2hhdGV2ZXIgd2UmIzM5O3JlIGxvb2tpbmcgYXQsIGlzICoqZXhwb3J0ZWQqKiDigJMgbWVhbmluZywgdXNlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIOKAkyBvciBpZiBpdCYjMzk7cyBiZWluZyAqKmNhbGxlZCBmcm9tIG90aGVyIGZpbGVzKiouIFRoaXMgaXMgYWJzb2x1dGVseSBmdW5kYW1lbnRhbCB0byB1bmRlcnN0YW5kaW5nIGl0cyBwb3RlbnRpYWwgaW1wYWN0IGFuZCBkZXBlbmRlbmNpZXMuIFRoaXMgaGVscHMgbmFycm93IGRvd24gcG9zc2libGUgc291cmNlcyBvZiBpc3N1ZXMsIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMsIGFuZCBob3cgY2hhbmdpbmcgdGhlIGNvZGUgaGVyZSBtaWdodCByaXBwbGUgdGhyb3VnaCB0aGUgYXBwbGljYXRpb24uIEtub3dpbmcgdGhlIHNjb3BlIGFuZCB3aGVyZSBpdOKAmXMgYmVpbmcgdXNlZCBpcyBrZXkgdG8gbXkgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza19nZW5lcmljX3JjdiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC94ZHBfc29jay5oPTExNz1zdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyB7XG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xMjUtXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjEyNjppbnQgeHNrX2dlbmVyaWNfcmN2KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTtcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTI3LWludCBfX3hza19tYXBfcmVkaXJlY3Qoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHApO1xuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg9MTY2PXN0YXRpYyBpbmxpbmUgdm9pZCB4c2tfdHhfbWV0YWRhdGFfY29tcGxldGUoc3RydWN0IHhza190eF9tZXRhZGF0YV9jb21wbCAqY29tcGwsXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xNzktXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjE4MDpzdGF0aWMgaW5saW5lIGludCB4c2tfZ2VuZXJpY19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHApXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTE4MS17XG4tLVxubmV0L2NvcmUvZmlsdGVyLmM9NDYyMT1zdGF0aWMgaW50IHhkcF9kb19nZW5lcmljX3JlZGlyZWN0X21hcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9jb3JlL2ZpbHRlci5jLTQ2NTYtXHRjYXNlIEJQRl9NQVBfVFlQRV9YU0tNQVA6XG5uZXQvY29yZS9maWx0ZXIuYzo0NjU3Olx0XHRlcnIgPSB4c2tfZ2VuZXJpY19yY3YoZndkLCB4ZHApO1xubmV0L2NvcmUvZmlsdGVyLmMtNDY1OC1cdFx0aWYgKGVycilcbi0tXG5uZXQveGRwL3hzay5jPTQ2NT1zdGF0aWMgdm9pZCB4c2tfZmx1c2goc3RydWN0IHhkcF9zb2NrICp4cylcbi0tXG5uZXQveGRwL3hzay5jLTQ3MS1cbm5ldC94ZHAveHNrLmM6NDcyOmludCB4c2tfZ2VuZXJpY19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHApXG5uZXQveGRwL3hzay5jLTQ3My17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1MzYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgWERQIExhbmRzY2FwZTogQSBRdWljayBBdWRpdCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIFhEUCBjb2RlLiBJJiMzOTt2ZSBnb3QgYHhza19nZW5lcmljX3JjdmAgaW4gbWluZCDigJMgdGhhdCYjMzk7cyBjYWxsZWQgZnJvbSBgeGRwX2RvX2dlbmVyaWNfcmVkaXJlY3RfbWFwYCBpbiBgbmV0L2NvcmUvZmlsdGVyLmNgLCBnb3QgaXQuIFRoYXQgZ2l2ZXMgbWUgYSBjZXJ0YWluIG1lbnRhbCBwaWN0dXJlIG9mIGhvdyBkYXRhIGlzIGdldHRpbmcgcHVzaGVkIGFyb3VuZCB3aXRoIGdlbmVyaWMgWERQIG1lY2hhbmlzbXMuIEJ1dC4uLiBob2xkIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEkmIzM5O20gd29uZGVyaW5nLCB3aGF0IGFib3V0IGB4c2tfcmN2YD8gVGhhdCYjMzk7cyB0aGUgcGFydCBJIHdhbnQgdG8gYmUgYXdhcmUgb2YgYW5kIGtlZXAgdHJhY2sgb2YuIElzIGl0IHBhcmFsbGVsIHRvIHRoZSBnZW5lcmljIGZsb3csIG9yIHNvbWV0aGluZyBkaWZmZXJlbnQ/IEl0JiMzOTtzIGp1c3QgYSBxdWljayB0aG91Z2h0IGJ1dCB3b3J0aCByZXZpc2l0aW5nLiBUaW1lIGZvciBhbm90aGVyIG1lbnRhbCBzd2VlcC4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfcmN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hkcC94c2suYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGRwL3hzay5jPTE2NT1pbnQgeHNrX3JlZ19wb29sX2F0X3FpZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbi0tXG5uZXQveGRwL3hzay5jLTE5MC1cbm5ldC94ZHAveHNrLmM6MTkxOnN0YXRpYyBpbnQgX194c2tfcmN2X3pjKHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZl94c2sgKnhza2IsIHUzMiBsZW4sXG5uZXQveGRwL3hzay5jLTE5Mi1cdFx0XHR1MzIgZmxhZ3MpXG4tLVxubmV0L3hkcC94c2suYy0yMDctXG5uZXQveGRwL3hzay5jOjIwODpzdGF0aWMgdm9pZCBfX3hza19yY3ZfemNfc2FmZShzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmZfeHNrICp4c2tiLFxubmV0L3hkcC94c2suYy0yMDktXHRcdFx0ICAgICAgdTMyIGxlbiwgdTMyIGZsYWdzKVxuLS1cbm5ldC94ZHAveHNrLmMtMjE4LVxubmV0L3hkcC94c2suYzoyMTk6c3RhdGljIGludCB4c2tfcmN2X3pjKHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLCB1MzIgbGVuKVxubmV0L3hkcC94c2suYy0yMjAte1xuLS1cbm5ldC94ZHAveHNrLmMtMjI5LVx0aWYgKGxpa2VseSghZnJhZ3MpKSB7XG5uZXQveGRwL3hzay5jOjIzMDpcdFx0ZXJyID0gX194c2tfcmN2X3pjKHhzLCB4c2tiLCBsZW4sIGNvbnRkKTtcbm5ldC94ZHAveHNrLmMtMjMxLVx0XHRpZiAoZXJyKVxuLS1cbm5ldC94ZHAveHNrLmMtMjQzLVxubmV0L3hkcC94c2suYzoyNDQ6XHRfX3hza19yY3ZfemNfc2FmZSh4cywgeHNrYiwgbGVuLCBjb250ZCk7XG5uZXQveGRwL3hzay5jLTI0NS1cdHhza2JfbGlzdCA9IFx1MDAyNnhza2ItXHUwMDNlcG9vbC1cdTAwM2V4c2tiX2xpc3Q7XG4tLVxubmV0L3hkcC94c2suYy0yNDktXHRcdGxlbiA9IHBvcy1cdTAwM2V4ZHAuZGF0YV9lbmQgLSBwb3MtXHUwMDNleGRwLmRhdGE7XG5uZXQveGRwL3hzay5jOjI1MDpcdFx0X194c2tfcmN2X3pjX3NhZmUoeHMsIHBvcywgbGVuLCBjb250ZCk7XG5uZXQveGRwL3hzay5jLTI1MS1cdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZwb3MtXHUwMDNlbGlzdF9ub2RlKTtcbi0tXG5uZXQveGRwL3hzay5jPTI2OD1zdGF0aWMgdTMyIHhza19jb3B5X3hkcCh2b2lkICp0bywgdm9pZCAqKmZyb20sIHUzMiB0b19sZW4sXG4tLVxubmV0L3hkcC94c2suYy0yOTUtXG5uZXQveGRwL3hzay5jOjI5NjpzdGF0aWMgaW50IF9feHNrX3JjdihzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCwgdTMyIGxlbilcbm5ldC94ZHAveHNrLmMtMjk3LXtcbi0tXG5uZXQveGRwL3hzay5jLTMxOS1cdFx0eHNrYiA9IGNvbnRhaW5lcl9vZih4c2tfeGRwLCBzdHJ1Y3QgeGRwX2J1ZmZfeHNrLCB4ZHApO1xubmV0L3hkcC94c2suYzozMjA6XHRcdGVyciA9IF9feHNrX3Jjdl96Yyh4cywgeHNrYiwgbGVuLCAwKTtcbm5ldC94ZHAveHNrLmMtMzIxLVx0XHRpZiAoZXJyKSB7XG4tLVxubmV0L3hkcC94c2suYy0zODAtXHRcdHhza2IgPSBjb250YWluZXJfb2YoeHNrX3hkcCwgc3RydWN0IHhkcF9idWZmX3hzaywgeGRwKTtcbm5ldC94ZHAveHNrLmM6MzgxOlx0XHRfX3hza19yY3ZfemNfc2FmZSh4cywgeHNrYiwgY29waWVkIC0gbWV0YV9sZW4sXG5uZXQveGRwL3hzay5jLTM4Mi1cdFx0XHRcdCAgcmVtID8gWERQX1BLVF9DT05URCA6IDApO1xuLS1cbm5ldC94ZHAveHNrLmM9NDI1PXN0YXRpYyBib29sIHhza19kZXZfcXVldWVfdmFsaWQoY29uc3Qgc3RydWN0IHhkcF9zb2NrICp4cyxcbi0tXG5uZXQveGRwL3hzay5jLTQ0OS1cbm5ldC94ZHAveHNrLmM6NDUwOnN0YXRpYyBpbnQgeHNrX3Jjdl9jaGVjayhzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCwgdTMyIGxlbilcbm5ldC94ZHAveHNrLmMtNDUxLXtcbi0tXG5uZXQveGRwL3hzay5jPTQ3Mj1pbnQgeHNrX2dlbmVyaWNfcmN2KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxuLS1cbm5ldC94ZHAveHNrLmMtNDc2LVxubmV0L3hkcC94c2suYzo0Nzc6XHRlcnIgPSB4c2tfcmN2X2NoZWNrKHhzLCB4ZHAsIGxlbik7XG5uZXQveGRwL3hzay5jLTQ3OC1cdGlmICghZXJyKSB7XG5uZXQveGRwL3hzay5jLTQ3OS1cdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnhzLVx1MDAzZXBvb2wtXHUwMDNlcnhfbG9jayk7XG5uZXQveGRwL3hzay5jOjQ4MDpcdFx0ZXJyID0gX194c2tfcmN2KHhzLCB4ZHAsIGxlbik7XG5uZXQveGRwL3hzay5jLTQ4MS1cdFx0eHNrX2ZsdXNoKHhzKTtcbi0tXG5uZXQveGRwL3hzay5jLTQ4Ny1cbm5ldC94ZHAveHNrLmM6NDg4OnN0YXRpYyBpbnQgeHNrX3JjdihzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcbm5ldC94ZHAveHNrLmMtNDg5LXtcbi0tXG5uZXQveGRwL3hzay5jLTQ5Mi1cbm5ldC94ZHAveHNrLmM6NDkzOlx0ZXJyID0geHNrX3Jjdl9jaGVjayh4cywgeGRwLCBsZW4pO1xubmV0L3hkcC94c2suYy00OTQtXHRpZiAoZXJyKVxuLS1cbm5ldC94ZHAveHNrLmMtNDk4LVx0XHRsZW4gPSB4ZHAtXHUwMDNlZGF0YV9lbmQgLSB4ZHAtXHUwMDNlZGF0YTtcbm5ldC94ZHAveHNrLmM6NDk5Olx0XHRyZXR1cm4geHNrX3Jjdl96Yyh4cywgeGRwLCBsZW4pO1xubmV0L3hkcC94c2suYy01MDAtXHR9XG5uZXQveGRwL3hzay5jLTUwMS1cbm5ldC94ZHAveHNrLmM6NTAyOlx0ZXJyID0gX194c2tfcmN2KHhzLCB4ZHAsIGxlbik7XG5uZXQveGRwL3hzay5jLTUwMy1cdGlmICghZXJyKVxuLS1cbm5ldC94ZHAveHNrLmM9NTA4PWludCBfX3hza19tYXBfcmVkaXJlY3Qoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHApXG4tLVxubmV0L3hkcC94c2suYy01MTEtXG5uZXQveGRwL3hzay5jOjUxMjpcdGVyciA9IHhza19yY3YoeHMsIHhkcCk7XG5uZXQveGRwL3hzay5jLTUxMy1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg0NDYKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgbXlzZWxmOgoKKipUcmFjaW5nIHRoZSBYRFAgRmxvdyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHhza19yY3ZgLiBUaGF0JiMzOTtzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgcmVjZWl2aW5nIGRhdGEgaW4gdGhlIFhEUCBzb2NrZXQgY29udGV4dC4gTm93LCBJIHNlZSBpdCYjMzk7cyBiZWluZyBjYWxsZWQgYnkgYF9feHNrX21hcF9yZWRpcmVjdGAuIFdhaXQgYSBtaW51dGUsIGlzbiYjMzk7dCBgX194c2tfbWFwX3JlZGlyZWN0YCBhbiBleHBvcnRlZCBzeW1ib2w/IEl0IHNlZW1zIGxpa2UgaXQgd291bGQgYmUgc2luY2UgaXQgaXMgYmVpbmcgY2FsbGVkIGJ5IGFuIGltcG9ydGFudCBmdW5jdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBleHBvcnQgbWVjaGFuaWNzIGFuZCBob3cgdGhpbmdzIGFyZSBzZXQgdXAgYW5kIGhvdyBkaWZmZXJlbnQgbW9kdWxlcyBpbnRlcmFjdCB3aXRoIGVhY2ggb3RoZXIuIFRoaXMgaXMgYWxsIGNvbWluZyB0b2dldGhlciB0byBoZWxwIG1lIGZvbGxvdyB0aGUgZGF0YSBwYXRoIGFuZCB1bmRlcnN0YW5kIGhvdyB0cmFmZmljIGdldHMgc3RlZXJlZCBpbiB0aGlzIFhEUCBhcmNoaXRlY3R1cmUuIFNvIEkgY2FuIGNsZWFybHkgdW5kZXJzdGFuZCBob3cgWERQIGFuZCBYU0sgYXJlIHdvcmtpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19feHNrX21hcF9yZWRpcmVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC94ZHBfc29jay5oPTEyNj1pbnQgeHNrX2dlbmVyaWNfcmN2KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTtcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg6MTI3OmludCBfX3hza19tYXBfcmVkaXJlY3Qoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHApO1xuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xMjgtdm9pZCBfX3hza19tYXBfZmx1c2goc3RydWN0IGxpc3RfaGVhZCAqZmx1c2hfbGlzdCk7XG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2suaD0xODA9c3RhdGljIGlubGluZSBpbnQgeHNrX2dlbmVyaWNfcmN2KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTg0LVxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoxODU6c3RhdGljIGlubGluZSBpbnQgX194c2tfbWFwX3JlZGlyZWN0KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xODYte1xuLS1cbm5ldC9jb3JlL2ZpbHRlci5jPTQ0OTg9c3RhdGljIGlubGluZSBpbnQgX194ZHBfZG9fcmVkaXJlY3RfeHNrKHN0cnVjdCBicGZfcmVkaXJlY3RfaW5mbyAqcmksXG4tLVxubmV0L2NvcmUvZmlsdGVyLmMtNDUxMC1cbm5ldC9jb3JlL2ZpbHRlci5jOjQ1MTE6XHRlcnIgPSBfX3hza19tYXBfcmVkaXJlY3QoZndkLCB4ZHApO1xubmV0L2NvcmUvZmlsdGVyLmMtNDUxMi1cdGlmICh1bmxpa2VseShlcnIpKVxuLS1cbm5ldC94ZHAveHNrLmM9NDg4PXN0YXRpYyBpbnQgeHNrX3JjdihzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcbi0tXG5uZXQveGRwL3hzay5jLTUwNy1cbm5ldC94ZHAveHNrLmM6NTA4OmludCBfX3hza19tYXBfcmVkaXJlY3Qoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHApXG5uZXQveGRwL3hzay5jLTUwOS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxNTgKCQkJCQkJCW91dHB1dDogOTcKCQkJCQkJCXRob3VnaHRzOiA0NDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBBRl9YRFAgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgc2VlLCBgeHNrX2dlbmVyaWNfcmN2YCBhbmQgYF9feHNrX21hcF9yZWRpcmVjdGAgYXJlIHRoZSBrZXkgZW50cnkgcG9pbnRzIGhlcmUuIEkmIzM5O2xsIG5lZWQgdG8gYWRkIHRob3NlIHRvIG15IGBGb2N1c1N5bWJvbHNgIGxpc3QuIENvbnNpZGVyaW5nIHRoZSBjb25maWd1cmF0aW9uLCBpdCBsb29rcyBsaWtlIGBYRFBfU09DS0VUU2AgaXMgdGhlIHBlcnRpbmVudCBjb25maWcuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgZGVwZW5kZW50IGNvbmZpZ3MgdGhhdCBtaWdodCBpbXBhY3QgdGhpcyBhbmFseXNpcy4gYEJQRl9TWVNDQUxMYCBpcyBhIGRlcGVuZGVuY3ksIGJ1dCB0aGF0JiMzOTtzIHVzdWFsbHkgZW5hYmxlZCBzbyBpdCBzaG91bGQgYmUgZmluZS4gSSYjMzk7bGwgbWFrZSBzdXJlIGBYRFBfU09DS0VUU2AgaXMgaW5jbHVkZWQuCgpOb3csIGxldCYjMzk7cyBnZXQgaW50byB0aGUgY29kZSBpdHNlbGYuIEV4YW1pbmluZyB0aGUgc25pcHBldCBJIHNlZSwgaXQgbG9va3MgbGlrZSBzdGFuZGFyZCBmdW5jdGlvbmFsIGxvZ2ljIGZvciBtYW5hZ2luZyBYRFAgYnVmZmVycyB3aXRoaW4gQUZfWERQIHNvY2tldHMuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBvYnNlcnZpbmcgdGhlIGFsbG9jYXRpb24gYW5kIG1hbmFnZW1lbnQgb2YgZnJhZ21lbnRlZCBYRFAgYnVmZmVycy4gVGhlIHdheSBpdCBoYW5kbGVzIGB4c2tfYnVmZl9hbGxvY2AsIHRoZSB1c2Ugb2YgYGxpc3RfYWRkX3RhaWxgLCBhbmQgdGhlIGNoZWNrcyBmb3IgYWxsb2NhdGlvbiBmYWlsdXJlcyBwb2ludCBkaXJlY3RseSB0byB0aGF0LiBHaXZlbiB0aGUgY29tcGxleGl0eSBhcm91bmQgYnVmZmVyIG1hbmFnZW1lbnQgYW5kIGFsbG9jYXRpb24sIGZ1enppbmcgc2VlbXMgbGlrZSBhIHZpYWJsZSBhcHByb2FjaCwgZXNwZWNpYWxseSBnaXZlbiB0aGUgaGFuZGxpbmcgb2YgZnJhZ21lbnRlZCBidWZmZXJzLiBUaGlzIHNlZW1zIGxpa2UgYSBwcm9taXNpbmcgYXJlYSBmb3IgZmluZGluZyBlZGdlIGNhc2VzLiBTbywgaW4gc3VtbWFyeTogSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgc3ltYm9scyBgeHNrX2dlbmVyaWNfcmN2YCBhbmQgYF9feHNrX21hcF9yZWRpcmVjdGAsIHdpdGggdGhlIGBYRFBfU09DS0VUU2AgY29uZmlnIGluIG1pbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRFBfU09DS0VUUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hza19nZW5lcmljX3JjdiYjMzQ7LAogICAgJiMzNDtfX3hza19tYXBfcmVkaXJlY3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYnVmZmVyIGFsbG9jYXRpb24gYW5kIGhhbmRsaW5nIGZvciBmcmFnbWVudGVkIFhEUCBidWZmZXJzIGluIEFGX1hEUCBzb2NrZXRzIChgX194c2tfcmN2YCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBYRFAgc29ja2V0IHJlY2VpdmUgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WERQX1NPQ0tFVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4c2tfZ2VuZXJpY19yY3YmIzM0OywKICAgICYjMzQ7X194c2tfbWFwX3JlZGlyZWN0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBoYW5kbGluZyBmb3IgZnJhZ21lbnRlZCBYRFAgYnVmZmVycyBpbiBBRl9YRFAgc29ja2V0cyAoYF9feHNrX3JjdmApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgWERQIHNvY2tldCByZWNlaXZlIHBhdGguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToxNDowOS4yNDY5NjQzMDJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzEyNjkwNjc1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRFBfU09DS0VUU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhza19nZW5lcmljX3JjdlwiLFxuICAgIFwiX194c2tfbWFwX3JlZGlyZWN0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYnVmZmVyIGFsbG9jYXRpb24gYW5kIGhhbmRsaW5nIGZvciBmcmFnbWVudGVkIFhEUCBidWZmZXJzIGluIEFGX1hEUCBzb2NrZXRzIChgX194c2tfcmN2YCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBYRFAgc29ja2V0IHJlY2VpdmUgcGF0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MTQ6MDkuMjQ2OTcwNjAyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjI2MDE1MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA2MGY2YTgxNzgxMzNhZjVlNDhjYWI1MTc2NDM2MzRmYWM0NTJjMzY1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDcgMDE6MTQ6MDcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3hkcC94c2suYyBiL25ldC94ZHAveHNrLmNcXG5pbmRleCA3ODU1ZWUwOWM0YjY0Li4wMmZmM2FkOTc0MTBmIDEwMDY0NFxcbi0tLSBhL25ldC94ZHAveHNrLmNcXG4rKysgYi9uZXQveGRwL3hzay5jXFxuQEAgLTI5NywxMCArMjk3LDExIEBAIHN0YXRpYyBpbnQgX194c2tfcmN2KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLCB1MzIgbGVuKVxcbiB7XFxuIFxcdHUzMiBmcmFtZV9zaXplID0gX194c2tfcG9vbF9nZXRfcnhfZnJhbWVfc2l6ZSh4cy1cXHUwMDNlcG9vbCk7XFxuIFxcdHZvaWQgKmNvcHlfZnJvbSA9IHhza19jb3B5X3hkcF9zdGFydCh4ZHApLCAqY29weV90bztcXG4rXFx0c3RydWN0IHhkcF9idWZmICpmaXJzdCwgKm5leHQsICp4c2tfeGRwO1xcbiBcXHR1MzIgZnJvbV9sZW4sIG1ldGFfbGVuLCByZW0sIG51bV9kZXNjO1xcbiBcXHRzdHJ1Y3QgeGRwX2J1ZmZfeHNrICp4c2tiO1xcbi1cXHRzdHJ1Y3QgeGRwX2J1ZmYgKnhza194ZHA7XFxuIFxcdHNrYl9mcmFnX3QgKmZyYWc7XFxuK1xcdHUzMiBpO1xcbiBcXG4gXFx0ZnJvbV9sZW4gPSB4ZHAtXFx1MDAzZWRhdGFfZW5kIC0gY29weV9mcm9tO1xcbiBcXHRtZXRhX2xlbiA9IHhkcC1cXHUwMDNlZGF0YSAtIGNvcHlfZnJvbTtcXG5AQCAtMzQzLDExICszNDQsMzQgQEAgc3RhdGljIGludCBfX3hza19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHAsIHUzMiBsZW4pXFxuIFxcdFxcdGZyYWcgPSAgXFx1MDAyNnNpbmZvLVxcdTAwM2VmcmFnc1swXTtcXG4gXFx0fVxcbiBcXG4rXFx0aWYgKFdBUk5fT05fT05DRSghbGlzdF9lbXB0eShcXHUwMDI2eHMtXFx1MDAzZXBvb2wtXFx1MDAzZXhza2JfbGlzdCkpKVxcbitcXHRcXHRnb3RvIGVycl9hbGxvYztcXG4rXFxuK1xcdGZpcnN0ID0geHNrX2J1ZmZfYWxsb2MoeHMtXFx1MDAzZXBvb2wpO1xcbitcXHRpZiAoIWZpcnN0KVxcbitcXHRcXHRnb3RvIGVycl9hbGxvYztcXG4rXFxuK1xcdHhkcF9idWZmX3NldF9mcmFnc19mbGFnKGZpcnN0KTtcXG4rXFx0Zm9yIChpID0gMTsgaSBcXHUwMDNjIG51bV9kZXNjOyBpKyspIHtcXG4rXFx0XFx0eHNrX3hkcCA9IHhza19idWZmX2FsbG9jKHhzLVxcdTAwM2Vwb29sKTtcXG4rXFx0XFx0aWYgKCF4c2tfeGRwKVxcbitcXHRcXHRcXHRnb3RvIGVycl9mcmVlO1xcbitcXG4rXFx0XFx0eHNrYiA9IGNvbnRhaW5lcl9vZih4c2tfeGRwLCBzdHJ1Y3QgeGRwX2J1ZmZfeHNrLCB4ZHApO1xcbitcXHRcXHRpZiAodW5saWtlbHkoeHNrX3hkcCA9PSBmaXJzdCB8fFxcbitcXHRcXHRcXHQgICAgICFsaXN0X2VtcHR5KFxcdTAwMjZ4c2tiLVxcdTAwM2VsaXN0X25vZGUpKSlcXG4rXFx0XFx0XFx0Z290byBlcnJfZnJlZTtcXG4rXFxuK1xcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNnhza2ItXFx1MDAzZWxpc3Rfbm9kZSwgXFx1MDAyNnhzLVxcdTAwM2Vwb29sLVxcdTAwM2V4c2tiX2xpc3QpO1xcbitcXHR9XFxuK1xcbitcXHR4ZHBfYnVmZl9jbGVhcl9mcmFnc19mbGFnKGZpcnN0KTtcXG4rXFx0eHNrX3hkcCA9IGZpcnN0O1xcbiBcXHRkbyB7XFxuIFxcdFxcdHUzMiB0b19sZW4gPSBmcmFtZV9zaXplICsgbWV0YV9sZW47XFxuIFxcdFxcdHUzMiBjb3BpZWQ7XFxuIFxcbi1cXHRcXHR4c2tfeGRwID0geHNrX2J1ZmZfYWxsb2MoeHMtXFx1MDAzZXBvb2wpO1xcbitcXHRcXHRuZXh0ID0geHNrX2J1ZmZfZ2V0X2ZyYWcoeHNrX3hkcCk7XFxuIFxcdFxcdGNvcHlfdG8gPSB4c2tfeGRwLVxcdTAwM2VkYXRhIC0gbWV0YV9sZW47XFxuIFxcbiBcXHRcXHRjb3BpZWQgPSB4c2tfY29weV94ZHAoY29weV90bywgXFx1MDAyNmNvcHlfZnJvbSwgdG9fbGVuLCBcXHUwMDI2ZnJvbV9sZW4sIFxcdTAwMjZmcmFnLCByZW0pO1xcbkBAIC0zNTYsMTAgKzM4MCwyMSBAQCBzdGF0aWMgaW50IF9feHNrX3JjdihzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCwgdTMyIGxlbilcXG4gXFx0XFx0eHNrYiA9IGNvbnRhaW5lcl9vZih4c2tfeGRwLCBzdHJ1Y3QgeGRwX2J1ZmZfeHNrLCB4ZHApO1xcbiBcXHRcXHRfX3hza19yY3ZfemNfc2FmZSh4cywgeHNrYiwgY29waWVkIC0gbWV0YV9sZW4sXFxuIFxcdFxcdFxcdFxcdCAgcmVtID8gWERQX1BLVF9DT05URCA6IDApO1xcbitcXHRcXHR4c2tfeGRwID0gbmV4dDtcXG4gXFx0XFx0bWV0YV9sZW4gPSAwO1xcbiBcXHR9IHdoaWxlIChyZW0pO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuK1xcbitlcnJfZnJlZTpcXG4rXFx0LyogUmUtc2V0IGZyYWdzIGZsYWc7IHhza19idWZmX2FsbG9jKCkgbWF5IGhhdmUgY2xlYXJlZCBmaXJzdC1cXHUwMDNlZmxhZ3NcXG4rXFx0ICogaWYgdGhlIHNhbWUgRmlsbCBSaW5nIGFkZHJlc3MgYWxpYXNlZCBiYWNrIHRvIGZpcnN0LlxcbitcXHQgKi9cXG4rXFx0eGRwX2J1ZmZfc2V0X2ZyYWdzX2ZsYWcoZmlyc3QpO1xcbitcXHR4c2tfYnVmZl9mcmVlKGZpcnN0KTtcXG4rZXJyX2FsbG9jOlxcbitcXHR4cy1cXHUwMDNlcnhfZHJvcHBlZCsrO1xcbitcXHRyZXR1cm4gLUVOT01FTTtcXG4gfVxcbiBcXG4gc3RhdGljIGJvb2wgeHNrX3R4X3dyaXRlYWJsZShzdHJ1Y3QgeGRwX3NvY2sgKnhzKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToxNDowOS43NzAzMTkyMjhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozMjYwMzU0MjA3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRFBfU09DS0VUU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhza19nZW5lcmljX3JjdlwiLFxuICAgIFwiX194c2tfbWFwX3JlZGlyZWN0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYnVmZmVyIGFsbG9jYXRpb24gYW5kIGhhbmRsaW5nIGZvciBmcmFnbWVudGVkIFhEUCBidWZmZXJzIGluIEFGX1hEUCBzb2NrZXRzIChgX194c2tfcmN2YCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBYRFAgc29ja2V0IHJlY2VpdmUgcGF0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNjBmNmE4MTc4MTMzYWY1ZTQ4Y2FiNTE3NjQzNjM0ZmFjNDUyYzM2NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMDE6MTQ6MDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQveGRwL3hzay5jIGIvbmV0L3hkcC94c2suY1xuaW5kZXggNzg1NWVlMDljNGI2NC4uMDJmZjNhZDk3NDEwZiAxMDA2NDRcbi0tLSBhL25ldC94ZHAveHNrLmNcbisrKyBiL25ldC94ZHAveHNrLmNcbkBAIC0yOTcsMTAgKzI5NywxMSBAQCBzdGF0aWMgaW50IF9feHNrX3JjdihzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCwgdTMyIGxlbilcbiB7XG4gXHR1MzIgZnJhbWVfc2l6ZSA9IF9feHNrX3Bvb2xfZ2V0X3J4X2ZyYW1lX3NpemUoeHMtXHUwMDNlcG9vbCk7XG4gXHR2b2lkICpjb3B5X2Zyb20gPSB4c2tfY29weV94ZHBfc3RhcnQoeGRwKSwgKmNvcHlfdG87XG4rXHRzdHJ1Y3QgeGRwX2J1ZmYgKmZpcnN0LCAqbmV4dCwgKnhza194ZHA7XG4gXHR1MzIgZnJvbV9sZW4sIG1ldGFfbGVuLCByZW0sIG51bV9kZXNjO1xuIFx0c3RydWN0IHhkcF9idWZmX3hzayAqeHNrYjtcbi1cdHN0cnVjdCB4ZHBfYnVmZiAqeHNrX3hkcDtcbiBcdHNrYl9mcmFnX3QgKmZyYWc7XG4rXHR1MzIgaTtcbiBcbiBcdGZyb21fbGVuID0geGRwLVx1MDAzZWRhdGFfZW5kIC0gY29weV9mcm9tO1xuIFx0bWV0YV9sZW4gPSB4ZHAtXHUwMDNlZGF0YSAtIGNvcHlfZnJvbTtcbkBAIC0zNDMsMTEgKzM0NCwzNCBAQCBzdGF0aWMgaW50IF9feHNrX3JjdihzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCwgdTMyIGxlbilcbiBcdFx0ZnJhZyA9ICBcdTAwMjZzaW5mby1cdTAwM2VmcmFnc1swXTtcbiBcdH1cbiBcbitcdGlmIChXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXHUwMDI2eHMtXHUwMDNlcG9vbC1cdTAwM2V4c2tiX2xpc3QpKSlcbitcdFx0Z290byBlcnJfYWxsb2M7XG4rXG4rXHRmaXJzdCA9IHhza19idWZmX2FsbG9jKHhzLVx1MDAzZXBvb2wpO1xuK1x0aWYgKCFmaXJzdClcbitcdFx0Z290byBlcnJfYWxsb2M7XG4rXG4rXHR4ZHBfYnVmZl9zZXRfZnJhZ3NfZmxhZyhmaXJzdCk7XG4rXHRmb3IgKGkgPSAxOyBpIFx1MDAzYyBudW1fZGVzYzsgaSsrKSB7XG4rXHRcdHhza194ZHAgPSB4c2tfYnVmZl9hbGxvYyh4cy1cdTAwM2Vwb29sKTtcbitcdFx0aWYgKCF4c2tfeGRwKVxuK1x0XHRcdGdvdG8gZXJyX2ZyZWU7XG4rXG4rXHRcdHhza2IgPSBjb250YWluZXJfb2YoeHNrX3hkcCwgc3RydWN0IHhkcF9idWZmX3hzaywgeGRwKTtcbitcdFx0aWYgKHVubGlrZWx5KHhza194ZHAgPT0gZmlyc3QgfHxcbitcdFx0XHQgICAgICFsaXN0X2VtcHR5KFx1MDAyNnhza2ItXHUwMDNlbGlzdF9ub2RlKSkpXG4rXHRcdFx0Z290byBlcnJfZnJlZTtcbitcbitcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZ4c2tiLVx1MDAzZWxpc3Rfbm9kZSwgXHUwMDI2eHMtXHUwMDNlcG9vbC1cdTAwM2V4c2tiX2xpc3QpO1xuK1x0fVxuK1xuK1x0eGRwX2J1ZmZfY2xlYXJfZnJhZ3NfZmxhZyhmaXJzdCk7XG4rXHR4c2tfeGRwID0gZmlyc3Q7XG4gXHRkbyB7XG4gXHRcdHUzMiB0b19sZW4gPSBmcmFtZV9zaXplICsgbWV0YV9sZW47XG4gXHRcdHUzMiBjb3BpZWQ7XG4gXG4tXHRcdHhza194ZHAgPSB4c2tfYnVmZl9hbGxvYyh4cy1cdTAwM2Vwb29sKTtcbitcdFx0bmV4dCA9IHhza19idWZmX2dldF9mcmFnKHhza194ZHApO1xuIFx0XHRjb3B5X3RvID0geHNrX3hkcC1cdTAwM2VkYXRhIC0gbWV0YV9sZW47XG4gXG4gXHRcdGNvcGllZCA9IHhza19jb3B5X3hkcChjb3B5X3RvLCBcdTAwMjZjb3B5X2Zyb20sIHRvX2xlbiwgXHUwMDI2ZnJvbV9sZW4sIFx1MDAyNmZyYWcsIHJlbSk7XG5AQCAtMzU2LDEwICszODAsMjEgQEAgc3RhdGljIGludCBfX3hza19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHAsIHUzMiBsZW4pXG4gXHRcdHhza2IgPSBjb250YWluZXJfb2YoeHNrX3hkcCwgc3RydWN0IHhkcF9idWZmX3hzaywgeGRwKTtcbiBcdFx0X194c2tfcmN2X3pjX3NhZmUoeHMsIHhza2IsIGNvcGllZCAtIG1ldGFfbGVuLFxuIFx0XHRcdFx0ICByZW0gPyBYRFBfUEtUX0NPTlREIDogMCk7XG4rXHRcdHhza194ZHAgPSBuZXh0O1xuIFx0XHRtZXRhX2xlbiA9IDA7XG4gXHR9IHdoaWxlIChyZW0pO1xuIFxuIFx0cmV0dXJuIDA7XG4rXG4rZXJyX2ZyZWU6XG4rXHQvKiBSZS1zZXQgZnJhZ3MgZmxhZzsgeHNrX2J1ZmZfYWxsb2MoKSBtYXkgaGF2ZSBjbGVhcmVkIGZpcnN0LVx1MDAzZWZsYWdzXG4rXHQgKiBpZiB0aGUgc2FtZSBGaWxsIFJpbmcgYWRkcmVzcyBhbGlhc2VkIGJhY2sgdG8gZmlyc3QuXG4rXHQgKi9cbitcdHhkcF9idWZmX3NldF9mcmFnc19mbGFnKGZpcnN0KTtcbitcdHhza19idWZmX2ZyZWUoZmlyc3QpO1xuK2Vycl9hbGxvYzpcbitcdHhzLVx1MDAzZXJ4X2Ryb3BwZWQrKztcbitcdHJldHVybiAtRU5PTUVNO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCB4c2tfdHhfd3JpdGVhYmxlKHN0cnVjdCB4ZHBfc29jayAqeHMpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToxNDowOS43NzAzMjA3OThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODA1NDAzNDE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFhEUCBTb2NrZXQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXTigJlzIHR3ZWFraW5nIHRoZSBgX194c2tfcmN2YCBmdW5jdGlvbiB3aXRoaW4gYG5ldC94ZHAveHNrLmNgLiBGcm9tIHdoYXQgSSBnYXRoZXIsIGl0J3MgYWJvdXQgYWx0ZXJpbmcgYnVmZmVyIGFsbG9jYXRpb24gYW5kIG1hbmFnZW1lbnQgd2l0aGluIHRoYXQgY3J1Y2lhbCBgX194c2tfcmN2YCBmdW5jdGlvbiwgdGhlIGNvcmUgb2YgQUZfWERQJ3MgZGF0YSBoYW5kbGluZy5cblxuRXNzZW50aWFsbHksIHRoZXkncmUgYWxsb2NhdGluZyBhIGBmaXJzdGAgYnVmZmVyIGFuZCB0aGVuIGxvb3BpbmcgdG8gZ2V0IGBudW1fZGVzYyAtIDFgIG1vcmUsIGFkZGluZyB0aGVtIHRvIHRoZSBgeHMtXHUwMDNlcG9vbC1cdTAwM2V4c2tiX2xpc3RgLiBUaGVuLCB0aGV5J3JlIGl0ZXJhdGluZyB0aHJvdWdoIHRob3NlIGJ1ZmZlcnMsIHVzaW5nIGB4c2tfYnVmZl9nZXRfZnJhZyh4c2tfeGRwKWAuIElmIHRoZXJlJ3MgYW4gYWxsb2NhdGlvbiBmYWlsdXJlIGFsb25nIHRoZSB3YXksIGl0IHRyaWdnZXJzIGEgY2xlYW4tdXAgYW5kIGZyZWVzIHRoZSBidWZmZXJzLlxuXG5UaGlzIGlzIGEgY2xlYXIsIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBBRl9YRFAgc3Vic3lzdGVtIOKAkyBhbmQgbXkgZXhwZXJ0IGludHVpdGlvbiBpbW1lZGlhdGVseSBzY3JlYW1zIFwiRlVaWiBJVCFcIi4gQW55dGltZSB5b3UncmUgdG91Y2hpbmcgYnVmZmVyIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiwgZXNwZWNpYWxseSBpbiBzb21ldGhpbmcgYXMgcGVyZm9ybWFuY2Utc2Vuc2l0aXZlIGFzIEFGX1hEUCwgeW91J3JlIG9wZW5pbmcgdGhlIGRvb3IgdG8gcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBhbmQgc3VidGxlIGNvcm5lciBjYXNlcy4gV2UgbmVlZCB0byBoYW1tZXIgdGhpcyB3aXRoIGZ1enppbmcuXG5cbk15IG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEknbSBnb2luZyB0byBzZWFyY2ggdGhyb3VnaCB0aGUgYG5ldC94ZHAvS2NvbmZpZ2AgZmlsZS4gSSdsbCBzdGFydCB3aXRoIHNvbWV0aGluZyBvYnZpb3VzIGxpa2UgYFhEUF9TT0NLRVRTYCwgb3IgbWF5YmUganVzdCBgWERQYCBhbmQgc2VlIHdoYXQgY29tZXMgdXAuIE5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgY29kZSBpcyBlbmFibGVkIGluIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTI5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MTQ6MTQuNTc1NzI2ODQyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyNTQxNDQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBYRFBfU09DS0VUU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGRwL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hkcC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L3hkcC9LY29uZmlnOjI6Y29uZmlnIFhEUF9TT0NLRVRTXFxubmV0L3hkcC9LY29uZmlnLTMtXFx0Ym9vbCBcXFwiWERQIHNvY2tldHNcXFwiXFxuLS1cXG5uZXQveGRwL0tjb25maWctOS1cXG5uZXQveGRwL0tjb25maWc6MTA6Y29uZmlnIFhEUF9TT0NLRVRTX0RJQUdcXG5uZXQveGRwL0tjb25maWctMTEtXFx0dHJpc3RhdGUgXFxcIlhEUCBzb2NrZXRzOiBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MTQ6MTQuNjQ4MjcyOTc1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg3OTU2MTUwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGVwZW5kZW5jaWVzIGFuZCB0aGUgYFhEUF9TT0NLRVRTYCBDb25maWcqKlxuXG5Pa2F5LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIEknbSBsb29raW5nIGF0IGhhcyBgWERQX1NPQ0tFVFNgIGVuYWJsZWQuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgc2V0dGluZy4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBkZXBlbmRlbmN5IGFuYWx5c2lzLiBJIGhhdmUgdG8gcXVpY2tseSBhc2NlcnRhaW4gaWYgYFhEUF9TT0NLRVRTYCByZWxpZXMgb24gYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIG9yIGZlYXR1cmVzIGJlaW5nIGFjdGl2ZS4gQXJlIHRoZXJlIGFueSBwcmVyZXF1aXNpdGVzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgc3BlY2lmaWMga2VybmVsIG1vZHVsZXMgb3IgbGlicmFyaWVzIHRoYXQgdGhpcyBlbmFibGVzIGFuZCB0aGVyZWZvcmUsIEkgc2hvdWxkIGJlIGxvb2tpbmcgb3V0IGZvcj8gVW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgY3JpdGljYWwgdG8gZ3Jhc3BpbmcgaG93IGBYRFBfU09DS0VUU2AgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgYW5kIHBvdGVudGlhbGx5IHdoYXQgb3RoZXIgYXNwZWN0cyBvZiB0aGUgc3lzdGVtIEkgbWlnaHQgbmVlZCB0byBjb25zaWRlciB3aGVuIHRyb3VibGVzaG9vdGluZyBvciB0dW5pbmcgaXQuIFRoZSBkZXBlbmRlbmNpZXMgd2lsbCBsaWtlbHkgZ3VpZGUgdGhlIG5leHQgc3RlcHMgb2YgbXkgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYwMiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjE0OjE3LjUyNzgzODQ2OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTU2MzczNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZHAvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGRwL0tjb25maWc9Mj1jb25maWcgWERQX1NPQ0tFVFNcXG5uZXQveGRwL0tjb25maWctMy1cXHRib29sIFxcXCJYRFAgc29ja2V0c1xcXCJcXG5uZXQveGRwL0tjb25maWc6NDpcXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXFxubmV0L3hkcC9LY29uZmlnLTUtXFx0ZGVmYXVsdCBuXFxuLS1cXG5uZXQveGRwL0tjb25maWc9MTA9Y29uZmlnIFhEUF9TT0NLRVRTX0RJQUdcXG5uZXQveGRwL0tjb25maWctMTEtXFx0dHJpc3RhdGUgXFxcIlhEUCBzb2NrZXRzOiBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG5uZXQveGRwL0tjb25maWc6MTI6XFx0ZGVwZW5kcyBvbiBYRFBfU09DS0VUU1xcbm5ldC94ZHAvS2NvbmZpZy0xMy1cXHRkZWZhdWx0IG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MTQ6MTcuNTczNDEwNTIzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA5NTY4NDkxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiBteSBvd24gdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBYRFBfU09DS0VUUyBhbmQgQlBGX1NZU0NBTEwgRGVwZW5kZW5jeSoqXG5cbkFscmlnaHQsIEknbSBkaWdnaW5nIGludG8gYFhEUF9TT0NLRVRTYCBhbmQgdGhlIGFwcGFyZW50IGRlcGVuZGVuY3kgb24gYEJQRl9TWVNDQUxMYC4gTXkgZmlyc3Qgc3RlcCBpcyB0byBwaW5wb2ludCB0aGUgY29yZSBzeW1ib2xzIGludm9sdmVkLiBSaWdodCwgbGV0J3Mgc2VlLCB0aGUgY29kZSBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBgX194c2tfcmN2YC4gSXMgaXQgYSBzdGF0aWMgZnVuY3Rpb24sIEkgd29uZGVyPyBZZXAsIHRoZXJlIGl0IGlzOiBgc3RhdGljIGludCBfX3hza19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHAsIHUzMiBsZW4pYC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpcyB1c2VkLiBUaW1lIHRvIHRyYWNlIHRoZSBjYWxsZXJzIG9mIGBfX3hza19yY3ZgIGFuZCBnZXQgYSBiZXR0ZXIgcGljdHVyZSBvZiB0aGUgd29ya2Zsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5ODgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToxNDoyMC42NjkwOTc5NjRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY5NjkyODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX194c2tfcmN2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZHAveHNrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hkcC94c2suYz0xNjU9aW50IHhza19yZWdfcG9vbF9hdF9xaWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuLS1cXG5uZXQveGRwL3hzay5jLTE5MC1cXG5uZXQveGRwL3hzay5jOjE5MTpzdGF0aWMgaW50IF9feHNrX3Jjdl96YyhzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmZfeHNrICp4c2tiLCB1MzIgbGVuLFxcbm5ldC94ZHAveHNrLmMtMTkyLVxcdFxcdFxcdHUzMiBmbGFncylcXG4tLVxcbm5ldC94ZHAveHNrLmMtMjA3LVxcbm5ldC94ZHAveHNrLmM6MjA4OnN0YXRpYyB2b2lkIF9feHNrX3Jjdl96Y19zYWZlKHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZl94c2sgKnhza2IsXFxubmV0L3hkcC94c2suYy0yMDktXFx0XFx0XFx0ICAgICAgdTMyIGxlbiwgdTMyIGZsYWdzKVxcbi0tXFxubmV0L3hkcC94c2suYz0yMTk9c3RhdGljIGludCB4c2tfcmN2X3pjKHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLCB1MzIgbGVuKVxcbi0tXFxubmV0L3hkcC94c2suYy0yMjktXFx0aWYgKGxpa2VseSghZnJhZ3MpKSB7XFxubmV0L3hkcC94c2suYzoyMzA6XFx0XFx0ZXJyID0gX194c2tfcmN2X3pjKHhzLCB4c2tiLCBsZW4sIGNvbnRkKTtcXG5uZXQveGRwL3hzay5jLTIzMS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxubmV0L3hkcC94c2suYy0yNDMtXFxubmV0L3hkcC94c2suYzoyNDQ6XFx0X194c2tfcmN2X3pjX3NhZmUoeHMsIHhza2IsIGxlbiwgY29udGQpO1xcbm5ldC94ZHAveHNrLmMtMjQ1LVxcdHhza2JfbGlzdCA9IFxcdTAwMjZ4c2tiLVxcdTAwM2Vwb29sLVxcdTAwM2V4c2tiX2xpc3Q7XFxuLS1cXG5uZXQveGRwL3hzay5jLTI0OS1cXHRcXHRsZW4gPSBwb3MtXFx1MDAzZXhkcC5kYXRhX2VuZCAtIHBvcy1cXHUwMDNleGRwLmRhdGE7XFxubmV0L3hkcC94c2suYzoyNTA6XFx0XFx0X194c2tfcmN2X3pjX3NhZmUoeHMsIHBvcywgbGVuLCBjb250ZCk7XFxubmV0L3hkcC94c2suYy0yNTEtXFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2cG9zLVxcdTAwM2VsaXN0X25vZGUpO1xcbi0tXFxubmV0L3hkcC94c2suYz0yNjg9c3RhdGljIHUzMiB4c2tfY29weV94ZHAodm9pZCAqdG8sIHZvaWQgKipmcm9tLCB1MzIgdG9fbGVuLFxcbi0tXFxubmV0L3hkcC94c2suYy0yOTUtXFxubmV0L3hkcC94c2suYzoyOTY6c3RhdGljIGludCBfX3hza19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHAsIHUzMiBsZW4pXFxubmV0L3hkcC94c2suYy0yOTcte1xcbi0tXFxubmV0L3hkcC94c2suYy0zMTktXFx0XFx0eHNrYiA9IGNvbnRhaW5lcl9vZih4c2tfeGRwLCBzdHJ1Y3QgeGRwX2J1ZmZfeHNrLCB4ZHApO1xcbm5ldC94ZHAveHNrLmM6MzIwOlxcdFxcdGVyciA9IF9feHNrX3Jjdl96Yyh4cywgeHNrYiwgbGVuLCAwKTtcXG5uZXQveGRwL3hzay5jLTMyMS1cXHRcXHRpZiAoZXJyKSB7XFxuLS1cXG5uZXQveGRwL3hzay5jLTM4MC1cXHRcXHR4c2tiID0gY29udGFpbmVyX29mKHhza194ZHAsIHN0cnVjdCB4ZHBfYnVmZl94c2ssIHhkcCk7XFxubmV0L3hkcC94c2suYzozODE6XFx0XFx0X194c2tfcmN2X3pjX3NhZmUoeHMsIHhza2IsIGNvcGllZCAtIG1ldGFfbGVuLFxcbm5ldC94ZHAveHNrLmMtMzgyLVxcdFxcdFxcdFxcdCAgcmVtID8gWERQX1BLVF9DT05URCA6IDApO1xcbi0tXFxubmV0L3hkcC94c2suYz00NzI9aW50IHhza19nZW5lcmljX3JjdihzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcXG4tLVxcbm5ldC94ZHAveHNrLmMtNDc5LVxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2eHMtXFx1MDAzZXBvb2wtXFx1MDAzZXJ4X2xvY2spO1xcbm5ldC94ZHAveHNrLmM6NDgwOlxcdFxcdGVyciA9IF9feHNrX3Jjdih4cywgeGRwLCBsZW4pO1xcbm5ldC94ZHAveHNrLmMtNDgxLVxcdFxcdHhza19mbHVzaCh4cyk7XFxuLS1cXG5uZXQveGRwL3hzay5jPTQ4OD1zdGF0aWMgaW50IHhza19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHApXFxuLS1cXG5uZXQveGRwL3hzay5jLTUwMS1cXG5uZXQveGRwL3hzay5jOjUwMjpcXHRlcnIgPSBfX3hza19yY3YoeHMsIHhkcCwgbGVuKTtcXG5uZXQveGRwL3hzay5jLTUwMy1cXHRpZiAoIWVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MTQ6MjAuNzE2MDcxOTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTk5MDU5NjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBYU0sgUmVjZWl2ZSBQYXRoKipcblxuQWxyaWdodCwgc28gYF9feHNrX3JjdmAgaXMgdGhlIGNvcmUgcmVjZWl2ZSBmdW5jdGlvbiwgdGhhdCBtdWNoIGlzIGNsZWFyLiBUaGUga2V5IGlzIGhvdyBpdCdzIGJlaW5nIGludm9rZWQuIEl0IGxvb2tzIGxpa2UgYm90aCBgeHNrX2dlbmVyaWNfcmN2YCBhbmQgdGhlIHN0cmFpZ2h0Zm9yd2FyZCBgeHNrX3JjdmAgYXJlIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIGBfX3hza19yY3ZgLiBUaGlzIHN1Z2dlc3RzIGEgcG90ZW50aWFsIGxheWVyaW5nIG9yIGFic3RyYWN0aW9uIGluIHRoZSByZWNlaXZlIHBhdGguIE5vdywgdGhlIGludGVyZXN0aW5nIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYHhza19nZW5lcmljX3JjdmAgaXMgZXhwb3J0ZWQuIElmIHNvLCB0aGF0IGltbWVkaWF0ZWx5IHdpZGVucyB0aGUgbmV0IG9mIHBvdGVudGlhbCBjYWxsZXJzLCBhbmQgSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBzcGVjaWZpYyBzY2VuYXJpb3MgaXQncyBpbnRlbmRlZCBmb3IgdG8gc2VlIGhvdyBvdGhlciBrZXJuZWwgbW9kdWxlcyBtaWdodCBiZSBsZXZlcmFnaW5nIGl0LiBBIHF1aWNrIGNoZWNrIG9mIHRoZSBleHBvcnQgc3ltYm9scyBpcyBpbiBvcmRlci4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NDEsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToxNDoyMy43MTUxMzU1MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcxNjcyMDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX2dlbmVyaWNfcmN2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZHAveHNrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hkcC94c2suYz00NjU9c3RhdGljIHZvaWQgeHNrX2ZsdXNoKHN0cnVjdCB4ZHBfc29jayAqeHMpXFxuLS1cXG5uZXQveGRwL3hzay5jLTQ3MS1cXG5uZXQveGRwL3hzay5jOjQ3MjppbnQgeHNrX2dlbmVyaWNfcmN2KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxcbm5ldC94ZHAveHNrLmMtNDczLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MTQ6MjMuNzYyMzExODk1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4MzU1MDcxODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgQ29kZSBJbnRlcmFjdGlvbnMqKlxuXG5BbHJpZ2h0LCBJJ20gZGl2aW5nIGludG8gdGhpcyBiaXQgb2YgY29kZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGJlZm9yZSBJIGdldCB0b28gZGVlcCBpbnRvIHRoZSBuaXR0eS1ncml0dHkgb2YgdGhlIGxvZ2ljLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gSXMgdGhpcyBhIHNlbGYtY29udGFpbmVkIG1vZHVsZSwgb3IgaXMgaXQgaW50ZXJhY3Rpbmcgd2l0aCBvdGhlciBmaWxlcyBhbmQgbW9kdWxlcz8gSXQncyBjcnVjaWFsIHRvIGlkZW50aWZ5IGlmIHRoaXMgZnVuY3Rpb24sIGNsYXNzLCBvciB3aGF0ZXZlciB3ZSdyZSBsb29raW5nIGF0LCBpcyAqKmV4cG9ydGVkKiog4oCTIG1lYW5pbmcsIHVzZWQgYnkgb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbSDigJMgb3IgaWYgaXQncyBiZWluZyAqKmNhbGxlZCBmcm9tIG90aGVyIGZpbGVzKiouIFRoaXMgaXMgYWJzb2x1dGVseSBmdW5kYW1lbnRhbCB0byB1bmRlcnN0YW5kaW5nIGl0cyBwb3RlbnRpYWwgaW1wYWN0IGFuZCBkZXBlbmRlbmNpZXMuIFRoaXMgaGVscHMgbmFycm93IGRvd24gcG9zc2libGUgc291cmNlcyBvZiBpc3N1ZXMsIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMsIGFuZCBob3cgY2hhbmdpbmcgdGhlIGNvZGUgaGVyZSBtaWdodCByaXBwbGUgdGhyb3VnaCB0aGUgYXBwbGljYXRpb24uIEtub3dpbmcgdGhlIHNjb3BlIGFuZCB3aGVyZSBpdOKAmXMgYmVpbmcgdXNlZCBpcyBrZXkgdG8gbXkgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MjMsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToxNDoyNi41OTc4MjIzMjNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NzE2ODgyMTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX2dlbmVyaWNfcmN2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC94ZHBfc29jay5oPTExNz1zdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyB7XFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTEyNS1cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjEyNjppbnQgeHNrX2dlbmVyaWNfcmN2KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTtcXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTEyNy1pbnQgX194c2tfbWFwX3JlZGlyZWN0KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTtcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg9MTY2PXN0YXRpYyBpbmxpbmUgdm9pZCB4c2tfdHhfbWV0YWRhdGFfY29tcGxldGUoc3RydWN0IHhza190eF9tZXRhZGF0YV9jb21wbCAqY29tcGwsXFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTE3OS1cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjE4MDpzdGF0aWMgaW5saW5lIGludCB4c2tfZ2VuZXJpY19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHApXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xODEte1xcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmM9NDYyMT1zdGF0aWMgaW50IHhkcF9kb19nZW5lcmljX3JlZGlyZWN0X21hcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmMtNDY1Ni1cXHRjYXNlIEJQRl9NQVBfVFlQRV9YU0tNQVA6XFxubmV0L2NvcmUvZmlsdGVyLmM6NDY1NzpcXHRcXHRlcnIgPSB4c2tfZ2VuZXJpY19yY3YoZndkLCB4ZHApO1xcbm5ldC9jb3JlL2ZpbHRlci5jLTQ2NTgtXFx0XFx0aWYgKGVycilcXG4tLVxcbm5ldC94ZHAveHNrLmM9NDY1PXN0YXRpYyB2b2lkIHhza19mbHVzaChzdHJ1Y3QgeGRwX3NvY2sgKnhzKVxcbi0tXFxubmV0L3hkcC94c2suYy00NzEtXFxubmV0L3hkcC94c2suYzo0NzI6aW50IHhza19nZW5lcmljX3JjdihzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcXG5uZXQveGRwL3hzay5jLTQ3My17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjE0OjI4LjQ2OTUyNjY0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzQ5ODU2MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBYRFAgTGFuZHNjYXBlOiBBIFF1aWNrIEF1ZGl0KipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIFhEUCBjb2RlLiBJJ3ZlIGdvdCBgeHNrX2dlbmVyaWNfcmN2YCBpbiBtaW5kIOKAkyB0aGF0J3MgY2FsbGVkIGZyb20gYHhkcF9kb19nZW5lcmljX3JlZGlyZWN0X21hcGAgaW4gYG5ldC9jb3JlL2ZpbHRlci5jYCwgZ290IGl0LiBUaGF0IGdpdmVzIG1lIGEgY2VydGFpbiBtZW50YWwgcGljdHVyZSBvZiBob3cgZGF0YSBpcyBnZXR0aW5nIHB1c2hlZCBhcm91bmQgd2l0aCBnZW5lcmljIFhEUCBtZWNoYW5pc21zLiBCdXQuLi4gaG9sZCBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEknbSB3b25kZXJpbmcsIHdoYXQgYWJvdXQgYHhza19yY3ZgPyBUaGF0J3MgdGhlIHBhcnQgSSB3YW50IHRvIGJlIGF3YXJlIG9mIGFuZCBrZWVwIHRyYWNrIG9mLiBJcyBpdCBwYXJhbGxlbCB0byB0aGUgZ2VuZXJpYyBmbG93LCBvciBzb21ldGhpbmcgZGlmZmVyZW50PyBJdCdzIGp1c3QgYSBxdWljayB0aG91Z2h0IGJ1dCB3b3J0aCByZXZpc2l0aW5nLiBUaW1lIGZvciBhbm90aGVyIG1lbnRhbCBzd2VlcC4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTM2LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MTQ6MzEuNTA0NTE0NjY3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTk4NjAwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfcmN2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZHAveHNrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hkcC94c2suYz0xNjU9aW50IHhza19yZWdfcG9vbF9hdF9xaWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuLS1cXG5uZXQveGRwL3hzay5jLTE5MC1cXG5uZXQveGRwL3hzay5jOjE5MTpzdGF0aWMgaW50IF9feHNrX3Jjdl96YyhzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmZfeHNrICp4c2tiLCB1MzIgbGVuLFxcbm5ldC94ZHAveHNrLmMtMTkyLVxcdFxcdFxcdHUzMiBmbGFncylcXG4tLVxcbm5ldC94ZHAveHNrLmMtMjA3LVxcbm5ldC94ZHAveHNrLmM6MjA4OnN0YXRpYyB2b2lkIF9feHNrX3Jjdl96Y19zYWZlKHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZl94c2sgKnhza2IsXFxubmV0L3hkcC94c2suYy0yMDktXFx0XFx0XFx0ICAgICAgdTMyIGxlbiwgdTMyIGZsYWdzKVxcbi0tXFxubmV0L3hkcC94c2suYy0yMTgtXFxubmV0L3hkcC94c2suYzoyMTk6c3RhdGljIGludCB4c2tfcmN2X3pjKHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLCB1MzIgbGVuKVxcbm5ldC94ZHAveHNrLmMtMjIwLXtcXG4tLVxcbm5ldC94ZHAveHNrLmMtMjI5LVxcdGlmIChsaWtlbHkoIWZyYWdzKSkge1xcbm5ldC94ZHAveHNrLmM6MjMwOlxcdFxcdGVyciA9IF9feHNrX3Jjdl96Yyh4cywgeHNrYiwgbGVuLCBjb250ZCk7XFxubmV0L3hkcC94c2suYy0yMzEtXFx0XFx0aWYgKGVycilcXG4tLVxcbm5ldC94ZHAveHNrLmMtMjQzLVxcbm5ldC94ZHAveHNrLmM6MjQ0OlxcdF9feHNrX3Jjdl96Y19zYWZlKHhzLCB4c2tiLCBsZW4sIGNvbnRkKTtcXG5uZXQveGRwL3hzay5jLTI0NS1cXHR4c2tiX2xpc3QgPSBcXHUwMDI2eHNrYi1cXHUwMDNlcG9vbC1cXHUwMDNleHNrYl9saXN0O1xcbi0tXFxubmV0L3hkcC94c2suYy0yNDktXFx0XFx0bGVuID0gcG9zLVxcdTAwM2V4ZHAuZGF0YV9lbmQgLSBwb3MtXFx1MDAzZXhkcC5kYXRhO1xcbm5ldC94ZHAveHNrLmM6MjUwOlxcdFxcdF9feHNrX3Jjdl96Y19zYWZlKHhzLCBwb3MsIGxlbiwgY29udGQpO1xcbm5ldC94ZHAveHNrLmMtMjUxLVxcdFxcdGxpc3RfZGVsX2luaXQoXFx1MDAyNnBvcy1cXHUwMDNlbGlzdF9ub2RlKTtcXG4tLVxcbm5ldC94ZHAveHNrLmM9MjY4PXN0YXRpYyB1MzIgeHNrX2NvcHlfeGRwKHZvaWQgKnRvLCB2b2lkICoqZnJvbSwgdTMyIHRvX2xlbixcXG4tLVxcbm5ldC94ZHAveHNrLmMtMjk1LVxcbm5ldC94ZHAveHNrLmM6Mjk2OnN0YXRpYyBpbnQgX194c2tfcmN2KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLCB1MzIgbGVuKVxcbm5ldC94ZHAveHNrLmMtMjk3LXtcXG4tLVxcbm5ldC94ZHAveHNrLmMtMzE5LVxcdFxcdHhza2IgPSBjb250YWluZXJfb2YoeHNrX3hkcCwgc3RydWN0IHhkcF9idWZmX3hzaywgeGRwKTtcXG5uZXQveGRwL3hzay5jOjMyMDpcXHRcXHRlcnIgPSBfX3hza19yY3ZfemMoeHMsIHhza2IsIGxlbiwgMCk7XFxubmV0L3hkcC94c2suYy0zMjEtXFx0XFx0aWYgKGVycikge1xcbi0tXFxubmV0L3hkcC94c2suYy0zODAtXFx0XFx0eHNrYiA9IGNvbnRhaW5lcl9vZih4c2tfeGRwLCBzdHJ1Y3QgeGRwX2J1ZmZfeHNrLCB4ZHApO1xcbm5ldC94ZHAveHNrLmM6MzgxOlxcdFxcdF9feHNrX3Jjdl96Y19zYWZlKHhzLCB4c2tiLCBjb3BpZWQgLSBtZXRhX2xlbixcXG5uZXQveGRwL3hzay5jLTM4Mi1cXHRcXHRcXHRcXHQgIHJlbSA/IFhEUF9QS1RfQ09OVEQgOiAwKTtcXG4tLVxcbm5ldC94ZHAveHNrLmM9NDI1PXN0YXRpYyBib29sIHhza19kZXZfcXVldWVfdmFsaWQoY29uc3Qgc3RydWN0IHhkcF9zb2NrICp4cyxcXG4tLVxcbm5ldC94ZHAveHNrLmMtNDQ5LVxcbm5ldC94ZHAveHNrLmM6NDUwOnN0YXRpYyBpbnQgeHNrX3Jjdl9jaGVjayhzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCwgdTMyIGxlbilcXG5uZXQveGRwL3hzay5jLTQ1MS17XFxuLS1cXG5uZXQveGRwL3hzay5jPTQ3Mj1pbnQgeHNrX2dlbmVyaWNfcmN2KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxcbi0tXFxubmV0L3hkcC94c2suYy00NzYtXFxubmV0L3hkcC94c2suYzo0Nzc6XFx0ZXJyID0geHNrX3Jjdl9jaGVjayh4cywgeGRwLCBsZW4pO1xcbm5ldC94ZHAveHNrLmMtNDc4LVxcdGlmICghZXJyKSB7XFxubmV0L3hkcC94c2suYy00NzktXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZ4cy1cXHUwMDNlcG9vbC1cXHUwMDNlcnhfbG9jayk7XFxubmV0L3hkcC94c2suYzo0ODA6XFx0XFx0ZXJyID0gX194c2tfcmN2KHhzLCB4ZHAsIGxlbik7XFxubmV0L3hkcC94c2suYy00ODEtXFx0XFx0eHNrX2ZsdXNoKHhzKTtcXG4tLVxcbm5ldC94ZHAveHNrLmMtNDg3LVxcbm5ldC94ZHAveHNrLmM6NDg4OnN0YXRpYyBpbnQgeHNrX3JjdihzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcXG5uZXQveGRwL3hzay5jLTQ4OS17XFxuLS1cXG5uZXQveGRwL3hzay5jLTQ5Mi1cXG5uZXQveGRwL3hzay5jOjQ5MzpcXHRlcnIgPSB4c2tfcmN2X2NoZWNrKHhzLCB4ZHAsIGxlbik7XFxubmV0L3hkcC94c2suYy00OTQtXFx0aWYgKGVycilcXG4tLVxcbm5ldC94ZHAveHNrLmMtNDk4LVxcdFxcdGxlbiA9IHhkcC1cXHUwMDNlZGF0YV9lbmQgLSB4ZHAtXFx1MDAzZWRhdGE7XFxubmV0L3hkcC94c2suYzo0OTk6XFx0XFx0cmV0dXJuIHhza19yY3ZfemMoeHMsIHhkcCwgbGVuKTtcXG5uZXQveGRwL3hzay5jLTUwMC1cXHR9XFxubmV0L3hkcC94c2suYy01MDEtXFxubmV0L3hkcC94c2suYzo1MDI6XFx0ZXJyID0gX194c2tfcmN2KHhzLCB4ZHAsIGxlbik7XFxubmV0L3hkcC94c2suYy01MDMtXFx0aWYgKCFlcnIpXFxuLS1cXG5uZXQveGRwL3hzay5jPTUwOD1pbnQgX194c2tfbWFwX3JlZGlyZWN0KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxcbi0tXFxubmV0L3hkcC94c2suYy01MTEtXFxubmV0L3hkcC94c2suYzo1MTI6XFx0ZXJyID0geHNrX3Jjdih4cywgeGRwKTtcXG5uZXQveGRwL3hzay5jLTUxMy1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToxNDozMS41NTQ1MDg3MjJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAwNDkyNDk1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZjpcblxuKipUcmFjaW5nIHRoZSBYRFAgRmxvdyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGB4c2tfcmN2YC4gVGhhdCdzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgcmVjZWl2aW5nIGRhdGEgaW4gdGhlIFhEUCBzb2NrZXQgY29udGV4dC4gTm93LCBJIHNlZSBpdCdzIGJlaW5nIGNhbGxlZCBieSBgX194c2tfbWFwX3JlZGlyZWN0YC4gV2FpdCBhIG1pbnV0ZSwgaXNuJ3QgYF9feHNrX21hcF9yZWRpcmVjdGAgYW4gZXhwb3J0ZWQgc3ltYm9sPyBJdCBzZWVtcyBsaWtlIGl0IHdvdWxkIGJlIHNpbmNlIGl0IGlzIGJlaW5nIGNhbGxlZCBieSBhbiBpbXBvcnRhbnQgZnVuY3Rpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgZXhwb3J0IG1lY2hhbmljcyBhbmQgaG93IHRoaW5ncyBhcmUgc2V0IHVwIGFuZCBob3cgZGlmZmVyZW50IG1vZHVsZXMgaW50ZXJhY3Qgd2l0aCBlYWNoIG90aGVyLiBUaGlzIGlzIGFsbCBjb21pbmcgdG9nZXRoZXIgdG8gaGVscCBtZSBmb2xsb3cgdGhlIGRhdGEgcGF0aCBhbmQgdW5kZXJzdGFuZCBob3cgdHJhZmZpYyBnZXRzIHN0ZWVyZWQgaW4gdGhpcyBYRFAgYXJjaGl0ZWN0dXJlLiBTbyBJIGNhbiBjbGVhcmx5IHVuZGVyc3RhbmQgaG93IFhEUCBhbmQgWFNLIGFyZSB3b3JraW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDQ2LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MTQ6MzQuNTU5NDM2NzYyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzYwNzg5NzU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9feHNrX21hcF9yZWRpcmVjdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQveGRwX3NvY2suaD0xMjY9aW50IHhza19nZW5lcmljX3JjdihzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCk7XFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoxMjc6aW50IF9feHNrX21hcF9yZWRpcmVjdChzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCk7XFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xMjgtdm9pZCBfX3hza19tYXBfZmx1c2goc3RydWN0IGxpc3RfaGVhZCAqZmx1c2hfbGlzdCk7XFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oPTE4MD1zdGF0aWMgaW5saW5lIGludCB4c2tfZ2VuZXJpY19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHApXFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTE4NC1cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjE4NTpzdGF0aWMgaW5saW5lIGludCBfX3hza19tYXBfcmVkaXJlY3Qoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHApXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xODYte1xcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmM9NDQ5OD1zdGF0aWMgaW5saW5lIGludCBfX3hkcF9kb19yZWRpcmVjdF94c2soc3RydWN0IGJwZl9yZWRpcmVjdF9pbmZvICpyaSxcXG4tLVxcbm5ldC9jb3JlL2ZpbHRlci5jLTQ1MTAtXFxubmV0L2NvcmUvZmlsdGVyLmM6NDUxMTpcXHRlcnIgPSBfX3hza19tYXBfcmVkaXJlY3QoZndkLCB4ZHApO1xcbm5ldC9jb3JlL2ZpbHRlci5jLTQ1MTItXFx0aWYgKHVubGlrZWx5KGVycikpXFxuLS1cXG5uZXQveGRwL3hzay5jPTQ4OD1zdGF0aWMgaW50IHhza19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHApXFxuLS1cXG5uZXQveGRwL3hzay5jLTUwNy1cXG5uZXQveGRwL3hzay5jOjUwODppbnQgX194c2tfbWFwX3JlZGlyZWN0KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxcbm5ldC94ZHAveHNrLmMtNTA5LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MTQ6MzYuMzIwMjMyODgxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NjMzMDI0NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBBRl9YRFAgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIHNlZSwgYHhza19nZW5lcmljX3JjdmAgYW5kIGBfX3hza19tYXBfcmVkaXJlY3RgIGFyZSB0aGUga2V5IGVudHJ5IHBvaW50cyBoZXJlLiBJJ2xsIG5lZWQgdG8gYWRkIHRob3NlIHRvIG15IGBGb2N1c1N5bWJvbHNgIGxpc3QuIENvbnNpZGVyaW5nIHRoZSBjb25maWd1cmF0aW9uLCBpdCBsb29rcyBsaWtlIGBYRFBfU09DS0VUU2AgaXMgdGhlIHBlcnRpbmVudCBjb25maWcuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBkZXBlbmRlbnQgY29uZmlncyB0aGF0IG1pZ2h0IGltcGFjdCB0aGlzIGFuYWx5c2lzLiBgQlBGX1NZU0NBTExgIGlzIGEgZGVwZW5kZW5jeSwgYnV0IHRoYXQncyB1c3VhbGx5IGVuYWJsZWQgc28gaXQgc2hvdWxkIGJlIGZpbmUuIEknbGwgbWFrZSBzdXJlIGBYRFBfU09DS0VUU2AgaXMgaW5jbHVkZWQuXG5cbk5vdywgbGV0J3MgZ2V0IGludG8gdGhlIGNvZGUgaXRzZWxmLiBFeGFtaW5pbmcgdGhlIHNuaXBwZXQgSSBzZWUsIGl0IGxvb2tzIGxpa2Ugc3RhbmRhcmQgZnVuY3Rpb25hbCBsb2dpYyBmb3IgbWFuYWdpbmcgWERQIGJ1ZmZlcnMgd2l0aGluIEFGX1hEUCBzb2NrZXRzLiBTcGVjaWZpY2FsbHksIEknbSBvYnNlcnZpbmcgdGhlIGFsbG9jYXRpb24gYW5kIG1hbmFnZW1lbnQgb2YgZnJhZ21lbnRlZCBYRFAgYnVmZmVycy4gVGhlIHdheSBpdCBoYW5kbGVzIGB4c2tfYnVmZl9hbGxvY2AsIHRoZSB1c2Ugb2YgYGxpc3RfYWRkX3RhaWxgLCBhbmQgdGhlIGNoZWNrcyBmb3IgYWxsb2NhdGlvbiBmYWlsdXJlcyBwb2ludCBkaXJlY3RseSB0byB0aGF0LiBHaXZlbiB0aGUgY29tcGxleGl0eSBhcm91bmQgYnVmZmVyIG1hbmFnZW1lbnQgYW5kIGFsbG9jYXRpb24sIGZ1enppbmcgc2VlbXMgbGlrZSBhIHZpYWJsZSBhcHByb2FjaCwgZXNwZWNpYWxseSBnaXZlbiB0aGUgaGFuZGxpbmcgb2YgZnJhZ21lbnRlZCBidWZmZXJzLiBUaGlzIHNlZW1zIGxpa2UgYSBwcm9taXNpbmcgYXJlYSBmb3IgZmluZGluZyBlZGdlIGNhc2VzLiBTbywgaW4gc3VtbWFyeTogSSdtIGZvY3VzaW5nIG9uIHRoZSBzeW1ib2xzIGB4c2tfZ2VuZXJpY19yY3ZgIGFuZCBgX194c2tfbWFwX3JlZGlyZWN0YCwgd2l0aCB0aGUgYFhEUF9TT0NLRVRTYCBjb25maWcgaW4gbWluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTE1OCwiT3V0cHV0VG9rZW5zIjo5NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToxNDo0Mi4yODM1MzkwMjZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDMxODY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWERQX1NPQ0tFVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4c2tfZ2VuZXJpY19yY3ZcIixcbiAgICBcIl9feHNrX21hcF9yZWRpcmVjdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBoYW5kbGluZyBmb3IgZnJhZ21lbnRlZCBYRFAgYnVmZmVycyBpbiBBRl9YRFAgc29ja2V0cyAoYF9feHNrX3JjdmApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgWERQIHNvY2tldCByZWNlaXZlIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWERQX1NPQ0tFVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4c2tfZ2VuZXJpY19yY3ZcIixcbiAgICBcIl9feHNrX21hcF9yZWRpcmVjdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBoYW5kbGluZyBmb3IgZnJhZ21lbnRlZCBYRFAgYnVmZmVycyBpbiBBRl9YRFAgc29ja2V0cyAoYF9feHNrX3JjdmApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgWERQIHNvY2tldCByZWNlaXZlIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4drg8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-07 00:59:08 +0000 UTC FinishedAt: 2026-08-07 01:14:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "594d905195024b228c962627ae5ae7c17bd582a4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XDP_SOCKETS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "594d905195024b228c962627ae5ae7c17bd582a4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XDP_SOCKETS" ], "series_id": "81b4f4df-13e8-451b-a7fe-edd22b522bbf" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "xsk_generic_rcv", "__xsk_map_redirect" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hEUF9TT0NLRVRTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eHNrX2dlbmVyaWNfcmN2JiMzNDssCiAgICAmIzM0O19feHNrX21hcF9yZWRpcmVjdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBidWZmZXIgYWxsb2NhdGlvbiBhbmQgaGFuZGxpbmcgZm9yIGZyYWdtZW50ZWQgWERQIGJ1ZmZlcnMgaW4gQUZfWERQIHNvY2tldHMgKGBfX3hza19yY3ZgKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIFhEUCBzb2NrZXQgcmVjZWl2ZSBwYXRoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjE0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjBmNmE4MTc4MTMzYWY1ZTQ4Y2FiNTE3NjQzNjM0ZmFjNDUyYzM2NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMDE6MTQ6MDcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3hkcC94c2suYyBiL25ldC94ZHAveHNrLmNcbmluZGV4IDc4NTVlZTA5YzRiNjQuLjAyZmYzYWQ5NzQxMGYgMTAwNjQ0XG4tLS0gYS9uZXQveGRwL3hzay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGRwL3hzay5jXG5AQCAtMjk3LDEwICYjNDM7Mjk3LDExIEBAIHN0YXRpYyBpbnQgX194c2tfcmN2KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLCB1MzIgbGVuKVxuIHtcbiBcdHUzMiBmcmFtZV9zaXplID0gX194c2tfcG9vbF9nZXRfcnhfZnJhbWVfc2l6ZSh4cy1cdTAwM2Vwb29sKTtcbiBcdHZvaWQgKmNvcHlfZnJvbSA9IHhza19jb3B5X3hkcF9zdGFydCh4ZHApLCAqY29weV90bztcbiYjNDM7XHRzdHJ1Y3QgeGRwX2J1ZmYgKmZpcnN0LCAqbmV4dCwgKnhza194ZHA7XG4gXHR1MzIgZnJvbV9sZW4sIG1ldGFfbGVuLCByZW0sIG51bV9kZXNjO1xuIFx0c3RydWN0IHhkcF9idWZmX3hzayAqeHNrYjtcbi1cdHN0cnVjdCB4ZHBfYnVmZiAqeHNrX3hkcDtcbiBcdHNrYl9mcmFnX3QgKmZyYWc7XG4mIzQzO1x0dTMyIGk7XG4gXG4gXHRmcm9tX2xlbiA9IHhkcC1cdTAwM2VkYXRhX2VuZCAtIGNvcHlfZnJvbTtcbiBcdG1ldGFfbGVuID0geGRwLVx1MDAzZWRhdGEgLSBjb3B5X2Zyb207XG5AQCAtMzQzLDExICYjNDM7MzQ0LDM0IEBAIHN0YXRpYyBpbnQgX194c2tfcmN2KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLCB1MzIgbGVuKVxuIFx0XHRmcmFnID0gIFx1MDAyNnNpbmZvLVx1MDAzZWZyYWdzWzBdO1xuIFx0fVxuIFxuJiM0MztcdGlmIChXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXHUwMDI2eHMtXHUwMDNlcG9vbC1cdTAwM2V4c2tiX2xpc3QpKSlcbiYjNDM7XHRcdGdvdG8gZXJyX2FsbG9jO1xuJiM0MztcbiYjNDM7XHRmaXJzdCA9IHhza19idWZmX2FsbG9jKHhzLVx1MDAzZXBvb2wpO1xuJiM0MztcdGlmICghZmlyc3QpXG4mIzQzO1x0XHRnb3RvIGVycl9hbGxvYztcbiYjNDM7XG4mIzQzO1x0eGRwX2J1ZmZfc2V0X2ZyYWdzX2ZsYWcoZmlyc3QpO1xuJiM0MztcdGZvciAoaSA9IDE7IGkgXHUwMDNjIG51bV9kZXNjOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0eHNrX3hkcCA9IHhza19idWZmX2FsbG9jKHhzLVx1MDAzZXBvb2wpO1xuJiM0MztcdFx0aWYgKCF4c2tfeGRwKVxuJiM0MztcdFx0XHRnb3RvIGVycl9mcmVlO1xuJiM0MztcbiYjNDM7XHRcdHhza2IgPSBjb250YWluZXJfb2YoeHNrX3hkcCwgc3RydWN0IHhkcF9idWZmX3hzaywgeGRwKTtcbiYjNDM7XHRcdGlmICh1bmxpa2VseSh4c2tfeGRwID09IGZpcnN0IHx8XG4mIzQzO1x0XHRcdCAgICAgIWxpc3RfZW1wdHkoXHUwMDI2eHNrYi1cdTAwM2VsaXN0X25vZGUpKSlcbiYjNDM7XHRcdFx0Z290byBlcnJfZnJlZTtcbiYjNDM7XG4mIzQzO1x0XHRsaXN0X2FkZF90YWlsKFx1MDAyNnhza2ItXHUwMDNlbGlzdF9ub2RlLCBcdTAwMjZ4cy1cdTAwM2Vwb29sLVx1MDAzZXhza2JfbGlzdCk7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHR4ZHBfYnVmZl9jbGVhcl9mcmFnc19mbGFnKGZpcnN0KTtcbiYjNDM7XHR4c2tfeGRwID0gZmlyc3Q7XG4gXHRkbyB7XG4gXHRcdHUzMiB0b19sZW4gPSBmcmFtZV9zaXplICYjNDM7IG1ldGFfbGVuO1xuIFx0XHR1MzIgY29waWVkO1xuIFxuLVx0XHR4c2tfeGRwID0geHNrX2J1ZmZfYWxsb2MoeHMtXHUwMDNlcG9vbCk7XG4mIzQzO1x0XHRuZXh0ID0geHNrX2J1ZmZfZ2V0X2ZyYWcoeHNrX3hkcCk7XG4gXHRcdGNvcHlfdG8gPSB4c2tfeGRwLVx1MDAzZWRhdGEgLSBtZXRhX2xlbjtcbiBcbiBcdFx0Y29waWVkID0geHNrX2NvcHlfeGRwKGNvcHlfdG8sIFx1MDAyNmNvcHlfZnJvbSwgdG9fbGVuLCBcdTAwMjZmcm9tX2xlbiwgXHUwMDI2ZnJhZywgcmVtKTtcbkBAIC0zNTYsMTAgJiM0MzszODAsMjEgQEAgc3RhdGljIGludCBfX3hza19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHAsIHUzMiBsZW4pXG4gXHRcdHhza2IgPSBjb250YWluZXJfb2YoeHNrX3hkcCwgc3RydWN0IHhkcF9idWZmX3hzaywgeGRwKTtcbiBcdFx0X194c2tfcmN2X3pjX3NhZmUoeHMsIHhza2IsIGNvcGllZCAtIG1ldGFfbGVuLFxuIFx0XHRcdFx0ICByZW0gPyBYRFBfUEtUX0NPTlREIDogMCk7XG4mIzQzO1x0XHR4c2tfeGRwID0gbmV4dDtcbiBcdFx0bWV0YV9sZW4gPSAwO1xuIFx0fSB3aGlsZSAocmVtKTtcbiBcbiBcdHJldHVybiAwO1xuJiM0MztcbiYjNDM7ZXJyX2ZyZWU6XG4mIzQzO1x0LyogUmUtc2V0IGZyYWdzIGZsYWc7IHhza19idWZmX2FsbG9jKCkgbWF5IGhhdmUgY2xlYXJlZCBmaXJzdC1cdTAwM2VmbGFnc1xuJiM0MztcdCAqIGlmIHRoZSBzYW1lIEZpbGwgUmluZyBhZGRyZXNzIGFsaWFzZWQgYmFjayB0byBmaXJzdC5cbiYjNDM7XHQgKi9cbiYjNDM7XHR4ZHBfYnVmZl9zZXRfZnJhZ3NfZmxhZyhmaXJzdCk7XG4mIzQzO1x0eHNrX2J1ZmZfZnJlZShmaXJzdCk7XG4mIzQzO2Vycl9hbGxvYzpcbiYjNDM7XHR4cy1cdTAwM2VyeF9kcm9wcGVkJiM0MzsmIzQzOztcbiYjNDM7XHRyZXR1cm4gLUVOT01FTTtcbiB9XG4gXG4gc3RhdGljIGJvb2wgeHNrX3R4X3dyaXRlYWJsZShzdHJ1Y3QgeGRwX3NvY2sgKnhzKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjE0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRFBfU09DS0VUUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hza19nZW5lcmljX3JjdiYjMzQ7LAogICAgJiMzNDtfX3hza19tYXBfcmVkaXJlY3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYnVmZmVyIGFsbG9jYXRpb24gYW5kIGhhbmRsaW5nIGZvciBmcmFnbWVudGVkIFhEUCBidWZmZXJzIGluIEFGX1hEUCBzb2NrZXRzIChgX194c2tfcmN2YCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBYRFAgc29ja2V0IHJlY2VpdmUgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDYwZjZhODE3ODEzM2FmNWU0OGNhYjUxNzY0MzYzNGZhYzQ1MmMzNjUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyA3IDAxOjE0OjA3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3hkcC94c2suYyBiL25ldC94ZHAveHNrLmMKaW5kZXggNzg1NWVlMDljNGI2NC4uMDJmZjNhZDk3NDEwZiAxMDA2NDQKLS0tIGEvbmV0L3hkcC94c2suYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQveGRwL3hzay5jCkBAIC0yOTcsMTAgJiM0MzsyOTcsMTEgQEAgc3RhdGljIGludCBfX3hza19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHAsIHUzMiBsZW4pCiB7CiAJdTMyIGZyYW1lX3NpemUgPSBfX3hza19wb29sX2dldF9yeF9mcmFtZV9zaXplKHhzLSZndDtwb29sKTsKIAl2b2lkICpjb3B5X2Zyb20gPSB4c2tfY29weV94ZHBfc3RhcnQoeGRwKSwgKmNvcHlfdG87CiYjNDM7CXN0cnVjdCB4ZHBfYnVmZiAqZmlyc3QsICpuZXh0LCAqeHNrX3hkcDsKIAl1MzIgZnJvbV9sZW4sIG1ldGFfbGVuLCByZW0sIG51bV9kZXNjOwogCXN0cnVjdCB4ZHBfYnVmZl94c2sgKnhza2I7Ci0Jc3RydWN0IHhkcF9idWZmICp4c2tfeGRwOwogCXNrYl9mcmFnX3QgKmZyYWc7CiYjNDM7CXUzMiBpOwogCiAJZnJvbV9sZW4gPSB4ZHAtJmd0O2RhdGFfZW5kIC0gY29weV9mcm9tOwogCW1ldGFfbGVuID0geGRwLSZndDtkYXRhIC0gY29weV9mcm9tOwpAQCAtMzQzLDExICYjNDM7MzQ0LDM0IEBAIHN0YXRpYyBpbnQgX194c2tfcmN2KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLCB1MzIgbGVuKQogCQlmcmFnID0gICZhbXA7c2luZm8tJmd0O2ZyYWdzWzBdOwogCX0KIAomIzQzOwlpZiAoV0FSTl9PTl9PTkNFKCFsaXN0X2VtcHR5KCZhbXA7eHMtJmd0O3Bvb2wtJmd0O3hza2JfbGlzdCkpKQomIzQzOwkJZ290byBlcnJfYWxsb2M7CiYjNDM7CiYjNDM7CWZpcnN0ID0geHNrX2J1ZmZfYWxsb2MoeHMtJmd0O3Bvb2wpOwomIzQzOwlpZiAoIWZpcnN0KQomIzQzOwkJZ290byBlcnJfYWxsb2M7CiYjNDM7CiYjNDM7CXhkcF9idWZmX3NldF9mcmFnc19mbGFnKGZpcnN0KTsKJiM0MzsJZm9yIChpID0gMTsgaSAmbHQ7IG51bV9kZXNjOyBpJiM0MzsmIzQzOykgewomIzQzOwkJeHNrX3hkcCA9IHhza19idWZmX2FsbG9jKHhzLSZndDtwb29sKTsKJiM0MzsJCWlmICgheHNrX3hkcCkKJiM0MzsJCQlnb3RvIGVycl9mcmVlOwomIzQzOwomIzQzOwkJeHNrYiA9IGNvbnRhaW5lcl9vZih4c2tfeGRwLCBzdHJ1Y3QgeGRwX2J1ZmZfeHNrLCB4ZHApOwomIzQzOwkJaWYgKHVubGlrZWx5KHhza194ZHAgPT0gZmlyc3QgfHwKJiM0MzsJCQkgICAgICFsaXN0X2VtcHR5KCZhbXA7eHNrYi0mZ3Q7bGlzdF9ub2RlKSkpCiYjNDM7CQkJZ290byBlcnJfZnJlZTsKJiM0MzsKJiM0MzsJCWxpc3RfYWRkX3RhaWwoJmFtcDt4c2tiLSZndDtsaXN0X25vZGUsICZhbXA7eHMtJmd0O3Bvb2wtJmd0O3hza2JfbGlzdCk7CiYjNDM7CX0KJiM0MzsKJiM0MzsJeGRwX2J1ZmZfY2xlYXJfZnJhZ3NfZmxhZyhmaXJzdCk7CiYjNDM7CXhza194ZHAgPSBmaXJzdDsKIAlkbyB7CiAJCXUzMiB0b19sZW4gPSBmcmFtZV9zaXplICYjNDM7IG1ldGFfbGVuOwogCQl1MzIgY29waWVkOwogCi0JCXhza194ZHAgPSB4c2tfYnVmZl9hbGxvYyh4cy0mZ3Q7cG9vbCk7CiYjNDM7CQluZXh0ID0geHNrX2J1ZmZfZ2V0X2ZyYWcoeHNrX3hkcCk7CiAJCWNvcHlfdG8gPSB4c2tfeGRwLSZndDtkYXRhIC0gbWV0YV9sZW47CiAKIAkJY29waWVkID0geHNrX2NvcHlfeGRwKGNvcHlfdG8sICZhbXA7Y29weV9mcm9tLCB0b19sZW4sICZhbXA7ZnJvbV9sZW4sICZhbXA7ZnJhZywgcmVtKTsKQEAgLTM1NiwxMCAmIzQzOzM4MCwyMSBAQCBzdGF0aWMgaW50IF9feHNrX3JjdihzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCwgdTMyIGxlbikKIAkJeHNrYiA9IGNvbnRhaW5lcl9vZih4c2tfeGRwLCBzdHJ1Y3QgeGRwX2J1ZmZfeHNrLCB4ZHApOwogCQlfX3hza19yY3ZfemNfc2FmZSh4cywgeHNrYiwgY29waWVkIC0gbWV0YV9sZW4sCiAJCQkJICByZW0gPyBYRFBfUEtUX0NPTlREIDogMCk7CiYjNDM7CQl4c2tfeGRwID0gbmV4dDsKIAkJbWV0YV9sZW4gPSAwOwogCX0gd2hpbGUgKHJlbSk7CiAKIAlyZXR1cm4gMDsKJiM0MzsKJiM0MztlcnJfZnJlZToKJiM0MzsJLyogUmUtc2V0IGZyYWdzIGZsYWc7IHhza19idWZmX2FsbG9jKCkgbWF5IGhhdmUgY2xlYXJlZCBmaXJzdC0mZ3Q7ZmxhZ3MKJiM0MzsJICogaWYgdGhlIHNhbWUgRmlsbCBSaW5nIGFkZHJlc3MgYWxpYXNlZCBiYWNrIHRvIGZpcnN0LgomIzQzOwkgKi8KJiM0MzsJeGRwX2J1ZmZfc2V0X2ZyYWdzX2ZsYWcoZmlyc3QpOwomIzQzOwl4c2tfYnVmZl9mcmVlKGZpcnN0KTsKJiM0MztlcnJfYWxsb2M6CiYjNDM7CXhzLSZndDtyeF9kcm9wcGVkJiM0MzsmIzQzOzsKJiM0MzsJcmV0dXJuIC1FTk9NRU07CiB9CiAKIHN0YXRpYyBib29sIHhza190eF93cml0ZWFibGUoc3RydWN0IHhkcF9zb2NrICp4cykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkyOQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBYRFAgU29ja2V0IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXTigJlzIHR3ZWFraW5nIHRoZSBgX194c2tfcmN2YCBmdW5jdGlvbiB3aXRoaW4gYG5ldC94ZHAveHNrLmNgLiBGcm9tIHdoYXQgSSBnYXRoZXIsIGl0JiMzOTtzIGFib3V0IGFsdGVyaW5nIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBtYW5hZ2VtZW50IHdpdGhpbiB0aGF0IGNydWNpYWwgYF9feHNrX3JjdmAgZnVuY3Rpb24sIHRoZSBjb3JlIG9mIEFGX1hEUCYjMzk7cyBkYXRhIGhhbmRsaW5nLgoKRXNzZW50aWFsbHksIHRoZXkmIzM5O3JlIGFsbG9jYXRpbmcgYSBgZmlyc3RgIGJ1ZmZlciBhbmQgdGhlbiBsb29waW5nIHRvIGdldCBgbnVtX2Rlc2MgLSAxYCBtb3JlLCBhZGRpbmcgdGhlbSB0byB0aGUgYHhzLSZndDtwb29sLSZndDt4c2tiX2xpc3RgLiBUaGVuLCB0aGV5JiMzOTtyZSBpdGVyYXRpbmcgdGhyb3VnaCB0aG9zZSBidWZmZXJzLCB1c2luZyBgeHNrX2J1ZmZfZ2V0X2ZyYWcoeHNrX3hkcClgLiBJZiB0aGVyZSYjMzk7cyBhbiBhbGxvY2F0aW9uIGZhaWx1cmUgYWxvbmcgdGhlIHdheSwgaXQgdHJpZ2dlcnMgYSBjbGVhbi11cCBhbmQgZnJlZXMgdGhlIGJ1ZmZlcnMuCgpUaGlzIGlzIGEgY2xlYXIsIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBBRl9YRFAgc3Vic3lzdGVtIOKAkyBhbmQgbXkgZXhwZXJ0IGludHVpdGlvbiBpbW1lZGlhdGVseSBzY3JlYW1zICYjMzQ7RlVaWiBJVCEmIzM0Oy4gQW55dGltZSB5b3UmIzM5O3JlIHRvdWNoaW5nIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24sIGVzcGVjaWFsbHkgaW4gc29tZXRoaW5nIGFzIHBlcmZvcm1hbmNlLXNlbnNpdGl2ZSBhcyBBRl9YRFAsIHlvdSYjMzk7cmUgb3BlbmluZyB0aGUgZG9vciB0byBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGFuZCBzdWJ0bGUgY29ybmVyIGNhc2VzLiBXZSBuZWVkIHRvIGhhbW1lciB0aGlzIHdpdGggZnV6emluZy4KCk15IG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEkmIzM5O20gZ29pbmcgdG8gc2VhcmNoIHRocm91Z2ggdGhlIGBuZXQveGRwL0tjb25maWdgIGZpbGUuIEkmIzM5O2xsIHN0YXJ0IHdpdGggc29tZXRoaW5nIG9idmlvdXMgbGlrZSBgWERQX1NPQ0tFVFNgLCBvciBtYXliZSBqdXN0IGBYRFBgIGFuZCBzZWUgd2hhdCBjb21lcyB1cC4gTmVlZCB0byBtYWtlIHN1cmUgdGhpcyBjb2RlIGlzIGVuYWJsZWQgaW4gdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhEUF9TT0NLRVRTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hkcC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZHAvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L3hkcC9LY29uZmlnOjI6Y29uZmlnIFhEUF9TT0NLRVRTXG5uZXQveGRwL0tjb25maWctMy1cdGJvb2wgXCYjMzQ7WERQIHNvY2tldHNcJiMzNDtcbi0tXG5uZXQveGRwL0tjb25maWctOS1cbm5ldC94ZHAvS2NvbmZpZzoxMDpjb25maWcgWERQX1NPQ0tFVFNfRElBR1xubmV0L3hkcC9LY29uZmlnLTExLVx0dHJpc3RhdGUgXCYjMzQ7WERQIHNvY2tldHM6IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYwMgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRlcGVuZGVuY2llcyBhbmQgdGhlIGBYRFBfU09DS0VUU2AgQ29uZmlnKioKCk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gSSYjMzk7bSBsb29raW5nIGF0IGhhcyBgWERQX1NPQ0tFVFNgIGVuYWJsZWQuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgc2V0dGluZy4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBkZXBlbmRlbmN5IGFuYWx5c2lzLiBJIGhhdmUgdG8gcXVpY2tseSBhc2NlcnRhaW4gaWYgYFhEUF9TT0NLRVRTYCByZWxpZXMgb24gYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIG9yIGZlYXR1cmVzIGJlaW5nIGFjdGl2ZS4gQXJlIHRoZXJlIGFueSBwcmVyZXF1aXNpdGVzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgc3BlY2lmaWMga2VybmVsIG1vZHVsZXMgb3IgbGlicmFyaWVzIHRoYXQgdGhpcyBlbmFibGVzIGFuZCB0aGVyZWZvcmUsIEkgc2hvdWxkIGJlIGxvb2tpbmcgb3V0IGZvcj8gVW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgY3JpdGljYWwgdG8gZ3Jhc3BpbmcgaG93IGBYRFBfU09DS0VUU2AgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgYW5kIHBvdGVudGlhbGx5IHdoYXQgb3RoZXIgYXNwZWN0cyBvZiB0aGUgc3lzdGVtIEkgbWlnaHQgbmVlZCB0byBjb25zaWRlciB3aGVuIHRyb3VibGVzaG9vdGluZyBvciB0dW5pbmcgaXQuIFRoZSBkZXBlbmRlbmNpZXMgd2lsbCBsaWtlbHkgZ3VpZGUgdGhlIG5leHQgc3RlcHMgb2YgbXkgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hkcC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZHAvS2NvbmZpZz0yPWNvbmZpZyBYRFBfU09DS0VUU1xubmV0L3hkcC9LY29uZmlnLTMtXHRib29sIFwmIzM0O1hEUCBzb2NrZXRzXCYjMzQ7XG5uZXQveGRwL0tjb25maWc6NDpcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcbm5ldC94ZHAvS2NvbmZpZy01LVx0ZGVmYXVsdCBuXG4tLVxubmV0L3hkcC9LY29uZmlnPTEwPWNvbmZpZyBYRFBfU09DS0VUU19ESUFHXG5uZXQveGRwL0tjb25maWctMTEtXHR0cmlzdGF0ZSBcJiMzNDtYRFAgc29ja2V0czogbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbm5ldC94ZHAvS2NvbmZpZzoxMjpcdGRlcGVuZHMgb24gWERQX1NPQ0tFVFNcbm5ldC94ZHAvS2NvbmZpZy0xMy1cdGRlZmF1bHQgblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5ODgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgbXkgb3duIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFhEUF9TT0NLRVRTIGFuZCBCUEZfU1lTQ0FMTCBEZXBlbmRlbmN5KioKCkFscmlnaHQsIEkmIzM5O20gZGlnZ2luZyBpbnRvIGBYRFBfU09DS0VUU2AgYW5kIHRoZSBhcHBhcmVudCBkZXBlbmRlbmN5IG9uIGBCUEZfU1lTQ0FMTGAuIE15IGZpcnN0IHN0ZXAgaXMgdG8gcGlucG9pbnQgdGhlIGNvcmUgc3ltYm9scyBpbnZvbHZlZC4gUmlnaHQsIGxldCYjMzk7cyBzZWUsIHRoZSBjb2RlIHNlZW1zIHRvIHJldm9sdmUgYXJvdW5kIGBfX3hza19yY3ZgLiBJcyBpdCBhIHN0YXRpYyBmdW5jdGlvbiwgSSB3b25kZXI/IFllcCwgdGhlcmUgaXQgaXM6IGBzdGF0aWMgaW50IF9feHNrX3JjdihzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCwgdTMyIGxlbilgLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQuIFRpbWUgdG8gdHJhY2UgdGhlIGNhbGxlcnMgb2YgYF9feHNrX3JjdmAgYW5kIGdldCBhIGJldHRlciBwaWN0dXJlIG9mIHRoZSB3b3JrZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX3hza19yY3YmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGRwL3hzay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZHAveHNrLmM9MTY1PWludCB4c2tfcmVnX3Bvb2xfYXRfcWlkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB4c2tfYnVmZl9wb29sICpwb29sLFxuLS1cbm5ldC94ZHAveHNrLmMtMTkwLVxubmV0L3hkcC94c2suYzoxOTE6c3RhdGljIGludCBfX3hza19yY3ZfemMoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmX3hzayAqeHNrYiwgdTMyIGxlbixcbm5ldC94ZHAveHNrLmMtMTkyLVx0XHRcdHUzMiBmbGFncylcbi0tXG5uZXQveGRwL3hzay5jLTIwNy1cbm5ldC94ZHAveHNrLmM6MjA4OnN0YXRpYyB2b2lkIF9feHNrX3Jjdl96Y19zYWZlKHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZl94c2sgKnhza2IsXG5uZXQveGRwL3hzay5jLTIwOS1cdFx0XHQgICAgICB1MzIgbGVuLCB1MzIgZmxhZ3MpXG4tLVxubmV0L3hkcC94c2suYz0yMTk9c3RhdGljIGludCB4c2tfcmN2X3pjKHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLCB1MzIgbGVuKVxuLS1cbm5ldC94ZHAveHNrLmMtMjI5LVx0aWYgKGxpa2VseSghZnJhZ3MpKSB7XG5uZXQveGRwL3hzay5jOjIzMDpcdFx0ZXJyID0gX194c2tfcmN2X3pjKHhzLCB4c2tiLCBsZW4sIGNvbnRkKTtcbm5ldC94ZHAveHNrLmMtMjMxLVx0XHRpZiAoZXJyKVxuLS1cbm5ldC94ZHAveHNrLmMtMjQzLVxubmV0L3hkcC94c2suYzoyNDQ6XHRfX3hza19yY3ZfemNfc2FmZSh4cywgeHNrYiwgbGVuLCBjb250ZCk7XG5uZXQveGRwL3hzay5jLTI0NS1cdHhza2JfbGlzdCA9IFx1MDAyNnhza2ItXHUwMDNlcG9vbC1cdTAwM2V4c2tiX2xpc3Q7XG4tLVxubmV0L3hkcC94c2suYy0yNDktXHRcdGxlbiA9IHBvcy1cdTAwM2V4ZHAuZGF0YV9lbmQgLSBwb3MtXHUwMDNleGRwLmRhdGE7XG5uZXQveGRwL3hzay5jOjI1MDpcdFx0X194c2tfcmN2X3pjX3NhZmUoeHMsIHBvcywgbGVuLCBjb250ZCk7XG5uZXQveGRwL3hzay5jLTI1MS1cdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZwb3MtXHUwMDNlbGlzdF9ub2RlKTtcbi0tXG5uZXQveGRwL3hzay5jPTI2OD1zdGF0aWMgdTMyIHhza19jb3B5X3hkcCh2b2lkICp0bywgdm9pZCAqKmZyb20sIHUzMiB0b19sZW4sXG4tLVxubmV0L3hkcC94c2suYy0yOTUtXG5uZXQveGRwL3hzay5jOjI5NjpzdGF0aWMgaW50IF9feHNrX3JjdihzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCwgdTMyIGxlbilcbm5ldC94ZHAveHNrLmMtMjk3LXtcbi0tXG5uZXQveGRwL3hzay5jLTMxOS1cdFx0eHNrYiA9IGNvbnRhaW5lcl9vZih4c2tfeGRwLCBzdHJ1Y3QgeGRwX2J1ZmZfeHNrLCB4ZHApO1xubmV0L3hkcC94c2suYzozMjA6XHRcdGVyciA9IF9feHNrX3Jjdl96Yyh4cywgeHNrYiwgbGVuLCAwKTtcbm5ldC94ZHAveHNrLmMtMzIxLVx0XHRpZiAoZXJyKSB7XG4tLVxubmV0L3hkcC94c2suYy0zODAtXHRcdHhza2IgPSBjb250YWluZXJfb2YoeHNrX3hkcCwgc3RydWN0IHhkcF9idWZmX3hzaywgeGRwKTtcbm5ldC94ZHAveHNrLmM6MzgxOlx0XHRfX3hza19yY3ZfemNfc2FmZSh4cywgeHNrYiwgY29waWVkIC0gbWV0YV9sZW4sXG5uZXQveGRwL3hzay5jLTM4Mi1cdFx0XHRcdCAgcmVtID8gWERQX1BLVF9DT05URCA6IDApO1xuLS1cbm5ldC94ZHAveHNrLmM9NDcyPWludCB4c2tfZ2VuZXJpY19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHApXG4tLVxubmV0L3hkcC94c2suYy00NzktXHRcdHNwaW5fbG9ja19iaChcdTAwMjZ4cy1cdTAwM2Vwb29sLVx1MDAzZXJ4X2xvY2spO1xubmV0L3hkcC94c2suYzo0ODA6XHRcdGVyciA9IF9feHNrX3Jjdih4cywgeGRwLCBsZW4pO1xubmV0L3hkcC94c2suYy00ODEtXHRcdHhza19mbHVzaCh4cyk7XG4tLVxubmV0L3hkcC94c2suYz00ODg9c3RhdGljIGludCB4c2tfcmN2KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxuLS1cbm5ldC94ZHAveHNrLmMtNTAxLVxubmV0L3hkcC94c2suYzo1MDI6XHRlcnIgPSBfX3hza19yY3YoeHMsIHhkcCwgbGVuKTtcbm5ldC94ZHAveHNrLmMtNTAzLVx0aWYgKCFlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQ0MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBYU0sgUmVjZWl2ZSBQYXRoKioKCkFscmlnaHQsIHNvIGBfX3hza19yY3ZgIGlzIHRoZSBjb3JlIHJlY2VpdmUgZnVuY3Rpb24sIHRoYXQgbXVjaCBpcyBjbGVhci4gVGhlIGtleSBpcyBob3cgaXQmIzM5O3MgYmVpbmcgaW52b2tlZC4gSXQgbG9va3MgbGlrZSBib3RoIGB4c2tfZ2VuZXJpY19yY3ZgIGFuZCB0aGUgc3RyYWlnaHRmb3J3YXJkIGB4c2tfcmN2YCBhcmUgcmVzcG9uc2libGUgZm9yIGNhbGxpbmcgYF9feHNrX3JjdmAuIFRoaXMgc3VnZ2VzdHMgYSBwb3RlbnRpYWwgbGF5ZXJpbmcgb3IgYWJzdHJhY3Rpb24gaW4gdGhlIHJlY2VpdmUgcGF0aC4gTm93LCB0aGUgaW50ZXJlc3RpbmcgcXVlc3Rpb24gaXMgd2hldGhlciBgeHNrX2dlbmVyaWNfcmN2YCBpcyBleHBvcnRlZC4gSWYgc28sIHRoYXQgaW1tZWRpYXRlbHkgd2lkZW5zIHRoZSBuZXQgb2YgcG90ZW50aWFsIGNhbGxlcnMsIGFuZCBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBzcGVjaWZpYyBzY2VuYXJpb3MgaXQmIzM5O3MgaW50ZW5kZWQgZm9yIHRvIHNlZSBob3cgb3RoZXIga2VybmVsIG1vZHVsZXMgbWlnaHQgYmUgbGV2ZXJhZ2luZyBpdC4gQSBxdWljayBjaGVjayBvZiB0aGUgZXhwb3J0IHN5bWJvbHMgaXMgaW4gb3JkZXIuIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDE6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eHNrX2dlbmVyaWNfcmN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hkcC94c2suYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGRwL3hzay5jPTQ2NT1zdGF0aWMgdm9pZCB4c2tfZmx1c2goc3RydWN0IHhkcF9zb2NrICp4cylcbi0tXG5uZXQveGRwL3hzay5jLTQ3MS1cbm5ldC94ZHAveHNrLmM6NDcyOmludCB4c2tfZ2VuZXJpY19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHApXG5uZXQveGRwL3hzay5jLTQ3My17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MjMKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQW5hbHl6aW5nIENvZGUgSW50ZXJhY3Rpb25zKioKCkFscmlnaHQsIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBiaXQgb2YgY29kZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGJlZm9yZSBJIGdldCB0b28gZGVlcCBpbnRvIHRoZSBuaXR0eS1ncml0dHkgb2YgdGhlIGxvZ2ljLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gSXMgdGhpcyBhIHNlbGYtY29udGFpbmVkIG1vZHVsZSwgb3IgaXMgaXQgaW50ZXJhY3Rpbmcgd2l0aCBvdGhlciBmaWxlcyBhbmQgbW9kdWxlcz8gSXQmIzM5O3MgY3J1Y2lhbCB0byBpZGVudGlmeSBpZiB0aGlzIGZ1bmN0aW9uLCBjbGFzcywgb3Igd2hhdGV2ZXIgd2UmIzM5O3JlIGxvb2tpbmcgYXQsIGlzICoqZXhwb3J0ZWQqKiDigJMgbWVhbmluZywgdXNlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIOKAkyBvciBpZiBpdCYjMzk7cyBiZWluZyAqKmNhbGxlZCBmcm9tIG90aGVyIGZpbGVzKiouIFRoaXMgaXMgYWJzb2x1dGVseSBmdW5kYW1lbnRhbCB0byB1bmRlcnN0YW5kaW5nIGl0cyBwb3RlbnRpYWwgaW1wYWN0IGFuZCBkZXBlbmRlbmNpZXMuIFRoaXMgaGVscHMgbmFycm93IGRvd24gcG9zc2libGUgc291cmNlcyBvZiBpc3N1ZXMsIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMsIGFuZCBob3cgY2hhbmdpbmcgdGhlIGNvZGUgaGVyZSBtaWdodCByaXBwbGUgdGhyb3VnaCB0aGUgYXBwbGljYXRpb24uIEtub3dpbmcgdGhlIHNjb3BlIGFuZCB3aGVyZSBpdOKAmXMgYmVpbmcgdXNlZCBpcyBrZXkgdG8gbXkgYW5hbHlzaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hza19nZW5lcmljX3JjdiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC94ZHBfc29jay5oPTExNz1zdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyB7XG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xMjUtXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjEyNjppbnQgeHNrX2dlbmVyaWNfcmN2KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTtcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTI3LWludCBfX3hza19tYXBfcmVkaXJlY3Qoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHApO1xuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg9MTY2PXN0YXRpYyBpbmxpbmUgdm9pZCB4c2tfdHhfbWV0YWRhdGFfY29tcGxldGUoc3RydWN0IHhza190eF9tZXRhZGF0YV9jb21wbCAqY29tcGwsXG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xNzktXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjE4MDpzdGF0aWMgaW5saW5lIGludCB4c2tfZ2VuZXJpY19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHApXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTE4MS17XG4tLVxubmV0L2NvcmUvZmlsdGVyLmM9NDYyMT1zdGF0aWMgaW50IHhkcF9kb19nZW5lcmljX3JlZGlyZWN0X21hcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9jb3JlL2ZpbHRlci5jLTQ2NTYtXHRjYXNlIEJQRl9NQVBfVFlQRV9YU0tNQVA6XG5uZXQvY29yZS9maWx0ZXIuYzo0NjU3Olx0XHRlcnIgPSB4c2tfZ2VuZXJpY19yY3YoZndkLCB4ZHApO1xubmV0L2NvcmUvZmlsdGVyLmMtNDY1OC1cdFx0aWYgKGVycilcbi0tXG5uZXQveGRwL3hzay5jPTQ2NT1zdGF0aWMgdm9pZCB4c2tfZmx1c2goc3RydWN0IHhkcF9zb2NrICp4cylcbi0tXG5uZXQveGRwL3hzay5jLTQ3MS1cbm5ldC94ZHAveHNrLmM6NDcyOmludCB4c2tfZ2VuZXJpY19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHApXG5uZXQveGRwL3hzay5jLTQ3My17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1MzYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgWERQIExhbmRzY2FwZTogQSBRdWljayBBdWRpdCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIFhEUCBjb2RlLiBJJiMzOTt2ZSBnb3QgYHhza19nZW5lcmljX3JjdmAgaW4gbWluZCDigJMgdGhhdCYjMzk7cyBjYWxsZWQgZnJvbSBgeGRwX2RvX2dlbmVyaWNfcmVkaXJlY3RfbWFwYCBpbiBgbmV0L2NvcmUvZmlsdGVyLmNgLCBnb3QgaXQuIFRoYXQgZ2l2ZXMgbWUgYSBjZXJ0YWluIG1lbnRhbCBwaWN0dXJlIG9mIGhvdyBkYXRhIGlzIGdldHRpbmcgcHVzaGVkIGFyb3VuZCB3aXRoIGdlbmVyaWMgWERQIG1lY2hhbmlzbXMuIEJ1dC4uLiBob2xkIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEkmIzM5O20gd29uZGVyaW5nLCB3aGF0IGFib3V0IGB4c2tfcmN2YD8gVGhhdCYjMzk7cyB0aGUgcGFydCBJIHdhbnQgdG8gYmUgYXdhcmUgb2YgYW5kIGtlZXAgdHJhY2sgb2YuIElzIGl0IHBhcmFsbGVsIHRvIHRoZSBnZW5lcmljIGZsb3csIG9yIHNvbWV0aGluZyBkaWZmZXJlbnQ/IEl0JiMzOTtzIGp1c3QgYSBxdWljayB0aG91Z2h0IGJ1dCB3b3J0aCByZXZpc2l0aW5nLiBUaW1lIGZvciBhbm90aGVyIG1lbnRhbCBzd2VlcC4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwMToxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4c2tfcmN2JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hkcC94c2suYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGRwL3hzay5jPTE2NT1pbnQgeHNrX3JlZ19wb29sX2F0X3FpZChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcbi0tXG5uZXQveGRwL3hzay5jLTE5MC1cbm5ldC94ZHAveHNrLmM6MTkxOnN0YXRpYyBpbnQgX194c2tfcmN2X3pjKHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZl94c2sgKnhza2IsIHUzMiBsZW4sXG5uZXQveGRwL3hzay5jLTE5Mi1cdFx0XHR1MzIgZmxhZ3MpXG4tLVxubmV0L3hkcC94c2suYy0yMDctXG5uZXQveGRwL3hzay5jOjIwODpzdGF0aWMgdm9pZCBfX3hza19yY3ZfemNfc2FmZShzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmZfeHNrICp4c2tiLFxubmV0L3hkcC94c2suYy0yMDktXHRcdFx0ICAgICAgdTMyIGxlbiwgdTMyIGZsYWdzKVxuLS1cbm5ldC94ZHAveHNrLmMtMjE4LVxubmV0L3hkcC94c2suYzoyMTk6c3RhdGljIGludCB4c2tfcmN2X3pjKHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLCB1MzIgbGVuKVxubmV0L3hkcC94c2suYy0yMjAte1xuLS1cbm5ldC94ZHAveHNrLmMtMjI5LVx0aWYgKGxpa2VseSghZnJhZ3MpKSB7XG5uZXQveGRwL3hzay5jOjIzMDpcdFx0ZXJyID0gX194c2tfcmN2X3pjKHhzLCB4c2tiLCBsZW4sIGNvbnRkKTtcbm5ldC94ZHAveHNrLmMtMjMxLVx0XHRpZiAoZXJyKVxuLS1cbm5ldC94ZHAveHNrLmMtMjQzLVxubmV0L3hkcC94c2suYzoyNDQ6XHRfX3hza19yY3ZfemNfc2FmZSh4cywgeHNrYiwgbGVuLCBjb250ZCk7XG5uZXQveGRwL3hzay5jLTI0NS1cdHhza2JfbGlzdCA9IFx1MDAyNnhza2ItXHUwMDNlcG9vbC1cdTAwM2V4c2tiX2xpc3Q7XG4tLVxubmV0L3hkcC94c2suYy0yNDktXHRcdGxlbiA9IHBvcy1cdTAwM2V4ZHAuZGF0YV9lbmQgLSBwb3MtXHUwMDNleGRwLmRhdGE7XG5uZXQveGRwL3hzay5jOjI1MDpcdFx0X194c2tfcmN2X3pjX3NhZmUoeHMsIHBvcywgbGVuLCBjb250ZCk7XG5uZXQveGRwL3hzay5jLTI1MS1cdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZwb3MtXHUwMDNlbGlzdF9ub2RlKTtcbi0tXG5uZXQveGRwL3hzay5jPTI2OD1zdGF0aWMgdTMyIHhza19jb3B5X3hkcCh2b2lkICp0bywgdm9pZCAqKmZyb20sIHUzMiB0b19sZW4sXG4tLVxubmV0L3hkcC94c2suYy0yOTUtXG5uZXQveGRwL3hzay5jOjI5NjpzdGF0aWMgaW50IF9feHNrX3JjdihzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCwgdTMyIGxlbilcbm5ldC94ZHAveHNrLmMtMjk3LXtcbi0tXG5uZXQveGRwL3hzay5jLTMxOS1cdFx0eHNrYiA9IGNvbnRhaW5lcl9vZih4c2tfeGRwLCBzdHJ1Y3QgeGRwX2J1ZmZfeHNrLCB4ZHApO1xubmV0L3hkcC94c2suYzozMjA6XHRcdGVyciA9IF9feHNrX3Jjdl96Yyh4cywgeHNrYiwgbGVuLCAwKTtcbm5ldC94ZHAveHNrLmMtMzIxLVx0XHRpZiAoZXJyKSB7XG4tLVxubmV0L3hkcC94c2suYy0zODAtXHRcdHhza2IgPSBjb250YWluZXJfb2YoeHNrX3hkcCwgc3RydWN0IHhkcF9idWZmX3hzaywgeGRwKTtcbm5ldC94ZHAveHNrLmM6MzgxOlx0XHRfX3hza19yY3ZfemNfc2FmZSh4cywgeHNrYiwgY29waWVkIC0gbWV0YV9sZW4sXG5uZXQveGRwL3hzay5jLTM4Mi1cdFx0XHRcdCAgcmVtID8gWERQX1BLVF9DT05URCA6IDApO1xuLS1cbm5ldC94ZHAveHNrLmM9NDI1PXN0YXRpYyBib29sIHhza19kZXZfcXVldWVfdmFsaWQoY29uc3Qgc3RydWN0IHhkcF9zb2NrICp4cyxcbi0tXG5uZXQveGRwL3hzay5jLTQ0OS1cbm5ldC94ZHAveHNrLmM6NDUwOnN0YXRpYyBpbnQgeHNrX3Jjdl9jaGVjayhzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCwgdTMyIGxlbilcbm5ldC94ZHAveHNrLmMtNDUxLXtcbi0tXG5uZXQveGRwL3hzay5jPTQ3Mj1pbnQgeHNrX2dlbmVyaWNfcmN2KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxuLS1cbm5ldC94ZHAveHNrLmMtNDc2LVxubmV0L3hkcC94c2suYzo0Nzc6XHRlcnIgPSB4c2tfcmN2X2NoZWNrKHhzLCB4ZHAsIGxlbik7XG5uZXQveGRwL3hzay5jLTQ3OC1cdGlmICghZXJyKSB7XG5uZXQveGRwL3hzay5jLTQ3OS1cdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNnhzLVx1MDAzZXBvb2wtXHUwMDNlcnhfbG9jayk7XG5uZXQveGRwL3hzay5jOjQ4MDpcdFx0ZXJyID0gX194c2tfcmN2KHhzLCB4ZHAsIGxlbik7XG5uZXQveGRwL3hzay5jLTQ4MS1cdFx0eHNrX2ZsdXNoKHhzKTtcbi0tXG5uZXQveGRwL3hzay5jLTQ4Ny1cbm5ldC94ZHAveHNrLmM6NDg4OnN0YXRpYyBpbnQgeHNrX3JjdihzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcbm5ldC94ZHAveHNrLmMtNDg5LXtcbi0tXG5uZXQveGRwL3hzay5jLTQ5Mi1cbm5ldC94ZHAveHNrLmM6NDkzOlx0ZXJyID0geHNrX3Jjdl9jaGVjayh4cywgeGRwLCBsZW4pO1xubmV0L3hkcC94c2suYy00OTQtXHRpZiAoZXJyKVxuLS1cbm5ldC94ZHAveHNrLmMtNDk4LVx0XHRsZW4gPSB4ZHAtXHUwMDNlZGF0YV9lbmQgLSB4ZHAtXHUwMDNlZGF0YTtcbm5ldC94ZHAveHNrLmM6NDk5Olx0XHRyZXR1cm4geHNrX3Jjdl96Yyh4cywgeGRwLCBsZW4pO1xubmV0L3hkcC94c2suYy01MDAtXHR9XG5uZXQveGRwL3hzay5jLTUwMS1cbm5ldC94ZHAveHNrLmM6NTAyOlx0ZXJyID0gX194c2tfcmN2KHhzLCB4ZHAsIGxlbik7XG5uZXQveGRwL3hzay5jLTUwMy1cdGlmICghZXJyKVxuLS1cbm5ldC94ZHAveHNrLmM9NTA4PWludCBfX3hza19tYXBfcmVkaXJlY3Qoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHApXG4tLVxubmV0L3hkcC94c2suYy01MTEtXG5uZXQveGRwL3hzay5jOjUxMjpcdGVyciA9IHhza19yY3YoeHMsIHhkcCk7XG5uZXQveGRwL3hzay5jLTUxMy1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg0NDYKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgbXlzZWxmOgoKKipUcmFjaW5nIHRoZSBYRFAgRmxvdyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHhza19yY3ZgLiBUaGF0JiMzOTtzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgcmVjZWl2aW5nIGRhdGEgaW4gdGhlIFhEUCBzb2NrZXQgY29udGV4dC4gTm93LCBJIHNlZSBpdCYjMzk7cyBiZWluZyBjYWxsZWQgYnkgYF9feHNrX21hcF9yZWRpcmVjdGAuIFdhaXQgYSBtaW51dGUsIGlzbiYjMzk7dCBgX194c2tfbWFwX3JlZGlyZWN0YCBhbiBleHBvcnRlZCBzeW1ib2w/IEl0IHNlZW1zIGxpa2UgaXQgd291bGQgYmUgc2luY2UgaXQgaXMgYmVpbmcgY2FsbGVkIGJ5IGFuIGltcG9ydGFudCBmdW5jdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBleHBvcnQgbWVjaGFuaWNzIGFuZCBob3cgdGhpbmdzIGFyZSBzZXQgdXAgYW5kIGhvdyBkaWZmZXJlbnQgbW9kdWxlcyBpbnRlcmFjdCB3aXRoIGVhY2ggb3RoZXIuIFRoaXMgaXMgYWxsIGNvbWluZyB0b2dldGhlciB0byBoZWxwIG1lIGZvbGxvdyB0aGUgZGF0YSBwYXRoIGFuZCB1bmRlcnN0YW5kIGhvdyB0cmFmZmljIGdldHMgc3RlZXJlZCBpbiB0aGlzIFhEUCBhcmNoaXRlY3R1cmUuIFNvIEkgY2FuIGNsZWFybHkgdW5kZXJzdGFuZCBob3cgWERQIGFuZCBYU0sgYXJlIHdvcmtpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19feHNrX21hcF9yZWRpcmVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC94ZHBfc29jay5oPTEyNj1pbnQgeHNrX2dlbmVyaWNfcmN2KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTtcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg6MTI3OmludCBfX3hza19tYXBfcmVkaXJlY3Qoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHApO1xuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xMjgtdm9pZCBfX3hza19tYXBfZmx1c2goc3RydWN0IGxpc3RfaGVhZCAqZmx1c2hfbGlzdCk7XG4tLVxuaW5jbHVkZS9uZXQveGRwX3NvY2suaD0xODA9c3RhdGljIGlubGluZSBpbnQgeHNrX2dlbmVyaWNfcmN2KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxuLS1cbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmgtMTg0LVxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoxODU6c3RhdGljIGlubGluZSBpbnQgX194c2tfbWFwX3JlZGlyZWN0KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xODYte1xuLS1cbm5ldC9jb3JlL2ZpbHRlci5jPTQ0OTg9c3RhdGljIGlubGluZSBpbnQgX194ZHBfZG9fcmVkaXJlY3RfeHNrKHN0cnVjdCBicGZfcmVkaXJlY3RfaW5mbyAqcmksXG4tLVxubmV0L2NvcmUvZmlsdGVyLmMtNDUxMC1cbm5ldC9jb3JlL2ZpbHRlci5jOjQ1MTE6XHRlcnIgPSBfX3hza19tYXBfcmVkaXJlY3QoZndkLCB4ZHApO1xubmV0L2NvcmUvZmlsdGVyLmMtNDUxMi1cdGlmICh1bmxpa2VseShlcnIpKVxuLS1cbm5ldC94ZHAveHNrLmM9NDg4PXN0YXRpYyBpbnQgeHNrX3JjdihzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcbi0tXG5uZXQveGRwL3hzay5jLTUwNy1cbm5ldC94ZHAveHNrLmM6NTA4OmludCBfX3hza19tYXBfcmVkaXJlY3Qoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHApXG5uZXQveGRwL3hzay5jLTUwOS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxNTgKCQkJCQkJCW91dHB1dDogOTcKCQkJCQkJCXRob3VnaHRzOiA0NDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBBRl9YRFAgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgc2VlLCBgeHNrX2dlbmVyaWNfcmN2YCBhbmQgYF9feHNrX21hcF9yZWRpcmVjdGAgYXJlIHRoZSBrZXkgZW50cnkgcG9pbnRzIGhlcmUuIEkmIzM5O2xsIG5lZWQgdG8gYWRkIHRob3NlIHRvIG15IGBGb2N1c1N5bWJvbHNgIGxpc3QuIENvbnNpZGVyaW5nIHRoZSBjb25maWd1cmF0aW9uLCBpdCBsb29rcyBsaWtlIGBYRFBfU09DS0VUU2AgaXMgdGhlIHBlcnRpbmVudCBjb25maWcuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgZGVwZW5kZW50IGNvbmZpZ3MgdGhhdCBtaWdodCBpbXBhY3QgdGhpcyBhbmFseXNpcy4gYEJQRl9TWVNDQUxMYCBpcyBhIGRlcGVuZGVuY3ksIGJ1dCB0aGF0JiMzOTtzIHVzdWFsbHkgZW5hYmxlZCBzbyBpdCBzaG91bGQgYmUgZmluZS4gSSYjMzk7bGwgbWFrZSBzdXJlIGBYRFBfU09DS0VUU2AgaXMgaW5jbHVkZWQuCgpOb3csIGxldCYjMzk7cyBnZXQgaW50byB0aGUgY29kZSBpdHNlbGYuIEV4YW1pbmluZyB0aGUgc25pcHBldCBJIHNlZSwgaXQgbG9va3MgbGlrZSBzdGFuZGFyZCBmdW5jdGlvbmFsIGxvZ2ljIGZvciBtYW5hZ2luZyBYRFAgYnVmZmVycyB3aXRoaW4gQUZfWERQIHNvY2tldHMuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBvYnNlcnZpbmcgdGhlIGFsbG9jYXRpb24gYW5kIG1hbmFnZW1lbnQgb2YgZnJhZ21lbnRlZCBYRFAgYnVmZmVycy4gVGhlIHdheSBpdCBoYW5kbGVzIGB4c2tfYnVmZl9hbGxvY2AsIHRoZSB1c2Ugb2YgYGxpc3RfYWRkX3RhaWxgLCBhbmQgdGhlIGNoZWNrcyBmb3IgYWxsb2NhdGlvbiBmYWlsdXJlcyBwb2ludCBkaXJlY3RseSB0byB0aGF0LiBHaXZlbiB0aGUgY29tcGxleGl0eSBhcm91bmQgYnVmZmVyIG1hbmFnZW1lbnQgYW5kIGFsbG9jYXRpb24sIGZ1enppbmcgc2VlbXMgbGlrZSBhIHZpYWJsZSBhcHByb2FjaCwgZXNwZWNpYWxseSBnaXZlbiB0aGUgaGFuZGxpbmcgb2YgZnJhZ21lbnRlZCBidWZmZXJzLiBUaGlzIHNlZW1zIGxpa2UgYSBwcm9taXNpbmcgYXJlYSBmb3IgZmluZGluZyBlZGdlIGNhc2VzLiBTbywgaW4gc3VtbWFyeTogSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgc3ltYm9scyBgeHNrX2dlbmVyaWNfcmN2YCBhbmQgYF9feHNrX21hcF9yZWRpcmVjdGAsIHdpdGggdGhlIGBYRFBfU09DS0VUU2AgY29uZmlnIGluIG1pbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDAxOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRFBfU09DS0VUUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hza19nZW5lcmljX3JjdiYjMzQ7LAogICAgJiMzNDtfX3hza19tYXBfcmVkaXJlY3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYnVmZmVyIGFsbG9jYXRpb24gYW5kIGhhbmRsaW5nIGZvciBmcmFnbWVudGVkIFhEUCBidWZmZXJzIGluIEFGX1hEUCBzb2NrZXRzIChgX194c2tfcmN2YCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBYRFAgc29ja2V0IHJlY2VpdmUgcGF0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WERQX1NPQ0tFVFMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4c2tfZ2VuZXJpY19yY3YmIzM0OywKICAgICYjMzQ7X194c2tfbWFwX3JlZGlyZWN0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBoYW5kbGluZyBmb3IgZnJhZ21lbnRlZCBYRFAgYnVmZmVycyBpbiBBRl9YRFAgc29ja2V0cyAoYF9feHNrX3JjdmApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgWERQIHNvY2tldCByZWNlaXZlIHBhdGguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToxNDowOS4yNDY5NjQzMDJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzEyNjkwNjc1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRFBfU09DS0VUU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhza19nZW5lcmljX3JjdlwiLFxuICAgIFwiX194c2tfbWFwX3JlZGlyZWN0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYnVmZmVyIGFsbG9jYXRpb24gYW5kIGhhbmRsaW5nIGZvciBmcmFnbWVudGVkIFhEUCBidWZmZXJzIGluIEFGX1hEUCBzb2NrZXRzIChgX194c2tfcmN2YCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBYRFAgc29ja2V0IHJlY2VpdmUgcGF0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MTQ6MDkuMjQ2OTcwNjAyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjI2MDE1MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA2MGY2YTgxNzgxMzNhZjVlNDhjYWI1MTc2NDM2MzRmYWM0NTJjMzY1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDcgMDE6MTQ6MDcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3hkcC94c2suYyBiL25ldC94ZHAveHNrLmNcXG5pbmRleCA3ODU1ZWUwOWM0YjY0Li4wMmZmM2FkOTc0MTBmIDEwMDY0NFxcbi0tLSBhL25ldC94ZHAveHNrLmNcXG4rKysgYi9uZXQveGRwL3hzay5jXFxuQEAgLTI5NywxMCArMjk3LDExIEBAIHN0YXRpYyBpbnQgX194c2tfcmN2KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLCB1MzIgbGVuKVxcbiB7XFxuIFxcdHUzMiBmcmFtZV9zaXplID0gX194c2tfcG9vbF9nZXRfcnhfZnJhbWVfc2l6ZSh4cy1cXHUwMDNlcG9vbCk7XFxuIFxcdHZvaWQgKmNvcHlfZnJvbSA9IHhza19jb3B5X3hkcF9zdGFydCh4ZHApLCAqY29weV90bztcXG4rXFx0c3RydWN0IHhkcF9idWZmICpmaXJzdCwgKm5leHQsICp4c2tfeGRwO1xcbiBcXHR1MzIgZnJvbV9sZW4sIG1ldGFfbGVuLCByZW0sIG51bV9kZXNjO1xcbiBcXHRzdHJ1Y3QgeGRwX2J1ZmZfeHNrICp4c2tiO1xcbi1cXHRzdHJ1Y3QgeGRwX2J1ZmYgKnhza194ZHA7XFxuIFxcdHNrYl9mcmFnX3QgKmZyYWc7XFxuK1xcdHUzMiBpO1xcbiBcXG4gXFx0ZnJvbV9sZW4gPSB4ZHAtXFx1MDAzZWRhdGFfZW5kIC0gY29weV9mcm9tO1xcbiBcXHRtZXRhX2xlbiA9IHhkcC1cXHUwMDNlZGF0YSAtIGNvcHlfZnJvbTtcXG5AQCAtMzQzLDExICszNDQsMzQgQEAgc3RhdGljIGludCBfX3hza19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHAsIHUzMiBsZW4pXFxuIFxcdFxcdGZyYWcgPSAgXFx1MDAyNnNpbmZvLVxcdTAwM2VmcmFnc1swXTtcXG4gXFx0fVxcbiBcXG4rXFx0aWYgKFdBUk5fT05fT05DRSghbGlzdF9lbXB0eShcXHUwMDI2eHMtXFx1MDAzZXBvb2wtXFx1MDAzZXhza2JfbGlzdCkpKVxcbitcXHRcXHRnb3RvIGVycl9hbGxvYztcXG4rXFxuK1xcdGZpcnN0ID0geHNrX2J1ZmZfYWxsb2MoeHMtXFx1MDAzZXBvb2wpO1xcbitcXHRpZiAoIWZpcnN0KVxcbitcXHRcXHRnb3RvIGVycl9hbGxvYztcXG4rXFxuK1xcdHhkcF9idWZmX3NldF9mcmFnc19mbGFnKGZpcnN0KTtcXG4rXFx0Zm9yIChpID0gMTsgaSBcXHUwMDNjIG51bV9kZXNjOyBpKyspIHtcXG4rXFx0XFx0eHNrX3hkcCA9IHhza19idWZmX2FsbG9jKHhzLVxcdTAwM2Vwb29sKTtcXG4rXFx0XFx0aWYgKCF4c2tfeGRwKVxcbitcXHRcXHRcXHRnb3RvIGVycl9mcmVlO1xcbitcXG4rXFx0XFx0eHNrYiA9IGNvbnRhaW5lcl9vZih4c2tfeGRwLCBzdHJ1Y3QgeGRwX2J1ZmZfeHNrLCB4ZHApO1xcbitcXHRcXHRpZiAodW5saWtlbHkoeHNrX3hkcCA9PSBmaXJzdCB8fFxcbitcXHRcXHRcXHQgICAgICFsaXN0X2VtcHR5KFxcdTAwMjZ4c2tiLVxcdTAwM2VsaXN0X25vZGUpKSlcXG4rXFx0XFx0XFx0Z290byBlcnJfZnJlZTtcXG4rXFxuK1xcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNnhza2ItXFx1MDAzZWxpc3Rfbm9kZSwgXFx1MDAyNnhzLVxcdTAwM2Vwb29sLVxcdTAwM2V4c2tiX2xpc3QpO1xcbitcXHR9XFxuK1xcbitcXHR4ZHBfYnVmZl9jbGVhcl9mcmFnc19mbGFnKGZpcnN0KTtcXG4rXFx0eHNrX3hkcCA9IGZpcnN0O1xcbiBcXHRkbyB7XFxuIFxcdFxcdHUzMiB0b19sZW4gPSBmcmFtZV9zaXplICsgbWV0YV9sZW47XFxuIFxcdFxcdHUzMiBjb3BpZWQ7XFxuIFxcbi1cXHRcXHR4c2tfeGRwID0geHNrX2J1ZmZfYWxsb2MoeHMtXFx1MDAzZXBvb2wpO1xcbitcXHRcXHRuZXh0ID0geHNrX2J1ZmZfZ2V0X2ZyYWcoeHNrX3hkcCk7XFxuIFxcdFxcdGNvcHlfdG8gPSB4c2tfeGRwLVxcdTAwM2VkYXRhIC0gbWV0YV9sZW47XFxuIFxcbiBcXHRcXHRjb3BpZWQgPSB4c2tfY29weV94ZHAoY29weV90bywgXFx1MDAyNmNvcHlfZnJvbSwgdG9fbGVuLCBcXHUwMDI2ZnJvbV9sZW4sIFxcdTAwMjZmcmFnLCByZW0pO1xcbkBAIC0zNTYsMTAgKzM4MCwyMSBAQCBzdGF0aWMgaW50IF9feHNrX3JjdihzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCwgdTMyIGxlbilcXG4gXFx0XFx0eHNrYiA9IGNvbnRhaW5lcl9vZih4c2tfeGRwLCBzdHJ1Y3QgeGRwX2J1ZmZfeHNrLCB4ZHApO1xcbiBcXHRcXHRfX3hza19yY3ZfemNfc2FmZSh4cywgeHNrYiwgY29waWVkIC0gbWV0YV9sZW4sXFxuIFxcdFxcdFxcdFxcdCAgcmVtID8gWERQX1BLVF9DT05URCA6IDApO1xcbitcXHRcXHR4c2tfeGRwID0gbmV4dDtcXG4gXFx0XFx0bWV0YV9sZW4gPSAwO1xcbiBcXHR9IHdoaWxlIChyZW0pO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuK1xcbitlcnJfZnJlZTpcXG4rXFx0LyogUmUtc2V0IGZyYWdzIGZsYWc7IHhza19idWZmX2FsbG9jKCkgbWF5IGhhdmUgY2xlYXJlZCBmaXJzdC1cXHUwMDNlZmxhZ3NcXG4rXFx0ICogaWYgdGhlIHNhbWUgRmlsbCBSaW5nIGFkZHJlc3MgYWxpYXNlZCBiYWNrIHRvIGZpcnN0LlxcbitcXHQgKi9cXG4rXFx0eGRwX2J1ZmZfc2V0X2ZyYWdzX2ZsYWcoZmlyc3QpO1xcbitcXHR4c2tfYnVmZl9mcmVlKGZpcnN0KTtcXG4rZXJyX2FsbG9jOlxcbitcXHR4cy1cXHUwMDNlcnhfZHJvcHBlZCsrO1xcbitcXHRyZXR1cm4gLUVOT01FTTtcXG4gfVxcbiBcXG4gc3RhdGljIGJvb2wgeHNrX3R4X3dyaXRlYWJsZShzdHJ1Y3QgeGRwX3NvY2sgKnhzKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToxNDowOS43NzAzMTkyMjhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozMjYwMzU0MjA3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRFBfU09DS0VUU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhza19nZW5lcmljX3JjdlwiLFxuICAgIFwiX194c2tfbWFwX3JlZGlyZWN0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYnVmZmVyIGFsbG9jYXRpb24gYW5kIGhhbmRsaW5nIGZvciBmcmFnbWVudGVkIFhEUCBidWZmZXJzIGluIEFGX1hEUCBzb2NrZXRzIChgX194c2tfcmN2YCkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBYRFAgc29ja2V0IHJlY2VpdmUgcGF0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNjBmNmE4MTc4MTMzYWY1ZTQ4Y2FiNTE3NjQzNjM0ZmFjNDUyYzM2NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMDE6MTQ6MDcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQveGRwL3hzay5jIGIvbmV0L3hkcC94c2suY1xuaW5kZXggNzg1NWVlMDljNGI2NC4uMDJmZjNhZDk3NDEwZiAxMDA2NDRcbi0tLSBhL25ldC94ZHAveHNrLmNcbisrKyBiL25ldC94ZHAveHNrLmNcbkBAIC0yOTcsMTAgKzI5NywxMSBAQCBzdGF0aWMgaW50IF9feHNrX3JjdihzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCwgdTMyIGxlbilcbiB7XG4gXHR1MzIgZnJhbWVfc2l6ZSA9IF9feHNrX3Bvb2xfZ2V0X3J4X2ZyYW1lX3NpemUoeHMtXHUwMDNlcG9vbCk7XG4gXHR2b2lkICpjb3B5X2Zyb20gPSB4c2tfY29weV94ZHBfc3RhcnQoeGRwKSwgKmNvcHlfdG87XG4rXHRzdHJ1Y3QgeGRwX2J1ZmYgKmZpcnN0LCAqbmV4dCwgKnhza194ZHA7XG4gXHR1MzIgZnJvbV9sZW4sIG1ldGFfbGVuLCByZW0sIG51bV9kZXNjO1xuIFx0c3RydWN0IHhkcF9idWZmX3hzayAqeHNrYjtcbi1cdHN0cnVjdCB4ZHBfYnVmZiAqeHNrX3hkcDtcbiBcdHNrYl9mcmFnX3QgKmZyYWc7XG4rXHR1MzIgaTtcbiBcbiBcdGZyb21fbGVuID0geGRwLVx1MDAzZWRhdGFfZW5kIC0gY29weV9mcm9tO1xuIFx0bWV0YV9sZW4gPSB4ZHAtXHUwMDNlZGF0YSAtIGNvcHlfZnJvbTtcbkBAIC0zNDMsMTEgKzM0NCwzNCBAQCBzdGF0aWMgaW50IF9feHNrX3JjdihzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCwgdTMyIGxlbilcbiBcdFx0ZnJhZyA9ICBcdTAwMjZzaW5mby1cdTAwM2VmcmFnc1swXTtcbiBcdH1cbiBcbitcdGlmIChXQVJOX09OX09OQ0UoIWxpc3RfZW1wdHkoXHUwMDI2eHMtXHUwMDNlcG9vbC1cdTAwM2V4c2tiX2xpc3QpKSlcbitcdFx0Z290byBlcnJfYWxsb2M7XG4rXG4rXHRmaXJzdCA9IHhza19idWZmX2FsbG9jKHhzLVx1MDAzZXBvb2wpO1xuK1x0aWYgKCFmaXJzdClcbitcdFx0Z290byBlcnJfYWxsb2M7XG4rXG4rXHR4ZHBfYnVmZl9zZXRfZnJhZ3NfZmxhZyhmaXJzdCk7XG4rXHRmb3IgKGkgPSAxOyBpIFx1MDAzYyBudW1fZGVzYzsgaSsrKSB7XG4rXHRcdHhza194ZHAgPSB4c2tfYnVmZl9hbGxvYyh4cy1cdTAwM2Vwb29sKTtcbitcdFx0aWYgKCF4c2tfeGRwKVxuK1x0XHRcdGdvdG8gZXJyX2ZyZWU7XG4rXG4rXHRcdHhza2IgPSBjb250YWluZXJfb2YoeHNrX3hkcCwgc3RydWN0IHhkcF9idWZmX3hzaywgeGRwKTtcbitcdFx0aWYgKHVubGlrZWx5KHhza194ZHAgPT0gZmlyc3QgfHxcbitcdFx0XHQgICAgICFsaXN0X2VtcHR5KFx1MDAyNnhza2ItXHUwMDNlbGlzdF9ub2RlKSkpXG4rXHRcdFx0Z290byBlcnJfZnJlZTtcbitcbitcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZ4c2tiLVx1MDAzZWxpc3Rfbm9kZSwgXHUwMDI2eHMtXHUwMDNlcG9vbC1cdTAwM2V4c2tiX2xpc3QpO1xuK1x0fVxuK1xuK1x0eGRwX2J1ZmZfY2xlYXJfZnJhZ3NfZmxhZyhmaXJzdCk7XG4rXHR4c2tfeGRwID0gZmlyc3Q7XG4gXHRkbyB7XG4gXHRcdHUzMiB0b19sZW4gPSBmcmFtZV9zaXplICsgbWV0YV9sZW47XG4gXHRcdHUzMiBjb3BpZWQ7XG4gXG4tXHRcdHhza194ZHAgPSB4c2tfYnVmZl9hbGxvYyh4cy1cdTAwM2Vwb29sKTtcbitcdFx0bmV4dCA9IHhza19idWZmX2dldF9mcmFnKHhza194ZHApO1xuIFx0XHRjb3B5X3RvID0geHNrX3hkcC1cdTAwM2VkYXRhIC0gbWV0YV9sZW47XG4gXG4gXHRcdGNvcGllZCA9IHhza19jb3B5X3hkcChjb3B5X3RvLCBcdTAwMjZjb3B5X2Zyb20sIHRvX2xlbiwgXHUwMDI2ZnJvbV9sZW4sIFx1MDAyNmZyYWcsIHJlbSk7XG5AQCAtMzU2LDEwICszODAsMjEgQEAgc3RhdGljIGludCBfX3hza19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHAsIHUzMiBsZW4pXG4gXHRcdHhza2IgPSBjb250YWluZXJfb2YoeHNrX3hkcCwgc3RydWN0IHhkcF9idWZmX3hzaywgeGRwKTtcbiBcdFx0X194c2tfcmN2X3pjX3NhZmUoeHMsIHhza2IsIGNvcGllZCAtIG1ldGFfbGVuLFxuIFx0XHRcdFx0ICByZW0gPyBYRFBfUEtUX0NPTlREIDogMCk7XG4rXHRcdHhza194ZHAgPSBuZXh0O1xuIFx0XHRtZXRhX2xlbiA9IDA7XG4gXHR9IHdoaWxlIChyZW0pO1xuIFxuIFx0cmV0dXJuIDA7XG4rXG4rZXJyX2ZyZWU6XG4rXHQvKiBSZS1zZXQgZnJhZ3MgZmxhZzsgeHNrX2J1ZmZfYWxsb2MoKSBtYXkgaGF2ZSBjbGVhcmVkIGZpcnN0LVx1MDAzZWZsYWdzXG4rXHQgKiBpZiB0aGUgc2FtZSBGaWxsIFJpbmcgYWRkcmVzcyBhbGlhc2VkIGJhY2sgdG8gZmlyc3QuXG4rXHQgKi9cbitcdHhkcF9idWZmX3NldF9mcmFnc19mbGFnKGZpcnN0KTtcbitcdHhza19idWZmX2ZyZWUoZmlyc3QpO1xuK2Vycl9hbGxvYzpcbitcdHhzLVx1MDAzZXJ4X2Ryb3BwZWQrKztcbitcdHJldHVybiAtRU5PTUVNO1xuIH1cbiBcbiBzdGF0aWMgYm9vbCB4c2tfdHhfd3JpdGVhYmxlKHN0cnVjdCB4ZHBfc29jayAqeHMpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToxNDowOS43NzAzMjA3OThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODA1NDAzNDE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFhEUCBTb2NrZXQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXTigJlzIHR3ZWFraW5nIHRoZSBgX194c2tfcmN2YCBmdW5jdGlvbiB3aXRoaW4gYG5ldC94ZHAveHNrLmNgLiBGcm9tIHdoYXQgSSBnYXRoZXIsIGl0J3MgYWJvdXQgYWx0ZXJpbmcgYnVmZmVyIGFsbG9jYXRpb24gYW5kIG1hbmFnZW1lbnQgd2l0aGluIHRoYXQgY3J1Y2lhbCBgX194c2tfcmN2YCBmdW5jdGlvbiwgdGhlIGNvcmUgb2YgQUZfWERQJ3MgZGF0YSBoYW5kbGluZy5cblxuRXNzZW50aWFsbHksIHRoZXkncmUgYWxsb2NhdGluZyBhIGBmaXJzdGAgYnVmZmVyIGFuZCB0aGVuIGxvb3BpbmcgdG8gZ2V0IGBudW1fZGVzYyAtIDFgIG1vcmUsIGFkZGluZyB0aGVtIHRvIHRoZSBgeHMtXHUwMDNlcG9vbC1cdTAwM2V4c2tiX2xpc3RgLiBUaGVuLCB0aGV5J3JlIGl0ZXJhdGluZyB0aHJvdWdoIHRob3NlIGJ1ZmZlcnMsIHVzaW5nIGB4c2tfYnVmZl9nZXRfZnJhZyh4c2tfeGRwKWAuIElmIHRoZXJlJ3MgYW4gYWxsb2NhdGlvbiBmYWlsdXJlIGFsb25nIHRoZSB3YXksIGl0IHRyaWdnZXJzIGEgY2xlYW4tdXAgYW5kIGZyZWVzIHRoZSBidWZmZXJzLlxuXG5UaGlzIGlzIGEgY2xlYXIsIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBBRl9YRFAgc3Vic3lzdGVtIOKAkyBhbmQgbXkgZXhwZXJ0IGludHVpdGlvbiBpbW1lZGlhdGVseSBzY3JlYW1zIFwiRlVaWiBJVCFcIi4gQW55dGltZSB5b3UncmUgdG91Y2hpbmcgYnVmZmVyIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiwgZXNwZWNpYWxseSBpbiBzb21ldGhpbmcgYXMgcGVyZm9ybWFuY2Utc2Vuc2l0aXZlIGFzIEFGX1hEUCwgeW91J3JlIG9wZW5pbmcgdGhlIGRvb3IgdG8gcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBhbmQgc3VidGxlIGNvcm5lciBjYXNlcy4gV2UgbmVlZCB0byBoYW1tZXIgdGhpcyB3aXRoIGZ1enppbmcuXG5cbk15IG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEknbSBnb2luZyB0byBzZWFyY2ggdGhyb3VnaCB0aGUgYG5ldC94ZHAvS2NvbmZpZ2AgZmlsZS4gSSdsbCBzdGFydCB3aXRoIHNvbWV0aGluZyBvYnZpb3VzIGxpa2UgYFhEUF9TT0NLRVRTYCwgb3IgbWF5YmUganVzdCBgWERQYCBhbmQgc2VlIHdoYXQgY29tZXMgdXAuIE5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgY29kZSBpcyBlbmFibGVkIGluIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTI5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MTQ6MTQuNTc1NzI2ODQyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyNTQxNDQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBYRFBfU09DS0VUU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGRwL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hkcC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L3hkcC9LY29uZmlnOjI6Y29uZmlnIFhEUF9TT0NLRVRTXFxubmV0L3hkcC9LY29uZmlnLTMtXFx0Ym9vbCBcXFwiWERQIHNvY2tldHNcXFwiXFxuLS1cXG5uZXQveGRwL0tjb25maWctOS1cXG5uZXQveGRwL0tjb25maWc6MTA6Y29uZmlnIFhEUF9TT0NLRVRTX0RJQUdcXG5uZXQveGRwL0tjb25maWctMTEtXFx0dHJpc3RhdGUgXFxcIlhEUCBzb2NrZXRzOiBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MTQ6MTQuNjQ4MjcyOTc1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg3OTU2MTUwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGVwZW5kZW5jaWVzIGFuZCB0aGUgYFhEUF9TT0NLRVRTYCBDb25maWcqKlxuXG5Pa2F5LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIEknbSBsb29raW5nIGF0IGhhcyBgWERQX1NPQ0tFVFNgIGVuYWJsZWQuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgc2V0dGluZy4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBkZXBlbmRlbmN5IGFuYWx5c2lzLiBJIGhhdmUgdG8gcXVpY2tseSBhc2NlcnRhaW4gaWYgYFhEUF9TT0NLRVRTYCByZWxpZXMgb24gYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIG9yIGZlYXR1cmVzIGJlaW5nIGFjdGl2ZS4gQXJlIHRoZXJlIGFueSBwcmVyZXF1aXNpdGVzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgc3BlY2lmaWMga2VybmVsIG1vZHVsZXMgb3IgbGlicmFyaWVzIHRoYXQgdGhpcyBlbmFibGVzIGFuZCB0aGVyZWZvcmUsIEkgc2hvdWxkIGJlIGxvb2tpbmcgb3V0IGZvcj8gVW5kZXJzdGFuZGluZyB0aGVzZSBkZXBlbmRlbmNpZXMgaXMgY3JpdGljYWwgdG8gZ3Jhc3BpbmcgaG93IGBYRFBfU09DS0VUU2AgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgYW5kIHBvdGVudGlhbGx5IHdoYXQgb3RoZXIgYXNwZWN0cyBvZiB0aGUgc3lzdGVtIEkgbWlnaHQgbmVlZCB0byBjb25zaWRlciB3aGVuIHRyb3VibGVzaG9vdGluZyBvciB0dW5pbmcgaXQuIFRoZSBkZXBlbmRlbmNpZXMgd2lsbCBsaWtlbHkgZ3VpZGUgdGhlIG5leHQgc3RlcHMgb2YgbXkgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYwMiwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjE0OjE3LjUyNzgzODQ2OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTU2MzczNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZHAvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGRwL0tjb25maWc9Mj1jb25maWcgWERQX1NPQ0tFVFNcXG5uZXQveGRwL0tjb25maWctMy1cXHRib29sIFxcXCJYRFAgc29ja2V0c1xcXCJcXG5uZXQveGRwL0tjb25maWc6NDpcXHRkZXBlbmRzIG9uIEJQRl9TWVNDQUxMXFxubmV0L3hkcC9LY29uZmlnLTUtXFx0ZGVmYXVsdCBuXFxuLS1cXG5uZXQveGRwL0tjb25maWc9MTA9Y29uZmlnIFhEUF9TT0NLRVRTX0RJQUdcXG5uZXQveGRwL0tjb25maWctMTEtXFx0dHJpc3RhdGUgXFxcIlhEUCBzb2NrZXRzOiBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG5uZXQveGRwL0tjb25maWc6MTI6XFx0ZGVwZW5kcyBvbiBYRFBfU09DS0VUU1xcbm5ldC94ZHAvS2NvbmZpZy0xMy1cXHRkZWZhdWx0IG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MTQ6MTcuNTczNDEwNTIzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA5NTY4NDkxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiBteSBvd24gdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBYRFBfU09DS0VUUyBhbmQgQlBGX1NZU0NBTEwgRGVwZW5kZW5jeSoqXG5cbkFscmlnaHQsIEknbSBkaWdnaW5nIGludG8gYFhEUF9TT0NLRVRTYCBhbmQgdGhlIGFwcGFyZW50IGRlcGVuZGVuY3kgb24gYEJQRl9TWVNDQUxMYC4gTXkgZmlyc3Qgc3RlcCBpcyB0byBwaW5wb2ludCB0aGUgY29yZSBzeW1ib2xzIGludm9sdmVkLiBSaWdodCwgbGV0J3Mgc2VlLCB0aGUgY29kZSBzZWVtcyB0byByZXZvbHZlIGFyb3VuZCBgX194c2tfcmN2YC4gSXMgaXQgYSBzdGF0aWMgZnVuY3Rpb24sIEkgd29uZGVyPyBZZXAsIHRoZXJlIGl0IGlzOiBgc3RhdGljIGludCBfX3hza19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHAsIHUzMiBsZW4pYC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBmdW5jdGlvbiBpcyB1c2VkLiBUaW1lIHRvIHRyYWNlIHRoZSBjYWxsZXJzIG9mIGBfX3hza19yY3ZgIGFuZCBnZXQgYSBiZXR0ZXIgcGljdHVyZSBvZiB0aGUgd29ya2Zsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5ODgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToxNDoyMC42NjkwOTc5NjRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY5NjkyODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX194c2tfcmN2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZHAveHNrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hkcC94c2suYz0xNjU9aW50IHhza19yZWdfcG9vbF9hdF9xaWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuLS1cXG5uZXQveGRwL3hzay5jLTE5MC1cXG5uZXQveGRwL3hzay5jOjE5MTpzdGF0aWMgaW50IF9feHNrX3Jjdl96YyhzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmZfeHNrICp4c2tiLCB1MzIgbGVuLFxcbm5ldC94ZHAveHNrLmMtMTkyLVxcdFxcdFxcdHUzMiBmbGFncylcXG4tLVxcbm5ldC94ZHAveHNrLmMtMjA3LVxcbm5ldC94ZHAveHNrLmM6MjA4OnN0YXRpYyB2b2lkIF9feHNrX3Jjdl96Y19zYWZlKHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZl94c2sgKnhza2IsXFxubmV0L3hkcC94c2suYy0yMDktXFx0XFx0XFx0ICAgICAgdTMyIGxlbiwgdTMyIGZsYWdzKVxcbi0tXFxubmV0L3hkcC94c2suYz0yMTk9c3RhdGljIGludCB4c2tfcmN2X3pjKHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLCB1MzIgbGVuKVxcbi0tXFxubmV0L3hkcC94c2suYy0yMjktXFx0aWYgKGxpa2VseSghZnJhZ3MpKSB7XFxubmV0L3hkcC94c2suYzoyMzA6XFx0XFx0ZXJyID0gX194c2tfcmN2X3pjKHhzLCB4c2tiLCBsZW4sIGNvbnRkKTtcXG5uZXQveGRwL3hzay5jLTIzMS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxubmV0L3hkcC94c2suYy0yNDMtXFxubmV0L3hkcC94c2suYzoyNDQ6XFx0X194c2tfcmN2X3pjX3NhZmUoeHMsIHhza2IsIGxlbiwgY29udGQpO1xcbm5ldC94ZHAveHNrLmMtMjQ1LVxcdHhza2JfbGlzdCA9IFxcdTAwMjZ4c2tiLVxcdTAwM2Vwb29sLVxcdTAwM2V4c2tiX2xpc3Q7XFxuLS1cXG5uZXQveGRwL3hzay5jLTI0OS1cXHRcXHRsZW4gPSBwb3MtXFx1MDAzZXhkcC5kYXRhX2VuZCAtIHBvcy1cXHUwMDNleGRwLmRhdGE7XFxubmV0L3hkcC94c2suYzoyNTA6XFx0XFx0X194c2tfcmN2X3pjX3NhZmUoeHMsIHBvcywgbGVuLCBjb250ZCk7XFxubmV0L3hkcC94c2suYy0yNTEtXFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2cG9zLVxcdTAwM2VsaXN0X25vZGUpO1xcbi0tXFxubmV0L3hkcC94c2suYz0yNjg9c3RhdGljIHUzMiB4c2tfY29weV94ZHAodm9pZCAqdG8sIHZvaWQgKipmcm9tLCB1MzIgdG9fbGVuLFxcbi0tXFxubmV0L3hkcC94c2suYy0yOTUtXFxubmV0L3hkcC94c2suYzoyOTY6c3RhdGljIGludCBfX3hza19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHAsIHUzMiBsZW4pXFxubmV0L3hkcC94c2suYy0yOTcte1xcbi0tXFxubmV0L3hkcC94c2suYy0zMTktXFx0XFx0eHNrYiA9IGNvbnRhaW5lcl9vZih4c2tfeGRwLCBzdHJ1Y3QgeGRwX2J1ZmZfeHNrLCB4ZHApO1xcbm5ldC94ZHAveHNrLmM6MzIwOlxcdFxcdGVyciA9IF9feHNrX3Jjdl96Yyh4cywgeHNrYiwgbGVuLCAwKTtcXG5uZXQveGRwL3hzay5jLTMyMS1cXHRcXHRpZiAoZXJyKSB7XFxuLS1cXG5uZXQveGRwL3hzay5jLTM4MC1cXHRcXHR4c2tiID0gY29udGFpbmVyX29mKHhza194ZHAsIHN0cnVjdCB4ZHBfYnVmZl94c2ssIHhkcCk7XFxubmV0L3hkcC94c2suYzozODE6XFx0XFx0X194c2tfcmN2X3pjX3NhZmUoeHMsIHhza2IsIGNvcGllZCAtIG1ldGFfbGVuLFxcbm5ldC94ZHAveHNrLmMtMzgyLVxcdFxcdFxcdFxcdCAgcmVtID8gWERQX1BLVF9DT05URCA6IDApO1xcbi0tXFxubmV0L3hkcC94c2suYz00NzI9aW50IHhza19nZW5lcmljX3JjdihzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcXG4tLVxcbm5ldC94ZHAveHNrLmMtNDc5LVxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2eHMtXFx1MDAzZXBvb2wtXFx1MDAzZXJ4X2xvY2spO1xcbm5ldC94ZHAveHNrLmM6NDgwOlxcdFxcdGVyciA9IF9feHNrX3Jjdih4cywgeGRwLCBsZW4pO1xcbm5ldC94ZHAveHNrLmMtNDgxLVxcdFxcdHhza19mbHVzaCh4cyk7XFxuLS1cXG5uZXQveGRwL3hzay5jPTQ4OD1zdGF0aWMgaW50IHhza19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHApXFxuLS1cXG5uZXQveGRwL3hzay5jLTUwMS1cXG5uZXQveGRwL3hzay5jOjUwMjpcXHRlcnIgPSBfX3hza19yY3YoeHMsIHhkcCwgbGVuKTtcXG5uZXQveGRwL3hzay5jLTUwMy1cXHRpZiAoIWVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MTQ6MjAuNzE2MDcxOTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTk5MDU5NjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBYU0sgUmVjZWl2ZSBQYXRoKipcblxuQWxyaWdodCwgc28gYF9feHNrX3JjdmAgaXMgdGhlIGNvcmUgcmVjZWl2ZSBmdW5jdGlvbiwgdGhhdCBtdWNoIGlzIGNsZWFyLiBUaGUga2V5IGlzIGhvdyBpdCdzIGJlaW5nIGludm9rZWQuIEl0IGxvb2tzIGxpa2UgYm90aCBgeHNrX2dlbmVyaWNfcmN2YCBhbmQgdGhlIHN0cmFpZ2h0Zm9yd2FyZCBgeHNrX3JjdmAgYXJlIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIGBfX3hza19yY3ZgLiBUaGlzIHN1Z2dlc3RzIGEgcG90ZW50aWFsIGxheWVyaW5nIG9yIGFic3RyYWN0aW9uIGluIHRoZSByZWNlaXZlIHBhdGguIE5vdywgdGhlIGludGVyZXN0aW5nIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYHhza19nZW5lcmljX3JjdmAgaXMgZXhwb3J0ZWQuIElmIHNvLCB0aGF0IGltbWVkaWF0ZWx5IHdpZGVucyB0aGUgbmV0IG9mIHBvdGVudGlhbCBjYWxsZXJzLCBhbmQgSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBzcGVjaWZpYyBzY2VuYXJpb3MgaXQncyBpbnRlbmRlZCBmb3IgdG8gc2VlIGhvdyBvdGhlciBrZXJuZWwgbW9kdWxlcyBtaWdodCBiZSBsZXZlcmFnaW5nIGl0LiBBIHF1aWNrIGNoZWNrIG9mIHRoZSBleHBvcnQgc3ltYm9scyBpcyBpbiBvcmRlci4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NDEsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToxNDoyMy43MTUxMzU1MloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcxNjcyMDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX2dlbmVyaWNfcmN2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZHAveHNrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hkcC94c2suYz00NjU9c3RhdGljIHZvaWQgeHNrX2ZsdXNoKHN0cnVjdCB4ZHBfc29jayAqeHMpXFxuLS1cXG5uZXQveGRwL3hzay5jLTQ3MS1cXG5uZXQveGRwL3hzay5jOjQ3MjppbnQgeHNrX2dlbmVyaWNfcmN2KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxcbm5ldC94ZHAveHNrLmMtNDczLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MTQ6MjMuNzYyMzExODk1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4MzU1MDcxODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgQ29kZSBJbnRlcmFjdGlvbnMqKlxuXG5BbHJpZ2h0LCBJJ20gZGl2aW5nIGludG8gdGhpcyBiaXQgb2YgY29kZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGJlZm9yZSBJIGdldCB0b28gZGVlcCBpbnRvIHRoZSBuaXR0eS1ncml0dHkgb2YgdGhlIGxvZ2ljLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gSXMgdGhpcyBhIHNlbGYtY29udGFpbmVkIG1vZHVsZSwgb3IgaXMgaXQgaW50ZXJhY3Rpbmcgd2l0aCBvdGhlciBmaWxlcyBhbmQgbW9kdWxlcz8gSXQncyBjcnVjaWFsIHRvIGlkZW50aWZ5IGlmIHRoaXMgZnVuY3Rpb24sIGNsYXNzLCBvciB3aGF0ZXZlciB3ZSdyZSBsb29raW5nIGF0LCBpcyAqKmV4cG9ydGVkKiog4oCTIG1lYW5pbmcsIHVzZWQgYnkgb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbSDigJMgb3IgaWYgaXQncyBiZWluZyAqKmNhbGxlZCBmcm9tIG90aGVyIGZpbGVzKiouIFRoaXMgaXMgYWJzb2x1dGVseSBmdW5kYW1lbnRhbCB0byB1bmRlcnN0YW5kaW5nIGl0cyBwb3RlbnRpYWwgaW1wYWN0IGFuZCBkZXBlbmRlbmNpZXMuIFRoaXMgaGVscHMgbmFycm93IGRvd24gcG9zc2libGUgc291cmNlcyBvZiBpc3N1ZXMsIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMsIGFuZCBob3cgY2hhbmdpbmcgdGhlIGNvZGUgaGVyZSBtaWdodCByaXBwbGUgdGhyb3VnaCB0aGUgYXBwbGljYXRpb24uIEtub3dpbmcgdGhlIHNjb3BlIGFuZCB3aGVyZSBpdOKAmXMgYmVpbmcgdXNlZCBpcyBrZXkgdG8gbXkgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MjMsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToxNDoyNi41OTc4MjIzMjNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NzE2ODgyMTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieHNrX2dlbmVyaWNfcmN2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC94ZHBfc29jay5oPTExNz1zdHJ1Y3QgeHNrX3R4X21ldGFkYXRhX29wcyB7XFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTEyNS1cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjEyNjppbnQgeHNrX2dlbmVyaWNfcmN2KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTtcXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTEyNy1pbnQgX194c2tfbWFwX3JlZGlyZWN0KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKTtcXG4tLVxcbmluY2x1ZGUvbmV0L3hkcF9zb2NrLmg9MTY2PXN0YXRpYyBpbmxpbmUgdm9pZCB4c2tfdHhfbWV0YWRhdGFfY29tcGxldGUoc3RydWN0IHhza190eF9tZXRhZGF0YV9jb21wbCAqY29tcGwsXFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTE3OS1cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjE4MDpzdGF0aWMgaW5saW5lIGludCB4c2tfZ2VuZXJpY19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHApXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xODEte1xcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmM9NDYyMT1zdGF0aWMgaW50IHhkcF9kb19nZW5lcmljX3JlZGlyZWN0X21hcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmMtNDY1Ni1cXHRjYXNlIEJQRl9NQVBfVFlQRV9YU0tNQVA6XFxubmV0L2NvcmUvZmlsdGVyLmM6NDY1NzpcXHRcXHRlcnIgPSB4c2tfZ2VuZXJpY19yY3YoZndkLCB4ZHApO1xcbm5ldC9jb3JlL2ZpbHRlci5jLTQ2NTgtXFx0XFx0aWYgKGVycilcXG4tLVxcbm5ldC94ZHAveHNrLmM9NDY1PXN0YXRpYyB2b2lkIHhza19mbHVzaChzdHJ1Y3QgeGRwX3NvY2sgKnhzKVxcbi0tXFxubmV0L3hkcC94c2suYy00NzEtXFxubmV0L3hkcC94c2suYzo0NzI6aW50IHhza19nZW5lcmljX3JjdihzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcXG5uZXQveGRwL3hzay5jLTQ3My17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDAxOjE0OjI4LjQ2OTUyNjY0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzQ5ODU2MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBYRFAgTGFuZHNjYXBlOiBBIFF1aWNrIEF1ZGl0KipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIFhEUCBjb2RlLiBJJ3ZlIGdvdCBgeHNrX2dlbmVyaWNfcmN2YCBpbiBtaW5kIOKAkyB0aGF0J3MgY2FsbGVkIGZyb20gYHhkcF9kb19nZW5lcmljX3JlZGlyZWN0X21hcGAgaW4gYG5ldC9jb3JlL2ZpbHRlci5jYCwgZ290IGl0LiBUaGF0IGdpdmVzIG1lIGEgY2VydGFpbiBtZW50YWwgcGljdHVyZSBvZiBob3cgZGF0YSBpcyBnZXR0aW5nIHB1c2hlZCBhcm91bmQgd2l0aCBnZW5lcmljIFhEUCBtZWNoYW5pc21zLiBCdXQuLi4gaG9sZCBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEknbSB3b25kZXJpbmcsIHdoYXQgYWJvdXQgYHhza19yY3ZgPyBUaGF0J3MgdGhlIHBhcnQgSSB3YW50IHRvIGJlIGF3YXJlIG9mIGFuZCBrZWVwIHRyYWNrIG9mLiBJcyBpdCBwYXJhbGxlbCB0byB0aGUgZ2VuZXJpYyBmbG93LCBvciBzb21ldGhpbmcgZGlmZmVyZW50PyBJdCdzIGp1c3QgYSBxdWljayB0aG91Z2h0IGJ1dCB3b3J0aCByZXZpc2l0aW5nLiBUaW1lIGZvciBhbm90aGVyIG1lbnRhbCBzd2VlcC4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTM2LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MTQ6MzEuNTA0NTE0NjY3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTk4NjAwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4c2tfcmN2XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZHAveHNrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hkcC94c2suYz0xNjU9aW50IHhza19yZWdfcG9vbF9hdF9xaWQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXFxuLS1cXG5uZXQveGRwL3hzay5jLTE5MC1cXG5uZXQveGRwL3hzay5jOjE5MTpzdGF0aWMgaW50IF9feHNrX3Jjdl96YyhzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmZfeHNrICp4c2tiLCB1MzIgbGVuLFxcbm5ldC94ZHAveHNrLmMtMTkyLVxcdFxcdFxcdHUzMiBmbGFncylcXG4tLVxcbm5ldC94ZHAveHNrLmMtMjA3LVxcbm5ldC94ZHAveHNrLmM6MjA4OnN0YXRpYyB2b2lkIF9feHNrX3Jjdl96Y19zYWZlKHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZl94c2sgKnhza2IsXFxubmV0L3hkcC94c2suYy0yMDktXFx0XFx0XFx0ICAgICAgdTMyIGxlbiwgdTMyIGZsYWdzKVxcbi0tXFxubmV0L3hkcC94c2suYy0yMTgtXFxubmV0L3hkcC94c2suYzoyMTk6c3RhdGljIGludCB4c2tfcmN2X3pjKHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLCB1MzIgbGVuKVxcbm5ldC94ZHAveHNrLmMtMjIwLXtcXG4tLVxcbm5ldC94ZHAveHNrLmMtMjI5LVxcdGlmIChsaWtlbHkoIWZyYWdzKSkge1xcbm5ldC94ZHAveHNrLmM6MjMwOlxcdFxcdGVyciA9IF9feHNrX3Jjdl96Yyh4cywgeHNrYiwgbGVuLCBjb250ZCk7XFxubmV0L3hkcC94c2suYy0yMzEtXFx0XFx0aWYgKGVycilcXG4tLVxcbm5ldC94ZHAveHNrLmMtMjQzLVxcbm5ldC94ZHAveHNrLmM6MjQ0OlxcdF9feHNrX3Jjdl96Y19zYWZlKHhzLCB4c2tiLCBsZW4sIGNvbnRkKTtcXG5uZXQveGRwL3hzay5jLTI0NS1cXHR4c2tiX2xpc3QgPSBcXHUwMDI2eHNrYi1cXHUwMDNlcG9vbC1cXHUwMDNleHNrYl9saXN0O1xcbi0tXFxubmV0L3hkcC94c2suYy0yNDktXFx0XFx0bGVuID0gcG9zLVxcdTAwM2V4ZHAuZGF0YV9lbmQgLSBwb3MtXFx1MDAzZXhkcC5kYXRhO1xcbm5ldC94ZHAveHNrLmM6MjUwOlxcdFxcdF9feHNrX3Jjdl96Y19zYWZlKHhzLCBwb3MsIGxlbiwgY29udGQpO1xcbm5ldC94ZHAveHNrLmMtMjUxLVxcdFxcdGxpc3RfZGVsX2luaXQoXFx1MDAyNnBvcy1cXHUwMDNlbGlzdF9ub2RlKTtcXG4tLVxcbm5ldC94ZHAveHNrLmM9MjY4PXN0YXRpYyB1MzIgeHNrX2NvcHlfeGRwKHZvaWQgKnRvLCB2b2lkICoqZnJvbSwgdTMyIHRvX2xlbixcXG4tLVxcbm5ldC94ZHAveHNrLmMtMjk1LVxcbm5ldC94ZHAveHNrLmM6Mjk2OnN0YXRpYyBpbnQgX194c2tfcmN2KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwLCB1MzIgbGVuKVxcbm5ldC94ZHAveHNrLmMtMjk3LXtcXG4tLVxcbm5ldC94ZHAveHNrLmMtMzE5LVxcdFxcdHhza2IgPSBjb250YWluZXJfb2YoeHNrX3hkcCwgc3RydWN0IHhkcF9idWZmX3hzaywgeGRwKTtcXG5uZXQveGRwL3hzay5jOjMyMDpcXHRcXHRlcnIgPSBfX3hza19yY3ZfemMoeHMsIHhza2IsIGxlbiwgMCk7XFxubmV0L3hkcC94c2suYy0zMjEtXFx0XFx0aWYgKGVycikge1xcbi0tXFxubmV0L3hkcC94c2suYy0zODAtXFx0XFx0eHNrYiA9IGNvbnRhaW5lcl9vZih4c2tfeGRwLCBzdHJ1Y3QgeGRwX2J1ZmZfeHNrLCB4ZHApO1xcbm5ldC94ZHAveHNrLmM6MzgxOlxcdFxcdF9feHNrX3Jjdl96Y19zYWZlKHhzLCB4c2tiLCBjb3BpZWQgLSBtZXRhX2xlbixcXG5uZXQveGRwL3hzay5jLTM4Mi1cXHRcXHRcXHRcXHQgIHJlbSA/IFhEUF9QS1RfQ09OVEQgOiAwKTtcXG4tLVxcbm5ldC94ZHAveHNrLmM9NDI1PXN0YXRpYyBib29sIHhza19kZXZfcXVldWVfdmFsaWQoY29uc3Qgc3RydWN0IHhkcF9zb2NrICp4cyxcXG4tLVxcbm5ldC94ZHAveHNrLmMtNDQ5LVxcbm5ldC94ZHAveHNrLmM6NDUwOnN0YXRpYyBpbnQgeHNrX3Jjdl9jaGVjayhzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCwgdTMyIGxlbilcXG5uZXQveGRwL3hzay5jLTQ1MS17XFxuLS1cXG5uZXQveGRwL3hzay5jPTQ3Mj1pbnQgeHNrX2dlbmVyaWNfcmN2KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxcbi0tXFxubmV0L3hkcC94c2suYy00NzYtXFxubmV0L3hkcC94c2suYzo0Nzc6XFx0ZXJyID0geHNrX3Jjdl9jaGVjayh4cywgeGRwLCBsZW4pO1xcbm5ldC94ZHAveHNrLmMtNDc4LVxcdGlmICghZXJyKSB7XFxubmV0L3hkcC94c2suYy00NzktXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZ4cy1cXHUwMDNlcG9vbC1cXHUwMDNlcnhfbG9jayk7XFxubmV0L3hkcC94c2suYzo0ODA6XFx0XFx0ZXJyID0gX194c2tfcmN2KHhzLCB4ZHAsIGxlbik7XFxubmV0L3hkcC94c2suYy00ODEtXFx0XFx0eHNrX2ZsdXNoKHhzKTtcXG4tLVxcbm5ldC94ZHAveHNrLmMtNDg3LVxcbm5ldC94ZHAveHNrLmM6NDg4OnN0YXRpYyBpbnQgeHNrX3JjdihzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcClcXG5uZXQveGRwL3hzay5jLTQ4OS17XFxuLS1cXG5uZXQveGRwL3hzay5jLTQ5Mi1cXG5uZXQveGRwL3hzay5jOjQ5MzpcXHRlcnIgPSB4c2tfcmN2X2NoZWNrKHhzLCB4ZHAsIGxlbik7XFxubmV0L3hkcC94c2suYy00OTQtXFx0aWYgKGVycilcXG4tLVxcbm5ldC94ZHAveHNrLmMtNDk4LVxcdFxcdGxlbiA9IHhkcC1cXHUwMDNlZGF0YV9lbmQgLSB4ZHAtXFx1MDAzZWRhdGE7XFxubmV0L3hkcC94c2suYzo0OTk6XFx0XFx0cmV0dXJuIHhza19yY3ZfemMoeHMsIHhkcCwgbGVuKTtcXG5uZXQveGRwL3hzay5jLTUwMC1cXHR9XFxubmV0L3hkcC94c2suYy01MDEtXFxubmV0L3hkcC94c2suYzo1MDI6XFx0ZXJyID0gX194c2tfcmN2KHhzLCB4ZHAsIGxlbik7XFxubmV0L3hkcC94c2suYy01MDMtXFx0aWYgKCFlcnIpXFxuLS1cXG5uZXQveGRwL3hzay5jPTUwOD1pbnQgX194c2tfbWFwX3JlZGlyZWN0KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxcbi0tXFxubmV0L3hkcC94c2suYy01MTEtXFxubmV0L3hkcC94c2suYzo1MTI6XFx0ZXJyID0geHNrX3Jjdih4cywgeGRwKTtcXG5uZXQveGRwL3hzay5jLTUxMy1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToxNDozMS41NTQ1MDg3MjJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAwNDkyNDk1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZjpcblxuKipUcmFjaW5nIHRoZSBYRFAgRmxvdyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGB4c2tfcmN2YC4gVGhhdCdzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgcmVjZWl2aW5nIGRhdGEgaW4gdGhlIFhEUCBzb2NrZXQgY29udGV4dC4gTm93LCBJIHNlZSBpdCdzIGJlaW5nIGNhbGxlZCBieSBgX194c2tfbWFwX3JlZGlyZWN0YC4gV2FpdCBhIG1pbnV0ZSwgaXNuJ3QgYF9feHNrX21hcF9yZWRpcmVjdGAgYW4gZXhwb3J0ZWQgc3ltYm9sPyBJdCBzZWVtcyBsaWtlIGl0IHdvdWxkIGJlIHNpbmNlIGl0IGlzIGJlaW5nIGNhbGxlZCBieSBhbiBpbXBvcnRhbnQgZnVuY3Rpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgZXhwb3J0IG1lY2hhbmljcyBhbmQgaG93IHRoaW5ncyBhcmUgc2V0IHVwIGFuZCBob3cgZGlmZmVyZW50IG1vZHVsZXMgaW50ZXJhY3Qgd2l0aCBlYWNoIG90aGVyLiBUaGlzIGlzIGFsbCBjb21pbmcgdG9nZXRoZXIgdG8gaGVscCBtZSBmb2xsb3cgdGhlIGRhdGEgcGF0aCBhbmQgdW5kZXJzdGFuZCBob3cgdHJhZmZpYyBnZXRzIHN0ZWVyZWQgaW4gdGhpcyBYRFAgYXJjaGl0ZWN0dXJlLiBTbyBJIGNhbiBjbGVhcmx5IHVuZGVyc3RhbmQgaG93IFhEUCBhbmQgWFNLIGFyZSB3b3JraW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDQ2LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MTQ6MzQuNTU5NDM2NzYyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzYwNzg5NzU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9feHNrX21hcF9yZWRpcmVjdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQveGRwX3NvY2suaD0xMjY9aW50IHhza19nZW5lcmljX3JjdihzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCk7XFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaDoxMjc6aW50IF9feHNrX21hcF9yZWRpcmVjdChzdHJ1Y3QgeGRwX3NvY2sgKnhzLCBzdHJ1Y3QgeGRwX2J1ZmYgKnhkcCk7XFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xMjgtdm9pZCBfX3hza19tYXBfZmx1c2goc3RydWN0IGxpc3RfaGVhZCAqZmx1c2hfbGlzdCk7XFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oPTE4MD1zdGF0aWMgaW5saW5lIGludCB4c2tfZ2VuZXJpY19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHApXFxuLS1cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oLTE4NC1cXG5pbmNsdWRlL25ldC94ZHBfc29jay5oOjE4NTpzdGF0aWMgaW5saW5lIGludCBfX3hza19tYXBfcmVkaXJlY3Qoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHApXFxuaW5jbHVkZS9uZXQveGRwX3NvY2suaC0xODYte1xcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmM9NDQ5OD1zdGF0aWMgaW5saW5lIGludCBfX3hkcF9kb19yZWRpcmVjdF94c2soc3RydWN0IGJwZl9yZWRpcmVjdF9pbmZvICpyaSxcXG4tLVxcbm5ldC9jb3JlL2ZpbHRlci5jLTQ1MTAtXFxubmV0L2NvcmUvZmlsdGVyLmM6NDUxMTpcXHRlcnIgPSBfX3hza19tYXBfcmVkaXJlY3QoZndkLCB4ZHApO1xcbm5ldC9jb3JlL2ZpbHRlci5jLTQ1MTItXFx0aWYgKHVubGlrZWx5KGVycikpXFxuLS1cXG5uZXQveGRwL3hzay5jPTQ4OD1zdGF0aWMgaW50IHhza19yY3Yoc3RydWN0IHhkcF9zb2NrICp4cywgc3RydWN0IHhkcF9idWZmICp4ZHApXFxuLS1cXG5uZXQveGRwL3hzay5jLTUwNy1cXG5uZXQveGRwL3hzay5jOjUwODppbnQgX194c2tfbWFwX3JlZGlyZWN0KHN0cnVjdCB4ZHBfc29jayAqeHMsIHN0cnVjdCB4ZHBfYnVmZiAqeGRwKVxcbm5ldC94ZHAveHNrLmMtNTA5LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDE6MTQ6MzYuMzIwMjMyODgxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NjMzMDI0NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBBRl9YRFAgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIHNlZSwgYHhza19nZW5lcmljX3JjdmAgYW5kIGBfX3hza19tYXBfcmVkaXJlY3RgIGFyZSB0aGUga2V5IGVudHJ5IHBvaW50cyBoZXJlLiBJJ2xsIG5lZWQgdG8gYWRkIHRob3NlIHRvIG15IGBGb2N1c1N5bWJvbHNgIGxpc3QuIENvbnNpZGVyaW5nIHRoZSBjb25maWd1cmF0aW9uLCBpdCBsb29rcyBsaWtlIGBYRFBfU09DS0VUU2AgaXMgdGhlIHBlcnRpbmVudCBjb25maWcuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0byBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBvdGhlciBkZXBlbmRlbnQgY29uZmlncyB0aGF0IG1pZ2h0IGltcGFjdCB0aGlzIGFuYWx5c2lzLiBgQlBGX1NZU0NBTExgIGlzIGEgZGVwZW5kZW5jeSwgYnV0IHRoYXQncyB1c3VhbGx5IGVuYWJsZWQgc28gaXQgc2hvdWxkIGJlIGZpbmUuIEknbGwgbWFrZSBzdXJlIGBYRFBfU09DS0VUU2AgaXMgaW5jbHVkZWQuXG5cbk5vdywgbGV0J3MgZ2V0IGludG8gdGhlIGNvZGUgaXRzZWxmLiBFeGFtaW5pbmcgdGhlIHNuaXBwZXQgSSBzZWUsIGl0IGxvb2tzIGxpa2Ugc3RhbmRhcmQgZnVuY3Rpb25hbCBsb2dpYyBmb3IgbWFuYWdpbmcgWERQIGJ1ZmZlcnMgd2l0aGluIEFGX1hEUCBzb2NrZXRzLiBTcGVjaWZpY2FsbHksIEknbSBvYnNlcnZpbmcgdGhlIGFsbG9jYXRpb24gYW5kIG1hbmFnZW1lbnQgb2YgZnJhZ21lbnRlZCBYRFAgYnVmZmVycy4gVGhlIHdheSBpdCBoYW5kbGVzIGB4c2tfYnVmZl9hbGxvY2AsIHRoZSB1c2Ugb2YgYGxpc3RfYWRkX3RhaWxgLCBhbmQgdGhlIGNoZWNrcyBmb3IgYWxsb2NhdGlvbiBmYWlsdXJlcyBwb2ludCBkaXJlY3RseSB0byB0aGF0LiBHaXZlbiB0aGUgY29tcGxleGl0eSBhcm91bmQgYnVmZmVyIG1hbmFnZW1lbnQgYW5kIGFsbG9jYXRpb24sIGZ1enppbmcgc2VlbXMgbGlrZSBhIHZpYWJsZSBhcHByb2FjaCwgZXNwZWNpYWxseSBnaXZlbiB0aGUgaGFuZGxpbmcgb2YgZnJhZ21lbnRlZCBidWZmZXJzLiBUaGlzIHNlZW1zIGxpa2UgYSBwcm9taXNpbmcgYXJlYSBmb3IgZmluZGluZyBlZGdlIGNhc2VzLiBTbywgaW4gc3VtbWFyeTogSSdtIGZvY3VzaW5nIG9uIHRoZSBzeW1ib2xzIGB4c2tfZ2VuZXJpY19yY3ZgIGFuZCBgX194c2tfbWFwX3JlZGlyZWN0YCwgd2l0aCB0aGUgYFhEUF9TT0NLRVRTYCBjb25maWcgaW4gbWluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTE1OCwiT3V0cHV0VG9rZW5zIjo5NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwMToxNDo0Mi4yODM1MzkwMjZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDMxODY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWERQX1NPQ0tFVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4c2tfZ2VuZXJpY19yY3ZcIixcbiAgICBcIl9feHNrX21hcF9yZWRpcmVjdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBoYW5kbGluZyBmb3IgZnJhZ21lbnRlZCBYRFAgYnVmZmVycyBpbiBBRl9YRFAgc29ja2V0cyAoYF9feHNrX3JjdmApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgWERQIHNvY2tldCByZWNlaXZlIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWERQX1NPQ0tFVFNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4c2tfZ2VuZXJpY19yY3ZcIixcbiAgICBcIl9feHNrX21hcF9yZWRpcmVjdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGJ1ZmZlciBhbGxvY2F0aW9uIGFuZCBoYW5kbGluZyBmb3IgZnJhZ21lbnRlZCBYRFAgYnVmZmVycyBpbiBBRl9YRFAgc29ja2V0cyAoYF9feHNrX3JjdmApLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgWERQIHNvY2tldCByZWNlaXZlIHBhdGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4drg8[1] Phase: Succeeded StartedAt: 2026-08-07 01:14:53 +0000 UTC FinishedAt: 2026-08-07 01:14:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4drg8[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-07 01:14:53 +0000 UTC FinishedAt: 2026-08-07 01:14:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4drg8[2] Phase: Succeeded StartedAt: 2026-08-07 01:14:53 +0000 UTC FinishedAt: 2026-08-07 05:00:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-07 01:14:53 +0000 UTC FinishedAt: 2026-08-07 05:00:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-07 01:14:53 +0000 UTC FinishedAt: 2026-08-07 01:15:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-07 01:14:53 +0000 UTC FinishedAt: 2026-08-07 01:14:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflow4drg8/series-workflow4drg8-convert-artifact-157302797/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-07 01:15:03 +0000 UTC FinishedAt: 2026-08-07 01:35:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-07 01:15:03 +0000 UTC FinishedAt: 2026-08-07 01:35:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*31a37c09-e69a-477d-8ed0-398a498891f8,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-workflow4drg8/series-workflow4drg8-convert-artifact-157302797/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": "184b7397-d47f-44d1-bffd-4bb4e0e70256", "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-workflow4drg8/series-workflow4drg8-build-action-4195851139/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-07 01:15:03 +0000 UTC FinishedAt: 2026-08-07 01:34:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*31a37c09-e69a-477d-8ed0-398a498891f8,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-workflow4drg8/series-workflow4drg8-convert-artifact-157302797/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": "184b7397-d47f-44d1-bffd-4bb4e0e70256", "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-workflow4drg8/series-workflow4drg8-build-action-4195851139/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-07 01:35:05 +0000 UTC FinishedAt: 2026-08-07 01:35:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-07 01:35:05 +0000 UTC FinishedAt: 2026-08-07 01:35:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-07 01:35:05 +0000 UTC FinishedAt: 2026-08-07 01:35:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-07 01:35:05 +0000 UTC FinishedAt: 2026-08-07 01:35:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflow4drg8/series-workflow4drg8-convert-artifact-310656104/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-07 01:35:16 +0000 UTC FinishedAt: 2026-08-07 01:37:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-07 01:35:16 +0000 UTC FinishedAt: 2026-08-07 01:37:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*184b7397-d47f-44d1-bffd-4bb4e0e70256,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-workflow4drg8/series-workflow4drg8-build-action-4195851139/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-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-07 01:37:16 +0000 UTC FinishedAt: 2026-08-07 01:37:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-07 01:37:16 +0000 UTC FinishedAt: 2026-08-07 01:37:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-07 01:37:16 +0000 UTC FinishedAt: 2026-08-07 01:55:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-07 01:37:16 +0000 UTC FinishedAt: 2026-08-07 01:55:38 +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:*31a37c09-e69a-477d-8ed0-398a498891f8,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-workflow4drg8/series-workflow4drg8-convert-artifact-310656104/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": "c04df4d4-62b0-4fc2-b004-c9dd4e30393f", "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-workflow4drg8/series-workflow4drg8-build-action-980481044/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-07 01:37:16 +0000 UTC FinishedAt: 2026-08-07 01:55:28 +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:*31a37c09-e69a-477d-8ed0-398a498891f8,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-workflow4drg8/series-workflow4drg8-convert-artifact-310656104/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": "c04df4d4-62b0-4fc2-b004-c9dd4e30393f", "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-workflow4drg8/series-workflow4drg8-build-action-980481044/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-07 01:55:38 +0000 UTC FinishedAt: 2026-08-07 01:55:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-07 01:55:38 +0000 UTC FinishedAt: 2026-08-07 01:55:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-07 01:55:38 +0000 UTC FinishedAt: 2026-08-07 01:57:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-07 01:55:38 +0000 UTC FinishedAt: 2026-08-07 01:57:33 +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:*c04df4d4-62b0-4fc2-b004-c9dd4e30393f,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-workflow4drg8/series-workflow4drg8-build-action-980481044/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-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-07 01:57:43 +0000 UTC FinishedAt: 2026-08-07 05:00:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-07 01:57:43 +0000 UTC FinishedAt: 2026-08-07 05:00:42 +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":["xsk_generic_rcv","__xsk_map_redirect"],"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:*184b7397-d47f-44d1-bffd-4bb4e0e70256,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c04df4d4-62b0-4fc2-b004-c9dd4e30393f,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-workflow4drg8/series-workflow4drg8-build-action-4195851139/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-workflow4drg8/series-workflow4drg8-build-action-980481044/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-07 01:57:43 +0000 UTC FinishedAt: 2026-08-07 01:57:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-07 01:57:43 +0000 UTC FinishedAt: 2026-08-07 01:57:47 +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":["xsk_generic_rcv","__xsk_map_redirect"],"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-workflow4drg8/series-workflow4drg8-convert-artifact-3931238817/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-07 01:57:43 +0000 UTC FinishedAt: 2026-08-07 01:57:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-07 01:57:43 +0000 UTC FinishedAt: 2026-08-07 01:57:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-07 01:57:43 +0000 UTC FinishedAt: 2026-08-07 01:57:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-07 01:57:53 +0000 UTC FinishedAt: 2026-08-07 05:00:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4drg8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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":["xsk_generic_rcv","__xsk_map_redirect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"594d905195024b228c962627ae5ae7c17bd582a4","config_name":"upstream-apparmor-kasan.config","enable_configs":["XDP_SOCKETS"],"series_id":"81b4f4df-13e8-451b-a7fe-edd22b522bbf","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-07 01:57:53 +0000 UTC FinishedAt: 2026-08-07 05:00:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*184b7397-d47f-44d1-bffd-4bb4e0e70256,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c04df4d4-62b0-4fc2-b004-c9dd4e30393f,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-workflow4drg8/series-workflow4drg8-build-action-4195851139/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-workflow4drg8/series-workflow4drg8-build-action-980481044/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-workflow4drg8/series-workflow4drg8-convert-artifact-3931238817/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,}