Name: series-workflow7nhfw Phase: Succeeded StartedAt: 2026-06-23 10:30:43 +0000 UTC FinishedAt: 2026-06-23 14:54:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7nhfw[0] Phase: Succeeded StartedAt: 2026-06-23 10:30:43 +0000 UTC FinishedAt: 2026-06-23 10:48:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7nhfw[0].run-triage Phase: Succeeded StartedAt: 2026-06-23 10:30:43 +0000 UTC FinishedAt: 2026-06-23 10:48:50 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "502d801f0ab03e4f32f9a33d203154ce84887921", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "502d801f0ab03e4f32f9a33d203154ce84887921", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "db0d0122-74c5-47b9-b7c1-75b9f8f51dad" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ext4_xattr_inode_match", "ext4_xattr_inode_cache_find" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDEwOjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X3hhdHRyX2lub2RlX21hdGNoJiMzNDssCiAgICAmIzM0O2V4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXh0NCBleHRlbmRlZCBhdHRyaWJ1dGUgKHhhdHRyKSBsb2dpYywgc3BlY2lmaWNhbGx5IHRoZSBjYWNoaW5nIGFuZCBsb29rdXAgb2YgRUEgaW5vZGVzLiBJdCByZXBsYWNlcyBgZXh0NF9pZ2V0YCB3aXRoIGBmaW5kX2lub2RlX25vd2FpdGAgYW5kIGFkZHMgYSBjdXN0b20gaW5vZGUgbWF0Y2ggZnVuY3Rpb24gYGV4dDRfeGF0dHJfaW5vZGVfbWF0Y2hgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGZpbGVzeXN0ZW0gdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgeGF0dHIgc3lzY2FsbHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTA6NDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmMDgwNDNjMTUwNmJkYWMyMjVkMjE0MzFhYWJhYzEwOGY0OTMwMGJiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMTA6NDg6MDcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC94YXR0ci5jIGIvZnMvZXh0NC94YXR0ci5jXG5pbmRleCA5ODJhMWY4MzFlMjI4Mi4uZWYxM2U3YTc2MTUzZjMgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L3hhdHRyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQveGF0dHIuY1xuQEAgLTE1MjMsNiAmIzQzOzE1MjMsMjAgQEAgc3RhdGljIHN0cnVjdCBpbm9kZSAqZXh0NF94YXR0cl9pbm9kZV9jcmVhdGUoaGFuZGxlX3QgKmhhbmRsZSxcbiBcdHJldHVybiBlYV9pbm9kZTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgZXh0NF94YXR0cl9pbm9kZV9tYXRjaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1NjQgaW5vLCB2b2lkICpkYXRhKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGlub2RlLVx1MDAzZWlfaW5vICE9IGlubylcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdHNwaW5fbG9jayhcdTAwMjZpbm9kZS1cdTAwM2VpX2xvY2spO1xuJiM0MztcdGlmIChpbm9kZV9zdGF0ZV9yZWFkKGlub2RlKSBcdTAwMjYgKElfRlJFRUlORyB8IElfV0lMTF9GUkVFKSkge1xuJiM0MztcdFx0c3Bpbl91bmxvY2soXHUwMDI2aW5vZGUtXHUwMDNlaV9sb2NrKTtcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdH1cbiYjNDM7XHRfX2lnZXQoaW5vZGUpO1xuJiM0MztcdHNwaW5fdW5sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4mIzQzO1x0cmV0dXJuIDE7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHN0cnVjdCBpbm9kZSAqXG4gZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHZvaWQgKnZhbHVlLFxuIFx0XHRcdCAgICBzaXplX3QgdmFsdWVfbGVuLCB1MzIgaGFzaClcbkBAIC0xNTQ5LDEwICYjNDM7MTU2MywxOSBAQCBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmQoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgdm9pZCAqdmFsdWUsXG4gXHR9XG4gXG4gXHR3aGlsZSAoY2UpIHtcbi1cdFx0ZWFfaW5vZGUgPSBleHQ0X2lnZXQoaW5vZGUtXHUwMDNlaV9zYiwgY2UtXHUwMDNlZV92YWx1ZSxcbi1cdFx0XHRcdCAgICAgRVhUNF9JR0VUX0VBX0lOT0RFKTtcbi1cdFx0aWYgKElTX0VSUihlYV9pbm9kZSkpXG4mIzQzO1x0XHRlYV9pbm9kZSA9IGZpbmRfaW5vZGVfbm93YWl0KGlub2RlLVx1MDAzZWlfc2IsIGNlLVx1MDAzZWVfdmFsdWUsXG4mIzQzO1x0XHRcdFx0XHQgICAgIGV4dDRfeGF0dHJfaW5vZGVfbWF0Y2gsIE5VTEwpO1xuJiM0MztcdFx0aWYgKCFlYV9pbm9kZSlcbiBcdFx0XHRnb3RvIG5leHRfZW50cnk7XG4mIzQzO1x0XHRpZiAoaW5vZGVfc3RhdGVfcmVhZF9vbmNlKGVhX2lub2RlKSBcdTAwMjYgSV9ORVcpXG4mIzQzO1x0XHRcdHdhaXRfb25fbmV3X2lub2RlKGVhX2lub2RlKTtcbiYjNDM7XHRcdGlmIChpc19iYWRfaW5vZGUoZWFfaW5vZGUpIHx8XG4mIzQzO1x0XHQgICAgIShFWFQ0X0koZWFfaW5vZGUpLVx1MDAzZWlfZmxhZ3MgXHUwMDI2IEVYVDRfRUFfSU5PREVfRkwpIHx8XG4mIzQzO1x0XHQgICAgZXh0NF90ZXN0X2lub2RlX3N0YXRlKGVhX2lub2RlLCBFWFQ0X1NUQVRFX1hBVFRSKSB8fFxuJiM0MztcdFx0ICAgIEVYVDRfSShlYV9pbm9kZSktXHUwMDNlaV9maWxlX2FjbCkge1xuJiM0MztcdFx0XHRpcHV0KGVhX2lub2RlKTtcbiYjNDM7XHRcdFx0Z290byBuZXh0X2VudHJ5O1xuJiM0MztcdFx0fVxuIFx0XHRleHQ0X3hhdHRyX2lub2RlX3NldF9jbGFzcyhlYV9pbm9kZSk7XG4gXHRcdGlmIChpX3NpemVfcmVhZChlYV9pbm9kZSkgPT0gdmFsdWVfbGVuIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgIWV4dDRfeGF0dHJfaW5vZGVfcmVhZChlYV9pbm9kZSwgZWFfZGF0YSwgdmFsdWVfbGVuKSBcdTAwMjZcdTAwMjZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMDo0ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF94YXR0cl9pbm9kZV9tYXRjaCYjMzQ7LAogICAgJiMzNDtleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGV4dDQgZXh0ZW5kZWQgYXR0cmlidXRlICh4YXR0cikgbG9naWMsIHNwZWNpZmljYWxseSB0aGUgY2FjaGluZyBhbmQgbG9va3VwIG9mIEVBIGlub2Rlcy4gSXQgcmVwbGFjZXMgYGV4dDRfaWdldGAgd2l0aCBgZmluZF9pbm9kZV9ub3dhaXRgIGFuZCBhZGRzIGEgY3VzdG9tIGlub2RlIG1hdGNoIGZ1bmN0aW9uIGBleHQ0X3hhdHRyX2lub2RlX21hdGNoYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBmaWxlc3lzdGVtIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHhhdHRyIHN5c2NhbGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmMDgwNDNjMTUwNmJkYWMyMjVkMjE0MzFhYWJhYzEwOGY0OTMwMGJiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdW4gMjMgMTA6NDg6MDcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9leHQ0L3hhdHRyLmMgYi9mcy9leHQ0L3hhdHRyLmMKaW5kZXggOTgyYTFmODMxZTIyODIuLmVmMTNlN2E3NjE1M2YzIDEwMDY0NAotLS0gYS9mcy9leHQ0L3hhdHRyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXh0NC94YXR0ci5jCkBAIC0xNTIzLDYgJiM0MzsxNTIzLDIwIEBAIHN0YXRpYyBzdHJ1Y3QgaW5vZGUgKmV4dDRfeGF0dHJfaW5vZGVfY3JlYXRlKGhhbmRsZV90ICpoYW5kbGUsCiAJcmV0dXJuIGVhX2lub2RlOwogfQogCiYjNDM7c3RhdGljIGludCBleHQ0X3hhdHRyX2lub2RlX21hdGNoKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHU2NCBpbm8sIHZvaWQgKmRhdGEpCiYjNDM7ewomIzQzOwlpZiAoaW5vZGUtJmd0O2lfaW5vICE9IGlubykKJiM0MzsJCXJldHVybiAwOwomIzQzOwlzcGluX2xvY2soJmFtcDtpbm9kZS0mZ3Q7aV9sb2NrKTsKJiM0MzsJaWYgKGlub2RlX3N0YXRlX3JlYWQoaW5vZGUpICZhbXA7IChJX0ZSRUVJTkcgfCBJX1dJTExfRlJFRSkpIHsKJiM0MzsJCXNwaW5fdW5sb2NrKCZhbXA7aW5vZGUtJmd0O2lfbG9jayk7CiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsJfQomIzQzOwlfX2lnZXQoaW5vZGUpOwomIzQzOwlzcGluX3VubG9jaygmYW1wO2lub2RlLSZndDtpX2xvY2spOwomIzQzOwlyZXR1cm4gMTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgc3RydWN0IGlub2RlICoKIGV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCB2b2lkICp2YWx1ZSwKIAkJCSAgICBzaXplX3QgdmFsdWVfbGVuLCB1MzIgaGFzaCkKQEAgLTE1NDksMTAgJiM0MzsxNTYzLDE5IEBAIGV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCB2b2lkICp2YWx1ZSwKIAl9CiAKIAl3aGlsZSAoY2UpIHsKLQkJZWFfaW5vZGUgPSBleHQ0X2lnZXQoaW5vZGUtJmd0O2lfc2IsIGNlLSZndDtlX3ZhbHVlLAotCQkJCSAgICAgRVhUNF9JR0VUX0VBX0lOT0RFKTsKLQkJaWYgKElTX0VSUihlYV9pbm9kZSkpCiYjNDM7CQllYV9pbm9kZSA9IGZpbmRfaW5vZGVfbm93YWl0KGlub2RlLSZndDtpX3NiLCBjZS0mZ3Q7ZV92YWx1ZSwKJiM0MzsJCQkJCSAgICAgZXh0NF94YXR0cl9pbm9kZV9tYXRjaCwgTlVMTCk7CiYjNDM7CQlpZiAoIWVhX2lub2RlKQogCQkJZ290byBuZXh0X2VudHJ5OwomIzQzOwkJaWYgKGlub2RlX3N0YXRlX3JlYWRfb25jZShlYV9pbm9kZSkgJmFtcDsgSV9ORVcpCiYjNDM7CQkJd2FpdF9vbl9uZXdfaW5vZGUoZWFfaW5vZGUpOwomIzQzOwkJaWYgKGlzX2JhZF9pbm9kZShlYV9pbm9kZSkgfHwKJiM0MzsJCSAgICAhKEVYVDRfSShlYV9pbm9kZSktJmd0O2lfZmxhZ3MgJmFtcDsgRVhUNF9FQV9JTk9ERV9GTCkgfHwKJiM0MzsJCSAgICBleHQ0X3Rlc3RfaW5vZGVfc3RhdGUoZWFfaW5vZGUsIEVYVDRfU1RBVEVfWEFUVFIpIHx8CiYjNDM7CQkgICAgRVhUNF9JKGVhX2lub2RlKS0mZ3Q7aV9maWxlX2FjbCkgewomIzQzOwkJCWlwdXQoZWFfaW5vZGUpOwomIzQzOwkJCWdvdG8gbmV4dF9lbnRyeTsKJiM0MzsJCX0KIAkJZXh0NF94YXR0cl9pbm9kZV9zZXRfY2xhc3MoZWFfaW5vZGUpOwogCQlpZiAoaV9zaXplX3JlYWQoZWFfaW5vZGUpID09IHZhbHVlX2xlbiAmYW1wOyZhbXA7CiAJCSAgICAhZXh0NF94YXR0cl9pbm9kZV9yZWFkKGVhX2lub2RlLCBlYV9kYXRhLCB2YWx1ZV9sZW4pICZhbXA7JmFtcDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTA6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMzNQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDE1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEV4dDQgWGF0dHIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyBoaXR0aW5nIGBmcy9leHQ0L3hhdHRyLmNgLiBMb29rcyBsaWtlIGl0JiMzOTtzIGludHJvZHVjaW5nIGEgZnVuY3Rpb24gY2FsbGVkIGBleHQ0X3hhdHRyX2lub2RlX21hdGNoYCBhbmQgdHdlYWtpbmcgYGV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZGAuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgYXJvdW5kIGhvdyBpbm9kZXMgYXJlIGhhbmRsZWQsIHNwZWNpZmljYWxseSByZXBsYWNpbmcgYGV4dDRfaWdldGAgd2l0aCBgZmluZF9pbm9kZV9ub3dhaXRgIGFuZCB0aGVuIGFkZGluZyBzb21lIG1hbnVhbCBzdGF0ZSBjaGVja3Mgb24gdGhlIGlub2RlLiBSaWdodCBhd2F5LCBJIHNlZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGV4dDQgZXh0ZW5kZWQgYXR0cmlidXRlIGhhbmRsaW5nLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCBpbiBkZXRhaWwuCgpOb3csIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGZvciBhbnkgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIGBmcy9leHQ0L3hhdHRyLmNgIGlzIGRlZmluaXRlbHkgY29tcGlsZWQgd2hlbiBgQ09ORklHX0VYVDRfRlNgIGlzIGVuYWJsZWQsIGJ1dCBhcmUgdGhlcmUgYW55ICpzcGVjaWZpYyogY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byB4YXR0cnMgdGhhdCB0aGlzIHBhdGNoIG1pZ2h0IG5lZWQ/IExldCYjMzk7cyBxdWlja2x5IHNjYW4gdGhlIGBmcy9leHQ0L01ha2VmaWxlYCBhbmQgdGhlIGBmcy9leHQ0L0tjb25maWdgIGZpbGVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIGhhdmUgYW55IGltcGxpY2l0IGRlcGVuZGVuY2llcyBvbiBzcGVjaWZpYyB4YXR0ci1yZWxhdGVkIGZlYXR1cmVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGV0aGVyIHRoaXMgaXMgYSBzZWxmLWNvbnRhaW5lZCBjaGFuZ2UsIG9yIHdoZXRoZXIgaXQgbWlnaHQgaW1wYWN0IGFueXRoaW5nIGVsc2UgaW4gdGhlIGtlcm5lbCBjb25maWcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTA6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGF0dHIubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9NYWtlZmlsZT04PWV4dDQteVx0Oj0gYmFsbG9jLm8gYml0bWFwLm8gYmxvY2tfdmFsaWRpdHkubyBkaXIubyBleHQ0X2piZDIubyBleHRlbnRzLm8gXFxcbi0tXG5mcy9leHQ0L01ha2VmaWxlLTExLVx0XHRtbXAubyBtb3ZlX2V4dGVudC5vIG5hbWVpLm8gcGFnZS1pby5vIHJlYWRwYWdlLm8gcmVzaXplLm8gXFxcbmZzL2V4dDQvTWFrZWZpbGU6MTI6XHRcdHN1cGVyLm8gc3ltbGluay5vIHN5c2ZzLm8geGF0dHIubyB4YXR0cl9odXJkLm8geGF0dHJfdHJ1c3RlZC5vIFxcXG5mcy9leHQ0L01ha2VmaWxlLTEzLVx0XHR4YXR0cl91c2VyLm8gZmFzdF9jb21taXQubyBvcnBoYW4ub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDEwOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NjEKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBSZWFzb25pbmcgb24gdGhlIHhhdHRyLm8gQ29tcGlsYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHhhdHRyLm9gIG9iamVjdCBmaWxlLCBhbmQgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgaXQgKmFsd2F5cyogZ2V0cyBjb21waWxlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBgZXh0NC15YCBkZXBlbmRlbmN5LiBUaGF0JiMzOTtzIGEga2V5IG9ic2VydmF0aW9uLiBUaGlzIG1lYW5zLCBmcm9tIGEgY29uZmlndXJhdGlvbiBwZXJzcGVjdGl2ZSwganVzdCBlbnN1cmluZyBgQ09ORklHX0VYVDRfRlNgIGlzIHNldCBzaG91bGQgYmUgc3VmZmljaWVudCB0byBndWFyYW50ZWUgdGhhdCBgeGF0dHIub2AgaXMgaW5jbHVkZWQuIFdlIGRvbiYjMzk7dCBuZWVkIHRvIG92ZXJjb21wbGljYXRlIHRoaW5ncyBsb29raW5nIGZvciBvdGhlciBkZXBlbmRlbmNpZXMuIEhvd2V2ZXIsIGp1c3QgZm9yIGFkZGVkIHJvYnVzdG5lc3Mgb3IgcG90ZW50aWFsIGZ1dHVyZS1wcm9vZmluZywgSSB0aGluayBpdCYjMzk7cyB3b3J0aCBhIHF1aWNrIGNoZWNrIHRvIHNlZSBpZiBgQ09ORklHX0VYVDRfRlNfWEFUVFJgIGFsc28gZXhpc3RzLCBqdXN0IGFzIGEgYmVsdCBhbmQgc3VzcGVuZGVycyBhcHByb2FjaCB0byBtYWtlIGNlcnRhaW4gdGhpcyBjb25maWd1cmF0aW9uIGlzIHdoYXQgd2UgZXhwZWN0LiBUaGlzIHdpbGwgYWxsb3cgZm9yIG1vcmUgZXhwbGljaXQgY29udHJvbCwgZXZlbiBpZiBhIGJhc2ljIGNoZWNrIGlzIGVub3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYVDRfRlNfWEFUVFImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leHQ0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTA6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI0MAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDExNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIEV4dDQgRXh0ZW5kZWQgQXR0cmlidXRlIElub2RlIEhhbmRsaW5nKioKCk9rYXksIHNvIHRoZXJlJiMzOTtzIG5vIGBDT05GSUdfRVhUNF9GU19YQVRUUmAgZGVmaW5lZCwgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3Mgc29tZXRoaW5nLiBXZSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGltcGxpZXMgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZSBoYW5kbGluZyBpbiBleHQ0LgoKTXkgYXR0ZW50aW9uIGlzIGRyYXduIHRvIGBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmRgIGFuZCBgZXh0NF94YXR0cl9pbm9kZV9tYXRjaGAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZGlyZWN0bHkgaW52b2x2ZWQgd2l0aCBFQSAoRXh0ZW5kZWQgQXR0cmlidXRlKSBpbm9kZXMsIHNvIHRoZXkmIzM5O3JlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyBleHQ0IG1hbmFnZXMgYXR0cmlidXRlIG1ldGFkYXRhIGJleW9uZCB0aGUgc3RhbmRhcmQgZmlsZXN5c3RlbSBhdHRyaWJ1dGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2Ugcm91dGluZXMgaW50ZXJhY3Qgd2l0aCB0aGUgaW5vZGUgY2FjaGUgYW5kIHdoZXRoZXIgdGhlIGFic2VuY2Ugb2YgdGhlIGNvbmZpZyBhZmZlY3RzIHRoZW0uCgpNeSBmb2N1cyBpcyBzcXVhcmVseSBvbiBgZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kYCBhbmQgYGV4dDRfeGF0dHJfaW5vZGVfbWF0Y2hgLiBJIG5lZWQgdG8gZW5zdXJlIGBleHQ0X3hhdHRyX2lub2RlX21hdGNoYCBpcyBsb2NhdGVkIGluIGBmcy9leHQ0L3hhdHRyLmNgLCBiZWNhdXNlIEkgbmVlZCB0byB0cmFjZSB0aGlzIHBpZWNlIG9mIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTA6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0NF94YXR0cl9pbm9kZV9tYXRjaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQveGF0dHIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leHQ0L3hhdHRyLmM9MTQ3Mj1zdGF0aWMgc3RydWN0IGlub2RlICpleHQ0X3hhdHRyX2lub2RlX2NyZWF0ZShoYW5kbGVfdCAqaGFuZGxlLFxuLS1cbmZzL2V4dDQveGF0dHIuYy0xNTI1LVxuZnMvZXh0NC94YXR0ci5jOjE1MjY6c3RhdGljIGludCBleHQ0X3hhdHRyX2lub2RlX21hdGNoKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHU2NCBpbm8sIHZvaWQgKmRhdGEpXG5mcy9leHQ0L3hhdHRyLmMtMTUyNy17XG4tLVxuZnMvZXh0NC94YXR0ci5jPTE1NDE9ZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHZvaWQgKnZhbHVlLFxuLS1cbmZzL2V4dDQveGF0dHIuYy0xNTY2LVx0XHRlYV9pbm9kZSA9IGZpbmRfaW5vZGVfbm93YWl0KGlub2RlLVx1MDAzZWlfc2IsIGNlLVx1MDAzZWVfdmFsdWUsXG5mcy9leHQ0L3hhdHRyLmM6MTU2NzpcdFx0XHRcdFx0ICAgICBleHQ0X3hhdHRyX2lub2RlX21hdGNoLCBOVUxMKTtcbmZzL2V4dDQveGF0dHIuYy0xNTY4LVx0XHRpZiAoIWVhX2lub2RlKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDEwOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NjAKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgSW1wYWN0KioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSBmdW5jdGlvbmFsIOKAkyBpdOKAmXMgdHdlYWtpbmcgdGhlIHhhdHRyIEVBIGlub2RlIGNhY2hpbmcgbG9naWMgd2l0aGluIGV4dDQuIFRoYXQmIzM5O3MgZ29vZCwgaXQgc3VnZ2VzdHMgYSBjb3JlIHN5c3RlbSBjaGFuZ2UgdGhhdCBjb3VsZCBiZSBpbnRlcmVzdGluZyB0byBleHBsb3JlLiBUaGUgYFdvcnRoRnV6emluZzogdHJ1ZWAgZmxhZyBjb25maXJtcyB0aGF0IGl0IGlzIGFuIGFyZWEgdGhhdCB3YXJyYW50cyBkZWVwZXIgaW52ZXN0aWdhdGlvbi4gSXQgc2VlbXMgdGhhdCBlbmFibGluZyB0aGUgYEVYVDRfRlNgIGNvbmZpZyBpcyBlc3NlbnRpYWwsIHdoaWNoIGlzIGV4cGVjdGVkLiBUaGUgYEZvY3VzU3ltYm9sc2AgZ2l2ZSBtZSBhIHByZWNpc2UgdGFyZ2V0aW5nOiBgZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kYCBhbmQgYGV4dDRfeGF0dHJfaW5vZGVfbWF0Y2hgLiBUaGVzZSBhcmUgdGhlIGtleSBmdW5jdGlvbnMgdG8gc2NydXRpbml6ZS4KCkJlZm9yZSBJIGRpZyBpbiB0b28gZGVlcCwgSSB3YW50IHRvIGNvbmZpcm0gdGhhdCB0aGVyZSBhcmUgbm8gYWRkaXRpb25hbCBkZXBlbmRlbmNpZXMgbHVya2luZy4gRG9lcyBpdCBhbHNvIHJlcXVpcmUgYEVYVDRfRlNfUE9TSVhfQUNMYCBvciBgRVhUNF9GU19TRUNVUklUWWA/IEkgbmVlZCB0byBrbm93IHRoZSBmdWxsIHBpY3R1cmUgdG8gYXZvaWQgbWlzc2luZyBjcml0aWNhbCBlZGdlIGNhc2VzLgoKVGhlIGNvZGUgaXRzZWxmIGlzIGFuY2hvcmVkIGluIGBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmRgLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIGEgaGVscGVyIGZ1bmN0aW9uIHV0aWxpemVkIGJ5IGBleHQ0X3hhdHRyX2lub2RlX2xvb2t1cF9jcmVhdGVgLiBUaGlzIGlzIGltcG9ydGFudCwgYXMgaXQgZ2l2ZXMgYSBzZW5zZSBvZiBob3cgdGhlIGNoYW5nZSBpcyBlbXBsb3llZCB3aXRoaW4gdGhlIGJyb2FkZXIgZXh0NCBzeXN0ZW0uIE5vdywgbGV04oCZcyBzZWUgd2hlcmUgYGV4dDRfeGF0dHJfaW5vZGVfbG9va3VwX2NyZWF0ZWAgaXMgY2FsbGVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhpcyB3aG9sZSB0aGluZywgdG8ga25vdyBhbGwgdGhlIGNhbGxzIHRoYXQgYXJlIHVzaW5nIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtleHQ0X3hhdHRyX2lub2RlX2xvb2t1cF9jcmVhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leHQ0L3hhdHRyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC94YXR0ci5jPTE1NDE9ZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHZvaWQgKnZhbHVlLFxuLS1cbmZzL2V4dDQveGF0dHIuYy0xNjAwLSAqL1xuZnMvZXh0NC94YXR0ci5jOjE2MDE6c3RhdGljIHN0cnVjdCBpbm9kZSAqZXh0NF94YXR0cl9pbm9kZV9sb29rdXBfY3JlYXRlKGhhbmRsZV90ICpoYW5kbGUsXG5mcy9leHQ0L3hhdHRyLmMtMTYwMi1cdFx0c3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgdm9pZCAqdmFsdWUsIHNpemVfdCB2YWx1ZV9sZW4pXG4tLVxuZnMvZXh0NC94YXR0ci5jPTE5MjI9ZXh0NF94YXR0cl9ibG9ja19zZXQoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSxcbi0tXG5mcy9leHQ0L3hhdHRyLmMtMTk0Mi1cbmZzL2V4dDQveGF0dHIuYzoxOTQzOlx0XHRlYV9pbm9kZSA9IGV4dDRfeGF0dHJfaW5vZGVfbG9va3VwX2NyZWF0ZShoYW5kbGUsIGlub2RlLFxuZnMvZXh0NC94YXR0ci5jLTE5NDQtXHRcdFx0XHRcdGktXHUwMDNldmFsdWUsIGktXHUwMDNldmFsdWVfbGVuKTtcbi0tXG5mcy9leHQ0L3hhdHRyLmM9MjI3Nz1pbnQgZXh0NF94YXR0cl9pYm9keV9zZXQoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSxcbi0tXG5mcy9leHQ0L3hhdHRyLmMtMjI5Mi1cbmZzL2V4dDQveGF0dHIuYzoyMjkzOlx0XHRlYV9pbm9kZSA9IGV4dDRfeGF0dHJfaW5vZGVfbG9va3VwX2NyZWF0ZShoYW5kbGUsIGlub2RlLFxuZnMvZXh0NC94YXR0ci5jLTIyOTQtXHRcdFx0XHRcdGktXHUwMDNldmFsdWUsIGktXHUwMDNldmFsdWVfbGVuKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTA6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDczOQoJCQkJCQkJb3V0cHV0OiAxMzkKCQkJCQkJCXRob3VnaHRzOiAxNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uOgoKKipYYXR0ciBNb2RpZmljYXRpb24gU3VtbWFyeSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IGRlYWxzIHdpdGggdGhlIGV4dDQgZmlsZXN5c3RlbSBhbmQgaXRzIGV4dGVuZGVkIGF0dHJpYnV0ZXMsIG9yIHhhdHRycy4gSXQgc2VlbXMgbGlrZSB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgY2VudGVyZWQgYXJvdW5kIGhvdyB0aGVzZSB4YXR0cnMgYXJlIGhhbmRsZWQsIHNwZWNpZmljYWxseSwgd2l0aGluIGBleHQ0X3hhdHRyX2Jsb2NrX3NldGAgYW5kIGBleHQ0X3hhdHRyX2lib2R5X3NldGAsIHdoaWNoIGFyZSB0aGUgc3RhbmRhcmQgZnVuY3Rpb25zIGZvciBzZXR0aW5nIHhhdHRycy4gU2luY2UgaXQmIzM5O3MgdG91Y2hpbmcgdGhlc2UgZnVuZGFtZW50YWwgeGF0dHIgc2V0dGluZyBmdW5jdGlvbnMsIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBtb3N0IGxpa2VseSBgQ09ORklHX0VYVDRfRlNgLiBUaGF0IG1ha2VzIHNlbnNlLgoKRXNzZW50aWFsbHksIHRoZSBwYXRjaCBpcyByZXdvcmtpbmcgdGhlIGNhY2hpbmcgYW5kIGxvb2t1cCBzdHJhdGVneSBmb3IgRUEgaW5vZGVzIHdpdGhpbiBleHQ0LiBUaGUga2V5IGNoYW5nZSBpcyB0aGUgcmVwbGFjZW1lbnQgb2YgYGV4dDRfaWdldGAgd2l0aCBgZmluZF9pbm9kZV9ub3dhaXRgLCBhbG9uZyB3aXRoIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYSBjdXN0b20gaW5vZGUgbWF0Y2hpbmcgZnVuY3Rpb24sIGBleHQ0X3hhdHRyX2lub2RlX21hdGNoYC4gU28sIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBmaWxlc3lzdGVtLiBTaW5jZSB4YXR0cnMgYXJlIGFjY2Vzc2libGUgdmlhIHN0YW5kYXJkIHN5c2NhbGxzLCB0aGlzIGRlZmluaXRlbHkgc2VlbXMgbGlrZSBhIGNvcmUgZmlsZXN5c3RlbSBtb2RpZmljYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDEwOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF94YXR0cl9pbm9kZV9tYXRjaCYjMzQ7LAogICAgJiMzNDtleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGV4dDQgZXh0ZW5kZWQgYXR0cmlidXRlICh4YXR0cikgbG9naWMsIHNwZWNpZmljYWxseSB0aGUgY2FjaGluZyBhbmQgbG9va3VwIG9mIEVBIGlub2Rlcy4gSXQgcmVwbGFjZXMgYGV4dDRfaWdldGAgd2l0aCBgZmluZF9pbm9kZV9ub3dhaXRgIGFuZCBhZGRzIGEgY3VzdG9tIGlub2RlIG1hdGNoIGZ1bmN0aW9uIGBleHQ0X3hhdHRyX2lub2RlX21hdGNoYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBmaWxlc3lzdGVtIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHhhdHRyIHN5c2NhbGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF94YXR0cl9pbm9kZV9tYXRjaCYjMzQ7LAogICAgJiMzNDtleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGV4dDQgZXh0ZW5kZWQgYXR0cmlidXRlICh4YXR0cikgbG9naWMsIHNwZWNpZmljYWxseSB0aGUgY2FjaGluZyBhbmQgbG9va3VwIG9mIEVBIGlub2Rlcy4gSXQgcmVwbGFjZXMgYGV4dDRfaWdldGAgd2l0aCBgZmluZF9pbm9kZV9ub3dhaXRgIGFuZCBhZGRzIGEgY3VzdG9tIGlub2RlIG1hdGNoIGZ1bmN0aW9uIGBleHQ0X3hhdHRyX2lub2RlX21hdGNoYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBmaWxlc3lzdGVtIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHhhdHRyIHN5c2NhbGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDg6MDkuMjExNTAwNTM0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk4MTM1NzMzOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfeGF0dHJfaW5vZGVfbWF0Y2hcIixcbiAgICBcImV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBleHQ0IGV4dGVuZGVkIGF0dHJpYnV0ZSAoeGF0dHIpIGxvZ2ljLCBzcGVjaWZpY2FsbHkgdGhlIGNhY2hpbmcgYW5kIGxvb2t1cCBvZiBFQSBpbm9kZXMuIEl0IHJlcGxhY2VzIGBleHQ0X2lnZXRgIHdpdGggYGZpbmRfaW5vZGVfbm93YWl0YCBhbmQgYWRkcyBhIGN1c3RvbSBpbm9kZSBtYXRjaCBmdW5jdGlvbiBgZXh0NF94YXR0cl9pbm9kZV9tYXRjaGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUgZmlsZXN5c3RlbSB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB4YXR0ciBzeXNjYWxscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDg6MDkuMjExNTA4Nzg0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzg3Mzc5OTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZjA4MDQzYzE1MDZiZGFjMjI1ZDIxNDMxYWFiYWMxMDhmNDkzMDBiYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAyMyAxMDo0ODowNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L3hhdHRyLmMgYi9mcy9leHQ0L3hhdHRyLmNcXG5pbmRleCA5ODJhMWY4MzFlMjI4Mi4uZWYxM2U3YTc2MTUzZjMgMTAwNjQ0XFxuLS0tIGEvZnMvZXh0NC94YXR0ci5jXFxuKysrIGIvZnMvZXh0NC94YXR0ci5jXFxuQEAgLTE1MjMsNiArMTUyMywyMCBAQCBzdGF0aWMgc3RydWN0IGlub2RlICpleHQ0X3hhdHRyX2lub2RlX2NyZWF0ZShoYW5kbGVfdCAqaGFuZGxlLFxcbiBcXHRyZXR1cm4gZWFfaW5vZGU7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgZXh0NF94YXR0cl9pbm9kZV9tYXRjaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1NjQgaW5vLCB2b2lkICpkYXRhKVxcbit7XFxuK1xcdGlmIChpbm9kZS1cXHUwMDNlaV9pbm8gIT0gaW5vKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0c3Bpbl9sb2NrKFxcdTAwMjZpbm9kZS1cXHUwMDNlaV9sb2NrKTtcXG4rXFx0aWYgKGlub2RlX3N0YXRlX3JlYWQoaW5vZGUpIFxcdTAwMjYgKElfRlJFRUlORyB8IElfV0lMTF9GUkVFKSkge1xcbitcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2aW5vZGUtXFx1MDAzZWlfbG9jayk7XFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHR9XFxuK1xcdF9faWdldChpbm9kZSk7XFxuK1xcdHNwaW5fdW5sb2NrKFxcdTAwMjZpbm9kZS1cXHUwMDNlaV9sb2NrKTtcXG4rXFx0cmV0dXJuIDE7XFxuK31cXG4rXFxuIHN0YXRpYyBzdHJ1Y3QgaW5vZGUgKlxcbiBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmQoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgdm9pZCAqdmFsdWUsXFxuIFxcdFxcdFxcdCAgICBzaXplX3QgdmFsdWVfbGVuLCB1MzIgaGFzaClcXG5AQCAtMTU0OSwxMCArMTU2MywxOSBAQCBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmQoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgdm9pZCAqdmFsdWUsXFxuIFxcdH1cXG4gXFxuIFxcdHdoaWxlIChjZSkge1xcbi1cXHRcXHRlYV9pbm9kZSA9IGV4dDRfaWdldChpbm9kZS1cXHUwMDNlaV9zYiwgY2UtXFx1MDAzZWVfdmFsdWUsXFxuLVxcdFxcdFxcdFxcdCAgICAgRVhUNF9JR0VUX0VBX0lOT0RFKTtcXG4tXFx0XFx0aWYgKElTX0VSUihlYV9pbm9kZSkpXFxuK1xcdFxcdGVhX2lub2RlID0gZmluZF9pbm9kZV9ub3dhaXQoaW5vZGUtXFx1MDAzZWlfc2IsIGNlLVxcdTAwM2VlX3ZhbHVlLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgIGV4dDRfeGF0dHJfaW5vZGVfbWF0Y2gsIE5VTEwpO1xcbitcXHRcXHRpZiAoIWVhX2lub2RlKVxcbiBcXHRcXHRcXHRnb3RvIG5leHRfZW50cnk7XFxuK1xcdFxcdGlmIChpbm9kZV9zdGF0ZV9yZWFkX29uY2UoZWFfaW5vZGUpIFxcdTAwMjYgSV9ORVcpXFxuK1xcdFxcdFxcdHdhaXRfb25fbmV3X2lub2RlKGVhX2lub2RlKTtcXG4rXFx0XFx0aWYgKGlzX2JhZF9pbm9kZShlYV9pbm9kZSkgfHxcXG4rXFx0XFx0ICAgICEoRVhUNF9JKGVhX2lub2RlKS1cXHUwMDNlaV9mbGFncyBcXHUwMDI2IEVYVDRfRUFfSU5PREVfRkwpIHx8XFxuK1xcdFxcdCAgICBleHQ0X3Rlc3RfaW5vZGVfc3RhdGUoZWFfaW5vZGUsIEVYVDRfU1RBVEVfWEFUVFIpIHx8XFxuK1xcdFxcdCAgICBFWFQ0X0koZWFfaW5vZGUpLVxcdTAwM2VpX2ZpbGVfYWNsKSB7XFxuK1xcdFxcdFxcdGlwdXQoZWFfaW5vZGUpO1xcbitcXHRcXHRcXHRnb3RvIG5leHRfZW50cnk7XFxuK1xcdFxcdH1cXG4gXFx0XFx0ZXh0NF94YXR0cl9pbm9kZV9zZXRfY2xhc3MoZWFfaW5vZGUpO1xcbiBcXHRcXHRpZiAoaV9zaXplX3JlYWQoZWFfaW5vZGUpID09IHZhbHVlX2xlbiBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgIWV4dDRfeGF0dHJfaW5vZGVfcmVhZChlYV9pbm9kZSwgZWFfZGF0YSwgdmFsdWVfbGVuKSBcXHUwMDI2XFx1MDAyNlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxMDo0ODoxMS41OTk4MTY3NTlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3NDI1MjMwMDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X3hhdHRyX2lub2RlX21hdGNoXCIsXG4gICAgXCJleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXh0NCBleHRlbmRlZCBhdHRyaWJ1dGUgKHhhdHRyKSBsb2dpYywgc3BlY2lmaWNhbGx5IHRoZSBjYWNoaW5nIGFuZCBsb29rdXAgb2YgRUEgaW5vZGVzLiBJdCByZXBsYWNlcyBgZXh0NF9pZ2V0YCB3aXRoIGBmaW5kX2lub2RlX25vd2FpdGAgYW5kIGFkZHMgYSBjdXN0b20gaW5vZGUgbWF0Y2ggZnVuY3Rpb24gYGV4dDRfeGF0dHJfaW5vZGVfbWF0Y2hgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGZpbGVzeXN0ZW0gdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgeGF0dHIgc3lzY2FsbHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjA4MDQzYzE1MDZiZGFjMjI1ZDIxNDMxYWFiYWMxMDhmNDkzMDBiYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDIzIDEwOjQ4OjA3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC94YXR0ci5jIGIvZnMvZXh0NC94YXR0ci5jXG5pbmRleCA5ODJhMWY4MzFlMjI4Mi4uZWYxM2U3YTc2MTUzZjMgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L3hhdHRyLmNcbisrKyBiL2ZzL2V4dDQveGF0dHIuY1xuQEAgLTE1MjMsNiArMTUyMywyMCBAQCBzdGF0aWMgc3RydWN0IGlub2RlICpleHQ0X3hhdHRyX2lub2RlX2NyZWF0ZShoYW5kbGVfdCAqaGFuZGxlLFxuIFx0cmV0dXJuIGVhX2lub2RlO1xuIH1cbiBcbitzdGF0aWMgaW50IGV4dDRfeGF0dHJfaW5vZGVfbWF0Y2goc3RydWN0IGlub2RlICppbm9kZSwgdTY0IGlubywgdm9pZCAqZGF0YSlcbit7XG4rXHRpZiAoaW5vZGUtXHUwMDNlaV9pbm8gIT0gaW5vKVxuK1x0XHRyZXR1cm4gMDtcbitcdHNwaW5fbG9jayhcdTAwMjZpbm9kZS1cdTAwM2VpX2xvY2spO1xuK1x0aWYgKGlub2RlX3N0YXRlX3JlYWQoaW5vZGUpIFx1MDAyNiAoSV9GUkVFSU5HIHwgSV9XSUxMX0ZSRUUpKSB7XG4rXHRcdHNwaW5fdW5sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4rXHRcdHJldHVybiAwO1xuK1x0fVxuK1x0X19pZ2V0KGlub2RlKTtcbitcdHNwaW5fdW5sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4rXHRyZXR1cm4gMTtcbit9XG4rXG4gc3RhdGljIHN0cnVjdCBpbm9kZSAqXG4gZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHZvaWQgKnZhbHVlLFxuIFx0XHRcdCAgICBzaXplX3QgdmFsdWVfbGVuLCB1MzIgaGFzaClcbkBAIC0xNTQ5LDEwICsxNTYzLDE5IEBAIGV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCB2b2lkICp2YWx1ZSxcbiBcdH1cbiBcbiBcdHdoaWxlIChjZSkge1xuLVx0XHRlYV9pbm9kZSA9IGV4dDRfaWdldChpbm9kZS1cdTAwM2VpX3NiLCBjZS1cdTAwM2VlX3ZhbHVlLFxuLVx0XHRcdFx0ICAgICBFWFQ0X0lHRVRfRUFfSU5PREUpO1xuLVx0XHRpZiAoSVNfRVJSKGVhX2lub2RlKSlcbitcdFx0ZWFfaW5vZGUgPSBmaW5kX2lub2RlX25vd2FpdChpbm9kZS1cdTAwM2VpX3NiLCBjZS1cdTAwM2VlX3ZhbHVlLFxuK1x0XHRcdFx0XHQgICAgIGV4dDRfeGF0dHJfaW5vZGVfbWF0Y2gsIE5VTEwpO1xuK1x0XHRpZiAoIWVhX2lub2RlKVxuIFx0XHRcdGdvdG8gbmV4dF9lbnRyeTtcbitcdFx0aWYgKGlub2RlX3N0YXRlX3JlYWRfb25jZShlYV9pbm9kZSkgXHUwMDI2IElfTkVXKVxuK1x0XHRcdHdhaXRfb25fbmV3X2lub2RlKGVhX2lub2RlKTtcbitcdFx0aWYgKGlzX2JhZF9pbm9kZShlYV9pbm9kZSkgfHxcbitcdFx0ICAgICEoRVhUNF9JKGVhX2lub2RlKS1cdTAwM2VpX2ZsYWdzIFx1MDAyNiBFWFQ0X0VBX0lOT0RFX0ZMKSB8fFxuK1x0XHQgICAgZXh0NF90ZXN0X2lub2RlX3N0YXRlKGVhX2lub2RlLCBFWFQ0X1NUQVRFX1hBVFRSKSB8fFxuK1x0XHQgICAgRVhUNF9JKGVhX2lub2RlKS1cdTAwM2VpX2ZpbGVfYWNsKSB7XG4rXHRcdFx0aXB1dChlYV9pbm9kZSk7XG4rXHRcdFx0Z290byBuZXh0X2VudHJ5O1xuK1x0XHR9XG4gXHRcdGV4dDRfeGF0dHJfaW5vZGVfc2V0X2NsYXNzKGVhX2lub2RlKTtcbiBcdFx0aWYgKGlfc2l6ZV9yZWFkKGVhX2lub2RlKSA9PSB2YWx1ZV9sZW4gXHUwMDI2XHUwMDI2XG4gXHRcdCAgICAhZXh0NF94YXR0cl9pbm9kZV9yZWFkKGVhX2lub2RlLCBlYV9kYXRhLCB2YWx1ZV9sZW4pIFx1MDAyNlx1MDAyNlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDg6MTEuNTk5ODE5MDE5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk5MTkyNDk2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEV4dDQgWGF0dHIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQncyBoaXR0aW5nIGBmcy9leHQ0L3hhdHRyLmNgLiBMb29rcyBsaWtlIGl0J3MgaW50cm9kdWNpbmcgYSBmdW5jdGlvbiBjYWxsZWQgYGV4dDRfeGF0dHJfaW5vZGVfbWF0Y2hgIGFuZCB0d2Vha2luZyBgZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgaG93IGlub2RlcyBhcmUgaGFuZGxlZCwgc3BlY2lmaWNhbGx5IHJlcGxhY2luZyBgZXh0NF9pZ2V0YCB3aXRoIGBmaW5kX2lub2RlX25vd2FpdGAgYW5kIHRoZW4gYWRkaW5nIHNvbWUgbWFudWFsIHN0YXRlIGNoZWNrcyBvbiB0aGUgaW5vZGUuIFJpZ2h0IGF3YXksIEkgc2VlIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgZXh0NCBleHRlbmRlZCBhdHRyaWJ1dGUgaGFuZGxpbmcsIHdoaWNoIGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIGluIGRldGFpbC5cblxuTm93LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBmb3IgYW55IGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBgZnMvZXh0NC94YXR0ci5jYCBpcyBkZWZpbml0ZWx5IGNvbXBpbGVkIHdoZW4gYENPTkZJR19FWFQ0X0ZTYCBpcyBlbmFibGVkLCBidXQgYXJlIHRoZXJlIGFueSAqc3BlY2lmaWMqIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8geGF0dHJzIHRoYXQgdGhpcyBwYXRjaCBtaWdodCBuZWVkPyBMZXQncyBxdWlja2x5IHNjYW4gdGhlIGBmcy9leHQ0L01ha2VmaWxlYCBhbmQgdGhlIGBmcy9leHQ0L0tjb25maWdgIGZpbGVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3IgaGF2ZSBhbnkgaW1wbGljaXQgZGVwZW5kZW5jaWVzIG9uIHNwZWNpZmljIHhhdHRyLXJlbGF0ZWQgZmVhdHVyZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXRoZXIgdGhpcyBpcyBhIHNlbGYtY29udGFpbmVkIGNoYW5nZSwgb3Igd2hldGhlciBpdCBtaWdodCBpbXBhY3QgYW55dGhpbmcgZWxzZSBpbiB0aGUga2VybmVsIGNvbmZpZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMzNSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDEwOjQ4OjE2LjU5MTc2NzIwNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjExMjQ3NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGF0dHIub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leHQ0L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvTWFrZWZpbGU9OD1leHQ0LXlcXHQ6PSBiYWxsb2MubyBiaXRtYXAubyBibG9ja192YWxpZGl0eS5vIGRpci5vIGV4dDRfamJkMi5vIGV4dGVudHMubyBcXFxcXFxuLS1cXG5mcy9leHQ0L01ha2VmaWxlLTExLVxcdFxcdG1tcC5vIG1vdmVfZXh0ZW50Lm8gbmFtZWkubyBwYWdlLWlvLm8gcmVhZHBhZ2UubyByZXNpemUubyBcXFxcXFxuZnMvZXh0NC9NYWtlZmlsZToxMjpcXHRcXHRzdXBlci5vIHN5bWxpbmsubyBzeXNmcy5vIHhhdHRyLm8geGF0dHJfaHVyZC5vIHhhdHRyX3RydXN0ZWQubyBcXFxcXFxuZnMvZXh0NC9NYWtlZmlsZS0xMy1cXHRcXHR4YXR0cl91c2VyLm8gZmFzdF9jb21taXQubyBvcnBoYW4ub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxMDo0ODoxNy4xNTI4OTg3NjFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjMwNTAzNTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFJlYXNvbmluZyBvbiB0aGUgeGF0dHIubyBDb21waWxhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHhhdHRyLm9gIG9iamVjdCBmaWxlLCBhbmQgaXQncyBwcmV0dHkgY2xlYXIgdGhhdCBpdCAqYWx3YXlzKiBnZXRzIGNvbXBpbGVkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIGBleHQ0LXlgIGRlcGVuZGVuY3kuIFRoYXQncyBhIGtleSBvYnNlcnZhdGlvbi4gVGhpcyBtZWFucywgZnJvbSBhIGNvbmZpZ3VyYXRpb24gcGVyc3BlY3RpdmUsIGp1c3QgZW5zdXJpbmcgYENPTkZJR19FWFQ0X0ZTYCBpcyBzZXQgc2hvdWxkIGJlIHN1ZmZpY2llbnQgdG8gZ3VhcmFudGVlIHRoYXQgYHhhdHRyLm9gIGlzIGluY2x1ZGVkLiBXZSBkb24ndCBuZWVkIHRvIG92ZXJjb21wbGljYXRlIHRoaW5ncyBsb29raW5nIGZvciBvdGhlciBkZXBlbmRlbmNpZXMuIEhvd2V2ZXIsIGp1c3QgZm9yIGFkZGVkIHJvYnVzdG5lc3Mgb3IgcG90ZW50aWFsIGZ1dHVyZS1wcm9vZmluZywgSSB0aGluayBpdCdzIHdvcnRoIGEgcXVpY2sgY2hlY2sgdG8gc2VlIGlmIGBDT05GSUdfRVhUNF9GU19YQVRUUmAgYWxzbyBleGlzdHMsIGp1c3QgYXMgYSBiZWx0IGFuZCBzdXNwZW5kZXJzIGFwcHJvYWNoIHRvIG1ha2UgY2VydGFpbiB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgd2hhdCB3ZSBleHBlY3QuIFRoaXMgd2lsbCBhbGxvdyBmb3IgbW9yZSBleHBsaWNpdCBjb250cm9sLCBldmVuIGlmIGEgYmFzaWMgY2hlY2sgaXMgZW5vdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTYxLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDg6MjIuMzgzNDA1OTQxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5Njk2MDQ3MSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhUNF9GU19YQVRUUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leHQ0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDg6MjIuNzgwMzc2OTUyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQwMDk3OTE0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIEV4dDQgRXh0ZW5kZWQgQXR0cmlidXRlIElub2RlIEhhbmRsaW5nKipcblxuT2theSwgc28gdGhlcmUncyBubyBgQ09ORklHX0VYVDRfRlNfWEFUVFJgIGRlZmluZWQsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIHNvbWV0aGluZy4gV2UgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBpbXBsaWVzIGZvciBleHRlbmRlZCBhdHRyaWJ1dGUgaGFuZGxpbmcgaW4gZXh0NC5cblxuTXkgYXR0ZW50aW9uIGlzIGRyYXduIHRvIGBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmRgIGFuZCBgZXh0NF94YXR0cl9pbm9kZV9tYXRjaGAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZGlyZWN0bHkgaW52b2x2ZWQgd2l0aCBFQSAoRXh0ZW5kZWQgQXR0cmlidXRlKSBpbm9kZXMsIHNvIHRoZXkncmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IGV4dDQgbWFuYWdlcyBhdHRyaWJ1dGUgbWV0YWRhdGEgYmV5b25kIHRoZSBzdGFuZGFyZCBmaWxlc3lzdGVtIGF0dHJpYnV0ZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSByb3V0aW5lcyBpbnRlcmFjdCB3aXRoIHRoZSBpbm9kZSBjYWNoZSBhbmQgd2hldGhlciB0aGUgYWJzZW5jZSBvZiB0aGUgY29uZmlnIGFmZmVjdHMgdGhlbS5cblxuTXkgZm9jdXMgaXMgc3F1YXJlbHkgb24gYGV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZGAgYW5kIGBleHQ0X3hhdHRyX2lub2RlX21hdGNoYC4gSSBuZWVkIHRvIGVuc3VyZSBgZXh0NF94YXR0cl9pbm9kZV9tYXRjaGAgaXMgbG9jYXRlZCBpbiBgZnMvZXh0NC94YXR0ci5jYCwgYmVjYXVzZSBJIG5lZWQgdG8gdHJhY2UgdGhpcyBwaWVjZSBvZiBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjQwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDEwOjQ4OjI3LjE4MTM1OTIzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTcyMTczMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXh0NF94YXR0cl9pbm9kZV9tYXRjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leHQ0L3hhdHRyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXh0NC94YXR0ci5jPTE0NzI9c3RhdGljIHN0cnVjdCBpbm9kZSAqZXh0NF94YXR0cl9pbm9kZV9jcmVhdGUoaGFuZGxlX3QgKmhhbmRsZSxcXG4tLVxcbmZzL2V4dDQveGF0dHIuYy0xNTI1LVxcbmZzL2V4dDQveGF0dHIuYzoxNTI2OnN0YXRpYyBpbnQgZXh0NF94YXR0cl9pbm9kZV9tYXRjaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1NjQgaW5vLCB2b2lkICpkYXRhKVxcbmZzL2V4dDQveGF0dHIuYy0xNTI3LXtcXG4tLVxcbmZzL2V4dDQveGF0dHIuYz0xNTQxPWV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCB2b2lkICp2YWx1ZSxcXG4tLVxcbmZzL2V4dDQveGF0dHIuYy0xNTY2LVxcdFxcdGVhX2lub2RlID0gZmluZF9pbm9kZV9ub3dhaXQoaW5vZGUtXFx1MDAzZWlfc2IsIGNlLVxcdTAwM2VlX3ZhbHVlLFxcbmZzL2V4dDQveGF0dHIuYzoxNTY3OlxcdFxcdFxcdFxcdFxcdCAgICAgZXh0NF94YXR0cl9pbm9kZV9tYXRjaCwgTlVMTCk7XFxuZnMvZXh0NC94YXR0ci5jLTE1NjgtXFx0XFx0aWYgKCFlYV9pbm9kZSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDg6MjkuMDk4NTg1NjU3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQwMDQ2OTgwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIEltcGFjdCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSBmdW5jdGlvbmFsIOKAkyBpdOKAmXMgdHdlYWtpbmcgdGhlIHhhdHRyIEVBIGlub2RlIGNhY2hpbmcgbG9naWMgd2l0aGluIGV4dDQuIFRoYXQncyBnb29kLCBpdCBzdWdnZXN0cyBhIGNvcmUgc3lzdGVtIGNoYW5nZSB0aGF0IGNvdWxkIGJlIGludGVyZXN0aW5nIHRvIGV4cGxvcmUuIFRoZSBgV29ydGhGdXp6aW5nOiB0cnVlYCBmbGFnIGNvbmZpcm1zIHRoYXQgaXQgaXMgYW4gYXJlYSB0aGF0IHdhcnJhbnRzIGRlZXBlciBpbnZlc3RpZ2F0aW9uLiBJdCBzZWVtcyB0aGF0IGVuYWJsaW5nIHRoZSBgRVhUNF9GU2AgY29uZmlnIGlzIGVzc2VudGlhbCwgd2hpY2ggaXMgZXhwZWN0ZWQuIFRoZSBgRm9jdXNTeW1ib2xzYCBnaXZlIG1lIGEgcHJlY2lzZSB0YXJnZXRpbmc6IGBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmRgIGFuZCBgZXh0NF94YXR0cl9pbm9kZV9tYXRjaGAuIFRoZXNlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyB0byBzY3J1dGluaXplLlxuXG5CZWZvcmUgSSBkaWcgaW4gdG9vIGRlZXAsIEkgd2FudCB0byBjb25maXJtIHRoYXQgdGhlcmUgYXJlIG5vIGFkZGl0aW9uYWwgZGVwZW5kZW5jaWVzIGx1cmtpbmcuIERvZXMgaXQgYWxzbyByZXF1aXJlIGBFWFQ0X0ZTX1BPU0lYX0FDTGAgb3IgYEVYVDRfRlNfU0VDVVJJVFlgPyBJIG5lZWQgdG8ga25vdyB0aGUgZnVsbCBwaWN0dXJlIHRvIGF2b2lkIG1pc3NpbmcgY3JpdGljYWwgZWRnZSBjYXNlcy5cblxuVGhlIGNvZGUgaXRzZWxmIGlzIGFuY2hvcmVkIGluIGBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmRgLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIGEgaGVscGVyIGZ1bmN0aW9uIHV0aWxpemVkIGJ5IGBleHQ0X3hhdHRyX2lub2RlX2xvb2t1cF9jcmVhdGVgLiBUaGlzIGlzIGltcG9ydGFudCwgYXMgaXQgZ2l2ZXMgYSBzZW5zZSBvZiBob3cgdGhlIGNoYW5nZSBpcyBlbXBsb3llZCB3aXRoaW4gdGhlIGJyb2FkZXIgZXh0NCBzeXN0ZW0uIE5vdywgbGV04oCZcyBzZWUgd2hlcmUgYGV4dDRfeGF0dHJfaW5vZGVfbG9va3VwX2NyZWF0ZWAgaXMgY2FsbGVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhpcyB3aG9sZSB0aGluZywgdG8ga25vdyBhbGwgdGhlIGNhbGxzIHRoYXQgYXJlIHVzaW5nIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozODYwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDEwOjQ4OjMzLjQ5OTA1ODkzNVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgzODA4NzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4dDRfeGF0dHJfaW5vZGVfbG9va3VwX2NyZWF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leHQ0L3hhdHRyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXh0NC94YXR0ci5jPTE1NDE9ZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHZvaWQgKnZhbHVlLFxcbi0tXFxuZnMvZXh0NC94YXR0ci5jLTE2MDAtICovXFxuZnMvZXh0NC94YXR0ci5jOjE2MDE6c3RhdGljIHN0cnVjdCBpbm9kZSAqZXh0NF94YXR0cl9pbm9kZV9sb29rdXBfY3JlYXRlKGhhbmRsZV90ICpoYW5kbGUsXFxuZnMvZXh0NC94YXR0ci5jLTE2MDItXFx0XFx0c3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgdm9pZCAqdmFsdWUsIHNpemVfdCB2YWx1ZV9sZW4pXFxuLS1cXG5mcy9leHQ0L3hhdHRyLmM9MTkyMj1leHQ0X3hhdHRyX2Jsb2NrX3NldChoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLFxcbi0tXFxuZnMvZXh0NC94YXR0ci5jLTE5NDItXFxuZnMvZXh0NC94YXR0ci5jOjE5NDM6XFx0XFx0ZWFfaW5vZGUgPSBleHQ0X3hhdHRyX2lub2RlX2xvb2t1cF9jcmVhdGUoaGFuZGxlLCBpbm9kZSxcXG5mcy9leHQ0L3hhdHRyLmMtMTk0NC1cXHRcXHRcXHRcXHRcXHRpLVxcdTAwM2V2YWx1ZSwgaS1cXHUwMDNldmFsdWVfbGVuKTtcXG4tLVxcbmZzL2V4dDQveGF0dHIuYz0yMjc3PWludCBleHQ0X3hhdHRyX2lib2R5X3NldChoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLFxcbi0tXFxuZnMvZXh0NC94YXR0ci5jLTIyOTItXFxuZnMvZXh0NC94YXR0ci5jOjIyOTM6XFx0XFx0ZWFfaW5vZGUgPSBleHQ0X3hhdHRyX2lub2RlX2xvb2t1cF9jcmVhdGUoaGFuZGxlLCBpbm9kZSxcXG5mcy9leHQ0L3hhdHRyLmMtMjI5NC1cXHRcXHRcXHRcXHRcXHRpLVxcdTAwM2V2YWx1ZSwgaS1cXHUwMDNldmFsdWVfbGVuKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDg6MzMuOTgyODc1NTM0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MjE2MzA2MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb246XG5cbioqWGF0dHIgTW9kaWZpY2F0aW9uIFN1bW1hcnkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgZGVhbHMgd2l0aCB0aGUgZXh0NCBmaWxlc3lzdGVtIGFuZCBpdHMgZXh0ZW5kZWQgYXR0cmlidXRlcywgb3IgeGF0dHJzLiBJdCBzZWVtcyBsaWtlIHRoZSBtb2RpZmljYXRpb25zIGFyZSBjZW50ZXJlZCBhcm91bmQgaG93IHRoZXNlIHhhdHRycyBhcmUgaGFuZGxlZCwgc3BlY2lmaWNhbGx5LCB3aXRoaW4gYGV4dDRfeGF0dHJfYmxvY2tfc2V0YCBhbmQgYGV4dDRfeGF0dHJfaWJvZHlfc2V0YCwgd2hpY2ggYXJlIHRoZSBzdGFuZGFyZCBmdW5jdGlvbnMgZm9yIHNldHRpbmcgeGF0dHJzLiBTaW5jZSBpdCdzIHRvdWNoaW5nIHRoZXNlIGZ1bmRhbWVudGFsIHhhdHRyIHNldHRpbmcgZnVuY3Rpb25zLCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgbW9zdCBsaWtlbHkgYENPTkZJR19FWFQ0X0ZTYC4gVGhhdCBtYWtlcyBzZW5zZS5cblxuRXNzZW50aWFsbHksIHRoZSBwYXRjaCBpcyByZXdvcmtpbmcgdGhlIGNhY2hpbmcgYW5kIGxvb2t1cCBzdHJhdGVneSBmb3IgRUEgaW5vZGVzIHdpdGhpbiBleHQ0LiBUaGUga2V5IGNoYW5nZSBpcyB0aGUgcmVwbGFjZW1lbnQgb2YgYGV4dDRfaWdldGAgd2l0aCBgZmluZF9pbm9kZV9ub3dhaXRgLCBhbG9uZyB3aXRoIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYSBjdXN0b20gaW5vZGUgbWF0Y2hpbmcgZnVuY3Rpb24sIGBleHQ0X3hhdHRyX2lub2RlX21hdGNoYC4gU28sIHdlJ3JlIGxvb2tpbmcgYXQgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBhIGNyaXRpY2FsIHBhcnQgb2YgdGhlIGZpbGVzeXN0ZW0uIFNpbmNlIHhhdHRycyBhcmUgYWNjZXNzaWJsZSB2aWEgc3RhbmRhcmQgc3lzY2FsbHMsIHRoaXMgZGVmaW5pdGVseSBzZWVtcyBsaWtlIGEgY29yZSBmaWxlc3lzdGVtIG1vZGlmaWNhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDczOSwiT3V0cHV0VG9rZW5zIjoxMzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDg6MzguODA0NTA5MzgzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwNTI2NjU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF94YXR0cl9pbm9kZV9tYXRjaFwiLFxuICAgIFwiZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGV4dDQgZXh0ZW5kZWQgYXR0cmlidXRlICh4YXR0cikgbG9naWMsIHNwZWNpZmljYWxseSB0aGUgY2FjaGluZyBhbmQgbG9va3VwIG9mIEVBIGlub2Rlcy4gSXQgcmVwbGFjZXMgYGV4dDRfaWdldGAgd2l0aCBgZmluZF9pbm9kZV9ub3dhaXRgIGFuZCBhZGRzIGEgY3VzdG9tIGlub2RlIG1hdGNoIGZ1bmN0aW9uIGBleHQ0X3hhdHRyX2lub2RlX21hdGNoYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBmaWxlc3lzdGVtIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHhhdHRyIHN5c2NhbGxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X3hhdHRyX2lub2RlX21hdGNoXCIsXG4gICAgXCJleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXh0NCBleHRlbmRlZCBhdHRyaWJ1dGUgKHhhdHRyKSBsb2dpYywgc3BlY2lmaWNhbGx5IHRoZSBjYWNoaW5nIGFuZCBsb29rdXAgb2YgRUEgaW5vZGVzLiBJdCByZXBsYWNlcyBgZXh0NF9pZ2V0YCB3aXRoIGBmaW5kX2lub2RlX25vd2FpdGAgYW5kIGFkZHMgYSBjdXN0b20gaW5vZGUgbWF0Y2ggZnVuY3Rpb24gYGV4dDRfeGF0dHJfaW5vZGVfbWF0Y2hgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGZpbGVzeXN0ZW0gdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgeGF0dHIgc3lzY2FsbHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow7nhfw[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-23 10:30:43 +0000 UTC FinishedAt: 2026-06-23 10:48:40 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "502d801f0ab03e4f32f9a33d203154ce84887921", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "502d801f0ab03e4f32f9a33d203154ce84887921", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "db0d0122-74c5-47b9-b7c1-75b9f8f51dad" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ext4_xattr_inode_match", "ext4_xattr_inode_cache_find" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDEwOjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X3hhdHRyX2lub2RlX21hdGNoJiMzNDssCiAgICAmIzM0O2V4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXh0NCBleHRlbmRlZCBhdHRyaWJ1dGUgKHhhdHRyKSBsb2dpYywgc3BlY2lmaWNhbGx5IHRoZSBjYWNoaW5nIGFuZCBsb29rdXAgb2YgRUEgaW5vZGVzLiBJdCByZXBsYWNlcyBgZXh0NF9pZ2V0YCB3aXRoIGBmaW5kX2lub2RlX25vd2FpdGAgYW5kIGFkZHMgYSBjdXN0b20gaW5vZGUgbWF0Y2ggZnVuY3Rpb24gYGV4dDRfeGF0dHJfaW5vZGVfbWF0Y2hgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGZpbGVzeXN0ZW0gdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgeGF0dHIgc3lzY2FsbHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTA6NDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmMDgwNDNjMTUwNmJkYWMyMjVkMjE0MzFhYWJhYzEwOGY0OTMwMGJiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMjMgMTA6NDg6MDcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC94YXR0ci5jIGIvZnMvZXh0NC94YXR0ci5jXG5pbmRleCA5ODJhMWY4MzFlMjI4Mi4uZWYxM2U3YTc2MTUzZjMgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L3hhdHRyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQveGF0dHIuY1xuQEAgLTE1MjMsNiAmIzQzOzE1MjMsMjAgQEAgc3RhdGljIHN0cnVjdCBpbm9kZSAqZXh0NF94YXR0cl9pbm9kZV9jcmVhdGUoaGFuZGxlX3QgKmhhbmRsZSxcbiBcdHJldHVybiBlYV9pbm9kZTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgZXh0NF94YXR0cl9pbm9kZV9tYXRjaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1NjQgaW5vLCB2b2lkICpkYXRhKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKGlub2RlLVx1MDAzZWlfaW5vICE9IGlubylcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdHNwaW5fbG9jayhcdTAwMjZpbm9kZS1cdTAwM2VpX2xvY2spO1xuJiM0MztcdGlmIChpbm9kZV9zdGF0ZV9yZWFkKGlub2RlKSBcdTAwMjYgKElfRlJFRUlORyB8IElfV0lMTF9GUkVFKSkge1xuJiM0MztcdFx0c3Bpbl91bmxvY2soXHUwMDI2aW5vZGUtXHUwMDNlaV9sb2NrKTtcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcdH1cbiYjNDM7XHRfX2lnZXQoaW5vZGUpO1xuJiM0MztcdHNwaW5fdW5sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4mIzQzO1x0cmV0dXJuIDE7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHN0cnVjdCBpbm9kZSAqXG4gZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHZvaWQgKnZhbHVlLFxuIFx0XHRcdCAgICBzaXplX3QgdmFsdWVfbGVuLCB1MzIgaGFzaClcbkBAIC0xNTQ5LDEwICYjNDM7MTU2MywxOSBAQCBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmQoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgdm9pZCAqdmFsdWUsXG4gXHR9XG4gXG4gXHR3aGlsZSAoY2UpIHtcbi1cdFx0ZWFfaW5vZGUgPSBleHQ0X2lnZXQoaW5vZGUtXHUwMDNlaV9zYiwgY2UtXHUwMDNlZV92YWx1ZSxcbi1cdFx0XHRcdCAgICAgRVhUNF9JR0VUX0VBX0lOT0RFKTtcbi1cdFx0aWYgKElTX0VSUihlYV9pbm9kZSkpXG4mIzQzO1x0XHRlYV9pbm9kZSA9IGZpbmRfaW5vZGVfbm93YWl0KGlub2RlLVx1MDAzZWlfc2IsIGNlLVx1MDAzZWVfdmFsdWUsXG4mIzQzO1x0XHRcdFx0XHQgICAgIGV4dDRfeGF0dHJfaW5vZGVfbWF0Y2gsIE5VTEwpO1xuJiM0MztcdFx0aWYgKCFlYV9pbm9kZSlcbiBcdFx0XHRnb3RvIG5leHRfZW50cnk7XG4mIzQzO1x0XHRpZiAoaW5vZGVfc3RhdGVfcmVhZF9vbmNlKGVhX2lub2RlKSBcdTAwMjYgSV9ORVcpXG4mIzQzO1x0XHRcdHdhaXRfb25fbmV3X2lub2RlKGVhX2lub2RlKTtcbiYjNDM7XHRcdGlmIChpc19iYWRfaW5vZGUoZWFfaW5vZGUpIHx8XG4mIzQzO1x0XHQgICAgIShFWFQ0X0koZWFfaW5vZGUpLVx1MDAzZWlfZmxhZ3MgXHUwMDI2IEVYVDRfRUFfSU5PREVfRkwpIHx8XG4mIzQzO1x0XHQgICAgZXh0NF90ZXN0X2lub2RlX3N0YXRlKGVhX2lub2RlLCBFWFQ0X1NUQVRFX1hBVFRSKSB8fFxuJiM0MztcdFx0ICAgIEVYVDRfSShlYV9pbm9kZSktXHUwMDNlaV9maWxlX2FjbCkge1xuJiM0MztcdFx0XHRpcHV0KGVhX2lub2RlKTtcbiYjNDM7XHRcdFx0Z290byBuZXh0X2VudHJ5O1xuJiM0MztcdFx0fVxuIFx0XHRleHQ0X3hhdHRyX2lub2RlX3NldF9jbGFzcyhlYV9pbm9kZSk7XG4gXHRcdGlmIChpX3NpemVfcmVhZChlYV9pbm9kZSkgPT0gdmFsdWVfbGVuIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgIWV4dDRfeGF0dHJfaW5vZGVfcmVhZChlYV9pbm9kZSwgZWFfZGF0YSwgdmFsdWVfbGVuKSBcdTAwMjZcdTAwMjZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMDo0ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF94YXR0cl9pbm9kZV9tYXRjaCYjMzQ7LAogICAgJiMzNDtleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGV4dDQgZXh0ZW5kZWQgYXR0cmlidXRlICh4YXR0cikgbG9naWMsIHNwZWNpZmljYWxseSB0aGUgY2FjaGluZyBhbmQgbG9va3VwIG9mIEVBIGlub2Rlcy4gSXQgcmVwbGFjZXMgYGV4dDRfaWdldGAgd2l0aCBgZmluZF9pbm9kZV9ub3dhaXRgIGFuZCBhZGRzIGEgY3VzdG9tIGlub2RlIG1hdGNoIGZ1bmN0aW9uIGBleHQ0X3hhdHRyX2lub2RlX21hdGNoYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBmaWxlc3lzdGVtIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHhhdHRyIHN5c2NhbGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmMDgwNDNjMTUwNmJkYWMyMjVkMjE0MzFhYWJhYzEwOGY0OTMwMGJiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdW4gMjMgMTA6NDg6MDcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9leHQ0L3hhdHRyLmMgYi9mcy9leHQ0L3hhdHRyLmMKaW5kZXggOTgyYTFmODMxZTIyODIuLmVmMTNlN2E3NjE1M2YzIDEwMDY0NAotLS0gYS9mcy9leHQ0L3hhdHRyLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvZXh0NC94YXR0ci5jCkBAIC0xNTIzLDYgJiM0MzsxNTIzLDIwIEBAIHN0YXRpYyBzdHJ1Y3QgaW5vZGUgKmV4dDRfeGF0dHJfaW5vZGVfY3JlYXRlKGhhbmRsZV90ICpoYW5kbGUsCiAJcmV0dXJuIGVhX2lub2RlOwogfQogCiYjNDM7c3RhdGljIGludCBleHQ0X3hhdHRyX2lub2RlX21hdGNoKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHU2NCBpbm8sIHZvaWQgKmRhdGEpCiYjNDM7ewomIzQzOwlpZiAoaW5vZGUtJmd0O2lfaW5vICE9IGlubykKJiM0MzsJCXJldHVybiAwOwomIzQzOwlzcGluX2xvY2soJmFtcDtpbm9kZS0mZ3Q7aV9sb2NrKTsKJiM0MzsJaWYgKGlub2RlX3N0YXRlX3JlYWQoaW5vZGUpICZhbXA7IChJX0ZSRUVJTkcgfCBJX1dJTExfRlJFRSkpIHsKJiM0MzsJCXNwaW5fdW5sb2NrKCZhbXA7aW5vZGUtJmd0O2lfbG9jayk7CiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsJfQomIzQzOwlfX2lnZXQoaW5vZGUpOwomIzQzOwlzcGluX3VubG9jaygmYW1wO2lub2RlLSZndDtpX2xvY2spOwomIzQzOwlyZXR1cm4gMTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgc3RydWN0IGlub2RlICoKIGV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCB2b2lkICp2YWx1ZSwKIAkJCSAgICBzaXplX3QgdmFsdWVfbGVuLCB1MzIgaGFzaCkKQEAgLTE1NDksMTAgJiM0MzsxNTYzLDE5IEBAIGV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCB2b2lkICp2YWx1ZSwKIAl9CiAKIAl3aGlsZSAoY2UpIHsKLQkJZWFfaW5vZGUgPSBleHQ0X2lnZXQoaW5vZGUtJmd0O2lfc2IsIGNlLSZndDtlX3ZhbHVlLAotCQkJCSAgICAgRVhUNF9JR0VUX0VBX0lOT0RFKTsKLQkJaWYgKElTX0VSUihlYV9pbm9kZSkpCiYjNDM7CQllYV9pbm9kZSA9IGZpbmRfaW5vZGVfbm93YWl0KGlub2RlLSZndDtpX3NiLCBjZS0mZ3Q7ZV92YWx1ZSwKJiM0MzsJCQkJCSAgICAgZXh0NF94YXR0cl9pbm9kZV9tYXRjaCwgTlVMTCk7CiYjNDM7CQlpZiAoIWVhX2lub2RlKQogCQkJZ290byBuZXh0X2VudHJ5OwomIzQzOwkJaWYgKGlub2RlX3N0YXRlX3JlYWRfb25jZShlYV9pbm9kZSkgJmFtcDsgSV9ORVcpCiYjNDM7CQkJd2FpdF9vbl9uZXdfaW5vZGUoZWFfaW5vZGUpOwomIzQzOwkJaWYgKGlzX2JhZF9pbm9kZShlYV9pbm9kZSkgfHwKJiM0MzsJCSAgICAhKEVYVDRfSShlYV9pbm9kZSktJmd0O2lfZmxhZ3MgJmFtcDsgRVhUNF9FQV9JTk9ERV9GTCkgfHwKJiM0MzsJCSAgICBleHQ0X3Rlc3RfaW5vZGVfc3RhdGUoZWFfaW5vZGUsIEVYVDRfU1RBVEVfWEFUVFIpIHx8CiYjNDM7CQkgICAgRVhUNF9JKGVhX2lub2RlKS0mZ3Q7aV9maWxlX2FjbCkgewomIzQzOwkJCWlwdXQoZWFfaW5vZGUpOwomIzQzOwkJCWdvdG8gbmV4dF9lbnRyeTsKJiM0MzsJCX0KIAkJZXh0NF94YXR0cl9pbm9kZV9zZXRfY2xhc3MoZWFfaW5vZGUpOwogCQlpZiAoaV9zaXplX3JlYWQoZWFfaW5vZGUpID09IHZhbHVlX2xlbiAmYW1wOyZhbXA7CiAJCSAgICAhZXh0NF94YXR0cl9pbm9kZV9yZWFkKGVhX2lub2RlLCBlYV9kYXRhLCB2YWx1ZV9sZW4pICZhbXA7JmFtcDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTA6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMzNQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDE1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEV4dDQgWGF0dHIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCYjMzk7cyBoaXR0aW5nIGBmcy9leHQ0L3hhdHRyLmNgLiBMb29rcyBsaWtlIGl0JiMzOTtzIGludHJvZHVjaW5nIGEgZnVuY3Rpb24gY2FsbGVkIGBleHQ0X3hhdHRyX2lub2RlX21hdGNoYCBhbmQgdHdlYWtpbmcgYGV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZGAuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgYXJvdW5kIGhvdyBpbm9kZXMgYXJlIGhhbmRsZWQsIHNwZWNpZmljYWxseSByZXBsYWNpbmcgYGV4dDRfaWdldGAgd2l0aCBgZmluZF9pbm9kZV9ub3dhaXRgIGFuZCB0aGVuIGFkZGluZyBzb21lIG1hbnVhbCBzdGF0ZSBjaGVja3Mgb24gdGhlIGlub2RlLiBSaWdodCBhd2F5LCBJIHNlZSB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGV4dDQgZXh0ZW5kZWQgYXR0cmlidXRlIGhhbmRsaW5nLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCBpbiBkZXRhaWwuCgpOb3csIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGZvciBhbnkgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIGBmcy9leHQ0L3hhdHRyLmNgIGlzIGRlZmluaXRlbHkgY29tcGlsZWQgd2hlbiBgQ09ORklHX0VYVDRfRlNgIGlzIGVuYWJsZWQsIGJ1dCBhcmUgdGhlcmUgYW55ICpzcGVjaWZpYyogY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byB4YXR0cnMgdGhhdCB0aGlzIHBhdGNoIG1pZ2h0IG5lZWQ/IExldCYjMzk7cyBxdWlja2x5IHNjYW4gdGhlIGBmcy9leHQ0L01ha2VmaWxlYCBhbmQgdGhlIGBmcy9leHQ0L0tjb25maWdgIGZpbGVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIGhhdmUgYW55IGltcGxpY2l0IGRlcGVuZGVuY2llcyBvbiBzcGVjaWZpYyB4YXR0ci1yZWxhdGVkIGZlYXR1cmVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGV0aGVyIHRoaXMgaXMgYSBzZWxmLWNvbnRhaW5lZCBjaGFuZ2UsIG9yIHdoZXRoZXIgaXQgbWlnaHQgaW1wYWN0IGFueXRoaW5nIGVsc2UgaW4gdGhlIGtlcm5lbCBjb25maWcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTA6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGF0dHIubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC9NYWtlZmlsZT04PWV4dDQteVx0Oj0gYmFsbG9jLm8gYml0bWFwLm8gYmxvY2tfdmFsaWRpdHkubyBkaXIubyBleHQ0X2piZDIubyBleHRlbnRzLm8gXFxcbi0tXG5mcy9leHQ0L01ha2VmaWxlLTExLVx0XHRtbXAubyBtb3ZlX2V4dGVudC5vIG5hbWVpLm8gcGFnZS1pby5vIHJlYWRwYWdlLm8gcmVzaXplLm8gXFxcbmZzL2V4dDQvTWFrZWZpbGU6MTI6XHRcdHN1cGVyLm8gc3ltbGluay5vIHN5c2ZzLm8geGF0dHIubyB4YXR0cl9odXJkLm8geGF0dHJfdHJ1c3RlZC5vIFxcXG5mcy9leHQ0L01ha2VmaWxlLTEzLVx0XHR4YXR0cl91c2VyLm8gZmFzdF9jb21taXQubyBvcnBoYW4ub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDEwOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NjEKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBSZWFzb25pbmcgb24gdGhlIHhhdHRyLm8gQ29tcGlsYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHhhdHRyLm9gIG9iamVjdCBmaWxlLCBhbmQgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgaXQgKmFsd2F5cyogZ2V0cyBjb21waWxlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBgZXh0NC15YCBkZXBlbmRlbmN5LiBUaGF0JiMzOTtzIGEga2V5IG9ic2VydmF0aW9uLiBUaGlzIG1lYW5zLCBmcm9tIGEgY29uZmlndXJhdGlvbiBwZXJzcGVjdGl2ZSwganVzdCBlbnN1cmluZyBgQ09ORklHX0VYVDRfRlNgIGlzIHNldCBzaG91bGQgYmUgc3VmZmljaWVudCB0byBndWFyYW50ZWUgdGhhdCBgeGF0dHIub2AgaXMgaW5jbHVkZWQuIFdlIGRvbiYjMzk7dCBuZWVkIHRvIG92ZXJjb21wbGljYXRlIHRoaW5ncyBsb29raW5nIGZvciBvdGhlciBkZXBlbmRlbmNpZXMuIEhvd2V2ZXIsIGp1c3QgZm9yIGFkZGVkIHJvYnVzdG5lc3Mgb3IgcG90ZW50aWFsIGZ1dHVyZS1wcm9vZmluZywgSSB0aGluayBpdCYjMzk7cyB3b3J0aCBhIHF1aWNrIGNoZWNrIHRvIHNlZSBpZiBgQ09ORklHX0VYVDRfRlNfWEFUVFJgIGFsc28gZXhpc3RzLCBqdXN0IGFzIGEgYmVsdCBhbmQgc3VzcGVuZGVycyBhcHByb2FjaCB0byBtYWtlIGNlcnRhaW4gdGhpcyBjb25maWd1cmF0aW9uIGlzIHdoYXQgd2UgZXhwZWN0LiBUaGlzIHdpbGwgYWxsb3cgZm9yIG1vcmUgZXhwbGljaXQgY29udHJvbCwgZXZlbiBpZiBhIGJhc2ljIGNoZWNrIGlzIGVub3VnaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYVDRfRlNfWEFUVFImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leHQ0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTA6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI0MAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDExNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIEV4dDQgRXh0ZW5kZWQgQXR0cmlidXRlIElub2RlIEhhbmRsaW5nKioKCk9rYXksIHNvIHRoZXJlJiMzOTtzIG5vIGBDT05GSUdfRVhUNF9GU19YQVRUUmAgZGVmaW5lZCwgd2hpY2ggaW1tZWRpYXRlbHkgZmxhZ3Mgc29tZXRoaW5nLiBXZSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGltcGxpZXMgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZSBoYW5kbGluZyBpbiBleHQ0LgoKTXkgYXR0ZW50aW9uIGlzIGRyYXduIHRvIGBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmRgIGFuZCBgZXh0NF94YXR0cl9pbm9kZV9tYXRjaGAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZGlyZWN0bHkgaW52b2x2ZWQgd2l0aCBFQSAoRXh0ZW5kZWQgQXR0cmlidXRlKSBpbm9kZXMsIHNvIHRoZXkmIzM5O3JlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyBleHQ0IG1hbmFnZXMgYXR0cmlidXRlIG1ldGFkYXRhIGJleW9uZCB0aGUgc3RhbmRhcmQgZmlsZXN5c3RlbSBhdHRyaWJ1dGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2Ugcm91dGluZXMgaW50ZXJhY3Qgd2l0aCB0aGUgaW5vZGUgY2FjaGUgYW5kIHdoZXRoZXIgdGhlIGFic2VuY2Ugb2YgdGhlIGNvbmZpZyBhZmZlY3RzIHRoZW0uCgpNeSBmb2N1cyBpcyBzcXVhcmVseSBvbiBgZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kYCBhbmQgYGV4dDRfeGF0dHJfaW5vZGVfbWF0Y2hgLiBJIG5lZWQgdG8gZW5zdXJlIGBleHQ0X3hhdHRyX2lub2RlX21hdGNoYCBpcyBsb2NhdGVkIGluIGBmcy9leHQ0L3hhdHRyLmNgLCBiZWNhdXNlIEkgbmVlZCB0byB0cmFjZSB0aGlzIHBpZWNlIG9mIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTA6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0NF94YXR0cl9pbm9kZV9tYXRjaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQveGF0dHIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leHQ0L3hhdHRyLmM9MTQ3Mj1zdGF0aWMgc3RydWN0IGlub2RlICpleHQ0X3hhdHRyX2lub2RlX2NyZWF0ZShoYW5kbGVfdCAqaGFuZGxlLFxuLS1cbmZzL2V4dDQveGF0dHIuYy0xNTI1LVxuZnMvZXh0NC94YXR0ci5jOjE1MjY6c3RhdGljIGludCBleHQ0X3hhdHRyX2lub2RlX21hdGNoKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHU2NCBpbm8sIHZvaWQgKmRhdGEpXG5mcy9leHQ0L3hhdHRyLmMtMTUyNy17XG4tLVxuZnMvZXh0NC94YXR0ci5jPTE1NDE9ZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHZvaWQgKnZhbHVlLFxuLS1cbmZzL2V4dDQveGF0dHIuYy0xNTY2LVx0XHRlYV9pbm9kZSA9IGZpbmRfaW5vZGVfbm93YWl0KGlub2RlLVx1MDAzZWlfc2IsIGNlLVx1MDAzZWVfdmFsdWUsXG5mcy9leHQ0L3hhdHRyLmM6MTU2NzpcdFx0XHRcdFx0ICAgICBleHQ0X3hhdHRyX2lub2RlX21hdGNoLCBOVUxMKTtcbmZzL2V4dDQveGF0dHIuYy0xNTY4LVx0XHRpZiAoIWVhX2lub2RlKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDEwOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NjAKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gmIzM5O3MgSW1wYWN0KioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSBmdW5jdGlvbmFsIOKAkyBpdOKAmXMgdHdlYWtpbmcgdGhlIHhhdHRyIEVBIGlub2RlIGNhY2hpbmcgbG9naWMgd2l0aGluIGV4dDQuIFRoYXQmIzM5O3MgZ29vZCwgaXQgc3VnZ2VzdHMgYSBjb3JlIHN5c3RlbSBjaGFuZ2UgdGhhdCBjb3VsZCBiZSBpbnRlcmVzdGluZyB0byBleHBsb3JlLiBUaGUgYFdvcnRoRnV6emluZzogdHJ1ZWAgZmxhZyBjb25maXJtcyB0aGF0IGl0IGlzIGFuIGFyZWEgdGhhdCB3YXJyYW50cyBkZWVwZXIgaW52ZXN0aWdhdGlvbi4gSXQgc2VlbXMgdGhhdCBlbmFibGluZyB0aGUgYEVYVDRfRlNgIGNvbmZpZyBpcyBlc3NlbnRpYWwsIHdoaWNoIGlzIGV4cGVjdGVkLiBUaGUgYEZvY3VzU3ltYm9sc2AgZ2l2ZSBtZSBhIHByZWNpc2UgdGFyZ2V0aW5nOiBgZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kYCBhbmQgYGV4dDRfeGF0dHJfaW5vZGVfbWF0Y2hgLiBUaGVzZSBhcmUgdGhlIGtleSBmdW5jdGlvbnMgdG8gc2NydXRpbml6ZS4KCkJlZm9yZSBJIGRpZyBpbiB0b28gZGVlcCwgSSB3YW50IHRvIGNvbmZpcm0gdGhhdCB0aGVyZSBhcmUgbm8gYWRkaXRpb25hbCBkZXBlbmRlbmNpZXMgbHVya2luZy4gRG9lcyBpdCBhbHNvIHJlcXVpcmUgYEVYVDRfRlNfUE9TSVhfQUNMYCBvciBgRVhUNF9GU19TRUNVUklUWWA/IEkgbmVlZCB0byBrbm93IHRoZSBmdWxsIHBpY3R1cmUgdG8gYXZvaWQgbWlzc2luZyBjcml0aWNhbCBlZGdlIGNhc2VzLgoKVGhlIGNvZGUgaXRzZWxmIGlzIGFuY2hvcmVkIGluIGBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmRgLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIGEgaGVscGVyIGZ1bmN0aW9uIHV0aWxpemVkIGJ5IGBleHQ0X3hhdHRyX2lub2RlX2xvb2t1cF9jcmVhdGVgLiBUaGlzIGlzIGltcG9ydGFudCwgYXMgaXQgZ2l2ZXMgYSBzZW5zZSBvZiBob3cgdGhlIGNoYW5nZSBpcyBlbXBsb3llZCB3aXRoaW4gdGhlIGJyb2FkZXIgZXh0NCBzeXN0ZW0uIE5vdywgbGV04oCZcyBzZWUgd2hlcmUgYGV4dDRfeGF0dHJfaW5vZGVfbG9va3VwX2NyZWF0ZWAgaXMgY2FsbGVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhpcyB3aG9sZSB0aGluZywgdG8ga25vdyBhbGwgdGhlIGNhbGxzIHRoYXQgYXJlIHVzaW5nIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yMyAxMDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtleHQ0X3hhdHRyX2lub2RlX2xvb2t1cF9jcmVhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9leHQ0L3hhdHRyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvZXh0NC94YXR0ci5jPTE1NDE9ZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHZvaWQgKnZhbHVlLFxuLS1cbmZzL2V4dDQveGF0dHIuYy0xNjAwLSAqL1xuZnMvZXh0NC94YXR0ci5jOjE2MDE6c3RhdGljIHN0cnVjdCBpbm9kZSAqZXh0NF94YXR0cl9pbm9kZV9sb29rdXBfY3JlYXRlKGhhbmRsZV90ICpoYW5kbGUsXG5mcy9leHQ0L3hhdHRyLmMtMTYwMi1cdFx0c3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgdm9pZCAqdmFsdWUsIHNpemVfdCB2YWx1ZV9sZW4pXG4tLVxuZnMvZXh0NC94YXR0ci5jPTE5MjI9ZXh0NF94YXR0cl9ibG9ja19zZXQoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSxcbi0tXG5mcy9leHQ0L3hhdHRyLmMtMTk0Mi1cbmZzL2V4dDQveGF0dHIuYzoxOTQzOlx0XHRlYV9pbm9kZSA9IGV4dDRfeGF0dHJfaW5vZGVfbG9va3VwX2NyZWF0ZShoYW5kbGUsIGlub2RlLFxuZnMvZXh0NC94YXR0ci5jLTE5NDQtXHRcdFx0XHRcdGktXHUwMDNldmFsdWUsIGktXHUwMDNldmFsdWVfbGVuKTtcbi0tXG5mcy9leHQ0L3hhdHRyLmM9MjI3Nz1pbnQgZXh0NF94YXR0cl9pYm9keV9zZXQoaGFuZGxlX3QgKmhhbmRsZSwgc3RydWN0IGlub2RlICppbm9kZSxcbi0tXG5mcy9leHQ0L3hhdHRyLmMtMjI5Mi1cbmZzL2V4dDQveGF0dHIuYzoyMjkzOlx0XHRlYV9pbm9kZSA9IGV4dDRfeGF0dHJfaW5vZGVfbG9va3VwX2NyZWF0ZShoYW5kbGUsIGlub2RlLFxuZnMvZXh0NC94YXR0ci5jLTIyOTQtXHRcdFx0XHRcdGktXHUwMDNldmFsdWUsIGktXHUwMDNldmFsdWVfbGVuKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjMgMTA6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDczOQoJCQkJCQkJb3V0cHV0OiAxMzkKCQkJCQkJCXRob3VnaHRzOiAxNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uOgoKKipYYXR0ciBNb2RpZmljYXRpb24gU3VtbWFyeSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IGRlYWxzIHdpdGggdGhlIGV4dDQgZmlsZXN5c3RlbSBhbmQgaXRzIGV4dGVuZGVkIGF0dHJpYnV0ZXMsIG9yIHhhdHRycy4gSXQgc2VlbXMgbGlrZSB0aGUgbW9kaWZpY2F0aW9ucyBhcmUgY2VudGVyZWQgYXJvdW5kIGhvdyB0aGVzZSB4YXR0cnMgYXJlIGhhbmRsZWQsIHNwZWNpZmljYWxseSwgd2l0aGluIGBleHQ0X3hhdHRyX2Jsb2NrX3NldGAgYW5kIGBleHQ0X3hhdHRyX2lib2R5X3NldGAsIHdoaWNoIGFyZSB0aGUgc3RhbmRhcmQgZnVuY3Rpb25zIGZvciBzZXR0aW5nIHhhdHRycy4gU2luY2UgaXQmIzM5O3MgdG91Y2hpbmcgdGhlc2UgZnVuZGFtZW50YWwgeGF0dHIgc2V0dGluZyBmdW5jdGlvbnMsIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBtb3N0IGxpa2VseSBgQ09ORklHX0VYVDRfRlNgLiBUaGF0IG1ha2VzIHNlbnNlLgoKRXNzZW50aWFsbHksIHRoZSBwYXRjaCBpcyByZXdvcmtpbmcgdGhlIGNhY2hpbmcgYW5kIGxvb2t1cCBzdHJhdGVneSBmb3IgRUEgaW5vZGVzIHdpdGhpbiBleHQ0LiBUaGUga2V5IGNoYW5nZSBpcyB0aGUgcmVwbGFjZW1lbnQgb2YgYGV4dDRfaWdldGAgd2l0aCBgZmluZF9pbm9kZV9ub3dhaXRgLCBhbG9uZyB3aXRoIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYSBjdXN0b20gaW5vZGUgbWF0Y2hpbmcgZnVuY3Rpb24sIGBleHQ0X3hhdHRyX2lub2RlX21hdGNoYC4gU28sIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBmaWxlc3lzdGVtLiBTaW5jZSB4YXR0cnMgYXJlIGFjY2Vzc2libGUgdmlhIHN0YW5kYXJkIHN5c2NhbGxzLCB0aGlzIGRlZmluaXRlbHkgc2VlbXMgbGlrZSBhIGNvcmUgZmlsZXN5c3RlbSBtb2RpZmljYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzIzIDEwOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF94YXR0cl9pbm9kZV9tYXRjaCYjMzQ7LAogICAgJiMzNDtleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGV4dDQgZXh0ZW5kZWQgYXR0cmlidXRlICh4YXR0cikgbG9naWMsIHNwZWNpZmljYWxseSB0aGUgY2FjaGluZyBhbmQgbG9va3VwIG9mIEVBIGlub2Rlcy4gSXQgcmVwbGFjZXMgYGV4dDRfaWdldGAgd2l0aCBgZmluZF9pbm9kZV9ub3dhaXRgIGFuZCBhZGRzIGEgY3VzdG9tIGlub2RlIG1hdGNoIGZ1bmN0aW9uIGBleHQ0X3hhdHRyX2lub2RlX21hdGNoYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBmaWxlc3lzdGVtIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHhhdHRyIHN5c2NhbGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtFWFQ0X0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZXh0NF94YXR0cl9pbm9kZV9tYXRjaCYjMzQ7LAogICAgJiMzNDtleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGV4dDQgZXh0ZW5kZWQgYXR0cmlidXRlICh4YXR0cikgbG9naWMsIHNwZWNpZmljYWxseSB0aGUgY2FjaGluZyBhbmQgbG9va3VwIG9mIEVBIGlub2Rlcy4gSXQgcmVwbGFjZXMgYGV4dDRfaWdldGAgd2l0aCBgZmluZF9pbm9kZV9ub3dhaXRgIGFuZCBhZGRzIGEgY3VzdG9tIGlub2RlIG1hdGNoIGZ1bmN0aW9uIGBleHQ0X3hhdHRyX2lub2RlX21hdGNoYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBmaWxlc3lzdGVtIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHhhdHRyIHN5c2NhbGxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDg6MDkuMjExNTAwNTM0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk4MTM1NzMzOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfeGF0dHJfaW5vZGVfbWF0Y2hcIixcbiAgICBcImV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBleHQ0IGV4dGVuZGVkIGF0dHJpYnV0ZSAoeGF0dHIpIGxvZ2ljLCBzcGVjaWZpY2FsbHkgdGhlIGNhY2hpbmcgYW5kIGxvb2t1cCBvZiBFQSBpbm9kZXMuIEl0IHJlcGxhY2VzIGBleHQ0X2lnZXRgIHdpdGggYGZpbmRfaW5vZGVfbm93YWl0YCBhbmQgYWRkcyBhIGN1c3RvbSBpbm9kZSBtYXRjaCBmdW5jdGlvbiBgZXh0NF94YXR0cl9pbm9kZV9tYXRjaGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUgZmlsZXN5c3RlbSB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSB4YXR0ciBzeXNjYWxscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDg6MDkuMjExNTA4Nzg0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzg3Mzc5OTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZjA4MDQzYzE1MDZiZGFjMjI1ZDIxNDMxYWFiYWMxMDhmNDkzMDBiYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAyMyAxMDo0ODowNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L3hhdHRyLmMgYi9mcy9leHQ0L3hhdHRyLmNcXG5pbmRleCA5ODJhMWY4MzFlMjI4Mi4uZWYxM2U3YTc2MTUzZjMgMTAwNjQ0XFxuLS0tIGEvZnMvZXh0NC94YXR0ci5jXFxuKysrIGIvZnMvZXh0NC94YXR0ci5jXFxuQEAgLTE1MjMsNiArMTUyMywyMCBAQCBzdGF0aWMgc3RydWN0IGlub2RlICpleHQ0X3hhdHRyX2lub2RlX2NyZWF0ZShoYW5kbGVfdCAqaGFuZGxlLFxcbiBcXHRyZXR1cm4gZWFfaW5vZGU7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgZXh0NF94YXR0cl9pbm9kZV9tYXRjaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1NjQgaW5vLCB2b2lkICpkYXRhKVxcbit7XFxuK1xcdGlmIChpbm9kZS1cXHUwMDNlaV9pbm8gIT0gaW5vKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0c3Bpbl9sb2NrKFxcdTAwMjZpbm9kZS1cXHUwMDNlaV9sb2NrKTtcXG4rXFx0aWYgKGlub2RlX3N0YXRlX3JlYWQoaW5vZGUpIFxcdTAwMjYgKElfRlJFRUlORyB8IElfV0lMTF9GUkVFKSkge1xcbitcXHRcXHRzcGluX3VubG9jayhcXHUwMDI2aW5vZGUtXFx1MDAzZWlfbG9jayk7XFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHR9XFxuK1xcdF9faWdldChpbm9kZSk7XFxuK1xcdHNwaW5fdW5sb2NrKFxcdTAwMjZpbm9kZS1cXHUwMDNlaV9sb2NrKTtcXG4rXFx0cmV0dXJuIDE7XFxuK31cXG4rXFxuIHN0YXRpYyBzdHJ1Y3QgaW5vZGUgKlxcbiBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmQoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgdm9pZCAqdmFsdWUsXFxuIFxcdFxcdFxcdCAgICBzaXplX3QgdmFsdWVfbGVuLCB1MzIgaGFzaClcXG5AQCAtMTU0OSwxMCArMTU2MywxOSBAQCBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmQoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgdm9pZCAqdmFsdWUsXFxuIFxcdH1cXG4gXFxuIFxcdHdoaWxlIChjZSkge1xcbi1cXHRcXHRlYV9pbm9kZSA9IGV4dDRfaWdldChpbm9kZS1cXHUwMDNlaV9zYiwgY2UtXFx1MDAzZWVfdmFsdWUsXFxuLVxcdFxcdFxcdFxcdCAgICAgRVhUNF9JR0VUX0VBX0lOT0RFKTtcXG4tXFx0XFx0aWYgKElTX0VSUihlYV9pbm9kZSkpXFxuK1xcdFxcdGVhX2lub2RlID0gZmluZF9pbm9kZV9ub3dhaXQoaW5vZGUtXFx1MDAzZWlfc2IsIGNlLVxcdTAwM2VlX3ZhbHVlLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgIGV4dDRfeGF0dHJfaW5vZGVfbWF0Y2gsIE5VTEwpO1xcbitcXHRcXHRpZiAoIWVhX2lub2RlKVxcbiBcXHRcXHRcXHRnb3RvIG5leHRfZW50cnk7XFxuK1xcdFxcdGlmIChpbm9kZV9zdGF0ZV9yZWFkX29uY2UoZWFfaW5vZGUpIFxcdTAwMjYgSV9ORVcpXFxuK1xcdFxcdFxcdHdhaXRfb25fbmV3X2lub2RlKGVhX2lub2RlKTtcXG4rXFx0XFx0aWYgKGlzX2JhZF9pbm9kZShlYV9pbm9kZSkgfHxcXG4rXFx0XFx0ICAgICEoRVhUNF9JKGVhX2lub2RlKS1cXHUwMDNlaV9mbGFncyBcXHUwMDI2IEVYVDRfRUFfSU5PREVfRkwpIHx8XFxuK1xcdFxcdCAgICBleHQ0X3Rlc3RfaW5vZGVfc3RhdGUoZWFfaW5vZGUsIEVYVDRfU1RBVEVfWEFUVFIpIHx8XFxuK1xcdFxcdCAgICBFWFQ0X0koZWFfaW5vZGUpLVxcdTAwM2VpX2ZpbGVfYWNsKSB7XFxuK1xcdFxcdFxcdGlwdXQoZWFfaW5vZGUpO1xcbitcXHRcXHRcXHRnb3RvIG5leHRfZW50cnk7XFxuK1xcdFxcdH1cXG4gXFx0XFx0ZXh0NF94YXR0cl9pbm9kZV9zZXRfY2xhc3MoZWFfaW5vZGUpO1xcbiBcXHRcXHRpZiAoaV9zaXplX3JlYWQoZWFfaW5vZGUpID09IHZhbHVlX2xlbiBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgIWV4dDRfeGF0dHJfaW5vZGVfcmVhZChlYV9pbm9kZSwgZWFfZGF0YSwgdmFsdWVfbGVuKSBcXHUwMDI2XFx1MDAyNlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxMDo0ODoxMS41OTk4MTY3NTlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3NDI1MjMwMDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X3hhdHRyX2lub2RlX21hdGNoXCIsXG4gICAgXCJleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXh0NCBleHRlbmRlZCBhdHRyaWJ1dGUgKHhhdHRyKSBsb2dpYywgc3BlY2lmaWNhbGx5IHRoZSBjYWNoaW5nIGFuZCBsb29rdXAgb2YgRUEgaW5vZGVzLiBJdCByZXBsYWNlcyBgZXh0NF9pZ2V0YCB3aXRoIGBmaW5kX2lub2RlX25vd2FpdGAgYW5kIGFkZHMgYSBjdXN0b20gaW5vZGUgbWF0Y2ggZnVuY3Rpb24gYGV4dDRfeGF0dHJfaW5vZGVfbWF0Y2hgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGZpbGVzeXN0ZW0gdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgeGF0dHIgc3lzY2FsbHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjA4MDQzYzE1MDZiZGFjMjI1ZDIxNDMxYWFiYWMxMDhmNDkzMDBiYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDIzIDEwOjQ4OjA3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC94YXR0ci5jIGIvZnMvZXh0NC94YXR0ci5jXG5pbmRleCA5ODJhMWY4MzFlMjI4Mi4uZWYxM2U3YTc2MTUzZjMgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L3hhdHRyLmNcbisrKyBiL2ZzL2V4dDQveGF0dHIuY1xuQEAgLTE1MjMsNiArMTUyMywyMCBAQCBzdGF0aWMgc3RydWN0IGlub2RlICpleHQ0X3hhdHRyX2lub2RlX2NyZWF0ZShoYW5kbGVfdCAqaGFuZGxlLFxuIFx0cmV0dXJuIGVhX2lub2RlO1xuIH1cbiBcbitzdGF0aWMgaW50IGV4dDRfeGF0dHJfaW5vZGVfbWF0Y2goc3RydWN0IGlub2RlICppbm9kZSwgdTY0IGlubywgdm9pZCAqZGF0YSlcbit7XG4rXHRpZiAoaW5vZGUtXHUwMDNlaV9pbm8gIT0gaW5vKVxuK1x0XHRyZXR1cm4gMDtcbitcdHNwaW5fbG9jayhcdTAwMjZpbm9kZS1cdTAwM2VpX2xvY2spO1xuK1x0aWYgKGlub2RlX3N0YXRlX3JlYWQoaW5vZGUpIFx1MDAyNiAoSV9GUkVFSU5HIHwgSV9XSUxMX0ZSRUUpKSB7XG4rXHRcdHNwaW5fdW5sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4rXHRcdHJldHVybiAwO1xuK1x0fVxuK1x0X19pZ2V0KGlub2RlKTtcbitcdHNwaW5fdW5sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4rXHRyZXR1cm4gMTtcbit9XG4rXG4gc3RhdGljIHN0cnVjdCBpbm9kZSAqXG4gZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHZvaWQgKnZhbHVlLFxuIFx0XHRcdCAgICBzaXplX3QgdmFsdWVfbGVuLCB1MzIgaGFzaClcbkBAIC0xNTQ5LDEwICsxNTYzLDE5IEBAIGV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCB2b2lkICp2YWx1ZSxcbiBcdH1cbiBcbiBcdHdoaWxlIChjZSkge1xuLVx0XHRlYV9pbm9kZSA9IGV4dDRfaWdldChpbm9kZS1cdTAwM2VpX3NiLCBjZS1cdTAwM2VlX3ZhbHVlLFxuLVx0XHRcdFx0ICAgICBFWFQ0X0lHRVRfRUFfSU5PREUpO1xuLVx0XHRpZiAoSVNfRVJSKGVhX2lub2RlKSlcbitcdFx0ZWFfaW5vZGUgPSBmaW5kX2lub2RlX25vd2FpdChpbm9kZS1cdTAwM2VpX3NiLCBjZS1cdTAwM2VlX3ZhbHVlLFxuK1x0XHRcdFx0XHQgICAgIGV4dDRfeGF0dHJfaW5vZGVfbWF0Y2gsIE5VTEwpO1xuK1x0XHRpZiAoIWVhX2lub2RlKVxuIFx0XHRcdGdvdG8gbmV4dF9lbnRyeTtcbitcdFx0aWYgKGlub2RlX3N0YXRlX3JlYWRfb25jZShlYV9pbm9kZSkgXHUwMDI2IElfTkVXKVxuK1x0XHRcdHdhaXRfb25fbmV3X2lub2RlKGVhX2lub2RlKTtcbitcdFx0aWYgKGlzX2JhZF9pbm9kZShlYV9pbm9kZSkgfHxcbitcdFx0ICAgICEoRVhUNF9JKGVhX2lub2RlKS1cdTAwM2VpX2ZsYWdzIFx1MDAyNiBFWFQ0X0VBX0lOT0RFX0ZMKSB8fFxuK1x0XHQgICAgZXh0NF90ZXN0X2lub2RlX3N0YXRlKGVhX2lub2RlLCBFWFQ0X1NUQVRFX1hBVFRSKSB8fFxuK1x0XHQgICAgRVhUNF9JKGVhX2lub2RlKS1cdTAwM2VpX2ZpbGVfYWNsKSB7XG4rXHRcdFx0aXB1dChlYV9pbm9kZSk7XG4rXHRcdFx0Z290byBuZXh0X2VudHJ5O1xuK1x0XHR9XG4gXHRcdGV4dDRfeGF0dHJfaW5vZGVfc2V0X2NsYXNzKGVhX2lub2RlKTtcbiBcdFx0aWYgKGlfc2l6ZV9yZWFkKGVhX2lub2RlKSA9PSB2YWx1ZV9sZW4gXHUwMDI2XHUwMDI2XG4gXHRcdCAgICAhZXh0NF94YXR0cl9pbm9kZV9yZWFkKGVhX2lub2RlLCBlYV9kYXRhLCB2YWx1ZV9sZW4pIFx1MDAyNlx1MDAyNlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDg6MTEuNTk5ODE5MDE5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk5MTkyNDk2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEV4dDQgWGF0dHIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQncyBoaXR0aW5nIGBmcy9leHQ0L3hhdHRyLmNgLiBMb29rcyBsaWtlIGl0J3MgaW50cm9kdWNpbmcgYSBmdW5jdGlvbiBjYWxsZWQgYGV4dDRfeGF0dHJfaW5vZGVfbWF0Y2hgIGFuZCB0d2Vha2luZyBgZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgaG93IGlub2RlcyBhcmUgaGFuZGxlZCwgc3BlY2lmaWNhbGx5IHJlcGxhY2luZyBgZXh0NF9pZ2V0YCB3aXRoIGBmaW5kX2lub2RlX25vd2FpdGAgYW5kIHRoZW4gYWRkaW5nIHNvbWUgbWFudWFsIHN0YXRlIGNoZWNrcyBvbiB0aGUgaW5vZGUuIFJpZ2h0IGF3YXksIEkgc2VlIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgZXh0NCBleHRlbmRlZCBhdHRyaWJ1dGUgaGFuZGxpbmcsIHdoaWNoIGlzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIGluIGRldGFpbC5cblxuTm93LCBteSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBmb3IgYW55IGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBgZnMvZXh0NC94YXR0ci5jYCBpcyBkZWZpbml0ZWx5IGNvbXBpbGVkIHdoZW4gYENPTkZJR19FWFQ0X0ZTYCBpcyBlbmFibGVkLCBidXQgYXJlIHRoZXJlIGFueSAqc3BlY2lmaWMqIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8geGF0dHJzIHRoYXQgdGhpcyBwYXRjaCBtaWdodCBuZWVkPyBMZXQncyBxdWlja2x5IHNjYW4gdGhlIGBmcy9leHQ0L01ha2VmaWxlYCBhbmQgdGhlIGBmcy9leHQ0L0tjb25maWdgIGZpbGVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3IgaGF2ZSBhbnkgaW1wbGljaXQgZGVwZW5kZW5jaWVzIG9uIHNwZWNpZmljIHhhdHRyLXJlbGF0ZWQgZmVhdHVyZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXRoZXIgdGhpcyBpcyBhIHNlbGYtY29udGFpbmVkIGNoYW5nZSwgb3Igd2hldGhlciBpdCBtaWdodCBpbXBhY3QgYW55dGhpbmcgZWxzZSBpbiB0aGUga2VybmVsIGNvbmZpZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMzNSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDEwOjQ4OjE2LjU5MTc2NzIwNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjExMjQ3NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGF0dHIub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leHQ0L01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvTWFrZWZpbGU9OD1leHQ0LXlcXHQ6PSBiYWxsb2MubyBiaXRtYXAubyBibG9ja192YWxpZGl0eS5vIGRpci5vIGV4dDRfamJkMi5vIGV4dGVudHMubyBcXFxcXFxuLS1cXG5mcy9leHQ0L01ha2VmaWxlLTExLVxcdFxcdG1tcC5vIG1vdmVfZXh0ZW50Lm8gbmFtZWkubyBwYWdlLWlvLm8gcmVhZHBhZ2UubyByZXNpemUubyBcXFxcXFxuZnMvZXh0NC9NYWtlZmlsZToxMjpcXHRcXHRzdXBlci5vIHN5bWxpbmsubyBzeXNmcy5vIHhhdHRyLm8geGF0dHJfaHVyZC5vIHhhdHRyX3RydXN0ZWQubyBcXFxcXFxuZnMvZXh0NC9NYWtlZmlsZS0xMy1cXHRcXHR4YXR0cl91c2VyLm8gZmFzdF9jb21taXQubyBvcnBoYW4ub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yM1QxMDo0ODoxNy4xNTI4OTg3NjFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjMwNTAzNTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFJlYXNvbmluZyBvbiB0aGUgeGF0dHIubyBDb21waWxhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHhhdHRyLm9gIG9iamVjdCBmaWxlLCBhbmQgaXQncyBwcmV0dHkgY2xlYXIgdGhhdCBpdCAqYWx3YXlzKiBnZXRzIGNvbXBpbGVkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIGBleHQ0LXlgIGRlcGVuZGVuY3kuIFRoYXQncyBhIGtleSBvYnNlcnZhdGlvbi4gVGhpcyBtZWFucywgZnJvbSBhIGNvbmZpZ3VyYXRpb24gcGVyc3BlY3RpdmUsIGp1c3QgZW5zdXJpbmcgYENPTkZJR19FWFQ0X0ZTYCBpcyBzZXQgc2hvdWxkIGJlIHN1ZmZpY2llbnQgdG8gZ3VhcmFudGVlIHRoYXQgYHhhdHRyLm9gIGlzIGluY2x1ZGVkLiBXZSBkb24ndCBuZWVkIHRvIG92ZXJjb21wbGljYXRlIHRoaW5ncyBsb29raW5nIGZvciBvdGhlciBkZXBlbmRlbmNpZXMuIEhvd2V2ZXIsIGp1c3QgZm9yIGFkZGVkIHJvYnVzdG5lc3Mgb3IgcG90ZW50aWFsIGZ1dHVyZS1wcm9vZmluZywgSSB0aGluayBpdCdzIHdvcnRoIGEgcXVpY2sgY2hlY2sgdG8gc2VlIGlmIGBDT05GSUdfRVhUNF9GU19YQVRUUmAgYWxzbyBleGlzdHMsIGp1c3QgYXMgYSBiZWx0IGFuZCBzdXNwZW5kZXJzIGFwcHJvYWNoIHRvIG1ha2UgY2VydGFpbiB0aGlzIGNvbmZpZ3VyYXRpb24gaXMgd2hhdCB3ZSBleHBlY3QuIFRoaXMgd2lsbCBhbGxvdyBmb3IgbW9yZSBleHBsaWNpdCBjb250cm9sLCBldmVuIGlmIGEgYmFzaWMgY2hlY2sgaXMgZW5vdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTYxLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDg6MjIuMzgzNDA1OTQxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5Njk2MDQ3MSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhUNF9GU19YQVRUUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leHQ0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDg6MjIuNzgwMzc2OTUyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQwMDk3OTE0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIEV4dDQgRXh0ZW5kZWQgQXR0cmlidXRlIElub2RlIEhhbmRsaW5nKipcblxuT2theSwgc28gdGhlcmUncyBubyBgQ09ORklHX0VYVDRfRlNfWEFUVFJgIGRlZmluZWQsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIHNvbWV0aGluZy4gV2UgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBpbXBsaWVzIGZvciBleHRlbmRlZCBhdHRyaWJ1dGUgaGFuZGxpbmcgaW4gZXh0NC5cblxuTXkgYXR0ZW50aW9uIGlzIGRyYXduIHRvIGBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmRgIGFuZCBgZXh0NF94YXR0cl9pbm9kZV9tYXRjaGAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZGlyZWN0bHkgaW52b2x2ZWQgd2l0aCBFQSAoRXh0ZW5kZWQgQXR0cmlidXRlKSBpbm9kZXMsIHNvIHRoZXkncmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IGV4dDQgbWFuYWdlcyBhdHRyaWJ1dGUgbWV0YWRhdGEgYmV5b25kIHRoZSBzdGFuZGFyZCBmaWxlc3lzdGVtIGF0dHJpYnV0ZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSByb3V0aW5lcyBpbnRlcmFjdCB3aXRoIHRoZSBpbm9kZSBjYWNoZSBhbmQgd2hldGhlciB0aGUgYWJzZW5jZSBvZiB0aGUgY29uZmlnIGFmZmVjdHMgdGhlbS5cblxuTXkgZm9jdXMgaXMgc3F1YXJlbHkgb24gYGV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZGAgYW5kIGBleHQ0X3hhdHRyX2lub2RlX21hdGNoYC4gSSBuZWVkIHRvIGVuc3VyZSBgZXh0NF94YXR0cl9pbm9kZV9tYXRjaGAgaXMgbG9jYXRlZCBpbiBgZnMvZXh0NC94YXR0ci5jYCwgYmVjYXVzZSBJIG5lZWQgdG8gdHJhY2UgdGhpcyBwaWVjZSBvZiBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjQwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDEwOjQ4OjI3LjE4MTM1OTIzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTcyMTczMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXh0NF94YXR0cl9pbm9kZV9tYXRjaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leHQ0L3hhdHRyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXh0NC94YXR0ci5jPTE0NzI9c3RhdGljIHN0cnVjdCBpbm9kZSAqZXh0NF94YXR0cl9pbm9kZV9jcmVhdGUoaGFuZGxlX3QgKmhhbmRsZSxcXG4tLVxcbmZzL2V4dDQveGF0dHIuYy0xNTI1LVxcbmZzL2V4dDQveGF0dHIuYzoxNTI2OnN0YXRpYyBpbnQgZXh0NF94YXR0cl9pbm9kZV9tYXRjaChzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1NjQgaW5vLCB2b2lkICpkYXRhKVxcbmZzL2V4dDQveGF0dHIuYy0xNTI3LXtcXG4tLVxcbmZzL2V4dDQveGF0dHIuYz0xNTQxPWV4dDRfeGF0dHJfaW5vZGVfY2FjaGVfZmluZChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCB2b2lkICp2YWx1ZSxcXG4tLVxcbmZzL2V4dDQveGF0dHIuYy0xNTY2LVxcdFxcdGVhX2lub2RlID0gZmluZF9pbm9kZV9ub3dhaXQoaW5vZGUtXFx1MDAzZWlfc2IsIGNlLVxcdTAwM2VlX3ZhbHVlLFxcbmZzL2V4dDQveGF0dHIuYzoxNTY3OlxcdFxcdFxcdFxcdFxcdCAgICAgZXh0NF94YXR0cl9pbm9kZV9tYXRjaCwgTlVMTCk7XFxuZnMvZXh0NC94YXR0ci5jLTE1NjgtXFx0XFx0aWYgKCFlYV9pbm9kZSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDg6MjkuMDk4NTg1NjU3WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQwMDQ2OTgwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIEltcGFjdCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSBmdW5jdGlvbmFsIOKAkyBpdOKAmXMgdHdlYWtpbmcgdGhlIHhhdHRyIEVBIGlub2RlIGNhY2hpbmcgbG9naWMgd2l0aGluIGV4dDQuIFRoYXQncyBnb29kLCBpdCBzdWdnZXN0cyBhIGNvcmUgc3lzdGVtIGNoYW5nZSB0aGF0IGNvdWxkIGJlIGludGVyZXN0aW5nIHRvIGV4cGxvcmUuIFRoZSBgV29ydGhGdXp6aW5nOiB0cnVlYCBmbGFnIGNvbmZpcm1zIHRoYXQgaXQgaXMgYW4gYXJlYSB0aGF0IHdhcnJhbnRzIGRlZXBlciBpbnZlc3RpZ2F0aW9uLiBJdCBzZWVtcyB0aGF0IGVuYWJsaW5nIHRoZSBgRVhUNF9GU2AgY29uZmlnIGlzIGVzc2VudGlhbCwgd2hpY2ggaXMgZXhwZWN0ZWQuIFRoZSBgRm9jdXNTeW1ib2xzYCBnaXZlIG1lIGEgcHJlY2lzZSB0YXJnZXRpbmc6IGBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmRgIGFuZCBgZXh0NF94YXR0cl9pbm9kZV9tYXRjaGAuIFRoZXNlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyB0byBzY3J1dGluaXplLlxuXG5CZWZvcmUgSSBkaWcgaW4gdG9vIGRlZXAsIEkgd2FudCB0byBjb25maXJtIHRoYXQgdGhlcmUgYXJlIG5vIGFkZGl0aW9uYWwgZGVwZW5kZW5jaWVzIGx1cmtpbmcuIERvZXMgaXQgYWxzbyByZXF1aXJlIGBFWFQ0X0ZTX1BPU0lYX0FDTGAgb3IgYEVYVDRfRlNfU0VDVVJJVFlgPyBJIG5lZWQgdG8ga25vdyB0aGUgZnVsbCBwaWN0dXJlIHRvIGF2b2lkIG1pc3NpbmcgY3JpdGljYWwgZWRnZSBjYXNlcy5cblxuVGhlIGNvZGUgaXRzZWxmIGlzIGFuY2hvcmVkIGluIGBleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmRgLCB3aGljaCwgYXMgSSByZWNhbGwsIGlzIGEgaGVscGVyIGZ1bmN0aW9uIHV0aWxpemVkIGJ5IGBleHQ0X3hhdHRyX2lub2RlX2xvb2t1cF9jcmVhdGVgLiBUaGlzIGlzIGltcG9ydGFudCwgYXMgaXQgZ2l2ZXMgYSBzZW5zZSBvZiBob3cgdGhlIGNoYW5nZSBpcyBlbXBsb3llZCB3aXRoaW4gdGhlIGJyb2FkZXIgZXh0NCBzeXN0ZW0uIE5vdywgbGV04oCZcyBzZWUgd2hlcmUgYGV4dDRfeGF0dHJfaW5vZGVfbG9va3VwX2NyZWF0ZWAgaXMgY2FsbGVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhpcyB3aG9sZSB0aGluZywgdG8ga25vdyBhbGwgdGhlIGNhbGxzIHRoYXQgYXJlIHVzaW5nIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozODYwLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTIzVDEwOjQ4OjMzLjQ5OTA1ODkzNVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgzODA4NzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4dDRfeGF0dHJfaW5vZGVfbG9va3VwX2NyZWF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leHQ0L3hhdHRyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXh0NC94YXR0ci5jPTE1NDE9ZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHZvaWQgKnZhbHVlLFxcbi0tXFxuZnMvZXh0NC94YXR0ci5jLTE2MDAtICovXFxuZnMvZXh0NC94YXR0ci5jOjE2MDE6c3RhdGljIHN0cnVjdCBpbm9kZSAqZXh0NF94YXR0cl9pbm9kZV9sb29rdXBfY3JlYXRlKGhhbmRsZV90ICpoYW5kbGUsXFxuZnMvZXh0NC94YXR0ci5jLTE2MDItXFx0XFx0c3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgdm9pZCAqdmFsdWUsIHNpemVfdCB2YWx1ZV9sZW4pXFxuLS1cXG5mcy9leHQ0L3hhdHRyLmM9MTkyMj1leHQ0X3hhdHRyX2Jsb2NrX3NldChoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLFxcbi0tXFxuZnMvZXh0NC94YXR0ci5jLTE5NDItXFxuZnMvZXh0NC94YXR0ci5jOjE5NDM6XFx0XFx0ZWFfaW5vZGUgPSBleHQ0X3hhdHRyX2lub2RlX2xvb2t1cF9jcmVhdGUoaGFuZGxlLCBpbm9kZSxcXG5mcy9leHQ0L3hhdHRyLmMtMTk0NC1cXHRcXHRcXHRcXHRcXHRpLVxcdTAwM2V2YWx1ZSwgaS1cXHUwMDNldmFsdWVfbGVuKTtcXG4tLVxcbmZzL2V4dDQveGF0dHIuYz0yMjc3PWludCBleHQ0X3hhdHRyX2lib2R5X3NldChoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLFxcbi0tXFxuZnMvZXh0NC94YXR0ci5jLTIyOTItXFxuZnMvZXh0NC94YXR0ci5jOjIyOTM6XFx0XFx0ZWFfaW5vZGUgPSBleHQ0X3hhdHRyX2lub2RlX2xvb2t1cF9jcmVhdGUoaGFuZGxlLCBpbm9kZSxcXG5mcy9leHQ0L3hhdHRyLmMtMjI5NC1cXHRcXHRcXHRcXHRcXHRpLVxcdTAwM2V2YWx1ZSwgaS1cXHUwMDNldmFsdWVfbGVuKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDg6MzMuOTgyODc1NTM0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MjE2MzA2MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb246XG5cbioqWGF0dHIgTW9kaWZpY2F0aW9uIFN1bW1hcnkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgZGVhbHMgd2l0aCB0aGUgZXh0NCBmaWxlc3lzdGVtIGFuZCBpdHMgZXh0ZW5kZWQgYXR0cmlidXRlcywgb3IgeGF0dHJzLiBJdCBzZWVtcyBsaWtlIHRoZSBtb2RpZmljYXRpb25zIGFyZSBjZW50ZXJlZCBhcm91bmQgaG93IHRoZXNlIHhhdHRycyBhcmUgaGFuZGxlZCwgc3BlY2lmaWNhbGx5LCB3aXRoaW4gYGV4dDRfeGF0dHJfYmxvY2tfc2V0YCBhbmQgYGV4dDRfeGF0dHJfaWJvZHlfc2V0YCwgd2hpY2ggYXJlIHRoZSBzdGFuZGFyZCBmdW5jdGlvbnMgZm9yIHNldHRpbmcgeGF0dHJzLiBTaW5jZSBpdCdzIHRvdWNoaW5nIHRoZXNlIGZ1bmRhbWVudGFsIHhhdHRyIHNldHRpbmcgZnVuY3Rpb25zLCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgbW9zdCBsaWtlbHkgYENPTkZJR19FWFQ0X0ZTYC4gVGhhdCBtYWtlcyBzZW5zZS5cblxuRXNzZW50aWFsbHksIHRoZSBwYXRjaCBpcyByZXdvcmtpbmcgdGhlIGNhY2hpbmcgYW5kIGxvb2t1cCBzdHJhdGVneSBmb3IgRUEgaW5vZGVzIHdpdGhpbiBleHQ0LiBUaGUga2V5IGNoYW5nZSBpcyB0aGUgcmVwbGFjZW1lbnQgb2YgYGV4dDRfaWdldGAgd2l0aCBgZmluZF9pbm9kZV9ub3dhaXRgLCBhbG9uZyB3aXRoIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYSBjdXN0b20gaW5vZGUgbWF0Y2hpbmcgZnVuY3Rpb24sIGBleHQ0X3hhdHRyX2lub2RlX21hdGNoYC4gU28sIHdlJ3JlIGxvb2tpbmcgYXQgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBhIGNyaXRpY2FsIHBhcnQgb2YgdGhlIGZpbGVzeXN0ZW0uIFNpbmNlIHhhdHRycyBhcmUgYWNjZXNzaWJsZSB2aWEgc3RhbmRhcmQgc3lzY2FsbHMsIHRoaXMgZGVmaW5pdGVseSBzZWVtcyBsaWtlIGEgY29yZSBmaWxlc3lzdGVtIG1vZGlmaWNhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDczOSwiT3V0cHV0VG9rZW5zIjoxMzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjNUMTA6NDg6MzguODA0NTA5MzgzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwNTI2NjU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJFWFQ0X0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZXh0NF94YXR0cl9pbm9kZV9tYXRjaFwiLFxuICAgIFwiZXh0NF94YXR0cl9pbm9kZV9jYWNoZV9maW5kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGV4dDQgZXh0ZW5kZWQgYXR0cmlidXRlICh4YXR0cikgbG9naWMsIHNwZWNpZmljYWxseSB0aGUgY2FjaGluZyBhbmQgbG9va3VwIG9mIEVBIGlub2Rlcy4gSXQgcmVwbGFjZXMgYGV4dDRfaWdldGAgd2l0aCBgZmluZF9pbm9kZV9ub3dhaXRgIGFuZCBhZGRzIGEgY3VzdG9tIGlub2RlIG1hdGNoIGZ1bmN0aW9uIGBleHQ0X3hhdHRyX2lub2RlX21hdGNoYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBmaWxlc3lzdGVtIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIHhhdHRyIHN5c2NhbGxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X3hhdHRyX2lub2RlX21hdGNoXCIsXG4gICAgXCJleHQ0X3hhdHRyX2lub2RlX2NhY2hlX2ZpbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXh0NCBleHRlbmRlZCBhdHRyaWJ1dGUgKHhhdHRyKSBsb2dpYywgc3BlY2lmaWNhbGx5IHRoZSBjYWNoaW5nIGFuZCBsb29rdXAgb2YgRUEgaW5vZGVzLiBJdCByZXBsYWNlcyBgZXh0NF9pZ2V0YCB3aXRoIGBmaW5kX2lub2RlX25vd2FpdGAgYW5kIGFkZHMgYSBjdXN0b20gaW5vZGUgbWF0Y2ggZnVuY3Rpb24gYGV4dDRfeGF0dHJfaW5vZGVfbWF0Y2hgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGZpbGVzeXN0ZW0gdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgeGF0dHIgc3lzY2FsbHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow7nhfw[1] Phase: Succeeded StartedAt: 2026-06-23 10:48:50 +0000 UTC FinishedAt: 2026-06-23 10:48:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7nhfw[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-23 10:48:50 +0000 UTC FinishedAt: 2026-06-23 10:48:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7nhfw[2] Phase: Succeeded StartedAt: 2026-06-23 10:48:50 +0000 UTC FinishedAt: 2026-06-23 14:54:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-23 10:48:50 +0000 UTC FinishedAt: 2026-06-23 14:54:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-23 10:48:50 +0000 UTC FinishedAt: 2026-06-23 10:49:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-23 10:48:50 +0000 UTC FinishedAt: 2026-06-23 10:49:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7nhfw/series-workflow7nhfw-convert-artifact-211484028/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-23 10:49:24 +0000 UTC FinishedAt: 2026-06-23 11:20:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-23 10:49:24 +0000 UTC FinishedAt: 2026-06-23 11:20:35 +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:*a9c8f25c-a5b1-47d7-ab66-a03d732d9105,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-workflow7nhfw/series-workflow7nhfw-convert-artifact-211484028/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": "10e456fa-fa12-4514-b14e-b9cff0a720c8", "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-workflow7nhfw/series-workflow7nhfw-build-action-2403793066/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-23 10:49:24 +0000 UTC FinishedAt: 2026-06-23 11:19:28 +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:*a9c8f25c-a5b1-47d7-ab66-a03d732d9105,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-workflow7nhfw/series-workflow7nhfw-convert-artifact-211484028/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": "10e456fa-fa12-4514-b14e-b9cff0a720c8", "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-workflow7nhfw/series-workflow7nhfw-build-action-2403793066/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-23 11:20:35 +0000 UTC FinishedAt: 2026-06-23 11:20:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-23 11:20:35 +0000 UTC FinishedAt: 2026-06-23 11:20:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-23 11:20:35 +0000 UTC FinishedAt: 2026-06-23 11:20:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-23 11:20:35 +0000 UTC FinishedAt: 2026-06-23 11:20:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow7nhfw/series-workflow7nhfw-convert-artifact-2740566459/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-23 11:20:56 +0000 UTC FinishedAt: 2026-06-23 11:22:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-23 11:20:56 +0000 UTC FinishedAt: 2026-06-23 11:22:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*10e456fa-fa12-4514-b14e-b9cff0a720c8,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-workflow7nhfw/series-workflow7nhfw-build-action-2403793066/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-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-23 11:22:51 +0000 UTC FinishedAt: 2026-06-23 11:22:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-23 11:22:51 +0000 UTC FinishedAt: 2026-06-23 11:22:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-23 11:22:51 +0000 UTC FinishedAt: 2026-06-23 11:50:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-23 11:22:51 +0000 UTC FinishedAt: 2026-06-23 11:50:07 +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:*a9c8f25c-a5b1-47d7-ab66-a03d732d9105,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-workflow7nhfw/series-workflow7nhfw-convert-artifact-2740566459/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": "cb31b66c-8ce9-4875-a513-7aeef2914420", "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-workflow7nhfw/series-workflow7nhfw-build-action-2054304991/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-23 11:22:51 +0000 UTC FinishedAt: 2026-06-23 11:49:41 +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:*a9c8f25c-a5b1-47d7-ab66-a03d732d9105,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-workflow7nhfw/series-workflow7nhfw-convert-artifact-2740566459/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": "cb31b66c-8ce9-4875-a513-7aeef2914420", "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-workflow7nhfw/series-workflow7nhfw-build-action-2054304991/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-23 11:50:07 +0000 UTC FinishedAt: 2026-06-23 11:50:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-23 11:50:07 +0000 UTC FinishedAt: 2026-06-23 11:50:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-23 11:50:07 +0000 UTC FinishedAt: 2026-06-23 11:51:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-23 11:50:07 +0000 UTC FinishedAt: 2026-06-23 11:51:50 +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:*cb31b66c-8ce9-4875-a513-7aeef2914420,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-workflow7nhfw/series-workflow7nhfw-build-action-2054304991/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-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-23 11:51:57 +0000 UTC FinishedAt: 2026-06-23 14:54:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-23 11:51:57 +0000 UTC FinishedAt: 2026-06-23 14:54:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"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:*10e456fa-fa12-4514-b14e-b9cff0a720c8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*cb31b66c-8ce9-4875-a513-7aeef2914420,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-workflow7nhfw/series-workflow7nhfw-build-action-2403793066/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-workflow7nhfw/series-workflow7nhfw-build-action-2054304991/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-23 11:51:57 +0000 UTC FinishedAt: 2026-06-23 11:52:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-23 11:51:57 +0000 UTC FinishedAt: 2026-06-23 11:52:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"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-workflow7nhfw/series-workflow7nhfw-convert-artifact-1469538484/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-23 11:51:57 +0000 UTC FinishedAt: 2026-06-23 11:51:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-23 11:51:57 +0000 UTC FinishedAt: 2026-06-23 11:51:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-23 11:51:57 +0000 UTC FinishedAt: 2026-06-23 11:51:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-23 11:52:07 +0000 UTC FinishedAt: 2026-06-23 14:54:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7nhfw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_xattr_inode_match","ext4_xattr_inode_cache_find"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"502d801f0ab03e4f32f9a33d203154ce84887921","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"db0d0122-74c5-47b9-b7c1-75b9f8f51dad","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-23 11:52:07 +0000 UTC FinishedAt: 2026-06-23 14:53:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*10e456fa-fa12-4514-b14e-b9cff0a720c8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*cb31b66c-8ce9-4875-a513-7aeef2914420,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-workflow7nhfw/series-workflow7nhfw-build-action-2403793066/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-workflow7nhfw/series-workflow7nhfw-build-action-2054304991/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-workflow7nhfw/series-workflow7nhfw-convert-artifact-1469538484/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,}