Name: series-workflowtsxw4 Phase: Succeeded StartedAt: 2026-06-26 02:05:48 +0000 UTC FinishedAt: 2026-06-26 04:01:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtsxw4[0] Phase: Succeeded StartedAt: 2026-06-26 02:05:48 +0000 UTC FinishedAt: 2026-06-26 02:15:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtsxw4[0].run-triage Phase: Succeeded StartedAt: 2026-06-26 02:05:48 +0000 UTC FinishedAt: 2026-06-26 02:15:39 +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": "4edcdefd4083ae04b1a5656f4be6cd83ae919ef4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "4edcdefd4083ae04b1a5656f4be6cd83ae919ef4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "77f8e31f-35e3-41c2-b720-773c02bbfc0f" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "__ntfs_read_iomap_begin" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX250ZnNfcmVhZF9pb21hcF9iZWdpbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBsb2dpYyBpbiBgX19udGZzX3JlYWRfaW9tYXBfYmVnaW5gIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0sIGFkZGluZyBhIG11dGV4IGxvY2sgYXJvdW5kIHJlc2lkZW50IGFuZCBub24tcmVzaWRlbnQgaW9tYXAgYmVnaW4gY2FsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgY29uY3VycmVudCByZWFkcy9zZWVrcyBhbmQgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIGRlYWRsb2NrcyBvciBmaXggcmFjZXMsIG1ha2luZyBpdCBpbXBvcnRhbnQgdG8gZnV6ei4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMjoxNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGRiMmM0ZjczNjg2M2Q1ZTVjYTFmYjZlNWI4NWU5ZGNlM2UyYWVkN2RcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1biAyNiAwMjoxNTowMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9udGZzL2lvbWFwLmMgYi9mcy9udGZzL2lvbWFwLmNcbmluZGV4IDUyZWVjZjVjYjI1NmFhLi41ZjE1YTA0MzJmMGNhZiAxMDA2NDRcbi0tLSBhL2ZzL250ZnMvaW9tYXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvbnRmcy9pb21hcC5jXG5AQCAtMjYzLDExICYjNDM7MjYzLDI2IEBAIHN0YXRpYyBpbnQgX19udGZzX3JlYWRfaW9tYXBfYmVnaW4oc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlXG4gXHRcdHVuc2lnbmVkIGludCBmbGFncywgc3RydWN0IGlvbWFwICppb21hcCwgc3RydWN0IGlvbWFwICpzcmNtYXAsXG4gXHRcdGJvb2wgbmVlZF91bndyaXR0ZW4pXG4ge1xuLVx0aWYgKE5Jbm9Ob25SZXNpZGVudChOVEZTX0koaW5vZGUpKSlcbi1cdFx0cmV0dXJuIG50ZnNfcmVhZF9pb21hcF9iZWdpbl9ub25fcmVzaWRlbnQoaW5vZGUsIG9mZnNldCwgbGVuZ3RoLFxuLVx0XHRcdFx0ZmxhZ3MsIGlvbWFwLCBuZWVkX3Vud3JpdHRlbik7XG4tXHRyZXR1cm4gbnRmc19yZWFkX2lvbWFwX2JlZ2luX3Jlc2lkZW50KGlub2RlLCBvZmZzZXQsIGxlbmd0aCxcbi1cdFx0XHRcdFx0ICAgICBmbGFncywgaW9tYXApO1xuJiM0MztcdHN0cnVjdCBudGZzX2lub2RlICpuaSA9IE5URlNfSShpbm9kZSk7XG4mIzQzO1x0c3RydWN0IG50ZnNfaW5vZGUgKmJhc2VfbmkgPSBOSW5vQXR0cihuaSkgPyBuaS1cdTAwM2VleHQuYmFzZV9udGZzX2lubyA6IG5pO1xuJiM0MztcdGJvb2wgbG9ja19tcmVjID0gTklub0F0dHJMaXN0KGJhc2VfbmkpO1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdGlmIChsb2NrX21yZWMpXG4mIzQzO1x0XHRtdXRleF9sb2NrKFx1MDAyNmJhc2VfbmktXHUwMDNlbXJlY19sb2NrKTtcbiYjNDM7XG4mIzQzO1x0aWYgKE5Jbm9Ob25SZXNpZGVudChuaSkpXG4mIzQzO1x0XHRlcnIgPSBudGZzX3JlYWRfaW9tYXBfYmVnaW5fbm9uX3Jlc2lkZW50KGlub2RlLCBvZmZzZXQsIGxlbmd0aCxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgZmxhZ3MsIGlvbWFwLFxuJiM0MztcdFx0XHRcdFx0XHRcdCBuZWVkX3Vud3JpdHRlbik7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0ZXJyID0gbnRmc19yZWFkX2lvbWFwX2JlZ2luX3Jlc2lkZW50KGlub2RlLCBvZmZzZXQsIGxlbmd0aCxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICBmbGFncywgaW9tYXApO1xuJiM0MztcbiYjNDM7XHRpZiAobG9ja19tcmVjKVxuJiM0MztcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmJhc2VfbmktXHUwMDNlbXJlY19sb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGVycjtcbiB9XG4gXG4gc3RhdGljIGludCBudGZzX3JlYWRfaW9tYXBfYmVnaW4oc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbmd0aCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMjoxNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtOVEZTX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19udGZzX3JlYWRfaW9tYXBfYmVnaW4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tpbmcgbG9naWMgaW4gYF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luYCBpbiB0aGUgTlRGUyBmaWxlc3lzdGVtLCBhZGRpbmcgYSBtdXRleCBsb2NrIGFyb3VuZCByZXNpZGVudCBhbmQgbm9uLXJlc2lkZW50IGlvbWFwIGJlZ2luIGNhbGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIGNvbmN1cnJlbnQgcmVhZHMvc2Vla3MgYW5kIGNvdWxkIHBvdGVudGlhbGx5IGludHJvZHVjZSBkZWFkbG9ja3Mgb3IgZml4IHJhY2VzLCBtYWtpbmcgaXQgaW1wb3J0YW50IHRvIGZ1enouJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGRiMmM0ZjczNjg2M2Q1ZTVjYTFmYjZlNWI4NWU5ZGNlM2UyYWVkN2QKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1biAyNiAwMjoxNTowMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL250ZnMvaW9tYXAuYyBiL2ZzL250ZnMvaW9tYXAuYwppbmRleCA1MmVlY2Y1Y2IyNTZhYS4uNWYxNWEwNDMyZjBjYWYgMTAwNjQ0Ci0tLSBhL2ZzL250ZnMvaW9tYXAuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9udGZzL2lvbWFwLmMKQEAgLTI2MywxMSAmIzQzOzI2MywyNiBAQCBzdGF0aWMgaW50IF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZQogCQl1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCBpb21hcCAqaW9tYXAsIHN0cnVjdCBpb21hcCAqc3JjbWFwLAogCQlib29sIG5lZWRfdW53cml0dGVuKQogewotCWlmIChOSW5vTm9uUmVzaWRlbnQoTlRGU19JKGlub2RlKSkpCi0JCXJldHVybiBudGZzX3JlYWRfaW9tYXBfYmVnaW5fbm9uX3Jlc2lkZW50KGlub2RlLCBvZmZzZXQsIGxlbmd0aCwKLQkJCQlmbGFncywgaW9tYXAsIG5lZWRfdW53cml0dGVuKTsKLQlyZXR1cm4gbnRmc19yZWFkX2lvbWFwX2JlZ2luX3Jlc2lkZW50KGlub2RlLCBvZmZzZXQsIGxlbmd0aCwKLQkJCQkJICAgICBmbGFncywgaW9tYXApOwomIzQzOwlzdHJ1Y3QgbnRmc19pbm9kZSAqbmkgPSBOVEZTX0koaW5vZGUpOwomIzQzOwlzdHJ1Y3QgbnRmc19pbm9kZSAqYmFzZV9uaSA9IE5Jbm9BdHRyKG5pKSA/IG5pLSZndDtleHQuYmFzZV9udGZzX2lubyA6IG5pOwomIzQzOwlib29sIGxvY2tfbXJlYyA9IE5Jbm9BdHRyTGlzdChiYXNlX25pKTsKJiM0MzsJaW50IGVycjsKJiM0MzsKJiM0MzsJaWYgKGxvY2tfbXJlYykKJiM0MzsJCW11dGV4X2xvY2soJmFtcDtiYXNlX25pLSZndDttcmVjX2xvY2spOwomIzQzOwomIzQzOwlpZiAoTklub05vblJlc2lkZW50KG5pKSkKJiM0MzsJCWVyciA9IG50ZnNfcmVhZF9pb21hcF9iZWdpbl9ub25fcmVzaWRlbnQoaW5vZGUsIG9mZnNldCwgbGVuZ3RoLAomIzQzOwkJCQkJCQkgZmxhZ3MsIGlvbWFwLAomIzQzOwkJCQkJCQkgbmVlZF91bndyaXR0ZW4pOwomIzQzOwllbHNlCiYjNDM7CQllcnIgPSBudGZzX3JlYWRfaW9tYXBfYmVnaW5fcmVzaWRlbnQoaW5vZGUsIG9mZnNldCwgbGVuZ3RoLAomIzQzOwkJCQkJCSAgICAgZmxhZ3MsIGlvbWFwKTsKJiM0MzsKJiM0MzsJaWYgKGxvY2tfbXJlYykKJiM0MzsJCW11dGV4X3VubG9jaygmYW1wO2Jhc2VfbmktJmd0O21yZWNfbG9jayk7CiYjNDM7CiYjNDM7CXJldHVybiBlcnI7CiB9CiAKIHN0YXRpYyBpbnQgbnRmc19yZWFkX2lvbWFwX2JlZ2luKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW5ndGgsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNTUKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOVEZTIElPTUFQIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0d2Vha2luZyBgZnMvbnRmcy9pb21hcC5jYC4gU3BlY2lmaWNhbGx5LCB0aGUgY2hhbmdlIGlzIGFyb3VuZCB0aGUgYF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luYCBmdW5jdGlvbi4gSXQgc2VlbXMgdGhleSYjMzk7dmUgYWRkZWQgYSBgbXV0ZXhfbG9jaygmYW1wO2Jhc2VfbmktJmd0O21yZWNfbG9jaylgIGFyb3VuZCBjYWxscyB0byBgbnRmc19yZWFkX2lvbWFwX2JlZ2luX25vbl9yZXNpZGVudGAgYW5kIGBudGZzX3JlYWRfaW9tYXBfYmVnaW5fcmVzaWRlbnRgLiBSaWdodCBhd2F5LCBJIHNlZSB0aGlzIGFzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24g4oCTIHdlJiMzOTtyZSBjaGFuZ2luZyB0aGUgbG9ja2luZyBzdHJhdGVneSBoZXJlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCBkb2VzIHRoaXMgb3BlbiB1cCBhbnkgbmV3IGZ1enppbmcgcG9zc2liaWxpdGllcz8gQXJlIHRoZXJlIG5vdyByYWNlIGNvbmRpdGlvbnMgdGhhdCBkaWRuJiMzOTt0IGV4aXN0IGJlZm9yZT8mIzM0OyBJIG5lZWQgdG8gdmVyaWZ5IGlmIE5URlMgaXMgZXZlbiBmdXp6YWJsZSBhbmQgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGVuYWJsZSBmdXp6aW5nIGZvciBpdC4gVGltZSB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZm9yIE5URlMgYW5kIHNlZSB3aGF0IHdlJiMzOTtyZSB3b3JraW5nIHdpdGguIEdvdHRhIGNoZWNrIGBmcy9udGZzL2lvbWFwLmNgIHRvIGNvbmZpcm0gdGhlIGZpbGUgYW5kIGxvY2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBOVEZTX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvbnRmcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL250ZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvbnRmcy9LY29uZmlnOjI6Y29uZmlnIE5URlNfRlNcbmZzL250ZnMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMvbnRmcy9LY29uZmlnPTEzPWNvbmZpZyBOVEZTX0RFQlVHXG4tLVxuZnMvbnRmcy9LY29uZmlnLTM0LVxuZnMvbnRmcy9LY29uZmlnOjM1OmNvbmZpZyBOVEZTX0ZTX1BPU0lYX0FDTFxuZnMvbnRmcy9LY29uZmlnLTM2LVx0Ym9vbCBcJiMzNDtOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDI6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY5OAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTlRGUyBSZWFkIElPTUFQIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaXMgY2xlYXJseSBkZWFsaW5nIHdpdGggYE5URlNfRlNgLiBNeSBmb2N1cyBub3cgc2hpZnRzIHRvIGhvdyByZWFkIG9wZXJhdGlvbnMgYXJlIGhhbmRsZWQsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIElPTUFQIGZyYW1ld29yayBmb3IgdGhpcyBmaWxlc3lzdGVtLiBUaGUgZnVuY3Rpb24gaW4gcXVlc3Rpb24gaXMgYF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuIEl0JiMzOTtzIHBhcnQgb2YgdGhlIGlvbWFwIG9wZXJhdGlvbnMgZm9yIE5URlMuCgpMZXQmIzM5O3MgcXVpY2tseSB2ZXJpZnkgaXRzIHJlYWNoYWJpbGl0eSB3aXRoaW4gdGhlIGNvZGViYXNlLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gaXRzIGRlZmluaXRpb24gYW5kIHVzYWdlLiBBIHF1aWNrIHNlYXJjaCBvZiBgZnMvbnRmcy9pb21hcC5jYCBzaG91bGQgcmV2ZWFsIHRoZSBkZWZpbml0aXZlIHNvdXJjZSBjb2RlIGZvciBgX19udGZzX3JlYWRfaW9tYXBfYmVnaW5gLCBhbGxvd2luZyBtZSB0byBkaXNzZWN0IGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgYnJvYWRlciBOVEZTIElPTUFQIGltcGxlbWVudGF0aW9uLiBUaGlzIHNob3VsZCBwcm92aWRlIHRoZSBpbmZvcm1hdGlvbiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHBhcnQgb2YgdGhlIHJlYWQgb3BlcmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fbnRmc19yZWFkX2lvbWFwX2JlZ2luJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvbnRmcy9pb21hcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL250ZnMvaW9tYXAuYz0xODU9c3RhdGljIGludCBudGZzX3JlYWRfaW9tYXBfYmVnaW5fbm9uX3Jlc2lkZW50KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsXG4tLVxuZnMvbnRmcy9pb21hcC5jLTI2MS1cbmZzL250ZnMvaW9tYXAuYzoyNjI6c3RhdGljIGludCBfX250ZnNfcmVhZF9pb21hcF9iZWdpbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuZ3RoLFxuZnMvbnRmcy9pb21hcC5jLTI2My1cdFx0dW5zaWduZWQgaW50IGZsYWdzLCBzdHJ1Y3QgaW9tYXAgKmlvbWFwLCBzdHJ1Y3QgaW9tYXAgKnNyY21hcCxcbi0tXG5mcy9udGZzL2lvbWFwLmM9Mjg4PXN0YXRpYyBpbnQgbnRmc19yZWFkX2lvbWFwX2JlZ2luKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW5ndGgsXG4tLVxuZnMvbnRmcy9pb21hcC5jLTI5MC17XG5mcy9udGZzL2lvbWFwLmM6MjkxOlx0cmV0dXJuIF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luKGlub2RlLCBvZmZzZXQsIGxlbmd0aCwgZmxhZ3MsIGlvbWFwLFxuZnMvbnRmcy9pb21hcC5jLTI5Mi1cdFx0XHRzcmNtYXAsIHRydWUpO1xuLS1cbmZzL250ZnMvaW9tYXAuYz0zMzI9c3RhdGljIGludCBudGZzX3NlZWtfaW9tYXBfYmVnaW4oc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbmd0aCxcbi0tXG5mcy9udGZzL2lvbWFwLmMtMzM0LXtcbmZzL250ZnMvaW9tYXAuYzozMzU6XHRyZXR1cm4gX19udGZzX3JlYWRfaW9tYXBfYmVnaW4oaW5vZGUsIG9mZnNldCwgbGVuZ3RoLCBmbGFncywgaW9tYXAsXG5mcy9udGZzL2lvbWFwLmMtMzM2LVx0XHRcdHNyY21hcCwgZmFsc2UpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MzAKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgTlRGUyBJL08gTWFwcGluZyBGdW5jdGlvbnMqKgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBJIHNlZSB3ZSYjMzk7cmUgbG9va2luZyBhdCBgbnRmc19yZWFkX2lvbWFwX2JlZ2luYCBhbmQgYG50ZnNfc2Vla19pb21hcF9iZWdpbmAuIENsZWFybHksIHRoZXNlIGFyZSBlbnRyeSBwb2ludHMgZm9yIHNvbWUgY3J1Y2lhbCBJL08gbWFwcGluZyBvcGVyYXRpb25zIHdpdGhpbiB0aGUgTlRGUyBmaWxlc3lzdGVtIGNvZGUuIFRoZSBuYW1lcyBhcmUgcHJldHR5IHNlbGYtZXhwbGFuYXRvcnksIHN1Z2dlc3RpbmcgdGhleSYjMzk7cmUgaW52b2x2ZWQgaW4gaW5pdGlhdGluZyBlaXRoZXIgcmVhZCBvciBzZWVrIG9wZXJhdGlvbnMsIHByb2JhYmx5IGRlYWxpbmcgd2l0aCB0aGUgdHJhbnNsYXRpb24gYmV0d2VlbiBsb2dpY2FsIG9mZnNldHMgd2l0aGluIGEgZmlsZSBhbmQgcGh5c2ljYWwgZGlzayBsb2NhdGlvbnMuCgpNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dHMgaW4gd2hpY2ggdGhlc2UgZnVuY3Rpb25zIGFyZSBpbnZva2VkLiBLbm93aW5nIHRoZSBjYWxsZXJzIHdpbGwgdGVsbCBtZSBhIGxvdCBhYm91dCB0aGVpciBpbnRlbmRlZCB1c2U6IEFyZSB3ZSB0YWxraW5nIGFib3V0IGRpcmVjdCBJL08sIGJ1ZmZlcmVkIEkvTywgb3Igc29tZXRoaW5nIG1vcmUgc3BlY2lhbGl6ZWQ/IEFyZSB0aGVzZSB1c2VkIHByaW1hcmlseSBieSB0aGUga2VybmVsJiMzOTtzIGZpbGUgc3lzdGVtIGNvZGUgaXRzZWxmLCBvciBkbyB0aGV5IGludGVyZmFjZSBkaXJlY3RseSB3aXRoIHVzZXItc3BhY2UgYXBwbGljYXRpb25zIHRocm91Z2ggYSBzdGFuZGFyZCBBUEk/IFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIGJlIGNyaXRpY2FsIHRvIGdyYXNwaW5nIHRoZSBvdmVyYWxsIEkvTyBzdHJhdGVneSBhbmQgaG93IHRoZSBmaWxlIHN5c3RlbSBpbnRlcmFjdHMgd2l0aCB0aGUgc3RvcmFnZSBsYXllci4gU28sIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgdXNlIHNpdGVzIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O250ZnNfcmVhZF9pb21hcF9iZWdpbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvaW9tYXAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9udGZzL2lvbWFwLmM9Nzk9Y29uc3Qgc3RydWN0IGlvbWFwX3dyaXRlX29wcyBudGZzX2lvbWFwX2ZvbGlvX29wcyA9IHtcbi0tXG5mcy9udGZzL2lvbWFwLmMtODItXG5mcy9udGZzL2lvbWFwLmM6ODM6c3RhdGljIGludCBudGZzX3JlYWRfaW9tYXBfYmVnaW5fcmVzaWRlbnQoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbmd0aCxcbmZzL250ZnMvaW9tYXAuYy04NC1cdFx0dW5zaWduZWQgaW50IGZsYWdzLCBzdHJ1Y3QgaW9tYXAgKmlvbWFwKVxuLS1cbmZzL250ZnMvaW9tYXAuYy0xNDQtLypcbmZzL250ZnMvaW9tYXAuYzoxNDU6ICogbnRmc19yZWFkX2lvbWFwX2JlZ2luX25vbl9yZXNpZGVudCAtIG1hcCBub24tcmVzaWRlbnQgTlRGUyBmaWxlIGRhdGFcbmZzL250ZnMvaW9tYXAuYy0xNDYtICogQGlub2RlOlx0XHRpbm9kZSB0byBtYXBcbi0tXG5mcy9udGZzL2lvbWFwLmMtMTg0LSAqL1xuZnMvbnRmcy9pb21hcC5jOjE4NTpzdGF0aWMgaW50IG50ZnNfcmVhZF9pb21hcF9iZWdpbl9ub25fcmVzaWRlbnQoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IG9mZnNldCxcbmZzL250ZnMvaW9tYXAuYy0xODYtXHRcdGxvZmZfdCBsZW5ndGgsIHVuc2lnbmVkIGludCBmbGFncywgc3RydWN0IGlvbWFwICppb21hcCxcbi0tXG5mcy9udGZzL2lvbWFwLmMtMjYxLVxuZnMvbnRmcy9pb21hcC5jOjI2MjpzdGF0aWMgaW50IF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW5ndGgsXG5mcy9udGZzL2lvbWFwLmMtMjYzLVx0XHR1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCBpb21hcCAqaW9tYXAsIHN0cnVjdCBpb21hcCAqc3JjbWFwLFxuLS1cbmZzL250ZnMvaW9tYXAuYy0yNzQtXHRpZiAoTklub05vblJlc2lkZW50KG5pKSlcbmZzL250ZnMvaW9tYXAuYzoyNzU6XHRcdGVyciA9IG50ZnNfcmVhZF9pb21hcF9iZWdpbl9ub25fcmVzaWRlbnQoaW5vZGUsIG9mZnNldCwgbGVuZ3RoLFxuZnMvbnRmcy9pb21hcC5jLTI3Ni1cdFx0XHRcdFx0XHRcdCBmbGFncywgaW9tYXAsXG4tLVxuZnMvbnRmcy9pb21hcC5jLTI3OC1cdGVsc2VcbmZzL250ZnMvaW9tYXAuYzoyNzk6XHRcdGVyciA9IG50ZnNfcmVhZF9pb21hcF9iZWdpbl9yZXNpZGVudChpbm9kZSwgb2Zmc2V0LCBsZW5ndGgsXG5mcy9udGZzL2lvbWFwLmMtMjgwLVx0XHRcdFx0XHRcdCAgICAgZmxhZ3MsIGlvbWFwKTtcbi0tXG5mcy9udGZzL2lvbWFwLmMtMjg3LVxuZnMvbnRmcy9pb21hcC5jOjI4ODpzdGF0aWMgaW50IG50ZnNfcmVhZF9pb21hcF9iZWdpbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuZ3RoLFxuZnMvbnRmcy9pb21hcC5jLTI4OS1cdFx0dW5zaWduZWQgaW50IGZsYWdzLCBzdHJ1Y3QgaW9tYXAgKmlvbWFwLCBzdHJ1Y3QgaW9tYXAgKnNyY21hcClcbmZzL250ZnMvaW9tYXAuYy0yOTAte1xuZnMvbnRmcy9pb21hcC5jOjI5MTpcdHJldHVybiBfX250ZnNfcmVhZF9pb21hcF9iZWdpbihpbm9kZSwgb2Zmc2V0LCBsZW5ndGgsIGZsYWdzLCBpb21hcCxcbmZzL250ZnMvaW9tYXAuYy0yOTItXHRcdFx0c3JjbWFwLCB0cnVlKTtcbi0tXG5mcy9udGZzL2lvbWFwLmM9Mjk1PWNvbnN0IHN0cnVjdCBpb21hcF9vcHMgbnRmc19yZWFkX2lvbWFwX29wcyA9IHtcbmZzL250ZnMvaW9tYXAuYzoyOTY6XHQuaW9tYXBfYmVnaW4gPSBudGZzX3JlYWRfaW9tYXBfYmVnaW4sXG5mcy9udGZzL2lvbWFwLmMtMjk3LX07XG4tLVxuZnMvbnRmcy9pb21hcC5jPTMzMj1zdGF0aWMgaW50IG50ZnNfc2Vla19pb21hcF9iZWdpbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuZ3RoLFxuLS1cbmZzL250ZnMvaW9tYXAuYy0zMzQte1xuZnMvbnRmcy9pb21hcC5jOjMzNTpcdHJldHVybiBfX250ZnNfcmVhZF9pb21hcF9iZWdpbihpbm9kZSwgb2Zmc2V0LCBsZW5ndGgsIGZsYWdzLCBpb21hcCxcbmZzL250ZnMvaW9tYXAuYy0zMzYtXHRcdFx0c3JjbWFwLCBmYWxzZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDI6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc2MAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyB0aGUgcGVyc3BlY3RpdmUgb2Ygc29tZW9uZSBkZWVwbHkgZmFtaWxpYXIgd2l0aCBmaWxlIHN5c3RlbSBpbnRlcm5hbHM6CgoqKkludmVzdGlnYXRpbmcgTlRGUyBJL08gT3BlcmF0aW9ucyoqCgpSaWdodCwgc28gSSYjMzk7bSBwcmV0dHkgc3VyZSBgbnRmc19yZWFkX2lvbWFwX29wc2AgYW5kIGBudGZzX3NlZWtfaW9tYXBfb3BzYCBhcmUgY3J1Y2lhbCBmb3IgaGFuZGxpbmcgSS9PIHdpdGhpbiB0aGUgTlRGUyBmaWxlIHN5c3RlbS4gSSYjMzk7bSBnb2luZyB0byBiZXQgdGhleSB1c2Ugd2hhdGV2ZXIgdGhpcyAmIzM0O2l0JiMzNDsgaXMuIEkgc2hvdWxkIGRlZmluaXRlbHkgY29uZmlybSB0aGF0IGFzc3VtcHRpb24uIFRoZSBxdWlja2VzdCB3YXkgdG8gdW5kZXJzdGFuZCB0aGVpciByb2xlLCBhbmQgaG93ICYjMzQ7aXQmIzM0OyBmaXRzIGluLCBpcyB0byB0cmFjZSB0aGVpciB1c2FnZS4gTGV0IG1lIHN0YXJ0IGJ5IGxvb2tpbmcgZm9yIHdoZXJlIGBudGZzX3JlYWRfaW9tYXBfb3BzYCBpcyBhY3R1YWxseSBjYWxsZWQgd2l0aGluIHRoZSBjb2RlLiBUaGF0IHdpbGwgcXVpY2tseSBjbGFyaWZ5IHRoZSBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudGZzX3JlYWRfaW9tYXBfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvbnRmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9hb3BzLmM9NzA9c3RhdGljIGludCBudGZzX3JlYWRfZm9saW8oc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxuZnMvbnRmcy9hb3BzLmMtOTktXG5mcy9udGZzL2FvcHMuYzoxMDA6XHRpb21hcF9yZWFkX2ZvbGlvKFx1MDAyNm50ZnNfcmVhZF9pb21hcF9vcHMsIFx1MDAyNmN0eCwgTlVMTCk7XG5mcy9udGZzL2FvcHMuYy0xMDEtXHRyZXR1cm4gMDtcbi0tXG5mcy9udGZzL2FvcHMuYz0yMjU9c3RhdGljIHZvaWQgbnRmc19yZWFkYWhlYWQoc3RydWN0IHJlYWRhaGVhZF9jb250cm9sICpyYWMpXG4tLVxuZnMvbnRmcy9hb3BzLmMtMjQwLVx0XHRyZXR1cm47XG5mcy9udGZzL2FvcHMuYzoyNDE6XHRpb21hcF9yZWFkYWhlYWQoXHUwMDI2bnRmc19yZWFkX2lvbWFwX29wcywgXHUwMDI2Y3R4LCBOVUxMKTtcbmZzL250ZnMvYW9wcy5jLTI0Mi19XG4tLVxuZnMvbnRmcy9hb3BzLmM9MjczPXN0YXRpYyBpbnQgbnRmc19zd2FwX2FjdGl2YXRlKHN0cnVjdCBzd2FwX2luZm9fc3RydWN0ICpzaXMsXG4tLVxuZnMvbnRmcy9hb3BzLmMtMjc2LVx0cmV0dXJuIGlvbWFwX3N3YXBmaWxlX2FjdGl2YXRlKHNpcywgc3dhcF9maWxlLCBzcGFuLFxuZnMvbnRmcy9hb3BzLmM6Mjc3Olx0XHRcdFx1MDAyNm50ZnNfcmVhZF9pb21hcF9vcHMpO1xuZnMvbnRmcy9hb3BzLmMtMjc4LX1cbi0tXG5mcy9udGZzL2ZpbGUuYz00Mzg9c3RhdGljIHNzaXplX3QgbnRmc19maWxlX3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXG4tLVxuZnMvbnRmcy9maWxlLmMtNDYwLVx0XHRmaWxlX2FjY2Vzc2VkKGlvY2ItXHUwMDNla2lfZmlscCk7XG5mcy9udGZzL2ZpbGUuYzo0NjE6XHRcdHJldCA9IGlvbWFwX2Rpb19ydyhpb2NiLCB0bywgXHUwMDI2bnRmc19yZWFkX2lvbWFwX29wcywgTlVMTCwgMCxcbmZzL250ZnMvZmlsZS5jLTQ2Mi1cdFx0XHRcdE5VTEwsIDApO1xuLS1cbmZzL250ZnMvZmlsZS5jPTY3MD1zdGF0aWMgaW50IG50ZnNfZmllbWFwKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWVtYXBfZXh0ZW50X2luZm8gKmZpZWluZm8sXG4tLVxuZnMvbnRmcy9maWxlLmMtNjcyLXtcbmZzL250ZnMvZmlsZS5jOjY3MzpcdHJldHVybiBpb21hcF9maWVtYXAoaW5vZGUsIGZpZWluZm8sIHN0YXJ0LCBsZW4sIFx1MDAyNm50ZnNfcmVhZF9pb21hcF9vcHMpO1xuZnMvbnRmcy9maWxlLmMtNjc0LX1cbi0tXG5mcy9udGZzL2lvbWFwLmM9Mjg4PXN0YXRpYyBpbnQgbnRmc19yZWFkX2lvbWFwX2JlZ2luKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW5ndGgsXG4tLVxuZnMvbnRmcy9pb21hcC5jLTI5NC1cbmZzL250ZnMvaW9tYXAuYzoyOTU6Y29uc3Qgc3RydWN0IGlvbWFwX29wcyBudGZzX3JlYWRfaW9tYXBfb3BzID0ge1xuZnMvbnRmcy9pb21hcC5jLTI5Ni1cdC5pb21hcF9iZWdpbiA9IG50ZnNfcmVhZF9pb21hcF9iZWdpbixcbi0tXG5mcy9udGZzL2lvbWFwLmg9MTU9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBpb21hcF9vcHMgbnRmc193cml0ZV9pb21hcF9vcHM7XG5mcy9udGZzL2lvbWFwLmg6MTY6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBpb21hcF9vcHMgbnRmc19yZWFkX2lvbWFwX29wcztcbmZzL250ZnMvaW9tYXAuaC0xNy1leHRlcm4gY29uc3Qgc3RydWN0IGlvbWFwX29wcyBudGZzX3NlZWtfaW9tYXBfb3BzO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODQzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBOVEZTIEkvTyBPcGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IHNlZSB0aGlzIGZ1bmN0aW9uIGlzIGFjdGl2ZWx5IHVzZWQgYWNyb3NzIHNldmVyYWwga2V5IE5URlMgb3BlcmF0aW9uczogYG50ZnNfcmVhZF9mb2xpb2AsIGBudGZzX3JlYWRhaGVhZGAsIGBudGZzX3N3YXBfYWN0aXZhdGVgLCBgbnRmc19maWxlX3JlYWRfaXRlcmAsIGFuZCBgbnRmc19maWVtYXBgLiBUaGF0JiMzOTtzIGEgc3Ryb25nIGluZGljYXRpb24gdGhhdCBpdCYjMzk7cyBjcnVjaWFsIGFuZCBkZWZpbml0ZWx5IHJlYWNoYWJsZSBkdXJpbmcgbm9ybWFsIGZpbGUgc3lzdGVtIG9wZXJhdGlvbi4gSSYjMzk7bSBzZWVpbmcgYE5URlNfRlNgIGxpc3RlZCBhcyB0aGUgcmVxdWlyZWQgY29uZmlndXJhdGlvbiBvcHRpb24sIHdoaWNoIG1ha2VzIHNlbnNlLiBNeSBmb2N1cyBub3cgaXMgb24gdGhlc2Ugc3ltYm9sczogYF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luYCwgYG50ZnNfcmVhZF9pb21hcF9iZWdpbmAsIGFuZCBgbnRmc19zZWVrX2lvbWFwX2JlZ2luYC4gQWgsIHJpZ2h0LCBgX19udGZzX3JlYWRfaW9tYXBfYmVnaW5gIGlzIHRoZSBvbmUgdGhhdCB3YXMgbW9kaWZpZWQuCgpMZXQmIzM5O3MgcXVpY2tseSB2ZXJpZnkgdGhhdCBgTlRGU19GU2AgaXMgdGhlICpvbmx5KiBkZXBlbmRlbmN5LiBTZWVtcyBsaWtlIHRoZSBwcmltYXJ5IGNvbmZpZy4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkmIzM5O2xsIGNyb3NzLXJlZmVyZW5jZSB0aGUgc291cmNlIGZpbGVzLiBPa2F5LCBgZnMvbnRmcy9pb21hcC5jYCBpcyBvbmx5IGNvbXBpbGVkIHdoZW4gYENPTkZJR19OVEZTX0ZTYCBpcyBlbmFibGVkLCB3aGljaCByZWNvbmZpcm1zIHRoZSBwcmltYXJ5IGRlcGVuZGVuY3kuIEdvb2QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lvbWFwLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL250ZnMvTWFrZWZpbGU9NT1udGZzLXkgOj0gYW9wcy5vIGF0dHJpYi5vIGNvbGxhdGUubyBkaXIubyBmaWxlLm8gaW5kZXgubyBpbm9kZS5vIFxcXG4tLVxuZnMvbnRmcy9NYWtlZmlsZS03LVx0ICB1cGNhc2UubyBiaXRtYXAubyBsY25hbGxvYy5vIGxvZ2ZpbGUubyByZXBhcnNlLm8gY29tcHJlc3MubyBcXFxuZnMvbnRmcy9NYWtlZmlsZTo4Olx0ICBpb21hcC5vIGRlYnVnLm8gc3lzY3RsLm8gb2JqZWN0X2lkLm8gYmRldi1pby5vXG5mcy9udGZzL01ha2VmaWxlLTktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0ODIKCQkJCQkJCW91dHB1dDogMTE5CgkJCQkJCQl0aG91Z2h0czogMjg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE5URlMgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGNvbmZpcm1pbmcgbXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nLiBZZXMsIGBpb21hcC5vYCBpcyBkZWZpbml0ZWx5IHBhcnQgb2YgYG50ZnMteWAsIGFuZCB0aGVyZWZvcmUgYE5URlNfRlNgIGlzIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBoYWQgYSBtb21lbnRhcnkgZmxpY2tlciBvZiBkb3VidCBhYm91dCBgTlRGU19GU2AgYmVpbmcgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBgTlRGUzNfRlNgLCBidXQgdGhlIHByZXNlbmNlIG9mIGBmcy9udGZzYCBwdXRzIHRoYXQgdG8gcmVzdC4gVGhlIHBhdGNoIGNsZWFybHkgbW9kaWZpZXMgYGZzL250ZnMvaW9tYXAuY2AsIHNvIGBOVEZTX0ZTYCBpdCBpcy4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgZm9jdXMgc3ltYm9scy4gYF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luYCwgYG50ZnNfcmVhZF9pb21hcF9iZWdpbmAsIGFuZCBgbnRmc19zZWVrX2lvbWFwX2JlZ2luYCBhcmUgdGhlIG9uZXMgdG8ga2VlcCBhbiBleWUgb24uIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgX19udGZzX3JlYWRfaW9tYXBfYmVnaW5gIGlzIHN0YXRpYyB0byBjb25maXJtIGl0JiMzOTtzIHRoZSBjb3JyZWN0IHN5bWJvbC4gQWxyaWdodCwgaXQgaXMgc3RhdGljLiBUaGF04oCZcyBnb29kOyBub3cgSeKAmW0gc3VyZSBJ4oCZbSBvbiB0aGUgcmlnaHQgdHJhY2suCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc3ludGhlc2l6ZSBteSBmaW5kaW5ncy4gVGhlIHN5c3RlbSBuZWVkcyB0byBiZSBtYXJrZWQgYXMgd29ydGggZnV6emluZywgYW5kIHRoZSBhcHByb3ByaWF0ZSBjb25maWcgb3B0aW9uIGlzIGBOVEZTX0ZTYC4gVGhlIGNyaXRpY2FsIGZvY3VzIHN5bWJvbCBpcyBgX19udGZzX3JlYWRfaW9tYXBfYmVnaW5gLiBNeSByZWFzb25pbmcgaXMgdGhhdCB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSBsb2NraW5nIGxvZ2ljIHdpdGhpbiBgX19udGZzX3JlYWRfaW9tYXBfYmVnaW5gIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0sIHNvIGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBkaXJlY3RseSBpbXBhY3RzIGNvbmN1cnJlbnQgcmVhZC9zZWVrIG9wZXJhdGlvbnMuIFRoaXMga2luZCBvZiBtb2RpZmljYXRpb24gaGFzIHRoZSBwb3RlbnRpYWwgdG8gaW50cm9kdWNlIGRlYWRsb2NrcyBvciBmaXggcmFjZSBjb25kaXRpb25zLCBtYWtpbmcgaXQgYW4gZXhjZWxsZW50IGNhbmRpZGF0ZSBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDI6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX250ZnNfcmVhZF9pb21hcF9iZWdpbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBsb2dpYyBpbiBgX19udGZzX3JlYWRfaW9tYXBfYmVnaW5gIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0sIGFkZGluZyBhIG11dGV4IGxvY2sgYXJvdW5kIHJlc2lkZW50IGFuZCBub24tcmVzaWRlbnQgaW9tYXAgYmVnaW4gY2FsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgY29uY3VycmVudCByZWFkcy9zZWVrcyBhbmQgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIGRlYWRsb2NrcyBvciBmaXggcmFjZXMsIG1ha2luZyBpdCBpbXBvcnRhbnQgdG8gZnV6ei4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TlRGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fbnRmc19yZWFkX2lvbWFwX2JlZ2luJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIGxvZ2ljIGluIGBfX250ZnNfcmVhZF9pb21hcF9iZWdpbmAgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSwgYWRkaW5nIGEgbXV0ZXggbG9jayBhcm91bmQgcmVzaWRlbnQgYW5kIG5vbi1yZXNpZGVudCBpb21hcCBiZWdpbiBjYWxscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBjb25jdXJyZW50IHJlYWRzL3NlZWtzIGFuZCBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgZGVhZGxvY2tzIG9yIGZpeCByYWNlcywgbWFraW5nIGl0IGltcG9ydGFudCB0byBmdXp6LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDI6MTU6MDIuMzQ3NDY4MjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjM4MDgwMjUyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOVEZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19udGZzX3JlYWRfaW9tYXBfYmVnaW5cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBsb2dpYyBpbiBgX19udGZzX3JlYWRfaW9tYXBfYmVnaW5gIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0sIGFkZGluZyBhIG11dGV4IGxvY2sgYXJvdW5kIHJlc2lkZW50IGFuZCBub24tcmVzaWRlbnQgaW9tYXAgYmVnaW4gY2FsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgY29uY3VycmVudCByZWFkcy9zZWVrcyBhbmQgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIGRlYWRsb2NrcyBvciBmaXggcmFjZXMsIG1ha2luZyBpdCBpbXBvcnRhbnQgdG8gZnV6ei5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDI6MTU6MDIuMzQ3NDc0NjNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMTM5NTU4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGRiMmM0ZjczNjg2M2Q1ZTVjYTFmYjZlNWI4NWU5ZGNlM2UyYWVkN2RcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdW4gMjYgMDI6MTU6MDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvbnRmcy9pb21hcC5jIGIvZnMvbnRmcy9pb21hcC5jXFxuaW5kZXggNTJlZWNmNWNiMjU2YWEuLjVmMTVhMDQzMmYwY2FmIDEwMDY0NFxcbi0tLSBhL2ZzL250ZnMvaW9tYXAuY1xcbisrKyBiL2ZzL250ZnMvaW9tYXAuY1xcbkBAIC0yNjMsMTEgKzI2MywyNiBAQCBzdGF0aWMgaW50IF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZVxcbiBcXHRcXHR1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCBpb21hcCAqaW9tYXAsIHN0cnVjdCBpb21hcCAqc3JjbWFwLFxcbiBcXHRcXHRib29sIG5lZWRfdW53cml0dGVuKVxcbiB7XFxuLVxcdGlmIChOSW5vTm9uUmVzaWRlbnQoTlRGU19JKGlub2RlKSkpXFxuLVxcdFxcdHJldHVybiBudGZzX3JlYWRfaW9tYXBfYmVnaW5fbm9uX3Jlc2lkZW50KGlub2RlLCBvZmZzZXQsIGxlbmd0aCxcXG4tXFx0XFx0XFx0XFx0ZmxhZ3MsIGlvbWFwLCBuZWVkX3Vud3JpdHRlbik7XFxuLVxcdHJldHVybiBudGZzX3JlYWRfaW9tYXBfYmVnaW5fcmVzaWRlbnQoaW5vZGUsIG9mZnNldCwgbGVuZ3RoLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgIGZsYWdzLCBpb21hcCk7XFxuK1xcdHN0cnVjdCBudGZzX2lub2RlICpuaSA9IE5URlNfSShpbm9kZSk7XFxuK1xcdHN0cnVjdCBudGZzX2lub2RlICpiYXNlX25pID0gTklub0F0dHIobmkpID8gbmktXFx1MDAzZWV4dC5iYXNlX250ZnNfaW5vIDogbmk7XFxuK1xcdGJvb2wgbG9ja19tcmVjID0gTklub0F0dHJMaXN0KGJhc2VfbmkpO1xcbitcXHRpbnQgZXJyO1xcbitcXG4rXFx0aWYgKGxvY2tfbXJlYylcXG4rXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2YmFzZV9uaS1cXHUwMDNlbXJlY19sb2NrKTtcXG4rXFxuK1xcdGlmIChOSW5vTm9uUmVzaWRlbnQobmkpKVxcbitcXHRcXHRlcnIgPSBudGZzX3JlYWRfaW9tYXBfYmVnaW5fbm9uX3Jlc2lkZW50KGlub2RlLCBvZmZzZXQsIGxlbmd0aCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0IGZsYWdzLCBpb21hcCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0IG5lZWRfdW53cml0dGVuKTtcXG4rXFx0ZWxzZVxcbitcXHRcXHRlcnIgPSBudGZzX3JlYWRfaW9tYXBfYmVnaW5fcmVzaWRlbnQoaW5vZGUsIG9mZnNldCwgbGVuZ3RoLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIGZsYWdzLCBpb21hcCk7XFxuK1xcbitcXHRpZiAobG9ja19tcmVjKVxcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmJhc2VfbmktXFx1MDAzZW1yZWNfbG9jayk7XFxuK1xcbitcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IG50ZnNfcmVhZF9pb21hcF9iZWdpbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuZ3RoLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMjoxNTowMi44Nzk1NTc1NDZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1ODQ4NzAzMTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5URlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX250ZnNfcmVhZF9pb21hcF9iZWdpblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIGxvZ2ljIGluIGBfX250ZnNfcmVhZF9pb21hcF9iZWdpbmAgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSwgYWRkaW5nIGEgbXV0ZXggbG9jayBhcm91bmQgcmVzaWRlbnQgYW5kIG5vbi1yZXNpZGVudCBpb21hcCBiZWdpbiBjYWxscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBjb25jdXJyZW50IHJlYWRzL3NlZWtzIGFuZCBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgZGVhZGxvY2tzIG9yIGZpeCByYWNlcywgbWFraW5nIGl0IGltcG9ydGFudCB0byBmdXp6LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGRiMmM0ZjczNjg2M2Q1ZTVjYTFmYjZlNWI4NWU5ZGNlM2UyYWVkN2RcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1biAyNiAwMjoxNTowMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL250ZnMvaW9tYXAuYyBiL2ZzL250ZnMvaW9tYXAuY1xuaW5kZXggNTJlZWNmNWNiMjU2YWEuLjVmMTVhMDQzMmYwY2FmIDEwMDY0NFxuLS0tIGEvZnMvbnRmcy9pb21hcC5jXG4rKysgYi9mcy9udGZzL2lvbWFwLmNcbkBAIC0yNjMsMTEgKzI2MywyNiBAQCBzdGF0aWMgaW50IF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZVxuIFx0XHR1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCBpb21hcCAqaW9tYXAsIHN0cnVjdCBpb21hcCAqc3JjbWFwLFxuIFx0XHRib29sIG5lZWRfdW53cml0dGVuKVxuIHtcbi1cdGlmIChOSW5vTm9uUmVzaWRlbnQoTlRGU19JKGlub2RlKSkpXG4tXHRcdHJldHVybiBudGZzX3JlYWRfaW9tYXBfYmVnaW5fbm9uX3Jlc2lkZW50KGlub2RlLCBvZmZzZXQsIGxlbmd0aCxcbi1cdFx0XHRcdGZsYWdzLCBpb21hcCwgbmVlZF91bndyaXR0ZW4pO1xuLVx0cmV0dXJuIG50ZnNfcmVhZF9pb21hcF9iZWdpbl9yZXNpZGVudChpbm9kZSwgb2Zmc2V0LCBsZW5ndGgsXG4tXHRcdFx0XHRcdCAgICAgZmxhZ3MsIGlvbWFwKTtcbitcdHN0cnVjdCBudGZzX2lub2RlICpuaSA9IE5URlNfSShpbm9kZSk7XG4rXHRzdHJ1Y3QgbnRmc19pbm9kZSAqYmFzZV9uaSA9IE5Jbm9BdHRyKG5pKSA/IG5pLVx1MDAzZWV4dC5iYXNlX250ZnNfaW5vIDogbmk7XG4rXHRib29sIGxvY2tfbXJlYyA9IE5Jbm9BdHRyTGlzdChiYXNlX25pKTtcbitcdGludCBlcnI7XG4rXG4rXHRpZiAobG9ja19tcmVjKVxuK1x0XHRtdXRleF9sb2NrKFx1MDAyNmJhc2VfbmktXHUwMDNlbXJlY19sb2NrKTtcbitcbitcdGlmIChOSW5vTm9uUmVzaWRlbnQobmkpKVxuK1x0XHRlcnIgPSBudGZzX3JlYWRfaW9tYXBfYmVnaW5fbm9uX3Jlc2lkZW50KGlub2RlLCBvZmZzZXQsIGxlbmd0aCxcbitcdFx0XHRcdFx0XHRcdCBmbGFncywgaW9tYXAsXG4rXHRcdFx0XHRcdFx0XHQgbmVlZF91bndyaXR0ZW4pO1xuK1x0ZWxzZVxuK1x0XHRlcnIgPSBudGZzX3JlYWRfaW9tYXBfYmVnaW5fcmVzaWRlbnQoaW5vZGUsIG9mZnNldCwgbGVuZ3RoLFxuK1x0XHRcdFx0XHRcdCAgICAgZmxhZ3MsIGlvbWFwKTtcbitcbitcdGlmIChsb2NrX21yZWMpXG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZiYXNlX25pLVx1MDAzZW1yZWNfbG9jayk7XG4rXG4rXHRyZXR1cm4gZXJyO1xuIH1cbiBcbiBzdGF0aWMgaW50IG50ZnNfcmVhZF9pb21hcF9iZWdpbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuZ3RoLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDI6MTU6MDIuODc5NTU5Njg2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDExNzU2MjU1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5URlMgSU9NQVAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIHR3ZWFraW5nIGBmcy9udGZzL2lvbWFwLmNgLiBTcGVjaWZpY2FsbHksIHRoZSBjaGFuZ2UgaXMgYXJvdW5kIHRoZSBgX19udGZzX3JlYWRfaW9tYXBfYmVnaW5gIGZ1bmN0aW9uLiBJdCBzZWVtcyB0aGV5J3ZlIGFkZGVkIGEgYG11dGV4X2xvY2soXHUwMDI2YmFzZV9uaS1cdTAwM2VtcmVjX2xvY2spYCBhcm91bmQgY2FsbHMgdG8gYG50ZnNfcmVhZF9pb21hcF9iZWdpbl9ub25fcmVzaWRlbnRgIGFuZCBgbnRmc19yZWFkX2lvbWFwX2JlZ2luX3Jlc2lkZW50YC4gUmlnaHQgYXdheSwgSSBzZWUgdGhpcyBhcyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIOKAkyB3ZSdyZSBjaGFuZ2luZyB0aGUgbG9ja2luZyBzdHJhdGVneSBoZXJlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJPa2F5LCBkb2VzIHRoaXMgb3BlbiB1cCBhbnkgbmV3IGZ1enppbmcgcG9zc2liaWxpdGllcz8gQXJlIHRoZXJlIG5vdyByYWNlIGNvbmRpdGlvbnMgdGhhdCBkaWRuJ3QgZXhpc3QgYmVmb3JlP1wiIEkgbmVlZCB0byB2ZXJpZnkgaWYgTlRGUyBpcyBldmVuIGZ1enphYmxlIGFuZCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgcmVxdWlyZWQgdG8gZW5hYmxlIGZ1enppbmcgZm9yIGl0LiBUaW1lIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmb3IgTlRGUyBhbmQgc2VlIHdoYXQgd2UncmUgd29ya2luZyB3aXRoLiBHb3R0YSBjaGVjayBgZnMvbnRmcy9pb21hcC5jYCB0byBjb25maXJtIHRoZSBmaWxlIGFuZCBsb2NhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE1NSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAyOjE1OjA2Ljk5NzEyNDU1NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTY1MTA0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTlRGU19GU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9udGZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbnRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvbnRmcy9LY29uZmlnOjI6Y29uZmlnIE5URlNfRlNcXG5mcy9udGZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvbnRmcy9LY29uZmlnPTEzPWNvbmZpZyBOVEZTX0RFQlVHXFxuLS1cXG5mcy9udGZzL0tjb25maWctMzQtXFxuZnMvbnRmcy9LY29uZmlnOjM1OmNvbmZpZyBOVEZTX0ZTX1BPU0lYX0FDTFxcbmZzL250ZnMvS2NvbmZpZy0zNi1cXHRib29sIFxcXCJOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMjoxNTowNy4wNTI3ODI1OTNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjg0NjE3Mzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTlRGUyBSZWFkIElPTUFQIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyBjbGVhcmx5IGRlYWxpbmcgd2l0aCBgTlRGU19GU2AuIE15IGZvY3VzIG5vdyBzaGlmdHMgdG8gaG93IHJlYWQgb3BlcmF0aW9ucyBhcmUgaGFuZGxlZCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgSU9NQVAgZnJhbWV3b3JrIGZvciB0aGlzIGZpbGVzeXN0ZW0uIFRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiBpcyBgX19udGZzX3JlYWRfaW9tYXBfYmVnaW5gLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZS4gSXQncyBwYXJ0IG9mIHRoZSBpb21hcCBvcGVyYXRpb25zIGZvciBOVEZTLlxuXG5MZXQncyBxdWlja2x5IHZlcmlmeSBpdHMgcmVhY2hhYmlsaXR5IHdpdGhpbiB0aGUgY29kZWJhc2UuIEknbGwgbmVlZCB0byBjb25maXJtIGl0cyBkZWZpbml0aW9uIGFuZCB1c2FnZS4gQSBxdWljayBzZWFyY2ggb2YgYGZzL250ZnMvaW9tYXAuY2Agc2hvdWxkIHJldmVhbCB0aGUgZGVmaW5pdGl2ZSBzb3VyY2UgY29kZSBmb3IgYF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luYCwgYWxsb3dpbmcgbWUgdG8gZGlzc2VjdCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGJyb2FkZXIgTlRGUyBJT01BUCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBzaG91bGQgcHJvdmlkZSB0aGUgaW5mb3JtYXRpb24gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBwYXJ0IG9mIHRoZSByZWFkIG9wZXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY5OCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAyOjE1OjEwLjczNzQwNDEyMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjE4ODY5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX250ZnNfcmVhZF9pb21hcF9iZWdpblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9udGZzL2lvbWFwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbnRmcy9pb21hcC5jPTE4NT1zdGF0aWMgaW50IG50ZnNfcmVhZF9pb21hcF9iZWdpbl9ub25fcmVzaWRlbnQoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IG9mZnNldCxcXG4tLVxcbmZzL250ZnMvaW9tYXAuYy0yNjEtXFxuZnMvbnRmcy9pb21hcC5jOjI2MjpzdGF0aWMgaW50IF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW5ndGgsXFxuZnMvbnRmcy9pb21hcC5jLTI2My1cXHRcXHR1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCBpb21hcCAqaW9tYXAsIHN0cnVjdCBpb21hcCAqc3JjbWFwLFxcbi0tXFxuZnMvbnRmcy9pb21hcC5jPTI4OD1zdGF0aWMgaW50IG50ZnNfcmVhZF9pb21hcF9iZWdpbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuZ3RoLFxcbi0tXFxuZnMvbnRmcy9pb21hcC5jLTI5MC17XFxuZnMvbnRmcy9pb21hcC5jOjI5MTpcXHRyZXR1cm4gX19udGZzX3JlYWRfaW9tYXBfYmVnaW4oaW5vZGUsIG9mZnNldCwgbGVuZ3RoLCBmbGFncywgaW9tYXAsXFxuZnMvbnRmcy9pb21hcC5jLTI5Mi1cXHRcXHRcXHRzcmNtYXAsIHRydWUpO1xcbi0tXFxuZnMvbnRmcy9pb21hcC5jPTMzMj1zdGF0aWMgaW50IG50ZnNfc2Vla19pb21hcF9iZWdpbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuZ3RoLFxcbi0tXFxuZnMvbnRmcy9pb21hcC5jLTMzNC17XFxuZnMvbnRmcy9pb21hcC5jOjMzNTpcXHRyZXR1cm4gX19udGZzX3JlYWRfaW9tYXBfYmVnaW4oaW5vZGUsIG9mZnNldCwgbGVuZ3RoLCBmbGFncywgaW9tYXAsXFxuZnMvbnRmcy9pb21hcC5jLTMzNi1cXHRcXHRcXHRzcmNtYXAsIGZhbHNlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDI6MTU6MTAuNzkzNTk3MDQxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ2MTA3MTI4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIE5URlMgSS9PIE1hcHBpbmcgRnVuY3Rpb25zKipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW4uIEkgc2VlIHdlJ3JlIGxvb2tpbmcgYXQgYG50ZnNfcmVhZF9pb21hcF9iZWdpbmAgYW5kIGBudGZzX3NlZWtfaW9tYXBfYmVnaW5gLiBDbGVhcmx5LCB0aGVzZSBhcmUgZW50cnkgcG9pbnRzIGZvciBzb21lIGNydWNpYWwgSS9PIG1hcHBpbmcgb3BlcmF0aW9ucyB3aXRoaW4gdGhlIE5URlMgZmlsZXN5c3RlbSBjb2RlLiBUaGUgbmFtZXMgYXJlIHByZXR0eSBzZWxmLWV4cGxhbmF0b3J5LCBzdWdnZXN0aW5nIHRoZXkncmUgaW52b2x2ZWQgaW4gaW5pdGlhdGluZyBlaXRoZXIgcmVhZCBvciBzZWVrIG9wZXJhdGlvbnMsIHByb2JhYmx5IGRlYWxpbmcgd2l0aCB0aGUgdHJhbnNsYXRpb24gYmV0d2VlbiBsb2dpY2FsIG9mZnNldHMgd2l0aGluIGEgZmlsZSBhbmQgcGh5c2ljYWwgZGlzayBsb2NhdGlvbnMuXG5cbk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0cyBpbiB3aGljaCB0aGVzZSBmdW5jdGlvbnMgYXJlIGludm9rZWQuIEtub3dpbmcgdGhlIGNhbGxlcnMgd2lsbCB0ZWxsIG1lIGEgbG90IGFib3V0IHRoZWlyIGludGVuZGVkIHVzZTogQXJlIHdlIHRhbGtpbmcgYWJvdXQgZGlyZWN0IEkvTywgYnVmZmVyZWQgSS9PLCBvciBzb21ldGhpbmcgbW9yZSBzcGVjaWFsaXplZD8gQXJlIHRoZXNlIHVzZWQgcHJpbWFyaWx5IGJ5IHRoZSBrZXJuZWwncyBmaWxlIHN5c3RlbSBjb2RlIGl0c2VsZiwgb3IgZG8gdGhleSBpbnRlcmZhY2UgZGlyZWN0bHkgd2l0aCB1c2VyLXNwYWNlIGFwcGxpY2F0aW9ucyB0aHJvdWdoIGEgc3RhbmRhcmQgQVBJPyBVbmRlcnN0YW5kaW5nIHRoaXMgd2lsbCBiZSBjcml0aWNhbCB0byBncmFzcGluZyB0aGUgb3ZlcmFsbCBJL08gc3RyYXRlZ3kgYW5kIGhvdyB0aGUgZmlsZSBzeXN0ZW0gaW50ZXJhY3RzIHdpdGggdGhlIHN0b3JhZ2UgbGF5ZXIuIFNvLCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIHVzZSBzaXRlcyB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQzMCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAyOjE1OjE0LjI1NDY3MDg2NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjQwNTM5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudGZzX3JlYWRfaW9tYXBfYmVnaW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9pb21hcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL250ZnMvaW9tYXAuYz03OT1jb25zdCBzdHJ1Y3QgaW9tYXBfd3JpdGVfb3BzIG50ZnNfaW9tYXBfZm9saW9fb3BzID0ge1xcbi0tXFxuZnMvbnRmcy9pb21hcC5jLTgyLVxcbmZzL250ZnMvaW9tYXAuYzo4MzpzdGF0aWMgaW50IG50ZnNfcmVhZF9pb21hcF9iZWdpbl9yZXNpZGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuZ3RoLFxcbmZzL250ZnMvaW9tYXAuYy04NC1cXHRcXHR1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCBpb21hcCAqaW9tYXApXFxuLS1cXG5mcy9udGZzL2lvbWFwLmMtMTQ0LS8qXFxuZnMvbnRmcy9pb21hcC5jOjE0NTogKiBudGZzX3JlYWRfaW9tYXBfYmVnaW5fbm9uX3Jlc2lkZW50IC0gbWFwIG5vbi1yZXNpZGVudCBOVEZTIGZpbGUgZGF0YVxcbmZzL250ZnMvaW9tYXAuYy0xNDYtICogQGlub2RlOlxcdFxcdGlub2RlIHRvIG1hcFxcbi0tXFxuZnMvbnRmcy9pb21hcC5jLTE4NC0gKi9cXG5mcy9udGZzL2lvbWFwLmM6MTg1OnN0YXRpYyBpbnQgbnRmc19yZWFkX2lvbWFwX2JlZ2luX25vbl9yZXNpZGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3Qgb2Zmc2V0LFxcbmZzL250ZnMvaW9tYXAuYy0xODYtXFx0XFx0bG9mZl90IGxlbmd0aCwgdW5zaWduZWQgaW50IGZsYWdzLCBzdHJ1Y3QgaW9tYXAgKmlvbWFwLFxcbi0tXFxuZnMvbnRmcy9pb21hcC5jLTI2MS1cXG5mcy9udGZzL2lvbWFwLmM6MjYyOnN0YXRpYyBpbnQgX19udGZzX3JlYWRfaW9tYXBfYmVnaW4oc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbmd0aCxcXG5mcy9udGZzL2lvbWFwLmMtMjYzLVxcdFxcdHVuc2lnbmVkIGludCBmbGFncywgc3RydWN0IGlvbWFwICppb21hcCwgc3RydWN0IGlvbWFwICpzcmNtYXAsXFxuLS1cXG5mcy9udGZzL2lvbWFwLmMtMjc0LVxcdGlmIChOSW5vTm9uUmVzaWRlbnQobmkpKVxcbmZzL250ZnMvaW9tYXAuYzoyNzU6XFx0XFx0ZXJyID0gbnRmc19yZWFkX2lvbWFwX2JlZ2luX25vbl9yZXNpZGVudChpbm9kZSwgb2Zmc2V0LCBsZW5ndGgsXFxuZnMvbnRmcy9pb21hcC5jLTI3Ni1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgZmxhZ3MsIGlvbWFwLFxcbi0tXFxuZnMvbnRmcy9pb21hcC5jLTI3OC1cXHRlbHNlXFxuZnMvbnRmcy9pb21hcC5jOjI3OTpcXHRcXHRlcnIgPSBudGZzX3JlYWRfaW9tYXBfYmVnaW5fcmVzaWRlbnQoaW5vZGUsIG9mZnNldCwgbGVuZ3RoLFxcbmZzL250ZnMvaW9tYXAuYy0yODAtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBmbGFncywgaW9tYXApO1xcbi0tXFxuZnMvbnRmcy9pb21hcC5jLTI4Ny1cXG5mcy9udGZzL2lvbWFwLmM6Mjg4OnN0YXRpYyBpbnQgbnRmc19yZWFkX2lvbWFwX2JlZ2luKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW5ndGgsXFxuZnMvbnRmcy9pb21hcC5jLTI4OS1cXHRcXHR1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCBpb21hcCAqaW9tYXAsIHN0cnVjdCBpb21hcCAqc3JjbWFwKVxcbmZzL250ZnMvaW9tYXAuYy0yOTAte1xcbmZzL250ZnMvaW9tYXAuYzoyOTE6XFx0cmV0dXJuIF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luKGlub2RlLCBvZmZzZXQsIGxlbmd0aCwgZmxhZ3MsIGlvbWFwLFxcbmZzL250ZnMvaW9tYXAuYy0yOTItXFx0XFx0XFx0c3JjbWFwLCB0cnVlKTtcXG4tLVxcbmZzL250ZnMvaW9tYXAuYz0yOTU9Y29uc3Qgc3RydWN0IGlvbWFwX29wcyBudGZzX3JlYWRfaW9tYXBfb3BzID0ge1xcbmZzL250ZnMvaW9tYXAuYzoyOTY6XFx0LmlvbWFwX2JlZ2luID0gbnRmc19yZWFkX2lvbWFwX2JlZ2luLFxcbmZzL250ZnMvaW9tYXAuYy0yOTctfTtcXG4tLVxcbmZzL250ZnMvaW9tYXAuYz0zMzI9c3RhdGljIGludCBudGZzX3NlZWtfaW9tYXBfYmVnaW4oc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbmd0aCxcXG4tLVxcbmZzL250ZnMvaW9tYXAuYy0zMzQte1xcbmZzL250ZnMvaW9tYXAuYzozMzU6XFx0cmV0dXJuIF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luKGlub2RlLCBvZmZzZXQsIGxlbmd0aCwgZmxhZ3MsIGlvbWFwLFxcbmZzL250ZnMvaW9tYXAuYy0zMzYtXFx0XFx0XFx0c3JjbWFwLCBmYWxzZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAyOjE1OjE0LjMxMTA4MjA3NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MzU2MzM2NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUgZGVlcGx5IGZhbWlsaWFyIHdpdGggZmlsZSBzeXN0ZW0gaW50ZXJuYWxzOlxuXG4qKkludmVzdGlnYXRpbmcgTlRGUyBJL08gT3BlcmF0aW9ucyoqXG5cblJpZ2h0LCBzbyBJJ20gcHJldHR5IHN1cmUgYG50ZnNfcmVhZF9pb21hcF9vcHNgIGFuZCBgbnRmc19zZWVrX2lvbWFwX29wc2AgYXJlIGNydWNpYWwgZm9yIGhhbmRsaW5nIEkvTyB3aXRoaW4gdGhlIE5URlMgZmlsZSBzeXN0ZW0uIEknbSBnb2luZyB0byBiZXQgdGhleSB1c2Ugd2hhdGV2ZXIgdGhpcyBcIml0XCIgaXMuIEkgc2hvdWxkIGRlZmluaXRlbHkgY29uZmlybSB0aGF0IGFzc3VtcHRpb24uIFRoZSBxdWlja2VzdCB3YXkgdG8gdW5kZXJzdGFuZCB0aGVpciByb2xlLCBhbmQgaG93IFwiaXRcIiBmaXRzIGluLCBpcyB0byB0cmFjZSB0aGVpciB1c2FnZS4gTGV0IG1lIHN0YXJ0IGJ5IGxvb2tpbmcgZm9yIHdoZXJlIGBudGZzX3JlYWRfaW9tYXBfb3BzYCBpcyBhY3R1YWxseSBjYWxsZWQgd2l0aGluIHRoZSBjb2RlLiBUaGF0IHdpbGwgcXVpY2tseSBjbGFyaWZ5IHRoZSBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzYwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDI6MTU6MTcuNzQ2NzE4MjQ4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzYyNjIwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudGZzX3JlYWRfaW9tYXBfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL250ZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL250ZnMvYW9wcy5jPTcwPXN0YXRpYyBpbnQgbnRmc19yZWFkX2ZvbGlvKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxuZnMvbnRmcy9hb3BzLmMtOTktXFxuZnMvbnRmcy9hb3BzLmM6MTAwOlxcdGlvbWFwX3JlYWRfZm9saW8oXFx1MDAyNm50ZnNfcmVhZF9pb21hcF9vcHMsIFxcdTAwMjZjdHgsIE5VTEwpO1xcbmZzL250ZnMvYW9wcy5jLTEwMS1cXHRyZXR1cm4gMDtcXG4tLVxcbmZzL250ZnMvYW9wcy5jPTIyNT1zdGF0aWMgdm9pZCBudGZzX3JlYWRhaGVhZChzdHJ1Y3QgcmVhZGFoZWFkX2NvbnRyb2wgKnJhYylcXG4tLVxcbmZzL250ZnMvYW9wcy5jLTI0MC1cXHRcXHRyZXR1cm47XFxuZnMvbnRmcy9hb3BzLmM6MjQxOlxcdGlvbWFwX3JlYWRhaGVhZChcXHUwMDI2bnRmc19yZWFkX2lvbWFwX29wcywgXFx1MDAyNmN0eCwgTlVMTCk7XFxuZnMvbnRmcy9hb3BzLmMtMjQyLX1cXG4tLVxcbmZzL250ZnMvYW9wcy5jPTI3Mz1zdGF0aWMgaW50IG50ZnNfc3dhcF9hY3RpdmF0ZShzdHJ1Y3Qgc3dhcF9pbmZvX3N0cnVjdCAqc2lzLFxcbi0tXFxuZnMvbnRmcy9hb3BzLmMtMjc2LVxcdHJldHVybiBpb21hcF9zd2FwZmlsZV9hY3RpdmF0ZShzaXMsIHN3YXBfZmlsZSwgc3BhbixcXG5mcy9udGZzL2FvcHMuYzoyNzc6XFx0XFx0XFx0XFx1MDAyNm50ZnNfcmVhZF9pb21hcF9vcHMpO1xcbmZzL250ZnMvYW9wcy5jLTI3OC19XFxuLS1cXG5mcy9udGZzL2ZpbGUuYz00Mzg9c3RhdGljIHNzaXplX3QgbnRmc19maWxlX3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXFxuLS1cXG5mcy9udGZzL2ZpbGUuYy00NjAtXFx0XFx0ZmlsZV9hY2Nlc3NlZChpb2NiLVxcdTAwM2VraV9maWxwKTtcXG5mcy9udGZzL2ZpbGUuYzo0NjE6XFx0XFx0cmV0ID0gaW9tYXBfZGlvX3J3KGlvY2IsIHRvLCBcXHUwMDI2bnRmc19yZWFkX2lvbWFwX29wcywgTlVMTCwgMCxcXG5mcy9udGZzL2ZpbGUuYy00NjItXFx0XFx0XFx0XFx0TlVMTCwgMCk7XFxuLS1cXG5mcy9udGZzL2ZpbGUuYz02NzA9c3RhdGljIGludCBudGZzX2ZpZW1hcChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmllbWFwX2V4dGVudF9pbmZvICpmaWVpbmZvLFxcbi0tXFxuZnMvbnRmcy9maWxlLmMtNjcyLXtcXG5mcy9udGZzL2ZpbGUuYzo2NzM6XFx0cmV0dXJuIGlvbWFwX2ZpZW1hcChpbm9kZSwgZmllaW5mbywgc3RhcnQsIGxlbiwgXFx1MDAyNm50ZnNfcmVhZF9pb21hcF9vcHMpO1xcbmZzL250ZnMvZmlsZS5jLTY3NC19XFxuLS1cXG5mcy9udGZzL2lvbWFwLmM9Mjg4PXN0YXRpYyBpbnQgbnRmc19yZWFkX2lvbWFwX2JlZ2luKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW5ndGgsXFxuLS1cXG5mcy9udGZzL2lvbWFwLmMtMjk0LVxcbmZzL250ZnMvaW9tYXAuYzoyOTU6Y29uc3Qgc3RydWN0IGlvbWFwX29wcyBudGZzX3JlYWRfaW9tYXBfb3BzID0ge1xcbmZzL250ZnMvaW9tYXAuYy0yOTYtXFx0LmlvbWFwX2JlZ2luID0gbnRmc19yZWFkX2lvbWFwX2JlZ2luLFxcbi0tXFxuZnMvbnRmcy9pb21hcC5oPTE1PWV4dGVybiBjb25zdCBzdHJ1Y3QgaW9tYXBfb3BzIG50ZnNfd3JpdGVfaW9tYXBfb3BzO1xcbmZzL250ZnMvaW9tYXAuaDoxNjpleHRlcm4gY29uc3Qgc3RydWN0IGlvbWFwX29wcyBudGZzX3JlYWRfaW9tYXBfb3BzO1xcbmZzL250ZnMvaW9tYXAuaC0xNy1leHRlcm4gY29uc3Qgc3RydWN0IGlvbWFwX29wcyBudGZzX3NlZWtfaW9tYXBfb3BzO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMjoxNToxNy44MDQzNTUzMzdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM3MjU1MjMyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTlRGUyBJL08gT3BlcmF0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoaXMgZnVuY3Rpb24gaXMgYWN0aXZlbHkgdXNlZCBhY3Jvc3Mgc2V2ZXJhbCBrZXkgTlRGUyBvcGVyYXRpb25zOiBgbnRmc19yZWFkX2ZvbGlvYCwgYG50ZnNfcmVhZGFoZWFkYCwgYG50ZnNfc3dhcF9hY3RpdmF0ZWAsIGBudGZzX2ZpbGVfcmVhZF9pdGVyYCwgYW5kIGBudGZzX2ZpZW1hcGAuIFRoYXQncyBhIHN0cm9uZyBpbmRpY2F0aW9uIHRoYXQgaXQncyBjcnVjaWFsIGFuZCBkZWZpbml0ZWx5IHJlYWNoYWJsZSBkdXJpbmcgbm9ybWFsIGZpbGUgc3lzdGVtIG9wZXJhdGlvbi4gSSdtIHNlZWluZyBgTlRGU19GU2AgbGlzdGVkIGFzIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9uIG9wdGlvbiwgd2hpY2ggbWFrZXMgc2Vuc2UuIE15IGZvY3VzIG5vdyBpcyBvbiB0aGVzZSBzeW1ib2xzOiBgX19udGZzX3JlYWRfaW9tYXBfYmVnaW5gLCBgbnRmc19yZWFkX2lvbWFwX2JlZ2luYCwgYW5kIGBudGZzX3NlZWtfaW9tYXBfYmVnaW5gLiBBaCwgcmlnaHQsIGBfX250ZnNfcmVhZF9pb21hcF9iZWdpbmAgaXMgdGhlIG9uZSB0aGF0IHdhcyBtb2RpZmllZC5cblxuTGV0J3MgcXVpY2tseSB2ZXJpZnkgdGhhdCBgTlRGU19GU2AgaXMgdGhlICpvbmx5KiBkZXBlbmRlbmN5LiBTZWVtcyBsaWtlIHRoZSBwcmltYXJ5IGNvbmZpZy4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbGwgY3Jvc3MtcmVmZXJlbmNlIHRoZSBzb3VyY2UgZmlsZXMuIE9rYXksIGBmcy9udGZzL2lvbWFwLmNgIGlzIG9ubHkgY29tcGlsZWQgd2hlbiBgQ09ORklHX05URlNfRlNgIGlzIGVuYWJsZWQsIHdoaWNoIHJlY29uZmlybXMgdGhlIHByaW1hcnkgZGVwZW5kZW5jeS4gR29vZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTg0MywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMjoxNToyMi4xNzY5MTA3OTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1ODI1MTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvbWFwLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL01ha2VmaWxlPTU9bnRmcy15IDo9IGFvcHMubyBhdHRyaWIubyBjb2xsYXRlLm8gZGlyLm8gZmlsZS5vIGluZGV4Lm8gaW5vZGUubyBcXFxcXFxuLS1cXG5mcy9udGZzL01ha2VmaWxlLTctXFx0ICB1cGNhc2UubyBiaXRtYXAubyBsY25hbGxvYy5vIGxvZ2ZpbGUubyByZXBhcnNlLm8gY29tcHJlc3MubyBcXFxcXFxuZnMvbnRmcy9NYWtlZmlsZTo4OlxcdCAgaW9tYXAubyBkZWJ1Zy5vIHN5c2N0bC5vIG9iamVjdF9pZC5vIGJkZXYtaW8ub1xcbmZzL250ZnMvTWFrZWZpbGUtOS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDI6MTU6MjIuMjMyNzQzNzU3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MDkyNjU3NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTlRGUyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGNvbmZpcm1pbmcgbXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nLiBZZXMsIGBpb21hcC5vYCBpcyBkZWZpbml0ZWx5IHBhcnQgb2YgYG50ZnMteWAsIGFuZCB0aGVyZWZvcmUgYE5URlNfRlNgIGlzIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBoYWQgYSBtb21lbnRhcnkgZmxpY2tlciBvZiBkb3VidCBhYm91dCBgTlRGU19GU2AgYmVpbmcgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBgTlRGUzNfRlNgLCBidXQgdGhlIHByZXNlbmNlIG9mIGBmcy9udGZzYCBwdXRzIHRoYXQgdG8gcmVzdC4gVGhlIHBhdGNoIGNsZWFybHkgbW9kaWZpZXMgYGZzL250ZnMvaW9tYXAuY2AsIHNvIGBOVEZTX0ZTYCBpdCBpcy5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gdGhlIGZvY3VzIHN5bWJvbHMuIGBfX250ZnNfcmVhZF9pb21hcF9iZWdpbmAsIGBudGZzX3JlYWRfaW9tYXBfYmVnaW5gLCBhbmQgYG50ZnNfc2Vla19pb21hcF9iZWdpbmAgYXJlIHRoZSBvbmVzIHRvIGtlZXAgYW4gZXllIG9uLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luYCBpcyBzdGF0aWMgdG8gY29uZmlybSBpdCdzIHRoZSBjb3JyZWN0IHN5bWJvbC4gQWxyaWdodCwgaXQgaXMgc3RhdGljLiBUaGF04oCZcyBnb29kOyBub3cgSeKAmW0gc3VyZSBJ4oCZbSBvbiB0aGUgcmlnaHQgdHJhY2suXG5cbkFscmlnaHQsIGxldCdzIHN5bnRoZXNpemUgbXkgZmluZGluZ3MuIFRoZSBzeXN0ZW0gbmVlZHMgdG8gYmUgbWFya2VkIGFzIHdvcnRoIGZ1enppbmcsIGFuZCB0aGUgYXBwcm9wcmlhdGUgY29uZmlnIG9wdGlvbiBpcyBgTlRGU19GU2AuIFRoZSBjcml0aWNhbCBmb2N1cyBzeW1ib2wgaXMgYF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luYC4gTXkgcmVhc29uaW5nIGlzIHRoYXQgdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGUgbG9ja2luZyBsb2dpYyB3aXRoaW4gYF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luYCBpbiB0aGUgTlRGUyBmaWxlc3lzdGVtLCBzbyBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBkaXJlY3RseSBpbXBhY3RzIGNvbmN1cnJlbnQgcmVhZC9zZWVrIG9wZXJhdGlvbnMuIFRoaXMga2luZCBvZiBtb2RpZmljYXRpb24gaGFzIHRoZSBwb3RlbnRpYWwgdG8gaW50cm9kdWNlIGRlYWRsb2NrcyBvciBmaXggcmFjZSBjb25kaXRpb25zLCBtYWtpbmcgaXQgYW4gZXhjZWxsZW50IGNhbmRpZGF0ZSBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQ4MiwiT3V0cHV0VG9rZW5zIjoxMTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDI6MTU6MjguNjQyMDExOTQ5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODYyNDExNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5URlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX250ZnNfcmVhZF9pb21hcF9iZWdpblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIGxvZ2ljIGluIGBfX250ZnNfcmVhZF9pb21hcF9iZWdpbmAgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSwgYWRkaW5nIGEgbXV0ZXggbG9jayBhcm91bmQgcmVzaWRlbnQgYW5kIG5vbi1yZXNpZGVudCBpb21hcCBiZWdpbiBjYWxscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBjb25jdXJyZW50IHJlYWRzL3NlZWtzIGFuZCBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgZGVhZGxvY2tzIG9yIGZpeCByYWNlcywgbWFraW5nIGl0IGltcG9ydGFudCB0byBmdXp6LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5URlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX250ZnNfcmVhZF9pb21hcF9iZWdpblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIGxvZ2ljIGluIGBfX250ZnNfcmVhZF9pb21hcF9iZWdpbmAgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSwgYWRkaW5nIGEgbXV0ZXggbG9jayBhcm91bmQgcmVzaWRlbnQgYW5kIG5vbi1yZXNpZGVudCBpb21hcCBiZWdpbiBjYWxscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBjb25jdXJyZW50IHJlYWRzL3NlZWtzIGFuZCBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgZGVhZGxvY2tzIG9yIGZpeCByYWNlcywgbWFraW5nIGl0IGltcG9ydGFudCB0byBmdXp6LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtsxw4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-26 02:05:48 +0000 UTC FinishedAt: 2026-06-26 02:15:30 +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": "4edcdefd4083ae04b1a5656f4be6cd83ae919ef4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "4edcdefd4083ae04b1a5656f4be6cd83ae919ef4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "77f8e31f-35e3-41c2-b720-773c02bbfc0f" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "__ntfs_read_iomap_begin" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX250ZnNfcmVhZF9pb21hcF9iZWdpbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBsb2dpYyBpbiBgX19udGZzX3JlYWRfaW9tYXBfYmVnaW5gIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0sIGFkZGluZyBhIG11dGV4IGxvY2sgYXJvdW5kIHJlc2lkZW50IGFuZCBub24tcmVzaWRlbnQgaW9tYXAgYmVnaW4gY2FsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgY29uY3VycmVudCByZWFkcy9zZWVrcyBhbmQgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIGRlYWRsb2NrcyBvciBmaXggcmFjZXMsIG1ha2luZyBpdCBpbXBvcnRhbnQgdG8gZnV6ei4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMjoxNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGRiMmM0ZjczNjg2M2Q1ZTVjYTFmYjZlNWI4NWU5ZGNlM2UyYWVkN2RcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1biAyNiAwMjoxNTowMCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9udGZzL2lvbWFwLmMgYi9mcy9udGZzL2lvbWFwLmNcbmluZGV4IDUyZWVjZjVjYjI1NmFhLi41ZjE1YTA0MzJmMGNhZiAxMDA2NDRcbi0tLSBhL2ZzL250ZnMvaW9tYXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvbnRmcy9pb21hcC5jXG5AQCAtMjYzLDExICYjNDM7MjYzLDI2IEBAIHN0YXRpYyBpbnQgX19udGZzX3JlYWRfaW9tYXBfYmVnaW4oc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlXG4gXHRcdHVuc2lnbmVkIGludCBmbGFncywgc3RydWN0IGlvbWFwICppb21hcCwgc3RydWN0IGlvbWFwICpzcmNtYXAsXG4gXHRcdGJvb2wgbmVlZF91bndyaXR0ZW4pXG4ge1xuLVx0aWYgKE5Jbm9Ob25SZXNpZGVudChOVEZTX0koaW5vZGUpKSlcbi1cdFx0cmV0dXJuIG50ZnNfcmVhZF9pb21hcF9iZWdpbl9ub25fcmVzaWRlbnQoaW5vZGUsIG9mZnNldCwgbGVuZ3RoLFxuLVx0XHRcdFx0ZmxhZ3MsIGlvbWFwLCBuZWVkX3Vud3JpdHRlbik7XG4tXHRyZXR1cm4gbnRmc19yZWFkX2lvbWFwX2JlZ2luX3Jlc2lkZW50KGlub2RlLCBvZmZzZXQsIGxlbmd0aCxcbi1cdFx0XHRcdFx0ICAgICBmbGFncywgaW9tYXApO1xuJiM0MztcdHN0cnVjdCBudGZzX2lub2RlICpuaSA9IE5URlNfSShpbm9kZSk7XG4mIzQzO1x0c3RydWN0IG50ZnNfaW5vZGUgKmJhc2VfbmkgPSBOSW5vQXR0cihuaSkgPyBuaS1cdTAwM2VleHQuYmFzZV9udGZzX2lubyA6IG5pO1xuJiM0MztcdGJvb2wgbG9ja19tcmVjID0gTklub0F0dHJMaXN0KGJhc2VfbmkpO1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdGlmIChsb2NrX21yZWMpXG4mIzQzO1x0XHRtdXRleF9sb2NrKFx1MDAyNmJhc2VfbmktXHUwMDNlbXJlY19sb2NrKTtcbiYjNDM7XG4mIzQzO1x0aWYgKE5Jbm9Ob25SZXNpZGVudChuaSkpXG4mIzQzO1x0XHRlcnIgPSBudGZzX3JlYWRfaW9tYXBfYmVnaW5fbm9uX3Jlc2lkZW50KGlub2RlLCBvZmZzZXQsIGxlbmd0aCxcbiYjNDM7XHRcdFx0XHRcdFx0XHQgZmxhZ3MsIGlvbWFwLFxuJiM0MztcdFx0XHRcdFx0XHRcdCBuZWVkX3Vud3JpdHRlbik7XG4mIzQzO1x0ZWxzZVxuJiM0MztcdFx0ZXJyID0gbnRmc19yZWFkX2lvbWFwX2JlZ2luX3Jlc2lkZW50KGlub2RlLCBvZmZzZXQsIGxlbmd0aCxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICBmbGFncywgaW9tYXApO1xuJiM0MztcbiYjNDM7XHRpZiAobG9ja19tcmVjKVxuJiM0MztcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmJhc2VfbmktXHUwMDNlbXJlY19sb2NrKTtcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIGVycjtcbiB9XG4gXG4gc3RhdGljIGludCBudGZzX3JlYWRfaW9tYXBfYmVnaW4oc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbmd0aCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMjoxNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtOVEZTX0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19udGZzX3JlYWRfaW9tYXBfYmVnaW4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvY2tpbmcgbG9naWMgaW4gYF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luYCBpbiB0aGUgTlRGUyBmaWxlc3lzdGVtLCBhZGRpbmcgYSBtdXRleCBsb2NrIGFyb3VuZCByZXNpZGVudCBhbmQgbm9uLXJlc2lkZW50IGlvbWFwIGJlZ2luIGNhbGxzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBhZmZlY3RzIGNvbmN1cnJlbnQgcmVhZHMvc2Vla3MgYW5kIGNvdWxkIHBvdGVudGlhbGx5IGludHJvZHVjZSBkZWFkbG9ja3Mgb3IgZml4IHJhY2VzLCBtYWtpbmcgaXQgaW1wb3J0YW50IHRvIGZ1enouJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGRiMmM0ZjczNjg2M2Q1ZTVjYTFmYjZlNWI4NWU5ZGNlM2UyYWVkN2QKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1biAyNiAwMjoxNTowMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL250ZnMvaW9tYXAuYyBiL2ZzL250ZnMvaW9tYXAuYwppbmRleCA1MmVlY2Y1Y2IyNTZhYS4uNWYxNWEwNDMyZjBjYWYgMTAwNjQ0Ci0tLSBhL2ZzL250ZnMvaW9tYXAuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9udGZzL2lvbWFwLmMKQEAgLTI2MywxMSAmIzQzOzI2MywyNiBAQCBzdGF0aWMgaW50IF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZQogCQl1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCBpb21hcCAqaW9tYXAsIHN0cnVjdCBpb21hcCAqc3JjbWFwLAogCQlib29sIG5lZWRfdW53cml0dGVuKQogewotCWlmIChOSW5vTm9uUmVzaWRlbnQoTlRGU19JKGlub2RlKSkpCi0JCXJldHVybiBudGZzX3JlYWRfaW9tYXBfYmVnaW5fbm9uX3Jlc2lkZW50KGlub2RlLCBvZmZzZXQsIGxlbmd0aCwKLQkJCQlmbGFncywgaW9tYXAsIG5lZWRfdW53cml0dGVuKTsKLQlyZXR1cm4gbnRmc19yZWFkX2lvbWFwX2JlZ2luX3Jlc2lkZW50KGlub2RlLCBvZmZzZXQsIGxlbmd0aCwKLQkJCQkJICAgICBmbGFncywgaW9tYXApOwomIzQzOwlzdHJ1Y3QgbnRmc19pbm9kZSAqbmkgPSBOVEZTX0koaW5vZGUpOwomIzQzOwlzdHJ1Y3QgbnRmc19pbm9kZSAqYmFzZV9uaSA9IE5Jbm9BdHRyKG5pKSA/IG5pLSZndDtleHQuYmFzZV9udGZzX2lubyA6IG5pOwomIzQzOwlib29sIGxvY2tfbXJlYyA9IE5Jbm9BdHRyTGlzdChiYXNlX25pKTsKJiM0MzsJaW50IGVycjsKJiM0MzsKJiM0MzsJaWYgKGxvY2tfbXJlYykKJiM0MzsJCW11dGV4X2xvY2soJmFtcDtiYXNlX25pLSZndDttcmVjX2xvY2spOwomIzQzOwomIzQzOwlpZiAoTklub05vblJlc2lkZW50KG5pKSkKJiM0MzsJCWVyciA9IG50ZnNfcmVhZF9pb21hcF9iZWdpbl9ub25fcmVzaWRlbnQoaW5vZGUsIG9mZnNldCwgbGVuZ3RoLAomIzQzOwkJCQkJCQkgZmxhZ3MsIGlvbWFwLAomIzQzOwkJCQkJCQkgbmVlZF91bndyaXR0ZW4pOwomIzQzOwllbHNlCiYjNDM7CQllcnIgPSBudGZzX3JlYWRfaW9tYXBfYmVnaW5fcmVzaWRlbnQoaW5vZGUsIG9mZnNldCwgbGVuZ3RoLAomIzQzOwkJCQkJCSAgICAgZmxhZ3MsIGlvbWFwKTsKJiM0MzsKJiM0MzsJaWYgKGxvY2tfbXJlYykKJiM0MzsJCW11dGV4X3VubG9jaygmYW1wO2Jhc2VfbmktJmd0O21yZWNfbG9jayk7CiYjNDM7CiYjNDM7CXJldHVybiBlcnI7CiB9CiAKIHN0YXRpYyBpbnQgbnRmc19yZWFkX2lvbWFwX2JlZ2luKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW5ndGgsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNTUKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBOVEZTIElPTUFQIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0d2Vha2luZyBgZnMvbnRmcy9pb21hcC5jYC4gU3BlY2lmaWNhbGx5LCB0aGUgY2hhbmdlIGlzIGFyb3VuZCB0aGUgYF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luYCBmdW5jdGlvbi4gSXQgc2VlbXMgdGhleSYjMzk7dmUgYWRkZWQgYSBgbXV0ZXhfbG9jaygmYW1wO2Jhc2VfbmktJmd0O21yZWNfbG9jaylgIGFyb3VuZCBjYWxscyB0byBgbnRmc19yZWFkX2lvbWFwX2JlZ2luX25vbl9yZXNpZGVudGAgYW5kIGBudGZzX3JlYWRfaW9tYXBfYmVnaW5fcmVzaWRlbnRgLiBSaWdodCBhd2F5LCBJIHNlZSB0aGlzIGFzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24g4oCTIHdlJiMzOTtyZSBjaGFuZ2luZyB0aGUgbG9ja2luZyBzdHJhdGVneSBoZXJlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCBkb2VzIHRoaXMgb3BlbiB1cCBhbnkgbmV3IGZ1enppbmcgcG9zc2liaWxpdGllcz8gQXJlIHRoZXJlIG5vdyByYWNlIGNvbmRpdGlvbnMgdGhhdCBkaWRuJiMzOTt0IGV4aXN0IGJlZm9yZT8mIzM0OyBJIG5lZWQgdG8gdmVyaWZ5IGlmIE5URlMgaXMgZXZlbiBmdXp6YWJsZSBhbmQgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGVuYWJsZSBmdXp6aW5nIGZvciBpdC4gVGltZSB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZm9yIE5URlMgYW5kIHNlZSB3aGF0IHdlJiMzOTtyZSB3b3JraW5nIHdpdGguIEdvdHRhIGNoZWNrIGBmcy9udGZzL2lvbWFwLmNgIHRvIGNvbmZpcm0gdGhlIGZpbGUgYW5kIGxvY2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBOVEZTX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvbnRmcy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL250ZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvbnRmcy9LY29uZmlnOjI6Y29uZmlnIE5URlNfRlNcbmZzL250ZnMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMvbnRmcy9LY29uZmlnPTEzPWNvbmZpZyBOVEZTX0RFQlVHXG4tLVxuZnMvbnRmcy9LY29uZmlnLTM0LVxuZnMvbnRmcy9LY29uZmlnOjM1OmNvbmZpZyBOVEZTX0ZTX1BPU0lYX0FDTFxuZnMvbnRmcy9LY29uZmlnLTM2LVx0Ym9vbCBcJiMzNDtOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDI6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY5OAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTlRGUyBSZWFkIElPTUFQIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaXMgY2xlYXJseSBkZWFsaW5nIHdpdGggYE5URlNfRlNgLiBNeSBmb2N1cyBub3cgc2hpZnRzIHRvIGhvdyByZWFkIG9wZXJhdGlvbnMgYXJlIGhhbmRsZWQsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIElPTUFQIGZyYW1ld29yayBmb3IgdGhpcyBmaWxlc3lzdGVtLiBUaGUgZnVuY3Rpb24gaW4gcXVlc3Rpb24gaXMgYF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuIEl0JiMzOTtzIHBhcnQgb2YgdGhlIGlvbWFwIG9wZXJhdGlvbnMgZm9yIE5URlMuCgpMZXQmIzM5O3MgcXVpY2tseSB2ZXJpZnkgaXRzIHJlYWNoYWJpbGl0eSB3aXRoaW4gdGhlIGNvZGViYXNlLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gaXRzIGRlZmluaXRpb24gYW5kIHVzYWdlLiBBIHF1aWNrIHNlYXJjaCBvZiBgZnMvbnRmcy9pb21hcC5jYCBzaG91bGQgcmV2ZWFsIHRoZSBkZWZpbml0aXZlIHNvdXJjZSBjb2RlIGZvciBgX19udGZzX3JlYWRfaW9tYXBfYmVnaW5gLCBhbGxvd2luZyBtZSB0byBkaXNzZWN0IGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgYnJvYWRlciBOVEZTIElPTUFQIGltcGxlbWVudGF0aW9uLiBUaGlzIHNob3VsZCBwcm92aWRlIHRoZSBpbmZvcm1hdGlvbiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHBhcnQgb2YgdGhlIHJlYWQgb3BlcmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fbnRmc19yZWFkX2lvbWFwX2JlZ2luJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvbnRmcy9pb21hcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL250ZnMvaW9tYXAuYz0xODU9c3RhdGljIGludCBudGZzX3JlYWRfaW9tYXBfYmVnaW5fbm9uX3Jlc2lkZW50KHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsXG4tLVxuZnMvbnRmcy9pb21hcC5jLTI2MS1cbmZzL250ZnMvaW9tYXAuYzoyNjI6c3RhdGljIGludCBfX250ZnNfcmVhZF9pb21hcF9iZWdpbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuZ3RoLFxuZnMvbnRmcy9pb21hcC5jLTI2My1cdFx0dW5zaWduZWQgaW50IGZsYWdzLCBzdHJ1Y3QgaW9tYXAgKmlvbWFwLCBzdHJ1Y3QgaW9tYXAgKnNyY21hcCxcbi0tXG5mcy9udGZzL2lvbWFwLmM9Mjg4PXN0YXRpYyBpbnQgbnRmc19yZWFkX2lvbWFwX2JlZ2luKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW5ndGgsXG4tLVxuZnMvbnRmcy9pb21hcC5jLTI5MC17XG5mcy9udGZzL2lvbWFwLmM6MjkxOlx0cmV0dXJuIF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luKGlub2RlLCBvZmZzZXQsIGxlbmd0aCwgZmxhZ3MsIGlvbWFwLFxuZnMvbnRmcy9pb21hcC5jLTI5Mi1cdFx0XHRzcmNtYXAsIHRydWUpO1xuLS1cbmZzL250ZnMvaW9tYXAuYz0zMzI9c3RhdGljIGludCBudGZzX3NlZWtfaW9tYXBfYmVnaW4oc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbmd0aCxcbi0tXG5mcy9udGZzL2lvbWFwLmMtMzM0LXtcbmZzL250ZnMvaW9tYXAuYzozMzU6XHRyZXR1cm4gX19udGZzX3JlYWRfaW9tYXBfYmVnaW4oaW5vZGUsIG9mZnNldCwgbGVuZ3RoLCBmbGFncywgaW9tYXAsXG5mcy9udGZzL2lvbWFwLmMtMzM2LVx0XHRcdHNyY21hcCwgZmFsc2UpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MzAKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgTlRGUyBJL08gTWFwcGluZyBGdW5jdGlvbnMqKgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBJIHNlZSB3ZSYjMzk7cmUgbG9va2luZyBhdCBgbnRmc19yZWFkX2lvbWFwX2JlZ2luYCBhbmQgYG50ZnNfc2Vla19pb21hcF9iZWdpbmAuIENsZWFybHksIHRoZXNlIGFyZSBlbnRyeSBwb2ludHMgZm9yIHNvbWUgY3J1Y2lhbCBJL08gbWFwcGluZyBvcGVyYXRpb25zIHdpdGhpbiB0aGUgTlRGUyBmaWxlc3lzdGVtIGNvZGUuIFRoZSBuYW1lcyBhcmUgcHJldHR5IHNlbGYtZXhwbGFuYXRvcnksIHN1Z2dlc3RpbmcgdGhleSYjMzk7cmUgaW52b2x2ZWQgaW4gaW5pdGlhdGluZyBlaXRoZXIgcmVhZCBvciBzZWVrIG9wZXJhdGlvbnMsIHByb2JhYmx5IGRlYWxpbmcgd2l0aCB0aGUgdHJhbnNsYXRpb24gYmV0d2VlbiBsb2dpY2FsIG9mZnNldHMgd2l0aGluIGEgZmlsZSBhbmQgcGh5c2ljYWwgZGlzayBsb2NhdGlvbnMuCgpNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dHMgaW4gd2hpY2ggdGhlc2UgZnVuY3Rpb25zIGFyZSBpbnZva2VkLiBLbm93aW5nIHRoZSBjYWxsZXJzIHdpbGwgdGVsbCBtZSBhIGxvdCBhYm91dCB0aGVpciBpbnRlbmRlZCB1c2U6IEFyZSB3ZSB0YWxraW5nIGFib3V0IGRpcmVjdCBJL08sIGJ1ZmZlcmVkIEkvTywgb3Igc29tZXRoaW5nIG1vcmUgc3BlY2lhbGl6ZWQ/IEFyZSB0aGVzZSB1c2VkIHByaW1hcmlseSBieSB0aGUga2VybmVsJiMzOTtzIGZpbGUgc3lzdGVtIGNvZGUgaXRzZWxmLCBvciBkbyB0aGV5IGludGVyZmFjZSBkaXJlY3RseSB3aXRoIHVzZXItc3BhY2UgYXBwbGljYXRpb25zIHRocm91Z2ggYSBzdGFuZGFyZCBBUEk/IFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIGJlIGNyaXRpY2FsIHRvIGdyYXNwaW5nIHRoZSBvdmVyYWxsIEkvTyBzdHJhdGVneSBhbmQgaG93IHRoZSBmaWxlIHN5c3RlbSBpbnRlcmFjdHMgd2l0aCB0aGUgc3RvcmFnZSBsYXllci4gU28sIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgdXNlIHNpdGVzIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O250ZnNfcmVhZF9pb21hcF9iZWdpbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvaW9tYXAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9udGZzL2lvbWFwLmM9Nzk9Y29uc3Qgc3RydWN0IGlvbWFwX3dyaXRlX29wcyBudGZzX2lvbWFwX2ZvbGlvX29wcyA9IHtcbi0tXG5mcy9udGZzL2lvbWFwLmMtODItXG5mcy9udGZzL2lvbWFwLmM6ODM6c3RhdGljIGludCBudGZzX3JlYWRfaW9tYXBfYmVnaW5fcmVzaWRlbnQoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbmd0aCxcbmZzL250ZnMvaW9tYXAuYy04NC1cdFx0dW5zaWduZWQgaW50IGZsYWdzLCBzdHJ1Y3QgaW9tYXAgKmlvbWFwKVxuLS1cbmZzL250ZnMvaW9tYXAuYy0xNDQtLypcbmZzL250ZnMvaW9tYXAuYzoxNDU6ICogbnRmc19yZWFkX2lvbWFwX2JlZ2luX25vbl9yZXNpZGVudCAtIG1hcCBub24tcmVzaWRlbnQgTlRGUyBmaWxlIGRhdGFcbmZzL250ZnMvaW9tYXAuYy0xNDYtICogQGlub2RlOlx0XHRpbm9kZSB0byBtYXBcbi0tXG5mcy9udGZzL2lvbWFwLmMtMTg0LSAqL1xuZnMvbnRmcy9pb21hcC5jOjE4NTpzdGF0aWMgaW50IG50ZnNfcmVhZF9pb21hcF9iZWdpbl9ub25fcmVzaWRlbnQoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IG9mZnNldCxcbmZzL250ZnMvaW9tYXAuYy0xODYtXHRcdGxvZmZfdCBsZW5ndGgsIHVuc2lnbmVkIGludCBmbGFncywgc3RydWN0IGlvbWFwICppb21hcCxcbi0tXG5mcy9udGZzL2lvbWFwLmMtMjYxLVxuZnMvbnRmcy9pb21hcC5jOjI2MjpzdGF0aWMgaW50IF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW5ndGgsXG5mcy9udGZzL2lvbWFwLmMtMjYzLVx0XHR1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCBpb21hcCAqaW9tYXAsIHN0cnVjdCBpb21hcCAqc3JjbWFwLFxuLS1cbmZzL250ZnMvaW9tYXAuYy0yNzQtXHRpZiAoTklub05vblJlc2lkZW50KG5pKSlcbmZzL250ZnMvaW9tYXAuYzoyNzU6XHRcdGVyciA9IG50ZnNfcmVhZF9pb21hcF9iZWdpbl9ub25fcmVzaWRlbnQoaW5vZGUsIG9mZnNldCwgbGVuZ3RoLFxuZnMvbnRmcy9pb21hcC5jLTI3Ni1cdFx0XHRcdFx0XHRcdCBmbGFncywgaW9tYXAsXG4tLVxuZnMvbnRmcy9pb21hcC5jLTI3OC1cdGVsc2VcbmZzL250ZnMvaW9tYXAuYzoyNzk6XHRcdGVyciA9IG50ZnNfcmVhZF9pb21hcF9iZWdpbl9yZXNpZGVudChpbm9kZSwgb2Zmc2V0LCBsZW5ndGgsXG5mcy9udGZzL2lvbWFwLmMtMjgwLVx0XHRcdFx0XHRcdCAgICAgZmxhZ3MsIGlvbWFwKTtcbi0tXG5mcy9udGZzL2lvbWFwLmMtMjg3LVxuZnMvbnRmcy9pb21hcC5jOjI4ODpzdGF0aWMgaW50IG50ZnNfcmVhZF9pb21hcF9iZWdpbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuZ3RoLFxuZnMvbnRmcy9pb21hcC5jLTI4OS1cdFx0dW5zaWduZWQgaW50IGZsYWdzLCBzdHJ1Y3QgaW9tYXAgKmlvbWFwLCBzdHJ1Y3QgaW9tYXAgKnNyY21hcClcbmZzL250ZnMvaW9tYXAuYy0yOTAte1xuZnMvbnRmcy9pb21hcC5jOjI5MTpcdHJldHVybiBfX250ZnNfcmVhZF9pb21hcF9iZWdpbihpbm9kZSwgb2Zmc2V0LCBsZW5ndGgsIGZsYWdzLCBpb21hcCxcbmZzL250ZnMvaW9tYXAuYy0yOTItXHRcdFx0c3JjbWFwLCB0cnVlKTtcbi0tXG5mcy9udGZzL2lvbWFwLmM9Mjk1PWNvbnN0IHN0cnVjdCBpb21hcF9vcHMgbnRmc19yZWFkX2lvbWFwX29wcyA9IHtcbmZzL250ZnMvaW9tYXAuYzoyOTY6XHQuaW9tYXBfYmVnaW4gPSBudGZzX3JlYWRfaW9tYXBfYmVnaW4sXG5mcy9udGZzL2lvbWFwLmMtMjk3LX07XG4tLVxuZnMvbnRmcy9pb21hcC5jPTMzMj1zdGF0aWMgaW50IG50ZnNfc2Vla19pb21hcF9iZWdpbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuZ3RoLFxuLS1cbmZzL250ZnMvaW9tYXAuYy0zMzQte1xuZnMvbnRmcy9pb21hcC5jOjMzNTpcdHJldHVybiBfX250ZnNfcmVhZF9pb21hcF9iZWdpbihpbm9kZSwgb2Zmc2V0LCBsZW5ndGgsIGZsYWdzLCBpb21hcCxcbmZzL250ZnMvaW9tYXAuYy0zMzYtXHRcdFx0c3JjbWFwLCBmYWxzZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDI6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc2MAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyB0aGUgcGVyc3BlY3RpdmUgb2Ygc29tZW9uZSBkZWVwbHkgZmFtaWxpYXIgd2l0aCBmaWxlIHN5c3RlbSBpbnRlcm5hbHM6CgoqKkludmVzdGlnYXRpbmcgTlRGUyBJL08gT3BlcmF0aW9ucyoqCgpSaWdodCwgc28gSSYjMzk7bSBwcmV0dHkgc3VyZSBgbnRmc19yZWFkX2lvbWFwX29wc2AgYW5kIGBudGZzX3NlZWtfaW9tYXBfb3BzYCBhcmUgY3J1Y2lhbCBmb3IgaGFuZGxpbmcgSS9PIHdpdGhpbiB0aGUgTlRGUyBmaWxlIHN5c3RlbS4gSSYjMzk7bSBnb2luZyB0byBiZXQgdGhleSB1c2Ugd2hhdGV2ZXIgdGhpcyAmIzM0O2l0JiMzNDsgaXMuIEkgc2hvdWxkIGRlZmluaXRlbHkgY29uZmlybSB0aGF0IGFzc3VtcHRpb24uIFRoZSBxdWlja2VzdCB3YXkgdG8gdW5kZXJzdGFuZCB0aGVpciByb2xlLCBhbmQgaG93ICYjMzQ7aXQmIzM0OyBmaXRzIGluLCBpcyB0byB0cmFjZSB0aGVpciB1c2FnZS4gTGV0IG1lIHN0YXJ0IGJ5IGxvb2tpbmcgZm9yIHdoZXJlIGBudGZzX3JlYWRfaW9tYXBfb3BzYCBpcyBhY3R1YWxseSBjYWxsZWQgd2l0aGluIHRoZSBjb2RlLiBUaGF0IHdpbGwgcXVpY2tseSBjbGFyaWZ5IHRoZSBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudGZzX3JlYWRfaW9tYXBfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvbnRmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9hb3BzLmM9NzA9c3RhdGljIGludCBudGZzX3JlYWRfZm9saW8oc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxuZnMvbnRmcy9hb3BzLmMtOTktXG5mcy9udGZzL2FvcHMuYzoxMDA6XHRpb21hcF9yZWFkX2ZvbGlvKFx1MDAyNm50ZnNfcmVhZF9pb21hcF9vcHMsIFx1MDAyNmN0eCwgTlVMTCk7XG5mcy9udGZzL2FvcHMuYy0xMDEtXHRyZXR1cm4gMDtcbi0tXG5mcy9udGZzL2FvcHMuYz0yMjU9c3RhdGljIHZvaWQgbnRmc19yZWFkYWhlYWQoc3RydWN0IHJlYWRhaGVhZF9jb250cm9sICpyYWMpXG4tLVxuZnMvbnRmcy9hb3BzLmMtMjQwLVx0XHRyZXR1cm47XG5mcy9udGZzL2FvcHMuYzoyNDE6XHRpb21hcF9yZWFkYWhlYWQoXHUwMDI2bnRmc19yZWFkX2lvbWFwX29wcywgXHUwMDI2Y3R4LCBOVUxMKTtcbmZzL250ZnMvYW9wcy5jLTI0Mi19XG4tLVxuZnMvbnRmcy9hb3BzLmM9MjczPXN0YXRpYyBpbnQgbnRmc19zd2FwX2FjdGl2YXRlKHN0cnVjdCBzd2FwX2luZm9fc3RydWN0ICpzaXMsXG4tLVxuZnMvbnRmcy9hb3BzLmMtMjc2LVx0cmV0dXJuIGlvbWFwX3N3YXBmaWxlX2FjdGl2YXRlKHNpcywgc3dhcF9maWxlLCBzcGFuLFxuZnMvbnRmcy9hb3BzLmM6Mjc3Olx0XHRcdFx1MDAyNm50ZnNfcmVhZF9pb21hcF9vcHMpO1xuZnMvbnRmcy9hb3BzLmMtMjc4LX1cbi0tXG5mcy9udGZzL2ZpbGUuYz00Mzg9c3RhdGljIHNzaXplX3QgbnRmc19maWxlX3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXG4tLVxuZnMvbnRmcy9maWxlLmMtNDYwLVx0XHRmaWxlX2FjY2Vzc2VkKGlvY2ItXHUwMDNla2lfZmlscCk7XG5mcy9udGZzL2ZpbGUuYzo0NjE6XHRcdHJldCA9IGlvbWFwX2Rpb19ydyhpb2NiLCB0bywgXHUwMDI2bnRmc19yZWFkX2lvbWFwX29wcywgTlVMTCwgMCxcbmZzL250ZnMvZmlsZS5jLTQ2Mi1cdFx0XHRcdE5VTEwsIDApO1xuLS1cbmZzL250ZnMvZmlsZS5jPTY3MD1zdGF0aWMgaW50IG50ZnNfZmllbWFwKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWVtYXBfZXh0ZW50X2luZm8gKmZpZWluZm8sXG4tLVxuZnMvbnRmcy9maWxlLmMtNjcyLXtcbmZzL250ZnMvZmlsZS5jOjY3MzpcdHJldHVybiBpb21hcF9maWVtYXAoaW5vZGUsIGZpZWluZm8sIHN0YXJ0LCBsZW4sIFx1MDAyNm50ZnNfcmVhZF9pb21hcF9vcHMpO1xuZnMvbnRmcy9maWxlLmMtNjc0LX1cbi0tXG5mcy9udGZzL2lvbWFwLmM9Mjg4PXN0YXRpYyBpbnQgbnRmc19yZWFkX2lvbWFwX2JlZ2luKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW5ndGgsXG4tLVxuZnMvbnRmcy9pb21hcC5jLTI5NC1cbmZzL250ZnMvaW9tYXAuYzoyOTU6Y29uc3Qgc3RydWN0IGlvbWFwX29wcyBudGZzX3JlYWRfaW9tYXBfb3BzID0ge1xuZnMvbnRmcy9pb21hcC5jLTI5Ni1cdC5pb21hcF9iZWdpbiA9IG50ZnNfcmVhZF9pb21hcF9iZWdpbixcbi0tXG5mcy9udGZzL2lvbWFwLmg9MTU9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBpb21hcF9vcHMgbnRmc193cml0ZV9pb21hcF9vcHM7XG5mcy9udGZzL2lvbWFwLmg6MTY6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBpb21hcF9vcHMgbnRmc19yZWFkX2lvbWFwX29wcztcbmZzL250ZnMvaW9tYXAuaC0xNy1leHRlcm4gY29uc3Qgc3RydWN0IGlvbWFwX29wcyBudGZzX3NlZWtfaW9tYXBfb3BzO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAwMjoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODQzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBOVEZTIEkvTyBPcGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IHNlZSB0aGlzIGZ1bmN0aW9uIGlzIGFjdGl2ZWx5IHVzZWQgYWNyb3NzIHNldmVyYWwga2V5IE5URlMgb3BlcmF0aW9uczogYG50ZnNfcmVhZF9mb2xpb2AsIGBudGZzX3JlYWRhaGVhZGAsIGBudGZzX3N3YXBfYWN0aXZhdGVgLCBgbnRmc19maWxlX3JlYWRfaXRlcmAsIGFuZCBgbnRmc19maWVtYXBgLiBUaGF0JiMzOTtzIGEgc3Ryb25nIGluZGljYXRpb24gdGhhdCBpdCYjMzk7cyBjcnVjaWFsIGFuZCBkZWZpbml0ZWx5IHJlYWNoYWJsZSBkdXJpbmcgbm9ybWFsIGZpbGUgc3lzdGVtIG9wZXJhdGlvbi4gSSYjMzk7bSBzZWVpbmcgYE5URlNfRlNgIGxpc3RlZCBhcyB0aGUgcmVxdWlyZWQgY29uZmlndXJhdGlvbiBvcHRpb24sIHdoaWNoIG1ha2VzIHNlbnNlLiBNeSBmb2N1cyBub3cgaXMgb24gdGhlc2Ugc3ltYm9sczogYF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luYCwgYG50ZnNfcmVhZF9pb21hcF9iZWdpbmAsIGFuZCBgbnRmc19zZWVrX2lvbWFwX2JlZ2luYC4gQWgsIHJpZ2h0LCBgX19udGZzX3JlYWRfaW9tYXBfYmVnaW5gIGlzIHRoZSBvbmUgdGhhdCB3YXMgbW9kaWZpZWQuCgpMZXQmIzM5O3MgcXVpY2tseSB2ZXJpZnkgdGhhdCBgTlRGU19GU2AgaXMgdGhlICpvbmx5KiBkZXBlbmRlbmN5LiBTZWVtcyBsaWtlIHRoZSBwcmltYXJ5IGNvbmZpZy4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkmIzM5O2xsIGNyb3NzLXJlZmVyZW5jZSB0aGUgc291cmNlIGZpbGVzLiBPa2F5LCBgZnMvbnRmcy9pb21hcC5jYCBpcyBvbmx5IGNvbXBpbGVkIHdoZW4gYENPTkZJR19OVEZTX0ZTYCBpcyBlbmFibGVkLCB3aGljaCByZWNvbmZpcm1zIHRoZSBwcmltYXJ5IGRlcGVuZGVuY3kuIEdvb2QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lvbWFwLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL250ZnMvTWFrZWZpbGU9NT1udGZzLXkgOj0gYW9wcy5vIGF0dHJpYi5vIGNvbGxhdGUubyBkaXIubyBmaWxlLm8gaW5kZXgubyBpbm9kZS5vIFxcXG4tLVxuZnMvbnRmcy9NYWtlZmlsZS03LVx0ICB1cGNhc2UubyBiaXRtYXAubyBsY25hbGxvYy5vIGxvZ2ZpbGUubyByZXBhcnNlLm8gY29tcHJlc3MubyBcXFxuZnMvbnRmcy9NYWtlZmlsZTo4Olx0ICBpb21hcC5vIGRlYnVnLm8gc3lzY3RsLm8gb2JqZWN0X2lkLm8gYmRldi1pby5vXG5mcy9udGZzL01ha2VmaWxlLTktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDAyOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0ODIKCQkJCQkJCW91dHB1dDogMTE5CgkJCQkJCQl0aG91Z2h0czogMjg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE5URlMgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGNvbmZpcm1pbmcgbXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nLiBZZXMsIGBpb21hcC5vYCBpcyBkZWZpbml0ZWx5IHBhcnQgb2YgYG50ZnMteWAsIGFuZCB0aGVyZWZvcmUgYE5URlNfRlNgIGlzIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBoYWQgYSBtb21lbnRhcnkgZmxpY2tlciBvZiBkb3VidCBhYm91dCBgTlRGU19GU2AgYmVpbmcgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBgTlRGUzNfRlNgLCBidXQgdGhlIHByZXNlbmNlIG9mIGBmcy9udGZzYCBwdXRzIHRoYXQgdG8gcmVzdC4gVGhlIHBhdGNoIGNsZWFybHkgbW9kaWZpZXMgYGZzL250ZnMvaW9tYXAuY2AsIHNvIGBOVEZTX0ZTYCBpdCBpcy4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgZm9jdXMgc3ltYm9scy4gYF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luYCwgYG50ZnNfcmVhZF9pb21hcF9iZWdpbmAsIGFuZCBgbnRmc19zZWVrX2lvbWFwX2JlZ2luYCBhcmUgdGhlIG9uZXMgdG8ga2VlcCBhbiBleWUgb24uIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBgX19udGZzX3JlYWRfaW9tYXBfYmVnaW5gIGlzIHN0YXRpYyB0byBjb25maXJtIGl0JiMzOTtzIHRoZSBjb3JyZWN0IHN5bWJvbC4gQWxyaWdodCwgaXQgaXMgc3RhdGljLiBUaGF04oCZcyBnb29kOyBub3cgSeKAmW0gc3VyZSBJ4oCZbSBvbiB0aGUgcmlnaHQgdHJhY2suCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc3ludGhlc2l6ZSBteSBmaW5kaW5ncy4gVGhlIHN5c3RlbSBuZWVkcyB0byBiZSBtYXJrZWQgYXMgd29ydGggZnV6emluZywgYW5kIHRoZSBhcHByb3ByaWF0ZSBjb25maWcgb3B0aW9uIGlzIGBOVEZTX0ZTYC4gVGhlIGNyaXRpY2FsIGZvY3VzIHN5bWJvbCBpcyBgX19udGZzX3JlYWRfaW9tYXBfYmVnaW5gLiBNeSByZWFzb25pbmcgaXMgdGhhdCB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSBsb2NraW5nIGxvZ2ljIHdpdGhpbiBgX19udGZzX3JlYWRfaW9tYXBfYmVnaW5gIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0sIHNvIGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBkaXJlY3RseSBpbXBhY3RzIGNvbmN1cnJlbnQgcmVhZC9zZWVrIG9wZXJhdGlvbnMuIFRoaXMga2luZCBvZiBtb2RpZmljYXRpb24gaGFzIHRoZSBwb3RlbnRpYWwgdG8gaW50cm9kdWNlIGRlYWRsb2NrcyBvciBmaXggcmFjZSBjb25kaXRpb25zLCBtYWtpbmcgaXQgYW4gZXhjZWxsZW50IGNhbmRpZGF0ZSBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMDI6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX250ZnNfcmVhZF9pb21hcF9iZWdpbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBsb2dpYyBpbiBgX19udGZzX3JlYWRfaW9tYXBfYmVnaW5gIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0sIGFkZGluZyBhIG11dGV4IGxvY2sgYXJvdW5kIHJlc2lkZW50IGFuZCBub24tcmVzaWRlbnQgaW9tYXAgYmVnaW4gY2FsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgY29uY3VycmVudCByZWFkcy9zZWVrcyBhbmQgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIGRlYWRsb2NrcyBvciBmaXggcmFjZXMsIG1ha2luZyBpdCBpbXBvcnRhbnQgdG8gZnV6ei4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TlRGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fbnRmc19yZWFkX2lvbWFwX2JlZ2luJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIGxvZ2ljIGluIGBfX250ZnNfcmVhZF9pb21hcF9iZWdpbmAgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSwgYWRkaW5nIGEgbXV0ZXggbG9jayBhcm91bmQgcmVzaWRlbnQgYW5kIG5vbi1yZXNpZGVudCBpb21hcCBiZWdpbiBjYWxscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBjb25jdXJyZW50IHJlYWRzL3NlZWtzIGFuZCBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgZGVhZGxvY2tzIG9yIGZpeCByYWNlcywgbWFraW5nIGl0IGltcG9ydGFudCB0byBmdXp6LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDI6MTU6MDIuMzQ3NDY4MjZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjM4MDgwMjUyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOVEZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19udGZzX3JlYWRfaW9tYXBfYmVnaW5cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBsb2dpYyBpbiBgX19udGZzX3JlYWRfaW9tYXBfYmVnaW5gIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0sIGFkZGluZyBhIG11dGV4IGxvY2sgYXJvdW5kIHJlc2lkZW50IGFuZCBub24tcmVzaWRlbnQgaW9tYXAgYmVnaW4gY2FsbHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGFmZmVjdHMgY29uY3VycmVudCByZWFkcy9zZWVrcyBhbmQgY291bGQgcG90ZW50aWFsbHkgaW50cm9kdWNlIGRlYWRsb2NrcyBvciBmaXggcmFjZXMsIG1ha2luZyBpdCBpbXBvcnRhbnQgdG8gZnV6ei5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDI6MTU6MDIuMzQ3NDc0NjNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMTM5NTU4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGRiMmM0ZjczNjg2M2Q1ZTVjYTFmYjZlNWI4NWU5ZGNlM2UyYWVkN2RcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdW4gMjYgMDI6MTU6MDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvbnRmcy9pb21hcC5jIGIvZnMvbnRmcy9pb21hcC5jXFxuaW5kZXggNTJlZWNmNWNiMjU2YWEuLjVmMTVhMDQzMmYwY2FmIDEwMDY0NFxcbi0tLSBhL2ZzL250ZnMvaW9tYXAuY1xcbisrKyBiL2ZzL250ZnMvaW9tYXAuY1xcbkBAIC0yNjMsMTEgKzI2MywyNiBAQCBzdGF0aWMgaW50IF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZVxcbiBcXHRcXHR1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCBpb21hcCAqaW9tYXAsIHN0cnVjdCBpb21hcCAqc3JjbWFwLFxcbiBcXHRcXHRib29sIG5lZWRfdW53cml0dGVuKVxcbiB7XFxuLVxcdGlmIChOSW5vTm9uUmVzaWRlbnQoTlRGU19JKGlub2RlKSkpXFxuLVxcdFxcdHJldHVybiBudGZzX3JlYWRfaW9tYXBfYmVnaW5fbm9uX3Jlc2lkZW50KGlub2RlLCBvZmZzZXQsIGxlbmd0aCxcXG4tXFx0XFx0XFx0XFx0ZmxhZ3MsIGlvbWFwLCBuZWVkX3Vud3JpdHRlbik7XFxuLVxcdHJldHVybiBudGZzX3JlYWRfaW9tYXBfYmVnaW5fcmVzaWRlbnQoaW5vZGUsIG9mZnNldCwgbGVuZ3RoLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgIGZsYWdzLCBpb21hcCk7XFxuK1xcdHN0cnVjdCBudGZzX2lub2RlICpuaSA9IE5URlNfSShpbm9kZSk7XFxuK1xcdHN0cnVjdCBudGZzX2lub2RlICpiYXNlX25pID0gTklub0F0dHIobmkpID8gbmktXFx1MDAzZWV4dC5iYXNlX250ZnNfaW5vIDogbmk7XFxuK1xcdGJvb2wgbG9ja19tcmVjID0gTklub0F0dHJMaXN0KGJhc2VfbmkpO1xcbitcXHRpbnQgZXJyO1xcbitcXG4rXFx0aWYgKGxvY2tfbXJlYylcXG4rXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2YmFzZV9uaS1cXHUwMDNlbXJlY19sb2NrKTtcXG4rXFxuK1xcdGlmIChOSW5vTm9uUmVzaWRlbnQobmkpKVxcbitcXHRcXHRlcnIgPSBudGZzX3JlYWRfaW9tYXBfYmVnaW5fbm9uX3Jlc2lkZW50KGlub2RlLCBvZmZzZXQsIGxlbmd0aCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0IGZsYWdzLCBpb21hcCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0XFx0IG5lZWRfdW53cml0dGVuKTtcXG4rXFx0ZWxzZVxcbitcXHRcXHRlcnIgPSBudGZzX3JlYWRfaW9tYXBfYmVnaW5fcmVzaWRlbnQoaW5vZGUsIG9mZnNldCwgbGVuZ3RoLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIGZsYWdzLCBpb21hcCk7XFxuK1xcbitcXHRpZiAobG9ja19tcmVjKVxcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmJhc2VfbmktXFx1MDAzZW1yZWNfbG9jayk7XFxuK1xcbitcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IG50ZnNfcmVhZF9pb21hcF9iZWdpbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuZ3RoLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMjoxNTowMi44Nzk1NTc1NDZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1ODQ4NzAzMTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5URlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX250ZnNfcmVhZF9pb21hcF9iZWdpblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIGxvZ2ljIGluIGBfX250ZnNfcmVhZF9pb21hcF9iZWdpbmAgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSwgYWRkaW5nIGEgbXV0ZXggbG9jayBhcm91bmQgcmVzaWRlbnQgYW5kIG5vbi1yZXNpZGVudCBpb21hcCBiZWdpbiBjYWxscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBjb25jdXJyZW50IHJlYWRzL3NlZWtzIGFuZCBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgZGVhZGxvY2tzIG9yIGZpeCByYWNlcywgbWFraW5nIGl0IGltcG9ydGFudCB0byBmdXp6LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGRiMmM0ZjczNjg2M2Q1ZTVjYTFmYjZlNWI4NWU5ZGNlM2UyYWVkN2RcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1biAyNiAwMjoxNTowMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL250ZnMvaW9tYXAuYyBiL2ZzL250ZnMvaW9tYXAuY1xuaW5kZXggNTJlZWNmNWNiMjU2YWEuLjVmMTVhMDQzMmYwY2FmIDEwMDY0NFxuLS0tIGEvZnMvbnRmcy9pb21hcC5jXG4rKysgYi9mcy9udGZzL2lvbWFwLmNcbkBAIC0yNjMsMTEgKzI2MywyNiBAQCBzdGF0aWMgaW50IF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZVxuIFx0XHR1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCBpb21hcCAqaW9tYXAsIHN0cnVjdCBpb21hcCAqc3JjbWFwLFxuIFx0XHRib29sIG5lZWRfdW53cml0dGVuKVxuIHtcbi1cdGlmIChOSW5vTm9uUmVzaWRlbnQoTlRGU19JKGlub2RlKSkpXG4tXHRcdHJldHVybiBudGZzX3JlYWRfaW9tYXBfYmVnaW5fbm9uX3Jlc2lkZW50KGlub2RlLCBvZmZzZXQsIGxlbmd0aCxcbi1cdFx0XHRcdGZsYWdzLCBpb21hcCwgbmVlZF91bndyaXR0ZW4pO1xuLVx0cmV0dXJuIG50ZnNfcmVhZF9pb21hcF9iZWdpbl9yZXNpZGVudChpbm9kZSwgb2Zmc2V0LCBsZW5ndGgsXG4tXHRcdFx0XHRcdCAgICAgZmxhZ3MsIGlvbWFwKTtcbitcdHN0cnVjdCBudGZzX2lub2RlICpuaSA9IE5URlNfSShpbm9kZSk7XG4rXHRzdHJ1Y3QgbnRmc19pbm9kZSAqYmFzZV9uaSA9IE5Jbm9BdHRyKG5pKSA/IG5pLVx1MDAzZWV4dC5iYXNlX250ZnNfaW5vIDogbmk7XG4rXHRib29sIGxvY2tfbXJlYyA9IE5Jbm9BdHRyTGlzdChiYXNlX25pKTtcbitcdGludCBlcnI7XG4rXG4rXHRpZiAobG9ja19tcmVjKVxuK1x0XHRtdXRleF9sb2NrKFx1MDAyNmJhc2VfbmktXHUwMDNlbXJlY19sb2NrKTtcbitcbitcdGlmIChOSW5vTm9uUmVzaWRlbnQobmkpKVxuK1x0XHRlcnIgPSBudGZzX3JlYWRfaW9tYXBfYmVnaW5fbm9uX3Jlc2lkZW50KGlub2RlLCBvZmZzZXQsIGxlbmd0aCxcbitcdFx0XHRcdFx0XHRcdCBmbGFncywgaW9tYXAsXG4rXHRcdFx0XHRcdFx0XHQgbmVlZF91bndyaXR0ZW4pO1xuK1x0ZWxzZVxuK1x0XHRlcnIgPSBudGZzX3JlYWRfaW9tYXBfYmVnaW5fcmVzaWRlbnQoaW5vZGUsIG9mZnNldCwgbGVuZ3RoLFxuK1x0XHRcdFx0XHRcdCAgICAgZmxhZ3MsIGlvbWFwKTtcbitcbitcdGlmIChsb2NrX21yZWMpXG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZiYXNlX25pLVx1MDAzZW1yZWNfbG9jayk7XG4rXG4rXHRyZXR1cm4gZXJyO1xuIH1cbiBcbiBzdGF0aWMgaW50IG50ZnNfcmVhZF9pb21hcF9iZWdpbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuZ3RoLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDI6MTU6MDIuODc5NTU5Njg2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDExNzU2MjU1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5URlMgSU9NQVAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIHR3ZWFraW5nIGBmcy9udGZzL2lvbWFwLmNgLiBTcGVjaWZpY2FsbHksIHRoZSBjaGFuZ2UgaXMgYXJvdW5kIHRoZSBgX19udGZzX3JlYWRfaW9tYXBfYmVnaW5gIGZ1bmN0aW9uLiBJdCBzZWVtcyB0aGV5J3ZlIGFkZGVkIGEgYG11dGV4X2xvY2soXHUwMDI2YmFzZV9uaS1cdTAwM2VtcmVjX2xvY2spYCBhcm91bmQgY2FsbHMgdG8gYG50ZnNfcmVhZF9pb21hcF9iZWdpbl9ub25fcmVzaWRlbnRgIGFuZCBgbnRmc19yZWFkX2lvbWFwX2JlZ2luX3Jlc2lkZW50YC4gUmlnaHQgYXdheSwgSSBzZWUgdGhpcyBhcyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIOKAkyB3ZSdyZSBjaGFuZ2luZyB0aGUgbG9ja2luZyBzdHJhdGVneSBoZXJlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJPa2F5LCBkb2VzIHRoaXMgb3BlbiB1cCBhbnkgbmV3IGZ1enppbmcgcG9zc2liaWxpdGllcz8gQXJlIHRoZXJlIG5vdyByYWNlIGNvbmRpdGlvbnMgdGhhdCBkaWRuJ3QgZXhpc3QgYmVmb3JlP1wiIEkgbmVlZCB0byB2ZXJpZnkgaWYgTlRGUyBpcyBldmVuIGZ1enphYmxlIGFuZCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgcmVxdWlyZWQgdG8gZW5hYmxlIGZ1enppbmcgZm9yIGl0LiBUaW1lIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmb3IgTlRGUyBhbmQgc2VlIHdoYXQgd2UncmUgd29ya2luZyB3aXRoLiBHb3R0YSBjaGVjayBgZnMvbnRmcy9pb21hcC5jYCB0byBjb25maXJtIHRoZSBmaWxlIGFuZCBsb2NhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE1NSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAyOjE1OjA2Ljk5NzEyNDU1NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTY1MTA0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTlRGU19GU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9udGZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbnRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvbnRmcy9LY29uZmlnOjI6Y29uZmlnIE5URlNfRlNcXG5mcy9udGZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTlRGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvbnRmcy9LY29uZmlnPTEzPWNvbmZpZyBOVEZTX0RFQlVHXFxuLS1cXG5mcy9udGZzL0tjb25maWctMzQtXFxuZnMvbnRmcy9LY29uZmlnOjM1OmNvbmZpZyBOVEZTX0ZTX1BPU0lYX0FDTFxcbmZzL250ZnMvS2NvbmZpZy0zNi1cXHRib29sIFxcXCJOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMjoxNTowNy4wNTI3ODI1OTNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjg0NjE3Mzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTlRGUyBSZWFkIElPTUFQIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyBjbGVhcmx5IGRlYWxpbmcgd2l0aCBgTlRGU19GU2AuIE15IGZvY3VzIG5vdyBzaGlmdHMgdG8gaG93IHJlYWQgb3BlcmF0aW9ucyBhcmUgaGFuZGxlZCwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgSU9NQVAgZnJhbWV3b3JrIGZvciB0aGlzIGZpbGVzeXN0ZW0uIFRoZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiBpcyBgX19udGZzX3JlYWRfaW9tYXBfYmVnaW5gLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZS4gSXQncyBwYXJ0IG9mIHRoZSBpb21hcCBvcGVyYXRpb25zIGZvciBOVEZTLlxuXG5MZXQncyBxdWlja2x5IHZlcmlmeSBpdHMgcmVhY2hhYmlsaXR5IHdpdGhpbiB0aGUgY29kZWJhc2UuIEknbGwgbmVlZCB0byBjb25maXJtIGl0cyBkZWZpbml0aW9uIGFuZCB1c2FnZS4gQSBxdWljayBzZWFyY2ggb2YgYGZzL250ZnMvaW9tYXAuY2Agc2hvdWxkIHJldmVhbCB0aGUgZGVmaW5pdGl2ZSBzb3VyY2UgY29kZSBmb3IgYF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luYCwgYWxsb3dpbmcgbWUgdG8gZGlzc2VjdCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGJyb2FkZXIgTlRGUyBJT01BUCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBzaG91bGQgcHJvdmlkZSB0aGUgaW5mb3JtYXRpb24gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBwYXJ0IG9mIHRoZSByZWFkIG9wZXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY5OCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAyOjE1OjEwLjczNzQwNDEyMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjE4ODY5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX250ZnNfcmVhZF9pb21hcF9iZWdpblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9udGZzL2lvbWFwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvbnRmcy9pb21hcC5jPTE4NT1zdGF0aWMgaW50IG50ZnNfcmVhZF9pb21hcF9iZWdpbl9ub25fcmVzaWRlbnQoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IG9mZnNldCxcXG4tLVxcbmZzL250ZnMvaW9tYXAuYy0yNjEtXFxuZnMvbnRmcy9pb21hcC5jOjI2MjpzdGF0aWMgaW50IF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW5ndGgsXFxuZnMvbnRmcy9pb21hcC5jLTI2My1cXHRcXHR1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCBpb21hcCAqaW9tYXAsIHN0cnVjdCBpb21hcCAqc3JjbWFwLFxcbi0tXFxuZnMvbnRmcy9pb21hcC5jPTI4OD1zdGF0aWMgaW50IG50ZnNfcmVhZF9pb21hcF9iZWdpbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuZ3RoLFxcbi0tXFxuZnMvbnRmcy9pb21hcC5jLTI5MC17XFxuZnMvbnRmcy9pb21hcC5jOjI5MTpcXHRyZXR1cm4gX19udGZzX3JlYWRfaW9tYXBfYmVnaW4oaW5vZGUsIG9mZnNldCwgbGVuZ3RoLCBmbGFncywgaW9tYXAsXFxuZnMvbnRmcy9pb21hcC5jLTI5Mi1cXHRcXHRcXHRzcmNtYXAsIHRydWUpO1xcbi0tXFxuZnMvbnRmcy9pb21hcC5jPTMzMj1zdGF0aWMgaW50IG50ZnNfc2Vla19pb21hcF9iZWdpbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuZ3RoLFxcbi0tXFxuZnMvbnRmcy9pb21hcC5jLTMzNC17XFxuZnMvbnRmcy9pb21hcC5jOjMzNTpcXHRyZXR1cm4gX19udGZzX3JlYWRfaW9tYXBfYmVnaW4oaW5vZGUsIG9mZnNldCwgbGVuZ3RoLCBmbGFncywgaW9tYXAsXFxuZnMvbnRmcy9pb21hcC5jLTMzNi1cXHRcXHRcXHRzcmNtYXAsIGZhbHNlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDI6MTU6MTAuNzkzNTk3MDQxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ2MTA3MTI4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIE5URlMgSS9PIE1hcHBpbmcgRnVuY3Rpb25zKipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW4uIEkgc2VlIHdlJ3JlIGxvb2tpbmcgYXQgYG50ZnNfcmVhZF9pb21hcF9iZWdpbmAgYW5kIGBudGZzX3NlZWtfaW9tYXBfYmVnaW5gLiBDbGVhcmx5LCB0aGVzZSBhcmUgZW50cnkgcG9pbnRzIGZvciBzb21lIGNydWNpYWwgSS9PIG1hcHBpbmcgb3BlcmF0aW9ucyB3aXRoaW4gdGhlIE5URlMgZmlsZXN5c3RlbSBjb2RlLiBUaGUgbmFtZXMgYXJlIHByZXR0eSBzZWxmLWV4cGxhbmF0b3J5LCBzdWdnZXN0aW5nIHRoZXkncmUgaW52b2x2ZWQgaW4gaW5pdGlhdGluZyBlaXRoZXIgcmVhZCBvciBzZWVrIG9wZXJhdGlvbnMsIHByb2JhYmx5IGRlYWxpbmcgd2l0aCB0aGUgdHJhbnNsYXRpb24gYmV0d2VlbiBsb2dpY2FsIG9mZnNldHMgd2l0aGluIGEgZmlsZSBhbmQgcGh5c2ljYWwgZGlzayBsb2NhdGlvbnMuXG5cbk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0cyBpbiB3aGljaCB0aGVzZSBmdW5jdGlvbnMgYXJlIGludm9rZWQuIEtub3dpbmcgdGhlIGNhbGxlcnMgd2lsbCB0ZWxsIG1lIGEgbG90IGFib3V0IHRoZWlyIGludGVuZGVkIHVzZTogQXJlIHdlIHRhbGtpbmcgYWJvdXQgZGlyZWN0IEkvTywgYnVmZmVyZWQgSS9PLCBvciBzb21ldGhpbmcgbW9yZSBzcGVjaWFsaXplZD8gQXJlIHRoZXNlIHVzZWQgcHJpbWFyaWx5IGJ5IHRoZSBrZXJuZWwncyBmaWxlIHN5c3RlbSBjb2RlIGl0c2VsZiwgb3IgZG8gdGhleSBpbnRlcmZhY2UgZGlyZWN0bHkgd2l0aCB1c2VyLXNwYWNlIGFwcGxpY2F0aW9ucyB0aHJvdWdoIGEgc3RhbmRhcmQgQVBJPyBVbmRlcnN0YW5kaW5nIHRoaXMgd2lsbCBiZSBjcml0aWNhbCB0byBncmFzcGluZyB0aGUgb3ZlcmFsbCBJL08gc3RyYXRlZ3kgYW5kIGhvdyB0aGUgZmlsZSBzeXN0ZW0gaW50ZXJhY3RzIHdpdGggdGhlIHN0b3JhZ2UgbGF5ZXIuIFNvLCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIHVzZSBzaXRlcyB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQzMCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAyOjE1OjE0LjI1NDY3MDg2NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjQwNTM5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudGZzX3JlYWRfaW9tYXBfYmVnaW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9pb21hcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL250ZnMvaW9tYXAuYz03OT1jb25zdCBzdHJ1Y3QgaW9tYXBfd3JpdGVfb3BzIG50ZnNfaW9tYXBfZm9saW9fb3BzID0ge1xcbi0tXFxuZnMvbnRmcy9pb21hcC5jLTgyLVxcbmZzL250ZnMvaW9tYXAuYzo4MzpzdGF0aWMgaW50IG50ZnNfcmVhZF9pb21hcF9iZWdpbl9yZXNpZGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuZ3RoLFxcbmZzL250ZnMvaW9tYXAuYy04NC1cXHRcXHR1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCBpb21hcCAqaW9tYXApXFxuLS1cXG5mcy9udGZzL2lvbWFwLmMtMTQ0LS8qXFxuZnMvbnRmcy9pb21hcC5jOjE0NTogKiBudGZzX3JlYWRfaW9tYXBfYmVnaW5fbm9uX3Jlc2lkZW50IC0gbWFwIG5vbi1yZXNpZGVudCBOVEZTIGZpbGUgZGF0YVxcbmZzL250ZnMvaW9tYXAuYy0xNDYtICogQGlub2RlOlxcdFxcdGlub2RlIHRvIG1hcFxcbi0tXFxuZnMvbnRmcy9pb21hcC5jLTE4NC0gKi9cXG5mcy9udGZzL2lvbWFwLmM6MTg1OnN0YXRpYyBpbnQgbnRmc19yZWFkX2lvbWFwX2JlZ2luX25vbl9yZXNpZGVudChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3Qgb2Zmc2V0LFxcbmZzL250ZnMvaW9tYXAuYy0xODYtXFx0XFx0bG9mZl90IGxlbmd0aCwgdW5zaWduZWQgaW50IGZsYWdzLCBzdHJ1Y3QgaW9tYXAgKmlvbWFwLFxcbi0tXFxuZnMvbnRmcy9pb21hcC5jLTI2MS1cXG5mcy9udGZzL2lvbWFwLmM6MjYyOnN0YXRpYyBpbnQgX19udGZzX3JlYWRfaW9tYXBfYmVnaW4oc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbmd0aCxcXG5mcy9udGZzL2lvbWFwLmMtMjYzLVxcdFxcdHVuc2lnbmVkIGludCBmbGFncywgc3RydWN0IGlvbWFwICppb21hcCwgc3RydWN0IGlvbWFwICpzcmNtYXAsXFxuLS1cXG5mcy9udGZzL2lvbWFwLmMtMjc0LVxcdGlmIChOSW5vTm9uUmVzaWRlbnQobmkpKVxcbmZzL250ZnMvaW9tYXAuYzoyNzU6XFx0XFx0ZXJyID0gbnRmc19yZWFkX2lvbWFwX2JlZ2luX25vbl9yZXNpZGVudChpbm9kZSwgb2Zmc2V0LCBsZW5ndGgsXFxuZnMvbnRmcy9pb21hcC5jLTI3Ni1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgZmxhZ3MsIGlvbWFwLFxcbi0tXFxuZnMvbnRmcy9pb21hcC5jLTI3OC1cXHRlbHNlXFxuZnMvbnRmcy9pb21hcC5jOjI3OTpcXHRcXHRlcnIgPSBudGZzX3JlYWRfaW9tYXBfYmVnaW5fcmVzaWRlbnQoaW5vZGUsIG9mZnNldCwgbGVuZ3RoLFxcbmZzL250ZnMvaW9tYXAuYy0yODAtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBmbGFncywgaW9tYXApO1xcbi0tXFxuZnMvbnRmcy9pb21hcC5jLTI4Ny1cXG5mcy9udGZzL2lvbWFwLmM6Mjg4OnN0YXRpYyBpbnQgbnRmc19yZWFkX2lvbWFwX2JlZ2luKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW5ndGgsXFxuZnMvbnRmcy9pb21hcC5jLTI4OS1cXHRcXHR1bnNpZ25lZCBpbnQgZmxhZ3MsIHN0cnVjdCBpb21hcCAqaW9tYXAsIHN0cnVjdCBpb21hcCAqc3JjbWFwKVxcbmZzL250ZnMvaW9tYXAuYy0yOTAte1xcbmZzL250ZnMvaW9tYXAuYzoyOTE6XFx0cmV0dXJuIF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luKGlub2RlLCBvZmZzZXQsIGxlbmd0aCwgZmxhZ3MsIGlvbWFwLFxcbmZzL250ZnMvaW9tYXAuYy0yOTItXFx0XFx0XFx0c3JjbWFwLCB0cnVlKTtcXG4tLVxcbmZzL250ZnMvaW9tYXAuYz0yOTU9Y29uc3Qgc3RydWN0IGlvbWFwX29wcyBudGZzX3JlYWRfaW9tYXBfb3BzID0ge1xcbmZzL250ZnMvaW9tYXAuYzoyOTY6XFx0LmlvbWFwX2JlZ2luID0gbnRmc19yZWFkX2lvbWFwX2JlZ2luLFxcbmZzL250ZnMvaW9tYXAuYy0yOTctfTtcXG4tLVxcbmZzL250ZnMvaW9tYXAuYz0zMzI9c3RhdGljIGludCBudGZzX3NlZWtfaW9tYXBfYmVnaW4oc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbmd0aCxcXG4tLVxcbmZzL250ZnMvaW9tYXAuYy0zMzQte1xcbmZzL250ZnMvaW9tYXAuYzozMzU6XFx0cmV0dXJuIF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luKGlub2RlLCBvZmZzZXQsIGxlbmd0aCwgZmxhZ3MsIGlvbWFwLFxcbmZzL250ZnMvaW9tYXAuYy0zMzYtXFx0XFx0XFx0c3JjbWFwLCBmYWxzZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDAyOjE1OjE0LjMxMTA4MjA3NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MzU2MzM2NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUgZGVlcGx5IGZhbWlsaWFyIHdpdGggZmlsZSBzeXN0ZW0gaW50ZXJuYWxzOlxuXG4qKkludmVzdGlnYXRpbmcgTlRGUyBJL08gT3BlcmF0aW9ucyoqXG5cblJpZ2h0LCBzbyBJJ20gcHJldHR5IHN1cmUgYG50ZnNfcmVhZF9pb21hcF9vcHNgIGFuZCBgbnRmc19zZWVrX2lvbWFwX29wc2AgYXJlIGNydWNpYWwgZm9yIGhhbmRsaW5nIEkvTyB3aXRoaW4gdGhlIE5URlMgZmlsZSBzeXN0ZW0uIEknbSBnb2luZyB0byBiZXQgdGhleSB1c2Ugd2hhdGV2ZXIgdGhpcyBcIml0XCIgaXMuIEkgc2hvdWxkIGRlZmluaXRlbHkgY29uZmlybSB0aGF0IGFzc3VtcHRpb24uIFRoZSBxdWlja2VzdCB3YXkgdG8gdW5kZXJzdGFuZCB0aGVpciByb2xlLCBhbmQgaG93IFwiaXRcIiBmaXRzIGluLCBpcyB0byB0cmFjZSB0aGVpciB1c2FnZS4gTGV0IG1lIHN0YXJ0IGJ5IGxvb2tpbmcgZm9yIHdoZXJlIGBudGZzX3JlYWRfaW9tYXBfb3BzYCBpcyBhY3R1YWxseSBjYWxsZWQgd2l0aGluIHRoZSBjb2RlLiBUaGF0IHdpbGwgcXVpY2tseSBjbGFyaWZ5IHRoZSBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzYwLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDI6MTU6MTcuNzQ2NzE4MjQ4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzYyNjIwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudGZzX3JlYWRfaW9tYXBfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL250ZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL250ZnMvYW9wcy5jPTcwPXN0YXRpYyBpbnQgbnRmc19yZWFkX2ZvbGlvKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxuZnMvbnRmcy9hb3BzLmMtOTktXFxuZnMvbnRmcy9hb3BzLmM6MTAwOlxcdGlvbWFwX3JlYWRfZm9saW8oXFx1MDAyNm50ZnNfcmVhZF9pb21hcF9vcHMsIFxcdTAwMjZjdHgsIE5VTEwpO1xcbmZzL250ZnMvYW9wcy5jLTEwMS1cXHRyZXR1cm4gMDtcXG4tLVxcbmZzL250ZnMvYW9wcy5jPTIyNT1zdGF0aWMgdm9pZCBudGZzX3JlYWRhaGVhZChzdHJ1Y3QgcmVhZGFoZWFkX2NvbnRyb2wgKnJhYylcXG4tLVxcbmZzL250ZnMvYW9wcy5jLTI0MC1cXHRcXHRyZXR1cm47XFxuZnMvbnRmcy9hb3BzLmM6MjQxOlxcdGlvbWFwX3JlYWRhaGVhZChcXHUwMDI2bnRmc19yZWFkX2lvbWFwX29wcywgXFx1MDAyNmN0eCwgTlVMTCk7XFxuZnMvbnRmcy9hb3BzLmMtMjQyLX1cXG4tLVxcbmZzL250ZnMvYW9wcy5jPTI3Mz1zdGF0aWMgaW50IG50ZnNfc3dhcF9hY3RpdmF0ZShzdHJ1Y3Qgc3dhcF9pbmZvX3N0cnVjdCAqc2lzLFxcbi0tXFxuZnMvbnRmcy9hb3BzLmMtMjc2LVxcdHJldHVybiBpb21hcF9zd2FwZmlsZV9hY3RpdmF0ZShzaXMsIHN3YXBfZmlsZSwgc3BhbixcXG5mcy9udGZzL2FvcHMuYzoyNzc6XFx0XFx0XFx0XFx1MDAyNm50ZnNfcmVhZF9pb21hcF9vcHMpO1xcbmZzL250ZnMvYW9wcy5jLTI3OC19XFxuLS1cXG5mcy9udGZzL2ZpbGUuYz00Mzg9c3RhdGljIHNzaXplX3QgbnRmc19maWxlX3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXFxuLS1cXG5mcy9udGZzL2ZpbGUuYy00NjAtXFx0XFx0ZmlsZV9hY2Nlc3NlZChpb2NiLVxcdTAwM2VraV9maWxwKTtcXG5mcy9udGZzL2ZpbGUuYzo0NjE6XFx0XFx0cmV0ID0gaW9tYXBfZGlvX3J3KGlvY2IsIHRvLCBcXHUwMDI2bnRmc19yZWFkX2lvbWFwX29wcywgTlVMTCwgMCxcXG5mcy9udGZzL2ZpbGUuYy00NjItXFx0XFx0XFx0XFx0TlVMTCwgMCk7XFxuLS1cXG5mcy9udGZzL2ZpbGUuYz02NzA9c3RhdGljIGludCBudGZzX2ZpZW1hcChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmllbWFwX2V4dGVudF9pbmZvICpmaWVpbmZvLFxcbi0tXFxuZnMvbnRmcy9maWxlLmMtNjcyLXtcXG5mcy9udGZzL2ZpbGUuYzo2NzM6XFx0cmV0dXJuIGlvbWFwX2ZpZW1hcChpbm9kZSwgZmllaW5mbywgc3RhcnQsIGxlbiwgXFx1MDAyNm50ZnNfcmVhZF9pb21hcF9vcHMpO1xcbmZzL250ZnMvZmlsZS5jLTY3NC19XFxuLS1cXG5mcy9udGZzL2lvbWFwLmM9Mjg4PXN0YXRpYyBpbnQgbnRmc19yZWFkX2lvbWFwX2JlZ2luKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW5ndGgsXFxuLS1cXG5mcy9udGZzL2lvbWFwLmMtMjk0LVxcbmZzL250ZnMvaW9tYXAuYzoyOTU6Y29uc3Qgc3RydWN0IGlvbWFwX29wcyBudGZzX3JlYWRfaW9tYXBfb3BzID0ge1xcbmZzL250ZnMvaW9tYXAuYy0yOTYtXFx0LmlvbWFwX2JlZ2luID0gbnRmc19yZWFkX2lvbWFwX2JlZ2luLFxcbi0tXFxuZnMvbnRmcy9pb21hcC5oPTE1PWV4dGVybiBjb25zdCBzdHJ1Y3QgaW9tYXBfb3BzIG50ZnNfd3JpdGVfaW9tYXBfb3BzO1xcbmZzL250ZnMvaW9tYXAuaDoxNjpleHRlcm4gY29uc3Qgc3RydWN0IGlvbWFwX29wcyBudGZzX3JlYWRfaW9tYXBfb3BzO1xcbmZzL250ZnMvaW9tYXAuaC0xNy1leHRlcm4gY29uc3Qgc3RydWN0IGlvbWFwX29wcyBudGZzX3NlZWtfaW9tYXBfb3BzO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMjoxNToxNy44MDQzNTUzMzdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM3MjU1MjMyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTlRGUyBJL08gT3BlcmF0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc2VlIHRoaXMgZnVuY3Rpb24gaXMgYWN0aXZlbHkgdXNlZCBhY3Jvc3Mgc2V2ZXJhbCBrZXkgTlRGUyBvcGVyYXRpb25zOiBgbnRmc19yZWFkX2ZvbGlvYCwgYG50ZnNfcmVhZGFoZWFkYCwgYG50ZnNfc3dhcF9hY3RpdmF0ZWAsIGBudGZzX2ZpbGVfcmVhZF9pdGVyYCwgYW5kIGBudGZzX2ZpZW1hcGAuIFRoYXQncyBhIHN0cm9uZyBpbmRpY2F0aW9uIHRoYXQgaXQncyBjcnVjaWFsIGFuZCBkZWZpbml0ZWx5IHJlYWNoYWJsZSBkdXJpbmcgbm9ybWFsIGZpbGUgc3lzdGVtIG9wZXJhdGlvbi4gSSdtIHNlZWluZyBgTlRGU19GU2AgbGlzdGVkIGFzIHRoZSByZXF1aXJlZCBjb25maWd1cmF0aW9uIG9wdGlvbiwgd2hpY2ggbWFrZXMgc2Vuc2UuIE15IGZvY3VzIG5vdyBpcyBvbiB0aGVzZSBzeW1ib2xzOiBgX19udGZzX3JlYWRfaW9tYXBfYmVnaW5gLCBgbnRmc19yZWFkX2lvbWFwX2JlZ2luYCwgYW5kIGBudGZzX3NlZWtfaW9tYXBfYmVnaW5gLiBBaCwgcmlnaHQsIGBfX250ZnNfcmVhZF9pb21hcF9iZWdpbmAgaXMgdGhlIG9uZSB0aGF0IHdhcyBtb2RpZmllZC5cblxuTGV0J3MgcXVpY2tseSB2ZXJpZnkgdGhhdCBgTlRGU19GU2AgaXMgdGhlICpvbmx5KiBkZXBlbmRlbmN5LiBTZWVtcyBsaWtlIHRoZSBwcmltYXJ5IGNvbmZpZy4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEknbGwgY3Jvc3MtcmVmZXJlbmNlIHRoZSBzb3VyY2UgZmlsZXMuIE9rYXksIGBmcy9udGZzL2lvbWFwLmNgIGlzIG9ubHkgY29tcGlsZWQgd2hlbiBgQ09ORklHX05URlNfRlNgIGlzIGVuYWJsZWQsIHdoaWNoIHJlY29uZmlybXMgdGhlIHByaW1hcnkgZGVwZW5kZW5jeS4gR29vZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTg0MywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQwMjoxNToyMi4xNzY5MTA3OTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1ODI1MTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvbWFwLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL01ha2VmaWxlPTU9bnRmcy15IDo9IGFvcHMubyBhdHRyaWIubyBjb2xsYXRlLm8gZGlyLm8gZmlsZS5vIGluZGV4Lm8gaW5vZGUubyBcXFxcXFxuLS1cXG5mcy9udGZzL01ha2VmaWxlLTctXFx0ICB1cGNhc2UubyBiaXRtYXAubyBsY25hbGxvYy5vIGxvZ2ZpbGUubyByZXBhcnNlLm8gY29tcHJlc3MubyBcXFxcXFxuZnMvbnRmcy9NYWtlZmlsZTo4OlxcdCAgaW9tYXAubyBkZWJ1Zy5vIHN5c2N0bC5vIG9iamVjdF9pZC5vIGJkZXYtaW8ub1xcbmZzL250ZnMvTWFrZWZpbGUtOS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDI6MTU6MjIuMjMyNzQzNzU3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MDkyNjU3NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTlRGUyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGNvbmZpcm1pbmcgbXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nLiBZZXMsIGBpb21hcC5vYCBpcyBkZWZpbml0ZWx5IHBhcnQgb2YgYG50ZnMteWAsIGFuZCB0aGVyZWZvcmUgYE5URlNfRlNgIGlzIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBoYWQgYSBtb21lbnRhcnkgZmxpY2tlciBvZiBkb3VidCBhYm91dCBgTlRGU19GU2AgYmVpbmcgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBgTlRGUzNfRlNgLCBidXQgdGhlIHByZXNlbmNlIG9mIGBmcy9udGZzYCBwdXRzIHRoYXQgdG8gcmVzdC4gVGhlIHBhdGNoIGNsZWFybHkgbW9kaWZpZXMgYGZzL250ZnMvaW9tYXAuY2AsIHNvIGBOVEZTX0ZTYCBpdCBpcy5cblxuTm93LCBsZXQncyBuYWlsIGRvd24gdGhlIGZvY3VzIHN5bWJvbHMuIGBfX250ZnNfcmVhZF9pb21hcF9iZWdpbmAsIGBudGZzX3JlYWRfaW9tYXBfYmVnaW5gLCBhbmQgYG50ZnNfc2Vla19pb21hcF9iZWdpbmAgYXJlIHRoZSBvbmVzIHRvIGtlZXAgYW4gZXllIG9uLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luYCBpcyBzdGF0aWMgdG8gY29uZmlybSBpdCdzIHRoZSBjb3JyZWN0IHN5bWJvbC4gQWxyaWdodCwgaXQgaXMgc3RhdGljLiBUaGF04oCZcyBnb29kOyBub3cgSeKAmW0gc3VyZSBJ4oCZbSBvbiB0aGUgcmlnaHQgdHJhY2suXG5cbkFscmlnaHQsIGxldCdzIHN5bnRoZXNpemUgbXkgZmluZGluZ3MuIFRoZSBzeXN0ZW0gbmVlZHMgdG8gYmUgbWFya2VkIGFzIHdvcnRoIGZ1enppbmcsIGFuZCB0aGUgYXBwcm9wcmlhdGUgY29uZmlnIG9wdGlvbiBpcyBgTlRGU19GU2AuIFRoZSBjcml0aWNhbCBmb2N1cyBzeW1ib2wgaXMgYF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luYC4gTXkgcmVhc29uaW5nIGlzIHRoYXQgdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGUgbG9ja2luZyBsb2dpYyB3aXRoaW4gYF9fbnRmc19yZWFkX2lvbWFwX2JlZ2luYCBpbiB0aGUgTlRGUyBmaWxlc3lzdGVtLCBzbyBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBkaXJlY3RseSBpbXBhY3RzIGNvbmN1cnJlbnQgcmVhZC9zZWVrIG9wZXJhdGlvbnMuIFRoaXMga2luZCBvZiBtb2RpZmljYXRpb24gaGFzIHRoZSBwb3RlbnRpYWwgdG8gaW50cm9kdWNlIGRlYWRsb2NrcyBvciBmaXggcmFjZSBjb25kaXRpb25zLCBtYWtpbmcgaXQgYW4gZXhjZWxsZW50IGNhbmRpZGF0ZSBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQ4MiwiT3V0cHV0VG9rZW5zIjoxMTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMDI6MTU6MjguNjQyMDExOTQ5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODYyNDExNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5URlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX250ZnNfcmVhZF9pb21hcF9iZWdpblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIGxvZ2ljIGluIGBfX250ZnNfcmVhZF9pb21hcF9iZWdpbmAgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSwgYWRkaW5nIGEgbXV0ZXggbG9jayBhcm91bmQgcmVzaWRlbnQgYW5kIG5vbi1yZXNpZGVudCBpb21hcCBiZWdpbiBjYWxscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBjb25jdXJyZW50IHJlYWRzL3NlZWtzIGFuZCBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgZGVhZGxvY2tzIG9yIGZpeCByYWNlcywgbWFraW5nIGl0IGltcG9ydGFudCB0byBmdXp6LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5URlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX250ZnNfcmVhZF9pb21hcF9iZWdpblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIGxvZ2ljIGluIGBfX250ZnNfcmVhZF9pb21hcF9iZWdpbmAgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSwgYWRkaW5nIGEgbXV0ZXggbG9jayBhcm91bmQgcmVzaWRlbnQgYW5kIG5vbi1yZXNpZGVudCBpb21hcCBiZWdpbiBjYWxscy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgYWZmZWN0cyBjb25jdXJyZW50IHJlYWRzL3NlZWtzIGFuZCBjb3VsZCBwb3RlbnRpYWxseSBpbnRyb2R1Y2UgZGVhZGxvY2tzIG9yIGZpeCByYWNlcywgbWFraW5nIGl0IGltcG9ydGFudCB0byBmdXp6LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowtsxw4[1] Phase: Succeeded StartedAt: 2026-06-26 02:15:39 +0000 UTC FinishedAt: 2026-06-26 02:15:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtsxw4[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-26 02:15:39 +0000 UTC FinishedAt: 2026-06-26 02:15:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtsxw4[2] Phase: Succeeded StartedAt: 2026-06-26 02:15:39 +0000 UTC FinishedAt: 2026-06-26 04:01:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 02:15:39 +0000 UTC FinishedAt: 2026-06-26 04:01:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 02:15:39 +0000 UTC FinishedAt: 2026-06-26 02:15:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 02:15:39 +0000 UTC FinishedAt: 2026-06-26 02:15:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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-workflowtsxw4/series-workflowtsxw4-convert-artifact-2728903314/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 02:15:50 +0000 UTC FinishedAt: 2026-06-26 02:39:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 02:15:50 +0000 UTC FinishedAt: 2026-06-26 02:39:08 +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:*6372fb37-b9d3-4b2d-a4bd-32ccb6e1aa5c,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-workflowtsxw4/series-workflowtsxw4-convert-artifact-2728903314/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": "ccb9a6eb-319f-4b98-9e67-89f973aba4e5", "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-workflowtsxw4/series-workflowtsxw4-build-action-851592208/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 02:15:50 +0000 UTC FinishedAt: 2026-06-26 02:38:58 +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:*6372fb37-b9d3-4b2d-a4bd-32ccb6e1aa5c,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-workflowtsxw4/series-workflowtsxw4-convert-artifact-2728903314/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": "ccb9a6eb-319f-4b98-9e67-89f973aba4e5", "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-workflowtsxw4/series-workflowtsxw4-build-action-851592208/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 02:39:08 +0000 UTC FinishedAt: 2026-06-26 02:39:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 02:39:08 +0000 UTC FinishedAt: 2026-06-26 02:39:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 02:39:08 +0000 UTC FinishedAt: 2026-06-26 02:39:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 02:39:08 +0000 UTC FinishedAt: 2026-06-26 02:39:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-workflowtsxw4/series-workflowtsxw4-convert-artifact-3390924717/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 02:39:18 +0000 UTC FinishedAt: 2026-06-26 02:41:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 02:39:18 +0000 UTC FinishedAt: 2026-06-26 02:40:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ccb9a6eb-319f-4b98-9e67-89f973aba4e5,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-workflowtsxw4/series-workflowtsxw4-build-action-851592208/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-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 02:41:06 +0000 UTC FinishedAt: 2026-06-26 02:41:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 02:41:06 +0000 UTC FinishedAt: 2026-06-26 02:41:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 02:41:06 +0000 UTC FinishedAt: 2026-06-26 03:06:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 02:41:06 +0000 UTC FinishedAt: 2026-06-26 03:06:09 +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:*6372fb37-b9d3-4b2d-a4bd-32ccb6e1aa5c,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-workflowtsxw4/series-workflowtsxw4-convert-artifact-3390924717/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": "c27162ee-e4f9-41e8-a6d9-36c215b3253a", "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-workflowtsxw4/series-workflowtsxw4-build-action-3143740425/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 02:41:06 +0000 UTC FinishedAt: 2026-06-26 03:04:46 +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:*6372fb37-b9d3-4b2d-a4bd-32ccb6e1aa5c,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-workflowtsxw4/series-workflowtsxw4-convert-artifact-3390924717/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": "c27162ee-e4f9-41e8-a6d9-36c215b3253a", "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-workflowtsxw4/series-workflowtsxw4-build-action-3143740425/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 03:06:09 +0000 UTC FinishedAt: 2026-06-26 03:06:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 03:06:09 +0000 UTC FinishedAt: 2026-06-26 03:06:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 03:06:09 +0000 UTC FinishedAt: 2026-06-26 03:08:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 03:06:09 +0000 UTC FinishedAt: 2026-06-26 03:08:01 +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:*c27162ee-e4f9-41e8-a6d9-36c215b3253a,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-workflowtsxw4/series-workflowtsxw4-build-action-3143740425/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-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 03:08:11 +0000 UTC FinishedAt: 2026-06-26 04:01:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 03:08:11 +0000 UTC FinishedAt: 2026-06-26 04:01:39 +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":["__ntfs_read_iomap_begin"],"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:*ccb9a6eb-319f-4b98-9e67-89f973aba4e5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c27162ee-e4f9-41e8-a6d9-36c215b3253a,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-workflowtsxw4/series-workflowtsxw4-build-action-851592208/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-workflowtsxw4/series-workflowtsxw4-build-action-3143740425/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 03:08:11 +0000 UTC FinishedAt: 2026-06-26 03:08:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 03:08:11 +0000 UTC FinishedAt: 2026-06-26 03:08:17 +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":["__ntfs_read_iomap_begin"],"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-workflowtsxw4/series-workflowtsxw4-convert-artifact-2490956050/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 03:08:11 +0000 UTC FinishedAt: 2026-06-26 03:08:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 03:08:11 +0000 UTC FinishedAt: 2026-06-26 03:08:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 03:08:11 +0000 UTC FinishedAt: 2026-06-26 03:08:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 03:08:21 +0000 UTC FinishedAt: 2026-06-26 04:01:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtsxw4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_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":["__ntfs_read_iomap_begin"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4edcdefd4083ae04b1a5656f4be6cd83ae919ef4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"77f8e31f-35e3-41c2-b720-773c02bbfc0f","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-26 03:08:21 +0000 UTC FinishedAt: 2026-06-26 04:01:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ccb9a6eb-319f-4b98-9e67-89f973aba4e5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c27162ee-e4f9-41e8-a6d9-36c215b3253a,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-workflowtsxw4/series-workflowtsxw4-build-action-851592208/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-workflowtsxw4/series-workflowtsxw4-build-action-3143740425/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-workflowtsxw4/series-workflowtsxw4-convert-artifact-2490956050/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,}