Name: series-workflow4pwn2 Phase: Succeeded StartedAt: 2026-07-01 17:40:19 +0000 UTC FinishedAt: 2026-07-01 22:12:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pwn2[0] Phase: Succeeded StartedAt: 2026-07-01 17:40:19 +0000 UTC FinishedAt: 2026-07-01 18:02:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pwn2[0].run-triage Phase: Succeeded StartedAt: 2026-07-01 17:40:19 +0000 UTC FinishedAt: 2026-07-01 18:02:23 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "a225f8c20712713406ae47024b8df42deacddd4a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PACKET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "a225f8c20712713406ae47024b8df42deacddd4a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PACKET" ], "series_id": "aeaccf80-8f8b-4bac-b869-0ae80d45659c" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "packet_set_ring" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE4OjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BBQ0tFVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhY2tldF9zZXRfcmluZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSBhIGZhbm91dCBob29rIGNvdWxkIGJlIHJlLWFkZGVkIHRvIGEgZGVhZCBkZXZpY2UgaW4gcGFja2V0X3NldF9yaW5nIGJ5IGNoZWNraW5nIGlmIHRoZSBkZXZpY2UgaXMgZGVhZCAoaWZpbmRleCAhPSAtMSkgYmVmb3JlIGNhbGxpbmcgcmVnaXN0ZXJfcHJvdF9ob29rLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQUZfUEFDS0VUIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE4OjAxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTFkMTNlM2M3YTkzMmI0YzgxNDRmZmZhYTcyNDcyNzA0MzJiZTk4M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMTg6MDE6MjkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcbmluZGV4IDhlNmYzYTczNGJhMGJkLi5lNzVkMjkzMjQ3NWFjMCAxMDA2NDRcbi0tLSBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcbkBAIC00NTYxLDcgJiM0Mzs0NTYxLDExIEBAIHN0YXRpYyBpbnQgcGFja2V0X3NldF9yaW5nKHN0cnVjdCBzb2NrICpzaywgdW5pb24gdHBhY2tldF9yZXFfdSAqcmVxX3UsXG4gXG4gXHRzcGluX2xvY2soXHUwMDI2cG8tXHUwMDNlYmluZF9sb2NrKTtcbiBcdFdSSVRFX09OQ0UocG8tXHUwMDNlbnVtLCBudW0pO1xuLVx0aWYgKHdhc19ydW5uaW5nKVxuJiM0MztcdC8qXG4mIzQzO1x0ICogTkVUREVWX1VOUkVHSVNURVIgbWF5IGhhdmUgaW52YWxpZGF0ZWQgdGhlIGJpbmRpbmcgd2hpbGUgYmluZF9sb2NrXG4mIzQzO1x0ICogd2FzIGRyb3BwZWQgYWJvdmUuICBEbyBub3QgcmUtYWRkIGEgZmFub3V0IGhvb2sgdG8gYSBkZWFkIGRldmljZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAod2FzX3J1bm5pbmcgXHUwMDI2XHUwMDI2IFJFQURfT05DRShwby1cdTAwM2VpZmluZGV4KSAhPSAtMSlcbiBcdFx0cmVnaXN0ZXJfcHJvdF9ob29rKHNrKTtcbiBcbiBcdHNwaW5fdW5sb2NrKFx1MDAyNnBvLVx1MDAzZWJpbmRfbG9jayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTg6MDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UEFDS0VUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGFja2V0X3NldF9yaW5nJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIHdoZXJlIGEgZmFub3V0IGhvb2sgY291bGQgYmUgcmUtYWRkZWQgdG8gYSBkZWFkIGRldmljZSBpbiBwYWNrZXRfc2V0X3JpbmcgYnkgY2hlY2tpbmcgaWYgdGhlIGRldmljZSBpcyBkZWFkIChpZmluZGV4ICE9IC0xKSBiZWZvcmUgY2FsbGluZyByZWdpc3Rlcl9wcm90X2hvb2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBBRl9QQUNLRVQgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDUxZDEzZTNjN2E5MzJiNGM4MTQ0ZmZmYWE3MjQ3MjcwNDMyYmU5ODMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxIDE4OjAxOjI5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKaW5kZXggOGU2ZjNhNzM0YmEwYmQuLmU3NWQyOTMyNDc1YWMwIDEwMDY0NAotLS0gYS9uZXQvcGFja2V0L2FmX3BhY2tldC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKQEAgLTQ1NjEsNyAmIzQzOzQ1NjEsMTEgQEAgc3RhdGljIGludCBwYWNrZXRfc2V0X3Jpbmcoc3RydWN0IHNvY2sgKnNrLCB1bmlvbiB0cGFja2V0X3JlcV91ICpyZXFfdSwKIAogCXNwaW5fbG9jaygmYW1wO3BvLSZndDtiaW5kX2xvY2spOwogCVdSSVRFX09OQ0UocG8tJmd0O251bSwgbnVtKTsKLQlpZiAod2FzX3J1bm5pbmcpCiYjNDM7CS8qCiYjNDM7CSAqIE5FVERFVl9VTlJFR0lTVEVSIG1heSBoYXZlIGludmFsaWRhdGVkIHRoZSBiaW5kaW5nIHdoaWxlIGJpbmRfbG9jawomIzQzOwkgKiB3YXMgZHJvcHBlZCBhYm92ZS4gIERvIG5vdCByZS1hZGQgYSBmYW5vdXQgaG9vayB0byBhIGRlYWQgZGV2aWNlLgomIzQzOwkgKi8KJiM0MzsJaWYgKHdhc19ydW5uaW5nICZhbXA7JmFtcDsgUkVBRF9PTkNFKHBvLSZndDtpZmluZGV4KSAhPSAtMSkKIAkJcmVnaXN0ZXJfcHJvdF9ob29rKHNrKTsKIAogCXNwaW5fdW5sb2NrKCZhbXA7cG8tJmd0O2JpbmRfbG9jayk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE4OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4OTAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGFja2V0IFJpbmcgRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3BhY2tldC9hZl9wYWNrZXQuY2AsIHNwZWNpZmljYWxseSB0aGUgYHBhY2tldF9zZXRfcmluZ2AgZnVuY3Rpb24uIFRoZSBjaGFuZ2UgaGVyZSBpcyBwcmV0dHkgY2xlYXI6IGl0JiMzOTtzIGFkZGluZyBhIGNoZWNrIGJlZm9yZSByZS1yZWdpc3RlcmluZyBhIGZhbm91dCBob29rLiAgTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBpcyBhIHNvbGlkLCBmdW5jdGlvbmFsIGJ1ZyBmaXguIEVzc2VudGlhbGx5LCBpdCBhcHBlYXJzIHdlJiMzOTtyZSBwcmV2ZW50aW5nIGEgZmFub3V0IGhvb2sgZnJvbSBiZWluZyBhZGRlZCB0byBhIG5ldHdvcmsgZGV2aWNlIHRoYXQmIzM5O3MgYWxyZWFkeSBnb25lOyBhICYjMzQ7ZGVhZCBkZXZpY2UmIzM0OywgYXMgdGhlIGNvbW1lbnQgcHV0cyBpdC4gVGhlIGtleSBpcyB0aGF0IGBORVRERVZfVU5SRUdJU1RFUmAgbWlnaHQgaGF2ZSBpbnZhbGlkYXRlZCB0aGUgYmluZGluZyB3aGlsZSB0aGUgYGJpbmRfbG9ja2Agd2FzIGRyb3BwZWQsIGFuZCB0aGlzIGNvbmRpdGlvbmFsIGBSRUFEX09OQ0UocG8tJmd0O2lmaW5kZXgpICE9IC0xYCBpcyB0aGUgbmV3IGd1YXJkLiAgRXNzZW50aWFsbHksIGl0JiMzOTtzIG1ha2luZyBzdXJlIHRoZSBkZXZpY2UgaXMgc3RpbGwgdmFsaWQgYmVmb3JlIHRyeWluZyB0byByZWdpc3RlciB0aGUgaG9vay4gVGhpcyBpcyBnb29kIHByYWN0aWNlLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBncmVwIHRoZSBjb2RlIHRvIGRvdWJsZS1jaGVjayBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBgcGFja2V0X3NldF9yaW5nYCBpcyB1c2VkIGFuZCBlbnN1cmUgdGhlcmUgYXJlIG5vIHVuaW50ZW5kZWQgc2lkZSBlZmZlY3RzLiBUaW1lIHRvIGZpcmUgdXAgZ3JlcHBlciBhbmQgZ2V0IGEgYnJvYWRlciB2aWV3IG9mIHRoZSBmdW5jdGlvbiYjMzk7cyBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE4OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BhY2tldF9zZXRfcmluZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9wYWNrZXQvYWZfcGFja2V0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zNi0gKiAgICAgICAgIFVsaXNlcyBBbG9uc28gICAgICAgIDogICAgICAgRnJhbWUgbnVtYmVyIGxpbWl0IHJlbW92YWwgYW5kXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjM3OiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfc2V0X3JpbmcgbWVtb3J5IGxlYWsuXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM4LSAqXHRcdEVyaWMgQmllZGVybWFuXHQ6XHRBbGxvdyBmb3IgXHUwMDNlIDggYnl0ZSBoYXJkd2FyZSBhZGRyZXNzZXMuXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0xNjc9dW5pb24gdHBhY2tldF91aGRyIHtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3My1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTc0OnN0YXRpYyBpbnQgcGFja2V0X3NldF9yaW5nKHN0cnVjdCBzb2NrICpzaywgdW5pb24gdHBhY2tldF9yZXFfdSAqcmVxX3UsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3NS1cdFx0aW50IGNsb3NpbmcsIGludCB0eF9yaW5nKTtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTMxMjI9c3RhdGljIGludCBwYWNrZXRfcmVsZWFzZShzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzE1Ny1cdFx0bWVtc2V0KFx1MDAyNnJlcV91LCAwLCBzaXplb2YocmVxX3UpKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzE1ODpcdFx0cGFja2V0X3NldF9yaW5nKHNrLCBcdTAwMjZyZXFfdSwgMSwgMCk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxNTktXHR9XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTYyLVx0XHRtZW1zZXQoXHUwMDI2cmVxX3UsIDAsIHNpemVvZihyZXFfdSkpO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMTYzOlx0XHRwYWNrZXRfc2V0X3Jpbmcoc2ssIFx1MDAyNnJlcV91LCAxLCAxKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzE2NC1cdH1cbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTM3ODc9cGFja2V0X3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCxcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM4NDQtXHRcdGlmICghcmV0KVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozODQ1Olx0XHRcdHJldCA9IHBhY2tldF9zZXRfcmluZyhzaywgXHUwMDI2cmVxX3UsIDAsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM4NDYtXHRcdFx0XHRcdCAgICAgIG9wdG5hbWUgPT0gUEFDS0VUX1RYX1JJTkcpO1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9NDM5MT1zdGF0aWMgc3RydWN0IHBndiAqYWxsb2NfcGdfdmVjKHN0cnVjdCB0cGFja2V0X3JlcSAqcmVxLCBpbnQgb3JkZXIpXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NDE1LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0NDE2OnN0YXRpYyBpbnQgcGFja2V0X3NldF9yaW5nKHN0cnVjdCBzb2NrICpzaywgdW5pb24gdHBhY2tldF9yZXFfdSAqcmVxX3UsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQ0MTctXHRcdGludCBjbG9zaW5nLCBpbnQgdHhfcmluZylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxODowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDU4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc2ltdWxhdGlvbiBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKlJldmlld2luZyBhIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldCoqCgpBbHJpZ2h0LCB0aGUgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHByb21pc2luZy4gVGhlIGNvcmUgY2hhbmdlLCB0aGUgb25lIEkgd2FudCB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLCBpcyB3aXRoaW4gYHBhY2tldF9zZXRfcmluZ2AuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgYWxyZWFkeSBjb25zaWRlcmVkIGZ1bmN0aW9uYWwgYW5kIHByaW1lZCBmb3IgZnV6emluZyBpcyBhIGdvb2Qgc2lnbi4gVGhhdCBzdWdnZXN0cyBzb21lb25lIGhhcyBhbHJlYWR5IGlkZW50aWZpZWQgdGhpcyBhcyBhIHBvdGVudGlhbCBzb3VyY2Ugb2YgaW50ZXJlc3RpbmcgYmVoYXZpb3IuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIHBhdGguIGBwYWNrZXRfc2V0X3JpbmdgIGlzIGNhbGxlZCBmcm9tIGBwYWNrZXRfc2V0c29ja29wdGAuIE1vcmUgc3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBpbnZva2VkIHdoZW4gYFBBQ0tFVF9UWF9SSU5HYCBvciBgUEFDS0VUX1JYX1JJTkdgIHNvY2tldCBvcHRpb25zIGFyZSB1c2VkLiBUaGlzIGNvbmZpcm1zIHRoYXQgc29ja2V0IG9wdGlvbnMgYXJlIGxpa2VseSB0aGUgaW50ZXJmYWNlIHdlIHdpbGwgYmUgZnV6emluZyBvbi4gVGhlIG92ZXJhbGwgc3Vic3lzdGVtIGNvbmZpZ3VyYXRpb24gaXMgY2xlYXJseSBkZXBlbmRlbnQgb24gdGhlIGBDT05GSUdfUEFDS0VUYCBrZXJuZWwgb3B0aW9uIGZvciBBRl9QQUNLRVQuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIG1vcmUgY2xvc2VseS4gSSBzaG91bGQgdmVyaWZ5IHRoZSBidWlsZCBmbGFncywgZGVwZW5kZW5jaWVzLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IEtjb25maWcgZGlyZWN0aXZlcy4gTGV0JiMzOTtzIGRpZyBpbnRvIGBuZXQvcGFja2V0L0tjb25maWdgIHRvIGNvbmZpcm0gdGhlc2UgYXNzdW1wdGlvbnMgYW5kIGV4cGxvcmUgd2hldGhlciB0aGVyZSBhcmUgYW55IG90aGVyIHBvdGVudGlhbGx5IHJlbGV2YW50IG9wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTg6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBBQ0tFVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9wYWNrZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcGFja2V0L0tjb25maWctNS1cbm5ldC9wYWNrZXQvS2NvbmZpZzo2OmNvbmZpZyBQQUNLRVRcbm5ldC9wYWNrZXQvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7UGFja2V0IHNvY2tldFwmIzM0O1xuLS1cbm5ldC9wYWNrZXQvS2NvbmZpZy0xOC1cbm5ldC9wYWNrZXQvS2NvbmZpZzoxOTpjb25maWcgUEFDS0VUX0RJQUdcbm5ldC9wYWNrZXQvS2NvbmZpZy0yMC1cdHRyaXN0YXRlIFwmIzM0O1BhY2tldDogc29ja2V0cyBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE4OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MzAKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLZXJuZWwgUGFja2V0IENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIG1haW4gY29uZmlndXJhdGlvbiBoZXJlLCBpdCBsb29rcyBsaWtlLCBpcyBgQ09ORklHX1BBQ0tFVGAuIEdvdCBpdC4gVGhlIGtleSBmdW5jdGlvbiB3ZSYjMzk7cmUgZm9jdXNpbmcgb24gaXMgYHBhY2tldF9zZXRfcmluZ2AuCgpSaWdodCwgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHdlIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgb3RoZXIgcG90ZW50aWFsbHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIEFsdGhvdWdoIGBQQUNLRVRgIGlzIHR5cGljYWxseSBlbmFibGVkIGJ5IGRlZmF1bHQsIGl0JiMzOTtzIGFsd2F5cyBhIGdvb2QgcHJhY3RpY2UgdG8gZXhwbGljaXRseSBpbmNsdWRlIGl0IHRvIGJlIHN1cmUuCgpBaCwgdGhlIHBhdGNoIGlzIGNlbnRlcmVkIGFyb3VuZCBgcGFja2V0X3NldF9yaW5nYCBhbmQgYWxzbyBgcmVnaXN0ZXJfcHJvdF9ob29rKHNrKWAuIFRoZSBjb21tZW50Li4uICYjMzQ7RG8gbm90IHJlLWFkZCBhIGZhbm91dCBob29rIHRvIGEgZGVhZCBkZXZpY2UuJiMzNDsgVGhhdCBzdWdnZXN0cyB0aGVyZSYjMzk7cyBhIHJlbGF0ZWQgZmFub3V0IG1lY2hhbmlzbS4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgbGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBpcyBhIHNwZWNpZmljIGNvbmZpZyBmb3IgdGhhdC4uLiBJJiMzOTtsbCBjaGVjayBgbmV0L3BhY2tldC9hZl9wYWNrZXQuY2AgdG8gc2VlIGhvdyB0aGUgYGZhbm91dGAgZnVuY3Rpb25hbGl0eSBpcyBoYW5kbGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE4OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Zhbm91dCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9wYWNrZXQvYWZfcGFja2V0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3BhY2tldC9hZl9wYWNrZXQuYz0yMTY9c3RydWN0IHBhY2tldF9za2JfY2Ige1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjQyLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyNDM6c3RhdGljIHZvaWQgX19mYW5vdXRfdW5saW5rKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHBhY2tldF9zb2NrICpwbyk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI0NDpzdGF0aWMgdm9pZCBfX2Zhbm91dF9saW5rKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHBhY2tldF9zb2NrICpwbyk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI0NS1cbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTMzNj1zdGF0aWMgdm9pZCBfX3JlZ2lzdGVyX3Byb3RfaG9vayhzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zNDAtXHRpZiAoIXBhY2tldF9zb2NrX2ZsYWcocG8sIFBBQ0tFVF9TT0NLX1JVTk5JTkcpKSB7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjM0MTpcdFx0aWYgKHBvLVx1MDAzZWZhbm91dClcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzQyOlx0XHRcdF9fZmFub3V0X2xpbmsoc2ssIHBvKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzQzLVx0XHRlbHNlXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0zNjM9c3RhdGljIHZvaWQgX191bnJlZ2lzdGVyX3Byb3RfaG9vayhzdHJ1Y3Qgc29jayAqc2ssIGJvb2wgc3luYylcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM3MC1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzcxOlx0aWYgKHBvLVx1MDAzZWZhbm91dClcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzcyOlx0XHRfX2Zhbm91dF91bmxpbmsoc2ssIHBvKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzczLVx0ZWxzZVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MTMyNT1zdGF0aWMgdm9pZCBwYWNrZXRfc29ja19kZXN0cnVjdChzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMzM3LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxMzM4OnN0YXRpYyBib29sIGZhbm91dF9mbG93X2lzX2h1Z2Uoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTMzOS17XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMzU3LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxMzU4OnN0YXRpYyB1bnNpZ25lZCBpbnQgZmFub3V0X2RlbXV4X2hhc2goc3RydWN0IHBhY2tldF9mYW5vdXQgKmYsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTEzNTktXHRcdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTM2NC1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTM2NTpzdGF0aWMgdW5zaWduZWQgaW50IGZhbm91dF9kZW11eF9sYihzdHJ1Y3QgcGFja2V0X2Zhbm91dCAqZixcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTM2Ni1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTM3My1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTM3NDpzdGF0aWMgdW5zaWduZWQgaW50IGZhbm91dF9kZW11eF9jcHUoc3RydWN0IHBhY2tldF9mYW5vdXQgKmYsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTEzNzUtXHRcdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMzgwLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxMzgxOnN0YXRpYyB1bnNpZ25lZCBpbnQgZmFub3V0X2RlbXV4X3JuZChzdHJ1Y3QgcGFja2V0X2Zhbm91dCAqZixcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTM4Mi1cdFx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTEzODctXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjEzODg6c3RhdGljIHVuc2lnbmVkIGludCBmYW5vdXRfZGVtdXhfcm9sbG92ZXIoc3RydWN0IHBhY2tldF9mYW5vdXQgKmYsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTEzODktXHRcdFx0XHRcdCAgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0MDAtXHRcdGlmIChyb29tID09IFJPT01fTk9STUFMIHx8XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0MDE6XHRcdCAgICAocm9vbSA9PSBST09NX0xPVyBcdTAwMjZcdTAwMjYgIWZhbm91dF9mbG93X2lzX2h1Z2UocG8sIHNrYikpKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDAyLVx0XHRcdHJldHVybiBpZHg7XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDI3LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNDI4OnN0YXRpYyB1bnNpZ25lZCBpbnQgZmFub3V0X2RlbXV4X3FtKHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDI5LVx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDM0LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNDM1OnN0YXRpYyB1bnNpZ25lZCBpbnQgZmFub3V0X2RlbXV4X2JwZihzdHJ1Y3QgcGFja2V0X2Zhbm91dCAqZixcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQzNi1cdFx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0NTAtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0NTE6c3RhdGljIGJvb2wgZmFub3V0X2hhc19mbGFnKHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmLCB1MTYgZmxhZylcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ1Mi17XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDU1LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNDU2OnN0YXRpYyBpbnQgcGFja2V0X3Jjdl9mYW5vdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ1Ny1cdFx0XHQgICAgIHN0cnVjdCBwYWNrZXRfdHlwZSAqcHQsIHN0cnVjdCBuZXRfZGV2aWNlICpvcmlnX2Rldilcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ1OC17XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0NTk6XHRzdHJ1Y3QgcGFja2V0X2Zhbm91dCAqZiA9IHB0LVx1MDAzZWFmX3BhY2tldF9wcml2O1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDYwLVx0dW5zaWduZWQgaW50IG51bSA9IFJFQURfT05DRShmLVx1MDAzZW51bV9tZW1iZXJzKTtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0NjktXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0NzA6XHRpZiAoZmFub3V0X2hhc19mbGFnKGYsIFBBQ0tFVF9GQU5PVVRfRkxBR19ERUZSQUcpKSB7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0NzEtXHRcdHNrYiA9IGlwX2NoZWNrX2RlZnJhZyhuZXQsIHNrYiwgSVBfREVGUkFHX0FGX1BBQ0tFVCk7XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDc3LVx0ZGVmYXVsdDpcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTQ3ODpcdFx0aWR4ID0gZmFub3V0X2RlbXV4X2hhc2goZiwgc2tiLCBudW0pO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDc5LVx0XHRicmVhaztcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ4MC1cdGNhc2UgUEFDS0VUX0ZBTk9VVF9MQjpcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTQ4MTpcdFx0aWR4ID0gZmFub3V0X2RlbXV4X2xiKGYsIHNrYiwgbnVtKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ4Mi1cdFx0YnJlYWs7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0ODMtXHRjYXNlIFBBQ0tFVF9GQU5PVVRfQ1BVOlxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNDg0Olx0XHRpZHggPSBmYW5vdXRfZGVtdXhfY3B1KGYsIHNrYiwgbnVtKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ4NS1cdFx0YnJlYWs7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0ODYtXHRjYXNlIFBBQ0tFVF9GQU5PVVRfUk5EOlxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNDg3Olx0XHRpZHggPSBmYW5vdXRfZGVtdXhfcm5kKGYsIHNrYiwgbnVtKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ4OC1cdFx0YnJlYWs7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0ODktXHRjYXNlIFBBQ0tFVF9GQU5PVVRfUU06XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0OTA6XHRcdGlkeCA9IGZhbm91dF9kZW11eF9xbShmLCBza2IsIG51bSk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0OTEtXHRcdGJyZWFrO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDkyLVx0Y2FzZSBQQUNLRVRfRkFOT1VUX1JPTExPVkVSOlxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNDkzOlx0XHRpZHggPSBmYW5vdXRfZGVtdXhfcm9sbG92ZXIoZiwgc2tiLCAwLCBmYWxzZSwgbnVtKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ5NC1cdFx0YnJlYWs7XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDk2LVx0Y2FzZSBQQUNLRVRfRkFOT1VUX0VCUEY6XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0OTc6XHRcdGlkeCA9IGZhbm91dF9kZW11eF9icGYoZiwgc2tiLCBudW0pO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDk4LVx0XHRicmVhaztcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1MDAtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE1MDE6XHRpZiAoZmFub3V0X2hhc19mbGFnKGYsIFBBQ0tFVF9GQU5PVVRfRkxBR19ST0xMT1ZFUikpXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE1MDI6XHRcdGlkeCA9IGZhbm91dF9kZW11eF9yb2xsb3ZlcihmLCBza2IsIGlkeCwgdHJ1ZSwgbnVtKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTUwMy1cbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1MDctXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE1MDg6REVGSU5FX01VVEVYKGZhbm91dF9tdXRleCk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE1MDk6RVhQT1JUX1NZTUJPTF9HUEwoZmFub3V0X211dGV4KTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTUxMDpzdGF0aWMgTElTVF9IRUFEKGZhbm91dF9saXN0KTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTUxMTpzdGF0aWMgdTE2IGZhbm91dF9uZXh0X2lkO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTEyLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNTEzOnN0YXRpYyB2b2lkIF9fZmFub3V0X2xpbmsoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTE0LXtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTUxNTpcdHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmID0gcG8tXHUwMDNlZmFub3V0O1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTE2LVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTUyNS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTUyNjpzdGF0aWMgdm9pZCBfX2Zhbm91dF91bmxpbmsoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTI3LXtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTUyODpcdHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmID0gcG8tXHUwMDNlZmFub3V0O1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTI5LVx0aW50IGk7XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTQ2LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNTQ3OnN0YXRpYyBib29sIG1hdGNoX2Zhbm91dF9ncm91cChzdHJ1Y3QgcGFja2V0X3R5cGUgKnB0eXBlLCBzdHJ1Y3Qgc29jayAqc2spXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1NDgte1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTU1MS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTU1MjpcdHJldHVybiBwdHlwZS1cdTAwM2VhZl9wYWNrZXRfcHJpdiA9PSBwa3Rfc2soc2spLVx1MDAzZWZhbm91dDtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTU1My19XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1NTQtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE1NTU6c3RhdGljIHZvaWQgZmFub3V0X2luaXRfZGF0YShzdHJ1Y3QgcGFja2V0X2Zhbm91dCAqZilcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTU1Ni17XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTY3LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNTY4OnN0YXRpYyB2b2lkIF9fZmFub3V0X3NldF9kYXRhX2JwZihzdHJ1Y3QgcGFja2V0X2Zhbm91dCAqZiwgc3RydWN0IGJwZl9wcm9nICpuZXcpXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1Njkte1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTU4Mi1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTU4MzpzdGF0aWMgaW50IGZhbm91dF9zZXRfZGF0YV9jYnBmKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHNvY2twdHJfdCBkYXRhLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTg0LVx0XHRcdFx0dW5zaWduZWQgaW50IGxlbilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MDAtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2MDE6XHRfX2Zhbm91dF9zZXRfZGF0YV9icGYocG8tXHUwMDNlZmFub3V0LCBuZXcpO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjAyLVx0cmV0dXJuIDA7XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjA0LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjA1OnN0YXRpYyBpbnQgZmFub3V0X3NldF9kYXRhX2VicGYoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc29ja3B0cl90IGRhdGEsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MDYtXHRcdFx0XHR1bnNpZ25lZCBpbnQgbGVuKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTYyMS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTYyMjpcdF9fZmFub3V0X3NldF9kYXRhX2JwZihwby1cdTAwM2VmYW5vdXQsIG5ldyk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MjMtXHRyZXR1cm4gMDtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MjUtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2MjY6c3RhdGljIGludCBmYW5vdXRfc2V0X2RhdGEoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc29ja3B0cl90IGRhdGEsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MjctXHRcdFx0ICAgdW5zaWduZWQgaW50IGxlbilcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTYyOC17XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2Mjk6XHRzd2l0Y2ggKHBvLVx1MDAzZWZhbm91dC1cdTAwM2V0eXBlKSB7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MzAtXHRjYXNlIFBBQ0tFVF9GQU5PVVRfQ0JQRjpcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTYzMTpcdFx0cmV0dXJuIGZhbm91dF9zZXRfZGF0YV9jYnBmKHBvLCBkYXRhLCBsZW4pO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjMyLVx0Y2FzZSBQQUNLRVRfRkFOT1VUX0VCUEY6XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2MzM6XHRcdHJldHVybiBmYW5vdXRfc2V0X2RhdGFfZWJwZihwbywgZGF0YSwgbGVuKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTYzNC1cdGRlZmF1bHQ6XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjM4LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjM5OnN0YXRpYyB2b2lkIGZhbm91dF9yZWxlYXNlX2RhdGEoc3RydWN0IHBhY2tldF9mYW5vdXQgKmYpXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2NDAte1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTY0My1cdGNhc2UgUEFDS0VUX0ZBTk9VVF9FQlBGOlxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjQ0Olx0XHRfX2Zhbm91dF9zZXRfZGF0YV9icGYoZiwgTlVMTCk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2NDUtXHR9XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjQ3LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjQ4OnN0YXRpYyBib29sIF9fZmFub3V0X2lkX2lzX2ZyZWUoc3RydWN0IHNvY2sgKnNrLCB1MTYgY2FuZGlkYXRlX2lkKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjQ5LXtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTY1MDpcdHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjUxLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjUyOlx0bGlzdF9mb3JfZWFjaF9lbnRyeShmLCBcdTAwMjZmYW5vdXRfbGlzdCwgbGlzdCkge1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjUzLVx0XHRpZiAoZi1cdTAwM2VpZCA9PSBjYW5kaWRhdGVfaWQgXHUwMDI2XHUwMDI2XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjYwLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjYxOnN0YXRpYyBib29sIGZhbm91dF9maW5kX25ld19pZChzdHJ1Y3Qgc29jayAqc2ssIHUxNiAqbmV3X2lkKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjYyLXtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTY2MzpcdHUxNiBpZCA9IGZhbm91dF9uZXh0X2lkO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjY0LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjY1LVx0ZG8ge1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjY2Olx0XHRpZiAoX19mYW5vdXRfaWRfaXNfZnJlZShzaywgaWQpKSB7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2NjctXHRcdFx0Km5ld19pZCA9IGlkO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjY4Olx0XHRcdGZhbm91dF9uZXh0X2lkID0gaWQgJiM0MzsgMTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTY2OS1cdFx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2NzItXHRcdGlkJiM0MzsmIzQzOztcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTY3MzpcdH0gd2hpbGUgKGlkICE9IGZhbm91dF9uZXh0X2lkKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTY3NC1cbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2NzctXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2Nzg6c3RhdGljIGludCBmYW5vdXRfYWRkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGZhbm91dF9hcmdzICphcmdzKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjc5LXtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2ODItXHR1MTYgdHlwZV9mbGFncyA9IGFyZ3MtXHUwMDNldHlwZV9mbGFncztcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTY4MzpcdHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmLCAqbWF0Y2g7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2ODQtXHR1OCB0eXBlID0gdHlwZV9mbGFncyBcdTAwMjYgMHhmZjtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3MDUtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE3MDY6XHRtdXRleF9sb2NrKFx1MDAyNmZhbm91dF9tdXRleCk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3MDctXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3MDgtXHRlcnIgPSAtRUFMUkVBRFk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE3MDk6XHRpZiAocG8tXHUwMDNlZmFub3V0KVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzEwLVx0XHRnb3RvIG91dDtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3MjctXHRcdH1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTcyODpcdFx0aWYgKCFmYW5vdXRfZmluZF9uZXdfaWQoc2ssIFx1MDAyNmlkKSkge1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzI5LVx0XHRcdGVyciA9IC1FTk9NRU07XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzM2LVx0bWF0Y2ggPSBOVUxMO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNzM3Olx0bGlzdF9mb3JfZWFjaF9lbnRyeShmLCBcdTAwMjZmYW5vdXRfbGlzdCwgbGlzdCkge1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzM4LVx0XHRpZiAoZi1cdTAwM2VpZCA9PSBpZCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3NjctXHRcdHJlZmNvdW50X3NldChcdTAwMjZtYXRjaC1cdTAwM2Vza19yZWYsIDApO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNzY4Olx0XHRmYW5vdXRfaW5pdF9kYXRhKG1hdGNoKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTc2OS1cdFx0bWF0Y2gtXHUwMDNlcHJvdF9ob29rLnR5cGUgPSBwby1cdTAwM2Vwcm90X2hvb2sudHlwZTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTc3MC1cdFx0bWF0Y2gtXHUwMDNlcHJvdF9ob29rLmRldiA9IHBvLVx1MDAzZXByb3RfaG9vay5kZXY7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE3NzE6XHRcdG1hdGNoLVx1MDAzZXByb3RfaG9vay5mdW5jID0gcGFja2V0X3Jjdl9mYW5vdXQ7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3NzItXHRcdG1hdGNoLVx1MDAzZXByb3RfaG9vay5hZl9wYWNrZXRfcHJpdiA9IG1hdGNoO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzczLVx0XHRtYXRjaC1cdTAwM2Vwcm90X2hvb2suYWZfcGFja2V0X25ldCA9IHJlYWRfcG5ldChcdTAwMjZtYXRjaC1cdTAwM2VuZXQpO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNzc0Olx0XHRtYXRjaC1cdTAwM2Vwcm90X2hvb2suaWRfbWF0Y2ggPSBtYXRjaF9mYW5vdXRfZ3JvdXA7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3NzUtXHRcdG1hdGNoLVx1MDAzZW1heF9udW1fbWVtYmVycyA9IGFyZ3MtXHUwMDNlbWF4X251bV9tZW1iZXJzO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzc2LVx0XHRtYXRjaC1cdTAwM2Vwcm90X2hvb2suaWdub3JlX291dGdvaW5nID0gdHlwZV9mbGFncyBcdTAwMjYgUEFDS0VUX0ZBTk9VVF9GTEFHX0lHTk9SRV9PVVRHT0lORztcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTc3NzpcdFx0bGlzdF9hZGQoXHUwMDI2bWF0Y2gtXHUwMDNlbGlzdCwgXHUwMDI2ZmFub3V0X2xpc3QpO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzc4LVx0fVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTc4OC1cdFx0XHQvKiBQYWlyZWQgd2l0aCBwYWNrZXRfc2V0c29ja29wdChQQUNLRVRfRkFOT1VUX0RBVEEpICovXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE3ODk6XHRcdFx0V1JJVEVfT05DRShwby1cdTAwM2VmYW5vdXQsIG1hdGNoKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTc5MC1cbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3OTUtXHRcdFx0XHRfX2Rldl9yZW1vdmVfcGFjayhcdTAwMjZwby1cdTAwM2Vwcm90X2hvb2spO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNzk2Olx0XHRcdFx0X19mYW5vdXRfbGluayhzaywgcG8pO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzk3LVx0XHRcdH1cbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE4MDktXHRrZnJlZShyb2xsb3Zlcik7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE4MTA6XHRtdXRleF91bmxvY2soXHUwMDI2ZmFub3V0X211dGV4KTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTgxMS1cdHJldHVybiBlcnI7XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xODEzLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxODE0Oi8qIElmIHBrdF9zayhzayktXHUwMDNlZmFub3V0LVx1MDAzZXNrX3JlZiBpcyB6ZXJvLCB0aGlzIGZ1bmN0aW9uIHJlbW92ZXNcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTgxNTogKiBwa3Rfc2soc2spLVx1MDAzZWZhbm91dCBmcm9tIGZhbm91dF9saXN0IGFuZCByZXR1cm5zIHBrdF9zayhzayktXHUwMDNlZmFub3V0LlxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxODE2OiAqIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY2FsbGVyIHRvIGNhbGwgZmFub3V0X3JlbGVhc2VfZGF0YSgpIGFuZFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxODE3OiAqIGZyZWUgdGhlIHJldHVybmVkIHBhY2tldF9mYW5vdXQgKGFmdGVyIHN5bmNocm9uaXplX25ldCgpKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xODE4LSAqL1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxODE5OnN0YXRpYyBzdHJ1Y3QgcGFja2V0X2Zhbm91dCAqZmFub3V0X3JlbGVhc2Uoc3RydWN0IHNvY2sgKnNrKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xODIwLXtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTgyMS1cdHN0cnVjdCBwYWNrZXRfc29jayAqcG8gPSBwa3Rfc2soc2spO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxODIyOlx0c3RydWN0IHBhY2tldF9mYW5vdXQgKmY7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE4MjMtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE4MjQ6XHRtdXRleF9sb2NrKFx1MDAyNmZhbm91dF9tdXRleCk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE4MjU6XHRmID0gcG8tXHUwMDNlZmFub3V0O1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xODI2LVx0aWYgKGYpIHtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTgyNzpcdFx0cG8tXHUwMDNlZmFub3V0ID0gTlVMTDtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTgyOC1cbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE4MzMtXHR9XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE4MzQ6XHRtdXRleF91bmxvY2soXHUwMDI2ZmFub3V0X211dGV4KTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTgzNS1cbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTMxMjI9c3RhdGljIGludCBwYWNrZXRfcmVsZWFzZShzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzEyNS1cdHN0cnVjdCBwYWNrZXRfc29jayAqcG87XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjMxMjY6XHRzdHJ1Y3QgcGFja2V0X2Zhbm91dCAqZjtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzEyNy1cdHN0cnVjdCBuZXQgKm5ldDtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxNjYtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjMxNjc6XHRmID0gZmFub3V0X3JlbGVhc2Uoc2spO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTY4LVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzE3Mi1cdGlmIChmKSB7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjMxNzM6XHRcdGZhbm91dF9yZWxlYXNlX2RhdGEoZik7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxNzQtXHRcdGt2ZnJlZShmKTtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTMxOTU9c3RhdGljIGludCBwYWNrZXRfZG9fYmluZChzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IGNoYXIgKm5hbWUsIGludCBpZmluZGV4LFxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzIxMC1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzIxMTpcdGlmIChwby1cdTAwM2VmYW5vdXQpIHtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzIxMi1cdFx0cmV0ID0gLUVJTlZBTDtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTM3ODc9cGFja2V0X3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCxcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM5OTQtXHR7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjM5OTU6XHRcdHN0cnVjdCBmYW5vdXRfYXJncyBhcmdzID0geyAwIH07XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM5OTYtXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00MDAxLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0MDAyOlx0XHRyZXR1cm4gZmFub3V0X2FkZChzaywgXHUwMDI2YXJncyk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQwMDMtXHR9XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00MDA1LVx0e1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0MDA2Olx0XHQvKiBQYWlyZWQgd2l0aCB0aGUgV1JJVEVfT05DRSgpIGluIGZhbm91dF9hZGQoKSAqL1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0MDA3Olx0XHRpZiAoIVJFQURfT05DRShwby1cdTAwM2VmYW5vdXQpKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00MDA4LVx0XHRcdHJldHVybiAtRUlOVkFMO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00MDA5LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0MDEwOlx0XHRyZXR1cm4gZmFub3V0X3NldF9kYXRhKHBvLCBvcHR2YWwsIG9wdGxlbik7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQwMTEtXHR9XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz00MDU5PXN0YXRpYyBpbnQgcGFja2V0X2dldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQxNDgtXHRjYXNlIFBBQ0tFVF9GQU5PVVQ6XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjQxNDk6XHRcdHZhbCA9IChwby1cdTAwM2VmYW5vdXQgP1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0MTUwOlx0XHQgICAgICAgKCh1MzIpcG8tXHUwMDNlZmFub3V0LVx1MDAzZWlkIHxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDE1MTpcdFx0XHQoKHUzMilwby1cdTAwM2VmYW5vdXQtXHUwMDNldHlwZSBcdTAwM2NcdTAwM2MgMTYpIHxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDE1MjpcdFx0XHQoKHUzMilwby1cdTAwM2VmYW5vdXQtXHUwMDNlZmxhZ3MgXHUwMDNjXHUwMDNjIDI0KSkgOlxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00MTUzLVx0XHQgICAgICAgMCk7XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz00NDE2PXN0YXRpYyBpbnQgcGFja2V0X3NldF9yaW5nKHN0cnVjdCBzb2NrICpzaywgdW5pb24gdHBhY2tldF9yZXFfdSAqcmVxX3UsXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NTY1LVx0ICogTkVUREVWX1VOUkVHSVNURVIgbWF5IGhhdmUgaW52YWxpZGF0ZWQgdGhlIGJpbmRpbmcgd2hpbGUgYmluZF9sb2NrXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjQ1NjY6XHQgKiB3YXMgZHJvcHBlZCBhYm92ZS4gIERvIG5vdCByZS1hZGQgYSBmYW5vdXQgaG9vayB0byBhIGRlYWQgZGV2aWNlLlxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NTY3LVx0ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTg6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA0NTEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0ODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCdWcgRml4IGZvciBGYW5vdXQgSG9va3MqKgoKT2theSwgc28gdGhlIGNvbW1lbnQgZXhwbGljaXRseSBzdGF0ZXMgJiMzNDtEbyBub3QgcmUtYWRkIGEgZmFub3V0IGhvb2sgdG8gYSBkZWFkIGRldmljZS4mIzM0OyBUaGUgcGF0Y2gmIzM5O3MgY29yZSBsb2dpYyBpcyB0byBwcmV2ZW50IHRoZSBjYWxsIHRvIGByZWdpc3Rlcl9wcm90X2hvb2soc2spYCB3aGVuIGBSRUFEX09OQ0UocG8tJmd0O2lmaW5kZXgpYCBpcyAtMS4gVGhpcyBzcGVjaWZpY2FsbHkgaGFwcGVucyB3aXRoaW4gYHBhY2tldF9zZXRfcmluZ2AuCgpUaGVyZWZvcmUsIHRoZSBpc3N1ZSBpcyBkaXJlY3RseSByZWxhdGVkIHRvIGBQQUNLRVRfRkFOT1VUYCBhbmQgdGhlIGBwYWNrZXRfc2V0X3JpbmdgIGZ1bmN0aW9uLiBUaGUgY29uZmlndXJhdGlvbiBpbiBxdWVzdGlvbiBoZXJlIGlzIGBQQUNLRVRgLCBidXQgbGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3MuIEFoLCBgZmFub3V0X3NldF9kYXRhX2VicGZgIGlzIHVzZWQgZm9yIGBQQUNLRVRfRkFOT1VUX0VCUEZgLCBidXQgaXQmIzM5O3Mgbm90IHJlbGV2YW50IHRvIHRoaXMgYnVnIGFzIGl0JiMzOTtzIHNwZWNpZmljYWxseSBhYm91dCBgcGFja2V0X3NldF9yaW5nYCBhbmQgYHJlZ2lzdGVyX3Byb3RfaG9va2AsIHJpZ2h0PyBUaGlzIHNob3VsZCBhcHBseSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgZmFub3V0IGlzIGFjdHVhbGx5ICp1c2VkKiBvciBub3QuCgpOb3csIGxldCYjMzk7cyB0cmFjZSB0aGUgZXhlY3V0aW9uOiBgcmVnaXN0ZXJfcHJvdF9ob29rKHNrKWAgY2FsbHMgYF9fcmVnaXN0ZXJfcHJvdF9ob29rKHNrKWAuIExvb2tpbmcgYXQgdGhlIGNvZGU6CgpgYGBjCnN0YXRpYyB2b2lkIF9fcmVnaXN0ZXJfcHJvdF9ob29rKHN0cnVjdCBzb2NrICpzaykKewoJc3RydWN0IHBhY2tldF9zb2NrICpwbyA9IHBrdF9zayhzayk7CgoJaWYgKCFwYWNrZXRfc29ja19mbGFnKHBvLCBQQUNLRVRfU09DS19SVU5OSU5HKSkgewoJCWlmIChwby0mZ3Q7ZmFub3V0KQoJCQlfX2Zhbm91dF9saW5rKHNrLCBwbyk7CgkJZWxzZQoJCQlfX2Rldl9hZGRfcGFjaygmYW1wO3BvLSZndDtwcm90X2hvb2spOwoKCQlzb2NrX2hvbGQoc2spOwoJCXBhY2tldF9zb2NrX2ZsYWdfc2V0KHBvLCBQQUNLRVRfU09DS19SVU5OSU5HLCAxKTsKCX0KfQpgYGAKCklmIGBwby0mZ3Q7aWZpbmRleGAgaXMgLTEsIHRoZSBkZXZpY2UgaXMgZGVhZC4gSWYgYHBvLSZndDtmYW5vdXRgIGlzIHNldCwgaXQgbGlua3MgdG8gdGhlIGZhbm91dCBncm91cC4gSWYgaXQmIzM5O3MgKm5vdCogc2V0LCBpdCBhZGRzIHRoZSBzb2NrZXQgdG8gYGRldl9hZGRfcGFja2AuIEluIGVpdGhlciBjYXNlLCB3aGV0aGVyIGl0JiMzOTtzIGZhbm91dCBvciBub3QsIHRoZSBidWcgaXMgYWJvdXQgKnJlKi1hZGRpbmcgdGhlIHNvY2tldCB0byBhIGRlYWQgZGV2aWNlLCB3aGljaCBpcyBpbmNvcnJlY3QuIFRoZSBjb21tZW50IG1lbnRpb25zICYjMzQ7ZmFub3V0IGhvb2ssJiMzNDsgYnV0IGl0JiMzOTtzIHJlYWxseSB0aGUgYnJvYWRlciBpc3N1ZSBvZiBgcmVnaXN0ZXJfcHJvdF9ob29rYCB0aGF0JiMzOTtzIHRoZSBwcm9ibGVtLgoKQWxyaWdodCwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoZSBgcGFja2V0X3NldF9yaW5nYCBmdW5jdGlvbiBpbiBgbmV0L3BhY2tldC9hZl9wYWNrZXQuY2AgdG8gc2VlIGhvdyB0aGlzIHNpdHVhdGlvbiBjYW4gYXJpc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE4OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3BhY2tldC9hZl9wYWNrZXQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ1NDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDU0MDpcdFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2cmJfcXVldWUtXHUwMDNlbG9jayk7XG40NTQxOlx0XHRcdHN3YXAocmItXHUwMDNlcGdfdmVjLCBwZ192ZWMpO1xuNDU0MjpcdFx0XHRpZiAocG8tXHUwMDNldHBfdmVyc2lvbiBcdTAwM2M9IFRQQUNLRVRfVjIpXG40NTQzOlx0XHRcdFx0c3dhcChyYi1cdTAwM2VyeF9vd25lcl9tYXAsIHJ4X293bmVyX21hcCk7XG40NTQ0Olx0XHRcdHJiLVx1MDAzZWZyYW1lX21heCA9IChyZXEtXHUwMDNldHBfZnJhbWVfbnIgLSAxKTtcbjQ1NDU6XHRcdFx0cmItXHUwMDNlaGVhZCA9IDA7XG40NTQ2Olx0XHRcdHJiLVx1MDAzZWZyYW1lX3NpemUgPSByZXEtXHUwMDNldHBfZnJhbWVfc2l6ZTtcbjQ1NDc6XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cmJfcXVldWUtXHUwMDNlbG9jayk7XG40NTQ4Olx0XG40NTQ5Olx0XHRcdHN3YXAocmItXHUwMDNlcGdfdmVjX29yZGVyLCBvcmRlcik7XG40NTUwOlx0XHRcdHN3YXAocmItXHUwMDNlcGdfdmVjX2xlbiwgcmVxLVx1MDAzZXRwX2Jsb2NrX25yKTtcbjQ1NTE6XHRcbjQ1NTI6XHRcdFx0cmItXHUwMDNlcGdfdmVjX3BhZ2VzID0gcmVxLVx1MDAzZXRwX2Jsb2NrX3NpemUvUEFHRV9TSVpFO1xuNDU1MzpcdFx0XHRwby1cdTAwM2Vwcm90X2hvb2suZnVuYyA9IChwby1cdTAwM2VyeF9yaW5nLnBnX3ZlYykgP1xuNDU1NDpcdFx0XHRcdFx0XHRcdHRwYWNrZXRfcmN2IDogcGFja2V0X3JjdjtcbjQ1NTU6XHRcdFx0c2tiX3F1ZXVlX3B1cmdlKHJiX3F1ZXVlKTtcbjQ1NTY6XHRcdFx0aWYgKGF0b21pY19sb25nX3JlYWQoXHUwMDI2cG8tXHUwMDNlbWFwcGVkKSlcbjQ1NTc6XHRcdFx0XHRwcl9lcnIoXCYjMzQ7cGFja2V0X21tYXA6IHZtYSBpcyBidXN5OiAlbGRcXG5cJiMzNDssXG40NTU4Olx0XHRcdFx0ICAgICAgIGF0b21pY19sb25nX3JlYWQoXHUwMDI2cG8tXHUwMDNlbWFwcGVkKSk7XG40NTU5Olx0XHR9XG40NTYwOlx0XHRtdXRleF91bmxvY2soXHUwMDI2cG8tXHUwMDNlcGdfdmVjX2xvY2spO1xuNDU2MTpcdFxuNDU2MjpcdFx0c3Bpbl9sb2NrKFx1MDAyNnBvLVx1MDAzZWJpbmRfbG9jayk7XG40NTYzOlx0XHRXUklURV9PTkNFKHBvLVx1MDAzZW51bSwgbnVtKTtcbjQ1NjQ6XHRcdC8qXG40NTY1Olx0XHQgKiBORVRERVZfVU5SRUdJU1RFUiBtYXkgaGF2ZSBpbnZhbGlkYXRlZCB0aGUgYmluZGluZyB3aGlsZSBiaW5kX2xvY2tcbjQ1NjY6XHRcdCAqIHdhcyBkcm9wcGVkIGFib3ZlLiAgRG8gbm90IHJlLWFkZCBhIGZhbm91dCBob29rIHRvIGEgZGVhZCBkZXZpY2UuXG40NTY3Olx0XHQgKi9cbjQ1Njg6XHRcdGlmICh3YXNfcnVubmluZyBcdTAwMjZcdTAwMjYgUkVBRF9PTkNFKHBvLVx1MDAzZWlmaW5kZXgpICE9IC0xKVxuNDU2OTpcdFx0XHRyZWdpc3Rlcl9wcm90X2hvb2soc2spO1xuNDU3MDpcdFxuNDU3MTpcdFx0c3Bpbl91bmxvY2soXHUwMDI2cG8tXHUwMDNlYmluZF9sb2NrKTtcbjQ1NzI6XHRcdGlmIChwZ192ZWMgXHUwMDI2XHUwMDI2IChwby1cdTAwM2V0cF92ZXJzaW9uIFx1MDAzZSBUUEFDS0VUX1YyKSkge1xuNDU3MzpcdFx0XHQvKiBCZWNhdXNlIHdlIGRvbiYjMzk7dCBzdXBwb3J0IGJsb2NrLWJhc2VkIFYzIG9uIHR4LXJpbmcgKi9cbjQ1NzQ6XHRcdFx0aWYgKCF0eF9yaW5nKVxuNDU3NTpcdFx0XHRcdHByYl9zaHV0ZG93bl9yZXRpcmVfYmxrX3RpbWVyKHBvLCByYl9xdWV1ZSk7XG40NTc2Olx0XHR9XG40NTc3Olx0XG40NTc4Olx0b3V0X2ZyZWVfcGdfdmVjOlxuNDU3OTpcdFx0aWYgKHBnX3ZlYykge1xuNDU4MDpcdFx0XHRiaXRtYXBfZnJlZShyeF9vd25lcl9tYXApO1xuNDU4MTpcdFx0XHRmcmVlX3BnX3ZlYyhwZ192ZWMsIG9yZGVyLCByZXEtXHUwMDNldHBfYmxvY2tfbnIpO1xuNDU4MjpcdFx0fVxuNDU4MzpcdG91dDpcbjQ1ODQ6XHRcdHJldHVybiBlcnI7XG40NTg1Olx0fVxuNDU4NjpcdFxuNDU4NzpcdHN0YXRpYyBpbnQgcGFja2V0X21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXG40NTg4Olx0XHRcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuNDU4OTpcdHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTg6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzNjUKCQkJCQkJCW91dHB1dDogMTAzCgkJCQkJCQl0aG91Z2h0czogMTQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIFNpZ25pZmljYW5jZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBleGFtaW5lZCB0aGlzIHBhdGNoLCBhbmQgSSYjMzk7bSBjb25maWRlbnQgaXQmIzM5O3MgYWRkcmVzc2luZyBhIGdlbnVpbmUgZnVuY3Rpb25hbCBpc3N1ZS4gVGhlIGtleSBmdW5jdGlvbiB0byBmb2N1cyBvbiBpcyBgcGFja2V0X3NldF9yaW5nYC4gRnJvbSB0aGUgb3V0c2V0LCBJJiMzOTt2ZSBnb3QgYFBBQ0tFVGAgZW5hYmxlZC4KCk15IHF1aWNrIGNoZWNrIGNvbmZpcm1zIHRoYXQgYENPTkZJR19QQUNLRVRgIGlzIGluZGVlZCBzdWZmaWNpZW50IGZvciB0aGlzLiBOb3RoaW5nIGVsc2Ugc2VlbXMgdG8gYmUgcmVxdWlyZWQuCgpUaGVyZWZvcmUsIEkmIzM5O20gZ29pbmcgdG8gZGV0ZXJtaW5lIHRoaXMgcGF0Y2ggaXMgd29ydGggZnV6emluZyBhbmQgd2lsbCByZXR1cm4gdGhlIGZvbGxvd2luZzogYFdvcnRoRnV6emluZzogdHJ1ZWAsIGFsb25nIHdpdGggYEZvY3VzU3ltYm9sc2A6IGBbJiMzNDtwYWNrZXRfc2V0X3JpbmcmIzM0O11gIGFuZCBgRW5hYmxlQ29uZmlnczogWyYjMzQ7UEFDS0VUJiMzNDtdYC4KCk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggcmVjdGlmaWVzIGEgYnVnIHdpdGhpbiB0aGUgY29yZSBBRl9QQUNLRVQgbG9naWMuIFNwZWNpZmljYWxseSwgaXQgcHJldmVudHMgYSBmYW5vdXQgaG9vayBmcm9tIGJlaW5nIHJlLWFkZGVkIHRvIGEgZGV2aWNlIHRoYXQgaXMgYWxyZWFkeSBkZWFkIHdpdGhpbiBgcGFja2V0X3NldF9yaW5nYC4gVGhlIGZpeCBpbnZvbHZlcyBhIGNoZWNrIHRvIGVuc3VyZSB0aGUgZGV2aWNlIGlzIHN0aWxsIHZhbGlkICggYGlmaW5kZXggIT0gLTFgKSBiZWZvcmUgY2FsbGluZyBgcmVnaXN0ZXJfcHJvdF9ob29rYC4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgbmVlZHMgZnVydGhlciBzY3J1dGlueS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTg6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BBQ0tFVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhY2tldF9zZXRfcmluZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSBhIGZhbm91dCBob29rIGNvdWxkIGJlIHJlLWFkZGVkIHRvIGEgZGVhZCBkZXZpY2UgaW4gcGFja2V0X3NldF9yaW5nIGJ5IGNoZWNraW5nIGlmIHRoZSBkZXZpY2UgaXMgZGVhZCAoaWZpbmRleCAhPSAtMSkgYmVmb3JlIGNhbGxpbmcgcmVnaXN0ZXJfcHJvdF9ob29rLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQUZfUEFDS0VUIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQQUNLRVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwYWNrZXRfc2V0X3JpbmcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgYSBmYW5vdXQgaG9vayBjb3VsZCBiZSByZS1hZGRlZCB0byBhIGRlYWQgZGV2aWNlIGluIHBhY2tldF9zZXRfcmluZyBieSBjaGVja2luZyBpZiB0aGUgZGV2aWNlIGlzIGRlYWQgKGlmaW5kZXggIT0gLTEpIGJlZm9yZSBjYWxsaW5nIHJlZ2lzdGVyX3Byb3RfaG9vay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEFGX1BBQ0tFVCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE4OjAxOjMwLjc4MjE4ODM1NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NDc2Njk5MDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBBQ0tFVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBhY2tldF9zZXRfcmluZ1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIHdoZXJlIGEgZmFub3V0IGhvb2sgY291bGQgYmUgcmUtYWRkZWQgdG8gYSBkZWFkIGRldmljZSBpbiBwYWNrZXRfc2V0X3JpbmcgYnkgY2hlY2tpbmcgaWYgdGhlIGRldmljZSBpcyBkZWFkIChpZmluZGV4ICE9IC0xKSBiZWZvcmUgY2FsbGluZyByZWdpc3Rlcl9wcm90X2hvb2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBBRl9QQUNLRVQgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE4OjAxOjMwLjc4MjIwMDQzNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMzNDM2OTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTFkMTNlM2M3YTkzMmI0YzgxNDRmZmZhYTcyNDcyNzA0MzJiZTk4M1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxIDE4OjAxOjI5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmMgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jXFxuaW5kZXggOGU2ZjNhNzM0YmEwYmQuLmU3NWQyOTMyNDc1YWMwIDEwMDY0NFxcbi0tLSBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcXG4rKysgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jXFxuQEAgLTQ1NjEsNyArNDU2MSwxMSBAQCBzdGF0aWMgaW50IHBhY2tldF9zZXRfcmluZyhzdHJ1Y3Qgc29jayAqc2ssIHVuaW9uIHRwYWNrZXRfcmVxX3UgKnJlcV91LFxcbiBcXG4gXFx0c3Bpbl9sb2NrKFxcdTAwMjZwby1cXHUwMDNlYmluZF9sb2NrKTtcXG4gXFx0V1JJVEVfT05DRShwby1cXHUwMDNlbnVtLCBudW0pO1xcbi1cXHRpZiAod2FzX3J1bm5pbmcpXFxuK1xcdC8qXFxuK1xcdCAqIE5FVERFVl9VTlJFR0lTVEVSIG1heSBoYXZlIGludmFsaWRhdGVkIHRoZSBiaW5kaW5nIHdoaWxlIGJpbmRfbG9ja1xcbitcXHQgKiB3YXMgZHJvcHBlZCBhYm92ZS4gIERvIG5vdCByZS1hZGQgYSBmYW5vdXQgaG9vayB0byBhIGRlYWQgZGV2aWNlLlxcbitcXHQgKi9cXG4rXFx0aWYgKHdhc19ydW5uaW5nIFxcdTAwMjZcXHUwMDI2IFJFQURfT05DRShwby1cXHUwMDNlaWZpbmRleCkgIT0gLTEpXFxuIFxcdFxcdHJlZ2lzdGVyX3Byb3RfaG9vayhzayk7XFxuIFxcbiBcXHRzcGluX3VubG9jayhcXHUwMDI2cG8tXFx1MDAzZWJpbmRfbG9jayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE4OjAxOjMxLjQxNjc1NTA3M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg4NDIxMDYyNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUEFDS0VUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGFja2V0X3NldF9yaW5nXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgYSBmYW5vdXQgaG9vayBjb3VsZCBiZSByZS1hZGRlZCB0byBhIGRlYWQgZGV2aWNlIGluIHBhY2tldF9zZXRfcmluZyBieSBjaGVja2luZyBpZiB0aGUgZGV2aWNlIGlzIGRlYWQgKGlmaW5kZXggIT0gLTEpIGJlZm9yZSBjYWxsaW5nIHJlZ2lzdGVyX3Byb3RfaG9vay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEFGX1BBQ0tFVCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1MWQxM2UzYzdhOTMyYjRjODE0NGZmZmFhNzI0NzI3MDQzMmJlOTgzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAxODowMToyOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmMgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jXG5pbmRleCA4ZTZmM2E3MzRiYTBiZC4uZTc1ZDI5MzI0NzVhYzAgMTAwNjQ0XG4tLS0gYS9uZXQvcGFja2V0L2FmX3BhY2tldC5jXG4rKysgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jXG5AQCAtNDU2MSw3ICs0NTYxLDExIEBAIHN0YXRpYyBpbnQgcGFja2V0X3NldF9yaW5nKHN0cnVjdCBzb2NrICpzaywgdW5pb24gdHBhY2tldF9yZXFfdSAqcmVxX3UsXG4gXG4gXHRzcGluX2xvY2soXHUwMDI2cG8tXHUwMDNlYmluZF9sb2NrKTtcbiBcdFdSSVRFX09OQ0UocG8tXHUwMDNlbnVtLCBudW0pO1xuLVx0aWYgKHdhc19ydW5uaW5nKVxuK1x0LypcbitcdCAqIE5FVERFVl9VTlJFR0lTVEVSIG1heSBoYXZlIGludmFsaWRhdGVkIHRoZSBiaW5kaW5nIHdoaWxlIGJpbmRfbG9ja1xuK1x0ICogd2FzIGRyb3BwZWQgYWJvdmUuICBEbyBub3QgcmUtYWRkIGEgZmFub3V0IGhvb2sgdG8gYSBkZWFkIGRldmljZS5cbitcdCAqL1xuK1x0aWYgKHdhc19ydW5uaW5nIFx1MDAyNlx1MDAyNiBSRUFEX09OQ0UocG8tXHUwMDNlaWZpbmRleCkgIT0gLTEpXG4gXHRcdHJlZ2lzdGVyX3Byb3RfaG9vayhzayk7XG4gXG4gXHRzcGluX3VubG9jayhcdTAwMjZwby1cdTAwM2ViaW5kX2xvY2spO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTg6MDE6MzEuNDE2NzU4NzkzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY5MTEwMDUzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYWNrZXQgUmluZyBGaXgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3BhY2tldC9hZl9wYWNrZXQuY2AsIHNwZWNpZmljYWxseSB0aGUgYHBhY2tldF9zZXRfcmluZ2AgZnVuY3Rpb24uIFRoZSBjaGFuZ2UgaGVyZSBpcyBwcmV0dHkgY2xlYXI6IGl0J3MgYWRkaW5nIGEgY2hlY2sgYmVmb3JlIHJlLXJlZ2lzdGVyaW5nIGEgZmFub3V0IGhvb2suICBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGlzIGlzIGEgc29saWQsIGZ1bmN0aW9uYWwgYnVnIGZpeC4gRXNzZW50aWFsbHksIGl0IGFwcGVhcnMgd2UncmUgcHJldmVudGluZyBhIGZhbm91dCBob29rIGZyb20gYmVpbmcgYWRkZWQgdG8gYSBuZXR3b3JrIGRldmljZSB0aGF0J3MgYWxyZWFkeSBnb25lOyBhIFwiZGVhZCBkZXZpY2VcIiwgYXMgdGhlIGNvbW1lbnQgcHV0cyBpdC4gVGhlIGtleSBpcyB0aGF0IGBORVRERVZfVU5SRUdJU1RFUmAgbWlnaHQgaGF2ZSBpbnZhbGlkYXRlZCB0aGUgYmluZGluZyB3aGlsZSB0aGUgYGJpbmRfbG9ja2Agd2FzIGRyb3BwZWQsIGFuZCB0aGlzIGNvbmRpdGlvbmFsIGBSRUFEX09OQ0UocG8tXHUwMDNlaWZpbmRleCkgIT0gLTFgIGlzIHRoZSBuZXcgZ3VhcmQuICBFc3NlbnRpYWxseSwgaXQncyBtYWtpbmcgc3VyZSB0aGUgZGV2aWNlIGlzIHN0aWxsIHZhbGlkIGJlZm9yZSB0cnlpbmcgdG8gcmVnaXN0ZXIgdGhlIGhvb2suIFRoaXMgaXMgZ29vZCBwcmFjdGljZS5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEknbSBnb2luZyB0byBxdWlja2x5IGdyZXAgdGhlIGNvZGUgdG8gZG91YmxlLWNoZWNrIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IGBwYWNrZXRfc2V0X3JpbmdgIGlzIHVzZWQgYW5kIGVuc3VyZSB0aGVyZSBhcmUgbm8gdW5pbnRlbmRlZCBzaWRlIGVmZmVjdHMuIFRpbWUgdG8gZmlyZSB1cCBncmVwcGVyIGFuZCBnZXQgYSBicm9hZGVyIHZpZXcgb2YgdGhlIGZ1bmN0aW9uJ3MgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg5MCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE4OjAxOjM2LjEwNzg2MjgwNloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDE2MzQ3NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGFja2V0X3NldF9yaW5nXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9wYWNrZXQvYWZfcGFja2V0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zNi0gKiAgICAgICAgIFVsaXNlcyBBbG9uc28gICAgICAgIDogICAgICAgRnJhbWUgbnVtYmVyIGxpbWl0IHJlbW92YWwgYW5kXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozNzogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3NldF9yaW5nIG1lbW9yeSBsZWFrLlxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzgtICpcXHRcXHRFcmljIEJpZWRlcm1hblxcdDpcXHRBbGxvdyBmb3IgXFx1MDAzZSA4IGJ5dGUgaGFyZHdhcmUgYWRkcmVzc2VzLlxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0xNjc9dW5pb24gdHBhY2tldF91aGRyIHtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTczLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTc0OnN0YXRpYyBpbnQgcGFja2V0X3NldF9yaW5nKHN0cnVjdCBzb2NrICpzaywgdW5pb24gdHBhY2tldF9yZXFfdSAqcmVxX3UsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzUtXFx0XFx0aW50IGNsb3NpbmcsIGludCB0eF9yaW5nKTtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MzEyMj1zdGF0aWMgaW50IHBhY2tldF9yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxNTctXFx0XFx0bWVtc2V0KFxcdTAwMjZyZXFfdSwgMCwgc2l6ZW9mKHJlcV91KSk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMTU4OlxcdFxcdHBhY2tldF9zZXRfcmluZyhzaywgXFx1MDAyNnJlcV91LCAxLCAwKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxNTktXFx0fVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTYyLVxcdFxcdG1lbXNldChcXHUwMDI2cmVxX3UsIDAsIHNpemVvZihyZXFfdSkpO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzE2MzpcXHRcXHRwYWNrZXRfc2V0X3Jpbmcoc2ssIFxcdTAwMjZyZXFfdSwgMSwgMSk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTY0LVxcdH1cXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9Mzc4Nz1wYWNrZXRfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLCBzb2NrcHRyX3Qgb3B0dmFsLFxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zODQ0LVxcdFxcdGlmICghcmV0KVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6Mzg0NTpcXHRcXHRcXHRyZXQgPSBwYWNrZXRfc2V0X3Jpbmcoc2ssIFxcdTAwMjZyZXFfdSwgMCxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM4NDYtXFx0XFx0XFx0XFx0XFx0ICAgICAgb3B0bmFtZSA9PSBQQUNLRVRfVFhfUklORyk7XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTQzOTE9c3RhdGljIHN0cnVjdCBwZ3YgKmFsbG9jX3BnX3ZlYyhzdHJ1Y3QgdHBhY2tldF9yZXEgKnJlcSwgaW50IG9yZGVyKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NDE1LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDQxNjpzdGF0aWMgaW50IHBhY2tldF9zZXRfcmluZyhzdHJ1Y3Qgc29jayAqc2ssIHVuaW9uIHRwYWNrZXRfcmVxX3UgKnJlcV91LFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDQxNy1cXHRcXHRpbnQgY2xvc2luZywgaW50IHR4X3JpbmcpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE4OjAxOjM2LjcwOTUxMjY4N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4OTMxNDc2MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzaW11bGF0aW9uIG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipSZXZpZXdpbmcgYSBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXQqKlxuXG5BbHJpZ2h0LCB0aGUgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHByb21pc2luZy4gVGhlIGNvcmUgY2hhbmdlLCB0aGUgb25lIEkgd2FudCB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLCBpcyB3aXRoaW4gYHBhY2tldF9zZXRfcmluZ2AuIFRoZSBmYWN0IHRoYXQgaXQncyBhbHJlYWR5IGNvbnNpZGVyZWQgZnVuY3Rpb25hbCBhbmQgcHJpbWVkIGZvciBmdXp6aW5nIGlzIGEgZ29vZCBzaWduLiBUaGF0IHN1Z2dlc3RzIHNvbWVvbmUgaGFzIGFscmVhZHkgaWRlbnRpZmllZCB0aGlzIGFzIGEgcG90ZW50aWFsIHNvdXJjZSBvZiBpbnRlcmVzdGluZyBiZWhhdmlvci5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBwYXRoLiBgcGFja2V0X3NldF9yaW5nYCBpcyBjYWxsZWQgZnJvbSBgcGFja2V0X3NldHNvY2tvcHRgLiBNb3JlIHNwZWNpZmljYWxseSwgaXQncyBpbnZva2VkIHdoZW4gYFBBQ0tFVF9UWF9SSU5HYCBvciBgUEFDS0VUX1JYX1JJTkdgIHNvY2tldCBvcHRpb25zIGFyZSB1c2VkLiBUaGlzIGNvbmZpcm1zIHRoYXQgc29ja2V0IG9wdGlvbnMgYXJlIGxpa2VseSB0aGUgaW50ZXJmYWNlIHdlIHdpbGwgYmUgZnV6emluZyBvbi4gVGhlIG92ZXJhbGwgc3Vic3lzdGVtIGNvbmZpZ3VyYXRpb24gaXMgY2xlYXJseSBkZXBlbmRlbnQgb24gdGhlIGBDT05GSUdfUEFDS0VUYCBrZXJuZWwgb3B0aW9uIGZvciBBRl9QQUNLRVQuXG5cbk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgbW9yZSBjbG9zZWx5LiBJIHNob3VsZCB2ZXJpZnkgdGhlIGJ1aWxkIGZsYWdzLCBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgb3RoZXIgcmVsZXZhbnQgS2NvbmZpZyBkaXJlY3RpdmVzLiBMZXQncyBkaWcgaW50byBgbmV0L3BhY2tldC9LY29uZmlnYCB0byBjb25maXJtIHRoZXNlIGFzc3VtcHRpb25zIGFuZCBleHBsb3JlIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDU4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTg6MDE6NDAuNjAyNjY0ODQ4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MDc5Mzc5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUEFDS0VUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9wYWNrZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvcGFja2V0L0tjb25maWctNS1cXG5uZXQvcGFja2V0L0tjb25maWc6Njpjb25maWcgUEFDS0VUXFxubmV0L3BhY2tldC9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIlBhY2tldCBzb2NrZXRcXFwiXFxuLS1cXG5uZXQvcGFja2V0L0tjb25maWctMTgtXFxubmV0L3BhY2tldC9LY29uZmlnOjE5OmNvbmZpZyBQQUNLRVRfRElBR1xcbm5ldC9wYWNrZXQvS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiUGFja2V0OiBzb2NrZXRzIG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxODowMTo0MC44NDM0Njg5NDRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODA1NzgyMDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS2VybmVsIFBhY2tldCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIG1haW4gY29uZmlndXJhdGlvbiBoZXJlLCBpdCBsb29rcyBsaWtlLCBpcyBgQ09ORklHX1BBQ0tFVGAuIEdvdCBpdC4gVGhlIGtleSBmdW5jdGlvbiB3ZSdyZSBmb2N1c2luZyBvbiBpcyBgcGFja2V0X3NldF9yaW5nYC5cblxuUmlnaHQsIGxldCdzIGp1c3QgbWFrZSBzdXJlIHdlIGhhdmVuJ3QgbWlzc2VkIGFueSBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gQWx0aG91Z2ggYFBBQ0tFVGAgaXMgdHlwaWNhbGx5IGVuYWJsZWQgYnkgZGVmYXVsdCwgaXQncyBhbHdheXMgYSBnb29kIHByYWN0aWNlIHRvIGV4cGxpY2l0bHkgaW5jbHVkZSBpdCB0byBiZSBzdXJlLlxuXG5BaCwgdGhlIHBhdGNoIGlzIGNlbnRlcmVkIGFyb3VuZCBgcGFja2V0X3NldF9yaW5nYCBhbmQgYWxzbyBgcmVnaXN0ZXJfcHJvdF9ob29rKHNrKWAuIFRoZSBjb21tZW50Li4uIFwiRG8gbm90IHJlLWFkZCBhIGZhbm91dCBob29rIHRvIGEgZGVhZCBkZXZpY2UuXCIgVGhhdCBzdWdnZXN0cyB0aGVyZSdzIGEgcmVsYXRlZCBmYW5vdXQgbWVjaGFuaXNtLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGxldCdzIHNlZSBpZiB0aGVyZSBpcyBhIHNwZWNpZmljIGNvbmZpZyBmb3IgdGhhdC4uLiBJJ2xsIGNoZWNrIGBuZXQvcGFja2V0L2FmX3BhY2tldC5jYCB0byBzZWUgaG93IHRoZSBgZmFub3V0YCBmdW5jdGlvbmFsaXR5IGlzIGhhbmRsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MzAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTg6MDE6NDQuNjQ5MjU0NjYzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyOTk3Mjk2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmYW5vdXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3BhY2tldC9hZl9wYWNrZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvcGFja2V0L2FmX3BhY2tldC5jPTIxNj1zdHJ1Y3QgcGFja2V0X3NrYl9jYiB7XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI0Mi1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI0MzpzdGF0aWMgdm9pZCBfX2Zhbm91dF91bmxpbmsoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI0NDpzdGF0aWMgdm9pZCBfX2Zhbm91dF9saW5rKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHBhY2tldF9zb2NrICpwbyk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNDUtXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTMzNj1zdGF0aWMgdm9pZCBfX3JlZ2lzdGVyX3Byb3RfaG9vayhzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM0MC1cXHRpZiAoIXBhY2tldF9zb2NrX2ZsYWcocG8sIFBBQ0tFVF9TT0NLX1JVTk5JTkcpKSB7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozNDE6XFx0XFx0aWYgKHBvLVxcdTAwM2VmYW5vdXQpXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozNDI6XFx0XFx0XFx0X19mYW5vdXRfbGluayhzaywgcG8pO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzQzLVxcdFxcdGVsc2VcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MzYzPXN0YXRpYyB2b2lkIF9fdW5yZWdpc3Rlcl9wcm90X2hvb2soc3RydWN0IHNvY2sgKnNrLCBib29sIHN5bmMpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM3MC1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjM3MTpcXHRpZiAocG8tXFx1MDAzZWZhbm91dClcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjM3MjpcXHRcXHRfX2Zhbm91dF91bmxpbmsoc2ssIHBvKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM3My1cXHRlbHNlXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTEzMjU9c3RhdGljIHZvaWQgcGFja2V0X3NvY2tfZGVzdHJ1Y3Qoc3RydWN0IHNvY2sgKnNrKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMzM3LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTMzODpzdGF0aWMgYm9vbCBmYW5vdXRfZmxvd19pc19odWdlKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMzM5LXtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTM1Ny1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjEzNTg6c3RhdGljIHVuc2lnbmVkIGludCBmYW5vdXRfZGVtdXhfaGFzaChzdHJ1Y3QgcGFja2V0X2Zhbm91dCAqZixcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTEzNTktXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTM2NC1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjEzNjU6c3RhdGljIHVuc2lnbmVkIGludCBmYW5vdXRfZGVtdXhfbGIoc3RydWN0IHBhY2tldF9mYW5vdXQgKmYsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMzY2LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMzczLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTM3NDpzdGF0aWMgdW5zaWduZWQgaW50IGZhbm91dF9kZW11eF9jcHUoc3RydWN0IHBhY2tldF9mYW5vdXQgKmYsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMzc1LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTM4MC1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjEzODE6c3RhdGljIHVuc2lnbmVkIGludCBmYW5vdXRfZGVtdXhfcm5kKHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTM4Mi1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTEzODctXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxMzg4OnN0YXRpYyB1bnNpZ25lZCBpbnQgZmFub3V0X2RlbXV4X3JvbGxvdmVyKHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTM4OS1cXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0MDAtXFx0XFx0aWYgKHJvb20gPT0gUk9PTV9OT1JNQUwgfHxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0MDE6XFx0XFx0ICAgIChyb29tID09IFJPT01fTE9XIFxcdTAwMjZcXHUwMDI2ICFmYW5vdXRfZmxvd19pc19odWdlKHBvLCBza2IpKSlcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0MDItXFx0XFx0XFx0cmV0dXJuIGlkeDtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQyNy1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0Mjg6c3RhdGljIHVuc2lnbmVkIGludCBmYW5vdXRfZGVtdXhfcW0oc3RydWN0IHBhY2tldF9mYW5vdXQgKmYsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDI5LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDM0LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTQzNTpzdGF0aWMgdW5zaWduZWQgaW50IGZhbm91dF9kZW11eF9icGYoc3RydWN0IHBhY2tldF9mYW5vdXQgKmYsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDM2LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ1MC1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0NTE6c3RhdGljIGJvb2wgZmFub3V0X2hhc19mbGFnKHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmLCB1MTYgZmxhZylcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0NTIte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDU1LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTQ1NjpzdGF0aWMgaW50IHBhY2tldF9yY3ZfZmFub3V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDU3LVxcdFxcdFxcdCAgICAgc3RydWN0IHBhY2tldF90eXBlICpwdCwgc3RydWN0IG5ldF9kZXZpY2UgKm9yaWdfZGV2KVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ1OC17XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNDU5OlxcdHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmID0gcHQtXFx1MDAzZWFmX3BhY2tldF9wcml2O1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ2MC1cXHR1bnNpZ25lZCBpbnQgbnVtID0gUkVBRF9PTkNFKGYtXFx1MDAzZW51bV9tZW1iZXJzKTtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ2OS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0NzA6XFx0aWYgKGZhbm91dF9oYXNfZmxhZyhmLCBQQUNLRVRfRkFOT1VUX0ZMQUdfREVGUkFHKSkge1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ3MS1cXHRcXHRza2IgPSBpcF9jaGVja19kZWZyYWcobmV0LCBza2IsIElQX0RFRlJBR19BRl9QQUNLRVQpO1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDc3LVxcdGRlZmF1bHQ6XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNDc4OlxcdFxcdGlkeCA9IGZhbm91dF9kZW11eF9oYXNoKGYsIHNrYiwgbnVtKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0NzktXFx0XFx0YnJlYWs7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDgwLVxcdGNhc2UgUEFDS0VUX0ZBTk9VVF9MQjpcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0ODE6XFx0XFx0aWR4ID0gZmFub3V0X2RlbXV4X2xiKGYsIHNrYiwgbnVtKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0ODItXFx0XFx0YnJlYWs7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDgzLVxcdGNhc2UgUEFDS0VUX0ZBTk9VVF9DUFU6XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNDg0OlxcdFxcdGlkeCA9IGZhbm91dF9kZW11eF9jcHUoZiwgc2tiLCBudW0pO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ4NS1cXHRcXHRicmVhaztcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0ODYtXFx0Y2FzZSBQQUNLRVRfRkFOT1VUX1JORDpcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0ODc6XFx0XFx0aWR4ID0gZmFub3V0X2RlbXV4X3JuZChmLCBza2IsIG51bSk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDg4LVxcdFxcdGJyZWFrO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ4OS1cXHRjYXNlIFBBQ0tFVF9GQU5PVVRfUU06XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNDkwOlxcdFxcdGlkeCA9IGZhbm91dF9kZW11eF9xbShmLCBza2IsIG51bSk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDkxLVxcdFxcdGJyZWFrO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ5Mi1cXHRjYXNlIFBBQ0tFVF9GQU5PVVRfUk9MTE9WRVI6XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNDkzOlxcdFxcdGlkeCA9IGZhbm91dF9kZW11eF9yb2xsb3ZlcihmLCBza2IsIDAsIGZhbHNlLCBudW0pO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ5NC1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ5Ni1cXHRjYXNlIFBBQ0tFVF9GQU5PVVRfRUJQRjpcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0OTc6XFx0XFx0aWR4ID0gZmFub3V0X2RlbXV4X2JwZihmLCBza2IsIG51bSk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDk4LVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTAwLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTUwMTpcXHRpZiAoZmFub3V0X2hhc19mbGFnKGYsIFBBQ0tFVF9GQU5PVVRfRkxBR19ST0xMT1ZFUikpXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNTAyOlxcdFxcdGlkeCA9IGZhbm91dF9kZW11eF9yb2xsb3ZlcihmLCBza2IsIGlkeCwgdHJ1ZSwgbnVtKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1MDMtXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1MDctXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNTA4OkRFRklORV9NVVRFWChmYW5vdXRfbXV0ZXgpO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTUwOTpFWFBPUlRfU1lNQk9MX0dQTChmYW5vdXRfbXV0ZXgpO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTUxMDpzdGF0aWMgTElTVF9IRUFEKGZhbm91dF9saXN0KTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE1MTE6c3RhdGljIHUxNiBmYW5vdXRfbmV4dF9pZDtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1MTItXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNTEzOnN0YXRpYyB2b2lkIF9fZmFub3V0X2xpbmsoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvKVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTUxNC17XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNTE1OlxcdHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmID0gcG8tXFx1MDAzZWZhbm91dDtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1MTYtXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1MjUtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNTI2OnN0YXRpYyB2b2lkIF9fZmFub3V0X3VubGluayhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBwYWNrZXRfc29jayAqcG8pXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTI3LXtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE1Mjg6XFx0c3RydWN0IHBhY2tldF9mYW5vdXQgKmYgPSBwby1cXHUwMDNlZmFub3V0O1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTUyOS1cXHRpbnQgaTtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTU0Ni1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE1NDc6c3RhdGljIGJvb2wgbWF0Y2hfZmFub3V0X2dyb3VwKHN0cnVjdCBwYWNrZXRfdHlwZSAqcHR5cGUsIHN0cnVjdCBzb2NrICpzaylcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1NDgte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTUxLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTU1MjpcXHRyZXR1cm4gcHR5cGUtXFx1MDAzZWFmX3BhY2tldF9wcml2ID09IHBrdF9zayhzayktXFx1MDAzZWZhbm91dDtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1NTMtfVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTU1NC1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE1NTU6c3RhdGljIHZvaWQgZmFub3V0X2luaXRfZGF0YShzdHJ1Y3QgcGFja2V0X2Zhbm91dCAqZilcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1NTYte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTY3LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTU2ODpzdGF0aWMgdm9pZCBfX2Zhbm91dF9zZXRfZGF0YV9icGYoc3RydWN0IHBhY2tldF9mYW5vdXQgKmYsIHN0cnVjdCBicGZfcHJvZyAqbmV3KVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTU2OS17XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1ODItXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNTgzOnN0YXRpYyBpbnQgZmFub3V0X3NldF9kYXRhX2NicGYoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc29ja3B0cl90IGRhdGEsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTg0LVxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBsZW4pXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MDAtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjAxOlxcdF9fZmFub3V0X3NldF9kYXRhX2JwZihwby1cXHUwMDNlZmFub3V0LCBuZXcpO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTYwMi1cXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTYwNC1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2MDU6c3RhdGljIGludCBmYW5vdXRfc2V0X2RhdGFfZWJwZihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzb2NrcHRyX3QgZGF0YSxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MDYtXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGxlbilcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTYyMS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2MjI6XFx0X19mYW5vdXRfc2V0X2RhdGFfYnBmKHBvLVxcdTAwM2VmYW5vdXQsIG5ldyk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjIzLVxcdHJldHVybiAwO1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjI1LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTYyNjpzdGF0aWMgaW50IGZhbm91dF9zZXRfZGF0YShzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzb2NrcHRyX3QgZGF0YSxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MjctXFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IGxlbilcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2Mjgte1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTYyOTpcXHRzd2l0Y2ggKHBvLVxcdTAwM2VmYW5vdXQtXFx1MDAzZXR5cGUpIHtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MzAtXFx0Y2FzZSBQQUNLRVRfRkFOT1VUX0NCUEY6XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjMxOlxcdFxcdHJldHVybiBmYW5vdXRfc2V0X2RhdGFfY2JwZihwbywgZGF0YSwgbGVuKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MzItXFx0Y2FzZSBQQUNLRVRfRkFOT1VUX0VCUEY6XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjMzOlxcdFxcdHJldHVybiBmYW5vdXRfc2V0X2RhdGFfZWJwZihwbywgZGF0YSwgbGVuKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MzQtXFx0ZGVmYXVsdDpcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTYzOC1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2Mzk6c3RhdGljIHZvaWQgZmFub3V0X3JlbGVhc2VfZGF0YShzdHJ1Y3QgcGFja2V0X2Zhbm91dCAqZilcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2NDAte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjQzLVxcdGNhc2UgUEFDS0VUX0ZBTk9VVF9FQlBGOlxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTY0NDpcXHRcXHRfX2Zhbm91dF9zZXRfZGF0YV9icGYoZiwgTlVMTCk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjQ1LVxcdH1cXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTY0Ny1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2NDg6c3RhdGljIGJvb2wgX19mYW5vdXRfaWRfaXNfZnJlZShzdHJ1Y3Qgc29jayAqc2ssIHUxNiBjYW5kaWRhdGVfaWQpXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjQ5LXtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2NTA6XFx0c3RydWN0IHBhY2tldF9mYW5vdXQgKmY7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjUxLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTY1MjpcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGYsIFxcdTAwMjZmYW5vdXRfbGlzdCwgbGlzdCkge1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTY1My1cXHRcXHRpZiAoZi1cXHUwMDNlaWQgPT0gY2FuZGlkYXRlX2lkIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2NjAtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjYxOnN0YXRpYyBib29sIGZhbm91dF9maW5kX25ld19pZChzdHJ1Y3Qgc29jayAqc2ssIHUxNiAqbmV3X2lkKVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTY2Mi17XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjYzOlxcdHUxNiBpZCA9IGZhbm91dF9uZXh0X2lkO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTY2NC1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2NjUtXFx0ZG8ge1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTY2NjpcXHRcXHRpZiAoX19mYW5vdXRfaWRfaXNfZnJlZShzaywgaWQpKSB7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjY3LVxcdFxcdFxcdCpuZXdfaWQgPSBpZDtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2Njg6XFx0XFx0XFx0ZmFub3V0X25leHRfaWQgPSBpZCArIDE7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjY5LVxcdFxcdFxcdHJldHVybiB0cnVlO1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjcyLVxcdFxcdGlkKys7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjczOlxcdH0gd2hpbGUgKGlkICE9IGZhbm91dF9uZXh0X2lkKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2NzQtXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2NzctXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjc4OnN0YXRpYyBpbnQgZmFub3V0X2FkZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBmYW5vdXRfYXJncyAqYXJncylcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2Nzkte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjgyLVxcdHUxNiB0eXBlX2ZsYWdzID0gYXJncy1cXHUwMDNldHlwZV9mbGFncztcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2ODM6XFx0c3RydWN0IHBhY2tldF9mYW5vdXQgKmYsICptYXRjaDtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2ODQtXFx0dTggdHlwZSA9IHR5cGVfZmxhZ3MgXFx1MDAyNiAweGZmO1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzA1LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTcwNjpcXHRtdXRleF9sb2NrKFxcdTAwMjZmYW5vdXRfbXV0ZXgpO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTcwNy1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3MDgtXFx0ZXJyID0gLUVBTFJFQURZO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTcwOTpcXHRpZiAocG8tXFx1MDAzZWZhbm91dClcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3MTAtXFx0XFx0Z290byBvdXQ7XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3MjctXFx0XFx0fVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTcyODpcXHRcXHRpZiAoIWZhbm91dF9maW5kX25ld19pZChzaywgXFx1MDAyNmlkKSkge1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTcyOS1cXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzM2LVxcdG1hdGNoID0gTlVMTDtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE3Mzc6XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShmLCBcXHUwMDI2ZmFub3V0X2xpc3QsIGxpc3QpIHtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3MzgtXFx0XFx0aWYgKGYtXFx1MDAzZWlkID09IGlkIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3NjctXFx0XFx0cmVmY291bnRfc2V0KFxcdTAwMjZtYXRjaC1cXHUwMDNlc2tfcmVmLCAwKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE3Njg6XFx0XFx0ZmFub3V0X2luaXRfZGF0YShtYXRjaCk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzY5LVxcdFxcdG1hdGNoLVxcdTAwM2Vwcm90X2hvb2sudHlwZSA9IHBvLVxcdTAwM2Vwcm90X2hvb2sudHlwZTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3NzAtXFx0XFx0bWF0Y2gtXFx1MDAzZXByb3RfaG9vay5kZXYgPSBwby1cXHUwMDNlcHJvdF9ob29rLmRldjtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE3NzE6XFx0XFx0bWF0Y2gtXFx1MDAzZXByb3RfaG9vay5mdW5jID0gcGFja2V0X3Jjdl9mYW5vdXQ7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzcyLVxcdFxcdG1hdGNoLVxcdTAwM2Vwcm90X2hvb2suYWZfcGFja2V0X3ByaXYgPSBtYXRjaDtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3NzMtXFx0XFx0bWF0Y2gtXFx1MDAzZXByb3RfaG9vay5hZl9wYWNrZXRfbmV0ID0gcmVhZF9wbmV0KFxcdTAwMjZtYXRjaC1cXHUwMDNlbmV0KTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE3NzQ6XFx0XFx0bWF0Y2gtXFx1MDAzZXByb3RfaG9vay5pZF9tYXRjaCA9IG1hdGNoX2Zhbm91dF9ncm91cDtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3NzUtXFx0XFx0bWF0Y2gtXFx1MDAzZW1heF9udW1fbWVtYmVycyA9IGFyZ3MtXFx1MDAzZW1heF9udW1fbWVtYmVycztcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3NzYtXFx0XFx0bWF0Y2gtXFx1MDAzZXByb3RfaG9vay5pZ25vcmVfb3V0Z29pbmcgPSB0eXBlX2ZsYWdzIFxcdTAwMjYgUEFDS0VUX0ZBTk9VVF9GTEFHX0lHTk9SRV9PVVRHT0lORztcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE3Nzc6XFx0XFx0bGlzdF9hZGQoXFx1MDAyNm1hdGNoLVxcdTAwM2VsaXN0LCBcXHUwMDI2ZmFub3V0X2xpc3QpO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTc3OC1cXHR9XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3ODgtXFx0XFx0XFx0LyogUGFpcmVkIHdpdGggcGFja2V0X3NldHNvY2tvcHQoUEFDS0VUX0ZBTk9VVF9EQVRBKSAqL1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTc4OTpcXHRcXHRcXHRXUklURV9PTkNFKHBvLVxcdTAwM2VmYW5vdXQsIG1hdGNoKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3OTAtXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3OTUtXFx0XFx0XFx0XFx0X19kZXZfcmVtb3ZlX3BhY2soXFx1MDAyNnBvLVxcdTAwM2Vwcm90X2hvb2spO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTc5NjpcXHRcXHRcXHRcXHRfX2Zhbm91dF9saW5rKHNrLCBwbyk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzk3LVxcdFxcdFxcdH1cXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTgwOS1cXHRrZnJlZShyb2xsb3Zlcik7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxODEwOlxcdG11dGV4X3VubG9jayhcXHUwMDI2ZmFub3V0X211dGV4KTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE4MTEtXFx0cmV0dXJuIGVycjtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTgxMy1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE4MTQ6LyogSWYgcGt0X3NrKHNrKS1cXHUwMDNlZmFub3V0LVxcdTAwM2Vza19yZWYgaXMgemVybywgdGhpcyBmdW5jdGlvbiByZW1vdmVzXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxODE1OiAqIHBrdF9zayhzayktXFx1MDAzZWZhbm91dCBmcm9tIGZhbm91dF9saXN0IGFuZCByZXR1cm5zIHBrdF9zayhzayktXFx1MDAzZWZhbm91dC5cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE4MTY6ICogSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXIgdG8gY2FsbCBmYW5vdXRfcmVsZWFzZV9kYXRhKCkgYW5kXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxODE3OiAqIGZyZWUgdGhlIHJldHVybmVkIHBhY2tldF9mYW5vdXQgKGFmdGVyIHN5bmNocm9uaXplX25ldCgpKVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTgxOC0gKi9cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE4MTk6c3RhdGljIHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmYW5vdXRfcmVsZWFzZShzdHJ1Y3Qgc29jayAqc2spXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xODIwLXtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE4MjEtXFx0c3RydWN0IHBhY2tldF9zb2NrICpwbyA9IHBrdF9zayhzayk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxODIyOlxcdHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTgyMy1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE4MjQ6XFx0bXV0ZXhfbG9jayhcXHUwMDI2ZmFub3V0X211dGV4KTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE4MjU6XFx0ZiA9IHBvLVxcdTAwM2VmYW5vdXQ7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xODI2LVxcdGlmIChmKSB7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxODI3OlxcdFxcdHBvLVxcdTAwM2VmYW5vdXQgPSBOVUxMO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTgyOC1cXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTgzMy1cXHR9XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxODM0OlxcdG11dGV4X3VubG9jayhcXHUwMDI2ZmFub3V0X211dGV4KTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE4MzUtXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTMxMjI9c3RhdGljIGludCBwYWNrZXRfcmVsZWFzZShzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTI1LVxcdHN0cnVjdCBwYWNrZXRfc29jayAqcG87XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMTI2OlxcdHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzEyNy1cXHRzdHJ1Y3QgbmV0ICpuZXQ7XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxNjYtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMTY3OlxcdGYgPSBmYW5vdXRfcmVsZWFzZShzayk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTY4LVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTcyLVxcdGlmIChmKSB7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMTczOlxcdFxcdGZhbm91dF9yZWxlYXNlX2RhdGEoZik7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTc0LVxcdFxcdGt2ZnJlZShmKTtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MzE5NT1zdGF0aWMgaW50IHBhY2tldF9kb19iaW5kKHN0cnVjdCBzb2NrICpzaywgY29uc3QgY2hhciAqbmFtZSwgaW50IGlmaW5kZXgsXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMyMTAtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMjExOlxcdGlmIChwby1cXHUwMDNlZmFub3V0KSB7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMjEyLVxcdFxcdHJldCA9IC1FSU5WQUw7XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTM3ODc9cGFja2V0X3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCxcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzk5NC1cXHR7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozOTk1OlxcdFxcdHN0cnVjdCBmYW5vdXRfYXJncyBhcmdzID0geyAwIH07XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zOTk2LVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00MDAxLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDAwMjpcXHRcXHRyZXR1cm4gZmFub3V0X2FkZChzaywgXFx1MDAyNmFyZ3MpO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDAwMy1cXHR9XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQwMDUtXFx0e1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDAwNjpcXHRcXHQvKiBQYWlyZWQgd2l0aCB0aGUgV1JJVEVfT05DRSgpIGluIGZhbm91dF9hZGQoKSAqL1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDAwNzpcXHRcXHRpZiAoIVJFQURfT05DRShwby1cXHUwMDNlZmFub3V0KSlcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQwMDgtXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00MDA5LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDAxMDpcXHRcXHRyZXR1cm4gZmFub3V0X3NldF9kYXRhKHBvLCBvcHR2YWwsIG9wdGxlbik7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00MDExLVxcdH1cXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9NDA1OT1zdGF0aWMgaW50IHBhY2tldF9nZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQxNDgtXFx0Y2FzZSBQQUNLRVRfRkFOT1VUOlxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDE0OTpcXHRcXHR2YWwgPSAocG8tXFx1MDAzZWZhbm91dCA/XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0MTUwOlxcdFxcdCAgICAgICAoKHUzMilwby1cXHUwMDNlZmFub3V0LVxcdTAwM2VpZCB8XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0MTUxOlxcdFxcdFxcdCgodTMyKXBvLVxcdTAwM2VmYW5vdXQtXFx1MDAzZXR5cGUgXFx1MDAzY1xcdTAwM2MgMTYpIHxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjQxNTI6XFx0XFx0XFx0KCh1MzIpcG8tXFx1MDAzZWZhbm91dC1cXHUwMDNlZmxhZ3MgXFx1MDAzY1xcdTAwM2MgMjQpKSA6XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00MTUzLVxcdFxcdCAgICAgICAwKTtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9NDQxNj1zdGF0aWMgaW50IHBhY2tldF9zZXRfcmluZyhzdHJ1Y3Qgc29jayAqc2ssIHVuaW9uIHRwYWNrZXRfcmVxX3UgKnJlcV91LFxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NTY1LVxcdCAqIE5FVERFVl9VTlJFR0lTVEVSIG1heSBoYXZlIGludmFsaWRhdGVkIHRoZSBiaW5kaW5nIHdoaWxlIGJpbmRfbG9ja1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDU2NjpcXHQgKiB3YXMgZHJvcHBlZCBhYm92ZS4gIERvIG5vdCByZS1hZGQgYSBmYW5vdXQgaG9vayB0byBhIGRlYWQgZGV2aWNlLlxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDU2Ny1cXHQgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTg6MDE6NDQuODc5MjM2ODQxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODMwMTIzMzE0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJ1ZyBGaXggZm9yIEZhbm91dCBIb29rcyoqXG5cbk9rYXksIHNvIHRoZSBjb21tZW50IGV4cGxpY2l0bHkgc3RhdGVzIFwiRG8gbm90IHJlLWFkZCBhIGZhbm91dCBob29rIHRvIGEgZGVhZCBkZXZpY2UuXCIgVGhlIHBhdGNoJ3MgY29yZSBsb2dpYyBpcyB0byBwcmV2ZW50IHRoZSBjYWxsIHRvIGByZWdpc3Rlcl9wcm90X2hvb2soc2spYCB3aGVuIGBSRUFEX09OQ0UocG8tXHUwMDNlaWZpbmRleClgIGlzIC0xLiBUaGlzIHNwZWNpZmljYWxseSBoYXBwZW5zIHdpdGhpbiBgcGFja2V0X3NldF9yaW5nYC5cblxuVGhlcmVmb3JlLCB0aGUgaXNzdWUgaXMgZGlyZWN0bHkgcmVsYXRlZCB0byBgUEFDS0VUX0ZBTk9VVGAgYW5kIHRoZSBgcGFja2V0X3NldF9yaW5nYCBmdW5jdGlvbi4gVGhlIGNvbmZpZ3VyYXRpb24gaW4gcXVlc3Rpb24gaGVyZSBpcyBgUEFDS0VUYCwgYnV0IGxldCdzIHF1aWNrbHkgY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3MuIEFoLCBgZmFub3V0X3NldF9kYXRhX2VicGZgIGlzIHVzZWQgZm9yIGBQQUNLRVRfRkFOT1VUX0VCUEZgLCBidXQgaXQncyBub3QgcmVsZXZhbnQgdG8gdGhpcyBidWcgYXMgaXQncyBzcGVjaWZpY2FsbHkgYWJvdXQgYHBhY2tldF9zZXRfcmluZ2AgYW5kIGByZWdpc3Rlcl9wcm90X2hvb2tgLCByaWdodD8gVGhpcyBzaG91bGQgYXBwbHkgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGZhbm91dCBpcyBhY3R1YWxseSAqdXNlZCogb3Igbm90LlxuXG5Ob3csIGxldCdzIHRyYWNlIHRoZSBleGVjdXRpb246IGByZWdpc3Rlcl9wcm90X2hvb2soc2spYCBjYWxscyBgX19yZWdpc3Rlcl9wcm90X2hvb2soc2spYC4gTG9va2luZyBhdCB0aGUgY29kZTpcblxuYGBgY1xuc3RhdGljIHZvaWQgX19yZWdpc3Rlcl9wcm90X2hvb2soc3RydWN0IHNvY2sgKnNrKVxue1xuXHRzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvID0gcGt0X3NrKHNrKTtcblxuXHRpZiAoIXBhY2tldF9zb2NrX2ZsYWcocG8sIFBBQ0tFVF9TT0NLX1JVTk5JTkcpKSB7XG5cdFx0aWYgKHBvLVx1MDAzZWZhbm91dClcblx0XHRcdF9fZmFub3V0X2xpbmsoc2ssIHBvKTtcblx0XHRlbHNlXG5cdFx0XHRfX2Rldl9hZGRfcGFjayhcdTAwMjZwby1cdTAwM2Vwcm90X2hvb2spO1xuXG5cdFx0c29ja19ob2xkKHNrKTtcblx0XHRwYWNrZXRfc29ja19mbGFnX3NldChwbywgUEFDS0VUX1NPQ0tfUlVOTklORywgMSk7XG5cdH1cbn1cbmBgYFxuXG5JZiBgcG8tXHUwMDNlaWZpbmRleGAgaXMgLTEsIHRoZSBkZXZpY2UgaXMgZGVhZC4gSWYgYHBvLVx1MDAzZWZhbm91dGAgaXMgc2V0LCBpdCBsaW5rcyB0byB0aGUgZmFub3V0IGdyb3VwLiBJZiBpdCdzICpub3QqIHNldCwgaXQgYWRkcyB0aGUgc29ja2V0IHRvIGBkZXZfYWRkX3BhY2tgLiBJbiBlaXRoZXIgY2FzZSwgd2hldGhlciBpdCdzIGZhbm91dCBvciBub3QsIHRoZSBidWcgaXMgYWJvdXQgKnJlKi1hZGRpbmcgdGhlIHNvY2tldCB0byBhIGRlYWQgZGV2aWNlLCB3aGljaCBpcyBpbmNvcnJlY3QuIFRoZSBjb21tZW50IG1lbnRpb25zIFwiZmFub3V0IGhvb2ssXCIgYnV0IGl0J3MgcmVhbGx5IHRoZSBicm9hZGVyIGlzc3VlIG9mIGByZWdpc3Rlcl9wcm90X2hvb2tgIHRoYXQncyB0aGUgcHJvYmxlbS5cblxuQWxyaWdodCwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIGBwYWNrZXRfc2V0X3JpbmdgIGZ1bmN0aW9uIGluIGBuZXQvcGFja2V0L2FmX3BhY2tldC5jYCB0byBzZWUgaG93IHRoaXMgc2l0dWF0aW9uIGNhbiBhcmlzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0NTEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0ODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTg6MDE6NTMuMTgwNDc0NTYyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0Njk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvcGFja2V0L2FmX3BhY2tldC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ1NDAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjQ1NDA6XFx0XFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZyYl9xdWV1ZS1cXHUwMDNlbG9jayk7XFxuNDU0MTpcXHRcXHRcXHRzd2FwKHJiLVxcdTAwM2VwZ192ZWMsIHBnX3ZlYyk7XFxuNDU0MjpcXHRcXHRcXHRpZiAocG8tXFx1MDAzZXRwX3ZlcnNpb24gXFx1MDAzYz0gVFBBQ0tFVF9WMilcXG40NTQzOlxcdFxcdFxcdFxcdHN3YXAocmItXFx1MDAzZXJ4X293bmVyX21hcCwgcnhfb3duZXJfbWFwKTtcXG40NTQ0OlxcdFxcdFxcdHJiLVxcdTAwM2VmcmFtZV9tYXggPSAocmVxLVxcdTAwM2V0cF9mcmFtZV9uciAtIDEpO1xcbjQ1NDU6XFx0XFx0XFx0cmItXFx1MDAzZWhlYWQgPSAwO1xcbjQ1NDY6XFx0XFx0XFx0cmItXFx1MDAzZWZyYW1lX3NpemUgPSByZXEtXFx1MDAzZXRwX2ZyYW1lX3NpemU7XFxuNDU0NzpcXHRcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2cmJfcXVldWUtXFx1MDAzZWxvY2spO1xcbjQ1NDg6XFx0XFxuNDU0OTpcXHRcXHRcXHRzd2FwKHJiLVxcdTAwM2VwZ192ZWNfb3JkZXIsIG9yZGVyKTtcXG40NTUwOlxcdFxcdFxcdHN3YXAocmItXFx1MDAzZXBnX3ZlY19sZW4sIHJlcS1cXHUwMDNldHBfYmxvY2tfbnIpO1xcbjQ1NTE6XFx0XFxuNDU1MjpcXHRcXHRcXHRyYi1cXHUwMDNlcGdfdmVjX3BhZ2VzID0gcmVxLVxcdTAwM2V0cF9ibG9ja19zaXplL1BBR0VfU0laRTtcXG40NTUzOlxcdFxcdFxcdHBvLVxcdTAwM2Vwcm90X2hvb2suZnVuYyA9IChwby1cXHUwMDNlcnhfcmluZy5wZ192ZWMpID9cXG40NTU0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdHRwYWNrZXRfcmN2IDogcGFja2V0X3JjdjtcXG40NTU1OlxcdFxcdFxcdHNrYl9xdWV1ZV9wdXJnZShyYl9xdWV1ZSk7XFxuNDU1NjpcXHRcXHRcXHRpZiAoYXRvbWljX2xvbmdfcmVhZChcXHUwMDI2cG8tXFx1MDAzZW1hcHBlZCkpXFxuNDU1NzpcXHRcXHRcXHRcXHRwcl9lcnIoXFxcInBhY2tldF9tbWFwOiB2bWEgaXMgYnVzeTogJWxkXFxcXG5cXFwiLFxcbjQ1NTg6XFx0XFx0XFx0XFx0ICAgICAgIGF0b21pY19sb25nX3JlYWQoXFx1MDAyNnBvLVxcdTAwM2VtYXBwZWQpKTtcXG40NTU5OlxcdFxcdH1cXG40NTYwOlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cG8tXFx1MDAzZXBnX3ZlY19sb2NrKTtcXG40NTYxOlxcdFxcbjQ1NjI6XFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZwby1cXHUwMDNlYmluZF9sb2NrKTtcXG40NTYzOlxcdFxcdFdSSVRFX09OQ0UocG8tXFx1MDAzZW51bSwgbnVtKTtcXG40NTY0OlxcdFxcdC8qXFxuNDU2NTpcXHRcXHQgKiBORVRERVZfVU5SRUdJU1RFUiBtYXkgaGF2ZSBpbnZhbGlkYXRlZCB0aGUgYmluZGluZyB3aGlsZSBiaW5kX2xvY2tcXG40NTY2OlxcdFxcdCAqIHdhcyBkcm9wcGVkIGFib3ZlLiAgRG8gbm90IHJlLWFkZCBhIGZhbm91dCBob29rIHRvIGEgZGVhZCBkZXZpY2UuXFxuNDU2NzpcXHRcXHQgKi9cXG40NTY4OlxcdFxcdGlmICh3YXNfcnVubmluZyBcXHUwMDI2XFx1MDAyNiBSRUFEX09OQ0UocG8tXFx1MDAzZWlmaW5kZXgpICE9IC0xKVxcbjQ1Njk6XFx0XFx0XFx0cmVnaXN0ZXJfcHJvdF9ob29rKHNrKTtcXG40NTcwOlxcdFxcbjQ1NzE6XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNnBvLVxcdTAwM2ViaW5kX2xvY2spO1xcbjQ1NzI6XFx0XFx0aWYgKHBnX3ZlYyBcXHUwMDI2XFx1MDAyNiAocG8tXFx1MDAzZXRwX3ZlcnNpb24gXFx1MDAzZSBUUEFDS0VUX1YyKSkge1xcbjQ1NzM6XFx0XFx0XFx0LyogQmVjYXVzZSB3ZSBkb24ndCBzdXBwb3J0IGJsb2NrLWJhc2VkIFYzIG9uIHR4LXJpbmcgKi9cXG40NTc0OlxcdFxcdFxcdGlmICghdHhfcmluZylcXG40NTc1OlxcdFxcdFxcdFxcdHByYl9zaHV0ZG93bl9yZXRpcmVfYmxrX3RpbWVyKHBvLCByYl9xdWV1ZSk7XFxuNDU3NjpcXHRcXHR9XFxuNDU3NzpcXHRcXG40NTc4OlxcdG91dF9mcmVlX3BnX3ZlYzpcXG40NTc5OlxcdFxcdGlmIChwZ192ZWMpIHtcXG40NTgwOlxcdFxcdFxcdGJpdG1hcF9mcmVlKHJ4X293bmVyX21hcCk7XFxuNDU4MTpcXHRcXHRcXHRmcmVlX3BnX3ZlYyhwZ192ZWMsIG9yZGVyLCByZXEtXFx1MDAzZXRwX2Jsb2NrX25yKTtcXG40NTgyOlxcdFxcdH1cXG40NTgzOlxcdG91dDpcXG40NTg0OlxcdFxcdHJldHVybiBlcnI7XFxuNDU4NTpcXHR9XFxuNDU4NjpcXHRcXG40NTg3OlxcdHN0YXRpYyBpbnQgcGFja2V0X21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXFxuNDU4ODpcXHRcXHRcXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG40NTg5OlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTg6MDE6NTMuMTgwODI4NjgyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MzQ3MzU0NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBTaWduaWZpY2FuY2UqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGV4YW1pbmVkIHRoaXMgcGF0Y2gsIGFuZCBJJ20gY29uZmlkZW50IGl0J3MgYWRkcmVzc2luZyBhIGdlbnVpbmUgZnVuY3Rpb25hbCBpc3N1ZS4gVGhlIGtleSBmdW5jdGlvbiB0byBmb2N1cyBvbiBpcyBgcGFja2V0X3NldF9yaW5nYC4gRnJvbSB0aGUgb3V0c2V0LCBJJ3ZlIGdvdCBgUEFDS0VUYCBlbmFibGVkLlxuXG5NeSBxdWljayBjaGVjayBjb25maXJtcyB0aGF0IGBDT05GSUdfUEFDS0VUYCBpcyBpbmRlZWQgc3VmZmljaWVudCBmb3IgdGhpcy4gTm90aGluZyBlbHNlIHNlZW1zIHRvIGJlIHJlcXVpcmVkLlxuXG5UaGVyZWZvcmUsIEknbSBnb2luZyB0byBkZXRlcm1pbmUgdGhpcyBwYXRjaCBpcyB3b3J0aCBmdXp6aW5nIGFuZCB3aWxsIHJldHVybiB0aGUgZm9sbG93aW5nOiBgV29ydGhGdXp6aW5nOiB0cnVlYCwgYWxvbmcgd2l0aCBgRm9jdXNTeW1ib2xzYDogYFtcInBhY2tldF9zZXRfcmluZ1wiXWAgYW5kIGBFbmFibGVDb25maWdzOiBbXCJQQUNLRVRcIl1gLlxuXG5NeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIHJlY3RpZmllcyBhIGJ1ZyB3aXRoaW4gdGhlIGNvcmUgQUZfUEFDS0VUIGxvZ2ljLiBTcGVjaWZpY2FsbHksIGl0IHByZXZlbnRzIGEgZmFub3V0IGhvb2sgZnJvbSBiZWluZyByZS1hZGRlZCB0byBhIGRldmljZSB0aGF0IGlzIGFscmVhZHkgZGVhZCB3aXRoaW4gYHBhY2tldF9zZXRfcmluZ2AuIFRoZSBmaXggaW52b2x2ZXMgYSBjaGVjayB0byBlbnN1cmUgdGhlIGRldmljZSBpcyBzdGlsbCB2YWxpZCAoIGBpZmluZGV4ICE9IC0xYCkgYmVmb3JlIGNhbGxpbmcgYHJlZ2lzdGVyX3Byb3RfaG9va2AuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IG5lZWRzIGZ1cnRoZXIgc2NydXRpbnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzY1LCJPdXRwdXRUb2tlbnMiOjEwMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE4OjAyOjAwLjAxNTU3MDA0NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MzI3ODU2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUEFDS0VUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGFja2V0X3NldF9yaW5nXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgYSBmYW5vdXQgaG9vayBjb3VsZCBiZSByZS1hZGRlZCB0byBhIGRlYWQgZGV2aWNlIGluIHBhY2tldF9zZXRfcmluZyBieSBjaGVja2luZyBpZiB0aGUgZGV2aWNlIGlzIGRlYWQgKGlmaW5kZXggIT0gLTEpIGJlZm9yZSBjYWxsaW5nIHJlZ2lzdGVyX3Byb3RfaG9vay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEFGX1BBQ0tFVCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQQUNLRVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwYWNrZXRfc2V0X3JpbmdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSBhIGZhbm91dCBob29rIGNvdWxkIGJlIHJlLWFkZGVkIHRvIGEgZGVhZCBkZXZpY2UgaW4gcGFja2V0X3NldF9yaW5nIGJ5IGNoZWNraW5nIGlmIHRoZSBkZXZpY2UgaXMgZGVhZCAoaWZpbmRleCAhPSAtMSkgYmVmb3JlIGNhbGxpbmcgcmVnaXN0ZXJfcHJvdF9ob29rLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQUZfUEFDS0VUIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4pwn2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-01 17:40:19 +0000 UTC FinishedAt: 2026-07-01 18:02:01 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "a225f8c20712713406ae47024b8df42deacddd4a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PACKET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "a225f8c20712713406ae47024b8df42deacddd4a", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PACKET" ], "series_id": "aeaccf80-8f8b-4bac-b869-0ae80d45659c" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "packet_set_ring" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE4OjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BBQ0tFVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhY2tldF9zZXRfcmluZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSBhIGZhbm91dCBob29rIGNvdWxkIGJlIHJlLWFkZGVkIHRvIGEgZGVhZCBkZXZpY2UgaW4gcGFja2V0X3NldF9yaW5nIGJ5IGNoZWNraW5nIGlmIHRoZSBkZXZpY2UgaXMgZGVhZCAoaWZpbmRleCAhPSAtMSkgYmVmb3JlIGNhbGxpbmcgcmVnaXN0ZXJfcHJvdF9ob29rLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQUZfUEFDS0VUIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE4OjAxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTFkMTNlM2M3YTkzMmI0YzgxNDRmZmZhYTcyNDcyNzA0MzJiZTk4M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMTg6MDE6MjkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcbmluZGV4IDhlNmYzYTczNGJhMGJkLi5lNzVkMjkzMjQ3NWFjMCAxMDA2NDRcbi0tLSBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcbkBAIC00NTYxLDcgJiM0Mzs0NTYxLDExIEBAIHN0YXRpYyBpbnQgcGFja2V0X3NldF9yaW5nKHN0cnVjdCBzb2NrICpzaywgdW5pb24gdHBhY2tldF9yZXFfdSAqcmVxX3UsXG4gXG4gXHRzcGluX2xvY2soXHUwMDI2cG8tXHUwMDNlYmluZF9sb2NrKTtcbiBcdFdSSVRFX09OQ0UocG8tXHUwMDNlbnVtLCBudW0pO1xuLVx0aWYgKHdhc19ydW5uaW5nKVxuJiM0MztcdC8qXG4mIzQzO1x0ICogTkVUREVWX1VOUkVHSVNURVIgbWF5IGhhdmUgaW52YWxpZGF0ZWQgdGhlIGJpbmRpbmcgd2hpbGUgYmluZF9sb2NrXG4mIzQzO1x0ICogd2FzIGRyb3BwZWQgYWJvdmUuICBEbyBub3QgcmUtYWRkIGEgZmFub3V0IGhvb2sgdG8gYSBkZWFkIGRldmljZS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpZiAod2FzX3J1bm5pbmcgXHUwMDI2XHUwMDI2IFJFQURfT05DRShwby1cdTAwM2VpZmluZGV4KSAhPSAtMSlcbiBcdFx0cmVnaXN0ZXJfcHJvdF9ob29rKHNrKTtcbiBcbiBcdHNwaW5fdW5sb2NrKFx1MDAyNnBvLVx1MDAzZWJpbmRfbG9jayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTg6MDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UEFDS0VUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGFja2V0X3NldF9yaW5nJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIHdoZXJlIGEgZmFub3V0IGhvb2sgY291bGQgYmUgcmUtYWRkZWQgdG8gYSBkZWFkIGRldmljZSBpbiBwYWNrZXRfc2V0X3JpbmcgYnkgY2hlY2tpbmcgaWYgdGhlIGRldmljZSBpcyBkZWFkIChpZmluZGV4ICE9IC0xKSBiZWZvcmUgY2FsbGluZyByZWdpc3Rlcl9wcm90X2hvb2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBBRl9QQUNLRVQgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDUxZDEzZTNjN2E5MzJiNGM4MTQ0ZmZmYWE3MjQ3MjcwNDMyYmU5ODMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxIDE4OjAxOjI5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3BhY2tldC9hZl9wYWNrZXQuYyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKaW5kZXggOGU2ZjNhNzM0YmEwYmQuLmU3NWQyOTMyNDc1YWMwIDEwMDY0NAotLS0gYS9uZXQvcGFja2V0L2FmX3BhY2tldC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9wYWNrZXQvYWZfcGFja2V0LmMKQEAgLTQ1NjEsNyAmIzQzOzQ1NjEsMTEgQEAgc3RhdGljIGludCBwYWNrZXRfc2V0X3Jpbmcoc3RydWN0IHNvY2sgKnNrLCB1bmlvbiB0cGFja2V0X3JlcV91ICpyZXFfdSwKIAogCXNwaW5fbG9jaygmYW1wO3BvLSZndDtiaW5kX2xvY2spOwogCVdSSVRFX09OQ0UocG8tJmd0O251bSwgbnVtKTsKLQlpZiAod2FzX3J1bm5pbmcpCiYjNDM7CS8qCiYjNDM7CSAqIE5FVERFVl9VTlJFR0lTVEVSIG1heSBoYXZlIGludmFsaWRhdGVkIHRoZSBiaW5kaW5nIHdoaWxlIGJpbmRfbG9jawomIzQzOwkgKiB3YXMgZHJvcHBlZCBhYm92ZS4gIERvIG5vdCByZS1hZGQgYSBmYW5vdXQgaG9vayB0byBhIGRlYWQgZGV2aWNlLgomIzQzOwkgKi8KJiM0MzsJaWYgKHdhc19ydW5uaW5nICZhbXA7JmFtcDsgUkVBRF9PTkNFKHBvLSZndDtpZmluZGV4KSAhPSAtMSkKIAkJcmVnaXN0ZXJfcHJvdF9ob29rKHNrKTsKIAogCXNwaW5fdW5sb2NrKCZhbXA7cG8tJmd0O2JpbmRfbG9jayk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE4OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4OTAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGFja2V0IFJpbmcgRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3BhY2tldC9hZl9wYWNrZXQuY2AsIHNwZWNpZmljYWxseSB0aGUgYHBhY2tldF9zZXRfcmluZ2AgZnVuY3Rpb24uIFRoZSBjaGFuZ2UgaGVyZSBpcyBwcmV0dHkgY2xlYXI6IGl0JiMzOTtzIGFkZGluZyBhIGNoZWNrIGJlZm9yZSByZS1yZWdpc3RlcmluZyBhIGZhbm91dCBob29rLiAgTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBpcyBhIHNvbGlkLCBmdW5jdGlvbmFsIGJ1ZyBmaXguIEVzc2VudGlhbGx5LCBpdCBhcHBlYXJzIHdlJiMzOTtyZSBwcmV2ZW50aW5nIGEgZmFub3V0IGhvb2sgZnJvbSBiZWluZyBhZGRlZCB0byBhIG5ldHdvcmsgZGV2aWNlIHRoYXQmIzM5O3MgYWxyZWFkeSBnb25lOyBhICYjMzQ7ZGVhZCBkZXZpY2UmIzM0OywgYXMgdGhlIGNvbW1lbnQgcHV0cyBpdC4gVGhlIGtleSBpcyB0aGF0IGBORVRERVZfVU5SRUdJU1RFUmAgbWlnaHQgaGF2ZSBpbnZhbGlkYXRlZCB0aGUgYmluZGluZyB3aGlsZSB0aGUgYGJpbmRfbG9ja2Agd2FzIGRyb3BwZWQsIGFuZCB0aGlzIGNvbmRpdGlvbmFsIGBSRUFEX09OQ0UocG8tJmd0O2lmaW5kZXgpICE9IC0xYCBpcyB0aGUgbmV3IGd1YXJkLiAgRXNzZW50aWFsbHksIGl0JiMzOTtzIG1ha2luZyBzdXJlIHRoZSBkZXZpY2UgaXMgc3RpbGwgdmFsaWQgYmVmb3JlIHRyeWluZyB0byByZWdpc3RlciB0aGUgaG9vay4gVGhpcyBpcyBnb29kIHByYWN0aWNlLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBncmVwIHRoZSBjb2RlIHRvIGRvdWJsZS1jaGVjayBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBgcGFja2V0X3NldF9yaW5nYCBpcyB1c2VkIGFuZCBlbnN1cmUgdGhlcmUgYXJlIG5vIHVuaW50ZW5kZWQgc2lkZSBlZmZlY3RzLiBUaW1lIHRvIGZpcmUgdXAgZ3JlcHBlciBhbmQgZ2V0IGEgYnJvYWRlciB2aWV3IG9mIHRoZSBmdW5jdGlvbiYjMzk7cyBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE4OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BhY2tldF9zZXRfcmluZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9wYWNrZXQvYWZfcGFja2V0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zNi0gKiAgICAgICAgIFVsaXNlcyBBbG9uc28gICAgICAgIDogICAgICAgRnJhbWUgbnVtYmVyIGxpbWl0IHJlbW92YWwgYW5kXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjM3OiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfc2V0X3JpbmcgbWVtb3J5IGxlYWsuXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM4LSAqXHRcdEVyaWMgQmllZGVybWFuXHQ6XHRBbGxvdyBmb3IgXHUwMDNlIDggYnl0ZSBoYXJkd2FyZSBhZGRyZXNzZXMuXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0xNjc9dW5pb24gdHBhY2tldF91aGRyIHtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3My1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTc0OnN0YXRpYyBpbnQgcGFja2V0X3NldF9yaW5nKHN0cnVjdCBzb2NrICpzaywgdW5pb24gdHBhY2tldF9yZXFfdSAqcmVxX3UsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3NS1cdFx0aW50IGNsb3NpbmcsIGludCB0eF9yaW5nKTtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTMxMjI9c3RhdGljIGludCBwYWNrZXRfcmVsZWFzZShzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzE1Ny1cdFx0bWVtc2V0KFx1MDAyNnJlcV91LCAwLCBzaXplb2YocmVxX3UpKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzE1ODpcdFx0cGFja2V0X3NldF9yaW5nKHNrLCBcdTAwMjZyZXFfdSwgMSwgMCk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxNTktXHR9XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTYyLVx0XHRtZW1zZXQoXHUwMDI2cmVxX3UsIDAsIHNpemVvZihyZXFfdSkpO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMTYzOlx0XHRwYWNrZXRfc2V0X3Jpbmcoc2ssIFx1MDAyNnJlcV91LCAxLCAxKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzE2NC1cdH1cbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTM3ODc9cGFja2V0X3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCxcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM4NDQtXHRcdGlmICghcmV0KVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozODQ1Olx0XHRcdHJldCA9IHBhY2tldF9zZXRfcmluZyhzaywgXHUwMDI2cmVxX3UsIDAsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM4NDYtXHRcdFx0XHRcdCAgICAgIG9wdG5hbWUgPT0gUEFDS0VUX1RYX1JJTkcpO1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9NDM5MT1zdGF0aWMgc3RydWN0IHBndiAqYWxsb2NfcGdfdmVjKHN0cnVjdCB0cGFja2V0X3JlcSAqcmVxLCBpbnQgb3JkZXIpXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NDE1LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0NDE2OnN0YXRpYyBpbnQgcGFja2V0X3NldF9yaW5nKHN0cnVjdCBzb2NrICpzaywgdW5pb24gdHBhY2tldF9yZXFfdSAqcmVxX3UsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQ0MTctXHRcdGludCBjbG9zaW5nLCBpbnQgdHhfcmluZylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxODowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDU4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc2ltdWxhdGlvbiBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKlJldmlld2luZyBhIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldCoqCgpBbHJpZ2h0LCB0aGUgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHByb21pc2luZy4gVGhlIGNvcmUgY2hhbmdlLCB0aGUgb25lIEkgd2FudCB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLCBpcyB3aXRoaW4gYHBhY2tldF9zZXRfcmluZ2AuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgYWxyZWFkeSBjb25zaWRlcmVkIGZ1bmN0aW9uYWwgYW5kIHByaW1lZCBmb3IgZnV6emluZyBpcyBhIGdvb2Qgc2lnbi4gVGhhdCBzdWdnZXN0cyBzb21lb25lIGhhcyBhbHJlYWR5IGlkZW50aWZpZWQgdGhpcyBhcyBhIHBvdGVudGlhbCBzb3VyY2Ugb2YgaW50ZXJlc3RpbmcgYmVoYXZpb3IuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIHBhdGguIGBwYWNrZXRfc2V0X3JpbmdgIGlzIGNhbGxlZCBmcm9tIGBwYWNrZXRfc2V0c29ja29wdGAuIE1vcmUgc3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBpbnZva2VkIHdoZW4gYFBBQ0tFVF9UWF9SSU5HYCBvciBgUEFDS0VUX1JYX1JJTkdgIHNvY2tldCBvcHRpb25zIGFyZSB1c2VkLiBUaGlzIGNvbmZpcm1zIHRoYXQgc29ja2V0IG9wdGlvbnMgYXJlIGxpa2VseSB0aGUgaW50ZXJmYWNlIHdlIHdpbGwgYmUgZnV6emluZyBvbi4gVGhlIG92ZXJhbGwgc3Vic3lzdGVtIGNvbmZpZ3VyYXRpb24gaXMgY2xlYXJseSBkZXBlbmRlbnQgb24gdGhlIGBDT05GSUdfUEFDS0VUYCBrZXJuZWwgb3B0aW9uIGZvciBBRl9QQUNLRVQuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIG1vcmUgY2xvc2VseS4gSSBzaG91bGQgdmVyaWZ5IHRoZSBidWlsZCBmbGFncywgZGVwZW5kZW5jaWVzLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IEtjb25maWcgZGlyZWN0aXZlcy4gTGV0JiMzOTtzIGRpZyBpbnRvIGBuZXQvcGFja2V0L0tjb25maWdgIHRvIGNvbmZpcm0gdGhlc2UgYXNzdW1wdGlvbnMgYW5kIGV4cGxvcmUgd2hldGhlciB0aGVyZSBhcmUgYW55IG90aGVyIHBvdGVudGlhbGx5IHJlbGV2YW50IG9wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTg6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBBQ0tFVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9wYWNrZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcGFja2V0L0tjb25maWctNS1cbm5ldC9wYWNrZXQvS2NvbmZpZzo2OmNvbmZpZyBQQUNLRVRcbm5ldC9wYWNrZXQvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7UGFja2V0IHNvY2tldFwmIzM0O1xuLS1cbm5ldC9wYWNrZXQvS2NvbmZpZy0xOC1cbm5ldC9wYWNrZXQvS2NvbmZpZzoxOTpjb25maWcgUEFDS0VUX0RJQUdcbm5ldC9wYWNrZXQvS2NvbmZpZy0yMC1cdHRyaXN0YXRlIFwmIzM0O1BhY2tldDogc29ja2V0cyBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE4OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MzAKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLZXJuZWwgUGFja2V0IENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIG1haW4gY29uZmlndXJhdGlvbiBoZXJlLCBpdCBsb29rcyBsaWtlLCBpcyBgQ09ORklHX1BBQ0tFVGAuIEdvdCBpdC4gVGhlIGtleSBmdW5jdGlvbiB3ZSYjMzk7cmUgZm9jdXNpbmcgb24gaXMgYHBhY2tldF9zZXRfcmluZ2AuCgpSaWdodCwgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHdlIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgb3RoZXIgcG90ZW50aWFsbHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIEFsdGhvdWdoIGBQQUNLRVRgIGlzIHR5cGljYWxseSBlbmFibGVkIGJ5IGRlZmF1bHQsIGl0JiMzOTtzIGFsd2F5cyBhIGdvb2QgcHJhY3RpY2UgdG8gZXhwbGljaXRseSBpbmNsdWRlIGl0IHRvIGJlIHN1cmUuCgpBaCwgdGhlIHBhdGNoIGlzIGNlbnRlcmVkIGFyb3VuZCBgcGFja2V0X3NldF9yaW5nYCBhbmQgYWxzbyBgcmVnaXN0ZXJfcHJvdF9ob29rKHNrKWAuIFRoZSBjb21tZW50Li4uICYjMzQ7RG8gbm90IHJlLWFkZCBhIGZhbm91dCBob29rIHRvIGEgZGVhZCBkZXZpY2UuJiMzNDsgVGhhdCBzdWdnZXN0cyB0aGVyZSYjMzk7cyBhIHJlbGF0ZWQgZmFub3V0IG1lY2hhbmlzbS4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgbGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBpcyBhIHNwZWNpZmljIGNvbmZpZyBmb3IgdGhhdC4uLiBJJiMzOTtsbCBjaGVjayBgbmV0L3BhY2tldC9hZl9wYWNrZXQuY2AgdG8gc2VlIGhvdyB0aGUgYGZhbm91dGAgZnVuY3Rpb25hbGl0eSBpcyBoYW5kbGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE4OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Zhbm91dCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9wYWNrZXQvYWZfcGFja2V0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3BhY2tldC9hZl9wYWNrZXQuYz0yMTY9c3RydWN0IHBhY2tldF9za2JfY2Ige1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMjQyLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoyNDM6c3RhdGljIHZvaWQgX19mYW5vdXRfdW5saW5rKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHBhY2tldF9zb2NrICpwbyk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI0NDpzdGF0aWMgdm9pZCBfX2Zhbm91dF9saW5rKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHBhY2tldF9zb2NrICpwbyk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI0NS1cbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTMzNj1zdGF0aWMgdm9pZCBfX3JlZ2lzdGVyX3Byb3RfaG9vayhzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zNDAtXHRpZiAoIXBhY2tldF9zb2NrX2ZsYWcocG8sIFBBQ0tFVF9TT0NLX1JVTk5JTkcpKSB7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjM0MTpcdFx0aWYgKHBvLVx1MDAzZWZhbm91dClcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzQyOlx0XHRcdF9fZmFub3V0X2xpbmsoc2ssIHBvKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzQzLVx0XHRlbHNlXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0zNjM9c3RhdGljIHZvaWQgX191bnJlZ2lzdGVyX3Byb3RfaG9vayhzdHJ1Y3Qgc29jayAqc2ssIGJvb2wgc3luYylcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM3MC1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzcxOlx0aWYgKHBvLVx1MDAzZWZhbm91dClcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzcyOlx0XHRfX2Zhbm91dF91bmxpbmsoc2ssIHBvKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzczLVx0ZWxzZVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MTMyNT1zdGF0aWMgdm9pZCBwYWNrZXRfc29ja19kZXN0cnVjdChzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMzM3LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxMzM4OnN0YXRpYyBib29sIGZhbm91dF9mbG93X2lzX2h1Z2Uoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTMzOS17XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMzU3LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxMzU4OnN0YXRpYyB1bnNpZ25lZCBpbnQgZmFub3V0X2RlbXV4X2hhc2goc3RydWN0IHBhY2tldF9mYW5vdXQgKmYsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTEzNTktXHRcdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTM2NC1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTM2NTpzdGF0aWMgdW5zaWduZWQgaW50IGZhbm91dF9kZW11eF9sYihzdHJ1Y3QgcGFja2V0X2Zhbm91dCAqZixcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTM2Ni1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTM3My1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTM3NDpzdGF0aWMgdW5zaWduZWQgaW50IGZhbm91dF9kZW11eF9jcHUoc3RydWN0IHBhY2tldF9mYW5vdXQgKmYsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTEzNzUtXHRcdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMzgwLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxMzgxOnN0YXRpYyB1bnNpZ25lZCBpbnQgZmFub3V0X2RlbXV4X3JuZChzdHJ1Y3QgcGFja2V0X2Zhbm91dCAqZixcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTM4Mi1cdFx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTEzODctXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjEzODg6c3RhdGljIHVuc2lnbmVkIGludCBmYW5vdXRfZGVtdXhfcm9sbG92ZXIoc3RydWN0IHBhY2tldF9mYW5vdXQgKmYsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTEzODktXHRcdFx0XHRcdCAgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0MDAtXHRcdGlmIChyb29tID09IFJPT01fTk9STUFMIHx8XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0MDE6XHRcdCAgICAocm9vbSA9PSBST09NX0xPVyBcdTAwMjZcdTAwMjYgIWZhbm91dF9mbG93X2lzX2h1Z2UocG8sIHNrYikpKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDAyLVx0XHRcdHJldHVybiBpZHg7XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDI3LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNDI4OnN0YXRpYyB1bnNpZ25lZCBpbnQgZmFub3V0X2RlbXV4X3FtKHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDI5LVx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDM0LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNDM1OnN0YXRpYyB1bnNpZ25lZCBpbnQgZmFub3V0X2RlbXV4X2JwZihzdHJ1Y3QgcGFja2V0X2Zhbm91dCAqZixcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQzNi1cdFx0XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0NTAtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0NTE6c3RhdGljIGJvb2wgZmFub3V0X2hhc19mbGFnKHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmLCB1MTYgZmxhZylcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ1Mi17XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDU1LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNDU2OnN0YXRpYyBpbnQgcGFja2V0X3Jjdl9mYW5vdXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ1Ny1cdFx0XHQgICAgIHN0cnVjdCBwYWNrZXRfdHlwZSAqcHQsIHN0cnVjdCBuZXRfZGV2aWNlICpvcmlnX2Rldilcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ1OC17XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0NTk6XHRzdHJ1Y3QgcGFja2V0X2Zhbm91dCAqZiA9IHB0LVx1MDAzZWFmX3BhY2tldF9wcml2O1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDYwLVx0dW5zaWduZWQgaW50IG51bSA9IFJFQURfT05DRShmLVx1MDAzZW51bV9tZW1iZXJzKTtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0NjktXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0NzA6XHRpZiAoZmFub3V0X2hhc19mbGFnKGYsIFBBQ0tFVF9GQU5PVVRfRkxBR19ERUZSQUcpKSB7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0NzEtXHRcdHNrYiA9IGlwX2NoZWNrX2RlZnJhZyhuZXQsIHNrYiwgSVBfREVGUkFHX0FGX1BBQ0tFVCk7XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDc3LVx0ZGVmYXVsdDpcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTQ3ODpcdFx0aWR4ID0gZmFub3V0X2RlbXV4X2hhc2goZiwgc2tiLCBudW0pO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDc5LVx0XHRicmVhaztcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ4MC1cdGNhc2UgUEFDS0VUX0ZBTk9VVF9MQjpcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTQ4MTpcdFx0aWR4ID0gZmFub3V0X2RlbXV4X2xiKGYsIHNrYiwgbnVtKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ4Mi1cdFx0YnJlYWs7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0ODMtXHRjYXNlIFBBQ0tFVF9GQU5PVVRfQ1BVOlxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNDg0Olx0XHRpZHggPSBmYW5vdXRfZGVtdXhfY3B1KGYsIHNrYiwgbnVtKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ4NS1cdFx0YnJlYWs7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0ODYtXHRjYXNlIFBBQ0tFVF9GQU5PVVRfUk5EOlxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNDg3Olx0XHRpZHggPSBmYW5vdXRfZGVtdXhfcm5kKGYsIHNrYiwgbnVtKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ4OC1cdFx0YnJlYWs7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0ODktXHRjYXNlIFBBQ0tFVF9GQU5PVVRfUU06XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0OTA6XHRcdGlkeCA9IGZhbm91dF9kZW11eF9xbShmLCBza2IsIG51bSk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0OTEtXHRcdGJyZWFrO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDkyLVx0Y2FzZSBQQUNLRVRfRkFOT1VUX1JPTExPVkVSOlxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNDkzOlx0XHRpZHggPSBmYW5vdXRfZGVtdXhfcm9sbG92ZXIoZiwgc2tiLCAwLCBmYWxzZSwgbnVtKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ5NC1cdFx0YnJlYWs7XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDk2LVx0Y2FzZSBQQUNLRVRfRkFOT1VUX0VCUEY6XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0OTc6XHRcdGlkeCA9IGZhbm91dF9kZW11eF9icGYoZiwgc2tiLCBudW0pO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDk4LVx0XHRicmVhaztcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1MDAtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE1MDE6XHRpZiAoZmFub3V0X2hhc19mbGFnKGYsIFBBQ0tFVF9GQU5PVVRfRkxBR19ST0xMT1ZFUikpXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE1MDI6XHRcdGlkeCA9IGZhbm91dF9kZW11eF9yb2xsb3ZlcihmLCBza2IsIGlkeCwgdHJ1ZSwgbnVtKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTUwMy1cbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1MDctXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE1MDg6REVGSU5FX01VVEVYKGZhbm91dF9tdXRleCk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE1MDk6RVhQT1JUX1NZTUJPTF9HUEwoZmFub3V0X211dGV4KTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTUxMDpzdGF0aWMgTElTVF9IRUFEKGZhbm91dF9saXN0KTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTUxMTpzdGF0aWMgdTE2IGZhbm91dF9uZXh0X2lkO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTEyLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNTEzOnN0YXRpYyB2b2lkIF9fZmFub3V0X2xpbmsoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTE0LXtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTUxNTpcdHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmID0gcG8tXHUwMDNlZmFub3V0O1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTE2LVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTUyNS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTUyNjpzdGF0aWMgdm9pZCBfX2Zhbm91dF91bmxpbmsoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTI3LXtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTUyODpcdHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmID0gcG8tXHUwMDNlZmFub3V0O1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTI5LVx0aW50IGk7XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTQ2LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNTQ3OnN0YXRpYyBib29sIG1hdGNoX2Zhbm91dF9ncm91cChzdHJ1Y3QgcGFja2V0X3R5cGUgKnB0eXBlLCBzdHJ1Y3Qgc29jayAqc2spXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1NDgte1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTU1MS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTU1MjpcdHJldHVybiBwdHlwZS1cdTAwM2VhZl9wYWNrZXRfcHJpdiA9PSBwa3Rfc2soc2spLVx1MDAzZWZhbm91dDtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTU1My19XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1NTQtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE1NTU6c3RhdGljIHZvaWQgZmFub3V0X2luaXRfZGF0YShzdHJ1Y3QgcGFja2V0X2Zhbm91dCAqZilcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTU1Ni17XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTY3LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNTY4OnN0YXRpYyB2b2lkIF9fZmFub3V0X3NldF9kYXRhX2JwZihzdHJ1Y3QgcGFja2V0X2Zhbm91dCAqZiwgc3RydWN0IGJwZl9wcm9nICpuZXcpXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1Njkte1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTU4Mi1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTU4MzpzdGF0aWMgaW50IGZhbm91dF9zZXRfZGF0YV9jYnBmKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHNvY2twdHJfdCBkYXRhLFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTg0LVx0XHRcdFx0dW5zaWduZWQgaW50IGxlbilcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MDAtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2MDE6XHRfX2Zhbm91dF9zZXRfZGF0YV9icGYocG8tXHUwMDNlZmFub3V0LCBuZXcpO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjAyLVx0cmV0dXJuIDA7XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjA0LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjA1OnN0YXRpYyBpbnQgZmFub3V0X3NldF9kYXRhX2VicGYoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc29ja3B0cl90IGRhdGEsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MDYtXHRcdFx0XHR1bnNpZ25lZCBpbnQgbGVuKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTYyMS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTYyMjpcdF9fZmFub3V0X3NldF9kYXRhX2JwZihwby1cdTAwM2VmYW5vdXQsIG5ldyk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MjMtXHRyZXR1cm4gMDtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MjUtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2MjY6c3RhdGljIGludCBmYW5vdXRfc2V0X2RhdGEoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc29ja3B0cl90IGRhdGEsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MjctXHRcdFx0ICAgdW5zaWduZWQgaW50IGxlbilcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTYyOC17XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2Mjk6XHRzd2l0Y2ggKHBvLVx1MDAzZWZhbm91dC1cdTAwM2V0eXBlKSB7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MzAtXHRjYXNlIFBBQ0tFVF9GQU5PVVRfQ0JQRjpcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTYzMTpcdFx0cmV0dXJuIGZhbm91dF9zZXRfZGF0YV9jYnBmKHBvLCBkYXRhLCBsZW4pO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjMyLVx0Y2FzZSBQQUNLRVRfRkFOT1VUX0VCUEY6XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2MzM6XHRcdHJldHVybiBmYW5vdXRfc2V0X2RhdGFfZWJwZihwbywgZGF0YSwgbGVuKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTYzNC1cdGRlZmF1bHQ6XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjM4LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjM5OnN0YXRpYyB2b2lkIGZhbm91dF9yZWxlYXNlX2RhdGEoc3RydWN0IHBhY2tldF9mYW5vdXQgKmYpXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2NDAte1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTY0My1cdGNhc2UgUEFDS0VUX0ZBTk9VVF9FQlBGOlxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjQ0Olx0XHRfX2Zhbm91dF9zZXRfZGF0YV9icGYoZiwgTlVMTCk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2NDUtXHR9XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjQ3LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjQ4OnN0YXRpYyBib29sIF9fZmFub3V0X2lkX2lzX2ZyZWUoc3RydWN0IHNvY2sgKnNrLCB1MTYgY2FuZGlkYXRlX2lkKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjQ5LXtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTY1MDpcdHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjUxLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjUyOlx0bGlzdF9mb3JfZWFjaF9lbnRyeShmLCBcdTAwMjZmYW5vdXRfbGlzdCwgbGlzdCkge1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjUzLVx0XHRpZiAoZi1cdTAwM2VpZCA9PSBjYW5kaWRhdGVfaWQgXHUwMDI2XHUwMDI2XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjYwLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjYxOnN0YXRpYyBib29sIGZhbm91dF9maW5kX25ld19pZChzdHJ1Y3Qgc29jayAqc2ssIHUxNiAqbmV3X2lkKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjYyLXtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTY2MzpcdHUxNiBpZCA9IGZhbm91dF9uZXh0X2lkO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjY0LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjY1LVx0ZG8ge1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjY2Olx0XHRpZiAoX19mYW5vdXRfaWRfaXNfZnJlZShzaywgaWQpKSB7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2NjctXHRcdFx0Km5ld19pZCA9IGlkO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjY4Olx0XHRcdGZhbm91dF9uZXh0X2lkID0gaWQgJiM0MzsgMTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTY2OS1cdFx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2NzItXHRcdGlkJiM0MzsmIzQzOztcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTY3MzpcdH0gd2hpbGUgKGlkICE9IGZhbm91dF9uZXh0X2lkKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTY3NC1cbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2NzctXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2Nzg6c3RhdGljIGludCBmYW5vdXRfYWRkKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IGZhbm91dF9hcmdzICphcmdzKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjc5LXtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2ODItXHR1MTYgdHlwZV9mbGFncyA9IGFyZ3MtXHUwMDNldHlwZV9mbGFncztcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTY4MzpcdHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmLCAqbWF0Y2g7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2ODQtXHR1OCB0eXBlID0gdHlwZV9mbGFncyBcdTAwMjYgMHhmZjtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3MDUtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE3MDY6XHRtdXRleF9sb2NrKFx1MDAyNmZhbm91dF9tdXRleCk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3MDctXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3MDgtXHRlcnIgPSAtRUFMUkVBRFk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE3MDk6XHRpZiAocG8tXHUwMDNlZmFub3V0KVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzEwLVx0XHRnb3RvIG91dDtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3MjctXHRcdH1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTcyODpcdFx0aWYgKCFmYW5vdXRfZmluZF9uZXdfaWQoc2ssIFx1MDAyNmlkKSkge1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzI5LVx0XHRcdGVyciA9IC1FTk9NRU07XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzM2LVx0bWF0Y2ggPSBOVUxMO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNzM3Olx0bGlzdF9mb3JfZWFjaF9lbnRyeShmLCBcdTAwMjZmYW5vdXRfbGlzdCwgbGlzdCkge1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzM4LVx0XHRpZiAoZi1cdTAwM2VpZCA9PSBpZCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3NjctXHRcdHJlZmNvdW50X3NldChcdTAwMjZtYXRjaC1cdTAwM2Vza19yZWYsIDApO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNzY4Olx0XHRmYW5vdXRfaW5pdF9kYXRhKG1hdGNoKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTc2OS1cdFx0bWF0Y2gtXHUwMDNlcHJvdF9ob29rLnR5cGUgPSBwby1cdTAwM2Vwcm90X2hvb2sudHlwZTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTc3MC1cdFx0bWF0Y2gtXHUwMDNlcHJvdF9ob29rLmRldiA9IHBvLVx1MDAzZXByb3RfaG9vay5kZXY7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE3NzE6XHRcdG1hdGNoLVx1MDAzZXByb3RfaG9vay5mdW5jID0gcGFja2V0X3Jjdl9mYW5vdXQ7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3NzItXHRcdG1hdGNoLVx1MDAzZXByb3RfaG9vay5hZl9wYWNrZXRfcHJpdiA9IG1hdGNoO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzczLVx0XHRtYXRjaC1cdTAwM2Vwcm90X2hvb2suYWZfcGFja2V0X25ldCA9IHJlYWRfcG5ldChcdTAwMjZtYXRjaC1cdTAwM2VuZXQpO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNzc0Olx0XHRtYXRjaC1cdTAwM2Vwcm90X2hvb2suaWRfbWF0Y2ggPSBtYXRjaF9mYW5vdXRfZ3JvdXA7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3NzUtXHRcdG1hdGNoLVx1MDAzZW1heF9udW1fbWVtYmVycyA9IGFyZ3MtXHUwMDNlbWF4X251bV9tZW1iZXJzO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzc2LVx0XHRtYXRjaC1cdTAwM2Vwcm90X2hvb2suaWdub3JlX291dGdvaW5nID0gdHlwZV9mbGFncyBcdTAwMjYgUEFDS0VUX0ZBTk9VVF9GTEFHX0lHTk9SRV9PVVRHT0lORztcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTc3NzpcdFx0bGlzdF9hZGQoXHUwMDI2bWF0Y2gtXHUwMDNlbGlzdCwgXHUwMDI2ZmFub3V0X2xpc3QpO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzc4LVx0fVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTc4OC1cdFx0XHQvKiBQYWlyZWQgd2l0aCBwYWNrZXRfc2V0c29ja29wdChQQUNLRVRfRkFOT1VUX0RBVEEpICovXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE3ODk6XHRcdFx0V1JJVEVfT05DRShwby1cdTAwM2VmYW5vdXQsIG1hdGNoKTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTc5MC1cbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3OTUtXHRcdFx0XHRfX2Rldl9yZW1vdmVfcGFjayhcdTAwMjZwby1cdTAwM2Vwcm90X2hvb2spO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNzk2Olx0XHRcdFx0X19mYW5vdXRfbGluayhzaywgcG8pO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzk3LVx0XHRcdH1cbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE4MDktXHRrZnJlZShyb2xsb3Zlcik7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE4MTA6XHRtdXRleF91bmxvY2soXHUwMDI2ZmFub3V0X211dGV4KTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTgxMS1cdHJldHVybiBlcnI7XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xODEzLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxODE0Oi8qIElmIHBrdF9zayhzayktXHUwMDNlZmFub3V0LVx1MDAzZXNrX3JlZiBpcyB6ZXJvLCB0aGlzIGZ1bmN0aW9uIHJlbW92ZXNcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTgxNTogKiBwa3Rfc2soc2spLVx1MDAzZWZhbm91dCBmcm9tIGZhbm91dF9saXN0IGFuZCByZXR1cm5zIHBrdF9zayhzayktXHUwMDNlZmFub3V0LlxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxODE2OiAqIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY2FsbGVyIHRvIGNhbGwgZmFub3V0X3JlbGVhc2VfZGF0YSgpIGFuZFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxODE3OiAqIGZyZWUgdGhlIHJldHVybmVkIHBhY2tldF9mYW5vdXQgKGFmdGVyIHN5bmNocm9uaXplX25ldCgpKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xODE4LSAqL1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxODE5OnN0YXRpYyBzdHJ1Y3QgcGFja2V0X2Zhbm91dCAqZmFub3V0X3JlbGVhc2Uoc3RydWN0IHNvY2sgKnNrKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xODIwLXtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTgyMS1cdHN0cnVjdCBwYWNrZXRfc29jayAqcG8gPSBwa3Rfc2soc2spO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxODIyOlx0c3RydWN0IHBhY2tldF9mYW5vdXQgKmY7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE4MjMtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE4MjQ6XHRtdXRleF9sb2NrKFx1MDAyNmZhbm91dF9tdXRleCk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE4MjU6XHRmID0gcG8tXHUwMDNlZmFub3V0O1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xODI2LVx0aWYgKGYpIHtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTgyNzpcdFx0cG8tXHUwMDNlZmFub3V0ID0gTlVMTDtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTgyOC1cbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE4MzMtXHR9XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE4MzQ6XHRtdXRleF91bmxvY2soXHUwMDI2ZmFub3V0X211dGV4KTtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTgzNS1cbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTMxMjI9c3RhdGljIGludCBwYWNrZXRfcmVsZWFzZShzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzEyNS1cdHN0cnVjdCBwYWNrZXRfc29jayAqcG87XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjMxMjY6XHRzdHJ1Y3QgcGFja2V0X2Zhbm91dCAqZjtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzEyNy1cdHN0cnVjdCBuZXQgKm5ldDtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxNjYtXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjMxNjc6XHRmID0gZmFub3V0X3JlbGVhc2Uoc2spO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTY4LVxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzE3Mi1cdGlmIChmKSB7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjMxNzM6XHRcdGZhbm91dF9yZWxlYXNlX2RhdGEoZik7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxNzQtXHRcdGt2ZnJlZShmKTtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTMxOTU9c3RhdGljIGludCBwYWNrZXRfZG9fYmluZChzdHJ1Y3Qgc29jayAqc2ssIGNvbnN0IGNoYXIgKm5hbWUsIGludCBpZmluZGV4LFxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzIxMC1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzIxMTpcdGlmIChwby1cdTAwM2VmYW5vdXQpIHtcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzIxMi1cdFx0cmV0ID0gLUVJTlZBTDtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTM3ODc9cGFja2V0X3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCxcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM5OTQtXHR7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjM5OTU6XHRcdHN0cnVjdCBmYW5vdXRfYXJncyBhcmdzID0geyAwIH07XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM5OTYtXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00MDAxLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0MDAyOlx0XHRyZXR1cm4gZmFub3V0X2FkZChzaywgXHUwMDI2YXJncyk7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQwMDMtXHR9XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00MDA1LVx0e1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0MDA2Olx0XHQvKiBQYWlyZWQgd2l0aCB0aGUgV1JJVEVfT05DRSgpIGluIGZhbm91dF9hZGQoKSAqL1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0MDA3Olx0XHRpZiAoIVJFQURfT05DRShwby1cdTAwM2VmYW5vdXQpKVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00MDA4LVx0XHRcdHJldHVybiAtRUlOVkFMO1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00MDA5LVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0MDEwOlx0XHRyZXR1cm4gZmFub3V0X3NldF9kYXRhKHBvLCBvcHR2YWwsIG9wdGxlbik7XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQwMTEtXHR9XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz00MDU5PXN0YXRpYyBpbnQgcGFja2V0X2dldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQxNDgtXHRjYXNlIFBBQ0tFVF9GQU5PVVQ6XG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjQxNDk6XHRcdHZhbCA9IChwby1cdTAwM2VmYW5vdXQgP1xubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0MTUwOlx0XHQgICAgICAgKCh1MzIpcG8tXHUwMDNlZmFub3V0LVx1MDAzZWlkIHxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDE1MTpcdFx0XHQoKHUzMilwby1cdTAwM2VmYW5vdXQtXHUwMDNldHlwZSBcdTAwM2NcdTAwM2MgMTYpIHxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDE1MjpcdFx0XHQoKHUzMilwby1cdTAwM2VmYW5vdXQtXHUwMDNlZmxhZ3MgXHUwMDNjXHUwMDNjIDI0KSkgOlxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00MTUzLVx0XHQgICAgICAgMCk7XG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz00NDE2PXN0YXRpYyBpbnQgcGFja2V0X3NldF9yaW5nKHN0cnVjdCBzb2NrICpzaywgdW5pb24gdHBhY2tldF9yZXFfdSAqcmVxX3UsXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NTY1LVx0ICogTkVUREVWX1VOUkVHSVNURVIgbWF5IGhhdmUgaW52YWxpZGF0ZWQgdGhlIGJpbmRpbmcgd2hpbGUgYmluZF9sb2NrXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjQ1NjY6XHQgKiB3YXMgZHJvcHBlZCBhYm92ZS4gIERvIG5vdCByZS1hZGQgYSBmYW5vdXQgaG9vayB0byBhIGRlYWQgZGV2aWNlLlxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NTY3LVx0ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTg6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA0NTEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0ODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBCdWcgRml4IGZvciBGYW5vdXQgSG9va3MqKgoKT2theSwgc28gdGhlIGNvbW1lbnQgZXhwbGljaXRseSBzdGF0ZXMgJiMzNDtEbyBub3QgcmUtYWRkIGEgZmFub3V0IGhvb2sgdG8gYSBkZWFkIGRldmljZS4mIzM0OyBUaGUgcGF0Y2gmIzM5O3MgY29yZSBsb2dpYyBpcyB0byBwcmV2ZW50IHRoZSBjYWxsIHRvIGByZWdpc3Rlcl9wcm90X2hvb2soc2spYCB3aGVuIGBSRUFEX09OQ0UocG8tJmd0O2lmaW5kZXgpYCBpcyAtMS4gVGhpcyBzcGVjaWZpY2FsbHkgaGFwcGVucyB3aXRoaW4gYHBhY2tldF9zZXRfcmluZ2AuCgpUaGVyZWZvcmUsIHRoZSBpc3N1ZSBpcyBkaXJlY3RseSByZWxhdGVkIHRvIGBQQUNLRVRfRkFOT1VUYCBhbmQgdGhlIGBwYWNrZXRfc2V0X3JpbmdgIGZ1bmN0aW9uLiBUaGUgY29uZmlndXJhdGlvbiBpbiBxdWVzdGlvbiBoZXJlIGlzIGBQQUNLRVRgLCBidXQgbGV0JiMzOTtzIHF1aWNrbHkgY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3MuIEFoLCBgZmFub3V0X3NldF9kYXRhX2VicGZgIGlzIHVzZWQgZm9yIGBQQUNLRVRfRkFOT1VUX0VCUEZgLCBidXQgaXQmIzM5O3Mgbm90IHJlbGV2YW50IHRvIHRoaXMgYnVnIGFzIGl0JiMzOTtzIHNwZWNpZmljYWxseSBhYm91dCBgcGFja2V0X3NldF9yaW5nYCBhbmQgYHJlZ2lzdGVyX3Byb3RfaG9va2AsIHJpZ2h0PyBUaGlzIHNob3VsZCBhcHBseSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgZmFub3V0IGlzIGFjdHVhbGx5ICp1c2VkKiBvciBub3QuCgpOb3csIGxldCYjMzk7cyB0cmFjZSB0aGUgZXhlY3V0aW9uOiBgcmVnaXN0ZXJfcHJvdF9ob29rKHNrKWAgY2FsbHMgYF9fcmVnaXN0ZXJfcHJvdF9ob29rKHNrKWAuIExvb2tpbmcgYXQgdGhlIGNvZGU6CgpgYGBjCnN0YXRpYyB2b2lkIF9fcmVnaXN0ZXJfcHJvdF9ob29rKHN0cnVjdCBzb2NrICpzaykKewoJc3RydWN0IHBhY2tldF9zb2NrICpwbyA9IHBrdF9zayhzayk7CgoJaWYgKCFwYWNrZXRfc29ja19mbGFnKHBvLCBQQUNLRVRfU09DS19SVU5OSU5HKSkgewoJCWlmIChwby0mZ3Q7ZmFub3V0KQoJCQlfX2Zhbm91dF9saW5rKHNrLCBwbyk7CgkJZWxzZQoJCQlfX2Rldl9hZGRfcGFjaygmYW1wO3BvLSZndDtwcm90X2hvb2spOwoKCQlzb2NrX2hvbGQoc2spOwoJCXBhY2tldF9zb2NrX2ZsYWdfc2V0KHBvLCBQQUNLRVRfU09DS19SVU5OSU5HLCAxKTsKCX0KfQpgYGAKCklmIGBwby0mZ3Q7aWZpbmRleGAgaXMgLTEsIHRoZSBkZXZpY2UgaXMgZGVhZC4gSWYgYHBvLSZndDtmYW5vdXRgIGlzIHNldCwgaXQgbGlua3MgdG8gdGhlIGZhbm91dCBncm91cC4gSWYgaXQmIzM5O3MgKm5vdCogc2V0LCBpdCBhZGRzIHRoZSBzb2NrZXQgdG8gYGRldl9hZGRfcGFja2AuIEluIGVpdGhlciBjYXNlLCB3aGV0aGVyIGl0JiMzOTtzIGZhbm91dCBvciBub3QsIHRoZSBidWcgaXMgYWJvdXQgKnJlKi1hZGRpbmcgdGhlIHNvY2tldCB0byBhIGRlYWQgZGV2aWNlLCB3aGljaCBpcyBpbmNvcnJlY3QuIFRoZSBjb21tZW50IG1lbnRpb25zICYjMzQ7ZmFub3V0IGhvb2ssJiMzNDsgYnV0IGl0JiMzOTtzIHJlYWxseSB0aGUgYnJvYWRlciBpc3N1ZSBvZiBgcmVnaXN0ZXJfcHJvdF9ob29rYCB0aGF0JiMzOTtzIHRoZSBwcm9ibGVtLgoKQWxyaWdodCwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoZSBgcGFja2V0X3NldF9yaW5nYCBmdW5jdGlvbiBpbiBgbmV0L3BhY2tldC9hZl9wYWNrZXQuY2AgdG8gc2VlIGhvdyB0aGlzIHNpdHVhdGlvbiBjYW4gYXJpc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDE4OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3BhY2tldC9hZl9wYWNrZXQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ1NDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7NDU0MDpcdFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2cmJfcXVldWUtXHUwMDNlbG9jayk7XG40NTQxOlx0XHRcdHN3YXAocmItXHUwMDNlcGdfdmVjLCBwZ192ZWMpO1xuNDU0MjpcdFx0XHRpZiAocG8tXHUwMDNldHBfdmVyc2lvbiBcdTAwM2M9IFRQQUNLRVRfVjIpXG40NTQzOlx0XHRcdFx0c3dhcChyYi1cdTAwM2VyeF9vd25lcl9tYXAsIHJ4X293bmVyX21hcCk7XG40NTQ0Olx0XHRcdHJiLVx1MDAzZWZyYW1lX21heCA9IChyZXEtXHUwMDNldHBfZnJhbWVfbnIgLSAxKTtcbjQ1NDU6XHRcdFx0cmItXHUwMDNlaGVhZCA9IDA7XG40NTQ2Olx0XHRcdHJiLVx1MDAzZWZyYW1lX3NpemUgPSByZXEtXHUwMDNldHBfZnJhbWVfc2l6ZTtcbjQ1NDc6XHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2cmJfcXVldWUtXHUwMDNlbG9jayk7XG40NTQ4Olx0XG40NTQ5Olx0XHRcdHN3YXAocmItXHUwMDNlcGdfdmVjX29yZGVyLCBvcmRlcik7XG40NTUwOlx0XHRcdHN3YXAocmItXHUwMDNlcGdfdmVjX2xlbiwgcmVxLVx1MDAzZXRwX2Jsb2NrX25yKTtcbjQ1NTE6XHRcbjQ1NTI6XHRcdFx0cmItXHUwMDNlcGdfdmVjX3BhZ2VzID0gcmVxLVx1MDAzZXRwX2Jsb2NrX3NpemUvUEFHRV9TSVpFO1xuNDU1MzpcdFx0XHRwby1cdTAwM2Vwcm90X2hvb2suZnVuYyA9IChwby1cdTAwM2VyeF9yaW5nLnBnX3ZlYykgP1xuNDU1NDpcdFx0XHRcdFx0XHRcdHRwYWNrZXRfcmN2IDogcGFja2V0X3JjdjtcbjQ1NTU6XHRcdFx0c2tiX3F1ZXVlX3B1cmdlKHJiX3F1ZXVlKTtcbjQ1NTY6XHRcdFx0aWYgKGF0b21pY19sb25nX3JlYWQoXHUwMDI2cG8tXHUwMDNlbWFwcGVkKSlcbjQ1NTc6XHRcdFx0XHRwcl9lcnIoXCYjMzQ7cGFja2V0X21tYXA6IHZtYSBpcyBidXN5OiAlbGRcXG5cJiMzNDssXG40NTU4Olx0XHRcdFx0ICAgICAgIGF0b21pY19sb25nX3JlYWQoXHUwMDI2cG8tXHUwMDNlbWFwcGVkKSk7XG40NTU5Olx0XHR9XG40NTYwOlx0XHRtdXRleF91bmxvY2soXHUwMDI2cG8tXHUwMDNlcGdfdmVjX2xvY2spO1xuNDU2MTpcdFxuNDU2MjpcdFx0c3Bpbl9sb2NrKFx1MDAyNnBvLVx1MDAzZWJpbmRfbG9jayk7XG40NTYzOlx0XHRXUklURV9PTkNFKHBvLVx1MDAzZW51bSwgbnVtKTtcbjQ1NjQ6XHRcdC8qXG40NTY1Olx0XHQgKiBORVRERVZfVU5SRUdJU1RFUiBtYXkgaGF2ZSBpbnZhbGlkYXRlZCB0aGUgYmluZGluZyB3aGlsZSBiaW5kX2xvY2tcbjQ1NjY6XHRcdCAqIHdhcyBkcm9wcGVkIGFib3ZlLiAgRG8gbm90IHJlLWFkZCBhIGZhbm91dCBob29rIHRvIGEgZGVhZCBkZXZpY2UuXG40NTY3Olx0XHQgKi9cbjQ1Njg6XHRcdGlmICh3YXNfcnVubmluZyBcdTAwMjZcdTAwMjYgUkVBRF9PTkNFKHBvLVx1MDAzZWlmaW5kZXgpICE9IC0xKVxuNDU2OTpcdFx0XHRyZWdpc3Rlcl9wcm90X2hvb2soc2spO1xuNDU3MDpcdFxuNDU3MTpcdFx0c3Bpbl91bmxvY2soXHUwMDI2cG8tXHUwMDNlYmluZF9sb2NrKTtcbjQ1NzI6XHRcdGlmIChwZ192ZWMgXHUwMDI2XHUwMDI2IChwby1cdTAwM2V0cF92ZXJzaW9uIFx1MDAzZSBUUEFDS0VUX1YyKSkge1xuNDU3MzpcdFx0XHQvKiBCZWNhdXNlIHdlIGRvbiYjMzk7dCBzdXBwb3J0IGJsb2NrLWJhc2VkIFYzIG9uIHR4LXJpbmcgKi9cbjQ1NzQ6XHRcdFx0aWYgKCF0eF9yaW5nKVxuNDU3NTpcdFx0XHRcdHByYl9zaHV0ZG93bl9yZXRpcmVfYmxrX3RpbWVyKHBvLCByYl9xdWV1ZSk7XG40NTc2Olx0XHR9XG40NTc3Olx0XG40NTc4Olx0b3V0X2ZyZWVfcGdfdmVjOlxuNDU3OTpcdFx0aWYgKHBnX3ZlYykge1xuNDU4MDpcdFx0XHRiaXRtYXBfZnJlZShyeF9vd25lcl9tYXApO1xuNDU4MTpcdFx0XHRmcmVlX3BnX3ZlYyhwZ192ZWMsIG9yZGVyLCByZXEtXHUwMDNldHBfYmxvY2tfbnIpO1xuNDU4MjpcdFx0fVxuNDU4MzpcdG91dDpcbjQ1ODQ6XHRcdHJldHVybiBlcnI7XG40NTg1Olx0fVxuNDU4NjpcdFxuNDU4NzpcdHN0YXRpYyBpbnQgcGFja2V0X21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXG40NTg4Olx0XHRcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuNDU4OTpcdHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTg6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzNjUKCQkJCQkJCW91dHB1dDogMTAzCgkJCQkJCQl0aG91Z2h0czogMTQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIFNpZ25pZmljYW5jZSoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBleGFtaW5lZCB0aGlzIHBhdGNoLCBhbmQgSSYjMzk7bSBjb25maWRlbnQgaXQmIzM5O3MgYWRkcmVzc2luZyBhIGdlbnVpbmUgZnVuY3Rpb25hbCBpc3N1ZS4gVGhlIGtleSBmdW5jdGlvbiB0byBmb2N1cyBvbiBpcyBgcGFja2V0X3NldF9yaW5nYC4gRnJvbSB0aGUgb3V0c2V0LCBJJiMzOTt2ZSBnb3QgYFBBQ0tFVGAgZW5hYmxlZC4KCk15IHF1aWNrIGNoZWNrIGNvbmZpcm1zIHRoYXQgYENPTkZJR19QQUNLRVRgIGlzIGluZGVlZCBzdWZmaWNpZW50IGZvciB0aGlzLiBOb3RoaW5nIGVsc2Ugc2VlbXMgdG8gYmUgcmVxdWlyZWQuCgpUaGVyZWZvcmUsIEkmIzM5O20gZ29pbmcgdG8gZGV0ZXJtaW5lIHRoaXMgcGF0Y2ggaXMgd29ydGggZnV6emluZyBhbmQgd2lsbCByZXR1cm4gdGhlIGZvbGxvd2luZzogYFdvcnRoRnV6emluZzogdHJ1ZWAsIGFsb25nIHdpdGggYEZvY3VzU3ltYm9sc2A6IGBbJiMzNDtwYWNrZXRfc2V0X3JpbmcmIzM0O11gIGFuZCBgRW5hYmxlQ29uZmlnczogWyYjMzQ7UEFDS0VUJiMzNDtdYC4KCk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggcmVjdGlmaWVzIGEgYnVnIHdpdGhpbiB0aGUgY29yZSBBRl9QQUNLRVQgbG9naWMuIFNwZWNpZmljYWxseSwgaXQgcHJldmVudHMgYSBmYW5vdXQgaG9vayBmcm9tIGJlaW5nIHJlLWFkZGVkIHRvIGEgZGV2aWNlIHRoYXQgaXMgYWxyZWFkeSBkZWFkIHdpdGhpbiBgcGFja2V0X3NldF9yaW5nYC4gVGhlIGZpeCBpbnZvbHZlcyBhIGNoZWNrIHRvIGVuc3VyZSB0aGUgZGV2aWNlIGlzIHN0aWxsIHZhbGlkICggYGlmaW5kZXggIT0gLTFgKSBiZWZvcmUgY2FsbGluZyBgcmVnaXN0ZXJfcHJvdF9ob29rYC4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgbmVlZHMgZnVydGhlciBzY3J1dGlueS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTg6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BBQ0tFVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BhY2tldF9zZXRfcmluZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSBhIGZhbm91dCBob29rIGNvdWxkIGJlIHJlLWFkZGVkIHRvIGEgZGVhZCBkZXZpY2UgaW4gcGFja2V0X3NldF9yaW5nIGJ5IGNoZWNraW5nIGlmIHRoZSBkZXZpY2UgaXMgZGVhZCAoaWZpbmRleCAhPSAtMSkgYmVmb3JlIGNhbGxpbmcgcmVnaXN0ZXJfcHJvdF9ob29rLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQUZfUEFDS0VUIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQQUNLRVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwYWNrZXRfc2V0X3JpbmcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgYSBmYW5vdXQgaG9vayBjb3VsZCBiZSByZS1hZGRlZCB0byBhIGRlYWQgZGV2aWNlIGluIHBhY2tldF9zZXRfcmluZyBieSBjaGVja2luZyBpZiB0aGUgZGV2aWNlIGlzIGRlYWQgKGlmaW5kZXggIT0gLTEpIGJlZm9yZSBjYWxsaW5nIHJlZ2lzdGVyX3Byb3RfaG9vay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEFGX1BBQ0tFVCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE4OjAxOjMwLjc4MjE4ODM1NVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NDc2Njk5MDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBBQ0tFVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBhY2tldF9zZXRfcmluZ1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIHdoZXJlIGEgZmFub3V0IGhvb2sgY291bGQgYmUgcmUtYWRkZWQgdG8gYSBkZWFkIGRldmljZSBpbiBwYWNrZXRfc2V0X3JpbmcgYnkgY2hlY2tpbmcgaWYgdGhlIGRldmljZSBpcyBkZWFkIChpZmluZGV4ICE9IC0xKSBiZWZvcmUgY2FsbGluZyByZWdpc3Rlcl9wcm90X2hvb2suIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBBRl9QQUNLRVQgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE4OjAxOjMwLjc4MjIwMDQzNVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMzNDM2OTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTFkMTNlM2M3YTkzMmI0YzgxNDRmZmZhYTcyNDcyNzA0MzJiZTk4M1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAxIDE4OjAxOjI5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmMgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jXFxuaW5kZXggOGU2ZjNhNzM0YmEwYmQuLmU3NWQyOTMyNDc1YWMwIDEwMDY0NFxcbi0tLSBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmNcXG4rKysgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jXFxuQEAgLTQ1NjEsNyArNDU2MSwxMSBAQCBzdGF0aWMgaW50IHBhY2tldF9zZXRfcmluZyhzdHJ1Y3Qgc29jayAqc2ssIHVuaW9uIHRwYWNrZXRfcmVxX3UgKnJlcV91LFxcbiBcXG4gXFx0c3Bpbl9sb2NrKFxcdTAwMjZwby1cXHUwMDNlYmluZF9sb2NrKTtcXG4gXFx0V1JJVEVfT05DRShwby1cXHUwMDNlbnVtLCBudW0pO1xcbi1cXHRpZiAod2FzX3J1bm5pbmcpXFxuK1xcdC8qXFxuK1xcdCAqIE5FVERFVl9VTlJFR0lTVEVSIG1heSBoYXZlIGludmFsaWRhdGVkIHRoZSBiaW5kaW5nIHdoaWxlIGJpbmRfbG9ja1xcbitcXHQgKiB3YXMgZHJvcHBlZCBhYm92ZS4gIERvIG5vdCByZS1hZGQgYSBmYW5vdXQgaG9vayB0byBhIGRlYWQgZGV2aWNlLlxcbitcXHQgKi9cXG4rXFx0aWYgKHdhc19ydW5uaW5nIFxcdTAwMjZcXHUwMDI2IFJFQURfT05DRShwby1cXHUwMDNlaWZpbmRleCkgIT0gLTEpXFxuIFxcdFxcdHJlZ2lzdGVyX3Byb3RfaG9vayhzayk7XFxuIFxcbiBcXHRzcGluX3VubG9jayhcXHUwMDI2cG8tXFx1MDAzZWJpbmRfbG9jayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE4OjAxOjMxLjQxNjc1NTA3M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg4NDIxMDYyNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUEFDS0VUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGFja2V0X3NldF9yaW5nXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgYSBmYW5vdXQgaG9vayBjb3VsZCBiZSByZS1hZGRlZCB0byBhIGRlYWQgZGV2aWNlIGluIHBhY2tldF9zZXRfcmluZyBieSBjaGVja2luZyBpZiB0aGUgZGV2aWNlIGlzIGRlYWQgKGlmaW5kZXggIT0gLTEpIGJlZm9yZSBjYWxsaW5nIHJlZ2lzdGVyX3Byb3RfaG9vay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEFGX1BBQ0tFVCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1MWQxM2UzYzdhOTMyYjRjODE0NGZmZmFhNzI0NzI3MDQzMmJlOTgzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAxODowMToyOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9wYWNrZXQvYWZfcGFja2V0LmMgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jXG5pbmRleCA4ZTZmM2E3MzRiYTBiZC4uZTc1ZDI5MzI0NzVhYzAgMTAwNjQ0XG4tLS0gYS9uZXQvcGFja2V0L2FmX3BhY2tldC5jXG4rKysgYi9uZXQvcGFja2V0L2FmX3BhY2tldC5jXG5AQCAtNDU2MSw3ICs0NTYxLDExIEBAIHN0YXRpYyBpbnQgcGFja2V0X3NldF9yaW5nKHN0cnVjdCBzb2NrICpzaywgdW5pb24gdHBhY2tldF9yZXFfdSAqcmVxX3UsXG4gXG4gXHRzcGluX2xvY2soXHUwMDI2cG8tXHUwMDNlYmluZF9sb2NrKTtcbiBcdFdSSVRFX09OQ0UocG8tXHUwMDNlbnVtLCBudW0pO1xuLVx0aWYgKHdhc19ydW5uaW5nKVxuK1x0LypcbitcdCAqIE5FVERFVl9VTlJFR0lTVEVSIG1heSBoYXZlIGludmFsaWRhdGVkIHRoZSBiaW5kaW5nIHdoaWxlIGJpbmRfbG9ja1xuK1x0ICogd2FzIGRyb3BwZWQgYWJvdmUuICBEbyBub3QgcmUtYWRkIGEgZmFub3V0IGhvb2sgdG8gYSBkZWFkIGRldmljZS5cbitcdCAqL1xuK1x0aWYgKHdhc19ydW5uaW5nIFx1MDAyNlx1MDAyNiBSRUFEX09OQ0UocG8tXHUwMDNlaWZpbmRleCkgIT0gLTEpXG4gXHRcdHJlZ2lzdGVyX3Byb3RfaG9vayhzayk7XG4gXG4gXHRzcGluX3VubG9jayhcdTAwMjZwby1cdTAwM2ViaW5kX2xvY2spO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTg6MDE6MzEuNDE2NzU4NzkzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY5MTEwMDUzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYWNrZXQgUmluZyBGaXgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3BhY2tldC9hZl9wYWNrZXQuY2AsIHNwZWNpZmljYWxseSB0aGUgYHBhY2tldF9zZXRfcmluZ2AgZnVuY3Rpb24uIFRoZSBjaGFuZ2UgaGVyZSBpcyBwcmV0dHkgY2xlYXI6IGl0J3MgYWRkaW5nIGEgY2hlY2sgYmVmb3JlIHJlLXJlZ2lzdGVyaW5nIGEgZmFub3V0IGhvb2suICBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGlzIGlzIGEgc29saWQsIGZ1bmN0aW9uYWwgYnVnIGZpeC4gRXNzZW50aWFsbHksIGl0IGFwcGVhcnMgd2UncmUgcHJldmVudGluZyBhIGZhbm91dCBob29rIGZyb20gYmVpbmcgYWRkZWQgdG8gYSBuZXR3b3JrIGRldmljZSB0aGF0J3MgYWxyZWFkeSBnb25lOyBhIFwiZGVhZCBkZXZpY2VcIiwgYXMgdGhlIGNvbW1lbnQgcHV0cyBpdC4gVGhlIGtleSBpcyB0aGF0IGBORVRERVZfVU5SRUdJU1RFUmAgbWlnaHQgaGF2ZSBpbnZhbGlkYXRlZCB0aGUgYmluZGluZyB3aGlsZSB0aGUgYGJpbmRfbG9ja2Agd2FzIGRyb3BwZWQsIGFuZCB0aGlzIGNvbmRpdGlvbmFsIGBSRUFEX09OQ0UocG8tXHUwMDNlaWZpbmRleCkgIT0gLTFgIGlzIHRoZSBuZXcgZ3VhcmQuICBFc3NlbnRpYWxseSwgaXQncyBtYWtpbmcgc3VyZSB0aGUgZGV2aWNlIGlzIHN0aWxsIHZhbGlkIGJlZm9yZSB0cnlpbmcgdG8gcmVnaXN0ZXIgdGhlIGhvb2suIFRoaXMgaXMgZ29vZCBwcmFjdGljZS5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEknbSBnb2luZyB0byBxdWlja2x5IGdyZXAgdGhlIGNvZGUgdG8gZG91YmxlLWNoZWNrIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IGBwYWNrZXRfc2V0X3JpbmdgIGlzIHVzZWQgYW5kIGVuc3VyZSB0aGVyZSBhcmUgbm8gdW5pbnRlbmRlZCBzaWRlIGVmZmVjdHMuIFRpbWUgdG8gZmlyZSB1cCBncmVwcGVyIGFuZCBnZXQgYSBicm9hZGVyIHZpZXcgb2YgdGhlIGZ1bmN0aW9uJ3MgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg5MCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE4OjAxOjM2LjEwNzg2MjgwNloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDE2MzQ3NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGFja2V0X3NldF9yaW5nXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9wYWNrZXQvYWZfcGFja2V0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zNi0gKiAgICAgICAgIFVsaXNlcyBBbG9uc28gICAgICAgIDogICAgICAgRnJhbWUgbnVtYmVyIGxpbWl0IHJlbW92YWwgYW5kXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozNzogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3NldF9yaW5nIG1lbW9yeSBsZWFrLlxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzgtICpcXHRcXHRFcmljIEJpZWRlcm1hblxcdDpcXHRBbGxvdyBmb3IgXFx1MDAzZSA4IGJ5dGUgaGFyZHdhcmUgYWRkcmVzc2VzLlxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz0xNjc9dW5pb24gdHBhY2tldF91aGRyIHtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTczLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTc0OnN0YXRpYyBpbnQgcGFja2V0X3NldF9yaW5nKHN0cnVjdCBzb2NrICpzaywgdW5pb24gdHBhY2tldF9yZXFfdSAqcmVxX3UsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzUtXFx0XFx0aW50IGNsb3NpbmcsIGludCB0eF9yaW5nKTtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MzEyMj1zdGF0aWMgaW50IHBhY2tldF9yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxNTctXFx0XFx0bWVtc2V0KFxcdTAwMjZyZXFfdSwgMCwgc2l6ZW9mKHJlcV91KSk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMTU4OlxcdFxcdHBhY2tldF9zZXRfcmluZyhzaywgXFx1MDAyNnJlcV91LCAxLCAwKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxNTktXFx0fVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTYyLVxcdFxcdG1lbXNldChcXHUwMDI2cmVxX3UsIDAsIHNpemVvZihyZXFfdSkpO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MzE2MzpcXHRcXHRwYWNrZXRfc2V0X3Jpbmcoc2ssIFxcdTAwMjZyZXFfdSwgMSwgMSk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTY0LVxcdH1cXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9Mzc4Nz1wYWNrZXRfc2V0c29ja29wdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLCBzb2NrcHRyX3Qgb3B0dmFsLFxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zODQ0LVxcdFxcdGlmICghcmV0KVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6Mzg0NTpcXHRcXHRcXHRyZXQgPSBwYWNrZXRfc2V0X3Jpbmcoc2ssIFxcdTAwMjZyZXFfdSwgMCxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM4NDYtXFx0XFx0XFx0XFx0XFx0ICAgICAgb3B0bmFtZSA9PSBQQUNLRVRfVFhfUklORyk7XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTQzOTE9c3RhdGljIHN0cnVjdCBwZ3YgKmFsbG9jX3BnX3ZlYyhzdHJ1Y3QgdHBhY2tldF9yZXEgKnJlcSwgaW50IG9yZGVyKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NDE1LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDQxNjpzdGF0aWMgaW50IHBhY2tldF9zZXRfcmluZyhzdHJ1Y3Qgc29jayAqc2ssIHVuaW9uIHRwYWNrZXRfcmVxX3UgKnJlcV91LFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDQxNy1cXHRcXHRpbnQgY2xvc2luZywgaW50IHR4X3JpbmcpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE4OjAxOjM2LjcwOTUxMjY4N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4OTMxNDc2MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzaW11bGF0aW9uIG9mIG15IHRob3VnaHQgcHJvY2VzczpcblxuKipSZXZpZXdpbmcgYSBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXQqKlxuXG5BbHJpZ2h0LCB0aGUgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHByb21pc2luZy4gVGhlIGNvcmUgY2hhbmdlLCB0aGUgb25lIEkgd2FudCB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLCBpcyB3aXRoaW4gYHBhY2tldF9zZXRfcmluZ2AuIFRoZSBmYWN0IHRoYXQgaXQncyBhbHJlYWR5IGNvbnNpZGVyZWQgZnVuY3Rpb25hbCBhbmQgcHJpbWVkIGZvciBmdXp6aW5nIGlzIGEgZ29vZCBzaWduLiBUaGF0IHN1Z2dlc3RzIHNvbWVvbmUgaGFzIGFscmVhZHkgaWRlbnRpZmllZCB0aGlzIGFzIGEgcG90ZW50aWFsIHNvdXJjZSBvZiBpbnRlcmVzdGluZyBiZWhhdmlvci5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBwYXRoLiBgcGFja2V0X3NldF9yaW5nYCBpcyBjYWxsZWQgZnJvbSBgcGFja2V0X3NldHNvY2tvcHRgLiBNb3JlIHNwZWNpZmljYWxseSwgaXQncyBpbnZva2VkIHdoZW4gYFBBQ0tFVF9UWF9SSU5HYCBvciBgUEFDS0VUX1JYX1JJTkdgIHNvY2tldCBvcHRpb25zIGFyZSB1c2VkLiBUaGlzIGNvbmZpcm1zIHRoYXQgc29ja2V0IG9wdGlvbnMgYXJlIGxpa2VseSB0aGUgaW50ZXJmYWNlIHdlIHdpbGwgYmUgZnV6emluZyBvbi4gVGhlIG92ZXJhbGwgc3Vic3lzdGVtIGNvbmZpZ3VyYXRpb24gaXMgY2xlYXJseSBkZXBlbmRlbnQgb24gdGhlIGBDT05GSUdfUEFDS0VUYCBrZXJuZWwgb3B0aW9uIGZvciBBRl9QQUNLRVQuXG5cbk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgbW9yZSBjbG9zZWx5LiBJIHNob3VsZCB2ZXJpZnkgdGhlIGJ1aWxkIGZsYWdzLCBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgb3RoZXIgcmVsZXZhbnQgS2NvbmZpZyBkaXJlY3RpdmVzLiBMZXQncyBkaWcgaW50byBgbmV0L3BhY2tldC9LY29uZmlnYCB0byBjb25maXJtIHRoZXNlIGFzc3VtcHRpb25zIGFuZCBleHBsb3JlIHdoZXRoZXIgdGhlcmUgYXJlIGFueSBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDU4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTg6MDE6NDAuNjAyNjY0ODQ4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MDc5Mzc5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUEFDS0VUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9wYWNrZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvcGFja2V0L0tjb25maWctNS1cXG5uZXQvcGFja2V0L0tjb25maWc6Njpjb25maWcgUEFDS0VUXFxubmV0L3BhY2tldC9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIlBhY2tldCBzb2NrZXRcXFwiXFxuLS1cXG5uZXQvcGFja2V0L0tjb25maWctMTgtXFxubmV0L3BhY2tldC9LY29uZmlnOjE5OmNvbmZpZyBQQUNLRVRfRElBR1xcbm5ldC9wYWNrZXQvS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiUGFja2V0OiBzb2NrZXRzIG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxODowMTo0MC44NDM0Njg5NDRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODA1NzgyMDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgS2VybmVsIFBhY2tldCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIG1haW4gY29uZmlndXJhdGlvbiBoZXJlLCBpdCBsb29rcyBsaWtlLCBpcyBgQ09ORklHX1BBQ0tFVGAuIEdvdCBpdC4gVGhlIGtleSBmdW5jdGlvbiB3ZSdyZSBmb2N1c2luZyBvbiBpcyBgcGFja2V0X3NldF9yaW5nYC5cblxuUmlnaHQsIGxldCdzIGp1c3QgbWFrZSBzdXJlIHdlIGhhdmVuJ3QgbWlzc2VkIGFueSBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gQWx0aG91Z2ggYFBBQ0tFVGAgaXMgdHlwaWNhbGx5IGVuYWJsZWQgYnkgZGVmYXVsdCwgaXQncyBhbHdheXMgYSBnb29kIHByYWN0aWNlIHRvIGV4cGxpY2l0bHkgaW5jbHVkZSBpdCB0byBiZSBzdXJlLlxuXG5BaCwgdGhlIHBhdGNoIGlzIGNlbnRlcmVkIGFyb3VuZCBgcGFja2V0X3NldF9yaW5nYCBhbmQgYWxzbyBgcmVnaXN0ZXJfcHJvdF9ob29rKHNrKWAuIFRoZSBjb21tZW50Li4uIFwiRG8gbm90IHJlLWFkZCBhIGZhbm91dCBob29rIHRvIGEgZGVhZCBkZXZpY2UuXCIgVGhhdCBzdWdnZXN0cyB0aGVyZSdzIGEgcmVsYXRlZCBmYW5vdXQgbWVjaGFuaXNtLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGxldCdzIHNlZSBpZiB0aGVyZSBpcyBhIHNwZWNpZmljIGNvbmZpZyBmb3IgdGhhdC4uLiBJJ2xsIGNoZWNrIGBuZXQvcGFja2V0L2FmX3BhY2tldC5jYCB0byBzZWUgaG93IHRoZSBgZmFub3V0YCBmdW5jdGlvbmFsaXR5IGlzIGhhbmRsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MzAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTg6MDE6NDQuNjQ5MjU0NjYzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyOTk3Mjk2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmYW5vdXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3BhY2tldC9hZl9wYWNrZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvcGFja2V0L2FmX3BhY2tldC5jPTIxNj1zdHJ1Y3QgcGFja2V0X3NrYl9jYiB7XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTI0Mi1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI0MzpzdGF0aWMgdm9pZCBfX2Zhbm91dF91bmxpbmsoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjI0NDpzdGF0aWMgdm9pZCBfX2Zhbm91dF9saW5rKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHBhY2tldF9zb2NrICpwbyk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0yNDUtXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTMzNj1zdGF0aWMgdm9pZCBfX3JlZ2lzdGVyX3Byb3RfaG9vayhzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM0MC1cXHRpZiAoIXBhY2tldF9zb2NrX2ZsYWcocG8sIFBBQ0tFVF9TT0NLX1JVTk5JTkcpKSB7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozNDE6XFx0XFx0aWYgKHBvLVxcdTAwM2VmYW5vdXQpXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozNDI6XFx0XFx0XFx0X19mYW5vdXRfbGluayhzaywgcG8pO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzQzLVxcdFxcdGVsc2VcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MzYzPXN0YXRpYyB2b2lkIF9fdW5yZWdpc3Rlcl9wcm90X2hvb2soc3RydWN0IHNvY2sgKnNrLCBib29sIHN5bmMpXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM3MC1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjM3MTpcXHRpZiAocG8tXFx1MDAzZWZhbm91dClcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjM3MjpcXHRcXHRfX2Zhbm91dF91bmxpbmsoc2ssIHBvKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTM3My1cXHRlbHNlXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTEzMjU9c3RhdGljIHZvaWQgcGFja2V0X3NvY2tfZGVzdHJ1Y3Qoc3RydWN0IHNvY2sgKnNrKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMzM3LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTMzODpzdGF0aWMgYm9vbCBmYW5vdXRfZmxvd19pc19odWdlKHN0cnVjdCBwYWNrZXRfc29jayAqcG8sIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMzM5LXtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTM1Ny1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjEzNTg6c3RhdGljIHVuc2lnbmVkIGludCBmYW5vdXRfZGVtdXhfaGFzaChzdHJ1Y3QgcGFja2V0X2Zhbm91dCAqZixcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTEzNTktXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTM2NC1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjEzNjU6c3RhdGljIHVuc2lnbmVkIGludCBmYW5vdXRfZGVtdXhfbGIoc3RydWN0IHBhY2tldF9mYW5vdXQgKmYsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMzY2LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMzczLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTM3NDpzdGF0aWMgdW5zaWduZWQgaW50IGZhbm91dF9kZW11eF9jcHUoc3RydWN0IHBhY2tldF9mYW5vdXQgKmYsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xMzc1LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTM4MC1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjEzODE6c3RhdGljIHVuc2lnbmVkIGludCBmYW5vdXRfZGVtdXhfcm5kKHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTM4Mi1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTEzODctXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxMzg4OnN0YXRpYyB1bnNpZ25lZCBpbnQgZmFub3V0X2RlbXV4X3JvbGxvdmVyKHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTM4OS1cXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0MDAtXFx0XFx0aWYgKHJvb20gPT0gUk9PTV9OT1JNQUwgfHxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0MDE6XFx0XFx0ICAgIChyb29tID09IFJPT01fTE9XIFxcdTAwMjZcXHUwMDI2ICFmYW5vdXRfZmxvd19pc19odWdlKHBvLCBza2IpKSlcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0MDItXFx0XFx0XFx0cmV0dXJuIGlkeDtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQyNy1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0Mjg6c3RhdGljIHVuc2lnbmVkIGludCBmYW5vdXRfZGVtdXhfcW0oc3RydWN0IHBhY2tldF9mYW5vdXQgKmYsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDI5LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDM0LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTQzNTpzdGF0aWMgdW5zaWduZWQgaW50IGZhbm91dF9kZW11eF9icGYoc3RydWN0IHBhY2tldF9mYW5vdXQgKmYsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDM2LVxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ1MC1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0NTE6c3RhdGljIGJvb2wgZmFub3V0X2hhc19mbGFnKHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmLCB1MTYgZmxhZylcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0NTIte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDU1LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTQ1NjpzdGF0aWMgaW50IHBhY2tldF9yY3ZfZmFub3V0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDU3LVxcdFxcdFxcdCAgICAgc3RydWN0IHBhY2tldF90eXBlICpwdCwgc3RydWN0IG5ldF9kZXZpY2UgKm9yaWdfZGV2KVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ1OC17XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNDU5OlxcdHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmID0gcHQtXFx1MDAzZWFmX3BhY2tldF9wcml2O1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ2MC1cXHR1bnNpZ25lZCBpbnQgbnVtID0gUkVBRF9PTkNFKGYtXFx1MDAzZW51bV9tZW1iZXJzKTtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ2OS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0NzA6XFx0aWYgKGZhbm91dF9oYXNfZmxhZyhmLCBQQUNLRVRfRkFOT1VUX0ZMQUdfREVGUkFHKSkge1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ3MS1cXHRcXHRza2IgPSBpcF9jaGVja19kZWZyYWcobmV0LCBza2IsIElQX0RFRlJBR19BRl9QQUNLRVQpO1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDc3LVxcdGRlZmF1bHQ6XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNDc4OlxcdFxcdGlkeCA9IGZhbm91dF9kZW11eF9oYXNoKGYsIHNrYiwgbnVtKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0NzktXFx0XFx0YnJlYWs7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDgwLVxcdGNhc2UgUEFDS0VUX0ZBTk9VVF9MQjpcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0ODE6XFx0XFx0aWR4ID0gZmFub3V0X2RlbXV4X2xiKGYsIHNrYiwgbnVtKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0ODItXFx0XFx0YnJlYWs7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDgzLVxcdGNhc2UgUEFDS0VUX0ZBTk9VVF9DUFU6XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNDg0OlxcdFxcdGlkeCA9IGZhbm91dF9kZW11eF9jcHUoZiwgc2tiLCBudW0pO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ4NS1cXHRcXHRicmVhaztcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE0ODYtXFx0Y2FzZSBQQUNLRVRfRkFOT1VUX1JORDpcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0ODc6XFx0XFx0aWR4ID0gZmFub3V0X2RlbXV4X3JuZChmLCBza2IsIG51bSk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDg4LVxcdFxcdGJyZWFrO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ4OS1cXHRjYXNlIFBBQ0tFVF9GQU5PVVRfUU06XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNDkwOlxcdFxcdGlkeCA9IGZhbm91dF9kZW11eF9xbShmLCBza2IsIG51bSk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDkxLVxcdFxcdGJyZWFrO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ5Mi1cXHRjYXNlIFBBQ0tFVF9GQU5PVVRfUk9MTE9WRVI6XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNDkzOlxcdFxcdGlkeCA9IGZhbm91dF9kZW11eF9yb2xsb3ZlcihmLCBza2IsIDAsIGZhbHNlLCBudW0pO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ5NC1cXHRcXHRicmVhaztcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTQ5Ni1cXHRjYXNlIFBBQ0tFVF9GQU5PVVRfRUJQRjpcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE0OTc6XFx0XFx0aWR4ID0gZmFub3V0X2RlbXV4X2JwZihmLCBza2IsIG51bSk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNDk4LVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTAwLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTUwMTpcXHRpZiAoZmFub3V0X2hhc19mbGFnKGYsIFBBQ0tFVF9GQU5PVVRfRkxBR19ST0xMT1ZFUikpXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNTAyOlxcdFxcdGlkeCA9IGZhbm91dF9kZW11eF9yb2xsb3ZlcihmLCBza2IsIGlkeCwgdHJ1ZSwgbnVtKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1MDMtXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1MDctXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNTA4OkRFRklORV9NVVRFWChmYW5vdXRfbXV0ZXgpO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTUwOTpFWFBPUlRfU1lNQk9MX0dQTChmYW5vdXRfbXV0ZXgpO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTUxMDpzdGF0aWMgTElTVF9IRUFEKGZhbm91dF9saXN0KTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE1MTE6c3RhdGljIHUxNiBmYW5vdXRfbmV4dF9pZDtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1MTItXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNTEzOnN0YXRpYyB2b2lkIF9fZmFub3V0X2xpbmsoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvKVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTUxNC17XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNTE1OlxcdHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmID0gcG8tXFx1MDAzZWZhbm91dDtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1MTYtXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1MjUtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNTI2OnN0YXRpYyB2b2lkIF9fZmFub3V0X3VubGluayhzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBwYWNrZXRfc29jayAqcG8pXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTI3LXtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE1Mjg6XFx0c3RydWN0IHBhY2tldF9mYW5vdXQgKmYgPSBwby1cXHUwMDNlZmFub3V0O1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTUyOS1cXHRpbnQgaTtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTU0Ni1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE1NDc6c3RhdGljIGJvb2wgbWF0Y2hfZmFub3V0X2dyb3VwKHN0cnVjdCBwYWNrZXRfdHlwZSAqcHR5cGUsIHN0cnVjdCBzb2NrICpzaylcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1NDgte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTUxLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTU1MjpcXHRyZXR1cm4gcHR5cGUtXFx1MDAzZWFmX3BhY2tldF9wcml2ID09IHBrdF9zayhzayktXFx1MDAzZWZhbm91dDtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1NTMtfVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTU1NC1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE1NTU6c3RhdGljIHZvaWQgZmFub3V0X2luaXRfZGF0YShzdHJ1Y3QgcGFja2V0X2Zhbm91dCAqZilcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1NTYte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTY3LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTU2ODpzdGF0aWMgdm9pZCBfX2Zhbm91dF9zZXRfZGF0YV9icGYoc3RydWN0IHBhY2tldF9mYW5vdXQgKmYsIHN0cnVjdCBicGZfcHJvZyAqbmV3KVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTU2OS17XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE1ODItXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNTgzOnN0YXRpYyBpbnQgZmFub3V0X3NldF9kYXRhX2NicGYoc3RydWN0IHBhY2tldF9zb2NrICpwbywgc29ja3B0cl90IGRhdGEsXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNTg0LVxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBsZW4pXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MDAtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjAxOlxcdF9fZmFub3V0X3NldF9kYXRhX2JwZihwby1cXHUwMDNlZmFub3V0LCBuZXcpO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTYwMi1cXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTYwNC1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2MDU6c3RhdGljIGludCBmYW5vdXRfc2V0X2RhdGFfZWJwZihzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzb2NrcHRyX3QgZGF0YSxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MDYtXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGxlbilcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTYyMS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2MjI6XFx0X19mYW5vdXRfc2V0X2RhdGFfYnBmKHBvLVxcdTAwM2VmYW5vdXQsIG5ldyk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjIzLVxcdHJldHVybiAwO1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjI1LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTYyNjpzdGF0aWMgaW50IGZhbm91dF9zZXRfZGF0YShzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvLCBzb2NrcHRyX3QgZGF0YSxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MjctXFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IGxlbilcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2Mjgte1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTYyOTpcXHRzd2l0Y2ggKHBvLVxcdTAwM2VmYW5vdXQtXFx1MDAzZXR5cGUpIHtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MzAtXFx0Y2FzZSBQQUNLRVRfRkFOT1VUX0NCUEY6XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjMxOlxcdFxcdHJldHVybiBmYW5vdXRfc2V0X2RhdGFfY2JwZihwbywgZGF0YSwgbGVuKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MzItXFx0Y2FzZSBQQUNLRVRfRkFOT1VUX0VCUEY6XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjMzOlxcdFxcdHJldHVybiBmYW5vdXRfc2V0X2RhdGFfZWJwZihwbywgZGF0YSwgbGVuKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2MzQtXFx0ZGVmYXVsdDpcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTYzOC1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2Mzk6c3RhdGljIHZvaWQgZmFub3V0X3JlbGVhc2VfZGF0YShzdHJ1Y3QgcGFja2V0X2Zhbm91dCAqZilcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2NDAte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjQzLVxcdGNhc2UgUEFDS0VUX0ZBTk9VVF9FQlBGOlxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTY0NDpcXHRcXHRfX2Zhbm91dF9zZXRfZGF0YV9icGYoZiwgTlVMTCk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjQ1LVxcdH1cXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTY0Ny1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2NDg6c3RhdGljIGJvb2wgX19mYW5vdXRfaWRfaXNfZnJlZShzdHJ1Y3Qgc29jayAqc2ssIHUxNiBjYW5kaWRhdGVfaWQpXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjQ5LXtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2NTA6XFx0c3RydWN0IHBhY2tldF9mYW5vdXQgKmY7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjUxLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTY1MjpcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGYsIFxcdTAwMjZmYW5vdXRfbGlzdCwgbGlzdCkge1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTY1My1cXHRcXHRpZiAoZi1cXHUwMDNlaWQgPT0gY2FuZGlkYXRlX2lkIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2NjAtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjYxOnN0YXRpYyBib29sIGZhbm91dF9maW5kX25ld19pZChzdHJ1Y3Qgc29jayAqc2ssIHUxNiAqbmV3X2lkKVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTY2Mi17XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjYzOlxcdHUxNiBpZCA9IGZhbm91dF9uZXh0X2lkO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTY2NC1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2NjUtXFx0ZG8ge1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTY2NjpcXHRcXHRpZiAoX19mYW5vdXRfaWRfaXNfZnJlZShzaywgaWQpKSB7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjY3LVxcdFxcdFxcdCpuZXdfaWQgPSBpZDtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2Njg6XFx0XFx0XFx0ZmFub3V0X25leHRfaWQgPSBpZCArIDE7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjY5LVxcdFxcdFxcdHJldHVybiB0cnVlO1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjcyLVxcdFxcdGlkKys7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjczOlxcdH0gd2hpbGUgKGlkICE9IGZhbm91dF9uZXh0X2lkKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2NzQtXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2NzctXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxNjc4OnN0YXRpYyBpbnQgZmFub3V0X2FkZChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBmYW5vdXRfYXJncyAqYXJncylcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2Nzkte1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNjgyLVxcdHUxNiB0eXBlX2ZsYWdzID0gYXJncy1cXHUwMDNldHlwZV9mbGFncztcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE2ODM6XFx0c3RydWN0IHBhY2tldF9mYW5vdXQgKmYsICptYXRjaDtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE2ODQtXFx0dTggdHlwZSA9IHR5cGVfZmxhZ3MgXFx1MDAyNiAweGZmO1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzA1LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTcwNjpcXHRtdXRleF9sb2NrKFxcdTAwMjZmYW5vdXRfbXV0ZXgpO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTcwNy1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3MDgtXFx0ZXJyID0gLUVBTFJFQURZO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTcwOTpcXHRpZiAocG8tXFx1MDAzZWZhbm91dClcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3MTAtXFx0XFx0Z290byBvdXQ7XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3MjctXFx0XFx0fVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTcyODpcXHRcXHRpZiAoIWZhbm91dF9maW5kX25ld19pZChzaywgXFx1MDAyNmlkKSkge1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTcyOS1cXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzM2LVxcdG1hdGNoID0gTlVMTDtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE3Mzc6XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShmLCBcXHUwMDI2ZmFub3V0X2xpc3QsIGxpc3QpIHtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3MzgtXFx0XFx0aWYgKGYtXFx1MDAzZWlkID09IGlkIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3NjctXFx0XFx0cmVmY291bnRfc2V0KFxcdTAwMjZtYXRjaC1cXHUwMDNlc2tfcmVmLCAwKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE3Njg6XFx0XFx0ZmFub3V0X2luaXRfZGF0YShtYXRjaCk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzY5LVxcdFxcdG1hdGNoLVxcdTAwM2Vwcm90X2hvb2sudHlwZSA9IHBvLVxcdTAwM2Vwcm90X2hvb2sudHlwZTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3NzAtXFx0XFx0bWF0Y2gtXFx1MDAzZXByb3RfaG9vay5kZXYgPSBwby1cXHUwMDNlcHJvdF9ob29rLmRldjtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE3NzE6XFx0XFx0bWF0Y2gtXFx1MDAzZXByb3RfaG9vay5mdW5jID0gcGFja2V0X3Jjdl9mYW5vdXQ7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzcyLVxcdFxcdG1hdGNoLVxcdTAwM2Vwcm90X2hvb2suYWZfcGFja2V0X3ByaXYgPSBtYXRjaDtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3NzMtXFx0XFx0bWF0Y2gtXFx1MDAzZXByb3RfaG9vay5hZl9wYWNrZXRfbmV0ID0gcmVhZF9wbmV0KFxcdTAwMjZtYXRjaC1cXHUwMDNlbmV0KTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE3NzQ6XFx0XFx0bWF0Y2gtXFx1MDAzZXByb3RfaG9vay5pZF9tYXRjaCA9IG1hdGNoX2Zhbm91dF9ncm91cDtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3NzUtXFx0XFx0bWF0Y2gtXFx1MDAzZW1heF9udW1fbWVtYmVycyA9IGFyZ3MtXFx1MDAzZW1heF9udW1fbWVtYmVycztcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3NzYtXFx0XFx0bWF0Y2gtXFx1MDAzZXByb3RfaG9vay5pZ25vcmVfb3V0Z29pbmcgPSB0eXBlX2ZsYWdzIFxcdTAwMjYgUEFDS0VUX0ZBTk9VVF9GTEFHX0lHTk9SRV9PVVRHT0lORztcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE3Nzc6XFx0XFx0bGlzdF9hZGQoXFx1MDAyNm1hdGNoLVxcdTAwM2VsaXN0LCBcXHUwMDI2ZmFub3V0X2xpc3QpO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTc3OC1cXHR9XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3ODgtXFx0XFx0XFx0LyogUGFpcmVkIHdpdGggcGFja2V0X3NldHNvY2tvcHQoUEFDS0VUX0ZBTk9VVF9EQVRBKSAqL1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTc4OTpcXHRcXHRcXHRXUklURV9PTkNFKHBvLVxcdTAwM2VmYW5vdXQsIG1hdGNoKTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3OTAtXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE3OTUtXFx0XFx0XFx0XFx0X19kZXZfcmVtb3ZlX3BhY2soXFx1MDAyNnBvLVxcdTAwM2Vwcm90X2hvb2spO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6MTc5NjpcXHRcXHRcXHRcXHRfX2Zhbm91dF9saW5rKHNrLCBwbyk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xNzk3LVxcdFxcdFxcdH1cXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTgwOS1cXHRrZnJlZShyb2xsb3Zlcik7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxODEwOlxcdG11dGV4X3VubG9jayhcXHUwMDI2ZmFub3V0X211dGV4KTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE4MTEtXFx0cmV0dXJuIGVycjtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTgxMy1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE4MTQ6LyogSWYgcGt0X3NrKHNrKS1cXHUwMDNlZmFub3V0LVxcdTAwM2Vza19yZWYgaXMgemVybywgdGhpcyBmdW5jdGlvbiByZW1vdmVzXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxODE1OiAqIHBrdF9zayhzayktXFx1MDAzZWZhbm91dCBmcm9tIGZhbm91dF9saXN0IGFuZCByZXR1cm5zIHBrdF9zayhzayktXFx1MDAzZWZhbm91dC5cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE4MTY6ICogSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXIgdG8gY2FsbCBmYW5vdXRfcmVsZWFzZV9kYXRhKCkgYW5kXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxODE3OiAqIGZyZWUgdGhlIHJldHVybmVkIHBhY2tldF9mYW5vdXQgKGFmdGVyIHN5bmNocm9uaXplX25ldCgpKVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTgxOC0gKi9cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE4MTk6c3RhdGljIHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmYW5vdXRfcmVsZWFzZShzdHJ1Y3Qgc29jayAqc2spXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xODIwLXtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE4MjEtXFx0c3RydWN0IHBhY2tldF9zb2NrICpwbyA9IHBrdF9zayhzayk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxODIyOlxcdHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTgyMy1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE4MjQ6XFx0bXV0ZXhfbG9jayhcXHUwMDI2ZmFub3V0X211dGV4KTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjE4MjU6XFx0ZiA9IHBvLVxcdTAwM2VmYW5vdXQ7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0xODI2LVxcdGlmIChmKSB7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxODI3OlxcdFxcdHBvLVxcdTAwM2VmYW5vdXQgPSBOVUxMO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTgyOC1cXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMTgzMy1cXHR9XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzoxODM0OlxcdG11dGV4X3VubG9jayhcXHUwMDI2ZmFub3V0X211dGV4KTtcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTE4MzUtXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTMxMjI9c3RhdGljIGludCBwYWNrZXRfcmVsZWFzZShzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTI1LVxcdHN0cnVjdCBwYWNrZXRfc29jayAqcG87XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMTI2OlxcdHN0cnVjdCBwYWNrZXRfZmFub3V0ICpmO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzEyNy1cXHRzdHJ1Y3QgbmV0ICpuZXQ7XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMxNjYtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMTY3OlxcdGYgPSBmYW5vdXRfcmVsZWFzZShzayk7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTY4LVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTcyLVxcdGlmIChmKSB7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMTczOlxcdFxcdGZhbm91dF9yZWxlYXNlX2RhdGEoZik7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMTc0LVxcdFxcdGt2ZnJlZShmKTtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9MzE5NT1zdGF0aWMgaW50IHBhY2tldF9kb19iaW5kKHN0cnVjdCBzb2NrICpzaywgY29uc3QgY2hhciAqbmFtZSwgaW50IGlmaW5kZXgsXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTMyMTAtXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozMjExOlxcdGlmIChwby1cXHUwMDNlZmFub3V0KSB7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zMjEyLVxcdFxcdHJldCA9IC1FSU5WQUw7XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTM3ODc9cGFja2V0X3NldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCxcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtMzk5NC1cXHR7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzozOTk1OlxcdFxcdHN0cnVjdCBmYW5vdXRfYXJncyBhcmdzID0geyAwIH07XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy0zOTk2LVxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00MDAxLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDAwMjpcXHRcXHRyZXR1cm4gZmFub3V0X2FkZChzaywgXFx1MDAyNmFyZ3MpO1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDAwMy1cXHR9XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQwMDUtXFx0e1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDAwNjpcXHRcXHQvKiBQYWlyZWQgd2l0aCB0aGUgV1JJVEVfT05DRSgpIGluIGZhbm91dF9hZGQoKSAqL1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDAwNzpcXHRcXHRpZiAoIVJFQURfT05DRShwby1cXHUwMDNlZmFub3V0KSlcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQwMDgtXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00MDA5LVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDAxMDpcXHRcXHRyZXR1cm4gZmFub3V0X3NldF9kYXRhKHBvLCBvcHR2YWwsIG9wdGxlbik7XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00MDExLVxcdH1cXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9NDA1OT1zdGF0aWMgaW50IHBhY2tldF9nZXRzb2Nrb3B0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQxNDgtXFx0Y2FzZSBQQUNLRVRfRkFOT1VUOlxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDE0OTpcXHRcXHR2YWwgPSAocG8tXFx1MDAzZWZhbm91dCA/XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0MTUwOlxcdFxcdCAgICAgICAoKHUzMilwby1cXHUwMDNlZmFub3V0LVxcdTAwM2VpZCB8XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYzo0MTUxOlxcdFxcdFxcdCgodTMyKXBvLVxcdTAwM2VmYW5vdXQtXFx1MDAzZXR5cGUgXFx1MDAzY1xcdTAwM2MgMTYpIHxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjQxNTI6XFx0XFx0XFx0KCh1MzIpcG8tXFx1MDAzZWZhbm91dC1cXHUwMDNlZmxhZ3MgXFx1MDAzY1xcdTAwM2MgMjQpKSA6XFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00MTUzLVxcdFxcdCAgICAgICAwKTtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9NDQxNj1zdGF0aWMgaW50IHBhY2tldF9zZXRfcmluZyhzdHJ1Y3Qgc29jayAqc2ssIHVuaW9uIHRwYWNrZXRfcmVxX3UgKnJlcV91LFxcbi0tXFxubmV0L3BhY2tldC9hZl9wYWNrZXQuYy00NTY1LVxcdCAqIE5FVERFVl9VTlJFR0lTVEVSIG1heSBoYXZlIGludmFsaWRhdGVkIHRoZSBiaW5kaW5nIHdoaWxlIGJpbmRfbG9ja1xcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDU2NjpcXHQgKiB3YXMgZHJvcHBlZCBhYm92ZS4gIERvIG5vdCByZS1hZGQgYSBmYW5vdXQgaG9vayB0byBhIGRlYWQgZGV2aWNlLlxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDU2Ny1cXHQgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTg6MDE6NDQuODc5MjM2ODQxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODMwMTIzMzE0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEJ1ZyBGaXggZm9yIEZhbm91dCBIb29rcyoqXG5cbk9rYXksIHNvIHRoZSBjb21tZW50IGV4cGxpY2l0bHkgc3RhdGVzIFwiRG8gbm90IHJlLWFkZCBhIGZhbm91dCBob29rIHRvIGEgZGVhZCBkZXZpY2UuXCIgVGhlIHBhdGNoJ3MgY29yZSBsb2dpYyBpcyB0byBwcmV2ZW50IHRoZSBjYWxsIHRvIGByZWdpc3Rlcl9wcm90X2hvb2soc2spYCB3aGVuIGBSRUFEX09OQ0UocG8tXHUwMDNlaWZpbmRleClgIGlzIC0xLiBUaGlzIHNwZWNpZmljYWxseSBoYXBwZW5zIHdpdGhpbiBgcGFja2V0X3NldF9yaW5nYC5cblxuVGhlcmVmb3JlLCB0aGUgaXNzdWUgaXMgZGlyZWN0bHkgcmVsYXRlZCB0byBgUEFDS0VUX0ZBTk9VVGAgYW5kIHRoZSBgcGFja2V0X3NldF9yaW5nYCBmdW5jdGlvbi4gVGhlIGNvbmZpZ3VyYXRpb24gaW4gcXVlc3Rpb24gaGVyZSBpcyBgUEFDS0VUYCwgYnV0IGxldCdzIHF1aWNrbHkgY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3MuIEFoLCBgZmFub3V0X3NldF9kYXRhX2VicGZgIGlzIHVzZWQgZm9yIGBQQUNLRVRfRkFOT1VUX0VCUEZgLCBidXQgaXQncyBub3QgcmVsZXZhbnQgdG8gdGhpcyBidWcgYXMgaXQncyBzcGVjaWZpY2FsbHkgYWJvdXQgYHBhY2tldF9zZXRfcmluZ2AgYW5kIGByZWdpc3Rlcl9wcm90X2hvb2tgLCByaWdodD8gVGhpcyBzaG91bGQgYXBwbHkgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGZhbm91dCBpcyBhY3R1YWxseSAqdXNlZCogb3Igbm90LlxuXG5Ob3csIGxldCdzIHRyYWNlIHRoZSBleGVjdXRpb246IGByZWdpc3Rlcl9wcm90X2hvb2soc2spYCBjYWxscyBgX19yZWdpc3Rlcl9wcm90X2hvb2soc2spYC4gTG9va2luZyBhdCB0aGUgY29kZTpcblxuYGBgY1xuc3RhdGljIHZvaWQgX19yZWdpc3Rlcl9wcm90X2hvb2soc3RydWN0IHNvY2sgKnNrKVxue1xuXHRzdHJ1Y3QgcGFja2V0X3NvY2sgKnBvID0gcGt0X3NrKHNrKTtcblxuXHRpZiAoIXBhY2tldF9zb2NrX2ZsYWcocG8sIFBBQ0tFVF9TT0NLX1JVTk5JTkcpKSB7XG5cdFx0aWYgKHBvLVx1MDAzZWZhbm91dClcblx0XHRcdF9fZmFub3V0X2xpbmsoc2ssIHBvKTtcblx0XHRlbHNlXG5cdFx0XHRfX2Rldl9hZGRfcGFjayhcdTAwMjZwby1cdTAwM2Vwcm90X2hvb2spO1xuXG5cdFx0c29ja19ob2xkKHNrKTtcblx0XHRwYWNrZXRfc29ja19mbGFnX3NldChwbywgUEFDS0VUX1NPQ0tfUlVOTklORywgMSk7XG5cdH1cbn1cbmBgYFxuXG5JZiBgcG8tXHUwMDNlaWZpbmRleGAgaXMgLTEsIHRoZSBkZXZpY2UgaXMgZGVhZC4gSWYgYHBvLVx1MDAzZWZhbm91dGAgaXMgc2V0LCBpdCBsaW5rcyB0byB0aGUgZmFub3V0IGdyb3VwLiBJZiBpdCdzICpub3QqIHNldCwgaXQgYWRkcyB0aGUgc29ja2V0IHRvIGBkZXZfYWRkX3BhY2tgLiBJbiBlaXRoZXIgY2FzZSwgd2hldGhlciBpdCdzIGZhbm91dCBvciBub3QsIHRoZSBidWcgaXMgYWJvdXQgKnJlKi1hZGRpbmcgdGhlIHNvY2tldCB0byBhIGRlYWQgZGV2aWNlLCB3aGljaCBpcyBpbmNvcnJlY3QuIFRoZSBjb21tZW50IG1lbnRpb25zIFwiZmFub3V0IGhvb2ssXCIgYnV0IGl0J3MgcmVhbGx5IHRoZSBicm9hZGVyIGlzc3VlIG9mIGByZWdpc3Rlcl9wcm90X2hvb2tgIHRoYXQncyB0aGUgcHJvYmxlbS5cblxuQWxyaWdodCwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIGBwYWNrZXRfc2V0X3JpbmdgIGZ1bmN0aW9uIGluIGBuZXQvcGFja2V0L2FmX3BhY2tldC5jYCB0byBzZWUgaG93IHRoaXMgc2l0dWF0aW9uIGNhbiBhcmlzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0NTEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0ODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTg6MDE6NTMuMTgwNDc0NTYyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0Njk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvcGFja2V0L2FmX3BhY2tldC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ1NDAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjQ1NDA6XFx0XFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZyYl9xdWV1ZS1cXHUwMDNlbG9jayk7XFxuNDU0MTpcXHRcXHRcXHRzd2FwKHJiLVxcdTAwM2VwZ192ZWMsIHBnX3ZlYyk7XFxuNDU0MjpcXHRcXHRcXHRpZiAocG8tXFx1MDAzZXRwX3ZlcnNpb24gXFx1MDAzYz0gVFBBQ0tFVF9WMilcXG40NTQzOlxcdFxcdFxcdFxcdHN3YXAocmItXFx1MDAzZXJ4X293bmVyX21hcCwgcnhfb3duZXJfbWFwKTtcXG40NTQ0OlxcdFxcdFxcdHJiLVxcdTAwM2VmcmFtZV9tYXggPSAocmVxLVxcdTAwM2V0cF9mcmFtZV9uciAtIDEpO1xcbjQ1NDU6XFx0XFx0XFx0cmItXFx1MDAzZWhlYWQgPSAwO1xcbjQ1NDY6XFx0XFx0XFx0cmItXFx1MDAzZWZyYW1lX3NpemUgPSByZXEtXFx1MDAzZXRwX2ZyYW1lX3NpemU7XFxuNDU0NzpcXHRcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2cmJfcXVldWUtXFx1MDAzZWxvY2spO1xcbjQ1NDg6XFx0XFxuNDU0OTpcXHRcXHRcXHRzd2FwKHJiLVxcdTAwM2VwZ192ZWNfb3JkZXIsIG9yZGVyKTtcXG40NTUwOlxcdFxcdFxcdHN3YXAocmItXFx1MDAzZXBnX3ZlY19sZW4sIHJlcS1cXHUwMDNldHBfYmxvY2tfbnIpO1xcbjQ1NTE6XFx0XFxuNDU1MjpcXHRcXHRcXHRyYi1cXHUwMDNlcGdfdmVjX3BhZ2VzID0gcmVxLVxcdTAwM2V0cF9ibG9ja19zaXplL1BBR0VfU0laRTtcXG40NTUzOlxcdFxcdFxcdHBvLVxcdTAwM2Vwcm90X2hvb2suZnVuYyA9IChwby1cXHUwMDNlcnhfcmluZy5wZ192ZWMpID9cXG40NTU0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdHRwYWNrZXRfcmN2IDogcGFja2V0X3JjdjtcXG40NTU1OlxcdFxcdFxcdHNrYl9xdWV1ZV9wdXJnZShyYl9xdWV1ZSk7XFxuNDU1NjpcXHRcXHRcXHRpZiAoYXRvbWljX2xvbmdfcmVhZChcXHUwMDI2cG8tXFx1MDAzZW1hcHBlZCkpXFxuNDU1NzpcXHRcXHRcXHRcXHRwcl9lcnIoXFxcInBhY2tldF9tbWFwOiB2bWEgaXMgYnVzeTogJWxkXFxcXG5cXFwiLFxcbjQ1NTg6XFx0XFx0XFx0XFx0ICAgICAgIGF0b21pY19sb25nX3JlYWQoXFx1MDAyNnBvLVxcdTAwM2VtYXBwZWQpKTtcXG40NTU5OlxcdFxcdH1cXG40NTYwOlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cG8tXFx1MDAzZXBnX3ZlY19sb2NrKTtcXG40NTYxOlxcdFxcbjQ1NjI6XFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZwby1cXHUwMDNlYmluZF9sb2NrKTtcXG40NTYzOlxcdFxcdFdSSVRFX09OQ0UocG8tXFx1MDAzZW51bSwgbnVtKTtcXG40NTY0OlxcdFxcdC8qXFxuNDU2NTpcXHRcXHQgKiBORVRERVZfVU5SRUdJU1RFUiBtYXkgaGF2ZSBpbnZhbGlkYXRlZCB0aGUgYmluZGluZyB3aGlsZSBiaW5kX2xvY2tcXG40NTY2OlxcdFxcdCAqIHdhcyBkcm9wcGVkIGFib3ZlLiAgRG8gbm90IHJlLWFkZCBhIGZhbm91dCBob29rIHRvIGEgZGVhZCBkZXZpY2UuXFxuNDU2NzpcXHRcXHQgKi9cXG40NTY4OlxcdFxcdGlmICh3YXNfcnVubmluZyBcXHUwMDI2XFx1MDAyNiBSRUFEX09OQ0UocG8tXFx1MDAzZWlmaW5kZXgpICE9IC0xKVxcbjQ1Njk6XFx0XFx0XFx0cmVnaXN0ZXJfcHJvdF9ob29rKHNrKTtcXG40NTcwOlxcdFxcbjQ1NzE6XFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNnBvLVxcdTAwM2ViaW5kX2xvY2spO1xcbjQ1NzI6XFx0XFx0aWYgKHBnX3ZlYyBcXHUwMDI2XFx1MDAyNiAocG8tXFx1MDAzZXRwX3ZlcnNpb24gXFx1MDAzZSBUUEFDS0VUX1YyKSkge1xcbjQ1NzM6XFx0XFx0XFx0LyogQmVjYXVzZSB3ZSBkb24ndCBzdXBwb3J0IGJsb2NrLWJhc2VkIFYzIG9uIHR4LXJpbmcgKi9cXG40NTc0OlxcdFxcdFxcdGlmICghdHhfcmluZylcXG40NTc1OlxcdFxcdFxcdFxcdHByYl9zaHV0ZG93bl9yZXRpcmVfYmxrX3RpbWVyKHBvLCByYl9xdWV1ZSk7XFxuNDU3NjpcXHRcXHR9XFxuNDU3NzpcXHRcXG40NTc4OlxcdG91dF9mcmVlX3BnX3ZlYzpcXG40NTc5OlxcdFxcdGlmIChwZ192ZWMpIHtcXG40NTgwOlxcdFxcdFxcdGJpdG1hcF9mcmVlKHJ4X293bmVyX21hcCk7XFxuNDU4MTpcXHRcXHRcXHRmcmVlX3BnX3ZlYyhwZ192ZWMsIG9yZGVyLCByZXEtXFx1MDAzZXRwX2Jsb2NrX25yKTtcXG40NTgyOlxcdFxcdH1cXG40NTgzOlxcdG91dDpcXG40NTg0OlxcdFxcdHJldHVybiBlcnI7XFxuNDU4NTpcXHR9XFxuNDU4NjpcXHRcXG40NTg3OlxcdHN0YXRpYyBpbnQgcGFja2V0X21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBzb2NrZXQgKnNvY2ssXFxuNDU4ODpcXHRcXHRcXHRzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG40NTg5OlxcdHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTg6MDE6NTMuMTgwODI4NjgyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MzQ3MzU0NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gncyBTaWduaWZpY2FuY2UqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGV4YW1pbmVkIHRoaXMgcGF0Y2gsIGFuZCBJJ20gY29uZmlkZW50IGl0J3MgYWRkcmVzc2luZyBhIGdlbnVpbmUgZnVuY3Rpb25hbCBpc3N1ZS4gVGhlIGtleSBmdW5jdGlvbiB0byBmb2N1cyBvbiBpcyBgcGFja2V0X3NldF9yaW5nYC4gRnJvbSB0aGUgb3V0c2V0LCBJJ3ZlIGdvdCBgUEFDS0VUYCBlbmFibGVkLlxuXG5NeSBxdWljayBjaGVjayBjb25maXJtcyB0aGF0IGBDT05GSUdfUEFDS0VUYCBpcyBpbmRlZWQgc3VmZmljaWVudCBmb3IgdGhpcy4gTm90aGluZyBlbHNlIHNlZW1zIHRvIGJlIHJlcXVpcmVkLlxuXG5UaGVyZWZvcmUsIEknbSBnb2luZyB0byBkZXRlcm1pbmUgdGhpcyBwYXRjaCBpcyB3b3J0aCBmdXp6aW5nIGFuZCB3aWxsIHJldHVybiB0aGUgZm9sbG93aW5nOiBgV29ydGhGdXp6aW5nOiB0cnVlYCwgYWxvbmcgd2l0aCBgRm9jdXNTeW1ib2xzYDogYFtcInBhY2tldF9zZXRfcmluZ1wiXWAgYW5kIGBFbmFibGVDb25maWdzOiBbXCJQQUNLRVRcIl1gLlxuXG5NeSByZWFzb25pbmcgaXMgc3RyYWlnaHRmb3J3YXJkOiB0aGlzIHBhdGNoIHJlY3RpZmllcyBhIGJ1ZyB3aXRoaW4gdGhlIGNvcmUgQUZfUEFDS0VUIGxvZ2ljLiBTcGVjaWZpY2FsbHksIGl0IHByZXZlbnRzIGEgZmFub3V0IGhvb2sgZnJvbSBiZWluZyByZS1hZGRlZCB0byBhIGRldmljZSB0aGF0IGlzIGFscmVhZHkgZGVhZCB3aXRoaW4gYHBhY2tldF9zZXRfcmluZ2AuIFRoZSBmaXggaW52b2x2ZXMgYSBjaGVjayB0byBlbnN1cmUgdGhlIGRldmljZSBpcyBzdGlsbCB2YWxpZCAoIGBpZmluZGV4ICE9IC0xYCkgYmVmb3JlIGNhbGxpbmcgYHJlZ2lzdGVyX3Byb3RfaG9va2AuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IG5lZWRzIGZ1cnRoZXIgc2NydXRpbnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzY1LCJPdXRwdXRUb2tlbnMiOjEwMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDE4OjAyOjAwLjAxNTU3MDA0NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MzI3ODU2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUEFDS0VUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGFja2V0X3NldF9yaW5nXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgYSBmYW5vdXQgaG9vayBjb3VsZCBiZSByZS1hZGRlZCB0byBhIGRlYWQgZGV2aWNlIGluIHBhY2tldF9zZXRfcmluZyBieSBjaGVja2luZyBpZiB0aGUgZGV2aWNlIGlzIGRlYWQgKGlmaW5kZXggIT0gLTEpIGJlZm9yZSBjYWxsaW5nIHJlZ2lzdGVyX3Byb3RfaG9vay4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEFGX1BBQ0tFVCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQQUNLRVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwYWNrZXRfc2V0X3JpbmdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyB3aGVyZSBhIGZhbm91dCBob29rIGNvdWxkIGJlIHJlLWFkZGVkIHRvIGEgZGVhZCBkZXZpY2UgaW4gcGFja2V0X3NldF9yaW5nIGJ5IGNoZWNraW5nIGlmIHRoZSBkZXZpY2UgaXMgZGVhZCAoaWZpbmRleCAhPSAtMSkgYmVmb3JlIGNhbGxpbmcgcmVnaXN0ZXJfcHJvdF9ob29rLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgQUZfUEFDS0VUIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4pwn2[1] Phase: Succeeded StartedAt: 2026-07-01 18:02:23 +0000 UTC FinishedAt: 2026-07-01 18:02:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pwn2[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-01 18:02:23 +0000 UTC FinishedAt: 2026-07-01 18:02:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pwn2[2] Phase: Succeeded StartedAt: 2026-07-01 18:02:23 +0000 UTC FinishedAt: 2026-07-01 22:12:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-01 18:02:24 +0000 UTC FinishedAt: 2026-07-01 22:12:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-01 18:02:24 +0000 UTC FinishedAt: 2026-07-01 18:02:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-01 18:02:24 +0000 UTC FinishedAt: 2026-07-01 18:02:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4pwn2/series-workflow4pwn2-convert-artifact-2792155954/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-01 18:02:46 +0000 UTC FinishedAt: 2026-07-01 18:37:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-01 18:02:46 +0000 UTC FinishedAt: 2026-07-01 18:37:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*2d7ea7a3-669d-4966-b6fd-236ea2c7cc68,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-workflow4pwn2/series-workflow4pwn2-convert-artifact-2792155954/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": "63a70cb6-aa46-4836-91d3-7e1911b35f31", "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-workflow4pwn2/series-workflow4pwn2-build-action-971586736/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-01 18:02:47 +0000 UTC FinishedAt: 2026-07-01 18:36:57 +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:*2d7ea7a3-669d-4966-b6fd-236ea2c7cc68,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-workflow4pwn2/series-workflow4pwn2-convert-artifact-2792155954/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": "63a70cb6-aa46-4836-91d3-7e1911b35f31", "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-workflow4pwn2/series-workflow4pwn2-build-action-971586736/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-01 18:37:08 +0000 UTC FinishedAt: 2026-07-01 18:37:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-01 18:37:08 +0000 UTC FinishedAt: 2026-07-01 18:37:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-01 18:37:08 +0000 UTC FinishedAt: 2026-07-01 18:37:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-01 18:37:08 +0000 UTC FinishedAt: 2026-07-01 18:37:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4pwn2/series-workflow4pwn2-convert-artifact-583472973/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-01 18:37:30 +0000 UTC FinishedAt: 2026-07-01 18:39:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-01 18:37:31 +0000 UTC FinishedAt: 2026-07-01 18:39:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*63a70cb6-aa46-4836-91d3-7e1911b35f31,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-workflow4pwn2/series-workflow4pwn2-build-action-971586736/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-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-01 18:39:27 +0000 UTC FinishedAt: 2026-07-01 18:39:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-01 18:39:27 +0000 UTC FinishedAt: 2026-07-01 18:39:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-01 18:39:27 +0000 UTC FinishedAt: 2026-07-01 19:06:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-01 18:39:27 +0000 UTC FinishedAt: 2026-07-01 19:06:10 +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:*2d7ea7a3-669d-4966-b6fd-236ea2c7cc68,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-workflow4pwn2/series-workflow4pwn2-convert-artifact-583472973/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": "54fd7f2b-365e-415f-a5ed-680148b4ca54", "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-workflow4pwn2/series-workflow4pwn2-build-action-735986985/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-01 18:39:27 +0000 UTC FinishedAt: 2026-07-01 19:05:58 +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:*2d7ea7a3-669d-4966-b6fd-236ea2c7cc68,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-workflow4pwn2/series-workflow4pwn2-convert-artifact-583472973/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": "54fd7f2b-365e-415f-a5ed-680148b4ca54", "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-workflow4pwn2/series-workflow4pwn2-build-action-735986985/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-01 19:06:10 +0000 UTC FinishedAt: 2026-07-01 19:06:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-01 19:06:10 +0000 UTC FinishedAt: 2026-07-01 19:06:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-01 19:06:10 +0000 UTC FinishedAt: 2026-07-01 19:08:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-01 19:06:10 +0000 UTC FinishedAt: 2026-07-01 19:08:16 +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:*54fd7f2b-365e-415f-a5ed-680148b4ca54,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-workflow4pwn2/series-workflow4pwn2-build-action-735986985/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-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-01 19:08:26 +0000 UTC FinishedAt: 2026-07-01 22:12:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-01 19:08:26 +0000 UTC FinishedAt: 2026-07-01 22:12:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"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:*63a70cb6-aa46-4836-91d3-7e1911b35f31,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*54fd7f2b-365e-415f-a5ed-680148b4ca54,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-workflow4pwn2/series-workflow4pwn2-build-action-971586736/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-workflow4pwn2/series-workflow4pwn2-build-action-735986985/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-01 19:08:26 +0000 UTC FinishedAt: 2026-07-01 19:09:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-01 19:08:26 +0000 UTC FinishedAt: 2026-07-01 19:08:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"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-workflow4pwn2/series-workflow4pwn2-convert-artifact-2173179698/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-01 19:08:26 +0000 UTC FinishedAt: 2026-07-01 19:08:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-01 19:08:26 +0000 UTC FinishedAt: 2026-07-01 19:08:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-01 19:08:27 +0000 UTC FinishedAt: 2026-07-01 19:08:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-01 19:09:02 +0000 UTC FinishedAt: 2026-07-01 22:12:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pwn2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["packet_set_ring"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a225f8c20712713406ae47024b8df42deacddd4a","config_name":"upstream-apparmor-kasan.config","enable_configs":["PACKET"],"series_id":"aeaccf80-8f8b-4bac-b869-0ae80d45659c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-01 19:09:02 +0000 UTC FinishedAt: 2026-07-01 22:12:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*63a70cb6-aa46-4836-91d3-7e1911b35f31,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*54fd7f2b-365e-415f-a5ed-680148b4ca54,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-workflow4pwn2/series-workflow4pwn2-build-action-971586736/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-workflow4pwn2/series-workflow4pwn2-build-action-735986985/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-workflow4pwn2/series-workflow4pwn2-convert-artifact-2173179698/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,}