Name: series-workflow9cl8p Phase: Succeeded StartedAt: 2026-08-03 03:56:13 +0000 UTC FinishedAt: 2026-08-03 06:07:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cl8p[0] Phase: Succeeded StartedAt: 2026-08-03 03:56:13 +0000 UTC FinishedAt: 2026-08-03 04:18:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cl8p[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 03:56:13 +0000 UTC FinishedAt: 2026-08-03 04:18:59 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "8996fed3e53f53216f36183f6b6539846bc15a67", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ADFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "8996fed3e53f53216f36183f6b6539846bc15a67", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ADFS_FS" ], "series_id": "4f8809c0-225a-4e60-9842-49852cd5c44b" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "adfs_dir_copyfrom" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FERlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthZGZzX2Rpcl9jb3B5ZnJvbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZmZlciBjb3B5IGJ1ZyBpbiBgYWRmc19kaXJfY29weWZyb21gIHdoZW4gY29weWluZyBhY3Jvc3MgbXVsdGlwbGUgYnVmZmVycywgYW5kIGFkZHMgYSBib3VuZHMgY2hlY2sgZm9yIGBuYW1lX2xlbmAgaW4gYGFkZnNfZnBsdXNfZ2V0bmV4dGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIEFERlMgZmlsZXN5c3RlbSBkaXJlY3RvcnkgcGFyc2luZyBsb2dpYywgd2hpY2ggaXMgcmVhY2hhYmxlIHdoZW4gbW91bnRpbmcgYW5kIHJlYWRpbmcgYW4gQURGUyBpbWFnZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGExNDhmODhmNmE3MzNmOTczYzg5N2ZlNzRlYzNhZDdlZDI5Mjg0ZmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDA0OjE3OjU1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2FkZnMvZGlyLmMgYi9mcy9hZGZzL2Rpci5jXG5pbmRleCAxMWFmYTllMTU3YWE3Li40NDk1MzI0N2FjYWRkIDEwMDY0NFxuLS0tIGEvZnMvYWRmcy9kaXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvYWRmcy9kaXIuY1xuQEAgLTE5LDE1ICYjNDM7MTksMjAgQEAgaW50IGFkZnNfZGlyX2NvcHlmcm9tKHZvaWQgKmRzdCwgc3RydWN0IGFkZnNfZGlyICpkaXIsIHVuc2lnbmVkIGludCBvZmZzZXQsXG4gXHRcdCAgICAgIHNpemVfdCBsZW4pXG4ge1xuIFx0c3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGRpci1cdTAwM2VzYjtcbiYjNDM7XHRzaXplX3Qgc2l6ZSA9IChzaXplX3QpZGlyLVx1MDAzZW5yX2J1ZmZlcnMgXHUwMDNjXHUwMDNjIHNiLVx1MDAzZXNfYmxvY2tzaXplX2JpdHM7XG4gXHR1bnNpZ25lZCBpbnQgaW5kZXgsIHJlbWFpbjtcbiBcbiYjNDM7XHRpZiAob2Zmc2V0IFx1MDAzZT0gc2l6ZSB8fCBsZW4gXHUwMDNlIHNpemUgLSBvZmZzZXQpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4gXHRpbmRleCA9IG9mZnNldCBcdTAwM2VcdTAwM2Ugc2ItXHUwMDNlc19ibG9ja3NpemVfYml0cztcbiBcdG9mZnNldCBcdTAwMjY9IHNiLVx1MDAzZXNfYmxvY2tzaXplIC0gMTtcbi1cdHJlbWFpbiA9IHNiLVx1MDAzZXNfYmxvY2tzaXplIC0gb2Zmc2V0O1xuLVx0aWYgKGluZGV4ICYjNDM7IChyZW1haW4gXHUwMDNjIGxlbikgXHUwMDNlPSBkaXItXHUwMDNlbnJfYnVmZmVycylcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRpZiAocmVtYWluIFx1MDAzYyBsZW4pIHtcbiYjNDM7XHR3aGlsZSAobGVuKSB7XG4mIzQzO1x0XHRyZW1haW4gPSBzYi1cdTAwM2VzX2Jsb2Nrc2l6ZSAtIG9mZnNldDtcbiYjNDM7XHRcdGlmIChyZW1haW4gXHUwMDNlIGxlbilcbiYjNDM7XHRcdFx0cmVtYWluID0gbGVuO1xuJiM0MztcbiBcdFx0bWVtY3B5KGRzdCwgZGlyLVx1MDAzZWJoc1tpbmRleF0tXHUwMDNlYl9kYXRhICYjNDM7IG9mZnNldCwgcmVtYWluKTtcbiBcdFx0ZHN0ICYjNDM7PSByZW1haW47XG4gXHRcdGxlbiAtPSByZW1haW47XG5AQCAtMzUsOCAmIzQzOzQwLDYgQEAgaW50IGFkZnNfZGlyX2NvcHlmcm9tKHZvaWQgKmRzdCwgc3RydWN0IGFkZnNfZGlyICpkaXIsIHVuc2lnbmVkIGludCBvZmZzZXQsXG4gXHRcdG9mZnNldCA9IDA7XG4gXHR9XG4gXG4tXHRtZW1jcHkoZHN0LCBkaXItXHUwMDNlYmhzW2luZGV4XS1cdTAwM2ViX2RhdGEgJiM0Mzsgb2Zmc2V0LCBsZW4pO1xuLVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2ZzL2FkZnMvZGlyX2ZwbHVzLmMgYi9mcy9hZGZzL2Rpcl9mcGx1cy5jXG5pbmRleCA0YTE1OTI0MDE0ZGEyLi41MTdmZmNjOTE0MjllIDEwMDY0NFxuLS0tIGEvZnMvYWRmcy9kaXJfZnBsdXMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvYWRmcy9kaXJfZnBsdXMuY1xuQEAgLTE5Miw2ICYjNDM7MTkyLDggQEAgYWRmc19mcGx1c19nZXRuZXh0KHN0cnVjdCBhZGZzX2RpciAqZGlyLCBzdHJ1Y3Qgb2JqZWN0X2luZm8gKm9iailcbiBcdG9iai1cdTAwM2VpbmRhZGRyICA9IGxlMzJfdG9fY3B1KGJkZS5iaWdkaXJpbmRhZGRyKTtcbiBcdG9iai1cdTAwM2VhdHRyICAgICA9IGxlMzJfdG9fY3B1KGJkZS5iaWdkaXJhdHRyKTtcbiBcdG9iai1cdTAwM2VuYW1lX2xlbiA9IGxlMzJfdG9fY3B1KGJkZS5iaWdkaXJvYm5hbWVsZW4pO1xuJiM0MztcdGlmIChvYmotXHUwMDNlbmFtZV9sZW4gXHUwMDNlIEFERlNfRlBMVVNfTkFNRV9MRU4pXG4mIzQzO1x0XHRyZXR1cm4gLUVJTztcbiBcbiBcdG9mZnNldCA9IGFkZnNfZnBsdXNfb2Zmc2V0KGgsIGxlMzJfdG9fY3B1KGgtXHUwMDNlYmlnZGlyZW50cmllcykpO1xuIFx0b2Zmc2V0ICYjNDM7PSBsZTMyX3RvX2NwdShiZGUuYmlnZGlyb2JuYW1lcHRyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QURGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FkZnNfZGlyX2NvcHlmcm9tJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVmZmVyIGNvcHkgYnVnIGluIGBhZGZzX2Rpcl9jb3B5ZnJvbWAgd2hlbiBjb3B5aW5nIGFjcm9zcyBtdWx0aXBsZSBidWZmZXJzLCBhbmQgYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgYG5hbWVfbGVuYCBpbiBgYWRmc19mcGx1c19nZXRuZXh0YC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgQURGUyBmaWxlc3lzdGVtIGRpcmVjdG9yeSBwYXJzaW5nIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgd2hlbiBtb3VudGluZyBhbmQgcmVhZGluZyBhbiBBREZTIGltYWdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTE0OGY4OGY2YTczM2Y5NzNjODk3ZmU3NGVjM2FkN2VkMjkyODRmZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMgMDQ6MTc6NTUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9hZGZzL2Rpci5jIGIvZnMvYWRmcy9kaXIuYwppbmRleCAxMWFmYTllMTU3YWE3Li40NDk1MzI0N2FjYWRkIDEwMDY0NAotLS0gYS9mcy9hZGZzL2Rpci5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2FkZnMvZGlyLmMKQEAgLTE5LDE1ICYjNDM7MTksMjAgQEAgaW50IGFkZnNfZGlyX2NvcHlmcm9tKHZvaWQgKmRzdCwgc3RydWN0IGFkZnNfZGlyICpkaXIsIHVuc2lnbmVkIGludCBvZmZzZXQsCiAJCSAgICAgIHNpemVfdCBsZW4pCiB7CiAJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGRpci0mZ3Q7c2I7CiYjNDM7CXNpemVfdCBzaXplID0gKHNpemVfdClkaXItJmd0O25yX2J1ZmZlcnMgJmx0OyZsdDsgc2ItJmd0O3NfYmxvY2tzaXplX2JpdHM7CiAJdW5zaWduZWQgaW50IGluZGV4LCByZW1haW47CiAKJiM0MzsJaWYgKG9mZnNldCAmZ3Q7PSBzaXplIHx8IGxlbiAmZ3Q7IHNpemUgLSBvZmZzZXQpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKIAlpbmRleCA9IG9mZnNldCAmZ3Q7Jmd0OyBzYi0mZ3Q7c19ibG9ja3NpemVfYml0czsKIAlvZmZzZXQgJmFtcDs9IHNiLSZndDtzX2Jsb2Nrc2l6ZSAtIDE7Ci0JcmVtYWluID0gc2ItJmd0O3NfYmxvY2tzaXplIC0gb2Zmc2V0OwotCWlmIChpbmRleCAmIzQzOyAocmVtYWluICZsdDsgbGVuKSAmZ3Q7PSBkaXItJmd0O25yX2J1ZmZlcnMpCi0JCXJldHVybiAtRUlOVkFMOwogCi0JaWYgKHJlbWFpbiAmbHQ7IGxlbikgewomIzQzOwl3aGlsZSAobGVuKSB7CiYjNDM7CQlyZW1haW4gPSBzYi0mZ3Q7c19ibG9ja3NpemUgLSBvZmZzZXQ7CiYjNDM7CQlpZiAocmVtYWluICZndDsgbGVuKQomIzQzOwkJCXJlbWFpbiA9IGxlbjsKJiM0MzsKIAkJbWVtY3B5KGRzdCwgZGlyLSZndDtiaHNbaW5kZXhdLSZndDtiX2RhdGEgJiM0Mzsgb2Zmc2V0LCByZW1haW4pOwogCQlkc3QgJiM0Mzs9IHJlbWFpbjsKIAkJbGVuIC09IHJlbWFpbjsKQEAgLTM1LDggJiM0Mzs0MCw2IEBAIGludCBhZGZzX2Rpcl9jb3B5ZnJvbSh2b2lkICpkc3QsIHN0cnVjdCBhZGZzX2RpciAqZGlyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAogCQlvZmZzZXQgPSAwOwogCX0KIAotCW1lbWNweShkc3QsIGRpci0mZ3Q7YmhzW2luZGV4XS0mZ3Q7Yl9kYXRhICYjNDM7IG9mZnNldCwgbGVuKTsKLQogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9mcy9hZGZzL2Rpcl9mcGx1cy5jIGIvZnMvYWRmcy9kaXJfZnBsdXMuYwppbmRleCA0YTE1OTI0MDE0ZGEyLi41MTdmZmNjOTE0MjllIDEwMDY0NAotLS0gYS9mcy9hZGZzL2Rpcl9mcGx1cy5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2FkZnMvZGlyX2ZwbHVzLmMKQEAgLTE5Miw2ICYjNDM7MTkyLDggQEAgYWRmc19mcGx1c19nZXRuZXh0KHN0cnVjdCBhZGZzX2RpciAqZGlyLCBzdHJ1Y3Qgb2JqZWN0X2luZm8gKm9iaikKIAlvYmotJmd0O2luZGFkZHIgID0gbGUzMl90b19jcHUoYmRlLmJpZ2RpcmluZGFkZHIpOwogCW9iai0mZ3Q7YXR0ciAgICAgPSBsZTMyX3RvX2NwdShiZGUuYmlnZGlyYXR0cik7CiAJb2JqLSZndDtuYW1lX2xlbiA9IGxlMzJfdG9fY3B1KGJkZS5iaWdkaXJvYm5hbWVsZW4pOwomIzQzOwlpZiAob2JqLSZndDtuYW1lX2xlbiAmZ3Q7IEFERlNfRlBMVVNfTkFNRV9MRU4pCiYjNDM7CQlyZXR1cm4gLUVJTzsKIAogCW9mZnNldCA9IGFkZnNfZnBsdXNfb2Zmc2V0KGgsIGxlMzJfdG9fY3B1KGgtJmd0O2JpZ2RpcmVudHJpZXMpKTsKIAlvZmZzZXQgJiM0Mzs9IGxlMzJfdG9fY3B1KGJkZS5iaWdkaXJvYm5hbWVwdHIpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTg4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQURGUyBGaWxlc3lzdGVtIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0b3VjaGluZyBgZnMvYWRmcy9kaXIuY2AgYW5kIGBmcy9hZGZzL2Rpcl9mcGx1cy5jYC4gU2VlbXMgbGlrZSB0aGUgcHJpbWFyeSBmb2N1cyBpcyBvbiBmaXhpbmcgYGFkZnNfZGlyX2NvcHlmcm9tYCB0byBoYW5kbGUgYnVmZmVyIGNvcGllcyBwcm9wZXJseS4gSXQgYWxzbyB0aHJvd3MgaW4gYSBzYW5pdHkgY2hlY2sgd2l0aGluIGBhZGZzX2ZwbHVzX2dldG5leHRgIHRvIG1ha2Ugc3VyZSB3ZSBkb24mIzM5O3QgZW5kIHVwIHdpdGggc29tZSBjcmF6eSBsb25nIGZpbGVuYW1lcy4gCgpMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGNvbmZpcm0gdGhlIHNwZWNpZmljIGZ1bmN0aW9ucyBiZWluZyBtb2RpZmllZDogYGFkZnNfZGlyX2NvcHlmcm9tYCBhbmQgYGFkZnNfZnBsdXNfZ2V0bmV4dGAuCgpOZXh0LCBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnLCBzcGVjaWZpY2FsbHkgYGZzL2FkZnMvS2NvbmZpZ2AsIHRvIGNvbmZpcm0gdGhhdCB0aGUgQURGUyBmaWxlc3lzdGVtIGlzIGV2ZW4gZW5hYmxlZCAoYENPTkZJR19BREZTX0ZTYCkuIFdlIGNhbiYjMzk7dCBiZSBwYXRjaGluZyBzb21ldGhpbmcgdGhhdCBpc24mIzM5O3QgYnVpbHQuCgpOb3csIGxldCYjMzk7cyB0cmFjZSB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IHVzZWQuIEEgcXVpY2sgc2VhcmNoIHNob3VsZCByZXZlYWwgdGhlaXIgcmVhY2hhYmlsaXR5LiBPa2F5LCBzbyBgYWRmc19kaXJfY29weWZyb21gIHBvcHMgdXAgaW4gYm90aCBgZnMvYWRmcy9kaXJfZnBsdXMuY2AgYW5kIGBmcy9hZGZzL2Rpcl9mLmNgLiBgYWRmc19mcGx1c19nZXRuZXh0YCBpcyBjbGVhcmx5IHVzZWQgYXMgYSBjYWxsYmFjayBmdW5jdGlvbiB3aXRoaW4gdGhlIGBzdHJ1Y3QgYWRmc19kaXJfb3BzYC4gCgpUaW1lIGZvciBhIHF1aWNrIGdyZXAgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMgYW5kIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBpbnRlcmFjdGlvbnMgdG8gYmUgYXdhcmUgb2YuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWRmc19kaXJfY29weWZyb20mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9hZGZzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9hZGZzL2FkZnMuaD0xNzQ9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBhZGZzX2Rpcl9vcHMgYWRmc19mcGx1c19kaXJfb3BzO1xuZnMvYWRmcy9hZGZzLmgtMTc1LVxuZnMvYWRmcy9hZGZzLmg6MTc2OmludCBhZGZzX2Rpcl9jb3B5ZnJvbSh2b2lkICpkc3QsIHN0cnVjdCBhZGZzX2RpciAqZGlyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LFxuZnMvYWRmcy9hZGZzLmgtMTc3LVx0XHQgICAgICBzaXplX3QgbGVuKTtcbi0tXG5mcy9hZGZzL2Rpci5jPTE2PXN0YXRpYyBERUNMQVJFX1JXU0VNKGFkZnNfZGlyX3J3c2VtKTtcbmZzL2FkZnMvZGlyLmMtMTctXG5mcy9hZGZzL2Rpci5jOjE4OmludCBhZGZzX2Rpcl9jb3B5ZnJvbSh2b2lkICpkc3QsIHN0cnVjdCBhZGZzX2RpciAqZGlyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LFxuZnMvYWRmcy9kaXIuYy0xOS1cdFx0ICAgICAgc2l6ZV90IGxlbilcbi0tXG5mcy9hZGZzL2Rpcl9mLmM9MjE1PV9fYWRmc19kaXJfZ2V0KHN0cnVjdCBhZGZzX2RpciAqZGlyLCBpbnQgcG9zLCBzdHJ1Y3Qgb2JqZWN0X2luZm8gKm9iailcbi0tXG5mcy9hZGZzL2Rpcl9mLmMtMjE5LVxuZnMvYWRmcy9kaXJfZi5jOjIyMDpcdHJldCA9IGFkZnNfZGlyX2NvcHlmcm9tKFx1MDAyNmRlLCBkaXIsIHBvcywgMjYpO1xuZnMvYWRmcy9kaXJfZi5jLTIyMS1cdGlmIChyZXQpXG4tLVxuZnMvYWRmcy9kaXJfZi5jPTI3MT1zdGF0aWMgaW50IGFkZnNfZl91cGRhdGUoc3RydWN0IGFkZnNfZGlyICpkaXIsIHN0cnVjdCBvYmplY3RfaW5mbyAqb2JqKVxuLS1cbmZzL2FkZnMvZGlyX2YuYy0yNzktXHRcdG9mZnNldCAmIzQzOz0gc2l6ZW9mKGRlKTtcbmZzL2FkZnMvZGlyX2YuYzoyODA6XHRcdHJldCA9IGFkZnNfZGlyX2NvcHlmcm9tKFx1MDAyNmRlLCBkaXIsIG9mZnNldCwgc2l6ZW9mKGRlKSk7XG5mcy9hZGZzL2Rpcl9mLmMtMjgxLVx0XHRpZiAocmV0KSB7XG4tLVxuZnMvYWRmcy9kaXJfZnBsdXMuYz0xNzI9YWRmc19mcGx1c19nZXRuZXh0KHN0cnVjdCBhZGZzX2RpciAqZGlyLCBzdHJ1Y3Qgb2JqZWN0X2luZm8gKm9iailcbi0tXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTE4My1cbmZzL2FkZnMvZGlyX2ZwbHVzLmM6MTg0Olx0cmV0ID0gYWRmc19kaXJfY29weWZyb20oXHUwMDI2YmRlLCBkaXIsIG9mZnNldCxcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMTg1LVx0XHRcdFx0c2l6ZW9mKHN0cnVjdCBhZGZzX2JpZ2RpcmVudHJ5KSk7XG4tLVxuZnMvYWRmcy9kaXJfZnBsdXMuYy0yMDAtXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjIwMTpcdHJldCA9IGFkZnNfZGlyX2NvcHlmcm9tKG9iai1cdTAwM2VuYW1lLCBkaXIsIG9mZnNldCwgb2JqLVx1MDAzZW5hbWVfbGVuKTtcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjAyLVx0aWYgKHJldClcbi0tXG5mcy9hZGZzL2Rpcl9mcGx1cy5jPTIzMj1zdGF0aWMgaW50IGFkZnNfZnBsdXNfdXBkYXRlKHN0cnVjdCBhZGZzX2RpciAqZGlyLCBzdHJ1Y3Qgb2JqZWN0X2luZm8gKm9iailcbi0tXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTI0Ni1cdFx0fVxuZnMvYWRmcy9kaXJfZnBsdXMuYzoyNDc6XHRcdHJldCA9IGFkZnNfZGlyX2NvcHlmcm9tKFx1MDAyNmJkZSwgZGlyLCBvZmZzZXQsIHNpemVvZihiZGUpKTtcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjQ4LVx0XHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAwMwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEFERlMgRGlyZWN0b3J5IENvZGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIHRvIGJlIHRvdWNoaW5nIHR3byBmdW5jdGlvbnM6IGBhZGZzX2Rpcl9jb3B5ZnJvbWAgYW5kIGBhZGZzX2ZwbHVzX2dldG5leHRgLiBUaGUgZmlyc3Qgb25lLCBgYWRmc19kaXJfY29weWZyb21gLCBpcyBhcHBhcmVudGx5IG5vbi1zdGF0aWMuIEludGVyZXN0aW5nLiBCdXQgaG9sZCBvbiwgSSBzZWVtIHRvIHJlbWVtYmVyIGBhZGZzX2ZwbHVzX2dldG5leHRgIGJlaW5nIHN0YXRpYy4gTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYnkgcXVpY2tseSBvcGVuaW5nIHVwIGBmcy9hZGZzL2Rpcl9mcGx1cy5jYC4gTmVlZCB0byBjb25maXJtIGlmIGl0IHJlYWxseSBpcyBzdGF0aWMgaW4gdGhhdCBmaWxlLCBvdGhlcndpc2UsIHNvbWV0aGluZyBzZWVtcyBvZmYuIEdvdHRhIGtlZXAgZGlnZ2luZyB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FkZnNfZnBsdXNfZ2V0bmV4dCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2FkZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2FkZnMvZGlyX2ZwbHVzLmM9MTcxPXN0YXRpYyBpbnRcbmZzL2FkZnMvZGlyX2ZwbHVzLmM6MTcyOmFkZnNfZnBsdXNfZ2V0bmV4dChzdHJ1Y3QgYWRmc19kaXIgKmRpciwgc3RydWN0IG9iamVjdF9pbmZvICpvYmopXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTE3My17XG4tLVxuZnMvYWRmcy9kaXJfZnBsdXMuYz0yMTI9c3RhdGljIGludCBhZGZzX2ZwbHVzX2l0ZXJhdGUoc3RydWN0IGFkZnNfZGlyICpkaXIsIHN0cnVjdCBkaXJfY29udGV4dCAqY3R4KVxuLS1cbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjIxLVxuZnMvYWRmcy9kaXJfZnBsdXMuYzoyMjI6XHR3aGlsZSAoIWFkZnNfZnBsdXNfZ2V0bmV4dChkaXIsIFx1MDAyNm9iaikpIHtcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjIzLVx0XHRpZiAoIWRpcl9lbWl0KGN0eCwgb2JqLm5hbWUsIG9iai5uYW1lX2xlbixcbi0tXG5mcy9hZGZzL2Rpcl9mcGx1cy5jPTI4Mj1jb25zdCBzdHJ1Y3QgYWRmc19kaXJfb3BzIGFkZnNfZnBsdXNfZGlyX29wcyA9IHtcbi0tXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTI4NS1cdC5zZXRwb3NcdFx0PSBhZGZzX2ZwbHVzX3NldHBvcyxcbmZzL2FkZnMvZGlyX2ZwbHVzLmM6Mjg2Olx0LmdldG5leHRcdD0gYWRmc19mcGx1c19nZXRuZXh0LFxuZnMvYWRmcy9kaXJfZnBsdXMuYy0yODctXHQudXBkYXRlXHRcdD0gYWRmc19mcGx1c191cGRhdGUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYzNgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEFERlMgRGlyZWN0b3J5IEl0ZXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIEFERlMgZmlsZSBzeXN0ZW0gY29kZSBhbmQgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3Qgd2F5IHRvIHRyYWNlIHRoZSBkaXJlY3RvcnkgaXRlcmF0aW9uIHByb2Nlc3MuIEkgc2VlIHRoYXQgYGFkZnNfZnBsdXNfZ2V0bmV4dGAgaXMgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFJpZ2h0IGF3YXksIHRoYXQgdGVsbHMgbWUgaXQmIzM5O3Mgbm90IHRoZSBpZGVhbCBjYW5kaWRhdGUgZm9yIGEgZm9jdXMgc3ltYm9sLCBzaW5jZSBpdCYjMzk7cyBub3QgdmlzaWJsZSBvdXRzaWRlIGl0cyBvd24gY29tcGlsYXRpb24gdW5pdC4KCkluc3RlYWQsIEkgbmVlZCB0byBsb29rIGZvciBzb21ldGhpbmcgdGhhdCAqdXNlcyogYGFkZnNfZnBsdXNfZ2V0bmV4dGAuIEkgY2FuIHNlZSBmcm9tIGhlcmUgdGhhdCBgYWRmc19kaXJfY29weWZyb21gLCBgYWRmc19mcGx1c19pdGVyYXRlYCwgb3IgYGFkZnNfZnBsdXNfcmVhZGAgY291bGQgYmUgZ29vZCBjaG9pY2VzLCBhcyBlaXRoZXIgdGhlIGNhbGxlcnMgb3IgdGhlIG9wcyBzdHJ1Y3QgbWVtYmVycyBjb3VsZCBleHBvc2UgdGhlIGludGVuZGVkIGZsb3cuCgpIb2xkIG9uIGEgbWludXRlLi4uIEkganVzdCByZW1lbWJlcmVkIHRoYXQgYGFkZnNfZnBsdXNfZ2V0bmV4dGAgaXMgYWN0dWFsbHkgYXNzaWduZWQgdG8gdGhlIGAuZ2V0bmV4dGAgZmllbGQgd2l0aGluIHRoZSBgYWRmc19mcGx1c19kaXJfb3BzYCBzdHJ1Y3R1cmUuIFRoYXTigJlzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uISBOb3cgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBjYWxsZXJzIG9mIHRoYXQgYC5nZXRuZXh0YCBmdW5jdGlvbiBwb2ludGVyLiBBY2NvcmRpbmcgdG8gdGhlIGNvZGUsIHRob3NlIGNhbGxlcnMgYXJlIGxvY2F0ZWQgaW4gYGZzL2FkZnMvZGlyLmNgLiBPa2F5LCBsZXTigJlzIGdvIGRpcmVjdGx5IHRvIGBmcy9hZGZzL2Rpci5jYCBhbmQgdmVyaWZ5IHRob3NlIGNvbm5lY3Rpb25zIGFuZCBob3cgdGhlIGRpcmVjdG9yeSBpdGVyYXRpb24gaXMgYWN0dWFsbHkgaGFuZGxlZC4gVGhhdCYjMzk7cyB0aGUgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1xcLmdldG5leHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9hZGZzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9hZGZzL2Rpcl9mLmM9MzE3PWNvbnN0IHN0cnVjdCBhZGZzX2Rpcl9vcHMgYWRmc19mX2Rpcl9vcHMgPSB7XG4tLVxuZnMvYWRmcy9kaXJfZi5jLTMyMC1cdC5zZXRwb3NcdFx0PSBhZGZzX2Zfc2V0cG9zLFxuZnMvYWRmcy9kaXJfZi5jOjMyMTpcdC5nZXRuZXh0XHQ9IGFkZnNfZl9nZXRuZXh0LFxuZnMvYWRmcy9kaXJfZi5jLTMyMi1cdC51cGRhdGVcdFx0PSBhZGZzX2ZfdXBkYXRlLFxuLS1cbmZzL2FkZnMvZGlyX2ZwbHVzLmM9MjgyPWNvbnN0IHN0cnVjdCBhZGZzX2Rpcl9vcHMgYWRmc19mcGx1c19kaXJfb3BzID0ge1xuLS1cbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjg1LVx0LnNldHBvc1x0XHQ9IGFkZnNfZnBsdXNfc2V0cG9zLFxuZnMvYWRmcy9kaXJfZnBsdXMuYzoyODY6XHQuZ2V0bmV4dFx0PSBhZGZzX2ZwbHVzX2dldG5leHQsXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTI4Ny1cdC51cGRhdGVcdFx0PSBhZGZzX2ZwbHVzX3VwZGF0ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzY5CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6CgoqKk5hdmlnYXRpbmcgdGhlIEZpbGUgU3lzdGVtKioKCk9rYXksIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgYGFkZnNgIGZpbGUgc3lzdGVtLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gaG93IHRoZSBzeXN0ZW0gcmV0cmlldmVzIHRoZSAmIzM0O25leHQmIzM0OyBlbGVtZW50LiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gc3RhcnQgYnkgc2VhcmNoaW5nIGZvciBgLSZndDtnZXRuZXh0YC4gVGhpcyBpcyBhIGNvbW1vbiBwYXR0ZXJuIGZvciBsaW5rZWQgbGlzdHMgb3IgaXRlcmF0b3JzIGluIEMtbGlrZSBjb2RlLCBzbyBpdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gbG9vayBmb3Igd2hlcmUgdGhlIG5leHQgZWxlbWVudCBpbiBhIGRhdGEgc3RydWN0dXJlIGlzIGFjY2Vzc2VkLiBUYXJnZXRpbmcgYGZzL2FkZnMvYCBpcyBsb2dpY2FsOyB0aGUgJiMzNDtmcyYjMzQ7IHBhcnQgdGVsbHMgbWUgaXTigJlzIHJlbGF0ZWQgdG8gdGhlIGZpbGUgc3lzdGVtLCBhbmQgJiMzNDthZGZzJiMzNDsgZXhwbGljaXRseSBuYXJyb3dzIHRoZSBzY29wZS4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB3aWxsIGxpa2VseSBwb2ludCBtZSB0byBhIGZ1bmN0aW9uIG9yIG1hY3JvIHJlc3BvbnNpYmxlIGZvciB0cmF2ZXJzaW5nIG9yIGl0ZXJhdGluZyBvdmVyIGRpcmVjdG9yeSBlbnRyaWVzLCBmaWxlIG1ldGFkYXRhLCBvciBhbGxvY2F0aW9uIHN0cnVjdHVyZXMgd2l0aGluIHRoZSBBREZTIGltcGxlbWVudGF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRvIGtlZXAgdHJhY2sgb2YgdGhlIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlcyBiZWluZyB1c2VkLiBJJiMzOTtsbCBzZWFyY2ggZm9yIGAtJmd0O2dldG5leHRgIGFuZCBzdGFydCB0aGVyZS4gRnJvbSB0aGVyZSBJJiMzOTtsbCBsaWtlbHkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgaG93IHRoYXQgZWxlbWVudCBpcyBzZWxlY3RlZCwgYW5kIGhvdyB0aGUgdHJhdmVyc2FsIGxvZ2ljIGlzIGhhbmRsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0Oy1cdTAwM2VnZXRuZXh0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvYWRmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvYWRmcy9kaXIuYz0zNTE9c3RhdGljIGludCBhZGZzX2Rpcl9sb29rdXBfYnluYW1lKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHN0cnVjdCBxc3RyICpxc3RyLFxuLS1cbmZzL2FkZnMvZGlyLmMtMzcyLVx0bmFtZV9sZW4gPSBxc3RyLVx1MDAzZWxlbjtcbmZzL2FkZnMvZGlyLmM6MzczOlx0d2hpbGUgKG9wcy1cdTAwM2VnZXRuZXh0KFx1MDAyNmRpciwgb2JqKSA9PSAwKSB7XG5mcy9hZGZzL2Rpci5jLTM3NC1cdFx0aWYgKCFfX2FkZnNfY29tcGFyZShuYW1lLCBuYW1lX2xlbiwgb2JqLVx1MDAzZW5hbWUsIG9iai1cdTAwM2VuYW1lX2xlbikpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc5OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydCBpbiB0aGlzIGFyZWE6CgoqKkRpZ2dpbmcgaW50byB0aGUgQURGUyBEaXJlY3RvcnkgTG9va3VwKioKCkFscmlnaHQsIG15IGZvY3VzIGlzIG5vdyBvbiB0aGUgYGFkZnNfZGlyX2xvb2t1cF9ieW5hbWVgIGZ1bmN0aW9uLiBJIHNlZSB0aGF0IGl0IGNhbGxzIGBvcHMtJmd0O2dldG5leHRgLCBhbmQgdGhhdCYjMzk7cyBpbW1lZGlhdGVseSB1c2VmdWwgYXMgYSBwb2ludCBvZiBpbnZlc3RpZ2F0aW9uLiBUaGlzIGZ1bmN0aW9uIHNlZW1zIGNlbnRyYWwgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlIGRpcmVjdG9yeSBsb29rdXAgcHJvY2VzcyB3b3Jrcy4gSSYjMzk7bSBhbHNvIGFkZGluZyBgYWRmc19kaXJfY29weWZyb21gIHRvIHRoZSBsaXN0IG9mIGtleSBmdW5jdGlvbnMgdG8gc2NydXRpbml6ZS4KCk15IG5leHQgc3RlcCBpcyB0byBvcGVuIHVwIGBmcy9hZGZzL2Rpci5jYC4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgYGFkZnNfZGlyX2xvb2t1cF9ieW5hbWVgIGlzIGEgc3RhdGljIGZ1bmN0aW9uIHdpdGhpbiB0aGF0IGZpbGUuIFRoYXQga25vd2xlZGdlIGlzIGNydWNpYWwsIGFzIGl0IHdpbGwgdGVsbCBtZSBpdHMgc2NvcGUgYW5kIGltcGFjdCBvbiBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGl0cyBvdmVyYWxsIGFyY2hpdGVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWRmc19kaXJfbG9va3VwX2J5bmFtZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2FkZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2FkZnMvZGlyLmM9MzM2PXN0YXRpYyBpbnQgX19hZGZzX2NvbXBhcmUoY29uc3QgdW5zaWduZWQgY2hhciAqcXN0ciwgdTMyIHFsZW4sXG4tLVxuZnMvYWRmcy9kaXIuYy0zNTAtXG5mcy9hZGZzL2Rpci5jOjM1MTpzdGF0aWMgaW50IGFkZnNfZGlyX2xvb2t1cF9ieW5hbWUoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgc3RydWN0IHFzdHIgKnFzdHIsXG5mcy9hZGZzL2Rpci5jLTM1Mi1cdFx0XHRcdCAgc3RydWN0IG9iamVjdF9pbmZvICpvYmopXG4tLVxuZnMvYWRmcy9kaXIuYz00MzQ9YWRmc19sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW5zaWduZWQgaW50IGZsYWdzKVxuLS1cbmZzL2FkZnMvZGlyLmMtNDM5LVxuZnMvYWRmcy9kaXIuYzo0NDA6XHRlcnJvciA9IGFkZnNfZGlyX2xvb2t1cF9ieW5hbWUoZGlyLCBcdTAwMjZkZW50cnktXHUwMDNlZF9uYW1lLCBcdTAwMjZvYmopO1xuZnMvYWRmcy9kaXIuYy00NDEtXHRpZiAoZXJyb3IgPT0gMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzUwCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqQW5hbHl6aW5nIEFERlMgRGlyZWN0b3J5IExvb2t1cCBPcGVyYXRpb25zKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBUaGUgZnVuY3Rpb24gYGFkZnNfZGlyX2xvb2t1cF9ieW5hbWVgIOKAkyB0aGF0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBtZWFucyBpdCYjMzk7cyBsaW1pdGVkIGluIHNjb3BlLCBsaWtlbHkgaW50ZXJuYWwgdG8gYSBzcGVjaWZpYyBmaWxlIG9yIG1vZHVsZS4gR290IGl0LiBOb3csIGBhZGZzX2xvb2t1cGAuLi4gYWgsIHRoYXQgb25lJiMzOTtzIHRoZSByZWFsIGRlYWwsIHRoZSBhY3R1YWwgZGlyZWN0b3J5IGxvb2t1cCBvcGVyYXRpb24gaXRzZWxmLiBJdCYjMzk7cyBub3Qgc3RhdGljLCBzbyBpdCYjMzk7cyBwcm9iYWJseSBhY2Nlc3NpYmxlIGZyb20gZWxzZXdoZXJlIGluIHRoZSBBREZTIGltcGxlbWVudGF0aW9uLgoKVGltZSB0byBkaXZlIGluLiBUbyBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgYW5kIHNlZSBleGFjdGx5IGhvdyBgYWRmc19sb29rdXBgIGlzIGltcGxlbWVudGVkLCBJIG5lZWQgdG8gY2hlY2sgdGhlIHNvdXJjZSBjb2RlLiBMZXQmIzM5O3MgaGVhZCBvdmVyIHRvIGBmcy9hZGZzL2Rpci5jYC4gVGhhdCBzaG91bGQgY29udGFpbiB0aGUgcmVsZXZhbnQgZGVmaW5pdGlvbiBhbmQgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBsb29rdXAgaXMgaGFuZGxlZCBhdCB0aGUgZmlsZSBzeXN0ZW0gbGV2ZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FkZnNfbG9va3VwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvYWRmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvYWRmcy9kaXIuYz00MzM9c3RhdGljIHN0cnVjdCBkZW50cnkgKlxuZnMvYWRmcy9kaXIuYzo0MzQ6YWRmc19sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW5zaWduZWQgaW50IGZsYWdzKVxuZnMvYWRmcy9kaXIuYy00MzUte1xuLS1cbmZzL2FkZnMvZGlyLmM9NDU4PWNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGFkZnNfZGlyX2lub2RlX29wZXJhdGlvbnMgPSB7XG5mcy9hZGZzL2Rpci5jOjQ1OTpcdC5sb29rdXBcdFx0PSBhZGZzX2xvb2t1cCxcbmZzL2FkZnMvZGlyLmMtNDYwLVx0LnNldGF0dHJcdD0gYWRmc19zZXRhdHRyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzkxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEFERlMgRnVuY3Rpb24gVmlzaWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIG5vdGljaW5nIGBhZGZzX2xvb2t1cGAgaXMgYWxzbyBkZWZpbmVkIHN0YXRpY2FsbHksIHdoaWNoIGlzIHdoYXQgSSBleHBlY3RlZC4gTm93LCBob2xkIG9uLCB3aGF0IGFib3V0IGBhZGZzX2Rpcl9jb3B5ZnJvbWA/IElzIHRoYXQgZnVuY3Rpb24gZXhwb3J0ZWQsIG9yIHNpbXBseSBub3QgZGVjbGFyZWQgc3RhdGljPyBBaCwgeWVzLCBpdCYjMzk7cyBub3Qgc3RhdGljLiBSaWdodCwgdGhhdCBtYWtlcyBtb3JlIHNlbnNlLgoKVGltZSB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgYW5kIGNoZWNrIHRoZSBzb3VyY2U6IEkmIzM5O2xsIGhlYWQgb3ZlciB0byBgZnMvYWRmcy9kaXJfZnBsdXMuY2AgYW5kIHRha2UgYSBsb29rIGZvciBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgZGVmaW5lZCB0aGVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBvYnZpb3VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15pbnQgJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvYWRmcy9kaXJfZnBsdXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwMzUKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyBQb3RlbnRpYWwgSXNzdWVzIGluIEFERlMgRGlyZWN0b3J5IEhhbmRsaW5nKioKCk9rYXksIEkgbmVlZCB0byBwaW5wb2ludCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIG9yIGFyZWFzIGZvciBpbXByb3ZlbWVudCB3aXRoaW4gdGhlIEFERlMgZGlyZWN0b3J5IGNvZGUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGBmcy9hZGZzL2Rpci5jYC4gSSBuZWVkIHRvIHJldmlldyB0aGlzIGZpbGUgZm9yIG5vbi1zdGF0aWMgZnVuY3Rpb25zLiBUaGUgcmVhc29uaW5nIGlzIHRoYXQgbm9uLXN0YXRpYyBmdW5jdGlvbnMgYXJlIHBvdGVudGlhbGx5IHZpc2libGUgb3V0c2lkZSBvZiB0aGUgbW9kdWxlIHRoZXkgYXJlIGRlZmluZWQgaW4sIHdoaWNoIGNvdWxkIGxlYWQgdG8gdW5pbnRlbmRlZCBhY2Nlc3MsIG1pc3VzZSwgb3IgZXZlbiBzZWN1cml0eSBpc3N1ZXMgaWYgbm90IGNhcmVmdWxseSBtYW5hZ2VkLiBJIGtub3cgaG93IHRyaWNreSB0aGVzZSBmaWxlIHN5c3RlbSBjb21wb25lbnRzIGNhbiBnZXQuIEkgbmVlZCB0byBlbnN1cmUgdGhleSBhcmUgd2VsbC1zY29wZWQgYW5kIHRoYXQgYW55IGV4cG9ydGVkIGZ1bmN0aW9ucyBhcmUgZXhwbGljaXRseSBkZXNpZ25lZCBmb3IgZXh0ZXJuYWwgdXNlIHdpdGggdGhvcm91Z2ggc2VjdXJpdHkgcmV2aWV3cy4gVGhlcmVmb3JlLCBteSBuZXh0IGFjdGlvbiBpcyB0byBkaXZlIGludG8gdGhhdCBmaWxlIGFuZCBzcGVjaWZpY2FsbHkgbG9vayBmb3IgdGhvc2Ugbm9uLXN0YXRpYyBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16X0EtWjAtOV0mIzQzOyAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9hZGZzL2Rpci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2FkZnMvZGlyLmMtMTUtICovXG5mcy9hZGZzL2Rpci5jOjE2OnN0YXRpYyBERUNMQVJFX1JXU0VNKGFkZnNfZGlyX3J3c2VtKTtcbmZzL2FkZnMvZGlyLmMtMTctXG5mcy9hZGZzL2Rpci5jOjE4OmludCBhZGZzX2Rpcl9jb3B5ZnJvbSh2b2lkICpkc3QsIHN0cnVjdCBhZGZzX2RpciAqZGlyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LFxuZnMvYWRmcy9kaXIuYy0xOS1cdFx0ICAgICAgc2l6ZV90IGxlbilcbi0tXG5mcy9hZGZzL2Rpci5jLTQ1LVxuZnMvYWRmcy9kaXIuYzo0NjppbnQgYWRmc19kaXJfY29weXRvKHN0cnVjdCBhZGZzX2RpciAqZGlyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBjb25zdCB2b2lkICpzcmMsXG5mcy9hZGZzL2Rpci5jLTQ3LVx0XHQgICAgc2l6ZV90IGxlbilcbi0tXG5mcy9hZGZzL2Rpci5jLTcwLVxuZnMvYWRmcy9kaXIuYzo3MTpzdGF0aWMgdm9pZCBfX2FkZnNfZGlyX2NsZWFudXAoc3RydWN0IGFkZnNfZGlyICpkaXIpXG5mcy9hZGZzL2Rpci5jLTcyLXtcbi0tXG5mcy9hZGZzL2Rpci5jLTgwLVxuZnMvYWRmcy9kaXIuYzo4MTp2b2lkIGFkZnNfZGlyX3JlbHNlKHN0cnVjdCBhZGZzX2RpciAqZGlyKVxuZnMvYWRmcy9kaXIuYy04Mi17XG4tLVxuZnMvYWRmcy9kaXIuYy05MC1cbmZzL2FkZnMvZGlyLmM6OTE6c3RhdGljIHZvaWQgYWRmc19kaXJfZm9yZ2V0KHN0cnVjdCBhZGZzX2RpciAqZGlyKVxuZnMvYWRmcy9kaXIuYy05Mi17XG4tLVxuZnMvYWRmcy9kaXIuYy0xMDAtXG5mcy9hZGZzL2Rpci5jOjEwMTppbnQgYWRmc19kaXJfcmVhZF9idWZmZXJzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBpbmRhZGRyLFxuZnMvYWRmcy9kaXIuYy0xMDItXHRcdFx0ICB1bnNpZ25lZCBpbnQgc2l6ZSwgc3RydWN0IGFkZnNfZGlyICpkaXIpXG4tLVxuZnMvYWRmcy9kaXIuYy0xNDktXG5mcy9hZGZzL2Rpci5jOjE1MDpzdGF0aWMgaW50IGFkZnNfZGlyX3JlYWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGluZGFkZHIsXG5mcy9hZGZzL2Rpci5jLTE1MS1cdFx0XHQgdW5zaWduZWQgaW50IHNpemUsIHN0cnVjdCBhZGZzX2RpciAqZGlyKVxuLS1cbmZzL2FkZnMvZGlyLmMtMTU5LVxuZnMvYWRmcy9kaXIuYzoxNjA6c3RhdGljIGludCBhZGZzX2Rpcl9yZWFkX2lub2RlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBpbm9kZSAqaW5vZGUsXG5mcy9hZGZzL2Rpci5jLTE2MS1cdFx0XHQgICAgICAgc3RydWN0IGFkZnNfZGlyICpkaXIpXG4tLVxuZnMvYWRmcy9kaXIuYy0xNzktXG5mcy9hZGZzL2Rpci5jOjE4MDpzdGF0aWMgdm9pZCBhZGZzX2Rpcl9tYXJrX2RpcnR5KHN0cnVjdCBhZGZzX2RpciAqZGlyKVxuZnMvYWRmcy9kaXIuYy0xODEte1xuLS1cbmZzL2FkZnMvZGlyLmMtMTg4LVxuZnMvYWRmcy9kaXIuYzoxODk6c3RhdGljIGludCBhZGZzX2Rpcl9zeW5jKHN0cnVjdCBhZGZzX2RpciAqZGlyKVxuZnMvYWRmcy9kaXIuYy0xOTAte1xuLS1cbmZzL2FkZnMvZGlyLmMtMjAzLVxuZnMvYWRmcy9kaXIuYzoyMDQ6dm9pZCBhZGZzX29iamVjdF9maXh1cChzdHJ1Y3QgYWRmc19kaXIgKmRpciwgc3RydWN0IG9iamVjdF9pbmZvICpvYmopXG5mcy9hZGZzL2Rpci5jLTIwNS17XG4tLVxuZnMvYWRmcy9kaXIuYy0yNDEtXG5mcy9hZGZzL2Rpci5jOjI0MjpzdGF0aWMgaW50IGFkZnNfaXRlcmF0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGRpcl9jb250ZXh0ICpjdHgpXG5mcy9hZGZzL2Rpci5jLTI0My17XG4tLVxuZnMvYWRmcy9kaXIuYz0yNzk9YWRmc19kaXJfdXBkYXRlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBvYmplY3RfaW5mbyAqb2JqLCBpbnQgd2FpdClcbi0tXG5mcy9hZGZzL2Rpci5jLTMyOC1cbmZzL2FkZnMvZGlyLmM6MzI5OnN0YXRpYyB1bnNpZ25lZCBjaGFyIGFkZnNfdG9sb3dlcih1bnNpZ25lZCBjaGFyIGMpXG5mcy9hZGZzL2Rpci5jLTMzMC17XG4tLVxuZnMvYWRmcy9kaXIuYy0zMzUtXG5mcy9hZGZzL2Rpci5jOjMzNjpzdGF0aWMgaW50IF9fYWRmc19jb21wYXJlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnFzdHIsIHUzMiBxbGVuLFxuZnMvYWRmcy9kaXIuYy0zMzctXHRcdFx0ICBjb25zdCBjaGFyICpzdHIsIHUzMiBsZW4pXG4tLVxuZnMvYWRmcy9kaXIuYy0zNTAtXG5mcy9hZGZzL2Rpci5jOjM1MTpzdGF0aWMgaW50IGFkZnNfZGlyX2xvb2t1cF9ieW5hbWUoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgc3RydWN0IHFzdHIgKnFzdHIsXG5mcy9hZGZzL2Rpci5jLTM1Mi1cdFx0XHRcdCAgc3RydWN0IG9iamVjdF9pbmZvICpvYmopXG4tLVxuZnMvYWRmcy9kaXIuYy0zOTAtXG5mcy9hZGZzL2Rpci5jOjM5MTpjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGFkZnNfZGlyX29wZXJhdGlvbnMgPSB7XG5mcy9hZGZzL2Rpci5jLTM5Mi1cdC5yZWFkXHRcdD0gZ2VuZXJpY19yZWFkX2Rpcixcbi0tXG5mcy9hZGZzL2Rpci5jLTM5Ny1cbmZzL2FkZnMvZGlyLmM6Mzk4OnN0YXRpYyBpbnRcbmZzL2FkZnMvZGlyLmMtMzk5LWFkZnNfaGFzaChjb25zdCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHN0cnVjdCBxc3RyICpxc3RyKVxuLS1cbmZzL2FkZnMvZGlyLmMtNDIxLSAqL1xuZnMvYWRmcy9kaXIuYzo0MjI6c3RhdGljIGludCBhZGZzX2NvbXBhcmUoY29uc3Qgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCB1bnNpZ25lZCBpbnQgbGVuLFxuZnMvYWRmcy9kaXIuYy00MjMtXHRcdFx0Y29uc3QgY2hhciAqc3RyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqcXN0cilcbi0tXG5mcy9hZGZzL2Rpci5jLTQyNy1cbmZzL2FkZnMvZGlyLmM6NDI4OmNvbnN0IHN0cnVjdCBkZW50cnlfb3BlcmF0aW9ucyBhZGZzX2RlbnRyeV9vcGVyYXRpb25zID0ge1xuZnMvYWRmcy9kaXIuYy00MjktXHQuZF9oYXNoXHRcdD0gYWRmc19oYXNoLFxuLS1cbmZzL2FkZnMvZGlyLmMtNDMyLVxuZnMvYWRmcy9kaXIuYzo0MzM6c3RhdGljIHN0cnVjdCBkZW50cnkgKlxuZnMvYWRmcy9kaXIuYy00MzQtYWRmc19sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW5zaWduZWQgaW50IGZsYWdzKVxuLS1cbmZzL2FkZnMvZGlyLmMtNDU3LSAqL1xuZnMvYWRmcy9kaXIuYzo0NTg6Y29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgYWRmc19kaXJfaW5vZGVfb3BlcmF0aW9ucyA9IHtcbmZzL2FkZnMvZGlyLmMtNDU5LVx0Lmxvb2t1cFx0XHQ9IGFkZnNfbG9va3VwLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODA1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBGdW5jdGlvbiBDYWxscyBhbmQgSWRlbnRpZnlpbmcgRW50cnkgUG9pbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgcmVsZXZhbnQgZW50cnkgcG9pbnRzLiBJIHNlZSB0aGF0IGBhZGZzX2Rpcl9jb3B5ZnJvbWAsIGBhZGZzX2Rpcl9yZWFkX2J1ZmZlcnNgLCBgYWRmc19vYmplY3RfZml4dXBgLCBhbmQgYGFkZnNfZGlyX3VwZGF0ZWAgYXJlIGFsbCBub24tc3RhdGljIGZ1bmN0aW9ucywgd2hpY2ggbWFrZXMgdGhlbSBwb3RlbnRpYWwgdGFyZ2V0cy4gVGhlIHBhdGNoIG1vZGlmaWVzIGBhZGZzX2Rpcl9jb3B5ZnJvbWAgYW5kIGBhZGZzX2ZwbHVzX2dldG5leHRgLCBhbmQgYGFkZnNfZGlyX2NvcHlmcm9tYCBzZWVtcyBsaWtlIGEgZ29vZCBmb2N1cywgY29uc2lkZXJpbmcgdGhlIGRpcmVjdCBtb2RpZmljYXRpb24uCgpJIGluaXRpYWxseSB0aG91Z2h0IGBhZGZzX2ZwbHVzX2dldG5leHRgIGNvdWxkIGJlIHVzZWZ1bCwgYnV0IGl0JiMzOTtzIHN0YXRpYywgc28gdGhhdCYjMzk7cyBhIGRlYWQgZW5kLiBPa2F5LCBzbyB3aGF0ICpkb2VzKiBjYWxsIGBhZGZzX2ZwbHVzX2dldG5leHRgPyBJdCYjMzk7cyBjYWxsZWQgdGhyb3VnaCBgb3BzLSZndDtnZXRuZXh0YCwgYnV0IHRoYXQgZG9lc24mIzM5O3QgaW1tZWRpYXRlbHkgZ2l2ZSBtZSBlbnRyeSBwb2ludHMuIExvb2tpbmcgYXQgdGhlIGNhbGxlcnMgb2YgdGhhdCBgb3BzLSZndDtnZXRuZXh0YCBzdHJ1Y3R1cmUsIEkgc2VlIGBhZGZzX2Rpcl9sb29rdXBfYnluYW1lYCBhbmQgYGFkZnNfaXRlcmF0ZWAuICBVbmZvcnR1bmF0ZWx5LCBgYWRmc19pdGVyYXRlYCBpcyBhbHNvIHN0YXRpYywgc28gSSBjYW4mIzM5O3QgZGlyZWN0bHkgdXNlIGl0LiBUaGlzIG1lYW5zIHRoZSBlbnRyeSBwb2ludHMgY291bGQgYmUgYGFkZnNfZGlyX29wZXJhdGlvbnMuaXRlcmF0ZV9zaGFyZWRgICh3aGljaCBpcyBgYWRmc19pdGVyYXRlYCkgYW5kIGBhZGZzX2Rpcl9pbm9kZV9vcGVyYXRpb25zLmxvb2t1cGAgKHdoaWNoIGlzIGBhZGZzX2xvb2t1cGApLiBCdXQgYm90aCBhcmUsIGFnYWluLCBzdGF0aWMgZnVuY3Rpb25zLiBJIG1pc3NlZCBgYWRmc19sb29rdXBgIGlzIHN0YXRpYyEgU28gdGhhdCBpcyBub3QgaGVscGZ1bC4KCkJ1dCB3YWl0LCBiYWNrIHRvIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucy4gYGFkZnNfZGlyX2NvcHlmcm9tYCAqaXMqIG5vbi1zdGF0aWMhIEFuZCBpdCYjMzk7cyBkaXJlY3RseSBtb2RpZmllZCBieSB0aGUgcGF0Y2gsIHNvIGl0JiMzOTtzIGEgZ29vZCBjaG9pY2UuICBgYWRmc19kaXJfcmVhZF9idWZmZXJzYCBpcyBub24tc3RhdGljIHRvby4gSSBzaG91bGQgY2hlY2sgYGZzL2FkZnMvZGlyLmNgIHRvIGJlIHN1cmUgdGhhdCBgYWRmc19kaXJfY29weWZyb21gIGlzIHRoZSByaWdodCBjaG9pY2UuIFllcywgdGhlIG1vZGlmaWNhdGlvbiBpcyBkaXJlY3RseSBpbiB0aGF0IGZ1bmN0aW9uLiBJdCBpcyBhIGdvb2Qgb3B0aW9uLiBOb3csIHRvIG1ha2Ugc3VyZSBJIGhhdmUgYWxsIHRoZSBjb250ZXh0IEkgbmVlZCwgSSYjMzk7bGwgY2hlY2sgYGZzL2FkZnMvS2NvbmZpZ2AgdG8gaWRlbnRpZnkgdGhlIGNvbmZpZyBuYW1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQURGU19GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2FkZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2FkZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvYWRmcy9LY29uZmlnOjI6Y29uZmlnIEFERlNfRlNcbmZzL2FkZnMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7QURGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMvYWRmcy9LY29uZmlnLTIyLVxuZnMvYWRmcy9LY29uZmlnOjIzOmNvbmZpZyBBREZTX0ZTX1JXXG5mcy9hZGZzL0tjb25maWctMjQtXHRib29sIFwmIzM0O0FERlMgd3JpdGUgc3VwcG9ydCAoREFOR0VST1VTKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5ODU3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQURGUyBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgQURGU19GU2AgY29uZmlndXJhdGlvbi4gRmlyc3QsIEkmIzM5O20gdHJ5aW5nIHRvIHplcm8gaW4gb24gYSBnb29kIGZvY3VzIHN5bWJvbCwgYW5kIEkmIzM5O20gdGhpbmtpbmcgYGFkZnNfZGlyX2NvcHlmcm9tYCBtaWdodCBiZSBhIGdvb2QgY2FuZGlkYXRlLiBJdCYjMzk7cyBhIG5vbi1zdGF0aWMsIHNvIGFuIGV4cG9ydGVkIGZ1bmN0aW9uIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSG9sZCBvbiwgaXMgYGFkZnNfZGlyX2NvcHlmcm9tYCAqYWN0dWFsbHkqIGV4cG9ydGVkPyBMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gaWYgaXQmIzM5O3MgdmlzaWJsZS4gWWVwLCBJIHNob3VsZCBjaGVjayB0aGUgaGVhZGVyLCBzcGVjaWZpY2FsbHkgYGZzL2FkZnMvYWRmcy5oYC4gQWxyaWdodCwgaXQmIzM5O3MgZGVmaW5lZCB0aGVyZSwgZ29vZC4gTm93LCBsZXQmIzM5O3Mgc2VlIGlmIGBhZGZzX2ZwbHVzX3JlYWRgIGV4aXN0cywgbWlnaHQgYmUgb2Ygc29tZSB1c2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FkZnNfZnBsdXNfcmVhZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2FkZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2FkZnMvZGlyX2ZwbHVzLmM9NzA9c3RhdGljIHU4IGFkZnNfZnBsdXNfY2hlY2tieXRlKHN0cnVjdCBhZGZzX2RpciAqZGlyKVxuLS1cbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMTAyLVxuZnMvYWRmcy9kaXJfZnBsdXMuYzoxMDM6c3RhdGljIGludCBhZGZzX2ZwbHVzX3JlYWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGluZGFkZHIsXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTEwNC1cdFx0XHQgICB1bnNpZ25lZCBpbnQgc2l6ZSwgc3RydWN0IGFkZnNfZGlyICpkaXIpXG4tLVxuZnMvYWRmcy9kaXJfZnBsdXMuYz0yODI9Y29uc3Qgc3RydWN0IGFkZnNfZGlyX29wcyBhZGZzX2ZwbHVzX2Rpcl9vcHMgPSB7XG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjI4MzpcdC5yZWFkXHRcdD0gYWRmc19mcGx1c19yZWFkLFxuZnMvYWRmcy9kaXJfZnBsdXMuYy0yODQtXHQuaXRlcmF0ZVx0PSBhZGZzX2ZwbHVzX2l0ZXJhdGUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzkxCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqQW5hbHl6aW5nIEFERlMgU3RhdGljIERlY2xhcmF0aW9ucyoqCgpBbHJpZ2h0LCBzbyBgYWRmc19mcGx1c19yZWFkYCBpcyBkZWZpbml0ZWx5IHN0YXRpYy4gR290IGl0LiBOb3csIHRoZSBuZXh0IHF1ZXN0aW9uIGlzIGFib3V0IGBhZGZzX2ZwbHVzX2Rpcl9vcHNgLiBJdCYjMzk7cyBub3Qgc3RhdGljLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gQnV0LCBoYW5nIG9uLCBpdCYjMzk7cyBhIHN0cnVjdHVyZSBkZWZpbml0aW9uLCBub3QgYSBmdW5jdGlvbi4gU28sIHRoYXQgZG9lc24mIzM5O3QgcmVhbGx5IG1hdHRlciBpbiB0aGlzIGNhc2UuIExldCYjMzk7cyBkaWcgZGVlcGVyLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIHNvbWV0aGluZy4gSSYjMzk7bGwgY2hlY2sgYGZzL2FkZnMvZGlyX2ZwbHVzLmNgIGFuZCBzcGVjaWZpY2FsbHkgbG9vayBmb3IgZnVuY3Rpb25zIHRoYXQgKmFyZW4mIzM5O3QqIGRlY2xhcmVkIGFzIHN0YXRpYy4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBleHBvc2VkIG91dHNpZGUgb2YgdGhlIGZpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16X0EtWjAtOV0mIzQzOyAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9hZGZzL2Rpcl9mcGx1cy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2FkZnMvZGlyX2ZwbHVzLmMtMTAtLyogUmV0dXJuIHRoZSBieXRlIG9mZnNldCB0byBkaXJlY3RvcnkgZW50cnkgcG9zICovXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjExOnN0YXRpYyB1bnNpZ25lZCBpbnQgYWRmc19mcGx1c19vZmZzZXQoY29uc3Qgc3RydWN0IGFkZnNfYmlnZGlyaGVhZGVyICpoLFxuZnMvYWRmcy9kaXJfZnBsdXMuYy0xMi1cdFx0XHRcdCAgICAgIHVuc2lnbmVkIGludCBwb3MpXG4tLVxuZnMvYWRmcy9kaXJfZnBsdXMuYy0xOC1cbmZzL2FkZnMvZGlyX2ZwbHVzLmM6MTk6c3RhdGljIGludCBhZGZzX2ZwbHVzX3ZhbGlkYXRlX2hlYWRlcihjb25zdCBzdHJ1Y3QgYWRmc19iaWdkaXJoZWFkZXIgKmgpXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTIwLXtcbi0tXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTU4LVxuZnMvYWRmcy9kaXJfZnBsdXMuYzo1OTpzdGF0aWMgaW50IGFkZnNfZnBsdXNfdmFsaWRhdGVfdGFpbChjb25zdCBzdHJ1Y3QgYWRmc19iaWdkaXJoZWFkZXIgKmgsXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTYwLVx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBhZGZzX2JpZ2RpcnRhaWwgKnQpXG4tLVxuZnMvYWRmcy9kaXJfZnBsdXMuYy02OS1cbmZzL2FkZnMvZGlyX2ZwbHVzLmM6NzA6c3RhdGljIHU4IGFkZnNfZnBsdXNfY2hlY2tieXRlKHN0cnVjdCBhZGZzX2RpciAqZGlyKVxuZnMvYWRmcy9kaXJfZnBsdXMuYy03MS17XG4tLVxuZnMvYWRmcy9kaXJfZnBsdXMuYy0xMDItXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjEwMzpzdGF0aWMgaW50IGFkZnNfZnBsdXNfcmVhZChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgaW5kYWRkcixcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMTA0LVx0XHRcdCAgIHVuc2lnbmVkIGludCBzaXplLCBzdHJ1Y3QgYWRmc19kaXIgKmRpcilcbi0tXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTE1Ny1cbmZzL2FkZnMvZGlyX2ZwbHVzLmM6MTU4OnN0YXRpYyBpbnRcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMTU5LWFkZnNfZnBsdXNfc2V0cG9zKHN0cnVjdCBhZGZzX2RpciAqZGlyLCB1bnNpZ25lZCBpbnQgZnBvcylcbi0tXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTE3MC1cbmZzL2FkZnMvZGlyX2ZwbHVzLmM6MTcxOnN0YXRpYyBpbnRcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMTcyLWFkZnNfZnBsdXNfZ2V0bmV4dChzdHJ1Y3QgYWRmc19kaXIgKmRpciwgc3RydWN0IG9iamVjdF9pbmZvICpvYmopXG4tLVxuZnMvYWRmcy9kaXJfZnBsdXMuYy0yMTEtXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjIxMjpzdGF0aWMgaW50IGFkZnNfZnBsdXNfaXRlcmF0ZShzdHJ1Y3QgYWRmc19kaXIgKmRpciwgc3RydWN0IGRpcl9jb250ZXh0ICpjdHgpXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTIxMy17XG4tLVxuZnMvYWRmcy9kaXJfZnBsdXMuYy0yMzEtXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjIzMjpzdGF0aWMgaW50IGFkZnNfZnBsdXNfdXBkYXRlKHN0cnVjdCBhZGZzX2RpciAqZGlyLCBzdHJ1Y3Qgb2JqZWN0X2luZm8gKm9iailcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjMzLXtcbi0tXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTI2Mi1cbmZzL2FkZnMvZGlyX2ZwbHVzLmM6MjYzOnN0YXRpYyBpbnQgYWRmc19mcGx1c19jb21taXQoc3RydWN0IGFkZnNfZGlyICpkaXIpXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTI2NC17XG4tLVxuZnMvYWRmcy9kaXJfZnBsdXMuYy0yODEtXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjI4Mjpjb25zdCBzdHJ1Y3QgYWRmc19kaXJfb3BzIGFkZnNfZnBsdXNfZGlyX29wcyA9IHtcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjgzLVx0LnJlYWRcdFx0PSBhZGZzX2ZwbHVzX3JlYWQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNTQ5CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBBREZTIERpcmVjdG9yeSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYWxsIHRoZSBmdW5jdGlvbnMgaW4gYGZzL2FkZnMvZGlyX2ZwbHVzLmNgIGFyZSAqc3RhdGljKi4gVGhhdCBtZWFucywgaW50ZXJuYWxseSwgSSYjMzk7bSBsaW1pdGVkIGluIG15IGZvY3VzLiBJdCBzZWVtcyBsaWtlIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50IGlzIGBhZGZzX2Rpcl9jb3B5ZnJvbWAuIFdhaXQsIGdvb2QhIGBhZGZzX2Rpcl9jb3B5ZnJvbWAgKmlzbiYjMzk7dCogc3RhdGljLiBUaGF0JiMzOTtzIHBlcmZlY3Q7IGl0IGdpdmVzIG1lIGEgY2xlYXIgZW50cnkgcG9pbnQuCgpUaGUgY29yZSBvZiB0aGlzIGZpeCB0YXJnZXRzIGEgYnVnIGluIGBhZGZzX2Rpcl9jb3B5ZnJvbWAuIFNwZWNpZmljYWxseSwgaXQgZGVhbHMgd2l0aCBjb3JyZWN0bHkgaGFuZGxpbmcgZGF0YSBjb3BpZXMgdGhhdCBzcGFuIG11bHRpcGxlIGJ1ZmZlcnMuIFBsdXMsIHRoZXJlJiMzOTtzIGEgZ3VhcmQgaW4gYGFkZnNfZnBsdXNfZ2V0bmV4dGAgdG8gcHJldmVudCBhIGJ1ZmZlciBvdmVyZmxvdyBpZiBgb2JqLSZndDtuYW1lX2xlbmAgZXhjZWVkcyBgQURGU19GUExVU19OQU1FX0xFTmAuIFRoYXQmIzM5O3Mgc21hcnQ7IGJvdW5kcyBjaGVja2luZyBpcyBhbHdheXMgYSBnb29kIHByYWN0aWNlLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY3JpdGljYWxpdHkgb2YgYGFkZnNfZGlyX2NvcHlmcm9tYC4gSXMgaXQgYSBob3QtcGF0aCBmdW5jdGlvbj8gRGlyZWN0b3J5IHJlYWRzIGFyZSBwYXJ0IG9mIEFERlMsIGJ1dCBnZW5lcmFsbHkgQURGUyBpdHNlbGYgaXNuJiMzOTt0IGEgcGVyZm9ybWFuY2UgYm90dGxlbmVjay4gVGhhdCBkb2VzbiYjMzk7dCBtZWFuIGl0JiMzOTtzIHVuaW1wb3J0YW50LCBidXQgaXQgcHV0cyBpdCBpbiBwZXJzcGVjdGl2ZS4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIHNjYW4gb2YgYGZzL2FkZnMvZGlyLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogbm9uLXN0YXRpYyBmdW5jdGlvbnMgb2YgaW50ZXJlc3Q6IGBhZGZzX2Rpcl9yZWFkX2J1ZmZlcnNgLCBgYWRmc19kaXJfdXBkYXRlYCwgYW5kIGBhZGZzX29iamVjdF9maXh1cGAuIFdvcnRoIG5vdGluZywgYnV0IEkmIzM5O2xsIHN0aWNrIHdpdGggYGFkZnNfZGlyX2NvcHlmcm9tYCBhcyBteSBmb2N1cyBzeW1ib2wuCgpPa2F5LCBzbyB0aGUgZ2lzdCBvZiB0aGUgcGF0Y2ggaXMgZml4aW5nIGEgYnVmZmVyIGNvcHkgYnVnIGluIGBhZGZzX2Rpcl9jb3B5ZnJvbWAgYW5kIGFkZGluZyBhIGJvdW5kcyBjaGVjayBpbiBgYWRmc19mcGx1c19nZXRuZXh0YC4gQm90aCBhcmUgY3J1Y2lhbCB0byB0aGUgaW50ZWdyaXR5IGFuZCBzdGFiaWxpdHkgb2YgdGhlIGRpcmVjdG9yeSBwYXJzaW5nIGxvZ2ljIHdpdGhpbiB0aGUgQURGUyBmaWxlc3lzdGVtLiBUaGlzIGxvZ2ljIGlzIGRpcmVjdGx5IGVuZ2FnZWQgZHVyaW5nIG1vdW50IGFuZCByZWFkIG9wZXJhdGlvbnMgb24gYW4gQURGUyBpbWFnZS4gVGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGBBREZTX0ZTYCwgc28gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgaXMgZGVmaW5lZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2FkZnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9hZGZzL0tjb25maWc9Mj1jb25maWcgQURGU19GU1xuZnMvYWRmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtBREZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbmZzL2FkZnMvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBCTE9DS1xuZnMvYWRmcy9LY29uZmlnLTUtXHRzZWxlY3QgQlVGRkVSX0hFQURcbi0tXG5mcy9hZGZzL0tjb25maWc9MjM9Y29uZmlnIEFERlNfRlNfUldcbmZzL2FkZnMvS2NvbmZpZy0yNC1cdGJvb2wgXCYjMzQ7QURGUyB3cml0ZSBzdXBwb3J0IChEQU5HRVJPVVMpXCYjMzQ7XG5mcy9hZGZzL0tjb25maWc6MjU6XHRkZXBlbmRzIG9uIEFERlNfRlNcbmZzL2FkZnMvS2NvbmZpZy0yNi1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1MzEKCQkJCQkJCW91dHB1dDogMTE2CgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBsaWtlIHlvdToKCioqRGVwZW5kZW5jeSBBbmFseXNpcyBhbmQgRnVuY3Rpb24gQ2hvaWNlKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGBBREZTX0ZTYCByZWxpZXMgb24gYEJMT0NLYC4gVGhhdCYjMzk7cyBzdGFuZGFyZCBzdHVmZiwgc28gdGhhdCYjMzk7cyBub3QgdG9vIHN1cnByaXNpbmcuCgpOb3csIEkgbmVlZCB0byBwaWNrIGEgZ29vZCBmdW5jdGlvbiB0byBmb2N1cyBvbiBmb3IgZGVlcGVyIGFuYWx5c2lzLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBhZGZzX2Rpcl9jb3B5ZnJvbWAuIElzIHRoYXQgYSBnb29kIHN0YXJ0aW5nIHBvaW50PyBMZXQgbWUgdGhpbmsuLi4geWVzLCB0aGF0IGxvb2tzIHByb21pc2luZy4gSXQmIzM5O3Mgbm90IGEgYHN0YXRpY2AgZnVuY3Rpb24sIHNvIGl0JiMzOTtzIGxpa2VseSB2aXNpYmxlIGVsc2V3aGVyZSwgYW5kIGl0IGFsc28gZG9lc24mIzM5O3Qgc2VlbSB0byBiZSBhIHBlcmZvcm1hbmNlLWNyaXRpY2FsIGdlbmVyaWMgaG90IHBhdGgsIHdoaWNoIG1ha2VzIGl0IGVhc2llciB0byByZWFzb24gYWJvdXQuIEEgZ29vZCBjaG9pY2UgZm9yIGludmVzdGlnYXRpbmcuCgpOb3csIEkmIzM5O2xsIGdvIGFoZWFkIGFuZCB1c2UgdGhlIHNldC1yZXN1bHRzIHRvb2wuIEl0JiMzOTtzIHRoZSByaWdodCBjaG9pY2UgZm9yIGdldHRpbmcgYSBoYW5kbGUgb24gdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FERlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthZGZzX2Rpcl9jb3B5ZnJvbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZmZlciBjb3B5IGJ1ZyBpbiBgYWRmc19kaXJfY29weWZyb21gIHdoZW4gY29weWluZyBhY3Jvc3MgbXVsdGlwbGUgYnVmZmVycywgYW5kIGFkZHMgYSBib3VuZHMgY2hlY2sgZm9yIGBuYW1lX2xlbmAgaW4gYGFkZnNfZnBsdXNfZ2V0bmV4dGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIEFERlMgZmlsZXN5c3RlbSBkaXJlY3RvcnkgcGFyc2luZyBsb2dpYywgd2hpY2ggaXMgcmVhY2hhYmxlIHdoZW4gbW91bnRpbmcgYW5kIHJlYWRpbmcgYW4gQURGUyBpbWFnZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QURGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FkZnNfZGlyX2NvcHlmcm9tJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVmZmVyIGNvcHkgYnVnIGluIGBhZGZzX2Rpcl9jb3B5ZnJvbWAgd2hlbiBjb3B5aW5nIGFjcm9zcyBtdWx0aXBsZSBidWZmZXJzLCBhbmQgYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgYG5hbWVfbGVuYCBpbiBgYWRmc19mcGx1c19nZXRuZXh0YC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgQURGUyBmaWxlc3lzdGVtIGRpcmVjdG9yeSBwYXJzaW5nIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgd2hlbiBtb3VudGluZyBhbmQgcmVhZGluZyBhbiBBREZTIGltYWdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6MTc6NTUuODk2NTk1NTc1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMwMjE0MzM4NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQURGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFkZnNfZGlyX2NvcHlmcm9tXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWZmZXIgY29weSBidWcgaW4gYGFkZnNfZGlyX2NvcHlmcm9tYCB3aGVuIGNvcHlpbmcgYWNyb3NzIG11bHRpcGxlIGJ1ZmZlcnMsIGFuZCBhZGRzIGEgYm91bmRzIGNoZWNrIGZvciBgbmFtZV9sZW5gIGluIGBhZGZzX2ZwbHVzX2dldG5leHRgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBBREZTIGZpbGVzeXN0ZW0gZGlyZWN0b3J5IHBhcnNpbmcgbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSB3aGVuIG1vdW50aW5nIGFuZCByZWFkaW5nIGFuIEFERlMgaW1hZ2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE3OjU1Ljg5NjYwMTQ4NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc3MjIyNTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTE0OGY4OGY2YTczM2Y5NzNjODk3ZmU3NGVjM2FkN2VkMjkyODRmZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzIDA0OjE3OjU1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2FkZnMvZGlyLmMgYi9mcy9hZGZzL2Rpci5jXFxuaW5kZXggMTFhZmE5ZTE1N2FhNy4uNDQ5NTMyNDdhY2FkZCAxMDA2NDRcXG4tLS0gYS9mcy9hZGZzL2Rpci5jXFxuKysrIGIvZnMvYWRmcy9kaXIuY1xcbkBAIC0xOSwxNSArMTksMjAgQEAgaW50IGFkZnNfZGlyX2NvcHlmcm9tKHZvaWQgKmRzdCwgc3RydWN0IGFkZnNfZGlyICpkaXIsIHVuc2lnbmVkIGludCBvZmZzZXQsXFxuIFxcdFxcdCAgICAgIHNpemVfdCBsZW4pXFxuIHtcXG4gXFx0c3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGRpci1cXHUwMDNlc2I7XFxuK1xcdHNpemVfdCBzaXplID0gKHNpemVfdClkaXItXFx1MDAzZW5yX2J1ZmZlcnMgXFx1MDAzY1xcdTAwM2Mgc2ItXFx1MDAzZXNfYmxvY2tzaXplX2JpdHM7XFxuIFxcdHVuc2lnbmVkIGludCBpbmRleCwgcmVtYWluO1xcbiBcXG4rXFx0aWYgKG9mZnNldCBcXHUwMDNlPSBzaXplIHx8IGxlbiBcXHUwMDNlIHNpemUgLSBvZmZzZXQpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4gXFx0aW5kZXggPSBvZmZzZXQgXFx1MDAzZVxcdTAwM2Ugc2ItXFx1MDAzZXNfYmxvY2tzaXplX2JpdHM7XFxuIFxcdG9mZnNldCBcXHUwMDI2PSBzYi1cXHUwMDNlc19ibG9ja3NpemUgLSAxO1xcbi1cXHRyZW1haW4gPSBzYi1cXHUwMDNlc19ibG9ja3NpemUgLSBvZmZzZXQ7XFxuLVxcdGlmIChpbmRleCArIChyZW1haW4gXFx1MDAzYyBsZW4pIFxcdTAwM2U9IGRpci1cXHUwMDNlbnJfYnVmZmVycylcXG4tXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbi1cXHRpZiAocmVtYWluIFxcdTAwM2MgbGVuKSB7XFxuK1xcdHdoaWxlIChsZW4pIHtcXG4rXFx0XFx0cmVtYWluID0gc2ItXFx1MDAzZXNfYmxvY2tzaXplIC0gb2Zmc2V0O1xcbitcXHRcXHRpZiAocmVtYWluIFxcdTAwM2UgbGVuKVxcbitcXHRcXHRcXHRyZW1haW4gPSBsZW47XFxuK1xcbiBcXHRcXHRtZW1jcHkoZHN0LCBkaXItXFx1MDAzZWJoc1tpbmRleF0tXFx1MDAzZWJfZGF0YSArIG9mZnNldCwgcmVtYWluKTtcXG4gXFx0XFx0ZHN0ICs9IHJlbWFpbjtcXG4gXFx0XFx0bGVuIC09IHJlbWFpbjtcXG5AQCAtMzUsOCArNDAsNiBAQCBpbnQgYWRmc19kaXJfY29weWZyb20odm9pZCAqZHN0LCBzdHJ1Y3QgYWRmc19kaXIgKmRpciwgdW5zaWduZWQgaW50IG9mZnNldCxcXG4gXFx0XFx0b2Zmc2V0ID0gMDtcXG4gXFx0fVxcbiBcXG4tXFx0bWVtY3B5KGRzdCwgZGlyLVxcdTAwM2ViaHNbaW5kZXhdLVxcdTAwM2ViX2RhdGEgKyBvZmZzZXQsIGxlbik7XFxuLVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvZnMvYWRmcy9kaXJfZnBsdXMuYyBiL2ZzL2FkZnMvZGlyX2ZwbHVzLmNcXG5pbmRleCA0YTE1OTI0MDE0ZGEyLi41MTdmZmNjOTE0MjllIDEwMDY0NFxcbi0tLSBhL2ZzL2FkZnMvZGlyX2ZwbHVzLmNcXG4rKysgYi9mcy9hZGZzL2Rpcl9mcGx1cy5jXFxuQEAgLTE5Miw2ICsxOTIsOCBAQCBhZGZzX2ZwbHVzX2dldG5leHQoc3RydWN0IGFkZnNfZGlyICpkaXIsIHN0cnVjdCBvYmplY3RfaW5mbyAqb2JqKVxcbiBcXHRvYmotXFx1MDAzZWluZGFkZHIgID0gbGUzMl90b19jcHUoYmRlLmJpZ2RpcmluZGFkZHIpO1xcbiBcXHRvYmotXFx1MDAzZWF0dHIgICAgID0gbGUzMl90b19jcHUoYmRlLmJpZ2RpcmF0dHIpO1xcbiBcXHRvYmotXFx1MDAzZW5hbWVfbGVuID0gbGUzMl90b19jcHUoYmRlLmJpZ2Rpcm9ibmFtZWxlbik7XFxuK1xcdGlmIChvYmotXFx1MDAzZW5hbWVfbGVuIFxcdTAwM2UgQURGU19GUExVU19OQU1FX0xFTilcXG4rXFx0XFx0cmV0dXJuIC1FSU87XFxuIFxcbiBcXHRvZmZzZXQgPSBhZGZzX2ZwbHVzX29mZnNldChoLCBsZTMyX3RvX2NwdShoLVxcdTAwM2ViaWdkaXJlbnRyaWVzKSk7XFxuIFxcdG9mZnNldCArPSBsZTMyX3RvX2NwdShiZGUuYmlnZGlyb2JuYW1lcHRyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6MTc6NTYuMTc0NDgwMDhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1Mjc0MzU0MTQ5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBREZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWRmc19kaXJfY29weWZyb21cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZmZlciBjb3B5IGJ1ZyBpbiBgYWRmc19kaXJfY29weWZyb21gIHdoZW4gY29weWluZyBhY3Jvc3MgbXVsdGlwbGUgYnVmZmVycywgYW5kIGFkZHMgYSBib3VuZHMgY2hlY2sgZm9yIGBuYW1lX2xlbmAgaW4gYGFkZnNfZnBsdXNfZ2V0bmV4dGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIEFERlMgZmlsZXN5c3RlbSBkaXJlY3RvcnkgcGFyc2luZyBsb2dpYywgd2hpY2ggaXMgcmVhY2hhYmxlIHdoZW4gbW91bnRpbmcgYW5kIHJlYWRpbmcgYW4gQURGUyBpbWFnZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTE0OGY4OGY2YTczM2Y5NzNjODk3ZmU3NGVjM2FkN2VkMjkyODRmZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMDQ6MTc6NTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9hZGZzL2Rpci5jIGIvZnMvYWRmcy9kaXIuY1xuaW5kZXggMTFhZmE5ZTE1N2FhNy4uNDQ5NTMyNDdhY2FkZCAxMDA2NDRcbi0tLSBhL2ZzL2FkZnMvZGlyLmNcbisrKyBiL2ZzL2FkZnMvZGlyLmNcbkBAIC0xOSwxNSArMTksMjAgQEAgaW50IGFkZnNfZGlyX2NvcHlmcm9tKHZvaWQgKmRzdCwgc3RydWN0IGFkZnNfZGlyICpkaXIsIHVuc2lnbmVkIGludCBvZmZzZXQsXG4gXHRcdCAgICAgIHNpemVfdCBsZW4pXG4ge1xuIFx0c3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGRpci1cdTAwM2VzYjtcbitcdHNpemVfdCBzaXplID0gKHNpemVfdClkaXItXHUwMDNlbnJfYnVmZmVycyBcdTAwM2NcdTAwM2Mgc2ItXHUwMDNlc19ibG9ja3NpemVfYml0cztcbiBcdHVuc2lnbmVkIGludCBpbmRleCwgcmVtYWluO1xuIFxuK1x0aWYgKG9mZnNldCBcdTAwM2U9IHNpemUgfHwgbGVuIFx1MDAzZSBzaXplIC0gb2Zmc2V0KVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbiBcdGluZGV4ID0gb2Zmc2V0IFx1MDAzZVx1MDAzZSBzYi1cdTAwM2VzX2Jsb2Nrc2l6ZV9iaXRzO1xuIFx0b2Zmc2V0IFx1MDAyNj0gc2ItXHUwMDNlc19ibG9ja3NpemUgLSAxO1xuLVx0cmVtYWluID0gc2ItXHUwMDNlc19ibG9ja3NpemUgLSBvZmZzZXQ7XG4tXHRpZiAoaW5kZXggKyAocmVtYWluIFx1MDAzYyBsZW4pIFx1MDAzZT0gZGlyLVx1MDAzZW5yX2J1ZmZlcnMpXG4tXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLVx0aWYgKHJlbWFpbiBcdTAwM2MgbGVuKSB7XG4rXHR3aGlsZSAobGVuKSB7XG4rXHRcdHJlbWFpbiA9IHNiLVx1MDAzZXNfYmxvY2tzaXplIC0gb2Zmc2V0O1xuK1x0XHRpZiAocmVtYWluIFx1MDAzZSBsZW4pXG4rXHRcdFx0cmVtYWluID0gbGVuO1xuK1xuIFx0XHRtZW1jcHkoZHN0LCBkaXItXHUwMDNlYmhzW2luZGV4XS1cdTAwM2ViX2RhdGEgKyBvZmZzZXQsIHJlbWFpbik7XG4gXHRcdGRzdCArPSByZW1haW47XG4gXHRcdGxlbiAtPSByZW1haW47XG5AQCAtMzUsOCArNDAsNiBAQCBpbnQgYWRmc19kaXJfY29weWZyb20odm9pZCAqZHN0LCBzdHJ1Y3QgYWRmc19kaXIgKmRpciwgdW5zaWduZWQgaW50IG9mZnNldCxcbiBcdFx0b2Zmc2V0ID0gMDtcbiBcdH1cbiBcbi1cdG1lbWNweShkc3QsIGRpci1cdTAwM2ViaHNbaW5kZXhdLVx1MDAzZWJfZGF0YSArIG9mZnNldCwgbGVuKTtcbi1cbiBcdHJldHVybiAwO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9mcy9hZGZzL2Rpcl9mcGx1cy5jIGIvZnMvYWRmcy9kaXJfZnBsdXMuY1xuaW5kZXggNGExNTkyNDAxNGRhMi4uNTE3ZmZjYzkxNDI5ZSAxMDA2NDRcbi0tLSBhL2ZzL2FkZnMvZGlyX2ZwbHVzLmNcbisrKyBiL2ZzL2FkZnMvZGlyX2ZwbHVzLmNcbkBAIC0xOTIsNiArMTkyLDggQEAgYWRmc19mcGx1c19nZXRuZXh0KHN0cnVjdCBhZGZzX2RpciAqZGlyLCBzdHJ1Y3Qgb2JqZWN0X2luZm8gKm9iailcbiBcdG9iai1cdTAwM2VpbmRhZGRyICA9IGxlMzJfdG9fY3B1KGJkZS5iaWdkaXJpbmRhZGRyKTtcbiBcdG9iai1cdTAwM2VhdHRyICAgICA9IGxlMzJfdG9fY3B1KGJkZS5iaWdkaXJhdHRyKTtcbiBcdG9iai1cdTAwM2VuYW1lX2xlbiA9IGxlMzJfdG9fY3B1KGJkZS5iaWdkaXJvYm5hbWVsZW4pO1xuK1x0aWYgKG9iai1cdTAwM2VuYW1lX2xlbiBcdTAwM2UgQURGU19GUExVU19OQU1FX0xFTilcbitcdFx0cmV0dXJuIC1FSU87XG4gXG4gXHRvZmZzZXQgPSBhZGZzX2ZwbHVzX29mZnNldChoLCBsZTMyX3RvX2NwdShoLVx1MDAzZWJpZ2RpcmVudHJpZXMpKTtcbiBcdG9mZnNldCArPSBsZTMyX3RvX2NwdShiZGUuYmlnZGlyb2JuYW1lcHRyKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE3OjU2LjE3NDQ4MTU1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ4MjUwMTM5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEFERlMgRmlsZXN5c3RlbSBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3MgdG91Y2hpbmcgYGZzL2FkZnMvZGlyLmNgIGFuZCBgZnMvYWRmcy9kaXJfZnBsdXMuY2AuIFNlZW1zIGxpa2UgdGhlIHByaW1hcnkgZm9jdXMgaXMgb24gZml4aW5nIGBhZGZzX2Rpcl9jb3B5ZnJvbWAgdG8gaGFuZGxlIGJ1ZmZlciBjb3BpZXMgcHJvcGVybHkuIEl0IGFsc28gdGhyb3dzIGluIGEgc2FuaXR5IGNoZWNrIHdpdGhpbiBgYWRmc19mcGx1c19nZXRuZXh0YCB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgZW5kIHVwIHdpdGggc29tZSBjcmF6eSBsb25nIGZpbGVuYW1lcy4gXG5cbkxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZmlyc3Qgc3RlcCBpcyB0byBjb25maXJtIHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQ6IGBhZGZzX2Rpcl9jb3B5ZnJvbWAgYW5kIGBhZGZzX2ZwbHVzX2dldG5leHRgLlxuXG5OZXh0LCBJJ2xsIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcsIHNwZWNpZmljYWxseSBgZnMvYWRmcy9LY29uZmlnYCwgdG8gY29uZmlybSB0aGF0IHRoZSBBREZTIGZpbGVzeXN0ZW0gaXMgZXZlbiBlbmFibGVkIChgQ09ORklHX0FERlNfRlNgKS4gV2UgY2FuJ3QgYmUgcGF0Y2hpbmcgc29tZXRoaW5nIHRoYXQgaXNuJ3QgYnVpbHQuXG5cbk5vdywgbGV0J3MgdHJhY2Ugd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSB1c2VkLiBBIHF1aWNrIHNlYXJjaCBzaG91bGQgcmV2ZWFsIHRoZWlyIHJlYWNoYWJpbGl0eS4gT2theSwgc28gYGFkZnNfZGlyX2NvcHlmcm9tYCBwb3BzIHVwIGluIGJvdGggYGZzL2FkZnMvZGlyX2ZwbHVzLmNgIGFuZCBgZnMvYWRmcy9kaXJfZi5jYC4gYGFkZnNfZnBsdXNfZ2V0bmV4dGAgaXMgY2xlYXJseSB1c2VkIGFzIGEgY2FsbGJhY2sgZnVuY3Rpb24gd2l0aGluIHRoZSBgc3RydWN0IGFkZnNfZGlyX29wc2AuIFxuXG5UaW1lIGZvciBhIHF1aWNrIGdyZXAgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cyBhbmQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIGludGVyYWN0aW9ucyB0byBiZSBhd2FyZSBvZi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4OCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjAwLjY1Njk4NTYwOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTUxNzI5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhZGZzX2Rpcl9jb3B5ZnJvbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9hZGZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9hZGZzL2FkZnMuaD0xNzQ9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBhZGZzX2Rpcl9vcHMgYWRmc19mcGx1c19kaXJfb3BzO1xcbmZzL2FkZnMvYWRmcy5oLTE3NS1cXG5mcy9hZGZzL2FkZnMuaDoxNzY6aW50IGFkZnNfZGlyX2NvcHlmcm9tKHZvaWQgKmRzdCwgc3RydWN0IGFkZnNfZGlyICpkaXIsIHVuc2lnbmVkIGludCBvZmZzZXQsXFxuZnMvYWRmcy9hZGZzLmgtMTc3LVxcdFxcdCAgICAgIHNpemVfdCBsZW4pO1xcbi0tXFxuZnMvYWRmcy9kaXIuYz0xNj1zdGF0aWMgREVDTEFSRV9SV1NFTShhZGZzX2Rpcl9yd3NlbSk7XFxuZnMvYWRmcy9kaXIuYy0xNy1cXG5mcy9hZGZzL2Rpci5jOjE4OmludCBhZGZzX2Rpcl9jb3B5ZnJvbSh2b2lkICpkc3QsIHN0cnVjdCBhZGZzX2RpciAqZGlyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LFxcbmZzL2FkZnMvZGlyLmMtMTktXFx0XFx0ICAgICAgc2l6ZV90IGxlbilcXG4tLVxcbmZzL2FkZnMvZGlyX2YuYz0yMTU9X19hZGZzX2Rpcl9nZXQoc3RydWN0IGFkZnNfZGlyICpkaXIsIGludCBwb3MsIHN0cnVjdCBvYmplY3RfaW5mbyAqb2JqKVxcbi0tXFxuZnMvYWRmcy9kaXJfZi5jLTIxOS1cXG5mcy9hZGZzL2Rpcl9mLmM6MjIwOlxcdHJldCA9IGFkZnNfZGlyX2NvcHlmcm9tKFxcdTAwMjZkZSwgZGlyLCBwb3MsIDI2KTtcXG5mcy9hZGZzL2Rpcl9mLmMtMjIxLVxcdGlmIChyZXQpXFxuLS1cXG5mcy9hZGZzL2Rpcl9mLmM9MjcxPXN0YXRpYyBpbnQgYWRmc19mX3VwZGF0ZShzdHJ1Y3QgYWRmc19kaXIgKmRpciwgc3RydWN0IG9iamVjdF9pbmZvICpvYmopXFxuLS1cXG5mcy9hZGZzL2Rpcl9mLmMtMjc5LVxcdFxcdG9mZnNldCArPSBzaXplb2YoZGUpO1xcbmZzL2FkZnMvZGlyX2YuYzoyODA6XFx0XFx0cmV0ID0gYWRmc19kaXJfY29weWZyb20oXFx1MDAyNmRlLCBkaXIsIG9mZnNldCwgc2l6ZW9mKGRlKSk7XFxuZnMvYWRmcy9kaXJfZi5jLTI4MS1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jPTE3Mj1hZGZzX2ZwbHVzX2dldG5leHQoc3RydWN0IGFkZnNfZGlyICpkaXIsIHN0cnVjdCBvYmplY3RfaW5mbyAqb2JqKVxcbi0tXFxuZnMvYWRmcy9kaXJfZnBsdXMuYy0xODMtXFxuZnMvYWRmcy9kaXJfZnBsdXMuYzoxODQ6XFx0cmV0ID0gYWRmc19kaXJfY29weWZyb20oXFx1MDAyNmJkZSwgZGlyLCBvZmZzZXQsXFxuZnMvYWRmcy9kaXJfZnBsdXMuYy0xODUtXFx0XFx0XFx0XFx0c2l6ZW9mKHN0cnVjdCBhZGZzX2JpZ2RpcmVudHJ5KSk7XFxuLS1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTIwMC1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjIwMTpcXHRyZXQgPSBhZGZzX2Rpcl9jb3B5ZnJvbShvYmotXFx1MDAzZW5hbWUsIGRpciwgb2Zmc2V0LCBvYmotXFx1MDAzZW5hbWVfbGVuKTtcXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTIwMi1cXHRpZiAocmV0KVxcbi0tXFxuZnMvYWRmcy9kaXJfZnBsdXMuYz0yMzI9c3RhdGljIGludCBhZGZzX2ZwbHVzX3VwZGF0ZShzdHJ1Y3QgYWRmc19kaXIgKmRpciwgc3RydWN0IG9iamVjdF9pbmZvICpvYmopXFxuLS1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTI0Ni1cXHRcXHR9XFxuZnMvYWRmcy9kaXJfZnBsdXMuYzoyNDc6XFx0XFx0cmV0ID0gYWRmc19kaXJfY29weWZyb20oXFx1MDAyNmJkZSwgZGlyLCBvZmZzZXQsIHNpemVvZihiZGUpKTtcXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTI0OC1cXHRcXHRpZiAocmV0KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjAwLjcwMjUwOTAwOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxOTE3MDE5MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBBREZTIERpcmVjdG9yeSBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgdG8gYmUgdG91Y2hpbmcgdHdvIGZ1bmN0aW9uczogYGFkZnNfZGlyX2NvcHlmcm9tYCBhbmQgYGFkZnNfZnBsdXNfZ2V0bmV4dGAuIFRoZSBmaXJzdCBvbmUsIGBhZGZzX2Rpcl9jb3B5ZnJvbWAsIGlzIGFwcGFyZW50bHkgbm9uLXN0YXRpYy4gSW50ZXJlc3RpbmcuIEJ1dCBob2xkIG9uLCBJIHNlZW0gdG8gcmVtZW1iZXIgYGFkZnNfZnBsdXNfZ2V0bmV4dGAgYmVpbmcgc3RhdGljLiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCBieSBxdWlja2x5IG9wZW5pbmcgdXAgYGZzL2FkZnMvZGlyX2ZwbHVzLmNgLiBOZWVkIHRvIGNvbmZpcm0gaWYgaXQgcmVhbGx5IGlzIHN0YXRpYyBpbiB0aGF0IGZpbGUsIG90aGVyd2lzZSwgc29tZXRoaW5nIHNlZW1zIG9mZi4gR290dGEga2VlcCBkaWdnaW5nIHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMDMsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6MTg6MDMuODk0MjEzODM4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNzE1MDc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFkZnNfZnBsdXNfZ2V0bmV4dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9hZGZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9hZGZzL2Rpcl9mcGx1cy5jPTE3MT1zdGF0aWMgaW50XFxuZnMvYWRmcy9kaXJfZnBsdXMuYzoxNzI6YWRmc19mcGx1c19nZXRuZXh0KHN0cnVjdCBhZGZzX2RpciAqZGlyLCBzdHJ1Y3Qgb2JqZWN0X2luZm8gKm9iailcXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTE3My17XFxuLS1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jPTIxMj1zdGF0aWMgaW50IGFkZnNfZnBsdXNfaXRlcmF0ZShzdHJ1Y3QgYWRmc19kaXIgKmRpciwgc3RydWN0IGRpcl9jb250ZXh0ICpjdHgpXFxuLS1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTIyMS1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjIyMjpcXHR3aGlsZSAoIWFkZnNfZnBsdXNfZ2V0bmV4dChkaXIsIFxcdTAwMjZvYmopKSB7XFxuZnMvYWRmcy9kaXJfZnBsdXMuYy0yMjMtXFx0XFx0aWYgKCFkaXJfZW1pdChjdHgsIG9iai5uYW1lLCBvYmoubmFtZV9sZW4sXFxuLS1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jPTI4Mj1jb25zdCBzdHJ1Y3QgYWRmc19kaXJfb3BzIGFkZnNfZnBsdXNfZGlyX29wcyA9IHtcXG4tLVxcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjg1LVxcdC5zZXRwb3NcXHRcXHQ9IGFkZnNfZnBsdXNfc2V0cG9zLFxcbmZzL2FkZnMvZGlyX2ZwbHVzLmM6Mjg2OlxcdC5nZXRuZXh0XFx0PSBhZGZzX2ZwbHVzX2dldG5leHQsXFxuZnMvYWRmcy9kaXJfZnBsdXMuYy0yODctXFx0LnVwZGF0ZVxcdFxcdD0gYWRmc19mcGx1c191cGRhdGUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjAzLjkzNjkzNTEyN1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwODcwODg4MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBBREZTIERpcmVjdG9yeSBJdGVyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgQURGUyBmaWxlIHN5c3RlbSBjb2RlIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgYmVzdCB3YXkgdG8gdHJhY2UgdGhlIGRpcmVjdG9yeSBpdGVyYXRpb24gcHJvY2Vzcy4gSSBzZWUgdGhhdCBgYWRmc19mcGx1c19nZXRuZXh0YCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYC4gUmlnaHQgYXdheSwgdGhhdCB0ZWxscyBtZSBpdCdzIG5vdCB0aGUgaWRlYWwgY2FuZGlkYXRlIGZvciBhIGZvY3VzIHN5bWJvbCwgc2luY2UgaXQncyBub3QgdmlzaWJsZSBvdXRzaWRlIGl0cyBvd24gY29tcGlsYXRpb24gdW5pdC5cblxuSW5zdGVhZCwgSSBuZWVkIHRvIGxvb2sgZm9yIHNvbWV0aGluZyB0aGF0ICp1c2VzKiBgYWRmc19mcGx1c19nZXRuZXh0YC4gSSBjYW4gc2VlIGZyb20gaGVyZSB0aGF0IGBhZGZzX2Rpcl9jb3B5ZnJvbWAsIGBhZGZzX2ZwbHVzX2l0ZXJhdGVgLCBvciBgYWRmc19mcGx1c19yZWFkYCBjb3VsZCBiZSBnb29kIGNob2ljZXMsIGFzIGVpdGhlciB0aGUgY2FsbGVycyBvciB0aGUgb3BzIHN0cnVjdCBtZW1iZXJzIGNvdWxkIGV4cG9zZSB0aGUgaW50ZW5kZWQgZmxvdy5cblxuSG9sZCBvbiBhIG1pbnV0ZS4uLiBJIGp1c3QgcmVtZW1iZXJlZCB0aGF0IGBhZGZzX2ZwbHVzX2dldG5leHRgIGlzIGFjdHVhbGx5IGFzc2lnbmVkIHRvIHRoZSBgLmdldG5leHRgIGZpZWxkIHdpdGhpbiB0aGUgYGFkZnNfZnBsdXNfZGlyX29wc2Agc3RydWN0dXJlLiBUaGF04oCZcyBhIGtleSBwaWVjZSBvZiBpbmZvcm1hdGlvbiEgTm93IEkgbmVlZCB0byBpZGVudGlmeSB0aGUgY2FsbGVycyBvZiB0aGF0IGAuZ2V0bmV4dGAgZnVuY3Rpb24gcG9pbnRlci4gQWNjb3JkaW5nIHRvIHRoZSBjb2RlLCB0aG9zZSBjYWxsZXJzIGFyZSBsb2NhdGVkIGluIGBmcy9hZGZzL2Rpci5jYC4gT2theSwgbGV04oCZcyBnbyBkaXJlY3RseSB0byBgZnMvYWRmcy9kaXIuY2AgYW5kIHZlcmlmeSB0aG9zZSBjb25uZWN0aW9ucyBhbmQgaG93IHRoZSBkaXJlY3RvcnkgaXRlcmF0aW9uIGlzIGFjdHVhbGx5IGhhbmRsZWQuIFRoYXQncyB0aGUgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjM2LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjA4LjAyNDAyNjg0M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE4ODMzOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXFxcXC5nZXRuZXh0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2FkZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2FkZnMvZGlyX2YuYz0zMTc9Y29uc3Qgc3RydWN0IGFkZnNfZGlyX29wcyBhZGZzX2ZfZGlyX29wcyA9IHtcXG4tLVxcbmZzL2FkZnMvZGlyX2YuYy0zMjAtXFx0LnNldHBvc1xcdFxcdD0gYWRmc19mX3NldHBvcyxcXG5mcy9hZGZzL2Rpcl9mLmM6MzIxOlxcdC5nZXRuZXh0XFx0PSBhZGZzX2ZfZ2V0bmV4dCxcXG5mcy9hZGZzL2Rpcl9mLmMtMzIyLVxcdC51cGRhdGVcXHRcXHQ9IGFkZnNfZl91cGRhdGUsXFxuLS1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jPTI4Mj1jb25zdCBzdHJ1Y3QgYWRmc19kaXJfb3BzIGFkZnNfZnBsdXNfZGlyX29wcyA9IHtcXG4tLVxcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjg1LVxcdC5zZXRwb3NcXHRcXHQ9IGFkZnNfZnBsdXNfc2V0cG9zLFxcbmZzL2FkZnMvZGlyX2ZwbHVzLmM6Mjg2OlxcdC5nZXRuZXh0XFx0PSBhZGZzX2ZwbHVzX2dldG5leHQsXFxuZnMvYWRmcy9kaXJfZnBsdXMuYy0yODctXFx0LnVwZGF0ZVxcdFxcdD0gYWRmc19mcGx1c191cGRhdGUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjA4LjE4NTkxOTAxMVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyOTcyNDMyMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczpcblxuKipOYXZpZ2F0aW5nIHRoZSBGaWxlIFN5c3RlbSoqXG5cbk9rYXksIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgYGFkZnNgIGZpbGUgc3lzdGVtLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gaG93IHRoZSBzeXN0ZW0gcmV0cmlldmVzIHRoZSBcIm5leHRcIiBlbGVtZW50LiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gc3RhcnQgYnkgc2VhcmNoaW5nIGZvciBgLVx1MDAzZWdldG5leHRgLiBUaGlzIGlzIGEgY29tbW9uIHBhdHRlcm4gZm9yIGxpbmtlZCBsaXN0cyBvciBpdGVyYXRvcnMgaW4gQy1saWtlIGNvZGUsIHNvIGl0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGxvb2sgZm9yIHdoZXJlIHRoZSBuZXh0IGVsZW1lbnQgaW4gYSBkYXRhIHN0cnVjdHVyZSBpcyBhY2Nlc3NlZC4gVGFyZ2V0aW5nIGBmcy9hZGZzL2AgaXMgbG9naWNhbDsgdGhlIFwiZnNcIiBwYXJ0IHRlbGxzIG1lIGl04oCZcyByZWxhdGVkIHRvIHRoZSBmaWxlIHN5c3RlbSwgYW5kIFwiYWRmc1wiIGV4cGxpY2l0bHkgbmFycm93cyB0aGUgc2NvcGUuIEknbSBleHBlY3RpbmcgdGhpcyB3aWxsIGxpa2VseSBwb2ludCBtZSB0byBhIGZ1bmN0aW9uIG9yIG1hY3JvIHJlc3BvbnNpYmxlIGZvciB0cmF2ZXJzaW5nIG9yIGl0ZXJhdGluZyBvdmVyIGRpcmVjdG9yeSBlbnRyaWVzLCBmaWxlIG1ldGFkYXRhLCBvciBhbGxvY2F0aW9uIHN0cnVjdHVyZXMgd2l0aGluIHRoZSBBREZTIGltcGxlbWVudGF0aW9uLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8ga2VlcCB0cmFjayBvZiB0aGUgc3BlY2lmaWMgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIHVzZWQuIEknbGwgc2VhcmNoIGZvciBgLVx1MDAzZWdldG5leHRgIGFuZCBzdGFydCB0aGVyZS4gRnJvbSB0aGVyZSBJJ2xsIGxpa2VseSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSBob3cgdGhhdCBlbGVtZW50IGlzIHNlbGVjdGVkLCBhbmQgaG93IHRoZSB0cmF2ZXJzYWwgbG9naWMgaXMgaGFuZGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM2OSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjExLjQ4MzE2NDk3OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI3NTExNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiLVxcdTAwM2VnZXRuZXh0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2FkZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2FkZnMvZGlyLmM9MzUxPXN0YXRpYyBpbnQgYWRmc19kaXJfbG9va3VwX2J5bmFtZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCBzdHJ1Y3QgcXN0ciAqcXN0cixcXG4tLVxcbmZzL2FkZnMvZGlyLmMtMzcyLVxcdG5hbWVfbGVuID0gcXN0ci1cXHUwMDNlbGVuO1xcbmZzL2FkZnMvZGlyLmM6MzczOlxcdHdoaWxlIChvcHMtXFx1MDAzZWdldG5leHQoXFx1MDAyNmRpciwgb2JqKSA9PSAwKSB7XFxuZnMvYWRmcy9kaXIuYy0zNzQtXFx0XFx0aWYgKCFfX2FkZnNfY29tcGFyZShuYW1lLCBuYW1lX2xlbiwgb2JqLVxcdTAwM2VuYW1lLCBvYmotXFx1MDAzZW5hbWVfbGVuKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDoxODoxMS41MjU5MjM3MzhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIzOTE3NTIyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydCBpbiB0aGlzIGFyZWE6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBBREZTIERpcmVjdG9yeSBMb29rdXAqKlxuXG5BbHJpZ2h0LCBteSBmb2N1cyBpcyBub3cgb24gdGhlIGBhZGZzX2Rpcl9sb29rdXBfYnluYW1lYCBmdW5jdGlvbi4gSSBzZWUgdGhhdCBpdCBjYWxscyBgb3BzLVx1MDAzZWdldG5leHRgLCBhbmQgdGhhdCdzIGltbWVkaWF0ZWx5IHVzZWZ1bCBhcyBhIHBvaW50IG9mIGludmVzdGlnYXRpb24uIFRoaXMgZnVuY3Rpb24gc2VlbXMgY2VudHJhbCB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgZGlyZWN0b3J5IGxvb2t1cCBwcm9jZXNzIHdvcmtzLiBJJ20gYWxzbyBhZGRpbmcgYGFkZnNfZGlyX2NvcHlmcm9tYCB0byB0aGUgbGlzdCBvZiBrZXkgZnVuY3Rpb25zIHRvIHNjcnV0aW5pemUuXG5cbk15IG5leHQgc3RlcCBpcyB0byBvcGVuIHVwIGBmcy9hZGZzL2Rpci5jYC4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgYGFkZnNfZGlyX2xvb2t1cF9ieW5hbWVgIGlzIGEgc3RhdGljIGZ1bmN0aW9uIHdpdGhpbiB0aGF0IGZpbGUuIFRoYXQga25vd2xlZGdlIGlzIGNydWNpYWwsIGFzIGl0IHdpbGwgdGVsbCBtZSBpdHMgc2NvcGUgYW5kIGltcGFjdCBvbiBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGl0cyBvdmVyYWxsIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc5OCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjE0Ljc2NTEwMTg5NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI0NzgyMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWRmc19kaXJfbG9va3VwX2J5bmFtZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9hZGZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9hZGZzL2Rpci5jPTMzNj1zdGF0aWMgaW50IF9fYWRmc19jb21wYXJlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnFzdHIsIHUzMiBxbGVuLFxcbi0tXFxuZnMvYWRmcy9kaXIuYy0zNTAtXFxuZnMvYWRmcy9kaXIuYzozNTE6c3RhdGljIGludCBhZGZzX2Rpcl9sb29rdXBfYnluYW1lKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHN0cnVjdCBxc3RyICpxc3RyLFxcbmZzL2FkZnMvZGlyLmMtMzUyLVxcdFxcdFxcdFxcdCAgc3RydWN0IG9iamVjdF9pbmZvICpvYmopXFxuLS1cXG5mcy9hZGZzL2Rpci5jPTQzND1hZGZzX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCB1bnNpZ25lZCBpbnQgZmxhZ3MpXFxuLS1cXG5mcy9hZGZzL2Rpci5jLTQzOS1cXG5mcy9hZGZzL2Rpci5jOjQ0MDpcXHRlcnJvciA9IGFkZnNfZGlyX2xvb2t1cF9ieW5hbWUoZGlyLCBcXHUwMDI2ZGVudHJ5LVxcdTAwM2VkX25hbWUsIFxcdTAwMjZvYmopO1xcbmZzL2FkZnMvZGlyLmMtNDQxLVxcdGlmIChlcnJvciA9PSAwKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjE0Ljg0NzU4NDI4NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDc3Njk2OTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipBbmFseXppbmcgQURGUyBEaXJlY3RvcnkgTG9va3VwIE9wZXJhdGlvbnMqKlxuXG5SaWdodCwgbGV0J3Mgc2VlLiBUaGUgZnVuY3Rpb24gYGFkZnNfZGlyX2xvb2t1cF9ieW5hbWVgIOKAkyB0aGF0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIG1lYW5zIGl0J3MgbGltaXRlZCBpbiBzY29wZSwgbGlrZWx5IGludGVybmFsIHRvIGEgc3BlY2lmaWMgZmlsZSBvciBtb2R1bGUuIEdvdCBpdC4gTm93LCBgYWRmc19sb29rdXBgLi4uIGFoLCB0aGF0IG9uZSdzIHRoZSByZWFsIGRlYWwsIHRoZSBhY3R1YWwgZGlyZWN0b3J5IGxvb2t1cCBvcGVyYXRpb24gaXRzZWxmLiBJdCdzIG5vdCBzdGF0aWMsIHNvIGl0J3MgcHJvYmFibHkgYWNjZXNzaWJsZSBmcm9tIGVsc2V3aGVyZSBpbiB0aGUgQURGUyBpbXBsZW1lbnRhdGlvbi5cblxuVGltZSB0byBkaXZlIGluLiBUbyBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgYW5kIHNlZSBleGFjdGx5IGhvdyBgYWRmc19sb29rdXBgIGlzIGltcGxlbWVudGVkLCBJIG5lZWQgdG8gY2hlY2sgdGhlIHNvdXJjZSBjb2RlLiBMZXQncyBoZWFkIG92ZXIgdG8gYGZzL2FkZnMvZGlyLmNgLiBUaGF0IHNob3VsZCBjb250YWluIHRoZSByZWxldmFudCBkZWZpbml0aW9uIGFuZCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGxvb2t1cCBpcyBoYW5kbGVkIGF0IHRoZSBmaWxlIHN5c3RlbSBsZXZlbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM1MCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjE4LjMyNTI4Mzk1OVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxMTIyNjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFkZnNfbG9va3VwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2FkZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2FkZnMvZGlyLmM9NDMzPXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpcXG5mcy9hZGZzL2Rpci5jOjQzNDphZGZzX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCB1bnNpZ25lZCBpbnQgZmxhZ3MpXFxuZnMvYWRmcy9kaXIuYy00MzUte1xcbi0tXFxuZnMvYWRmcy9kaXIuYz00NTg9Y29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgYWRmc19kaXJfaW5vZGVfb3BlcmF0aW9ucyA9IHtcXG5mcy9hZGZzL2Rpci5jOjQ1OTpcXHQubG9va3VwXFx0XFx0PSBhZGZzX2xvb2t1cCxcXG5mcy9hZGZzL2Rpci5jLTQ2MC1cXHQuc2V0YXR0clxcdD0gYWRmc19zZXRhdHRyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDoxODoxOC40MjY0MTM1MTdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA0NzUzNzI0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQURGUyBGdW5jdGlvbiBWaXNpYmlsaXR5KipcblxuT2theSwgc28gSSdtIG5vdGljaW5nIGBhZGZzX2xvb2t1cGAgaXMgYWxzbyBkZWZpbmVkIHN0YXRpY2FsbHksIHdoaWNoIGlzIHdoYXQgSSBleHBlY3RlZC4gTm93LCBob2xkIG9uLCB3aGF0IGFib3V0IGBhZGZzX2Rpcl9jb3B5ZnJvbWA/IElzIHRoYXQgZnVuY3Rpb24gZXhwb3J0ZWQsIG9yIHNpbXBseSBub3QgZGVjbGFyZWQgc3RhdGljPyBBaCwgeWVzLCBpdCdzIG5vdCBzdGF0aWMuIFJpZ2h0LCB0aGF0IG1ha2VzIG1vcmUgc2Vuc2UuXG5cblRpbWUgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIGFuZCBjaGVjayB0aGUgc291cmNlOiBJJ2xsIGhlYWQgb3ZlciB0byBgZnMvYWRmcy9kaXJfZnBsdXMuY2AgYW5kIHRha2UgYSBsb29rIGZvciBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgZGVmaW5lZCB0aGVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3OTEsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDoxODoyMS40NzM5NTQwNDlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDUwNDk5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeaW50IFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9hZGZzL2Rpcl9mcGx1cy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDoxODoyMS41MTg0MTM3MDhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE2NjQwODMwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIElzc3VlcyBpbiBBREZTIERpcmVjdG9yeSBIYW5kbGluZyoqXG5cbk9rYXksIEkgbmVlZCB0byBwaW5wb2ludCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIG9yIGFyZWFzIGZvciBpbXByb3ZlbWVudCB3aXRoaW4gdGhlIEFERlMgZGlyZWN0b3J5IGNvZGUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGBmcy9hZGZzL2Rpci5jYC4gSSBuZWVkIHRvIHJldmlldyB0aGlzIGZpbGUgZm9yIG5vbi1zdGF0aWMgZnVuY3Rpb25zLiBUaGUgcmVhc29uaW5nIGlzIHRoYXQgbm9uLXN0YXRpYyBmdW5jdGlvbnMgYXJlIHBvdGVudGlhbGx5IHZpc2libGUgb3V0c2lkZSBvZiB0aGUgbW9kdWxlIHRoZXkgYXJlIGRlZmluZWQgaW4sIHdoaWNoIGNvdWxkIGxlYWQgdG8gdW5pbnRlbmRlZCBhY2Nlc3MsIG1pc3VzZSwgb3IgZXZlbiBzZWN1cml0eSBpc3N1ZXMgaWYgbm90IGNhcmVmdWxseSBtYW5hZ2VkLiBJIGtub3cgaG93IHRyaWNreSB0aGVzZSBmaWxlIHN5c3RlbSBjb21wb25lbnRzIGNhbiBnZXQuIEkgbmVlZCB0byBlbnN1cmUgdGhleSBhcmUgd2VsbC1zY29wZWQgYW5kIHRoYXQgYW55IGV4cG9ydGVkIGZ1bmN0aW9ucyBhcmUgZXhwbGljaXRseSBkZXNpZ25lZCBmb3IgZXh0ZXJuYWwgdXNlIHdpdGggdGhvcm91Z2ggc2VjdXJpdHkgcmV2aWV3cy4gVGhlcmVmb3JlLCBteSBuZXh0IGFjdGlvbiBpcyB0byBkaXZlIGludG8gdGhhdCBmaWxlIGFuZCBzcGVjaWZpY2FsbHkgbG9vayBmb3IgdGhvc2Ugbm9uLXN0YXRpYyBmdW5jdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwMzUsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDoxODoyNC42ODQ4MjU2NTlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDU2MDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16X0EtWjAtOV0rIFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9hZGZzL2Rpci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2FkZnMvZGlyLmMtMTUtICovXFxuZnMvYWRmcy9kaXIuYzoxNjpzdGF0aWMgREVDTEFSRV9SV1NFTShhZGZzX2Rpcl9yd3NlbSk7XFxuZnMvYWRmcy9kaXIuYy0xNy1cXG5mcy9hZGZzL2Rpci5jOjE4OmludCBhZGZzX2Rpcl9jb3B5ZnJvbSh2b2lkICpkc3QsIHN0cnVjdCBhZGZzX2RpciAqZGlyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LFxcbmZzL2FkZnMvZGlyLmMtMTktXFx0XFx0ICAgICAgc2l6ZV90IGxlbilcXG4tLVxcbmZzL2FkZnMvZGlyLmMtNDUtXFxuZnMvYWRmcy9kaXIuYzo0NjppbnQgYWRmc19kaXJfY29weXRvKHN0cnVjdCBhZGZzX2RpciAqZGlyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBjb25zdCB2b2lkICpzcmMsXFxuZnMvYWRmcy9kaXIuYy00Ny1cXHRcXHQgICAgc2l6ZV90IGxlbilcXG4tLVxcbmZzL2FkZnMvZGlyLmMtNzAtXFxuZnMvYWRmcy9kaXIuYzo3MTpzdGF0aWMgdm9pZCBfX2FkZnNfZGlyX2NsZWFudXAoc3RydWN0IGFkZnNfZGlyICpkaXIpXFxuZnMvYWRmcy9kaXIuYy03Mi17XFxuLS1cXG5mcy9hZGZzL2Rpci5jLTgwLVxcbmZzL2FkZnMvZGlyLmM6ODE6dm9pZCBhZGZzX2Rpcl9yZWxzZShzdHJ1Y3QgYWRmc19kaXIgKmRpcilcXG5mcy9hZGZzL2Rpci5jLTgyLXtcXG4tLVxcbmZzL2FkZnMvZGlyLmMtOTAtXFxuZnMvYWRmcy9kaXIuYzo5MTpzdGF0aWMgdm9pZCBhZGZzX2Rpcl9mb3JnZXQoc3RydWN0IGFkZnNfZGlyICpkaXIpXFxuZnMvYWRmcy9kaXIuYy05Mi17XFxuLS1cXG5mcy9hZGZzL2Rpci5jLTEwMC1cXG5mcy9hZGZzL2Rpci5jOjEwMTppbnQgYWRmc19kaXJfcmVhZF9idWZmZXJzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBpbmRhZGRyLFxcbmZzL2FkZnMvZGlyLmMtMTAyLVxcdFxcdFxcdCAgdW5zaWduZWQgaW50IHNpemUsIHN0cnVjdCBhZGZzX2RpciAqZGlyKVxcbi0tXFxuZnMvYWRmcy9kaXIuYy0xNDktXFxuZnMvYWRmcy9kaXIuYzoxNTA6c3RhdGljIGludCBhZGZzX2Rpcl9yZWFkKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBpbmRhZGRyLFxcbmZzL2FkZnMvZGlyLmMtMTUxLVxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgc2l6ZSwgc3RydWN0IGFkZnNfZGlyICpkaXIpXFxuLS1cXG5mcy9hZGZzL2Rpci5jLTE1OS1cXG5mcy9hZGZzL2Rpci5jOjE2MDpzdGF0aWMgaW50IGFkZnNfZGlyX3JlYWRfaW5vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGlub2RlICppbm9kZSxcXG5mcy9hZGZzL2Rpci5jLTE2MS1cXHRcXHRcXHQgICAgICAgc3RydWN0IGFkZnNfZGlyICpkaXIpXFxuLS1cXG5mcy9hZGZzL2Rpci5jLTE3OS1cXG5mcy9hZGZzL2Rpci5jOjE4MDpzdGF0aWMgdm9pZCBhZGZzX2Rpcl9tYXJrX2RpcnR5KHN0cnVjdCBhZGZzX2RpciAqZGlyKVxcbmZzL2FkZnMvZGlyLmMtMTgxLXtcXG4tLVxcbmZzL2FkZnMvZGlyLmMtMTg4LVxcbmZzL2FkZnMvZGlyLmM6MTg5OnN0YXRpYyBpbnQgYWRmc19kaXJfc3luYyhzdHJ1Y3QgYWRmc19kaXIgKmRpcilcXG5mcy9hZGZzL2Rpci5jLTE5MC17XFxuLS1cXG5mcy9hZGZzL2Rpci5jLTIwMy1cXG5mcy9hZGZzL2Rpci5jOjIwNDp2b2lkIGFkZnNfb2JqZWN0X2ZpeHVwKHN0cnVjdCBhZGZzX2RpciAqZGlyLCBzdHJ1Y3Qgb2JqZWN0X2luZm8gKm9iailcXG5mcy9hZGZzL2Rpci5jLTIwNS17XFxuLS1cXG5mcy9hZGZzL2Rpci5jLTI0MS1cXG5mcy9hZGZzL2Rpci5jOjI0MjpzdGF0aWMgaW50IGFkZnNfaXRlcmF0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGRpcl9jb250ZXh0ICpjdHgpXFxuZnMvYWRmcy9kaXIuYy0yNDMte1xcbi0tXFxuZnMvYWRmcy9kaXIuYz0yNzk9YWRmc19kaXJfdXBkYXRlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBvYmplY3RfaW5mbyAqb2JqLCBpbnQgd2FpdClcXG4tLVxcbmZzL2FkZnMvZGlyLmMtMzI4LVxcbmZzL2FkZnMvZGlyLmM6MzI5OnN0YXRpYyB1bnNpZ25lZCBjaGFyIGFkZnNfdG9sb3dlcih1bnNpZ25lZCBjaGFyIGMpXFxuZnMvYWRmcy9kaXIuYy0zMzAte1xcbi0tXFxuZnMvYWRmcy9kaXIuYy0zMzUtXFxuZnMvYWRmcy9kaXIuYzozMzY6c3RhdGljIGludCBfX2FkZnNfY29tcGFyZShjb25zdCB1bnNpZ25lZCBjaGFyICpxc3RyLCB1MzIgcWxlbixcXG5mcy9hZGZzL2Rpci5jLTMzNy1cXHRcXHRcXHQgIGNvbnN0IGNoYXIgKnN0ciwgdTMyIGxlbilcXG4tLVxcbmZzL2FkZnMvZGlyLmMtMzUwLVxcbmZzL2FkZnMvZGlyLmM6MzUxOnN0YXRpYyBpbnQgYWRmc19kaXJfbG9va3VwX2J5bmFtZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCBzdHJ1Y3QgcXN0ciAqcXN0cixcXG5mcy9hZGZzL2Rpci5jLTM1Mi1cXHRcXHRcXHRcXHQgIHN0cnVjdCBvYmplY3RfaW5mbyAqb2JqKVxcbi0tXFxuZnMvYWRmcy9kaXIuYy0zOTAtXFxuZnMvYWRmcy9kaXIuYzozOTE6Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBhZGZzX2Rpcl9vcGVyYXRpb25zID0ge1xcbmZzL2FkZnMvZGlyLmMtMzkyLVxcdC5yZWFkXFx0XFx0PSBnZW5lcmljX3JlYWRfZGlyLFxcbi0tXFxuZnMvYWRmcy9kaXIuYy0zOTctXFxuZnMvYWRmcy9kaXIuYzozOTg6c3RhdGljIGludFxcbmZzL2FkZnMvZGlyLmMtMzk5LWFkZnNfaGFzaChjb25zdCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHN0cnVjdCBxc3RyICpxc3RyKVxcbi0tXFxuZnMvYWRmcy9kaXIuYy00MjEtICovXFxuZnMvYWRmcy9kaXIuYzo0MjI6c3RhdGljIGludCBhZGZzX2NvbXBhcmUoY29uc3Qgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCB1bnNpZ25lZCBpbnQgbGVuLFxcbmZzL2FkZnMvZGlyLmMtNDIzLVxcdFxcdFxcdGNvbnN0IGNoYXIgKnN0ciwgY29uc3Qgc3RydWN0IHFzdHIgKnFzdHIpXFxuLS1cXG5mcy9hZGZzL2Rpci5jLTQyNy1cXG5mcy9hZGZzL2Rpci5jOjQyODpjb25zdCBzdHJ1Y3QgZGVudHJ5X29wZXJhdGlvbnMgYWRmc19kZW50cnlfb3BlcmF0aW9ucyA9IHtcXG5mcy9hZGZzL2Rpci5jLTQyOS1cXHQuZF9oYXNoXFx0XFx0PSBhZGZzX2hhc2gsXFxuLS1cXG5mcy9hZGZzL2Rpci5jLTQzMi1cXG5mcy9hZGZzL2Rpci5jOjQzMzpzdGF0aWMgc3RydWN0IGRlbnRyeSAqXFxuZnMvYWRmcy9kaXIuYy00MzQtYWRmc19sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW5zaWduZWQgaW50IGZsYWdzKVxcbi0tXFxuZnMvYWRmcy9kaXIuYy00NTctICovXFxuZnMvYWRmcy9kaXIuYzo0NTg6Y29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgYWRmc19kaXJfaW5vZGVfb3BlcmF0aW9ucyA9IHtcXG5mcy9hZGZzL2Rpci5jLTQ1OS1cXHQubG9va3VwXFx0XFx0PSBhZGZzX2xvb2t1cCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6MTg6MjQuNzI5Mjg2OTM4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxODE5MzkzMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEZ1bmN0aW9uIENhbGxzIGFuZCBJZGVudGlmeWluZyBFbnRyeSBQb2ludHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgcmVsZXZhbnQgZW50cnkgcG9pbnRzLiBJIHNlZSB0aGF0IGBhZGZzX2Rpcl9jb3B5ZnJvbWAsIGBhZGZzX2Rpcl9yZWFkX2J1ZmZlcnNgLCBgYWRmc19vYmplY3RfZml4dXBgLCBhbmQgYGFkZnNfZGlyX3VwZGF0ZWAgYXJlIGFsbCBub24tc3RhdGljIGZ1bmN0aW9ucywgd2hpY2ggbWFrZXMgdGhlbSBwb3RlbnRpYWwgdGFyZ2V0cy4gVGhlIHBhdGNoIG1vZGlmaWVzIGBhZGZzX2Rpcl9jb3B5ZnJvbWAgYW5kIGBhZGZzX2ZwbHVzX2dldG5leHRgLCBhbmQgYGFkZnNfZGlyX2NvcHlmcm9tYCBzZWVtcyBsaWtlIGEgZ29vZCBmb2N1cywgY29uc2lkZXJpbmcgdGhlIGRpcmVjdCBtb2RpZmljYXRpb24uXG5cbkkgaW5pdGlhbGx5IHRob3VnaHQgYGFkZnNfZnBsdXNfZ2V0bmV4dGAgY291bGQgYmUgdXNlZnVsLCBidXQgaXQncyBzdGF0aWMsIHNvIHRoYXQncyBhIGRlYWQgZW5kLiBPa2F5LCBzbyB3aGF0ICpkb2VzKiBjYWxsIGBhZGZzX2ZwbHVzX2dldG5leHRgPyBJdCdzIGNhbGxlZCB0aHJvdWdoIGBvcHMtXHUwMDNlZ2V0bmV4dGAsIGJ1dCB0aGF0IGRvZXNuJ3QgaW1tZWRpYXRlbHkgZ2l2ZSBtZSBlbnRyeSBwb2ludHMuIExvb2tpbmcgYXQgdGhlIGNhbGxlcnMgb2YgdGhhdCBgb3BzLVx1MDAzZWdldG5leHRgIHN0cnVjdHVyZSwgSSBzZWUgYGFkZnNfZGlyX2xvb2t1cF9ieW5hbWVgIGFuZCBgYWRmc19pdGVyYXRlYC4gIFVuZm9ydHVuYXRlbHksIGBhZGZzX2l0ZXJhdGVgIGlzIGFsc28gc3RhdGljLCBzbyBJIGNhbid0IGRpcmVjdGx5IHVzZSBpdC4gVGhpcyBtZWFucyB0aGUgZW50cnkgcG9pbnRzIGNvdWxkIGJlIGBhZGZzX2Rpcl9vcGVyYXRpb25zLml0ZXJhdGVfc2hhcmVkYCAod2hpY2ggaXMgYGFkZnNfaXRlcmF0ZWApIGFuZCBgYWRmc19kaXJfaW5vZGVfb3BlcmF0aW9ucy5sb29rdXBgICh3aGljaCBpcyBgYWRmc19sb29rdXBgKS4gQnV0IGJvdGggYXJlLCBhZ2Fpbiwgc3RhdGljIGZ1bmN0aW9ucy4gSSBtaXNzZWQgYGFkZnNfbG9va3VwYCBpcyBzdGF0aWMhIFNvIHRoYXQgaXMgbm90IGhlbHBmdWwuXG5cbkJ1dCB3YWl0LCBiYWNrIHRvIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucy4gYGFkZnNfZGlyX2NvcHlmcm9tYCAqaXMqIG5vbi1zdGF0aWMhIEFuZCBpdCdzIGRpcmVjdGx5IG1vZGlmaWVkIGJ5IHRoZSBwYXRjaCwgc28gaXQncyBhIGdvb2QgY2hvaWNlLiAgYGFkZnNfZGlyX3JlYWRfYnVmZmVyc2AgaXMgbm9uLXN0YXRpYyB0b28uIEkgc2hvdWxkIGNoZWNrIGBmcy9hZGZzL2Rpci5jYCB0byBiZSBzdXJlIHRoYXQgYGFkZnNfZGlyX2NvcHlmcm9tYCBpcyB0aGUgcmlnaHQgY2hvaWNlLiBZZXMsIHRoZSBtb2RpZmljYXRpb24gaXMgZGlyZWN0bHkgaW4gdGhhdCBmdW5jdGlvbi4gSXQgaXMgYSBnb29kIG9wdGlvbi4gTm93LCB0byBtYWtlIHN1cmUgSSBoYXZlIGFsbCB0aGUgY29udGV4dCBJIG5lZWQsIEknbGwgY2hlY2sgYGZzL2FkZnMvS2NvbmZpZ2AgdG8gaWRlbnRpZnkgdGhlIGNvbmZpZyBuYW1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODA1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjMxLjkxMTIyODU2NFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1OTMyMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFERlNfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvYWRmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvYWRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvYWRmcy9LY29uZmlnOjI6Y29uZmlnIEFERlNfRlNcXG5mcy9hZGZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiQURGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvYWRmcy9LY29uZmlnLTIyLVxcbmZzL2FkZnMvS2NvbmZpZzoyMzpjb25maWcgQURGU19GU19SV1xcbmZzL2FkZnMvS2NvbmZpZy0yNC1cXHRib29sIFxcXCJBREZTIHdyaXRlIHN1cHBvcnQgKERBTkdFUk9VUylcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjMxLjk1NjgyNjQ0NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjk2ODk5MDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQURGUyBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYEFERlNfRlNgIGNvbmZpZ3VyYXRpb24uIEZpcnN0LCBJJ20gdHJ5aW5nIHRvIHplcm8gaW4gb24gYSBnb29kIGZvY3VzIHN5bWJvbCwgYW5kIEknbSB0aGlua2luZyBgYWRmc19kaXJfY29weWZyb21gIG1pZ2h0IGJlIGEgZ29vZCBjYW5kaWRhdGUuIEl0J3MgYSBub24tc3RhdGljLCBzbyBhbiBleHBvcnRlZCBmdW5jdGlvbiB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEhvbGQgb24sIGlzIGBhZGZzX2Rpcl9jb3B5ZnJvbWAgKmFjdHVhbGx5KiBleHBvcnRlZD8gTGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIGlmIGl0J3MgdmlzaWJsZS4gWWVwLCBJIHNob3VsZCBjaGVjayB0aGUgaGVhZGVyLCBzcGVjaWZpY2FsbHkgYGZzL2FkZnMvYWRmcy5oYC4gQWxyaWdodCwgaXQncyBkZWZpbmVkIHRoZXJlLCBnb29kLiBOb3csIGxldCdzIHNlZSBpZiBgYWRmc19mcGx1c19yZWFkYCBleGlzdHMsIG1pZ2h0IGJlIG9mIHNvbWUgdXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5ODU3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjM1LjY1MzcyNzgwNVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIyNDA1MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWRmc19mcGx1c19yZWFkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2FkZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2FkZnMvZGlyX2ZwbHVzLmM9NzA9c3RhdGljIHU4IGFkZnNfZnBsdXNfY2hlY2tieXRlKHN0cnVjdCBhZGZzX2RpciAqZGlyKVxcbi0tXFxuZnMvYWRmcy9kaXJfZnBsdXMuYy0xMDItXFxuZnMvYWRmcy9kaXJfZnBsdXMuYzoxMDM6c3RhdGljIGludCBhZGZzX2ZwbHVzX3JlYWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGluZGFkZHIsXFxuZnMvYWRmcy9kaXJfZnBsdXMuYy0xMDQtXFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IHNpemUsIHN0cnVjdCBhZGZzX2RpciAqZGlyKVxcbi0tXFxuZnMvYWRmcy9kaXJfZnBsdXMuYz0yODI9Y29uc3Qgc3RydWN0IGFkZnNfZGlyX29wcyBhZGZzX2ZwbHVzX2Rpcl9vcHMgPSB7XFxuZnMvYWRmcy9kaXJfZnBsdXMuYzoyODM6XFx0LnJlYWRcXHRcXHQ9IGFkZnNfZnBsdXNfcmVhZCxcXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTI4NC1cXHQuaXRlcmF0ZVxcdD0gYWRmc19mcGx1c19pdGVyYXRlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDoxODozNS42OTU5NzI0MDRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIyOTE1OTY5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLi4uXG5cbioqQW5hbHl6aW5nIEFERlMgU3RhdGljIERlY2xhcmF0aW9ucyoqXG5cbkFscmlnaHQsIHNvIGBhZGZzX2ZwbHVzX3JlYWRgIGlzIGRlZmluaXRlbHkgc3RhdGljLiBHb3QgaXQuIE5vdywgdGhlIG5leHQgcXVlc3Rpb24gaXMgYWJvdXQgYGFkZnNfZnBsdXNfZGlyX29wc2AuIEl0J3Mgbm90IHN0YXRpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEJ1dCwgaGFuZyBvbiwgaXQncyBhIHN0cnVjdHVyZSBkZWZpbml0aW9uLCBub3QgYSBmdW5jdGlvbi4gU28sIHRoYXQgZG9lc24ndCByZWFsbHkgbWF0dGVyIGluIHRoaXMgY2FzZS4gTGV0J3MgZGlnIGRlZXBlci4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIHNvbWV0aGluZy4gSSdsbCBjaGVjayBgZnMvYWRmcy9kaXJfZnBsdXMuY2AgYW5kIHNwZWNpZmljYWxseSBsb29rIGZvciBmdW5jdGlvbnMgdGhhdCAqYXJlbid0KiBkZWNsYXJlZCBhcyBzdGF0aWMuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQncyBleHBvc2VkIG91dHNpZGUgb2YgdGhlIGZpbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzkxLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6MTg6MzguOTI1MTM1MjUzWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mzk4NjA2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2Etel9BLVowLTldKyBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvYWRmcy9kaXJfZnBsdXMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9hZGZzL2Rpcl9mcGx1cy5jLTEwLS8qIFJldHVybiB0aGUgYnl0ZSBvZmZzZXQgdG8gZGlyZWN0b3J5IGVudHJ5IHBvcyAqL1xcbmZzL2FkZnMvZGlyX2ZwbHVzLmM6MTE6c3RhdGljIHVuc2lnbmVkIGludCBhZGZzX2ZwbHVzX29mZnNldChjb25zdCBzdHJ1Y3QgYWRmc19iaWdkaXJoZWFkZXIgKmgsXFxuZnMvYWRmcy9kaXJfZnBsdXMuYy0xMi1cXHRcXHRcXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgcG9zKVxcbi0tXFxuZnMvYWRmcy9kaXJfZnBsdXMuYy0xOC1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjE5OnN0YXRpYyBpbnQgYWRmc19mcGx1c192YWxpZGF0ZV9oZWFkZXIoY29uc3Qgc3RydWN0IGFkZnNfYmlnZGlyaGVhZGVyICpoKVxcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjAte1xcbi0tXFxuZnMvYWRmcy9kaXJfZnBsdXMuYy01OC1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjU5OnN0YXRpYyBpbnQgYWRmc19mcGx1c192YWxpZGF0ZV90YWlsKGNvbnN0IHN0cnVjdCBhZGZzX2JpZ2RpcmhlYWRlciAqaCxcXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTYwLVxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgYWRmc19iaWdkaXJ0YWlsICp0KVxcbi0tXFxuZnMvYWRmcy9kaXJfZnBsdXMuYy02OS1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjcwOnN0YXRpYyB1OCBhZGZzX2ZwbHVzX2NoZWNrYnl0ZShzdHJ1Y3QgYWRmc19kaXIgKmRpcilcXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTcxLXtcXG4tLVxcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMTAyLVxcbmZzL2FkZnMvZGlyX2ZwbHVzLmM6MTAzOnN0YXRpYyBpbnQgYWRmc19mcGx1c19yZWFkKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBpbmRhZGRyLFxcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMTA0LVxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBzaXplLCBzdHJ1Y3QgYWRmc19kaXIgKmRpcilcXG4tLVxcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMTU3LVxcbmZzL2FkZnMvZGlyX2ZwbHVzLmM6MTU4OnN0YXRpYyBpbnRcXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTE1OS1hZGZzX2ZwbHVzX3NldHBvcyhzdHJ1Y3QgYWRmc19kaXIgKmRpciwgdW5zaWduZWQgaW50IGZwb3MpXFxuLS1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTE3MC1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjE3MTpzdGF0aWMgaW50XFxuZnMvYWRmcy9kaXJfZnBsdXMuYy0xNzItYWRmc19mcGx1c19nZXRuZXh0KHN0cnVjdCBhZGZzX2RpciAqZGlyLCBzdHJ1Y3Qgb2JqZWN0X2luZm8gKm9iailcXG4tLVxcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjExLVxcbmZzL2FkZnMvZGlyX2ZwbHVzLmM6MjEyOnN0YXRpYyBpbnQgYWRmc19mcGx1c19pdGVyYXRlKHN0cnVjdCBhZGZzX2RpciAqZGlyLCBzdHJ1Y3QgZGlyX2NvbnRleHQgKmN0eClcXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTIxMy17XFxuLS1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTIzMS1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjIzMjpzdGF0aWMgaW50IGFkZnNfZnBsdXNfdXBkYXRlKHN0cnVjdCBhZGZzX2RpciAqZGlyLCBzdHJ1Y3Qgb2JqZWN0X2luZm8gKm9iailcXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTIzMy17XFxuLS1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTI2Mi1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjI2MzpzdGF0aWMgaW50IGFkZnNfZnBsdXNfY29tbWl0KHN0cnVjdCBhZGZzX2RpciAqZGlyKVxcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjY0LXtcXG4tLVxcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjgxLVxcbmZzL2FkZnMvZGlyX2ZwbHVzLmM6MjgyOmNvbnN0IHN0cnVjdCBhZGZzX2Rpcl9vcHMgYWRmc19mcGx1c19kaXJfb3BzID0ge1xcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjgzLVxcdC5yZWFkXFx0XFx0PSBhZGZzX2ZwbHVzX3JlYWQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjM4Ljk2OTEyNTAxM1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjYxMjY1NjExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBBREZTIERpcmVjdG9yeSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGFsbCB0aGUgZnVuY3Rpb25zIGluIGBmcy9hZGZzL2Rpcl9mcGx1cy5jYCBhcmUgKnN0YXRpYyouIFRoYXQgbWVhbnMsIGludGVybmFsbHksIEknbSBsaW1pdGVkIGluIG15IGZvY3VzLiBJdCBzZWVtcyBsaWtlIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50IGlzIGBhZGZzX2Rpcl9jb3B5ZnJvbWAuIFdhaXQsIGdvb2QhIGBhZGZzX2Rpcl9jb3B5ZnJvbWAgKmlzbid0KiBzdGF0aWMuIFRoYXQncyBwZXJmZWN0OyBpdCBnaXZlcyBtZSBhIGNsZWFyIGVudHJ5IHBvaW50LlxuXG5UaGUgY29yZSBvZiB0aGlzIGZpeCB0YXJnZXRzIGEgYnVnIGluIGBhZGZzX2Rpcl9jb3B5ZnJvbWAuIFNwZWNpZmljYWxseSwgaXQgZGVhbHMgd2l0aCBjb3JyZWN0bHkgaGFuZGxpbmcgZGF0YSBjb3BpZXMgdGhhdCBzcGFuIG11bHRpcGxlIGJ1ZmZlcnMuIFBsdXMsIHRoZXJlJ3MgYSBndWFyZCBpbiBgYWRmc19mcGx1c19nZXRuZXh0YCB0byBwcmV2ZW50IGEgYnVmZmVyIG92ZXJmbG93IGlmIGBvYmotXHUwMDNlbmFtZV9sZW5gIGV4Y2VlZHMgYEFERlNfRlBMVVNfTkFNRV9MRU5gLiBUaGF0J3Mgc21hcnQ7IGJvdW5kcyBjaGVja2luZyBpcyBhbHdheXMgYSBnb29kIHByYWN0aWNlLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjcml0aWNhbGl0eSBvZiBgYWRmc19kaXJfY29weWZyb21gLiBJcyBpdCBhIGhvdC1wYXRoIGZ1bmN0aW9uPyBEaXJlY3RvcnkgcmVhZHMgYXJlIHBhcnQgb2YgQURGUywgYnV0IGdlbmVyYWxseSBBREZTIGl0c2VsZiBpc24ndCBhIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2suIFRoYXQgZG9lc24ndCBtZWFuIGl0J3MgdW5pbXBvcnRhbnQsIGJ1dCBpdCBwdXRzIGl0IGluIHBlcnNwZWN0aXZlLlxuXG5MZXQncyBkbyBhIHF1aWNrIHNjYW4gb2YgYGZzL2FkZnMvZGlyLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogbm9uLXN0YXRpYyBmdW5jdGlvbnMgb2YgaW50ZXJlc3Q6IGBhZGZzX2Rpcl9yZWFkX2J1ZmZlcnNgLCBgYWRmc19kaXJfdXBkYXRlYCwgYW5kIGBhZGZzX29iamVjdF9maXh1cGAuIFdvcnRoIG5vdGluZywgYnV0IEknbGwgc3RpY2sgd2l0aCBgYWRmc19kaXJfY29weWZyb21gIGFzIG15IGZvY3VzIHN5bWJvbC5cblxuT2theSwgc28gdGhlIGdpc3Qgb2YgdGhlIHBhdGNoIGlzIGZpeGluZyBhIGJ1ZmZlciBjb3B5IGJ1ZyBpbiBgYWRmc19kaXJfY29weWZyb21gIGFuZCBhZGRpbmcgYSBib3VuZHMgY2hlY2sgaW4gYGFkZnNfZnBsdXNfZ2V0bmV4dGAuIEJvdGggYXJlIGNydWNpYWwgdG8gdGhlIGludGVncml0eSBhbmQgc3RhYmlsaXR5IG9mIHRoZSBkaXJlY3RvcnkgcGFyc2luZyBsb2dpYyB3aXRoaW4gdGhlIEFERlMgZmlsZXN5c3RlbS4gVGhpcyBsb2dpYyBpcyBkaXJlY3RseSBlbmdhZ2VkIGR1cmluZyBtb3VudCBhbmQgcmVhZCBvcGVyYXRpb25zIG9uIGFuIEFERlMgaW1hZ2UuIFRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBgQURGU19GU2AsIHNvIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGlzIGlzIGRlZmluZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNTQ5LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjQ1LjIzMDM5MzAzNFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYzMzg3NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9hZGZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvYWRmcy9LY29uZmlnPTI9Y29uZmlnIEFERlNfRlNcXG5mcy9hZGZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiQURGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbmZzL2FkZnMvS2NvbmZpZzo0OlxcdGRlcGVuZHMgb24gQkxPQ0tcXG5mcy9hZGZzL0tjb25maWctNS1cXHRzZWxlY3QgQlVGRkVSX0hFQURcXG4tLVxcbmZzL2FkZnMvS2NvbmZpZz0yMz1jb25maWcgQURGU19GU19SV1xcbmZzL2FkZnMvS2NvbmZpZy0yNC1cXHRib29sIFxcXCJBREZTIHdyaXRlIHN1cHBvcnQgKERBTkdFUk9VUylcXFwiXFxuZnMvYWRmcy9LY29uZmlnOjI1OlxcdGRlcGVuZHMgb24gQURGU19GU1xcbmZzL2FkZnMvS2NvbmZpZy0yNi1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjQ1LjI3NjczNjcyM1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTU3NDgyOTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBsaWtlIHlvdTpcblxuKipEZXBlbmRlbmN5IEFuYWx5c2lzIGFuZCBGdW5jdGlvbiBDaG9pY2UqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGBBREZTX0ZTYCByZWxpZXMgb24gYEJMT0NLYC4gVGhhdCdzIHN0YW5kYXJkIHN0dWZmLCBzbyB0aGF0J3Mgbm90IHRvbyBzdXJwcmlzaW5nLlxuXG5Ob3csIEkgbmVlZCB0byBwaWNrIGEgZ29vZCBmdW5jdGlvbiB0byBmb2N1cyBvbiBmb3IgZGVlcGVyIGFuYWx5c2lzLiBJJ20gdGhpbmtpbmcgYWJvdXQgYGFkZnNfZGlyX2NvcHlmcm9tYC4gSXMgdGhhdCBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQ/IExldCBtZSB0aGluay4uLiB5ZXMsIHRoYXQgbG9va3MgcHJvbWlzaW5nLiBJdCdzIG5vdCBhIGBzdGF0aWNgIGZ1bmN0aW9uLCBzbyBpdCdzIGxpa2VseSB2aXNpYmxlIGVsc2V3aGVyZSwgYW5kIGl0IGFsc28gZG9lc24ndCBzZWVtIHRvIGJlIGEgcGVyZm9ybWFuY2UtY3JpdGljYWwgZ2VuZXJpYyBob3QgcGF0aCwgd2hpY2ggbWFrZXMgaXQgZWFzaWVyIHRvIHJlYXNvbiBhYm91dC4gQSBnb29kIGNob2ljZSBmb3IgaW52ZXN0aWdhdGluZy5cblxuTm93LCBJJ2xsIGdvIGFoZWFkIGFuZCB1c2UgdGhlIHNldC1yZXN1bHRzIHRvb2wuIEl0J3MgdGhlIHJpZ2h0IGNob2ljZSBmb3IgZ2V0dGluZyBhIGhhbmRsZSBvbiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjUzMSwiT3V0cHV0VG9rZW5zIjoxMTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDoxODo0OC44MzQyMjI0MzdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Mzc5NTUzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQURGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFkZnNfZGlyX2NvcHlmcm9tXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWZmZXIgY29weSBidWcgaW4gYGFkZnNfZGlyX2NvcHlmcm9tYCB3aGVuIGNvcHlpbmcgYWNyb3NzIG11bHRpcGxlIGJ1ZmZlcnMsIGFuZCBhZGRzIGEgYm91bmRzIGNoZWNrIGZvciBgbmFtZV9sZW5gIGluIGBhZGZzX2ZwbHVzX2dldG5leHRgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBBREZTIGZpbGVzeXN0ZW0gZGlyZWN0b3J5IHBhcnNpbmcgbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSB3aGVuIG1vdW50aW5nIGFuZCByZWFkaW5nIGFuIEFERlMgaW1hZ2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQURGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFkZnNfZGlyX2NvcHlmcm9tXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWZmZXIgY29weSBidWcgaW4gYGFkZnNfZGlyX2NvcHlmcm9tYCB3aGVuIGNvcHlpbmcgYWNyb3NzIG11bHRpcGxlIGJ1ZmZlcnMsIGFuZCBhZGRzIGEgYm91bmRzIGNoZWNrIGZvciBgbmFtZV9sZW5gIGluIGBhZGZzX2ZwbHVzX2dldG5leHRgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBBREZTIGZpbGVzeXN0ZW0gZGlyZWN0b3J5IHBhcnNpbmcgbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSB3aGVuIG1vdW50aW5nIGFuZCByZWFkaW5nIGFuIEFERlMgaW1hZ2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9cl8p[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 03:56:13 +0000 UTC FinishedAt: 2026-08-03 04:18:49 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "8996fed3e53f53216f36183f6b6539846bc15a67", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ADFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "vfs", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git", "commit_hash": "8996fed3e53f53216f36183f6b6539846bc15a67", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ADFS_FS" ], "series_id": "4f8809c0-225a-4e60-9842-49852cd5c44b" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "adfs_dir_copyfrom" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FERlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthZGZzX2Rpcl9jb3B5ZnJvbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZmZlciBjb3B5IGJ1ZyBpbiBgYWRmc19kaXJfY29weWZyb21gIHdoZW4gY29weWluZyBhY3Jvc3MgbXVsdGlwbGUgYnVmZmVycywgYW5kIGFkZHMgYSBib3VuZHMgY2hlY2sgZm9yIGBuYW1lX2xlbmAgaW4gYGFkZnNfZnBsdXNfZ2V0bmV4dGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIEFERlMgZmlsZXN5c3RlbSBkaXJlY3RvcnkgcGFyc2luZyBsb2dpYywgd2hpY2ggaXMgcmVhY2hhYmxlIHdoZW4gbW91bnRpbmcgYW5kIHJlYWRpbmcgYW4gQURGUyBpbWFnZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGExNDhmODhmNmE3MzNmOTczYzg5N2ZlNzRlYzNhZDdlZDI5Mjg0ZmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDA0OjE3OjU1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2FkZnMvZGlyLmMgYi9mcy9hZGZzL2Rpci5jXG5pbmRleCAxMWFmYTllMTU3YWE3Li40NDk1MzI0N2FjYWRkIDEwMDY0NFxuLS0tIGEvZnMvYWRmcy9kaXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvYWRmcy9kaXIuY1xuQEAgLTE5LDE1ICYjNDM7MTksMjAgQEAgaW50IGFkZnNfZGlyX2NvcHlmcm9tKHZvaWQgKmRzdCwgc3RydWN0IGFkZnNfZGlyICpkaXIsIHVuc2lnbmVkIGludCBvZmZzZXQsXG4gXHRcdCAgICAgIHNpemVfdCBsZW4pXG4ge1xuIFx0c3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGRpci1cdTAwM2VzYjtcbiYjNDM7XHRzaXplX3Qgc2l6ZSA9IChzaXplX3QpZGlyLVx1MDAzZW5yX2J1ZmZlcnMgXHUwMDNjXHUwMDNjIHNiLVx1MDAzZXNfYmxvY2tzaXplX2JpdHM7XG4gXHR1bnNpZ25lZCBpbnQgaW5kZXgsIHJlbWFpbjtcbiBcbiYjNDM7XHRpZiAob2Zmc2V0IFx1MDAzZT0gc2l6ZSB8fCBsZW4gXHUwMDNlIHNpemUgLSBvZmZzZXQpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4gXHRpbmRleCA9IG9mZnNldCBcdTAwM2VcdTAwM2Ugc2ItXHUwMDNlc19ibG9ja3NpemVfYml0cztcbiBcdG9mZnNldCBcdTAwMjY9IHNiLVx1MDAzZXNfYmxvY2tzaXplIC0gMTtcbi1cdHJlbWFpbiA9IHNiLVx1MDAzZXNfYmxvY2tzaXplIC0gb2Zmc2V0O1xuLVx0aWYgKGluZGV4ICYjNDM7IChyZW1haW4gXHUwMDNjIGxlbikgXHUwMDNlPSBkaXItXHUwMDNlbnJfYnVmZmVycylcbi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRpZiAocmVtYWluIFx1MDAzYyBsZW4pIHtcbiYjNDM7XHR3aGlsZSAobGVuKSB7XG4mIzQzO1x0XHRyZW1haW4gPSBzYi1cdTAwM2VzX2Jsb2Nrc2l6ZSAtIG9mZnNldDtcbiYjNDM7XHRcdGlmIChyZW1haW4gXHUwMDNlIGxlbilcbiYjNDM7XHRcdFx0cmVtYWluID0gbGVuO1xuJiM0MztcbiBcdFx0bWVtY3B5KGRzdCwgZGlyLVx1MDAzZWJoc1tpbmRleF0tXHUwMDNlYl9kYXRhICYjNDM7IG9mZnNldCwgcmVtYWluKTtcbiBcdFx0ZHN0ICYjNDM7PSByZW1haW47XG4gXHRcdGxlbiAtPSByZW1haW47XG5AQCAtMzUsOCAmIzQzOzQwLDYgQEAgaW50IGFkZnNfZGlyX2NvcHlmcm9tKHZvaWQgKmRzdCwgc3RydWN0IGFkZnNfZGlyICpkaXIsIHVuc2lnbmVkIGludCBvZmZzZXQsXG4gXHRcdG9mZnNldCA9IDA7XG4gXHR9XG4gXG4tXHRtZW1jcHkoZHN0LCBkaXItXHUwMDNlYmhzW2luZGV4XS1cdTAwM2ViX2RhdGEgJiM0Mzsgb2Zmc2V0LCBsZW4pO1xuLVxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2ZzL2FkZnMvZGlyX2ZwbHVzLmMgYi9mcy9hZGZzL2Rpcl9mcGx1cy5jXG5pbmRleCA0YTE1OTI0MDE0ZGEyLi41MTdmZmNjOTE0MjllIDEwMDY0NFxuLS0tIGEvZnMvYWRmcy9kaXJfZnBsdXMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvYWRmcy9kaXJfZnBsdXMuY1xuQEAgLTE5Miw2ICYjNDM7MTkyLDggQEAgYWRmc19mcGx1c19nZXRuZXh0KHN0cnVjdCBhZGZzX2RpciAqZGlyLCBzdHJ1Y3Qgb2JqZWN0X2luZm8gKm9iailcbiBcdG9iai1cdTAwM2VpbmRhZGRyICA9IGxlMzJfdG9fY3B1KGJkZS5iaWdkaXJpbmRhZGRyKTtcbiBcdG9iai1cdTAwM2VhdHRyICAgICA9IGxlMzJfdG9fY3B1KGJkZS5iaWdkaXJhdHRyKTtcbiBcdG9iai1cdTAwM2VuYW1lX2xlbiA9IGxlMzJfdG9fY3B1KGJkZS5iaWdkaXJvYm5hbWVsZW4pO1xuJiM0MztcdGlmIChvYmotXHUwMDNlbmFtZV9sZW4gXHUwMDNlIEFERlNfRlBMVVNfTkFNRV9MRU4pXG4mIzQzO1x0XHRyZXR1cm4gLUVJTztcbiBcbiBcdG9mZnNldCA9IGFkZnNfZnBsdXNfb2Zmc2V0KGgsIGxlMzJfdG9fY3B1KGgtXHUwMDNlYmlnZGlyZW50cmllcykpO1xuIFx0b2Zmc2V0ICYjNDM7PSBsZTMyX3RvX2NwdShiZGUuYmlnZGlyb2JuYW1lcHRyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QURGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FkZnNfZGlyX2NvcHlmcm9tJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVmZmVyIGNvcHkgYnVnIGluIGBhZGZzX2Rpcl9jb3B5ZnJvbWAgd2hlbiBjb3B5aW5nIGFjcm9zcyBtdWx0aXBsZSBidWZmZXJzLCBhbmQgYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgYG5hbWVfbGVuYCBpbiBgYWRmc19mcGx1c19nZXRuZXh0YC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgQURGUyBmaWxlc3lzdGVtIGRpcmVjdG9yeSBwYXJzaW5nIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgd2hlbiBtb3VudGluZyBhbmQgcmVhZGluZyBhbiBBREZTIGltYWdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTE0OGY4OGY2YTczM2Y5NzNjODk3ZmU3NGVjM2FkN2VkMjkyODRmZQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMgMDQ6MTc6NTUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9hZGZzL2Rpci5jIGIvZnMvYWRmcy9kaXIuYwppbmRleCAxMWFmYTllMTU3YWE3Li40NDk1MzI0N2FjYWRkIDEwMDY0NAotLS0gYS9mcy9hZGZzL2Rpci5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2FkZnMvZGlyLmMKQEAgLTE5LDE1ICYjNDM7MTksMjAgQEAgaW50IGFkZnNfZGlyX2NvcHlmcm9tKHZvaWQgKmRzdCwgc3RydWN0IGFkZnNfZGlyICpkaXIsIHVuc2lnbmVkIGludCBvZmZzZXQsCiAJCSAgICAgIHNpemVfdCBsZW4pCiB7CiAJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGRpci0mZ3Q7c2I7CiYjNDM7CXNpemVfdCBzaXplID0gKHNpemVfdClkaXItJmd0O25yX2J1ZmZlcnMgJmx0OyZsdDsgc2ItJmd0O3NfYmxvY2tzaXplX2JpdHM7CiAJdW5zaWduZWQgaW50IGluZGV4LCByZW1haW47CiAKJiM0MzsJaWYgKG9mZnNldCAmZ3Q7PSBzaXplIHx8IGxlbiAmZ3Q7IHNpemUgLSBvZmZzZXQpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKIAlpbmRleCA9IG9mZnNldCAmZ3Q7Jmd0OyBzYi0mZ3Q7c19ibG9ja3NpemVfYml0czsKIAlvZmZzZXQgJmFtcDs9IHNiLSZndDtzX2Jsb2Nrc2l6ZSAtIDE7Ci0JcmVtYWluID0gc2ItJmd0O3NfYmxvY2tzaXplIC0gb2Zmc2V0OwotCWlmIChpbmRleCAmIzQzOyAocmVtYWluICZsdDsgbGVuKSAmZ3Q7PSBkaXItJmd0O25yX2J1ZmZlcnMpCi0JCXJldHVybiAtRUlOVkFMOwogCi0JaWYgKHJlbWFpbiAmbHQ7IGxlbikgewomIzQzOwl3aGlsZSAobGVuKSB7CiYjNDM7CQlyZW1haW4gPSBzYi0mZ3Q7c19ibG9ja3NpemUgLSBvZmZzZXQ7CiYjNDM7CQlpZiAocmVtYWluICZndDsgbGVuKQomIzQzOwkJCXJlbWFpbiA9IGxlbjsKJiM0MzsKIAkJbWVtY3B5KGRzdCwgZGlyLSZndDtiaHNbaW5kZXhdLSZndDtiX2RhdGEgJiM0Mzsgb2Zmc2V0LCByZW1haW4pOwogCQlkc3QgJiM0Mzs9IHJlbWFpbjsKIAkJbGVuIC09IHJlbWFpbjsKQEAgLTM1LDggJiM0Mzs0MCw2IEBAIGludCBhZGZzX2Rpcl9jb3B5ZnJvbSh2b2lkICpkc3QsIHN0cnVjdCBhZGZzX2RpciAqZGlyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAogCQlvZmZzZXQgPSAwOwogCX0KIAotCW1lbWNweShkc3QsIGRpci0mZ3Q7YmhzW2luZGV4XS0mZ3Q7Yl9kYXRhICYjNDM7IG9mZnNldCwgbGVuKTsKLQogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9mcy9hZGZzL2Rpcl9mcGx1cy5jIGIvZnMvYWRmcy9kaXJfZnBsdXMuYwppbmRleCA0YTE1OTI0MDE0ZGEyLi41MTdmZmNjOTE0MjllIDEwMDY0NAotLS0gYS9mcy9hZGZzL2Rpcl9mcGx1cy5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2FkZnMvZGlyX2ZwbHVzLmMKQEAgLTE5Miw2ICYjNDM7MTkyLDggQEAgYWRmc19mcGx1c19nZXRuZXh0KHN0cnVjdCBhZGZzX2RpciAqZGlyLCBzdHJ1Y3Qgb2JqZWN0X2luZm8gKm9iaikKIAlvYmotJmd0O2luZGFkZHIgID0gbGUzMl90b19jcHUoYmRlLmJpZ2RpcmluZGFkZHIpOwogCW9iai0mZ3Q7YXR0ciAgICAgPSBsZTMyX3RvX2NwdShiZGUuYmlnZGlyYXR0cik7CiAJb2JqLSZndDtuYW1lX2xlbiA9IGxlMzJfdG9fY3B1KGJkZS5iaWdkaXJvYm5hbWVsZW4pOwomIzQzOwlpZiAob2JqLSZndDtuYW1lX2xlbiAmZ3Q7IEFERlNfRlBMVVNfTkFNRV9MRU4pCiYjNDM7CQlyZXR1cm4gLUVJTzsKIAogCW9mZnNldCA9IGFkZnNfZnBsdXNfb2Zmc2V0KGgsIGxlMzJfdG9fY3B1KGgtJmd0O2JpZ2RpcmVudHJpZXMpKTsKIAlvZmZzZXQgJiM0Mzs9IGxlMzJfdG9fY3B1KGJkZS5iaWdkaXJvYm5hbWVwdHIpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTg4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQURGUyBGaWxlc3lzdGVtIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0b3VjaGluZyBgZnMvYWRmcy9kaXIuY2AgYW5kIGBmcy9hZGZzL2Rpcl9mcGx1cy5jYC4gU2VlbXMgbGlrZSB0aGUgcHJpbWFyeSBmb2N1cyBpcyBvbiBmaXhpbmcgYGFkZnNfZGlyX2NvcHlmcm9tYCB0byBoYW5kbGUgYnVmZmVyIGNvcGllcyBwcm9wZXJseS4gSXQgYWxzbyB0aHJvd3MgaW4gYSBzYW5pdHkgY2hlY2sgd2l0aGluIGBhZGZzX2ZwbHVzX2dldG5leHRgIHRvIG1ha2Ugc3VyZSB3ZSBkb24mIzM5O3QgZW5kIHVwIHdpdGggc29tZSBjcmF6eSBsb25nIGZpbGVuYW1lcy4gCgpMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBmaXJzdCBzdGVwIGlzIHRvIGNvbmZpcm0gdGhlIHNwZWNpZmljIGZ1bmN0aW9ucyBiZWluZyBtb2RpZmllZDogYGFkZnNfZGlyX2NvcHlmcm9tYCBhbmQgYGFkZnNfZnBsdXNfZ2V0bmV4dGAuCgpOZXh0LCBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnLCBzcGVjaWZpY2FsbHkgYGZzL2FkZnMvS2NvbmZpZ2AsIHRvIGNvbmZpcm0gdGhhdCB0aGUgQURGUyBmaWxlc3lzdGVtIGlzIGV2ZW4gZW5hYmxlZCAoYENPTkZJR19BREZTX0ZTYCkuIFdlIGNhbiYjMzk7dCBiZSBwYXRjaGluZyBzb21ldGhpbmcgdGhhdCBpc24mIzM5O3QgYnVpbHQuCgpOb3csIGxldCYjMzk7cyB0cmFjZSB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IHVzZWQuIEEgcXVpY2sgc2VhcmNoIHNob3VsZCByZXZlYWwgdGhlaXIgcmVhY2hhYmlsaXR5LiBPa2F5LCBzbyBgYWRmc19kaXJfY29weWZyb21gIHBvcHMgdXAgaW4gYm90aCBgZnMvYWRmcy9kaXJfZnBsdXMuY2AgYW5kIGBmcy9hZGZzL2Rpcl9mLmNgLiBgYWRmc19mcGx1c19nZXRuZXh0YCBpcyBjbGVhcmx5IHVzZWQgYXMgYSBjYWxsYmFjayBmdW5jdGlvbiB3aXRoaW4gdGhlIGBzdHJ1Y3QgYWRmc19kaXJfb3BzYC4gCgpUaW1lIGZvciBhIHF1aWNrIGdyZXAgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMgYW5kIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBpbnRlcmFjdGlvbnMgdG8gYmUgYXdhcmUgb2YuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWRmc19kaXJfY29weWZyb20mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9hZGZzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9hZGZzL2FkZnMuaD0xNzQ9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBhZGZzX2Rpcl9vcHMgYWRmc19mcGx1c19kaXJfb3BzO1xuZnMvYWRmcy9hZGZzLmgtMTc1LVxuZnMvYWRmcy9hZGZzLmg6MTc2OmludCBhZGZzX2Rpcl9jb3B5ZnJvbSh2b2lkICpkc3QsIHN0cnVjdCBhZGZzX2RpciAqZGlyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LFxuZnMvYWRmcy9hZGZzLmgtMTc3LVx0XHQgICAgICBzaXplX3QgbGVuKTtcbi0tXG5mcy9hZGZzL2Rpci5jPTE2PXN0YXRpYyBERUNMQVJFX1JXU0VNKGFkZnNfZGlyX3J3c2VtKTtcbmZzL2FkZnMvZGlyLmMtMTctXG5mcy9hZGZzL2Rpci5jOjE4OmludCBhZGZzX2Rpcl9jb3B5ZnJvbSh2b2lkICpkc3QsIHN0cnVjdCBhZGZzX2RpciAqZGlyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LFxuZnMvYWRmcy9kaXIuYy0xOS1cdFx0ICAgICAgc2l6ZV90IGxlbilcbi0tXG5mcy9hZGZzL2Rpcl9mLmM9MjE1PV9fYWRmc19kaXJfZ2V0KHN0cnVjdCBhZGZzX2RpciAqZGlyLCBpbnQgcG9zLCBzdHJ1Y3Qgb2JqZWN0X2luZm8gKm9iailcbi0tXG5mcy9hZGZzL2Rpcl9mLmMtMjE5LVxuZnMvYWRmcy9kaXJfZi5jOjIyMDpcdHJldCA9IGFkZnNfZGlyX2NvcHlmcm9tKFx1MDAyNmRlLCBkaXIsIHBvcywgMjYpO1xuZnMvYWRmcy9kaXJfZi5jLTIyMS1cdGlmIChyZXQpXG4tLVxuZnMvYWRmcy9kaXJfZi5jPTI3MT1zdGF0aWMgaW50IGFkZnNfZl91cGRhdGUoc3RydWN0IGFkZnNfZGlyICpkaXIsIHN0cnVjdCBvYmplY3RfaW5mbyAqb2JqKVxuLS1cbmZzL2FkZnMvZGlyX2YuYy0yNzktXHRcdG9mZnNldCAmIzQzOz0gc2l6ZW9mKGRlKTtcbmZzL2FkZnMvZGlyX2YuYzoyODA6XHRcdHJldCA9IGFkZnNfZGlyX2NvcHlmcm9tKFx1MDAyNmRlLCBkaXIsIG9mZnNldCwgc2l6ZW9mKGRlKSk7XG5mcy9hZGZzL2Rpcl9mLmMtMjgxLVx0XHRpZiAocmV0KSB7XG4tLVxuZnMvYWRmcy9kaXJfZnBsdXMuYz0xNzI9YWRmc19mcGx1c19nZXRuZXh0KHN0cnVjdCBhZGZzX2RpciAqZGlyLCBzdHJ1Y3Qgb2JqZWN0X2luZm8gKm9iailcbi0tXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTE4My1cbmZzL2FkZnMvZGlyX2ZwbHVzLmM6MTg0Olx0cmV0ID0gYWRmc19kaXJfY29weWZyb20oXHUwMDI2YmRlLCBkaXIsIG9mZnNldCxcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMTg1LVx0XHRcdFx0c2l6ZW9mKHN0cnVjdCBhZGZzX2JpZ2RpcmVudHJ5KSk7XG4tLVxuZnMvYWRmcy9kaXJfZnBsdXMuYy0yMDAtXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjIwMTpcdHJldCA9IGFkZnNfZGlyX2NvcHlmcm9tKG9iai1cdTAwM2VuYW1lLCBkaXIsIG9mZnNldCwgb2JqLVx1MDAzZW5hbWVfbGVuKTtcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjAyLVx0aWYgKHJldClcbi0tXG5mcy9hZGZzL2Rpcl9mcGx1cy5jPTIzMj1zdGF0aWMgaW50IGFkZnNfZnBsdXNfdXBkYXRlKHN0cnVjdCBhZGZzX2RpciAqZGlyLCBzdHJ1Y3Qgb2JqZWN0X2luZm8gKm9iailcbi0tXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTI0Ni1cdFx0fVxuZnMvYWRmcy9kaXJfZnBsdXMuYzoyNDc6XHRcdHJldCA9IGFkZnNfZGlyX2NvcHlmcm9tKFx1MDAyNmJkZSwgZGlyLCBvZmZzZXQsIHNpemVvZihiZGUpKTtcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjQ4LVx0XHRpZiAocmV0KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAwMwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEFERlMgRGlyZWN0b3J5IENvZGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIHRvIGJlIHRvdWNoaW5nIHR3byBmdW5jdGlvbnM6IGBhZGZzX2Rpcl9jb3B5ZnJvbWAgYW5kIGBhZGZzX2ZwbHVzX2dldG5leHRgLiBUaGUgZmlyc3Qgb25lLCBgYWRmc19kaXJfY29weWZyb21gLCBpcyBhcHBhcmVudGx5IG5vbi1zdGF0aWMuIEludGVyZXN0aW5nLiBCdXQgaG9sZCBvbiwgSSBzZWVtIHRvIHJlbWVtYmVyIGBhZGZzX2ZwbHVzX2dldG5leHRgIGJlaW5nIHN0YXRpYy4gTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYnkgcXVpY2tseSBvcGVuaW5nIHVwIGBmcy9hZGZzL2Rpcl9mcGx1cy5jYC4gTmVlZCB0byBjb25maXJtIGlmIGl0IHJlYWxseSBpcyBzdGF0aWMgaW4gdGhhdCBmaWxlLCBvdGhlcndpc2UsIHNvbWV0aGluZyBzZWVtcyBvZmYuIEdvdHRhIGtlZXAgZGlnZ2luZyB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FkZnNfZnBsdXNfZ2V0bmV4dCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2FkZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2FkZnMvZGlyX2ZwbHVzLmM9MTcxPXN0YXRpYyBpbnRcbmZzL2FkZnMvZGlyX2ZwbHVzLmM6MTcyOmFkZnNfZnBsdXNfZ2V0bmV4dChzdHJ1Y3QgYWRmc19kaXIgKmRpciwgc3RydWN0IG9iamVjdF9pbmZvICpvYmopXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTE3My17XG4tLVxuZnMvYWRmcy9kaXJfZnBsdXMuYz0yMTI9c3RhdGljIGludCBhZGZzX2ZwbHVzX2l0ZXJhdGUoc3RydWN0IGFkZnNfZGlyICpkaXIsIHN0cnVjdCBkaXJfY29udGV4dCAqY3R4KVxuLS1cbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjIxLVxuZnMvYWRmcy9kaXJfZnBsdXMuYzoyMjI6XHR3aGlsZSAoIWFkZnNfZnBsdXNfZ2V0bmV4dChkaXIsIFx1MDAyNm9iaikpIHtcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjIzLVx0XHRpZiAoIWRpcl9lbWl0KGN0eCwgb2JqLm5hbWUsIG9iai5uYW1lX2xlbixcbi0tXG5mcy9hZGZzL2Rpcl9mcGx1cy5jPTI4Mj1jb25zdCBzdHJ1Y3QgYWRmc19kaXJfb3BzIGFkZnNfZnBsdXNfZGlyX29wcyA9IHtcbi0tXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTI4NS1cdC5zZXRwb3NcdFx0PSBhZGZzX2ZwbHVzX3NldHBvcyxcbmZzL2FkZnMvZGlyX2ZwbHVzLmM6Mjg2Olx0LmdldG5leHRcdD0gYWRmc19mcGx1c19nZXRuZXh0LFxuZnMvYWRmcy9kaXJfZnBsdXMuYy0yODctXHQudXBkYXRlXHRcdD0gYWRmc19mcGx1c191cGRhdGUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYzNgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEFERlMgRGlyZWN0b3J5IEl0ZXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIEFERlMgZmlsZSBzeXN0ZW0gY29kZSBhbmQgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3Qgd2F5IHRvIHRyYWNlIHRoZSBkaXJlY3RvcnkgaXRlcmF0aW9uIHByb2Nlc3MuIEkgc2VlIHRoYXQgYGFkZnNfZnBsdXNfZ2V0bmV4dGAgaXMgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFJpZ2h0IGF3YXksIHRoYXQgdGVsbHMgbWUgaXQmIzM5O3Mgbm90IHRoZSBpZGVhbCBjYW5kaWRhdGUgZm9yIGEgZm9jdXMgc3ltYm9sLCBzaW5jZSBpdCYjMzk7cyBub3QgdmlzaWJsZSBvdXRzaWRlIGl0cyBvd24gY29tcGlsYXRpb24gdW5pdC4KCkluc3RlYWQsIEkgbmVlZCB0byBsb29rIGZvciBzb21ldGhpbmcgdGhhdCAqdXNlcyogYGFkZnNfZnBsdXNfZ2V0bmV4dGAuIEkgY2FuIHNlZSBmcm9tIGhlcmUgdGhhdCBgYWRmc19kaXJfY29weWZyb21gLCBgYWRmc19mcGx1c19pdGVyYXRlYCwgb3IgYGFkZnNfZnBsdXNfcmVhZGAgY291bGQgYmUgZ29vZCBjaG9pY2VzLCBhcyBlaXRoZXIgdGhlIGNhbGxlcnMgb3IgdGhlIG9wcyBzdHJ1Y3QgbWVtYmVycyBjb3VsZCBleHBvc2UgdGhlIGludGVuZGVkIGZsb3cuCgpIb2xkIG9uIGEgbWludXRlLi4uIEkganVzdCByZW1lbWJlcmVkIHRoYXQgYGFkZnNfZnBsdXNfZ2V0bmV4dGAgaXMgYWN0dWFsbHkgYXNzaWduZWQgdG8gdGhlIGAuZ2V0bmV4dGAgZmllbGQgd2l0aGluIHRoZSBgYWRmc19mcGx1c19kaXJfb3BzYCBzdHJ1Y3R1cmUuIFRoYXTigJlzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uISBOb3cgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBjYWxsZXJzIG9mIHRoYXQgYC5nZXRuZXh0YCBmdW5jdGlvbiBwb2ludGVyLiBBY2NvcmRpbmcgdG8gdGhlIGNvZGUsIHRob3NlIGNhbGxlcnMgYXJlIGxvY2F0ZWQgaW4gYGZzL2FkZnMvZGlyLmNgLiBPa2F5LCBsZXTigJlzIGdvIGRpcmVjdGx5IHRvIGBmcy9hZGZzL2Rpci5jYCBhbmQgdmVyaWZ5IHRob3NlIGNvbm5lY3Rpb25zIGFuZCBob3cgdGhlIGRpcmVjdG9yeSBpdGVyYXRpb24gaXMgYWN0dWFsbHkgaGFuZGxlZC4gVGhhdCYjMzk7cyB0aGUgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1xcLmdldG5leHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9hZGZzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9hZGZzL2Rpcl9mLmM9MzE3PWNvbnN0IHN0cnVjdCBhZGZzX2Rpcl9vcHMgYWRmc19mX2Rpcl9vcHMgPSB7XG4tLVxuZnMvYWRmcy9kaXJfZi5jLTMyMC1cdC5zZXRwb3NcdFx0PSBhZGZzX2Zfc2V0cG9zLFxuZnMvYWRmcy9kaXJfZi5jOjMyMTpcdC5nZXRuZXh0XHQ9IGFkZnNfZl9nZXRuZXh0LFxuZnMvYWRmcy9kaXJfZi5jLTMyMi1cdC51cGRhdGVcdFx0PSBhZGZzX2ZfdXBkYXRlLFxuLS1cbmZzL2FkZnMvZGlyX2ZwbHVzLmM9MjgyPWNvbnN0IHN0cnVjdCBhZGZzX2Rpcl9vcHMgYWRmc19mcGx1c19kaXJfb3BzID0ge1xuLS1cbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjg1LVx0LnNldHBvc1x0XHQ9IGFkZnNfZnBsdXNfc2V0cG9zLFxuZnMvYWRmcy9kaXJfZnBsdXMuYzoyODY6XHQuZ2V0bmV4dFx0PSBhZGZzX2ZwbHVzX2dldG5leHQsXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTI4Ny1cdC51cGRhdGVcdFx0PSBhZGZzX2ZwbHVzX3VwZGF0ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzY5CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCBzdGFuZHM6CgoqKk5hdmlnYXRpbmcgdGhlIEZpbGUgU3lzdGVtKioKCk9rYXksIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgYGFkZnNgIGZpbGUgc3lzdGVtLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gaG93IHRoZSBzeXN0ZW0gcmV0cmlldmVzIHRoZSAmIzM0O25leHQmIzM0OyBlbGVtZW50LiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gc3RhcnQgYnkgc2VhcmNoaW5nIGZvciBgLSZndDtnZXRuZXh0YC4gVGhpcyBpcyBhIGNvbW1vbiBwYXR0ZXJuIGZvciBsaW5rZWQgbGlzdHMgb3IgaXRlcmF0b3JzIGluIEMtbGlrZSBjb2RlLCBzbyBpdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gbG9vayBmb3Igd2hlcmUgdGhlIG5leHQgZWxlbWVudCBpbiBhIGRhdGEgc3RydWN0dXJlIGlzIGFjY2Vzc2VkLiBUYXJnZXRpbmcgYGZzL2FkZnMvYCBpcyBsb2dpY2FsOyB0aGUgJiMzNDtmcyYjMzQ7IHBhcnQgdGVsbHMgbWUgaXTigJlzIHJlbGF0ZWQgdG8gdGhlIGZpbGUgc3lzdGVtLCBhbmQgJiMzNDthZGZzJiMzNDsgZXhwbGljaXRseSBuYXJyb3dzIHRoZSBzY29wZS4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB3aWxsIGxpa2VseSBwb2ludCBtZSB0byBhIGZ1bmN0aW9uIG9yIG1hY3JvIHJlc3BvbnNpYmxlIGZvciB0cmF2ZXJzaW5nIG9yIGl0ZXJhdGluZyBvdmVyIGRpcmVjdG9yeSBlbnRyaWVzLCBmaWxlIG1ldGFkYXRhLCBvciBhbGxvY2F0aW9uIHN0cnVjdHVyZXMgd2l0aGluIHRoZSBBREZTIGltcGxlbWVudGF0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRvIGtlZXAgdHJhY2sgb2YgdGhlIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlcyBiZWluZyB1c2VkLiBJJiMzOTtsbCBzZWFyY2ggZm9yIGAtJmd0O2dldG5leHRgIGFuZCBzdGFydCB0aGVyZS4gRnJvbSB0aGVyZSBJJiMzOTtsbCBsaWtlbHkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGUgc3Vycm91bmRpbmcgY29kZSB0byBkZXRlcm1pbmUgaG93IHRoYXQgZWxlbWVudCBpcyBzZWxlY3RlZCwgYW5kIGhvdyB0aGUgdHJhdmVyc2FsIGxvZ2ljIGlzIGhhbmRsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0Oy1cdTAwM2VnZXRuZXh0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvYWRmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvYWRmcy9kaXIuYz0zNTE9c3RhdGljIGludCBhZGZzX2Rpcl9sb29rdXBfYnluYW1lKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHN0cnVjdCBxc3RyICpxc3RyLFxuLS1cbmZzL2FkZnMvZGlyLmMtMzcyLVx0bmFtZV9sZW4gPSBxc3RyLVx1MDAzZWxlbjtcbmZzL2FkZnMvZGlyLmM6MzczOlx0d2hpbGUgKG9wcy1cdTAwM2VnZXRuZXh0KFx1MDAyNmRpciwgb2JqKSA9PSAwKSB7XG5mcy9hZGZzL2Rpci5jLTM3NC1cdFx0aWYgKCFfX2FkZnNfY29tcGFyZShuYW1lLCBuYW1lX2xlbiwgb2JqLVx1MDAzZW5hbWUsIG9iai1cdTAwM2VuYW1lX2xlbikpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc5OAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydCBpbiB0aGlzIGFyZWE6CgoqKkRpZ2dpbmcgaW50byB0aGUgQURGUyBEaXJlY3RvcnkgTG9va3VwKioKCkFscmlnaHQsIG15IGZvY3VzIGlzIG5vdyBvbiB0aGUgYGFkZnNfZGlyX2xvb2t1cF9ieW5hbWVgIGZ1bmN0aW9uLiBJIHNlZSB0aGF0IGl0IGNhbGxzIGBvcHMtJmd0O2dldG5leHRgLCBhbmQgdGhhdCYjMzk7cyBpbW1lZGlhdGVseSB1c2VmdWwgYXMgYSBwb2ludCBvZiBpbnZlc3RpZ2F0aW9uLiBUaGlzIGZ1bmN0aW9uIHNlZW1zIGNlbnRyYWwgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlIGRpcmVjdG9yeSBsb29rdXAgcHJvY2VzcyB3b3Jrcy4gSSYjMzk7bSBhbHNvIGFkZGluZyBgYWRmc19kaXJfY29weWZyb21gIHRvIHRoZSBsaXN0IG9mIGtleSBmdW5jdGlvbnMgdG8gc2NydXRpbml6ZS4KCk15IG5leHQgc3RlcCBpcyB0byBvcGVuIHVwIGBmcy9hZGZzL2Rpci5jYC4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgYGFkZnNfZGlyX2xvb2t1cF9ieW5hbWVgIGlzIGEgc3RhdGljIGZ1bmN0aW9uIHdpdGhpbiB0aGF0IGZpbGUuIFRoYXQga25vd2xlZGdlIGlzIGNydWNpYWwsIGFzIGl0IHdpbGwgdGVsbCBtZSBpdHMgc2NvcGUgYW5kIGltcGFjdCBvbiBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGl0cyBvdmVyYWxsIGFyY2hpdGVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWRmc19kaXJfbG9va3VwX2J5bmFtZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2FkZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2FkZnMvZGlyLmM9MzM2PXN0YXRpYyBpbnQgX19hZGZzX2NvbXBhcmUoY29uc3QgdW5zaWduZWQgY2hhciAqcXN0ciwgdTMyIHFsZW4sXG4tLVxuZnMvYWRmcy9kaXIuYy0zNTAtXG5mcy9hZGZzL2Rpci5jOjM1MTpzdGF0aWMgaW50IGFkZnNfZGlyX2xvb2t1cF9ieW5hbWUoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgc3RydWN0IHFzdHIgKnFzdHIsXG5mcy9hZGZzL2Rpci5jLTM1Mi1cdFx0XHRcdCAgc3RydWN0IG9iamVjdF9pbmZvICpvYmopXG4tLVxuZnMvYWRmcy9kaXIuYz00MzQ9YWRmc19sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW5zaWduZWQgaW50IGZsYWdzKVxuLS1cbmZzL2FkZnMvZGlyLmMtNDM5LVxuZnMvYWRmcy9kaXIuYzo0NDA6XHRlcnJvciA9IGFkZnNfZGlyX2xvb2t1cF9ieW5hbWUoZGlyLCBcdTAwMjZkZW50cnktXHUwMDNlZF9uYW1lLCBcdTAwMjZvYmopO1xuZnMvYWRmcy9kaXIuYy00NDEtXHRpZiAoZXJyb3IgPT0gMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MzUwCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqQW5hbHl6aW5nIEFERlMgRGlyZWN0b3J5IExvb2t1cCBPcGVyYXRpb25zKioKClJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBUaGUgZnVuY3Rpb24gYGFkZnNfZGlyX2xvb2t1cF9ieW5hbWVgIOKAkyB0aGF0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBtZWFucyBpdCYjMzk7cyBsaW1pdGVkIGluIHNjb3BlLCBsaWtlbHkgaW50ZXJuYWwgdG8gYSBzcGVjaWZpYyBmaWxlIG9yIG1vZHVsZS4gR290IGl0LiBOb3csIGBhZGZzX2xvb2t1cGAuLi4gYWgsIHRoYXQgb25lJiMzOTtzIHRoZSByZWFsIGRlYWwsIHRoZSBhY3R1YWwgZGlyZWN0b3J5IGxvb2t1cCBvcGVyYXRpb24gaXRzZWxmLiBJdCYjMzk7cyBub3Qgc3RhdGljLCBzbyBpdCYjMzk7cyBwcm9iYWJseSBhY2Nlc3NpYmxlIGZyb20gZWxzZXdoZXJlIGluIHRoZSBBREZTIGltcGxlbWVudGF0aW9uLgoKVGltZSB0byBkaXZlIGluLiBUbyBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgYW5kIHNlZSBleGFjdGx5IGhvdyBgYWRmc19sb29rdXBgIGlzIGltcGxlbWVudGVkLCBJIG5lZWQgdG8gY2hlY2sgdGhlIHNvdXJjZSBjb2RlLiBMZXQmIzM5O3MgaGVhZCBvdmVyIHRvIGBmcy9hZGZzL2Rpci5jYC4gVGhhdCBzaG91bGQgY29udGFpbiB0aGUgcmVsZXZhbnQgZGVmaW5pdGlvbiBhbmQgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBsb29rdXAgaXMgaGFuZGxlZCBhdCB0aGUgZmlsZSBzeXN0ZW0gbGV2ZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FkZnNfbG9va3VwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvYWRmcy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvYWRmcy9kaXIuYz00MzM9c3RhdGljIHN0cnVjdCBkZW50cnkgKlxuZnMvYWRmcy9kaXIuYzo0MzQ6YWRmc19sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW5zaWduZWQgaW50IGZsYWdzKVxuZnMvYWRmcy9kaXIuYy00MzUte1xuLS1cbmZzL2FkZnMvZGlyLmM9NDU4PWNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGFkZnNfZGlyX2lub2RlX29wZXJhdGlvbnMgPSB7XG5mcy9hZGZzL2Rpci5jOjQ1OTpcdC5sb29rdXBcdFx0PSBhZGZzX2xvb2t1cCxcbmZzL2FkZnMvZGlyLmMtNDYwLVx0LnNldGF0dHJcdD0gYWRmc19zZXRhdHRyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzkxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEFERlMgRnVuY3Rpb24gVmlzaWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIG5vdGljaW5nIGBhZGZzX2xvb2t1cGAgaXMgYWxzbyBkZWZpbmVkIHN0YXRpY2FsbHksIHdoaWNoIGlzIHdoYXQgSSBleHBlY3RlZC4gTm93LCBob2xkIG9uLCB3aGF0IGFib3V0IGBhZGZzX2Rpcl9jb3B5ZnJvbWA/IElzIHRoYXQgZnVuY3Rpb24gZXhwb3J0ZWQsIG9yIHNpbXBseSBub3QgZGVjbGFyZWQgc3RhdGljPyBBaCwgeWVzLCBpdCYjMzk7cyBub3Qgc3RhdGljLiBSaWdodCwgdGhhdCBtYWtlcyBtb3JlIHNlbnNlLgoKVGltZSB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgYW5kIGNoZWNrIHRoZSBzb3VyY2U6IEkmIzM5O2xsIGhlYWQgb3ZlciB0byBgZnMvYWRmcy9kaXJfZnBsdXMuY2AgYW5kIHRha2UgYSBsb29rIGZvciBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgZGVmaW5lZCB0aGVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBvYnZpb3VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15pbnQgJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvYWRmcy9kaXJfZnBsdXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwMzUKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqSW52ZXN0aWdhdGluZyBQb3RlbnRpYWwgSXNzdWVzIGluIEFERlMgRGlyZWN0b3J5IEhhbmRsaW5nKioKCk9rYXksIEkgbmVlZCB0byBwaW5wb2ludCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIG9yIGFyZWFzIGZvciBpbXByb3ZlbWVudCB3aXRoaW4gdGhlIEFERlMgZGlyZWN0b3J5IGNvZGUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGBmcy9hZGZzL2Rpci5jYC4gSSBuZWVkIHRvIHJldmlldyB0aGlzIGZpbGUgZm9yIG5vbi1zdGF0aWMgZnVuY3Rpb25zLiBUaGUgcmVhc29uaW5nIGlzIHRoYXQgbm9uLXN0YXRpYyBmdW5jdGlvbnMgYXJlIHBvdGVudGlhbGx5IHZpc2libGUgb3V0c2lkZSBvZiB0aGUgbW9kdWxlIHRoZXkgYXJlIGRlZmluZWQgaW4sIHdoaWNoIGNvdWxkIGxlYWQgdG8gdW5pbnRlbmRlZCBhY2Nlc3MsIG1pc3VzZSwgb3IgZXZlbiBzZWN1cml0eSBpc3N1ZXMgaWYgbm90IGNhcmVmdWxseSBtYW5hZ2VkLiBJIGtub3cgaG93IHRyaWNreSB0aGVzZSBmaWxlIHN5c3RlbSBjb21wb25lbnRzIGNhbiBnZXQuIEkgbmVlZCB0byBlbnN1cmUgdGhleSBhcmUgd2VsbC1zY29wZWQgYW5kIHRoYXQgYW55IGV4cG9ydGVkIGZ1bmN0aW9ucyBhcmUgZXhwbGljaXRseSBkZXNpZ25lZCBmb3IgZXh0ZXJuYWwgdXNlIHdpdGggdGhvcm91Z2ggc2VjdXJpdHkgcmV2aWV3cy4gVGhlcmVmb3JlLCBteSBuZXh0IGFjdGlvbiBpcyB0byBkaXZlIGludG8gdGhhdCBmaWxlIGFuZCBzcGVjaWZpY2FsbHkgbG9vayBmb3IgdGhvc2Ugbm9uLXN0YXRpYyBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16X0EtWjAtOV0mIzQzOyAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9hZGZzL2Rpci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2FkZnMvZGlyLmMtMTUtICovXG5mcy9hZGZzL2Rpci5jOjE2OnN0YXRpYyBERUNMQVJFX1JXU0VNKGFkZnNfZGlyX3J3c2VtKTtcbmZzL2FkZnMvZGlyLmMtMTctXG5mcy9hZGZzL2Rpci5jOjE4OmludCBhZGZzX2Rpcl9jb3B5ZnJvbSh2b2lkICpkc3QsIHN0cnVjdCBhZGZzX2RpciAqZGlyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LFxuZnMvYWRmcy9kaXIuYy0xOS1cdFx0ICAgICAgc2l6ZV90IGxlbilcbi0tXG5mcy9hZGZzL2Rpci5jLTQ1LVxuZnMvYWRmcy9kaXIuYzo0NjppbnQgYWRmc19kaXJfY29weXRvKHN0cnVjdCBhZGZzX2RpciAqZGlyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBjb25zdCB2b2lkICpzcmMsXG5mcy9hZGZzL2Rpci5jLTQ3LVx0XHQgICAgc2l6ZV90IGxlbilcbi0tXG5mcy9hZGZzL2Rpci5jLTcwLVxuZnMvYWRmcy9kaXIuYzo3MTpzdGF0aWMgdm9pZCBfX2FkZnNfZGlyX2NsZWFudXAoc3RydWN0IGFkZnNfZGlyICpkaXIpXG5mcy9hZGZzL2Rpci5jLTcyLXtcbi0tXG5mcy9hZGZzL2Rpci5jLTgwLVxuZnMvYWRmcy9kaXIuYzo4MTp2b2lkIGFkZnNfZGlyX3JlbHNlKHN0cnVjdCBhZGZzX2RpciAqZGlyKVxuZnMvYWRmcy9kaXIuYy04Mi17XG4tLVxuZnMvYWRmcy9kaXIuYy05MC1cbmZzL2FkZnMvZGlyLmM6OTE6c3RhdGljIHZvaWQgYWRmc19kaXJfZm9yZ2V0KHN0cnVjdCBhZGZzX2RpciAqZGlyKVxuZnMvYWRmcy9kaXIuYy05Mi17XG4tLVxuZnMvYWRmcy9kaXIuYy0xMDAtXG5mcy9hZGZzL2Rpci5jOjEwMTppbnQgYWRmc19kaXJfcmVhZF9idWZmZXJzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBpbmRhZGRyLFxuZnMvYWRmcy9kaXIuYy0xMDItXHRcdFx0ICB1bnNpZ25lZCBpbnQgc2l6ZSwgc3RydWN0IGFkZnNfZGlyICpkaXIpXG4tLVxuZnMvYWRmcy9kaXIuYy0xNDktXG5mcy9hZGZzL2Rpci5jOjE1MDpzdGF0aWMgaW50IGFkZnNfZGlyX3JlYWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGluZGFkZHIsXG5mcy9hZGZzL2Rpci5jLTE1MS1cdFx0XHQgdW5zaWduZWQgaW50IHNpemUsIHN0cnVjdCBhZGZzX2RpciAqZGlyKVxuLS1cbmZzL2FkZnMvZGlyLmMtMTU5LVxuZnMvYWRmcy9kaXIuYzoxNjA6c3RhdGljIGludCBhZGZzX2Rpcl9yZWFkX2lub2RlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBpbm9kZSAqaW5vZGUsXG5mcy9hZGZzL2Rpci5jLTE2MS1cdFx0XHQgICAgICAgc3RydWN0IGFkZnNfZGlyICpkaXIpXG4tLVxuZnMvYWRmcy9kaXIuYy0xNzktXG5mcy9hZGZzL2Rpci5jOjE4MDpzdGF0aWMgdm9pZCBhZGZzX2Rpcl9tYXJrX2RpcnR5KHN0cnVjdCBhZGZzX2RpciAqZGlyKVxuZnMvYWRmcy9kaXIuYy0xODEte1xuLS1cbmZzL2FkZnMvZGlyLmMtMTg4LVxuZnMvYWRmcy9kaXIuYzoxODk6c3RhdGljIGludCBhZGZzX2Rpcl9zeW5jKHN0cnVjdCBhZGZzX2RpciAqZGlyKVxuZnMvYWRmcy9kaXIuYy0xOTAte1xuLS1cbmZzL2FkZnMvZGlyLmMtMjAzLVxuZnMvYWRmcy9kaXIuYzoyMDQ6dm9pZCBhZGZzX29iamVjdF9maXh1cChzdHJ1Y3QgYWRmc19kaXIgKmRpciwgc3RydWN0IG9iamVjdF9pbmZvICpvYmopXG5mcy9hZGZzL2Rpci5jLTIwNS17XG4tLVxuZnMvYWRmcy9kaXIuYy0yNDEtXG5mcy9hZGZzL2Rpci5jOjI0MjpzdGF0aWMgaW50IGFkZnNfaXRlcmF0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGRpcl9jb250ZXh0ICpjdHgpXG5mcy9hZGZzL2Rpci5jLTI0My17XG4tLVxuZnMvYWRmcy9kaXIuYz0yNzk9YWRmc19kaXJfdXBkYXRlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBvYmplY3RfaW5mbyAqb2JqLCBpbnQgd2FpdClcbi0tXG5mcy9hZGZzL2Rpci5jLTMyOC1cbmZzL2FkZnMvZGlyLmM6MzI5OnN0YXRpYyB1bnNpZ25lZCBjaGFyIGFkZnNfdG9sb3dlcih1bnNpZ25lZCBjaGFyIGMpXG5mcy9hZGZzL2Rpci5jLTMzMC17XG4tLVxuZnMvYWRmcy9kaXIuYy0zMzUtXG5mcy9hZGZzL2Rpci5jOjMzNjpzdGF0aWMgaW50IF9fYWRmc19jb21wYXJlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnFzdHIsIHUzMiBxbGVuLFxuZnMvYWRmcy9kaXIuYy0zMzctXHRcdFx0ICBjb25zdCBjaGFyICpzdHIsIHUzMiBsZW4pXG4tLVxuZnMvYWRmcy9kaXIuYy0zNTAtXG5mcy9hZGZzL2Rpci5jOjM1MTpzdGF0aWMgaW50IGFkZnNfZGlyX2xvb2t1cF9ieW5hbWUoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3Qgc3RydWN0IHFzdHIgKnFzdHIsXG5mcy9hZGZzL2Rpci5jLTM1Mi1cdFx0XHRcdCAgc3RydWN0IG9iamVjdF9pbmZvICpvYmopXG4tLVxuZnMvYWRmcy9kaXIuYy0zOTAtXG5mcy9hZGZzL2Rpci5jOjM5MTpjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGFkZnNfZGlyX29wZXJhdGlvbnMgPSB7XG5mcy9hZGZzL2Rpci5jLTM5Mi1cdC5yZWFkXHRcdD0gZ2VuZXJpY19yZWFkX2Rpcixcbi0tXG5mcy9hZGZzL2Rpci5jLTM5Ny1cbmZzL2FkZnMvZGlyLmM6Mzk4OnN0YXRpYyBpbnRcbmZzL2FkZnMvZGlyLmMtMzk5LWFkZnNfaGFzaChjb25zdCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHN0cnVjdCBxc3RyICpxc3RyKVxuLS1cbmZzL2FkZnMvZGlyLmMtNDIxLSAqL1xuZnMvYWRmcy9kaXIuYzo0MjI6c3RhdGljIGludCBhZGZzX2NvbXBhcmUoY29uc3Qgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCB1bnNpZ25lZCBpbnQgbGVuLFxuZnMvYWRmcy9kaXIuYy00MjMtXHRcdFx0Y29uc3QgY2hhciAqc3RyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqcXN0cilcbi0tXG5mcy9hZGZzL2Rpci5jLTQyNy1cbmZzL2FkZnMvZGlyLmM6NDI4OmNvbnN0IHN0cnVjdCBkZW50cnlfb3BlcmF0aW9ucyBhZGZzX2RlbnRyeV9vcGVyYXRpb25zID0ge1xuZnMvYWRmcy9kaXIuYy00MjktXHQuZF9oYXNoXHRcdD0gYWRmc19oYXNoLFxuLS1cbmZzL2FkZnMvZGlyLmMtNDMyLVxuZnMvYWRmcy9kaXIuYzo0MzM6c3RhdGljIHN0cnVjdCBkZW50cnkgKlxuZnMvYWRmcy9kaXIuYy00MzQtYWRmc19sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW5zaWduZWQgaW50IGZsYWdzKVxuLS1cbmZzL2FkZnMvZGlyLmMtNDU3LSAqL1xuZnMvYWRmcy9kaXIuYzo0NTg6Y29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgYWRmc19kaXJfaW5vZGVfb3BlcmF0aW9ucyA9IHtcbmZzL2FkZnMvZGlyLmMtNDU5LVx0Lmxvb2t1cFx0XHQ9IGFkZnNfbG9va3VwLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODA1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBGdW5jdGlvbiBDYWxscyBhbmQgSWRlbnRpZnlpbmcgRW50cnkgUG9pbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgcmVsZXZhbnQgZW50cnkgcG9pbnRzLiBJIHNlZSB0aGF0IGBhZGZzX2Rpcl9jb3B5ZnJvbWAsIGBhZGZzX2Rpcl9yZWFkX2J1ZmZlcnNgLCBgYWRmc19vYmplY3RfZml4dXBgLCBhbmQgYGFkZnNfZGlyX3VwZGF0ZWAgYXJlIGFsbCBub24tc3RhdGljIGZ1bmN0aW9ucywgd2hpY2ggbWFrZXMgdGhlbSBwb3RlbnRpYWwgdGFyZ2V0cy4gVGhlIHBhdGNoIG1vZGlmaWVzIGBhZGZzX2Rpcl9jb3B5ZnJvbWAgYW5kIGBhZGZzX2ZwbHVzX2dldG5leHRgLCBhbmQgYGFkZnNfZGlyX2NvcHlmcm9tYCBzZWVtcyBsaWtlIGEgZ29vZCBmb2N1cywgY29uc2lkZXJpbmcgdGhlIGRpcmVjdCBtb2RpZmljYXRpb24uCgpJIGluaXRpYWxseSB0aG91Z2h0IGBhZGZzX2ZwbHVzX2dldG5leHRgIGNvdWxkIGJlIHVzZWZ1bCwgYnV0IGl0JiMzOTtzIHN0YXRpYywgc28gdGhhdCYjMzk7cyBhIGRlYWQgZW5kLiBPa2F5LCBzbyB3aGF0ICpkb2VzKiBjYWxsIGBhZGZzX2ZwbHVzX2dldG5leHRgPyBJdCYjMzk7cyBjYWxsZWQgdGhyb3VnaCBgb3BzLSZndDtnZXRuZXh0YCwgYnV0IHRoYXQgZG9lc24mIzM5O3QgaW1tZWRpYXRlbHkgZ2l2ZSBtZSBlbnRyeSBwb2ludHMuIExvb2tpbmcgYXQgdGhlIGNhbGxlcnMgb2YgdGhhdCBgb3BzLSZndDtnZXRuZXh0YCBzdHJ1Y3R1cmUsIEkgc2VlIGBhZGZzX2Rpcl9sb29rdXBfYnluYW1lYCBhbmQgYGFkZnNfaXRlcmF0ZWAuICBVbmZvcnR1bmF0ZWx5LCBgYWRmc19pdGVyYXRlYCBpcyBhbHNvIHN0YXRpYywgc28gSSBjYW4mIzM5O3QgZGlyZWN0bHkgdXNlIGl0LiBUaGlzIG1lYW5zIHRoZSBlbnRyeSBwb2ludHMgY291bGQgYmUgYGFkZnNfZGlyX29wZXJhdGlvbnMuaXRlcmF0ZV9zaGFyZWRgICh3aGljaCBpcyBgYWRmc19pdGVyYXRlYCkgYW5kIGBhZGZzX2Rpcl9pbm9kZV9vcGVyYXRpb25zLmxvb2t1cGAgKHdoaWNoIGlzIGBhZGZzX2xvb2t1cGApLiBCdXQgYm90aCBhcmUsIGFnYWluLCBzdGF0aWMgZnVuY3Rpb25zLiBJIG1pc3NlZCBgYWRmc19sb29rdXBgIGlzIHN0YXRpYyEgU28gdGhhdCBpcyBub3QgaGVscGZ1bC4KCkJ1dCB3YWl0LCBiYWNrIHRvIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucy4gYGFkZnNfZGlyX2NvcHlmcm9tYCAqaXMqIG5vbi1zdGF0aWMhIEFuZCBpdCYjMzk7cyBkaXJlY3RseSBtb2RpZmllZCBieSB0aGUgcGF0Y2gsIHNvIGl0JiMzOTtzIGEgZ29vZCBjaG9pY2UuICBgYWRmc19kaXJfcmVhZF9idWZmZXJzYCBpcyBub24tc3RhdGljIHRvby4gSSBzaG91bGQgY2hlY2sgYGZzL2FkZnMvZGlyLmNgIHRvIGJlIHN1cmUgdGhhdCBgYWRmc19kaXJfY29weWZyb21gIGlzIHRoZSByaWdodCBjaG9pY2UuIFllcywgdGhlIG1vZGlmaWNhdGlvbiBpcyBkaXJlY3RseSBpbiB0aGF0IGZ1bmN0aW9uLiBJdCBpcyBhIGdvb2Qgb3B0aW9uLiBOb3csIHRvIG1ha2Ugc3VyZSBJIGhhdmUgYWxsIHRoZSBjb250ZXh0IEkgbmVlZCwgSSYjMzk7bGwgY2hlY2sgYGZzL2FkZnMvS2NvbmZpZ2AgdG8gaWRlbnRpZnkgdGhlIGNvbmZpZyBuYW1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQURGU19GUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2FkZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2FkZnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvYWRmcy9LY29uZmlnOjI6Y29uZmlnIEFERlNfRlNcbmZzL2FkZnMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7QURGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMvYWRmcy9LY29uZmlnLTIyLVxuZnMvYWRmcy9LY29uZmlnOjIzOmNvbmZpZyBBREZTX0ZTX1JXXG5mcy9hZGZzL0tjb25maWctMjQtXHRib29sIFwmIzM0O0FERlMgd3JpdGUgc3VwcG9ydCAoREFOR0VST1VTKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5ODU3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTAxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQURGUyBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBgQURGU19GU2AgY29uZmlndXJhdGlvbi4gRmlyc3QsIEkmIzM5O20gdHJ5aW5nIHRvIHplcm8gaW4gb24gYSBnb29kIGZvY3VzIHN5bWJvbCwgYW5kIEkmIzM5O20gdGhpbmtpbmcgYGFkZnNfZGlyX2NvcHlmcm9tYCBtaWdodCBiZSBhIGdvb2QgY2FuZGlkYXRlLiBJdCYjMzk7cyBhIG5vbi1zdGF0aWMsIHNvIGFuIGV4cG9ydGVkIGZ1bmN0aW9uIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSG9sZCBvbiwgaXMgYGFkZnNfZGlyX2NvcHlmcm9tYCAqYWN0dWFsbHkqIGV4cG9ydGVkPyBMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gaWYgaXQmIzM5O3MgdmlzaWJsZS4gWWVwLCBJIHNob3VsZCBjaGVjayB0aGUgaGVhZGVyLCBzcGVjaWZpY2FsbHkgYGZzL2FkZnMvYWRmcy5oYC4gQWxyaWdodCwgaXQmIzM5O3MgZGVmaW5lZCB0aGVyZSwgZ29vZC4gTm93LCBsZXQmIzM5O3Mgc2VlIGlmIGBhZGZzX2ZwbHVzX3JlYWRgIGV4aXN0cywgbWlnaHQgYmUgb2Ygc29tZSB1c2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FkZnNfZnBsdXNfcmVhZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2FkZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2FkZnMvZGlyX2ZwbHVzLmM9NzA9c3RhdGljIHU4IGFkZnNfZnBsdXNfY2hlY2tieXRlKHN0cnVjdCBhZGZzX2RpciAqZGlyKVxuLS1cbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMTAyLVxuZnMvYWRmcy9kaXJfZnBsdXMuYzoxMDM6c3RhdGljIGludCBhZGZzX2ZwbHVzX3JlYWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGluZGFkZHIsXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTEwNC1cdFx0XHQgICB1bnNpZ25lZCBpbnQgc2l6ZSwgc3RydWN0IGFkZnNfZGlyICpkaXIpXG4tLVxuZnMvYWRmcy9kaXJfZnBsdXMuYz0yODI9Y29uc3Qgc3RydWN0IGFkZnNfZGlyX29wcyBhZGZzX2ZwbHVzX2Rpcl9vcHMgPSB7XG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjI4MzpcdC5yZWFkXHRcdD0gYWRmc19mcGx1c19yZWFkLFxuZnMvYWRmcy9kaXJfZnBsdXMuYy0yODQtXHQuaXRlcmF0ZVx0PSBhZGZzX2ZwbHVzX2l0ZXJhdGUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzkxCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqQW5hbHl6aW5nIEFERlMgU3RhdGljIERlY2xhcmF0aW9ucyoqCgpBbHJpZ2h0LCBzbyBgYWRmc19mcGx1c19yZWFkYCBpcyBkZWZpbml0ZWx5IHN0YXRpYy4gR290IGl0LiBOb3csIHRoZSBuZXh0IHF1ZXN0aW9uIGlzIGFib3V0IGBhZGZzX2ZwbHVzX2Rpcl9vcHNgLiBJdCYjMzk7cyBub3Qgc3RhdGljLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gQnV0LCBoYW5nIG9uLCBpdCYjMzk7cyBhIHN0cnVjdHVyZSBkZWZpbml0aW9uLCBub3QgYSBmdW5jdGlvbi4gU28sIHRoYXQgZG9lc24mIzM5O3QgcmVhbGx5IG1hdHRlciBpbiB0aGlzIGNhc2UuIExldCYjMzk7cyBkaWcgZGVlcGVyLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIHNvbWV0aGluZy4gSSYjMzk7bGwgY2hlY2sgYGZzL2FkZnMvZGlyX2ZwbHVzLmNgIGFuZCBzcGVjaWZpY2FsbHkgbG9vayBmb3IgZnVuY3Rpb25zIHRoYXQgKmFyZW4mIzM5O3QqIGRlY2xhcmVkIGFzIHN0YXRpYy4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBleHBvc2VkIG91dHNpZGUgb2YgdGhlIGZpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16X0EtWjAtOV0mIzQzOyAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9hZGZzL2Rpcl9mcGx1cy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2FkZnMvZGlyX2ZwbHVzLmMtMTAtLyogUmV0dXJuIHRoZSBieXRlIG9mZnNldCB0byBkaXJlY3RvcnkgZW50cnkgcG9zICovXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjExOnN0YXRpYyB1bnNpZ25lZCBpbnQgYWRmc19mcGx1c19vZmZzZXQoY29uc3Qgc3RydWN0IGFkZnNfYmlnZGlyaGVhZGVyICpoLFxuZnMvYWRmcy9kaXJfZnBsdXMuYy0xMi1cdFx0XHRcdCAgICAgIHVuc2lnbmVkIGludCBwb3MpXG4tLVxuZnMvYWRmcy9kaXJfZnBsdXMuYy0xOC1cbmZzL2FkZnMvZGlyX2ZwbHVzLmM6MTk6c3RhdGljIGludCBhZGZzX2ZwbHVzX3ZhbGlkYXRlX2hlYWRlcihjb25zdCBzdHJ1Y3QgYWRmc19iaWdkaXJoZWFkZXIgKmgpXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTIwLXtcbi0tXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTU4LVxuZnMvYWRmcy9kaXJfZnBsdXMuYzo1OTpzdGF0aWMgaW50IGFkZnNfZnBsdXNfdmFsaWRhdGVfdGFpbChjb25zdCBzdHJ1Y3QgYWRmc19iaWdkaXJoZWFkZXIgKmgsXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTYwLVx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBhZGZzX2JpZ2RpcnRhaWwgKnQpXG4tLVxuZnMvYWRmcy9kaXJfZnBsdXMuYy02OS1cbmZzL2FkZnMvZGlyX2ZwbHVzLmM6NzA6c3RhdGljIHU4IGFkZnNfZnBsdXNfY2hlY2tieXRlKHN0cnVjdCBhZGZzX2RpciAqZGlyKVxuZnMvYWRmcy9kaXJfZnBsdXMuYy03MS17XG4tLVxuZnMvYWRmcy9kaXJfZnBsdXMuYy0xMDItXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjEwMzpzdGF0aWMgaW50IGFkZnNfZnBsdXNfcmVhZChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgaW5kYWRkcixcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMTA0LVx0XHRcdCAgIHVuc2lnbmVkIGludCBzaXplLCBzdHJ1Y3QgYWRmc19kaXIgKmRpcilcbi0tXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTE1Ny1cbmZzL2FkZnMvZGlyX2ZwbHVzLmM6MTU4OnN0YXRpYyBpbnRcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMTU5LWFkZnNfZnBsdXNfc2V0cG9zKHN0cnVjdCBhZGZzX2RpciAqZGlyLCB1bnNpZ25lZCBpbnQgZnBvcylcbi0tXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTE3MC1cbmZzL2FkZnMvZGlyX2ZwbHVzLmM6MTcxOnN0YXRpYyBpbnRcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMTcyLWFkZnNfZnBsdXNfZ2V0bmV4dChzdHJ1Y3QgYWRmc19kaXIgKmRpciwgc3RydWN0IG9iamVjdF9pbmZvICpvYmopXG4tLVxuZnMvYWRmcy9kaXJfZnBsdXMuYy0yMTEtXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjIxMjpzdGF0aWMgaW50IGFkZnNfZnBsdXNfaXRlcmF0ZShzdHJ1Y3QgYWRmc19kaXIgKmRpciwgc3RydWN0IGRpcl9jb250ZXh0ICpjdHgpXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTIxMy17XG4tLVxuZnMvYWRmcy9kaXJfZnBsdXMuYy0yMzEtXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjIzMjpzdGF0aWMgaW50IGFkZnNfZnBsdXNfdXBkYXRlKHN0cnVjdCBhZGZzX2RpciAqZGlyLCBzdHJ1Y3Qgb2JqZWN0X2luZm8gKm9iailcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjMzLXtcbi0tXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTI2Mi1cbmZzL2FkZnMvZGlyX2ZwbHVzLmM6MjYzOnN0YXRpYyBpbnQgYWRmc19mcGx1c19jb21taXQoc3RydWN0IGFkZnNfZGlyICpkaXIpXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTI2NC17XG4tLVxuZnMvYWRmcy9kaXJfZnBsdXMuYy0yODEtXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjI4Mjpjb25zdCBzdHJ1Y3QgYWRmc19kaXJfb3BzIGFkZnNfZnBsdXNfZGlyX29wcyA9IHtcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjgzLVx0LnJlYWRcdFx0PSBhZGZzX2ZwbHVzX3JlYWQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNTQ5CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBBREZTIERpcmVjdG9yeSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYWxsIHRoZSBmdW5jdGlvbnMgaW4gYGZzL2FkZnMvZGlyX2ZwbHVzLmNgIGFyZSAqc3RhdGljKi4gVGhhdCBtZWFucywgaW50ZXJuYWxseSwgSSYjMzk7bSBsaW1pdGVkIGluIG15IGZvY3VzLiBJdCBzZWVtcyBsaWtlIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50IGlzIGBhZGZzX2Rpcl9jb3B5ZnJvbWAuIFdhaXQsIGdvb2QhIGBhZGZzX2Rpcl9jb3B5ZnJvbWAgKmlzbiYjMzk7dCogc3RhdGljLiBUaGF0JiMzOTtzIHBlcmZlY3Q7IGl0IGdpdmVzIG1lIGEgY2xlYXIgZW50cnkgcG9pbnQuCgpUaGUgY29yZSBvZiB0aGlzIGZpeCB0YXJnZXRzIGEgYnVnIGluIGBhZGZzX2Rpcl9jb3B5ZnJvbWAuIFNwZWNpZmljYWxseSwgaXQgZGVhbHMgd2l0aCBjb3JyZWN0bHkgaGFuZGxpbmcgZGF0YSBjb3BpZXMgdGhhdCBzcGFuIG11bHRpcGxlIGJ1ZmZlcnMuIFBsdXMsIHRoZXJlJiMzOTtzIGEgZ3VhcmQgaW4gYGFkZnNfZnBsdXNfZ2V0bmV4dGAgdG8gcHJldmVudCBhIGJ1ZmZlciBvdmVyZmxvdyBpZiBgb2JqLSZndDtuYW1lX2xlbmAgZXhjZWVkcyBgQURGU19GUExVU19OQU1FX0xFTmAuIFRoYXQmIzM5O3Mgc21hcnQ7IGJvdW5kcyBjaGVja2luZyBpcyBhbHdheXMgYSBnb29kIHByYWN0aWNlLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY3JpdGljYWxpdHkgb2YgYGFkZnNfZGlyX2NvcHlmcm9tYC4gSXMgaXQgYSBob3QtcGF0aCBmdW5jdGlvbj8gRGlyZWN0b3J5IHJlYWRzIGFyZSBwYXJ0IG9mIEFERlMsIGJ1dCBnZW5lcmFsbHkgQURGUyBpdHNlbGYgaXNuJiMzOTt0IGEgcGVyZm9ybWFuY2UgYm90dGxlbmVjay4gVGhhdCBkb2VzbiYjMzk7dCBtZWFuIGl0JiMzOTtzIHVuaW1wb3J0YW50LCBidXQgaXQgcHV0cyBpdCBpbiBwZXJzcGVjdGl2ZS4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIHNjYW4gb2YgYGZzL2FkZnMvZGlyLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogbm9uLXN0YXRpYyBmdW5jdGlvbnMgb2YgaW50ZXJlc3Q6IGBhZGZzX2Rpcl9yZWFkX2J1ZmZlcnNgLCBgYWRmc19kaXJfdXBkYXRlYCwgYW5kIGBhZGZzX29iamVjdF9maXh1cGAuIFdvcnRoIG5vdGluZywgYnV0IEkmIzM5O2xsIHN0aWNrIHdpdGggYGFkZnNfZGlyX2NvcHlmcm9tYCBhcyBteSBmb2N1cyBzeW1ib2wuCgpPa2F5LCBzbyB0aGUgZ2lzdCBvZiB0aGUgcGF0Y2ggaXMgZml4aW5nIGEgYnVmZmVyIGNvcHkgYnVnIGluIGBhZGZzX2Rpcl9jb3B5ZnJvbWAgYW5kIGFkZGluZyBhIGJvdW5kcyBjaGVjayBpbiBgYWRmc19mcGx1c19nZXRuZXh0YC4gQm90aCBhcmUgY3J1Y2lhbCB0byB0aGUgaW50ZWdyaXR5IGFuZCBzdGFiaWxpdHkgb2YgdGhlIGRpcmVjdG9yeSBwYXJzaW5nIGxvZ2ljIHdpdGhpbiB0aGUgQURGUyBmaWxlc3lzdGVtLiBUaGlzIGxvZ2ljIGlzIGRpcmVjdGx5IGVuZ2FnZWQgZHVyaW5nIG1vdW50IGFuZCByZWFkIG9wZXJhdGlvbnMgb24gYW4gQURGUyBpbWFnZS4gVGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGBBREZTX0ZTYCwgc28gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgaXMgZGVmaW5lZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2FkZnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9hZGZzL0tjb25maWc9Mj1jb25maWcgQURGU19GU1xuZnMvYWRmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtBREZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbmZzL2FkZnMvS2NvbmZpZzo0Olx0ZGVwZW5kcyBvbiBCTE9DS1xuZnMvYWRmcy9LY29uZmlnLTUtXHRzZWxlY3QgQlVGRkVSX0hFQURcbi0tXG5mcy9hZGZzL0tjb25maWc9MjM9Y29uZmlnIEFERlNfRlNfUldcbmZzL2FkZnMvS2NvbmZpZy0yNC1cdGJvb2wgXCYjMzQ7QURGUyB3cml0ZSBzdXBwb3J0IChEQU5HRVJPVVMpXCYjMzQ7XG5mcy9hZGZzL0tjb25maWc6MjU6XHRkZXBlbmRzIG9uIEFERlNfRlNcbmZzL2FkZnMvS2NvbmZpZy0yNi1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1MzEKCQkJCQkJCW91dHB1dDogMTE2CgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBsaWtlIHlvdToKCioqRGVwZW5kZW5jeSBBbmFseXNpcyBhbmQgRnVuY3Rpb24gQ2hvaWNlKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGBBREZTX0ZTYCByZWxpZXMgb24gYEJMT0NLYC4gVGhhdCYjMzk7cyBzdGFuZGFyZCBzdHVmZiwgc28gdGhhdCYjMzk7cyBub3QgdG9vIHN1cnByaXNpbmcuCgpOb3csIEkgbmVlZCB0byBwaWNrIGEgZ29vZCBmdW5jdGlvbiB0byBmb2N1cyBvbiBmb3IgZGVlcGVyIGFuYWx5c2lzLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBhZGZzX2Rpcl9jb3B5ZnJvbWAuIElzIHRoYXQgYSBnb29kIHN0YXJ0aW5nIHBvaW50PyBMZXQgbWUgdGhpbmsuLi4geWVzLCB0aGF0IGxvb2tzIHByb21pc2luZy4gSXQmIzM5O3Mgbm90IGEgYHN0YXRpY2AgZnVuY3Rpb24sIHNvIGl0JiMzOTtzIGxpa2VseSB2aXNpYmxlIGVsc2V3aGVyZSwgYW5kIGl0IGFsc28gZG9lc24mIzM5O3Qgc2VlbSB0byBiZSBhIHBlcmZvcm1hbmNlLWNyaXRpY2FsIGdlbmVyaWMgaG90IHBhdGgsIHdoaWNoIG1ha2VzIGl0IGVhc2llciB0byByZWFzb24gYWJvdXQuIEEgZ29vZCBjaG9pY2UgZm9yIGludmVzdGlnYXRpbmcuCgpOb3csIEkmIzM5O2xsIGdvIGFoZWFkIGFuZCB1c2UgdGhlIHNldC1yZXN1bHRzIHRvb2wuIEl0JiMzOTtzIHRoZSByaWdodCBjaG9pY2UgZm9yIGdldHRpbmcgYSBoYW5kbGUgb24gdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FERlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthZGZzX2Rpcl9jb3B5ZnJvbSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZmZlciBjb3B5IGJ1ZyBpbiBgYWRmc19kaXJfY29weWZyb21gIHdoZW4gY29weWluZyBhY3Jvc3MgbXVsdGlwbGUgYnVmZmVycywgYW5kIGFkZHMgYSBib3VuZHMgY2hlY2sgZm9yIGBuYW1lX2xlbmAgaW4gYGFkZnNfZnBsdXNfZ2V0bmV4dGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIEFERlMgZmlsZXN5c3RlbSBkaXJlY3RvcnkgcGFyc2luZyBsb2dpYywgd2hpY2ggaXMgcmVhY2hhYmxlIHdoZW4gbW91bnRpbmcgYW5kIHJlYWRpbmcgYW4gQURGUyBpbWFnZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QURGU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FkZnNfZGlyX2NvcHlmcm9tJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVmZmVyIGNvcHkgYnVnIGluIGBhZGZzX2Rpcl9jb3B5ZnJvbWAgd2hlbiBjb3B5aW5nIGFjcm9zcyBtdWx0aXBsZSBidWZmZXJzLCBhbmQgYWRkcyBhIGJvdW5kcyBjaGVjayBmb3IgYG5hbWVfbGVuYCBpbiBgYWRmc19mcGx1c19nZXRuZXh0YC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgQURGUyBmaWxlc3lzdGVtIGRpcmVjdG9yeSBwYXJzaW5nIGxvZ2ljLCB3aGljaCBpcyByZWFjaGFibGUgd2hlbiBtb3VudGluZyBhbmQgcmVhZGluZyBhbiBBREZTIGltYWdlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6MTc6NTUuODk2NTk1NTc1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMwMjE0MzM4NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQURGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFkZnNfZGlyX2NvcHlmcm9tXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWZmZXIgY29weSBidWcgaW4gYGFkZnNfZGlyX2NvcHlmcm9tYCB3aGVuIGNvcHlpbmcgYWNyb3NzIG11bHRpcGxlIGJ1ZmZlcnMsIGFuZCBhZGRzIGEgYm91bmRzIGNoZWNrIGZvciBgbmFtZV9sZW5gIGluIGBhZGZzX2ZwbHVzX2dldG5leHRgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBBREZTIGZpbGVzeXN0ZW0gZGlyZWN0b3J5IHBhcnNpbmcgbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSB3aGVuIG1vdW50aW5nIGFuZCByZWFkaW5nIGFuIEFERlMgaW1hZ2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE3OjU1Ljg5NjYwMTQ4NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc3MjIyNTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTE0OGY4OGY2YTczM2Y5NzNjODk3ZmU3NGVjM2FkN2VkMjkyODRmZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAzIDA0OjE3OjU1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2ZzL2FkZnMvZGlyLmMgYi9mcy9hZGZzL2Rpci5jXFxuaW5kZXggMTFhZmE5ZTE1N2FhNy4uNDQ5NTMyNDdhY2FkZCAxMDA2NDRcXG4tLS0gYS9mcy9hZGZzL2Rpci5jXFxuKysrIGIvZnMvYWRmcy9kaXIuY1xcbkBAIC0xOSwxNSArMTksMjAgQEAgaW50IGFkZnNfZGlyX2NvcHlmcm9tKHZvaWQgKmRzdCwgc3RydWN0IGFkZnNfZGlyICpkaXIsIHVuc2lnbmVkIGludCBvZmZzZXQsXFxuIFxcdFxcdCAgICAgIHNpemVfdCBsZW4pXFxuIHtcXG4gXFx0c3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGRpci1cXHUwMDNlc2I7XFxuK1xcdHNpemVfdCBzaXplID0gKHNpemVfdClkaXItXFx1MDAzZW5yX2J1ZmZlcnMgXFx1MDAzY1xcdTAwM2Mgc2ItXFx1MDAzZXNfYmxvY2tzaXplX2JpdHM7XFxuIFxcdHVuc2lnbmVkIGludCBpbmRleCwgcmVtYWluO1xcbiBcXG4rXFx0aWYgKG9mZnNldCBcXHUwMDNlPSBzaXplIHx8IGxlbiBcXHUwMDNlIHNpemUgLSBvZmZzZXQpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4gXFx0aW5kZXggPSBvZmZzZXQgXFx1MDAzZVxcdTAwM2Ugc2ItXFx1MDAzZXNfYmxvY2tzaXplX2JpdHM7XFxuIFxcdG9mZnNldCBcXHUwMDI2PSBzYi1cXHUwMDNlc19ibG9ja3NpemUgLSAxO1xcbi1cXHRyZW1haW4gPSBzYi1cXHUwMDNlc19ibG9ja3NpemUgLSBvZmZzZXQ7XFxuLVxcdGlmIChpbmRleCArIChyZW1haW4gXFx1MDAzYyBsZW4pIFxcdTAwM2U9IGRpci1cXHUwMDNlbnJfYnVmZmVycylcXG4tXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbi1cXHRpZiAocmVtYWluIFxcdTAwM2MgbGVuKSB7XFxuK1xcdHdoaWxlIChsZW4pIHtcXG4rXFx0XFx0cmVtYWluID0gc2ItXFx1MDAzZXNfYmxvY2tzaXplIC0gb2Zmc2V0O1xcbitcXHRcXHRpZiAocmVtYWluIFxcdTAwM2UgbGVuKVxcbitcXHRcXHRcXHRyZW1haW4gPSBsZW47XFxuK1xcbiBcXHRcXHRtZW1jcHkoZHN0LCBkaXItXFx1MDAzZWJoc1tpbmRleF0tXFx1MDAzZWJfZGF0YSArIG9mZnNldCwgcmVtYWluKTtcXG4gXFx0XFx0ZHN0ICs9IHJlbWFpbjtcXG4gXFx0XFx0bGVuIC09IHJlbWFpbjtcXG5AQCAtMzUsOCArNDAsNiBAQCBpbnQgYWRmc19kaXJfY29weWZyb20odm9pZCAqZHN0LCBzdHJ1Y3QgYWRmc19kaXIgKmRpciwgdW5zaWduZWQgaW50IG9mZnNldCxcXG4gXFx0XFx0b2Zmc2V0ID0gMDtcXG4gXFx0fVxcbiBcXG4tXFx0bWVtY3B5KGRzdCwgZGlyLVxcdTAwM2ViaHNbaW5kZXhdLVxcdTAwM2ViX2RhdGEgKyBvZmZzZXQsIGxlbik7XFxuLVxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvZnMvYWRmcy9kaXJfZnBsdXMuYyBiL2ZzL2FkZnMvZGlyX2ZwbHVzLmNcXG5pbmRleCA0YTE1OTI0MDE0ZGEyLi41MTdmZmNjOTE0MjllIDEwMDY0NFxcbi0tLSBhL2ZzL2FkZnMvZGlyX2ZwbHVzLmNcXG4rKysgYi9mcy9hZGZzL2Rpcl9mcGx1cy5jXFxuQEAgLTE5Miw2ICsxOTIsOCBAQCBhZGZzX2ZwbHVzX2dldG5leHQoc3RydWN0IGFkZnNfZGlyICpkaXIsIHN0cnVjdCBvYmplY3RfaW5mbyAqb2JqKVxcbiBcXHRvYmotXFx1MDAzZWluZGFkZHIgID0gbGUzMl90b19jcHUoYmRlLmJpZ2RpcmluZGFkZHIpO1xcbiBcXHRvYmotXFx1MDAzZWF0dHIgICAgID0gbGUzMl90b19jcHUoYmRlLmJpZ2RpcmF0dHIpO1xcbiBcXHRvYmotXFx1MDAzZW5hbWVfbGVuID0gbGUzMl90b19jcHUoYmRlLmJpZ2Rpcm9ibmFtZWxlbik7XFxuK1xcdGlmIChvYmotXFx1MDAzZW5hbWVfbGVuIFxcdTAwM2UgQURGU19GUExVU19OQU1FX0xFTilcXG4rXFx0XFx0cmV0dXJuIC1FSU87XFxuIFxcbiBcXHRvZmZzZXQgPSBhZGZzX2ZwbHVzX29mZnNldChoLCBsZTMyX3RvX2NwdShoLVxcdTAwM2ViaWdkaXJlbnRyaWVzKSk7XFxuIFxcdG9mZnNldCArPSBsZTMyX3RvX2NwdShiZGUuYmlnZGlyb2JuYW1lcHRyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6MTc6NTYuMTc0NDgwMDhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1Mjc0MzU0MTQ5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBREZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWRmc19kaXJfY29weWZyb21cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZmZlciBjb3B5IGJ1ZyBpbiBgYWRmc19kaXJfY29weWZyb21gIHdoZW4gY29weWluZyBhY3Jvc3MgbXVsdGlwbGUgYnVmZmVycywgYW5kIGFkZHMgYSBib3VuZHMgY2hlY2sgZm9yIGBuYW1lX2xlbmAgaW4gYGFkZnNfZnBsdXNfZ2V0bmV4dGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIEFERlMgZmlsZXN5c3RlbSBkaXJlY3RvcnkgcGFyc2luZyBsb2dpYywgd2hpY2ggaXMgcmVhY2hhYmxlIHdoZW4gbW91bnRpbmcgYW5kIHJlYWRpbmcgYW4gQURGUyBpbWFnZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTE0OGY4OGY2YTczM2Y5NzNjODk3ZmU3NGVjM2FkN2VkMjkyODRmZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMDQ6MTc6NTUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9hZGZzL2Rpci5jIGIvZnMvYWRmcy9kaXIuY1xuaW5kZXggMTFhZmE5ZTE1N2FhNy4uNDQ5NTMyNDdhY2FkZCAxMDA2NDRcbi0tLSBhL2ZzL2FkZnMvZGlyLmNcbisrKyBiL2ZzL2FkZnMvZGlyLmNcbkBAIC0xOSwxNSArMTksMjAgQEAgaW50IGFkZnNfZGlyX2NvcHlmcm9tKHZvaWQgKmRzdCwgc3RydWN0IGFkZnNfZGlyICpkaXIsIHVuc2lnbmVkIGludCBvZmZzZXQsXG4gXHRcdCAgICAgIHNpemVfdCBsZW4pXG4ge1xuIFx0c3RydWN0IHN1cGVyX2Jsb2NrICpzYiA9IGRpci1cdTAwM2VzYjtcbitcdHNpemVfdCBzaXplID0gKHNpemVfdClkaXItXHUwMDNlbnJfYnVmZmVycyBcdTAwM2NcdTAwM2Mgc2ItXHUwMDNlc19ibG9ja3NpemVfYml0cztcbiBcdHVuc2lnbmVkIGludCBpbmRleCwgcmVtYWluO1xuIFxuK1x0aWYgKG9mZnNldCBcdTAwM2U9IHNpemUgfHwgbGVuIFx1MDAzZSBzaXplIC0gb2Zmc2V0KVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbiBcdGluZGV4ID0gb2Zmc2V0IFx1MDAzZVx1MDAzZSBzYi1cdTAwM2VzX2Jsb2Nrc2l6ZV9iaXRzO1xuIFx0b2Zmc2V0IFx1MDAyNj0gc2ItXHUwMDNlc19ibG9ja3NpemUgLSAxO1xuLVx0cmVtYWluID0gc2ItXHUwMDNlc19ibG9ja3NpemUgLSBvZmZzZXQ7XG4tXHRpZiAoaW5kZXggKyAocmVtYWluIFx1MDAzYyBsZW4pIFx1MDAzZT0gZGlyLVx1MDAzZW5yX2J1ZmZlcnMpXG4tXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLVx0aWYgKHJlbWFpbiBcdTAwM2MgbGVuKSB7XG4rXHR3aGlsZSAobGVuKSB7XG4rXHRcdHJlbWFpbiA9IHNiLVx1MDAzZXNfYmxvY2tzaXplIC0gb2Zmc2V0O1xuK1x0XHRpZiAocmVtYWluIFx1MDAzZSBsZW4pXG4rXHRcdFx0cmVtYWluID0gbGVuO1xuK1xuIFx0XHRtZW1jcHkoZHN0LCBkaXItXHUwMDNlYmhzW2luZGV4XS1cdTAwM2ViX2RhdGEgKyBvZmZzZXQsIHJlbWFpbik7XG4gXHRcdGRzdCArPSByZW1haW47XG4gXHRcdGxlbiAtPSByZW1haW47XG5AQCAtMzUsOCArNDAsNiBAQCBpbnQgYWRmc19kaXJfY29weWZyb20odm9pZCAqZHN0LCBzdHJ1Y3QgYWRmc19kaXIgKmRpciwgdW5zaWduZWQgaW50IG9mZnNldCxcbiBcdFx0b2Zmc2V0ID0gMDtcbiBcdH1cbiBcbi1cdG1lbWNweShkc3QsIGRpci1cdTAwM2ViaHNbaW5kZXhdLVx1MDAzZWJfZGF0YSArIG9mZnNldCwgbGVuKTtcbi1cbiBcdHJldHVybiAwO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9mcy9hZGZzL2Rpcl9mcGx1cy5jIGIvZnMvYWRmcy9kaXJfZnBsdXMuY1xuaW5kZXggNGExNTkyNDAxNGRhMi4uNTE3ZmZjYzkxNDI5ZSAxMDA2NDRcbi0tLSBhL2ZzL2FkZnMvZGlyX2ZwbHVzLmNcbisrKyBiL2ZzL2FkZnMvZGlyX2ZwbHVzLmNcbkBAIC0xOTIsNiArMTkyLDggQEAgYWRmc19mcGx1c19nZXRuZXh0KHN0cnVjdCBhZGZzX2RpciAqZGlyLCBzdHJ1Y3Qgb2JqZWN0X2luZm8gKm9iailcbiBcdG9iai1cdTAwM2VpbmRhZGRyICA9IGxlMzJfdG9fY3B1KGJkZS5iaWdkaXJpbmRhZGRyKTtcbiBcdG9iai1cdTAwM2VhdHRyICAgICA9IGxlMzJfdG9fY3B1KGJkZS5iaWdkaXJhdHRyKTtcbiBcdG9iai1cdTAwM2VuYW1lX2xlbiA9IGxlMzJfdG9fY3B1KGJkZS5iaWdkaXJvYm5hbWVsZW4pO1xuK1x0aWYgKG9iai1cdTAwM2VuYW1lX2xlbiBcdTAwM2UgQURGU19GUExVU19OQU1FX0xFTilcbitcdFx0cmV0dXJuIC1FSU87XG4gXG4gXHRvZmZzZXQgPSBhZGZzX2ZwbHVzX29mZnNldChoLCBsZTMyX3RvX2NwdShoLVx1MDAzZWJpZ2RpcmVudHJpZXMpKTtcbiBcdG9mZnNldCArPSBsZTMyX3RvX2NwdShiZGUuYmlnZGlyb2JuYW1lcHRyKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE3OjU2LjE3NDQ4MTU1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ4MjUwMTM5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEFERlMgRmlsZXN5c3RlbSBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3MgdG91Y2hpbmcgYGZzL2FkZnMvZGlyLmNgIGFuZCBgZnMvYWRmcy9kaXJfZnBsdXMuY2AuIFNlZW1zIGxpa2UgdGhlIHByaW1hcnkgZm9jdXMgaXMgb24gZml4aW5nIGBhZGZzX2Rpcl9jb3B5ZnJvbWAgdG8gaGFuZGxlIGJ1ZmZlciBjb3BpZXMgcHJvcGVybHkuIEl0IGFsc28gdGhyb3dzIGluIGEgc2FuaXR5IGNoZWNrIHdpdGhpbiBgYWRmc19mcGx1c19nZXRuZXh0YCB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgZW5kIHVwIHdpdGggc29tZSBjcmF6eSBsb25nIGZpbGVuYW1lcy4gXG5cbkxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZmlyc3Qgc3RlcCBpcyB0byBjb25maXJtIHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQ6IGBhZGZzX2Rpcl9jb3B5ZnJvbWAgYW5kIGBhZGZzX2ZwbHVzX2dldG5leHRgLlxuXG5OZXh0LCBJJ2xsIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcsIHNwZWNpZmljYWxseSBgZnMvYWRmcy9LY29uZmlnYCwgdG8gY29uZmlybSB0aGF0IHRoZSBBREZTIGZpbGVzeXN0ZW0gaXMgZXZlbiBlbmFibGVkIChgQ09ORklHX0FERlNfRlNgKS4gV2UgY2FuJ3QgYmUgcGF0Y2hpbmcgc29tZXRoaW5nIHRoYXQgaXNuJ3QgYnVpbHQuXG5cbk5vdywgbGV0J3MgdHJhY2Ugd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSB1c2VkLiBBIHF1aWNrIHNlYXJjaCBzaG91bGQgcmV2ZWFsIHRoZWlyIHJlYWNoYWJpbGl0eS4gT2theSwgc28gYGFkZnNfZGlyX2NvcHlmcm9tYCBwb3BzIHVwIGluIGJvdGggYGZzL2FkZnMvZGlyX2ZwbHVzLmNgIGFuZCBgZnMvYWRmcy9kaXJfZi5jYC4gYGFkZnNfZnBsdXNfZ2V0bmV4dGAgaXMgY2xlYXJseSB1c2VkIGFzIGEgY2FsbGJhY2sgZnVuY3Rpb24gd2l0aGluIHRoZSBgc3RydWN0IGFkZnNfZGlyX29wc2AuIFxuXG5UaW1lIGZvciBhIHF1aWNrIGdyZXAgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cyBhbmQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIGludGVyYWN0aW9ucyB0byBiZSBhd2FyZSBvZi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4OCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjAwLjY1Njk4NTYwOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTUxNzI5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhZGZzX2Rpcl9jb3B5ZnJvbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9hZGZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9hZGZzL2FkZnMuaD0xNzQ9ZXh0ZXJuIGNvbnN0IHN0cnVjdCBhZGZzX2Rpcl9vcHMgYWRmc19mcGx1c19kaXJfb3BzO1xcbmZzL2FkZnMvYWRmcy5oLTE3NS1cXG5mcy9hZGZzL2FkZnMuaDoxNzY6aW50IGFkZnNfZGlyX2NvcHlmcm9tKHZvaWQgKmRzdCwgc3RydWN0IGFkZnNfZGlyICpkaXIsIHVuc2lnbmVkIGludCBvZmZzZXQsXFxuZnMvYWRmcy9hZGZzLmgtMTc3LVxcdFxcdCAgICAgIHNpemVfdCBsZW4pO1xcbi0tXFxuZnMvYWRmcy9kaXIuYz0xNj1zdGF0aWMgREVDTEFSRV9SV1NFTShhZGZzX2Rpcl9yd3NlbSk7XFxuZnMvYWRmcy9kaXIuYy0xNy1cXG5mcy9hZGZzL2Rpci5jOjE4OmludCBhZGZzX2Rpcl9jb3B5ZnJvbSh2b2lkICpkc3QsIHN0cnVjdCBhZGZzX2RpciAqZGlyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LFxcbmZzL2FkZnMvZGlyLmMtMTktXFx0XFx0ICAgICAgc2l6ZV90IGxlbilcXG4tLVxcbmZzL2FkZnMvZGlyX2YuYz0yMTU9X19hZGZzX2Rpcl9nZXQoc3RydWN0IGFkZnNfZGlyICpkaXIsIGludCBwb3MsIHN0cnVjdCBvYmplY3RfaW5mbyAqb2JqKVxcbi0tXFxuZnMvYWRmcy9kaXJfZi5jLTIxOS1cXG5mcy9hZGZzL2Rpcl9mLmM6MjIwOlxcdHJldCA9IGFkZnNfZGlyX2NvcHlmcm9tKFxcdTAwMjZkZSwgZGlyLCBwb3MsIDI2KTtcXG5mcy9hZGZzL2Rpcl9mLmMtMjIxLVxcdGlmIChyZXQpXFxuLS1cXG5mcy9hZGZzL2Rpcl9mLmM9MjcxPXN0YXRpYyBpbnQgYWRmc19mX3VwZGF0ZShzdHJ1Y3QgYWRmc19kaXIgKmRpciwgc3RydWN0IG9iamVjdF9pbmZvICpvYmopXFxuLS1cXG5mcy9hZGZzL2Rpcl9mLmMtMjc5LVxcdFxcdG9mZnNldCArPSBzaXplb2YoZGUpO1xcbmZzL2FkZnMvZGlyX2YuYzoyODA6XFx0XFx0cmV0ID0gYWRmc19kaXJfY29weWZyb20oXFx1MDAyNmRlLCBkaXIsIG9mZnNldCwgc2l6ZW9mKGRlKSk7XFxuZnMvYWRmcy9kaXJfZi5jLTI4MS1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jPTE3Mj1hZGZzX2ZwbHVzX2dldG5leHQoc3RydWN0IGFkZnNfZGlyICpkaXIsIHN0cnVjdCBvYmplY3RfaW5mbyAqb2JqKVxcbi0tXFxuZnMvYWRmcy9kaXJfZnBsdXMuYy0xODMtXFxuZnMvYWRmcy9kaXJfZnBsdXMuYzoxODQ6XFx0cmV0ID0gYWRmc19kaXJfY29weWZyb20oXFx1MDAyNmJkZSwgZGlyLCBvZmZzZXQsXFxuZnMvYWRmcy9kaXJfZnBsdXMuYy0xODUtXFx0XFx0XFx0XFx0c2l6ZW9mKHN0cnVjdCBhZGZzX2JpZ2RpcmVudHJ5KSk7XFxuLS1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTIwMC1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjIwMTpcXHRyZXQgPSBhZGZzX2Rpcl9jb3B5ZnJvbShvYmotXFx1MDAzZW5hbWUsIGRpciwgb2Zmc2V0LCBvYmotXFx1MDAzZW5hbWVfbGVuKTtcXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTIwMi1cXHRpZiAocmV0KVxcbi0tXFxuZnMvYWRmcy9kaXJfZnBsdXMuYz0yMzI9c3RhdGljIGludCBhZGZzX2ZwbHVzX3VwZGF0ZShzdHJ1Y3QgYWRmc19kaXIgKmRpciwgc3RydWN0IG9iamVjdF9pbmZvICpvYmopXFxuLS1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTI0Ni1cXHRcXHR9XFxuZnMvYWRmcy9kaXJfZnBsdXMuYzoyNDc6XFx0XFx0cmV0ID0gYWRmc19kaXJfY29weWZyb20oXFx1MDAyNmJkZSwgZGlyLCBvZmZzZXQsIHNpemVvZihiZGUpKTtcXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTI0OC1cXHRcXHRpZiAocmV0KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjAwLjcwMjUwOTAwOFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxOTE3MDE5MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBBREZTIERpcmVjdG9yeSBDb2RlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgdG8gYmUgdG91Y2hpbmcgdHdvIGZ1bmN0aW9uczogYGFkZnNfZGlyX2NvcHlmcm9tYCBhbmQgYGFkZnNfZnBsdXNfZ2V0bmV4dGAuIFRoZSBmaXJzdCBvbmUsIGBhZGZzX2Rpcl9jb3B5ZnJvbWAsIGlzIGFwcGFyZW50bHkgbm9uLXN0YXRpYy4gSW50ZXJlc3RpbmcuIEJ1dCBob2xkIG9uLCBJIHNlZW0gdG8gcmVtZW1iZXIgYGFkZnNfZnBsdXNfZ2V0bmV4dGAgYmVpbmcgc3RhdGljLiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCBieSBxdWlja2x5IG9wZW5pbmcgdXAgYGZzL2FkZnMvZGlyX2ZwbHVzLmNgLiBOZWVkIHRvIGNvbmZpcm0gaWYgaXQgcmVhbGx5IGlzIHN0YXRpYyBpbiB0aGF0IGZpbGUsIG90aGVyd2lzZSwgc29tZXRoaW5nIHNlZW1zIG9mZi4gR290dGEga2VlcCBkaWdnaW5nIHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMDMsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6MTg6MDMuODk0MjEzODM4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNzE1MDc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFkZnNfZnBsdXNfZ2V0bmV4dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9hZGZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9hZGZzL2Rpcl9mcGx1cy5jPTE3MT1zdGF0aWMgaW50XFxuZnMvYWRmcy9kaXJfZnBsdXMuYzoxNzI6YWRmc19mcGx1c19nZXRuZXh0KHN0cnVjdCBhZGZzX2RpciAqZGlyLCBzdHJ1Y3Qgb2JqZWN0X2luZm8gKm9iailcXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTE3My17XFxuLS1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jPTIxMj1zdGF0aWMgaW50IGFkZnNfZnBsdXNfaXRlcmF0ZShzdHJ1Y3QgYWRmc19kaXIgKmRpciwgc3RydWN0IGRpcl9jb250ZXh0ICpjdHgpXFxuLS1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTIyMS1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjIyMjpcXHR3aGlsZSAoIWFkZnNfZnBsdXNfZ2V0bmV4dChkaXIsIFxcdTAwMjZvYmopKSB7XFxuZnMvYWRmcy9kaXJfZnBsdXMuYy0yMjMtXFx0XFx0aWYgKCFkaXJfZW1pdChjdHgsIG9iai5uYW1lLCBvYmoubmFtZV9sZW4sXFxuLS1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jPTI4Mj1jb25zdCBzdHJ1Y3QgYWRmc19kaXJfb3BzIGFkZnNfZnBsdXNfZGlyX29wcyA9IHtcXG4tLVxcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjg1LVxcdC5zZXRwb3NcXHRcXHQ9IGFkZnNfZnBsdXNfc2V0cG9zLFxcbmZzL2FkZnMvZGlyX2ZwbHVzLmM6Mjg2OlxcdC5nZXRuZXh0XFx0PSBhZGZzX2ZwbHVzX2dldG5leHQsXFxuZnMvYWRmcy9kaXJfZnBsdXMuYy0yODctXFx0LnVwZGF0ZVxcdFxcdD0gYWRmc19mcGx1c191cGRhdGUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjAzLjkzNjkzNTEyN1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwODcwODg4MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBBREZTIERpcmVjdG9yeSBJdGVyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgQURGUyBmaWxlIHN5c3RlbSBjb2RlIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgYmVzdCB3YXkgdG8gdHJhY2UgdGhlIGRpcmVjdG9yeSBpdGVyYXRpb24gcHJvY2Vzcy4gSSBzZWUgdGhhdCBgYWRmc19mcGx1c19nZXRuZXh0YCBpcyBkZWNsYXJlZCBhcyBgc3RhdGljYC4gUmlnaHQgYXdheSwgdGhhdCB0ZWxscyBtZSBpdCdzIG5vdCB0aGUgaWRlYWwgY2FuZGlkYXRlIGZvciBhIGZvY3VzIHN5bWJvbCwgc2luY2UgaXQncyBub3QgdmlzaWJsZSBvdXRzaWRlIGl0cyBvd24gY29tcGlsYXRpb24gdW5pdC5cblxuSW5zdGVhZCwgSSBuZWVkIHRvIGxvb2sgZm9yIHNvbWV0aGluZyB0aGF0ICp1c2VzKiBgYWRmc19mcGx1c19nZXRuZXh0YC4gSSBjYW4gc2VlIGZyb20gaGVyZSB0aGF0IGBhZGZzX2Rpcl9jb3B5ZnJvbWAsIGBhZGZzX2ZwbHVzX2l0ZXJhdGVgLCBvciBgYWRmc19mcGx1c19yZWFkYCBjb3VsZCBiZSBnb29kIGNob2ljZXMsIGFzIGVpdGhlciB0aGUgY2FsbGVycyBvciB0aGUgb3BzIHN0cnVjdCBtZW1iZXJzIGNvdWxkIGV4cG9zZSB0aGUgaW50ZW5kZWQgZmxvdy5cblxuSG9sZCBvbiBhIG1pbnV0ZS4uLiBJIGp1c3QgcmVtZW1iZXJlZCB0aGF0IGBhZGZzX2ZwbHVzX2dldG5leHRgIGlzIGFjdHVhbGx5IGFzc2lnbmVkIHRvIHRoZSBgLmdldG5leHRgIGZpZWxkIHdpdGhpbiB0aGUgYGFkZnNfZnBsdXNfZGlyX29wc2Agc3RydWN0dXJlLiBUaGF04oCZcyBhIGtleSBwaWVjZSBvZiBpbmZvcm1hdGlvbiEgTm93IEkgbmVlZCB0byBpZGVudGlmeSB0aGUgY2FsbGVycyBvZiB0aGF0IGAuZ2V0bmV4dGAgZnVuY3Rpb24gcG9pbnRlci4gQWNjb3JkaW5nIHRvIHRoZSBjb2RlLCB0aG9zZSBjYWxsZXJzIGFyZSBsb2NhdGVkIGluIGBmcy9hZGZzL2Rpci5jYC4gT2theSwgbGV04oCZcyBnbyBkaXJlY3RseSB0byBgZnMvYWRmcy9kaXIuY2AgYW5kIHZlcmlmeSB0aG9zZSBjb25uZWN0aW9ucyBhbmQgaG93IHRoZSBkaXJlY3RvcnkgaXRlcmF0aW9uIGlzIGFjdHVhbGx5IGhhbmRsZWQuIFRoYXQncyB0aGUgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjM2LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjA4LjAyNDAyNjg0M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE4ODMzOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXFxcXC5nZXRuZXh0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2FkZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2FkZnMvZGlyX2YuYz0zMTc9Y29uc3Qgc3RydWN0IGFkZnNfZGlyX29wcyBhZGZzX2ZfZGlyX29wcyA9IHtcXG4tLVxcbmZzL2FkZnMvZGlyX2YuYy0zMjAtXFx0LnNldHBvc1xcdFxcdD0gYWRmc19mX3NldHBvcyxcXG5mcy9hZGZzL2Rpcl9mLmM6MzIxOlxcdC5nZXRuZXh0XFx0PSBhZGZzX2ZfZ2V0bmV4dCxcXG5mcy9hZGZzL2Rpcl9mLmMtMzIyLVxcdC51cGRhdGVcXHRcXHQ9IGFkZnNfZl91cGRhdGUsXFxuLS1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jPTI4Mj1jb25zdCBzdHJ1Y3QgYWRmc19kaXJfb3BzIGFkZnNfZnBsdXNfZGlyX29wcyA9IHtcXG4tLVxcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjg1LVxcdC5zZXRwb3NcXHRcXHQ9IGFkZnNfZnBsdXNfc2V0cG9zLFxcbmZzL2FkZnMvZGlyX2ZwbHVzLmM6Mjg2OlxcdC5nZXRuZXh0XFx0PSBhZGZzX2ZwbHVzX2dldG5leHQsXFxuZnMvYWRmcy9kaXJfZnBsdXMuYy0yODctXFx0LnVwZGF0ZVxcdFxcdD0gYWRmc19mcGx1c191cGRhdGUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjA4LjE4NTkxOTAxMVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyOTcyNDMyMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczpcblxuKipOYXZpZ2F0aW5nIHRoZSBGaWxlIFN5c3RlbSoqXG5cbk9rYXksIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgYGFkZnNgIGZpbGUgc3lzdGVtLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gaG93IHRoZSBzeXN0ZW0gcmV0cmlldmVzIHRoZSBcIm5leHRcIiBlbGVtZW50LiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gc3RhcnQgYnkgc2VhcmNoaW5nIGZvciBgLVx1MDAzZWdldG5leHRgLiBUaGlzIGlzIGEgY29tbW9uIHBhdHRlcm4gZm9yIGxpbmtlZCBsaXN0cyBvciBpdGVyYXRvcnMgaW4gQy1saWtlIGNvZGUsIHNvIGl0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGxvb2sgZm9yIHdoZXJlIHRoZSBuZXh0IGVsZW1lbnQgaW4gYSBkYXRhIHN0cnVjdHVyZSBpcyBhY2Nlc3NlZC4gVGFyZ2V0aW5nIGBmcy9hZGZzL2AgaXMgbG9naWNhbDsgdGhlIFwiZnNcIiBwYXJ0IHRlbGxzIG1lIGl04oCZcyByZWxhdGVkIHRvIHRoZSBmaWxlIHN5c3RlbSwgYW5kIFwiYWRmc1wiIGV4cGxpY2l0bHkgbmFycm93cyB0aGUgc2NvcGUuIEknbSBleHBlY3RpbmcgdGhpcyB3aWxsIGxpa2VseSBwb2ludCBtZSB0byBhIGZ1bmN0aW9uIG9yIG1hY3JvIHJlc3BvbnNpYmxlIGZvciB0cmF2ZXJzaW5nIG9yIGl0ZXJhdGluZyBvdmVyIGRpcmVjdG9yeSBlbnRyaWVzLCBmaWxlIG1ldGFkYXRhLCBvciBhbGxvY2F0aW9uIHN0cnVjdHVyZXMgd2l0aGluIHRoZSBBREZTIGltcGxlbWVudGF0aW9uLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8ga2VlcCB0cmFjayBvZiB0aGUgc3BlY2lmaWMgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIHVzZWQuIEknbGwgc2VhcmNoIGZvciBgLVx1MDAzZWdldG5leHRgIGFuZCBzdGFydCB0aGVyZS4gRnJvbSB0aGVyZSBJJ2xsIGxpa2VseSBuZWVkIHRvIGludmVzdGlnYXRlIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGRldGVybWluZSBob3cgdGhhdCBlbGVtZW50IGlzIHNlbGVjdGVkLCBhbmQgaG93IHRoZSB0cmF2ZXJzYWwgbG9naWMgaXMgaGFuZGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTM2OSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjExLjQ4MzE2NDk3OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI3NTExNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiLVxcdTAwM2VnZXRuZXh0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2FkZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2FkZnMvZGlyLmM9MzUxPXN0YXRpYyBpbnQgYWRmc19kaXJfbG9va3VwX2J5bmFtZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCBzdHJ1Y3QgcXN0ciAqcXN0cixcXG4tLVxcbmZzL2FkZnMvZGlyLmMtMzcyLVxcdG5hbWVfbGVuID0gcXN0ci1cXHUwMDNlbGVuO1xcbmZzL2FkZnMvZGlyLmM6MzczOlxcdHdoaWxlIChvcHMtXFx1MDAzZWdldG5leHQoXFx1MDAyNmRpciwgb2JqKSA9PSAwKSB7XFxuZnMvYWRmcy9kaXIuYy0zNzQtXFx0XFx0aWYgKCFfX2FkZnNfY29tcGFyZShuYW1lLCBuYW1lX2xlbiwgb2JqLVxcdTAwM2VuYW1lLCBvYmotXFx1MDAzZW5hbWVfbGVuKSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDoxODoxMS41MjU5MjM3MzhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIzOTE3NTIyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydCBpbiB0aGlzIGFyZWE6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBBREZTIERpcmVjdG9yeSBMb29rdXAqKlxuXG5BbHJpZ2h0LCBteSBmb2N1cyBpcyBub3cgb24gdGhlIGBhZGZzX2Rpcl9sb29rdXBfYnluYW1lYCBmdW5jdGlvbi4gSSBzZWUgdGhhdCBpdCBjYWxscyBgb3BzLVx1MDAzZWdldG5leHRgLCBhbmQgdGhhdCdzIGltbWVkaWF0ZWx5IHVzZWZ1bCBhcyBhIHBvaW50IG9mIGludmVzdGlnYXRpb24uIFRoaXMgZnVuY3Rpb24gc2VlbXMgY2VudHJhbCB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgZGlyZWN0b3J5IGxvb2t1cCBwcm9jZXNzIHdvcmtzLiBJJ20gYWxzbyBhZGRpbmcgYGFkZnNfZGlyX2NvcHlmcm9tYCB0byB0aGUgbGlzdCBvZiBrZXkgZnVuY3Rpb25zIHRvIHNjcnV0aW5pemUuXG5cbk15IG5leHQgc3RlcCBpcyB0byBvcGVuIHVwIGBmcy9hZGZzL2Rpci5jYC4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgYGFkZnNfZGlyX2xvb2t1cF9ieW5hbWVgIGlzIGEgc3RhdGljIGZ1bmN0aW9uIHdpdGhpbiB0aGF0IGZpbGUuIFRoYXQga25vd2xlZGdlIGlzIGNydWNpYWwsIGFzIGl0IHdpbGwgdGVsbCBtZSBpdHMgc2NvcGUgYW5kIGltcGFjdCBvbiBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGl0cyBvdmVyYWxsIGFyY2hpdGVjdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc5OCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjE0Ljc2NTEwMTg5NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI0NzgyMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWRmc19kaXJfbG9va3VwX2J5bmFtZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9hZGZzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9hZGZzL2Rpci5jPTMzNj1zdGF0aWMgaW50IF9fYWRmc19jb21wYXJlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnFzdHIsIHUzMiBxbGVuLFxcbi0tXFxuZnMvYWRmcy9kaXIuYy0zNTAtXFxuZnMvYWRmcy9kaXIuYzozNTE6c3RhdGljIGludCBhZGZzX2Rpcl9sb29rdXBfYnluYW1lKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNvbnN0IHN0cnVjdCBxc3RyICpxc3RyLFxcbmZzL2FkZnMvZGlyLmMtMzUyLVxcdFxcdFxcdFxcdCAgc3RydWN0IG9iamVjdF9pbmZvICpvYmopXFxuLS1cXG5mcy9hZGZzL2Rpci5jPTQzND1hZGZzX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCB1bnNpZ25lZCBpbnQgZmxhZ3MpXFxuLS1cXG5mcy9hZGZzL2Rpci5jLTQzOS1cXG5mcy9hZGZzL2Rpci5jOjQ0MDpcXHRlcnJvciA9IGFkZnNfZGlyX2xvb2t1cF9ieW5hbWUoZGlyLCBcXHUwMDI2ZGVudHJ5LVxcdTAwM2VkX25hbWUsIFxcdTAwMjZvYmopO1xcbmZzL2FkZnMvZGlyLmMtNDQxLVxcdGlmIChlcnJvciA9PSAwKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjE0Ljg0NzU4NDI4NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDc3Njk2OTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipBbmFseXppbmcgQURGUyBEaXJlY3RvcnkgTG9va3VwIE9wZXJhdGlvbnMqKlxuXG5SaWdodCwgbGV0J3Mgc2VlLiBUaGUgZnVuY3Rpb24gYGFkZnNfZGlyX2xvb2t1cF9ieW5hbWVgIOKAkyB0aGF0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIG1lYW5zIGl0J3MgbGltaXRlZCBpbiBzY29wZSwgbGlrZWx5IGludGVybmFsIHRvIGEgc3BlY2lmaWMgZmlsZSBvciBtb2R1bGUuIEdvdCBpdC4gTm93LCBgYWRmc19sb29rdXBgLi4uIGFoLCB0aGF0IG9uZSdzIHRoZSByZWFsIGRlYWwsIHRoZSBhY3R1YWwgZGlyZWN0b3J5IGxvb2t1cCBvcGVyYXRpb24gaXRzZWxmLiBJdCdzIG5vdCBzdGF0aWMsIHNvIGl0J3MgcHJvYmFibHkgYWNjZXNzaWJsZSBmcm9tIGVsc2V3aGVyZSBpbiB0aGUgQURGUyBpbXBsZW1lbnRhdGlvbi5cblxuVGltZSB0byBkaXZlIGluLiBUbyBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgYW5kIHNlZSBleGFjdGx5IGhvdyBgYWRmc19sb29rdXBgIGlzIGltcGxlbWVudGVkLCBJIG5lZWQgdG8gY2hlY2sgdGhlIHNvdXJjZSBjb2RlLiBMZXQncyBoZWFkIG92ZXIgdG8gYGZzL2FkZnMvZGlyLmNgLiBUaGF0IHNob3VsZCBjb250YWluIHRoZSByZWxldmFudCBkZWZpbml0aW9uIGFuZCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGxvb2t1cCBpcyBoYW5kbGVkIGF0IHRoZSBmaWxlIHN5c3RlbSBsZXZlbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM1MCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjE4LjMyNTI4Mzk1OVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxMTIyNjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFkZnNfbG9va3VwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2FkZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2FkZnMvZGlyLmM9NDMzPXN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpcXG5mcy9hZGZzL2Rpci5jOjQzNDphZGZzX2xvb2t1cChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCB1bnNpZ25lZCBpbnQgZmxhZ3MpXFxuZnMvYWRmcy9kaXIuYy00MzUte1xcbi0tXFxuZnMvYWRmcy9kaXIuYz00NTg9Y29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgYWRmc19kaXJfaW5vZGVfb3BlcmF0aW9ucyA9IHtcXG5mcy9hZGZzL2Rpci5jOjQ1OTpcXHQubG9va3VwXFx0XFx0PSBhZGZzX2xvb2t1cCxcXG5mcy9hZGZzL2Rpci5jLTQ2MC1cXHQuc2V0YXR0clxcdD0gYWRmc19zZXRhdHRyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDoxODoxOC40MjY0MTM1MTdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA0NzUzNzI0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQURGUyBGdW5jdGlvbiBWaXNpYmlsaXR5KipcblxuT2theSwgc28gSSdtIG5vdGljaW5nIGBhZGZzX2xvb2t1cGAgaXMgYWxzbyBkZWZpbmVkIHN0YXRpY2FsbHksIHdoaWNoIGlzIHdoYXQgSSBleHBlY3RlZC4gTm93LCBob2xkIG9uLCB3aGF0IGFib3V0IGBhZGZzX2Rpcl9jb3B5ZnJvbWA/IElzIHRoYXQgZnVuY3Rpb24gZXhwb3J0ZWQsIG9yIHNpbXBseSBub3QgZGVjbGFyZWQgc3RhdGljPyBBaCwgeWVzLCBpdCdzIG5vdCBzdGF0aWMuIFJpZ2h0LCB0aGF0IG1ha2VzIG1vcmUgc2Vuc2UuXG5cblRpbWUgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIGFuZCBjaGVjayB0aGUgc291cmNlOiBJJ2xsIGhlYWQgb3ZlciB0byBgZnMvYWRmcy9kaXJfZnBsdXMuY2AgYW5kIHRha2UgYSBsb29rIGZvciBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgZGVmaW5lZCB0aGVyZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3OTEsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDoxODoyMS40NzM5NTQwNDlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDUwNDk5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeaW50IFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9hZGZzL2Rpcl9mcGx1cy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDoxODoyMS41MTg0MTM3MDhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE2NjQwODMwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIElzc3VlcyBpbiBBREZTIERpcmVjdG9yeSBIYW5kbGluZyoqXG5cbk9rYXksIEkgbmVlZCB0byBwaW5wb2ludCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIG9yIGFyZWFzIGZvciBpbXByb3ZlbWVudCB3aXRoaW4gdGhlIEFERlMgZGlyZWN0b3J5IGNvZGUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGBmcy9hZGZzL2Rpci5jYC4gSSBuZWVkIHRvIHJldmlldyB0aGlzIGZpbGUgZm9yIG5vbi1zdGF0aWMgZnVuY3Rpb25zLiBUaGUgcmVhc29uaW5nIGlzIHRoYXQgbm9uLXN0YXRpYyBmdW5jdGlvbnMgYXJlIHBvdGVudGlhbGx5IHZpc2libGUgb3V0c2lkZSBvZiB0aGUgbW9kdWxlIHRoZXkgYXJlIGRlZmluZWQgaW4sIHdoaWNoIGNvdWxkIGxlYWQgdG8gdW5pbnRlbmRlZCBhY2Nlc3MsIG1pc3VzZSwgb3IgZXZlbiBzZWN1cml0eSBpc3N1ZXMgaWYgbm90IGNhcmVmdWxseSBtYW5hZ2VkLiBJIGtub3cgaG93IHRyaWNreSB0aGVzZSBmaWxlIHN5c3RlbSBjb21wb25lbnRzIGNhbiBnZXQuIEkgbmVlZCB0byBlbnN1cmUgdGhleSBhcmUgd2VsbC1zY29wZWQgYW5kIHRoYXQgYW55IGV4cG9ydGVkIGZ1bmN0aW9ucyBhcmUgZXhwbGljaXRseSBkZXNpZ25lZCBmb3IgZXh0ZXJuYWwgdXNlIHdpdGggdGhvcm91Z2ggc2VjdXJpdHkgcmV2aWV3cy4gVGhlcmVmb3JlLCBteSBuZXh0IGFjdGlvbiBpcyB0byBkaXZlIGludG8gdGhhdCBmaWxlIGFuZCBzcGVjaWZpY2FsbHkgbG9vayBmb3IgdGhvc2Ugbm9uLXN0YXRpYyBmdW5jdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcwMzUsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDoxODoyNC42ODQ4MjU2NTlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NDU2MDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16X0EtWjAtOV0rIFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9hZGZzL2Rpci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2FkZnMvZGlyLmMtMTUtICovXFxuZnMvYWRmcy9kaXIuYzoxNjpzdGF0aWMgREVDTEFSRV9SV1NFTShhZGZzX2Rpcl9yd3NlbSk7XFxuZnMvYWRmcy9kaXIuYy0xNy1cXG5mcy9hZGZzL2Rpci5jOjE4OmludCBhZGZzX2Rpcl9jb3B5ZnJvbSh2b2lkICpkc3QsIHN0cnVjdCBhZGZzX2RpciAqZGlyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LFxcbmZzL2FkZnMvZGlyLmMtMTktXFx0XFx0ICAgICAgc2l6ZV90IGxlbilcXG4tLVxcbmZzL2FkZnMvZGlyLmMtNDUtXFxuZnMvYWRmcy9kaXIuYzo0NjppbnQgYWRmc19kaXJfY29weXRvKHN0cnVjdCBhZGZzX2RpciAqZGlyLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBjb25zdCB2b2lkICpzcmMsXFxuZnMvYWRmcy9kaXIuYy00Ny1cXHRcXHQgICAgc2l6ZV90IGxlbilcXG4tLVxcbmZzL2FkZnMvZGlyLmMtNzAtXFxuZnMvYWRmcy9kaXIuYzo3MTpzdGF0aWMgdm9pZCBfX2FkZnNfZGlyX2NsZWFudXAoc3RydWN0IGFkZnNfZGlyICpkaXIpXFxuZnMvYWRmcy9kaXIuYy03Mi17XFxuLS1cXG5mcy9hZGZzL2Rpci5jLTgwLVxcbmZzL2FkZnMvZGlyLmM6ODE6dm9pZCBhZGZzX2Rpcl9yZWxzZShzdHJ1Y3QgYWRmc19kaXIgKmRpcilcXG5mcy9hZGZzL2Rpci5jLTgyLXtcXG4tLVxcbmZzL2FkZnMvZGlyLmMtOTAtXFxuZnMvYWRmcy9kaXIuYzo5MTpzdGF0aWMgdm9pZCBhZGZzX2Rpcl9mb3JnZXQoc3RydWN0IGFkZnNfZGlyICpkaXIpXFxuZnMvYWRmcy9kaXIuYy05Mi17XFxuLS1cXG5mcy9hZGZzL2Rpci5jLTEwMC1cXG5mcy9hZGZzL2Rpci5jOjEwMTppbnQgYWRmc19kaXJfcmVhZF9idWZmZXJzKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBpbmRhZGRyLFxcbmZzL2FkZnMvZGlyLmMtMTAyLVxcdFxcdFxcdCAgdW5zaWduZWQgaW50IHNpemUsIHN0cnVjdCBhZGZzX2RpciAqZGlyKVxcbi0tXFxuZnMvYWRmcy9kaXIuYy0xNDktXFxuZnMvYWRmcy9kaXIuYzoxNTA6c3RhdGljIGludCBhZGZzX2Rpcl9yZWFkKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBpbmRhZGRyLFxcbmZzL2FkZnMvZGlyLmMtMTUxLVxcdFxcdFxcdCB1bnNpZ25lZCBpbnQgc2l6ZSwgc3RydWN0IGFkZnNfZGlyICpkaXIpXFxuLS1cXG5mcy9hZGZzL2Rpci5jLTE1OS1cXG5mcy9hZGZzL2Rpci5jOjE2MDpzdGF0aWMgaW50IGFkZnNfZGlyX3JlYWRfaW5vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGlub2RlICppbm9kZSxcXG5mcy9hZGZzL2Rpci5jLTE2MS1cXHRcXHRcXHQgICAgICAgc3RydWN0IGFkZnNfZGlyICpkaXIpXFxuLS1cXG5mcy9hZGZzL2Rpci5jLTE3OS1cXG5mcy9hZGZzL2Rpci5jOjE4MDpzdGF0aWMgdm9pZCBhZGZzX2Rpcl9tYXJrX2RpcnR5KHN0cnVjdCBhZGZzX2RpciAqZGlyKVxcbmZzL2FkZnMvZGlyLmMtMTgxLXtcXG4tLVxcbmZzL2FkZnMvZGlyLmMtMTg4LVxcbmZzL2FkZnMvZGlyLmM6MTg5OnN0YXRpYyBpbnQgYWRmc19kaXJfc3luYyhzdHJ1Y3QgYWRmc19kaXIgKmRpcilcXG5mcy9hZGZzL2Rpci5jLTE5MC17XFxuLS1cXG5mcy9hZGZzL2Rpci5jLTIwMy1cXG5mcy9hZGZzL2Rpci5jOjIwNDp2b2lkIGFkZnNfb2JqZWN0X2ZpeHVwKHN0cnVjdCBhZGZzX2RpciAqZGlyLCBzdHJ1Y3Qgb2JqZWN0X2luZm8gKm9iailcXG5mcy9hZGZzL2Rpci5jLTIwNS17XFxuLS1cXG5mcy9hZGZzL2Rpci5jLTI0MS1cXG5mcy9hZGZzL2Rpci5jOjI0MjpzdGF0aWMgaW50IGFkZnNfaXRlcmF0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGRpcl9jb250ZXh0ICpjdHgpXFxuZnMvYWRmcy9kaXIuYy0yNDMte1xcbi0tXFxuZnMvYWRmcy9kaXIuYz0yNzk9YWRmc19kaXJfdXBkYXRlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBvYmplY3RfaW5mbyAqb2JqLCBpbnQgd2FpdClcXG4tLVxcbmZzL2FkZnMvZGlyLmMtMzI4LVxcbmZzL2FkZnMvZGlyLmM6MzI5OnN0YXRpYyB1bnNpZ25lZCBjaGFyIGFkZnNfdG9sb3dlcih1bnNpZ25lZCBjaGFyIGMpXFxuZnMvYWRmcy9kaXIuYy0zMzAte1xcbi0tXFxuZnMvYWRmcy9kaXIuYy0zMzUtXFxuZnMvYWRmcy9kaXIuYzozMzY6c3RhdGljIGludCBfX2FkZnNfY29tcGFyZShjb25zdCB1bnNpZ25lZCBjaGFyICpxc3RyLCB1MzIgcWxlbixcXG5mcy9hZGZzL2Rpci5jLTMzNy1cXHRcXHRcXHQgIGNvbnN0IGNoYXIgKnN0ciwgdTMyIGxlbilcXG4tLVxcbmZzL2FkZnMvZGlyLmMtMzUwLVxcbmZzL2FkZnMvZGlyLmM6MzUxOnN0YXRpYyBpbnQgYWRmc19kaXJfbG9va3VwX2J5bmFtZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCBzdHJ1Y3QgcXN0ciAqcXN0cixcXG5mcy9hZGZzL2Rpci5jLTM1Mi1cXHRcXHRcXHRcXHQgIHN0cnVjdCBvYmplY3RfaW5mbyAqb2JqKVxcbi0tXFxuZnMvYWRmcy9kaXIuYy0zOTAtXFxuZnMvYWRmcy9kaXIuYzozOTE6Y29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBhZGZzX2Rpcl9vcGVyYXRpb25zID0ge1xcbmZzL2FkZnMvZGlyLmMtMzkyLVxcdC5yZWFkXFx0XFx0PSBnZW5lcmljX3JlYWRfZGlyLFxcbi0tXFxuZnMvYWRmcy9kaXIuYy0zOTctXFxuZnMvYWRmcy9kaXIuYzozOTg6c3RhdGljIGludFxcbmZzL2FkZnMvZGlyLmMtMzk5LWFkZnNfaGFzaChjb25zdCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHN0cnVjdCBxc3RyICpxc3RyKVxcbi0tXFxuZnMvYWRmcy9kaXIuYy00MjEtICovXFxuZnMvYWRmcy9kaXIuYzo0MjI6c3RhdGljIGludCBhZGZzX2NvbXBhcmUoY29uc3Qgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCB1bnNpZ25lZCBpbnQgbGVuLFxcbmZzL2FkZnMvZGlyLmMtNDIzLVxcdFxcdFxcdGNvbnN0IGNoYXIgKnN0ciwgY29uc3Qgc3RydWN0IHFzdHIgKnFzdHIpXFxuLS1cXG5mcy9hZGZzL2Rpci5jLTQyNy1cXG5mcy9hZGZzL2Rpci5jOjQyODpjb25zdCBzdHJ1Y3QgZGVudHJ5X29wZXJhdGlvbnMgYWRmc19kZW50cnlfb3BlcmF0aW9ucyA9IHtcXG5mcy9hZGZzL2Rpci5jLTQyOS1cXHQuZF9oYXNoXFx0XFx0PSBhZGZzX2hhc2gsXFxuLS1cXG5mcy9hZGZzL2Rpci5jLTQzMi1cXG5mcy9hZGZzL2Rpci5jOjQzMzpzdGF0aWMgc3RydWN0IGRlbnRyeSAqXFxuZnMvYWRmcy9kaXIuYy00MzQtYWRmc19sb29rdXAoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW5zaWduZWQgaW50IGZsYWdzKVxcbi0tXFxuZnMvYWRmcy9kaXIuYy00NTctICovXFxuZnMvYWRmcy9kaXIuYzo0NTg6Y29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgYWRmc19kaXJfaW5vZGVfb3BlcmF0aW9ucyA9IHtcXG5mcy9hZGZzL2Rpci5jLTQ1OS1cXHQubG9va3VwXFx0XFx0PSBhZGZzX2xvb2t1cCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6MTg6MjQuNzI5Mjg2OTM4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxODE5MzkzMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEZ1bmN0aW9uIENhbGxzIGFuZCBJZGVudGlmeWluZyBFbnRyeSBQb2ludHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgcmVsZXZhbnQgZW50cnkgcG9pbnRzLiBJIHNlZSB0aGF0IGBhZGZzX2Rpcl9jb3B5ZnJvbWAsIGBhZGZzX2Rpcl9yZWFkX2J1ZmZlcnNgLCBgYWRmc19vYmplY3RfZml4dXBgLCBhbmQgYGFkZnNfZGlyX3VwZGF0ZWAgYXJlIGFsbCBub24tc3RhdGljIGZ1bmN0aW9ucywgd2hpY2ggbWFrZXMgdGhlbSBwb3RlbnRpYWwgdGFyZ2V0cy4gVGhlIHBhdGNoIG1vZGlmaWVzIGBhZGZzX2Rpcl9jb3B5ZnJvbWAgYW5kIGBhZGZzX2ZwbHVzX2dldG5leHRgLCBhbmQgYGFkZnNfZGlyX2NvcHlmcm9tYCBzZWVtcyBsaWtlIGEgZ29vZCBmb2N1cywgY29uc2lkZXJpbmcgdGhlIGRpcmVjdCBtb2RpZmljYXRpb24uXG5cbkkgaW5pdGlhbGx5IHRob3VnaHQgYGFkZnNfZnBsdXNfZ2V0bmV4dGAgY291bGQgYmUgdXNlZnVsLCBidXQgaXQncyBzdGF0aWMsIHNvIHRoYXQncyBhIGRlYWQgZW5kLiBPa2F5LCBzbyB3aGF0ICpkb2VzKiBjYWxsIGBhZGZzX2ZwbHVzX2dldG5leHRgPyBJdCdzIGNhbGxlZCB0aHJvdWdoIGBvcHMtXHUwMDNlZ2V0bmV4dGAsIGJ1dCB0aGF0IGRvZXNuJ3QgaW1tZWRpYXRlbHkgZ2l2ZSBtZSBlbnRyeSBwb2ludHMuIExvb2tpbmcgYXQgdGhlIGNhbGxlcnMgb2YgdGhhdCBgb3BzLVx1MDAzZWdldG5leHRgIHN0cnVjdHVyZSwgSSBzZWUgYGFkZnNfZGlyX2xvb2t1cF9ieW5hbWVgIGFuZCBgYWRmc19pdGVyYXRlYC4gIFVuZm9ydHVuYXRlbHksIGBhZGZzX2l0ZXJhdGVgIGlzIGFsc28gc3RhdGljLCBzbyBJIGNhbid0IGRpcmVjdGx5IHVzZSBpdC4gVGhpcyBtZWFucyB0aGUgZW50cnkgcG9pbnRzIGNvdWxkIGJlIGBhZGZzX2Rpcl9vcGVyYXRpb25zLml0ZXJhdGVfc2hhcmVkYCAod2hpY2ggaXMgYGFkZnNfaXRlcmF0ZWApIGFuZCBgYWRmc19kaXJfaW5vZGVfb3BlcmF0aW9ucy5sb29rdXBgICh3aGljaCBpcyBgYWRmc19sb29rdXBgKS4gQnV0IGJvdGggYXJlLCBhZ2Fpbiwgc3RhdGljIGZ1bmN0aW9ucy4gSSBtaXNzZWQgYGFkZnNfbG9va3VwYCBpcyBzdGF0aWMhIFNvIHRoYXQgaXMgbm90IGhlbHBmdWwuXG5cbkJ1dCB3YWl0LCBiYWNrIHRvIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucy4gYGFkZnNfZGlyX2NvcHlmcm9tYCAqaXMqIG5vbi1zdGF0aWMhIEFuZCBpdCdzIGRpcmVjdGx5IG1vZGlmaWVkIGJ5IHRoZSBwYXRjaCwgc28gaXQncyBhIGdvb2QgY2hvaWNlLiAgYGFkZnNfZGlyX3JlYWRfYnVmZmVyc2AgaXMgbm9uLXN0YXRpYyB0b28uIEkgc2hvdWxkIGNoZWNrIGBmcy9hZGZzL2Rpci5jYCB0byBiZSBzdXJlIHRoYXQgYGFkZnNfZGlyX2NvcHlmcm9tYCBpcyB0aGUgcmlnaHQgY2hvaWNlLiBZZXMsIHRoZSBtb2RpZmljYXRpb24gaXMgZGlyZWN0bHkgaW4gdGhhdCBmdW5jdGlvbi4gSXQgaXMgYSBnb29kIG9wdGlvbi4gTm93LCB0byBtYWtlIHN1cmUgSSBoYXZlIGFsbCB0aGUgY29udGV4dCBJIG5lZWQsIEknbGwgY2hlY2sgYGZzL2FkZnMvS2NvbmZpZ2AgdG8gaWRlbnRpZnkgdGhlIGNvbmZpZyBuYW1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODA1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjMxLjkxMTIyODU2NFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1OTMyMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFERlNfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvYWRmcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvYWRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZnMvYWRmcy9LY29uZmlnOjI6Y29uZmlnIEFERlNfRlNcXG5mcy9hZGZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiQURGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvYWRmcy9LY29uZmlnLTIyLVxcbmZzL2FkZnMvS2NvbmZpZzoyMzpjb25maWcgQURGU19GU19SV1xcbmZzL2FkZnMvS2NvbmZpZy0yNC1cXHRib29sIFxcXCJBREZTIHdyaXRlIHN1cHBvcnQgKERBTkdFUk9VUylcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjMxLjk1NjgyNjQ0NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjk2ODk5MDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQURGUyBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGUgYEFERlNfRlNgIGNvbmZpZ3VyYXRpb24uIEZpcnN0LCBJJ20gdHJ5aW5nIHRvIHplcm8gaW4gb24gYSBnb29kIGZvY3VzIHN5bWJvbCwgYW5kIEknbSB0aGlua2luZyBgYWRmc19kaXJfY29weWZyb21gIG1pZ2h0IGJlIGEgZ29vZCBjYW5kaWRhdGUuIEl0J3MgYSBub24tc3RhdGljLCBzbyBhbiBleHBvcnRlZCBmdW5jdGlvbiB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEhvbGQgb24sIGlzIGBhZGZzX2Rpcl9jb3B5ZnJvbWAgKmFjdHVhbGx5KiBleHBvcnRlZD8gTGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIGlmIGl0J3MgdmlzaWJsZS4gWWVwLCBJIHNob3VsZCBjaGVjayB0aGUgaGVhZGVyLCBzcGVjaWZpY2FsbHkgYGZzL2FkZnMvYWRmcy5oYC4gQWxyaWdodCwgaXQncyBkZWZpbmVkIHRoZXJlLCBnb29kLiBOb3csIGxldCdzIHNlZSBpZiBgYWRmc19mcGx1c19yZWFkYCBleGlzdHMsIG1pZ2h0IGJlIG9mIHNvbWUgdXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5ODU3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjM1LjY1MzcyNzgwNVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIyNDA1MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWRmc19mcGx1c19yZWFkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2FkZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2FkZnMvZGlyX2ZwbHVzLmM9NzA9c3RhdGljIHU4IGFkZnNfZnBsdXNfY2hlY2tieXRlKHN0cnVjdCBhZGZzX2RpciAqZGlyKVxcbi0tXFxuZnMvYWRmcy9kaXJfZnBsdXMuYy0xMDItXFxuZnMvYWRmcy9kaXJfZnBsdXMuYzoxMDM6c3RhdGljIGludCBhZGZzX2ZwbHVzX3JlYWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGluZGFkZHIsXFxuZnMvYWRmcy9kaXJfZnBsdXMuYy0xMDQtXFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IHNpemUsIHN0cnVjdCBhZGZzX2RpciAqZGlyKVxcbi0tXFxuZnMvYWRmcy9kaXJfZnBsdXMuYz0yODI9Y29uc3Qgc3RydWN0IGFkZnNfZGlyX29wcyBhZGZzX2ZwbHVzX2Rpcl9vcHMgPSB7XFxuZnMvYWRmcy9kaXJfZnBsdXMuYzoyODM6XFx0LnJlYWRcXHRcXHQ9IGFkZnNfZnBsdXNfcmVhZCxcXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTI4NC1cXHQuaXRlcmF0ZVxcdD0gYWRmc19mcGx1c19pdGVyYXRlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDoxODozNS42OTU5NzI0MDRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIyOTE1OTY5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLi4uXG5cbioqQW5hbHl6aW5nIEFERlMgU3RhdGljIERlY2xhcmF0aW9ucyoqXG5cbkFscmlnaHQsIHNvIGBhZGZzX2ZwbHVzX3JlYWRgIGlzIGRlZmluaXRlbHkgc3RhdGljLiBHb3QgaXQuIE5vdywgdGhlIG5leHQgcXVlc3Rpb24gaXMgYWJvdXQgYGFkZnNfZnBsdXNfZGlyX29wc2AuIEl0J3Mgbm90IHN0YXRpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEJ1dCwgaGFuZyBvbiwgaXQncyBhIHN0cnVjdHVyZSBkZWZpbml0aW9uLCBub3QgYSBmdW5jdGlvbi4gU28sIHRoYXQgZG9lc24ndCByZWFsbHkgbWF0dGVyIGluIHRoaXMgY2FzZS4gTGV0J3MgZGlnIGRlZXBlci4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIHNvbWV0aGluZy4gSSdsbCBjaGVjayBgZnMvYWRmcy9kaXJfZnBsdXMuY2AgYW5kIHNwZWNpZmljYWxseSBsb29rIGZvciBmdW5jdGlvbnMgdGhhdCAqYXJlbid0KiBkZWNsYXJlZCBhcyBzdGF0aWMuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQncyBleHBvc2VkIG91dHNpZGUgb2YgdGhlIGZpbGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzkxLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDQ6MTg6MzguOTI1MTM1MjUzWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mzk4NjA2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2Etel9BLVowLTldKyBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvYWRmcy9kaXJfZnBsdXMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9hZGZzL2Rpcl9mcGx1cy5jLTEwLS8qIFJldHVybiB0aGUgYnl0ZSBvZmZzZXQgdG8gZGlyZWN0b3J5IGVudHJ5IHBvcyAqL1xcbmZzL2FkZnMvZGlyX2ZwbHVzLmM6MTE6c3RhdGljIHVuc2lnbmVkIGludCBhZGZzX2ZwbHVzX29mZnNldChjb25zdCBzdHJ1Y3QgYWRmc19iaWdkaXJoZWFkZXIgKmgsXFxuZnMvYWRmcy9kaXJfZnBsdXMuYy0xMi1cXHRcXHRcXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgcG9zKVxcbi0tXFxuZnMvYWRmcy9kaXJfZnBsdXMuYy0xOC1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjE5OnN0YXRpYyBpbnQgYWRmc19mcGx1c192YWxpZGF0ZV9oZWFkZXIoY29uc3Qgc3RydWN0IGFkZnNfYmlnZGlyaGVhZGVyICpoKVxcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjAte1xcbi0tXFxuZnMvYWRmcy9kaXJfZnBsdXMuYy01OC1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjU5OnN0YXRpYyBpbnQgYWRmc19mcGx1c192YWxpZGF0ZV90YWlsKGNvbnN0IHN0cnVjdCBhZGZzX2JpZ2RpcmhlYWRlciAqaCxcXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTYwLVxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgYWRmc19iaWdkaXJ0YWlsICp0KVxcbi0tXFxuZnMvYWRmcy9kaXJfZnBsdXMuYy02OS1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjcwOnN0YXRpYyB1OCBhZGZzX2ZwbHVzX2NoZWNrYnl0ZShzdHJ1Y3QgYWRmc19kaXIgKmRpcilcXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTcxLXtcXG4tLVxcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMTAyLVxcbmZzL2FkZnMvZGlyX2ZwbHVzLmM6MTAzOnN0YXRpYyBpbnQgYWRmc19mcGx1c19yZWFkKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBpbmRhZGRyLFxcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMTA0LVxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBzaXplLCBzdHJ1Y3QgYWRmc19kaXIgKmRpcilcXG4tLVxcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMTU3LVxcbmZzL2FkZnMvZGlyX2ZwbHVzLmM6MTU4OnN0YXRpYyBpbnRcXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTE1OS1hZGZzX2ZwbHVzX3NldHBvcyhzdHJ1Y3QgYWRmc19kaXIgKmRpciwgdW5zaWduZWQgaW50IGZwb3MpXFxuLS1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTE3MC1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjE3MTpzdGF0aWMgaW50XFxuZnMvYWRmcy9kaXJfZnBsdXMuYy0xNzItYWRmc19mcGx1c19nZXRuZXh0KHN0cnVjdCBhZGZzX2RpciAqZGlyLCBzdHJ1Y3Qgb2JqZWN0X2luZm8gKm9iailcXG4tLVxcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjExLVxcbmZzL2FkZnMvZGlyX2ZwbHVzLmM6MjEyOnN0YXRpYyBpbnQgYWRmc19mcGx1c19pdGVyYXRlKHN0cnVjdCBhZGZzX2RpciAqZGlyLCBzdHJ1Y3QgZGlyX2NvbnRleHQgKmN0eClcXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTIxMy17XFxuLS1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTIzMS1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjIzMjpzdGF0aWMgaW50IGFkZnNfZnBsdXNfdXBkYXRlKHN0cnVjdCBhZGZzX2RpciAqZGlyLCBzdHJ1Y3Qgb2JqZWN0X2luZm8gKm9iailcXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTIzMy17XFxuLS1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jLTI2Mi1cXG5mcy9hZGZzL2Rpcl9mcGx1cy5jOjI2MzpzdGF0aWMgaW50IGFkZnNfZnBsdXNfY29tbWl0KHN0cnVjdCBhZGZzX2RpciAqZGlyKVxcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjY0LXtcXG4tLVxcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjgxLVxcbmZzL2FkZnMvZGlyX2ZwbHVzLmM6MjgyOmNvbnN0IHN0cnVjdCBhZGZzX2Rpcl9vcHMgYWRmc19mcGx1c19kaXJfb3BzID0ge1xcbmZzL2FkZnMvZGlyX2ZwbHVzLmMtMjgzLVxcdC5yZWFkXFx0XFx0PSBhZGZzX2ZwbHVzX3JlYWQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjM4Ljk2OTEyNTAxM1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjYxMjY1NjExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBBREZTIERpcmVjdG9yeSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGFsbCB0aGUgZnVuY3Rpb25zIGluIGBmcy9hZGZzL2Rpcl9mcGx1cy5jYCBhcmUgKnN0YXRpYyouIFRoYXQgbWVhbnMsIGludGVybmFsbHksIEknbSBsaW1pdGVkIGluIG15IGZvY3VzLiBJdCBzZWVtcyBsaWtlIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50IGlzIGBhZGZzX2Rpcl9jb3B5ZnJvbWAuIFdhaXQsIGdvb2QhIGBhZGZzX2Rpcl9jb3B5ZnJvbWAgKmlzbid0KiBzdGF0aWMuIFRoYXQncyBwZXJmZWN0OyBpdCBnaXZlcyBtZSBhIGNsZWFyIGVudHJ5IHBvaW50LlxuXG5UaGUgY29yZSBvZiB0aGlzIGZpeCB0YXJnZXRzIGEgYnVnIGluIGBhZGZzX2Rpcl9jb3B5ZnJvbWAuIFNwZWNpZmljYWxseSwgaXQgZGVhbHMgd2l0aCBjb3JyZWN0bHkgaGFuZGxpbmcgZGF0YSBjb3BpZXMgdGhhdCBzcGFuIG11bHRpcGxlIGJ1ZmZlcnMuIFBsdXMsIHRoZXJlJ3MgYSBndWFyZCBpbiBgYWRmc19mcGx1c19nZXRuZXh0YCB0byBwcmV2ZW50IGEgYnVmZmVyIG92ZXJmbG93IGlmIGBvYmotXHUwMDNlbmFtZV9sZW5gIGV4Y2VlZHMgYEFERlNfRlBMVVNfTkFNRV9MRU5gLiBUaGF0J3Mgc21hcnQ7IGJvdW5kcyBjaGVja2luZyBpcyBhbHdheXMgYSBnb29kIHByYWN0aWNlLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjcml0aWNhbGl0eSBvZiBgYWRmc19kaXJfY29weWZyb21gLiBJcyBpdCBhIGhvdC1wYXRoIGZ1bmN0aW9uPyBEaXJlY3RvcnkgcmVhZHMgYXJlIHBhcnQgb2YgQURGUywgYnV0IGdlbmVyYWxseSBBREZTIGl0c2VsZiBpc24ndCBhIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2suIFRoYXQgZG9lc24ndCBtZWFuIGl0J3MgdW5pbXBvcnRhbnQsIGJ1dCBpdCBwdXRzIGl0IGluIHBlcnNwZWN0aXZlLlxuXG5MZXQncyBkbyBhIHF1aWNrIHNjYW4gb2YgYGZzL2FkZnMvZGlyLmNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogbm9uLXN0YXRpYyBmdW5jdGlvbnMgb2YgaW50ZXJlc3Q6IGBhZGZzX2Rpcl9yZWFkX2J1ZmZlcnNgLCBgYWRmc19kaXJfdXBkYXRlYCwgYW5kIGBhZGZzX29iamVjdF9maXh1cGAuIFdvcnRoIG5vdGluZywgYnV0IEknbGwgc3RpY2sgd2l0aCBgYWRmc19kaXJfY29weWZyb21gIGFzIG15IGZvY3VzIHN5bWJvbC5cblxuT2theSwgc28gdGhlIGdpc3Qgb2YgdGhlIHBhdGNoIGlzIGZpeGluZyBhIGJ1ZmZlciBjb3B5IGJ1ZyBpbiBgYWRmc19kaXJfY29weWZyb21gIGFuZCBhZGRpbmcgYSBib3VuZHMgY2hlY2sgaW4gYGFkZnNfZnBsdXNfZ2V0bmV4dGAuIEJvdGggYXJlIGNydWNpYWwgdG8gdGhlIGludGVncml0eSBhbmQgc3RhYmlsaXR5IG9mIHRoZSBkaXJlY3RvcnkgcGFyc2luZyBsb2dpYyB3aXRoaW4gdGhlIEFERlMgZmlsZXN5c3RlbS4gVGhpcyBsb2dpYyBpcyBkaXJlY3RseSBlbmdhZ2VkIGR1cmluZyBtb3VudCBhbmQgcmVhZCBvcGVyYXRpb25zIG9uIGFuIEFERlMgaW1hZ2UuIFRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBgQURGU19GU2AsIHNvIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGlzIGlzIGRlZmluZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNTQ5LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjQ1LjIzMDM5MzAzNFoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYzMzg3NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9hZGZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvYWRmcy9LY29uZmlnPTI9Y29uZmlnIEFERlNfRlNcXG5mcy9hZGZzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiQURGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbmZzL2FkZnMvS2NvbmZpZzo0OlxcdGRlcGVuZHMgb24gQkxPQ0tcXG5mcy9hZGZzL0tjb25maWctNS1cXHRzZWxlY3QgQlVGRkVSX0hFQURcXG4tLVxcbmZzL2FkZnMvS2NvbmZpZz0yMz1jb25maWcgQURGU19GU19SV1xcbmZzL2FkZnMvS2NvbmZpZy0yNC1cXHRib29sIFxcXCJBREZTIHdyaXRlIHN1cHBvcnQgKERBTkdFUk9VUylcXFwiXFxuZnMvYWRmcy9LY29uZmlnOjI1OlxcdGRlcGVuZHMgb24gQURGU19GU1xcbmZzL2FkZnMvS2NvbmZpZy0yNi1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA0OjE4OjQ1LjI3NjczNjcyM1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTU3NDgyOTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBsaWtlIHlvdTpcblxuKipEZXBlbmRlbmN5IEFuYWx5c2lzIGFuZCBGdW5jdGlvbiBDaG9pY2UqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGBBREZTX0ZTYCByZWxpZXMgb24gYEJMT0NLYC4gVGhhdCdzIHN0YW5kYXJkIHN0dWZmLCBzbyB0aGF0J3Mgbm90IHRvbyBzdXJwcmlzaW5nLlxuXG5Ob3csIEkgbmVlZCB0byBwaWNrIGEgZ29vZCBmdW5jdGlvbiB0byBmb2N1cyBvbiBmb3IgZGVlcGVyIGFuYWx5c2lzLiBJJ20gdGhpbmtpbmcgYWJvdXQgYGFkZnNfZGlyX2NvcHlmcm9tYC4gSXMgdGhhdCBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQ/IExldCBtZSB0aGluay4uLiB5ZXMsIHRoYXQgbG9va3MgcHJvbWlzaW5nLiBJdCdzIG5vdCBhIGBzdGF0aWNgIGZ1bmN0aW9uLCBzbyBpdCdzIGxpa2VseSB2aXNpYmxlIGVsc2V3aGVyZSwgYW5kIGl0IGFsc28gZG9lc24ndCBzZWVtIHRvIGJlIGEgcGVyZm9ybWFuY2UtY3JpdGljYWwgZ2VuZXJpYyBob3QgcGF0aCwgd2hpY2ggbWFrZXMgaXQgZWFzaWVyIHRvIHJlYXNvbiBhYm91dC4gQSBnb29kIGNob2ljZSBmb3IgaW52ZXN0aWdhdGluZy5cblxuTm93LCBJJ2xsIGdvIGFoZWFkIGFuZCB1c2UgdGhlIHNldC1yZXN1bHRzIHRvb2wuIEl0J3MgdGhlIHJpZ2h0IGNob2ljZSBmb3IgZ2V0dGluZyBhIGhhbmRsZSBvbiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjUzMSwiT3V0cHV0VG9rZW5zIjoxMTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNDoxODo0OC44MzQyMjI0MzdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Mzc5NTUzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQURGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFkZnNfZGlyX2NvcHlmcm9tXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWZmZXIgY29weSBidWcgaW4gYGFkZnNfZGlyX2NvcHlmcm9tYCB3aGVuIGNvcHlpbmcgYWNyb3NzIG11bHRpcGxlIGJ1ZmZlcnMsIGFuZCBhZGRzIGEgYm91bmRzIGNoZWNrIGZvciBgbmFtZV9sZW5gIGluIGBhZGZzX2ZwbHVzX2dldG5leHRgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBBREZTIGZpbGVzeXN0ZW0gZGlyZWN0b3J5IHBhcnNpbmcgbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSB3aGVuIG1vdW50aW5nIGFuZCByZWFkaW5nIGFuIEFERlMgaW1hZ2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQURGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFkZnNfZGlyX2NvcHlmcm9tXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWZmZXIgY29weSBidWcgaW4gYGFkZnNfZGlyX2NvcHlmcm9tYCB3aGVuIGNvcHlpbmcgYWNyb3NzIG11bHRpcGxlIGJ1ZmZlcnMsIGFuZCBhZGRzIGEgYm91bmRzIGNoZWNrIGZvciBgbmFtZV9sZW5gIGluIGBhZGZzX2ZwbHVzX2dldG5leHRgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBBREZTIGZpbGVzeXN0ZW0gZGlyZWN0b3J5IHBhcnNpbmcgbG9naWMsIHdoaWNoIGlzIHJlYWNoYWJsZSB3aGVuIG1vdW50aW5nIGFuZCByZWFkaW5nIGFuIEFERlMgaW1hZ2UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow9cl8p[1] Phase: Succeeded StartedAt: 2026-08-03 04:18:59 +0000 UTC FinishedAt: 2026-08-03 04:18:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cl8p[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-03 04:18:59 +0000 UTC FinishedAt: 2026-08-03 04:18:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cl8p[2] Phase: Succeeded StartedAt: 2026-08-03 04:18:59 +0000 UTC FinishedAt: 2026-08-03 06:07:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-03 04:18:59 +0000 UTC FinishedAt: 2026-08-03 06:07:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-03 04:18:59 +0000 UTC FinishedAt: 2026-08-03 04:19:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-03 04:18:59 +0000 UTC FinishedAt: 2026-08-03 04:19:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9cl8p/series-workflow9cl8p-convert-artifact-4079868141/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-03 04:19:09 +0000 UTC FinishedAt: 2026-08-03 04:46:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-03 04:19:09 +0000 UTC FinishedAt: 2026-08-03 04:46:41 +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:*54da2d6f-f4a9-4bbe-8f4f-689acfdb3810,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-workflow9cl8p/series-workflow9cl8p-convert-artifact-4079868141/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": "35747cc9-2e55-4166-9349-0c696cc5b70f", "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-workflow9cl8p/series-workflow9cl8p-build-action-1773290211/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-03 04:19:09 +0000 UTC FinishedAt: 2026-08-03 04:46:31 +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:*54da2d6f-f4a9-4bbe-8f4f-689acfdb3810,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-workflow9cl8p/series-workflow9cl8p-convert-artifact-4079868141/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": "35747cc9-2e55-4166-9349-0c696cc5b70f", "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-workflow9cl8p/series-workflow9cl8p-build-action-1773290211/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-03 04:46:41 +0000 UTC FinishedAt: 2026-08-03 04:46:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-03 04:46:41 +0000 UTC FinishedAt: 2026-08-03 04:46:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-03 04:46:41 +0000 UTC FinishedAt: 2026-08-03 04:47:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-03 04:46:41 +0000 UTC FinishedAt: 2026-08-03 04:46:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow9cl8p/series-workflow9cl8p-convert-artifact-1970415688/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-03 04:47:08 +0000 UTC FinishedAt: 2026-08-03 04:49:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-03 04:47:08 +0000 UTC FinishedAt: 2026-08-03 04:49:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*35747cc9-2e55-4166-9349-0c696cc5b70f,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-workflow9cl8p/series-workflow9cl8p-build-action-1773290211/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-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-03 04:49:16 +0000 UTC FinishedAt: 2026-08-03 04:49:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-03 04:49:16 +0000 UTC FinishedAt: 2026-08-03 04:49:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-03 04:49:16 +0000 UTC FinishedAt: 2026-08-03 05:15:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-03 04:49:16 +0000 UTC FinishedAt: 2026-08-03 05:15:36 +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:*54da2d6f-f4a9-4bbe-8f4f-689acfdb3810,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-workflow9cl8p/series-workflow9cl8p-convert-artifact-1970415688/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": "e95fb1c3-2145-4b86-aa13-b0b5e8d02512", "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-workflow9cl8p/series-workflow9cl8p-build-action-4183514356/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-03 04:49:16 +0000 UTC FinishedAt: 2026-08-03 05:15:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*54da2d6f-f4a9-4bbe-8f4f-689acfdb3810,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-workflow9cl8p/series-workflow9cl8p-convert-artifact-1970415688/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": "e95fb1c3-2145-4b86-aa13-b0b5e8d02512", "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-workflow9cl8p/series-workflow9cl8p-build-action-4183514356/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-03 05:15:36 +0000 UTC FinishedAt: 2026-08-03 05:15:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-03 05:15:36 +0000 UTC FinishedAt: 2026-08-03 05:15:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-03 05:15:36 +0000 UTC FinishedAt: 2026-08-03 05:17:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-03 05:15:36 +0000 UTC FinishedAt: 2026-08-03 05:17:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e95fb1c3-2145-4b86-aa13-b0b5e8d02512,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-workflow9cl8p/series-workflow9cl8p-build-action-4183514356/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-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-03 05:17:43 +0000 UTC FinishedAt: 2026-08-03 06:07:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-03 05:17:43 +0000 UTC FinishedAt: 2026-08-03 06:07:08 +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":["adfs_dir_copyfrom"],"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:*35747cc9-2e55-4166-9349-0c696cc5b70f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e95fb1c3-2145-4b86-aa13-b0b5e8d02512,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-workflow9cl8p/series-workflow9cl8p-build-action-1773290211/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-workflow9cl8p/series-workflow9cl8p-build-action-4183514356/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-03 05:17:43 +0000 UTC FinishedAt: 2026-08-03 05:17:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-03 05:17:43 +0000 UTC FinishedAt: 2026-08-03 05:17:48 +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":["adfs_dir_copyfrom"],"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-workflow9cl8p/series-workflow9cl8p-convert-artifact-3789576449/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-03 05:17:43 +0000 UTC FinishedAt: 2026-08-03 05:17:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-03 05:17:43 +0000 UTC FinishedAt: 2026-08-03 05:17:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-03 05:17:43 +0000 UTC FinishedAt: 2026-08-03 05:17:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-03 05:17:53 +0000 UTC FinishedAt: 2026-08-03 06:07:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow9cl8p[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["adfs_dir_copyfrom"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8996fed3e53f53216f36183f6b6539846bc15a67","config_name":"upstream-apparmor-kasan.config","enable_configs":["ADFS_FS"],"series_id":"4f8809c0-225a-4e60-9842-49852cd5c44b","tree_name":"vfs","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/vfs/vfs.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-03 05:17:53 +0000 UTC FinishedAt: 2026-08-03 06:06:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*35747cc9-2e55-4166-9349-0c696cc5b70f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e95fb1c3-2145-4b86-aa13-b0b5e8d02512,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-workflow9cl8p/series-workflow9cl8p-build-action-1773290211/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-workflow9cl8p/series-workflow9cl8p-build-action-4183514356/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-workflow9cl8p/series-workflow9cl8p-convert-artifact-3789576449/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,}