Name: series-workflowrsptj Phase: Succeeded StartedAt: 2026-07-03 05:37:13 +0000 UTC FinishedAt: 2026-07-03 09:59:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrsptj[0] Phase: Succeeded StartedAt: 2026-07-03 05:37:13 +0000 UTC FinishedAt: 2026-07-03 05:48:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrsptj[0].run-triage Phase: Succeeded StartedAt: 2026-07-03 05:37:13 +0000 UTC FinishedAt: 2026-07-03 05:48:56 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "08bc5b2636afcbadc31bb17243eec094e048bd79", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM", "XFRM_USER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "08bc5b2636afcbadc31bb17243eec094e048bd79", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM", "XFRM_USER" ], "series_id": "3b600e52-724d-4edb-ac53-4e6c31bdfedc" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "xfrm_hash_rebuild", "xfrm_set_spdinfo" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAzIDA1OjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk0mIzM0OywKICAgICYjMzQ7WEZSTV9VU0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eGZybV9oYXNoX3JlYnVpbGQmIzM0OywKICAgICYjMzQ7eGZybV9zZXRfc3BkaW5mbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29uZGl0aW9uIGZvciBhbGxvY2F0aW5nIGluZXhhY3QgYmlucyBkdXJpbmcgWEZSTSBwb2xpY3kgaGFzaCByZWJ1aWxkcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJUHNlYy9YRlJNIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgaG93IHBvbGljaWVzIGFyZSBoYXNoZWQgYW5kIGxvb2tlZCB1cC4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgWEZSTV9NU0dfTkVXU1BESU5GTyBuZXRsaW5rIG1lc3NhZ2UsIHdoaWNoIHRyaWdnZXJzIHhmcm1fc2V0X3NwZGluZm8gYW5kIHNjaGVkdWxlcyB0aGUgeGZybV9oYXNoX3JlYnVpbGQgd29yay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNTo0NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDFjN2ZmODMyODAxMWFiYmNjNzFmOTcwMTViNGY4YmI3YWRlZWQ5ZDNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzIDA1OjQ2OjU2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmMgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXG5pbmRleCA3ZWY4NjFhMGU4MjMxYi4uOTMyYTMxM2I5NDYwYTUgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX3BvbGljeS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXG5AQCAtMTMyOSw4ICYjNDM7MTMyOSw4IEBAIHN0YXRpYyB2b2lkIHhmcm1faGFzaF9yZWJ1aWxkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdFx0XHR9XG4gXHRcdH1cbiBcbi1cdFx0aWYgKHBvbGljeS1cdTAwM2VzZWxlY3Rvci5wcmVmaXhsZW5fZCBcdTAwM2MgZGJpdHMgfHxcbi1cdFx0ICAgIHBvbGljeS1cdTAwM2VzZWxlY3Rvci5wcmVmaXhsZW5fcyBcdTAwM2Mgc2JpdHMpXG4mIzQzO1x0XHRpZiAocG9saWN5LVx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9kIFx1MDAzZT0gZGJpdHMgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgcG9saWN5LVx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9zIFx1MDAzZT0gc2JpdHMpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdGJpbiA9IHhmcm1fcG9saWN5X2luZXhhY3RfYWxsb2NfYmluKHBvbGljeSwgZGlyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNTo0NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlJNJiMzNDssCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hmcm1faGFzaF9yZWJ1aWxkJiMzNDssCiAgICAmIzM0O3hmcm1fc2V0X3NwZGluZm8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvbmRpdGlvbiBmb3IgYWxsb2NhdGluZyBpbmV4YWN0IGJpbnMgZHVyaW5nIFhGUk0gcG9saWN5IGhhc2ggcmVidWlsZHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVBzZWMvWEZSTSBzdWJzeXN0ZW0gdGhhdCBhZmZlY3RzIGhvdyBwb2xpY2llcyBhcmUgaGFzaGVkIGFuZCBsb29rZWQgdXAuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIFhGUk1fTVNHX05FV1NQRElORk8gbmV0bGluayBtZXNzYWdlLCB3aGljaCB0cmlnZ2VycyB4ZnJtX3NldF9zcGRpbmZvIGFuZCBzY2hlZHVsZXMgdGhlIHhmcm1faGFzaF9yZWJ1aWxkIHdvcmsuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDFjN2ZmODMyODAxMWFiYmNjNzFmOTcwMTViNGY4YmI3YWRlZWQ5ZDMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzIDA1OjQ2OjU2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9wb2xpY3kuYyBiL25ldC94ZnJtL3hmcm1fcG9saWN5LmMKaW5kZXggN2VmODYxYTBlODIzMWIuLjkzMmEzMTNiOTQ2MGE1IDEwMDY0NAotLS0gYS9uZXQveGZybS94ZnJtX3BvbGljeS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZnJtL3hmcm1fcG9saWN5LmMKQEAgLTEzMjksOCAmIzQzOzEzMjksOCBAQCBzdGF0aWMgdm9pZCB4ZnJtX2hhc2hfcmVidWlsZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJCQl9CiAJCX0KIAotCQlpZiAocG9saWN5LSZndDtzZWxlY3Rvci5wcmVmaXhsZW5fZCAmbHQ7IGRiaXRzIHx8Ci0JCSAgICBwb2xpY3ktJmd0O3NlbGVjdG9yLnByZWZpeGxlbl9zICZsdDsgc2JpdHMpCiYjNDM7CQlpZiAocG9saWN5LSZndDtzZWxlY3Rvci5wcmVmaXhsZW5fZCAmZ3Q7PSBkYml0cyAmYW1wOyZhbXA7CiYjNDM7CQkgICAgcG9saWN5LSZndDtzZWxlY3Rvci5wcmVmaXhsZW5fcyAmZ3Q7PSBzYml0cykKIAkJCWNvbnRpbnVlOwogCiAJCWJpbiA9IHhmcm1fcG9saWN5X2luZXhhY3RfYWxsb2NfYmluKHBvbGljeSwgZGlyKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDU6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg1NgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFhGUk0gUG9saWN5IEhhc2hpbmcgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBoaXR0aW5nIGBuZXQveGZybS94ZnJtX3BvbGljeS5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgeGZybV9oYXNoX3JlYnVpbGRgIGZ1bmN0aW9uLiBUaGUga2V5IGhlcmUgaXMgdGhlIGNvbmRpdGlvbmFsIHN0YXRlbWVudCB0aGF0JiMzOTtzIGJlZW4gbW9kaWZpZWQgd2l0aGluIHRoYXQgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb24gdGhlIElQc2VjL1hGUk0gcG9saWN5IGhhc2hpbmcgbG9naWMuCgpJdCBsb29rcyBsaWtlIHRoZSBvcmlnaW5hbCBjb2RlIHdhcyBza2lwcGluZyBvdmVyIHBvbGljaWVzIGJhc2VkIG9uIHNvbWUgcHJlZml4IGxlbmd0aCBjb21wYXJpc29uLCBzcGVjaWZpY2FsbHk6IGBwb2xpY3ktJmd0O3NlbGVjdG9yLnByZWZpeGxlbl9kICZsdDsgZGJpdHMgfHwgcG9saWN5LSZndDtzZWxlY3Rvci5wcmVmaXhsZW5fcyAmbHQ7IHNiaXRzYC4gVGhlIHBhdGNoLCBob3dldmVyLCBpbnZlcnRzIHRoaXMgY29uZGl0aW9uIHRvIG5vdyBza2lwIHBvbGljaWVzIGlmOiBgcG9saWN5LSZndDtzZWxlY3Rvci5wcmVmaXhsZW5fZCAmZ3Q7PSBkYml0cyAmYW1wOyZhbXA7IHBvbGljeS0mZ3Q7c2VsZWN0b3IucHJlZml4bGVuX3MgJmd0Oz0gc2JpdHNgLiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UuIEkgbmVlZCB0byBkaWcgaW4gYW5kIHVuZGVyc3RhbmQgKndoeSogdGhpcyBjaGFuZ2Ugd2FzIG1hZGUuIFdoYXQgc2NlbmFyaW9zIGRvZXMgdGhpcyBuZXcgY29uZGl0aW9uIGhhbmRsZSB0aGF0IHRoZSBvbGQgb25lIGRpZG4mIzM5O3Q/IFdoYXQmIzM5O3MgdGhlIGludGVuZGVkIGJlaGF2aW9yIGFuZCB3aGF0IGVkZ2UgY2FzZXMgbWlnaHQgdGhpcyBhZmZlY3Q/IEkmIzM5O2xsIHByb2JhYmx5IHN0YXJ0IGJ5IHJldmlld2luZyB0aGUgcmVsYXRlZCBjb21taXRzIGFuZCBhbnkgYXNzb2NpYXRlZCBidWcgcmVwb3J0cyBvciBtYWlsaW5nIGxpc3QgZGlzY3Vzc2lvbnMgdG8gdW5kZXJzdGFuZCB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA1OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmcm1faGFzaF9yZWJ1aWxkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9wb2xpY3kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS94ZnJtX3BvbGljeS5jPTEyNjU9c3RhdGljIGJvb2wgeGZybV9wb2xpY3lfaXNfZGVhZF9vcl9zayhjb25zdCBzdHJ1Y3QgeGZybV9wb2xpY3kgKnBvbGljeSlcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTEyNzUtXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjEyNzY6c3RhdGljIHZvaWQgeGZybV9oYXNoX3JlYnVpbGQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMjc3LXtcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTQyMTI9c3RhdGljIGludCBfX25ldF9pbml0IHhmcm1fcG9saWN5X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI1Ny1cdElOSVRfV09SSyhcdTAwMjZuZXQtXHUwMDNleGZybS5wb2xpY3lfaGFzaF93b3JrLCB4ZnJtX2hhc2hfcmVzaXplKTtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDI1ODpcdElOSVRfV09SSyhcdTAwMjZuZXQtXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC53b3JrLCB4ZnJtX2hhc2hfcmVidWlsZCk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNTktXHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNTo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTgzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBicmVha2Rvd24gb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgWEZSTSBIYXNoIFJlYnVpbGQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGB4ZnJtX2hhc2hfcmVidWlsZGAsIGFuZCBpdCYjMzk7cyBmbGFnZ2VkIGFzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uIHdpdGhpbiB0aGUgWEZSTSBmcmFtZXdvcmsuIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgaW50ZXJlc3Rpbmcg4oCTIG1lYW5pbmcgaXQmIzM5O3MgbGlrZWx5IGEgYmFja2dyb3VuZCB0YXNrIGFuZCBub3QgcGFydCBvZiB0aGUgY3JpdGljYWwgcGF0aC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIHRyaWdnZXJpbmcgbWVjaGFuaXNtIGZvciB0aGlzIHJlYnVpbGQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgZXZlbnRzIG9yIGNvbmRpdGlvbnMgbmVjZXNzaXRhdGUgYSBoYXNoIHJlYnVpbGQgaW4gdGhlIElQc2VjIGNvbnRleHQuIElzIGl0IHJlbGF0ZWQgdG8gcG9saWN5IGNoYW5nZXMsIHJlc291cmNlIGxpbWl0cywgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGltZSB0byBkaWcgZGVlcGVyIGFuZCB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgY2FsbHMgaW50byBpdCwgd2hhdCB2YXJpYWJsZXMgaXQgcmVsaWVzIG9uIGFuZCB3aGVyZSB0aG9zZSBvcmlnaW5hdGUuIEkgbmVlZCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIHJvbGUgaW4gdGhlIGxhcmdlciBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDU6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cG9saWN5X2h0aHJlc2hcXC53b3JrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fcG9saWN5LmM9MTI3Nj1zdGF0aWMgdm9pZCB4ZnJtX2hhc2hfcmVidWlsZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMjc4LVx0c3RydWN0IG5ldCAqbmV0ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZXQsXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjEyNzk6XHRcdFx0XHQgICAgICAgeGZybS5wb2xpY3lfaHRocmVzaC53b3JrKTtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMTI4MC1cdHN0cnVjdCB4ZnJtX3BvbGljeSAqcG9sO1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MTM5OT12b2lkIHhmcm1fcG9saWN5X2hhc2hfcmVidWlsZChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTE0MDAte1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzoxNDAxOlx0c2NoZWR1bGVfd29yayhcdTAwMjZuZXQtXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC53b3JrKTtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMTQwMi19XG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYz00MjEyPXN0YXRpYyBpbnQgX19uZXRfaW5pdCB4ZnJtX3BvbGljeV9pbml0KHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNTctXHRJTklUX1dPUksoXHUwMDI2bmV0LVx1MDAzZXhmcm0ucG9saWN5X2hhc2hfd29yaywgeGZybV9oYXNoX3Jlc2l6ZSk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQyNTg6XHRJTklUX1dPUksoXHUwMDI2bmV0LVx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gud29yaywgeGZybV9oYXNoX3JlYnVpbGQpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy00MjU5LVx0cmV0dXJuIDA7XG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYz00MjczPXN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgeGZybV9uZXRfcHJlX2V4aXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy00Mjc0LXtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDI3NTpcdGRpc2FibGVfd29ya19zeW5jKFx1MDAyNm5ldC1cdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLndvcmspO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy00Mjc2LVx0Zmx1c2hfd29yayhcdTAwMjZuZXQtXHUwMDNleGZybS5wb2xpY3lfaGFzaF93b3JrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNTo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzgwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhhdCBzbmlwcGV0OgoKKipEaXZpbmcgaW50byB0aGUgUG9saWN5IEhhc2ggUmVidWlsZCoqCgpPa2F5LCBzbyBgeGZybV9wb2xpY3lfaGFzaF9yZWJ1aWxkYCBpcyB0aGUga2V5IGZ1bmN0aW9uIHRoYXQgaW5pdGlhdGVzIHRoaXMgcHJvY2Vzcy4gTXkgbmV4dCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgdGhlICoqdHJpZ2dlcioqIC0gdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gdGhhdCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBldmVudHMgb3IgYWN0aW9ucyBsZWFkIHRvIHRoZSBoYXNoIHRhYmxlIGJlaW5nIHJlYnVpbHQuIExldCYjMzk7cyBzZWUgd2hlcmUgdGhhdCBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tLCBhbmQgbWFwIGl0IG91dCBzbyBJIGhhdmUgYSBtZW50YWwgcGljdHVyZSBvZiB0aGUgcG9zc2libGUgc2NlbmFyaW9zLiBUaW1lIHRvIGdvIGh1bnRpbmcgZm9yIGNhbGwgc2l0ZXMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDU6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZybV9wb2xpY3lfaGFzaF9yZWJ1aWxkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fcG9saWN5LmM9MTI3Nj1zdGF0aWMgdm9pZCB4ZnJtX2hhc2hfcmVidWlsZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMzk4LVxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoxMzk5OnZvaWQgeGZybV9wb2xpY3lfaGFzaF9yZWJ1aWxkKHN0cnVjdCBuZXQgKm5ldClcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMTQwMC17XG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xNDAyLX1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTQwMzpFWFBPUlRfU1lNQk9MKHhmcm1fcG9saWN5X2hhc2hfcmVidWlsZCk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTE0MDQtXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MTY5ND1zdGF0aWMgaW50IHhmcm1fc2V0X3NwZGluZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMTc0MS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jOjE3NDI6XHRcdHhmcm1fcG9saWN5X2hhc2hfcmVidWlsZChuZXQpO1xubmV0L3hmcm0veGZybV91c2VyLmMtMTc0My1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNTo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODcxCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgSSBzZWUgaXQ6CgoqKlhGUk0gU1BEaW5mbyBhbmQgQ29uZmlndXJhdGlvbiBDaGVjayoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGB4ZnJtX3NldF9zcGRpbmZvYCBjYWxsLCByaWdodD8gU2VlbXMgbGlrZSBpdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQgZnJvbSB1c2VyIHNwYWNlLCBjb21pbmcgaW4gdmlhIG5ldGxpbmsgaW4gYG5ldC94ZnJtL3hmcm1fdXNlci5jYC4gIEkmIzM5O20gcHJldHR5IGNvbmZpZGVudCB0aGF0IGB4ZnJtX2hhc2hfcmVidWlsZGAgaXMgYWN0dWFsbHkgYmVpbmcgY2FsbGVkIGFuZCBpcyB3b3JraW5nIGFzIGV4cGVjdGVkLiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIFhGUk0gY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIHNldCB1cCBjb3JyZWN0bHkgaW4gdGhlIHN5c3RlbSB0byBkZXRlcm1pbmUgd2h5IEkmIzM5O20gZXhwZXJpZW5jaW5nIHRoaXMgaXNzdWUuIExldCBtZSByZXZpZXcgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDU6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGUk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGZybS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZy00LSNcbm5ldC94ZnJtL0tjb25maWc6NTpjb25maWcgWEZSTVxubmV0L3hmcm0vS2NvbmZpZy02LVx0Ym9vbFxuLS1cbm5ldC94ZnJtL0tjb25maWctMTAtXG5uZXQveGZybS9LY29uZmlnOjExOmNvbmZpZyBYRlJNX09GRkxPQURcbm5ldC94ZnJtL0tjb25maWctMTItXHRib29sXG5uZXQveGZybS9LY29uZmlnLTEzLVxubmV0L3hmcm0vS2NvbmZpZzoxNDpjb25maWcgWEZSTV9BTEdPXG5uZXQveGZybS9LY29uZmlnLTE1LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnPTIyPWlmIElORVRcbm5ldC94ZnJtL0tjb25maWc6MjM6Y29uZmlnIFhGUk1fVVNFUlxubmV0L3hmcm0vS2NvbmZpZy0yNC1cdHRyaXN0YXRlIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTMxLVxubmV0L3hmcm0vS2NvbmZpZzozMjpjb25maWcgWEZSTV9VU0VSX0NPTVBBVFxubmV0L3hmcm0vS2NvbmZpZy0zMy1cdHRyaXN0YXRlIFwmIzM0O0NvbXBhdGlibGUgQUJJIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTQyLVxubmV0L3hmcm0vS2NvbmZpZzo0Mzpjb25maWcgWEZSTV9JTlRFUkZBQ0Vcbm5ldC94ZnJtL0tjb25maWctNDQtXHR0cmlzdGF0ZSBcJiMzNDtUcmFuc2Zvcm1hdGlvbiB2aXJ0dWFsIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctNTAtXG5uZXQveGZybS9LY29uZmlnOjUxOmNvbmZpZyBYRlJNX1NVQl9QT0xJQ1lcbm5ldC94ZnJtL0tjb25maWctNTItXHRib29sIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHN1YiBwb2xpY3kgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctNjAtXG5uZXQveGZybS9LY29uZmlnOjYxOmNvbmZpZyBYRlJNX01JR1JBVEVcbm5ldC94ZnJtL0tjb25maWctNjItXHRib29sIFwmIzM0O1RyYW5zZm9ybWF0aW9uIG1pZ3JhdGUgZGF0YWJhc2VcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTcxLVxubmV0L3hmcm0vS2NvbmZpZzo3Mjpjb25maWcgWEZSTV9TVEFUSVNUSUNTXG5uZXQveGZybS9LY29uZmlnLTczLVx0Ym9vbCBcJiMzNDtUcmFuc2Zvcm1hdGlvbiBzdGF0aXN0aWNzXCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy04My0jIFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXG5uZXQveGZybS9LY29uZmlnOjg0OmNvbmZpZyBYRlJNX0FIXG5uZXQveGZybS9LY29uZmlnLTg1LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnLTkyLSMgYWxnb3JpdGhtcyB0aGF0IFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXG5uZXQveGZybS9LY29uZmlnOjkzOmNvbmZpZyBYRlJNX0VTUFxubmV0L3hmcm0vS2NvbmZpZy05NC1cdHRyaXN0YXRlXG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xMDUtXG5uZXQveGZybS9LY29uZmlnOjEwNjpjb25maWcgWEZSTV9JUENPTVBcbm5ldC94ZnJtL0tjb25maWctMTA3LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnPTEyNT1jb25maWcgTkVUX0tFWV9NSUdSQVRFXG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xNDAtXG5uZXQveGZybS9LY29uZmlnOjE0MTpjb25maWcgWEZSTV9JUFRGU1xubmV0L3hmcm0vS2NvbmZpZy0xNDItXHR0cmlzdGF0ZSBcJiMzNDtJUHNlYyBJUC1URlMvQUdHRlJBRyAoUkZDIDkzNDcpIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctMTU2LVxubmV0L3hmcm0vS2NvbmZpZzoxNTc6Y29uZmlnIFhGUk1fRVNQSU5UQ1Bcbm5ldC94ZnJtL0tjb25maWctMTU4LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNTo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTA4CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBLZXJuZWwgWEZSTSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGVzZSBYRlJNIGNvbXBvbmVudHMgYXJlIGJ1aWx0LCBzcGVjaWZpY2FsbHkgaG93IGB4ZnJtX3BvbGljeS5jYCBmaXRzIGludG8gdGhlIHBpY3R1cmUuIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCBgWEZSTWAgYW5kIGBYRlJNX1VTRVJgIGFyZSB0aGUga2V5IGNvbmZpZ3MgdG8gY2hlY2ssIHNpbmNlIGB4ZnJtX3NldF9zcGRpbmZvYCBpcyBjbGVhcmx5IGRlZmluZWQgaW4gYHhmcm1fdXNlci5jYC4gVG8gY29uZmlybSB0aGlzLCBJIHNob3VsZCBkaXZlIGludG8gYG5ldC94ZnJtL01ha2VmaWxlYC4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtsbCBnZXQgYSByZWFsIHVuZGVyc3RhbmRpbmcgb2YgaG93IGB4ZnJtX3BvbGljeS5jYCBpcyBjb21waWxlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgYXJlIGF0IHBsYXkuIEl0JiMzOTtzIHRpbWUgdG8gbWFwIG91dCB0aGUgYnVpbGQgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDU6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZybV9wb2xpY3kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGZybS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9NYWtlZmlsZT0xMj1lbmRpZlxubmV0L3hmcm0vTWFrZWZpbGUtMTMtXG5uZXQveGZybS9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfWEZSTSkgOj0geGZybV9wb2xpY3kubyB4ZnJtX3N0YXRlLm8geGZybV9oYXNoLm8gXFxcbm5ldC94ZnJtL01ha2VmaWxlLTE1LVx0XHQgICAgICB4ZnJtX2lucHV0Lm8geGZybV9vdXRwdXQubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNTo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjUyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBYRlJNIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgQ09ORklHX1hGUk1gIGlzIGVuYWJsZWQg4oCTIHRoYXQmIzM5O3MgZnVuZGFtZW50YWwuIEFuZCB0aGVuLCBJIGFic29sdXRlbHkgbmVlZCBgQ09ORklHX1hGUk1fVVNFUmAgaWYgSSYjMzk7bSBnb2luZyB0byBraWNrIG9mZiB0aGF0IHJlYnVpbGQgdmlhIG5ldGxpbmsuIE5vdywgdGhlIG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhlIGRldGFpbHMgb2YgaG93IHRoZSB1c2VyLXNwYWNlIGludGVyYWN0aW9uIHdvcmtzLiBJJiMzOTttIGdvaW5nIHRvIHplcm8gaW4gb24gYHhmcm1fc2V0X3NwZGluZm9gLCBzcGVjaWZpY2FsbHkgaW4gYG5ldC94ZnJtL3hmcm1fdXNlci5jYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciBsaWVzLCBhbmQgdGhhdCBmdW5jdGlvbiYjMzk7cyB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNTo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX3NldF9zcGRpbmZvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV91c2VyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV91c2VyLmM9MTY0MT1zdGF0aWMgaW50IGJ1aWxkX3NwZGluZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTE2OTMtXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxNjk0OnN0YXRpYyBpbnQgeGZybV9zZXRfc3BkaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTE2OTUtXHRcdFx0ICAgIHN0cnVjdCBubGF0dHIgKiphdHRycyxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zNzIxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgeGZybV9saW5rIHtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzUyLVx0W1hGUk1fTVNHX0dFVFNBRElORk8gIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9nZXRfc2FkaW5mbyAgIH0sXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNzUzOlx0W1hGUk1fTVNHX05FV1NQRElORk8gIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9zZXRfc3BkaW5mbyxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM3NTQtXHRcdFx0XHRcdFx0ICAgLm5sYV9wb2wgPSB4ZnJtYV9zcGRfcG9saWN5LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNTo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODE1CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBYRlJNIFNQRElORk8gRmxvdyoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IHRoaXMgYFhGUk1fTVNHX05FV1NQRElORk9gIG5ldGxpbmsgbWVzc2FnZSBpcyB0aGUgdHJpZ2dlciB0aGF0IGtpY2tzIG9mZiBgeGZybV9zZXRfc3BkaW5mb2AuIE15IGd1dCB0ZWxscyBtZSB0aGF0JiMzOTtzIHRoZSBwb2ludCBvZiBpbnRlcmVzdC4gSSBhbHNvIHJlbWVtYmVyIHRoYXQgdGhlcmUmIzM5O3MgYSBwYXRjaCByZWxhdGVkIHRvIHRoaXMgd2hvbGUgYXJlYSBpbiBgeGZybV9oYXNoX3JlYnVpbGRgLiBMZXQmIzM5O3MgZGlnIGludG8gYHhmcm1faGFzaF9yZWJ1aWxkYCBkaXJlY3RseSB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgdW5kZXJzdGFuZCB0aGUgcGF0Y2gmIzM5O3MgaW1wYWN0IHdpdGhpbiB0aGF0IGNvbnRleHQuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIgbGlrZWx5IGxpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA1OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9wb2xpY3kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyNzYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEyNzY6XHRzdGF0aWMgdm9pZCB4ZnJtX2hhc2hfcmVidWlsZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4xMjc3Olx0e1xuMTI3ODpcdFx0c3RydWN0IG5ldCAqbmV0ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZXQsXG4xMjc5Olx0XHRcdFx0XHQgICAgICAgeGZybS5wb2xpY3lfaHRocmVzaC53b3JrKTtcbjEyODA6XHRcdHN0cnVjdCB4ZnJtX3BvbGljeSAqcG9sO1xuMTI4MTpcdFx0c3RydWN0IHhmcm1fcG9saWN5ICpwb2xpY3k7XG4xMjgyOlx0XHRzdHJ1Y3QgaGxpc3RfaGVhZCAqY2hhaW47XG4xMjgzOlx0XHRzdHJ1Y3QgaGxpc3Rfbm9kZSAqbmV3cG9zO1xuMTI4NDpcdFx0aW50IGRpcjtcbjEyODU6XHRcdHVuc2lnbmVkIHNlcTtcbjEyODY6XHRcdHU4IGxiaXRzNCwgcmJpdHM0LCBsYml0czYsIHJiaXRzNjtcbjEyODc6XHRcbjEyODg6XHRcdG11dGV4X2xvY2soXHUwMDI2aGFzaF9yZXNpemVfbXV0ZXgpO1xuMTI4OTpcdFxuMTI5MDpcdFx0LyogcmVhZCBzZWxlY3RvciBwcmVmaXhsZW4gdGhyZXNob2xkcyAqL1xuMTI5MTpcdFx0ZG8ge1xuMTI5MjpcdFx0XHRzZXEgPSByZWFkX3NlcWJlZ2luKFx1MDAyNm5ldC1cdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLmxvY2spO1xuMTI5MzpcdFxuMTI5NDpcdFx0XHRsYml0czQgPSBuZXQtXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC5sYml0czQ7XG4xMjk1Olx0XHRcdHJiaXRzNCA9IG5ldC1cdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLnJiaXRzNDtcbjEyOTY6XHRcdFx0bGJpdHM2ID0gbmV0LVx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gubGJpdHM2O1xuMTI5NzpcdFx0XHRyYml0czYgPSBuZXQtXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC5yYml0czY7XG4xMjk4Olx0XHR9IHdoaWxlIChyZWFkX3NlcXJldHJ5KFx1MDAyNm5ldC1cdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLmxvY2ssIHNlcSkpO1xuMTI5OTpcdFxuMTMwMDpcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNm5ldC1cdTAwM2V4ZnJtLnhmcm1fcG9saWN5X2xvY2spO1xuMTMwMTpcdFx0d3JpdGVfc2VxY291bnRfYmVnaW4oXHUwMDI2bmV0LVx1MDAzZXhmcm0ueGZybV9wb2xpY3lfaGFzaF9nZW5lcmF0aW9uKTtcbjEzMDI6XHRcbjEzMDM6XHRcdC8qIG1ha2Ugc3VyZSB0aGF0IHdlIGNhbiBpbnNlcnQgdGhlIGluZGlyZWN0IHBvbGljaWVzIGFnYWluIGJlZm9yZVxuMTMwNDpcdFx0ICogd2Ugc3RhcnQgd2l0aCBkZXN0cnVjdGl2ZSBhY3Rpb24uXG4xMzA1Olx0XHQgKi9cbjEzMDY6XHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocG9saWN5LCBcdTAwMjZuZXQtXHUwMDNleGZybS5wb2xpY3lfYWxsLCB3YWxrLmFsbCkge1xuMTMwNzpcdFx0XHRzdHJ1Y3QgeGZybV9wb2xfaW5leGFjdF9iaW4gKmJpbjtcbjEzMDg6XHRcdFx0dTggZGJpdHMsIHNiaXRzO1xuMTMwOTpcdFxuMTMxMDpcdFx0XHRpZiAoeGZybV9wb2xpY3lfaXNfZGVhZF9vcl9zayhwb2xpY3kpKVxuMTMxMTpcdFx0XHRcdGNvbnRpbnVlO1xuMTMxMjpcdFxuMTMxMzpcdFx0XHRkaXIgPSB4ZnJtX3BvbGljeV9pZDJkaXIocG9saWN5LVx1MDAzZWluZGV4KTtcbjEzMTQ6XHRcdFx0aWYgKChkaXIgXHUwMDI2IFhGUk1fUE9MSUNZX01BU0spID09IFhGUk1fUE9MSUNZX09VVCkge1xuMTMxNTpcdFx0XHRcdGlmIChwb2xpY3ktXHUwMDNlZmFtaWx5ID09IEFGX0lORVQpIHtcbjEzMTY6XHRcdFx0XHRcdGRiaXRzID0gcmJpdHM0O1xuMTMxNzpcdFx0XHRcdFx0c2JpdHMgPSBsYml0czQ7XG4xMzE4Olx0XHRcdFx0fSBlbHNlIHtcbjEzMTk6XHRcdFx0XHRcdGRiaXRzID0gcmJpdHM2O1xuMTMyMDpcdFx0XHRcdFx0c2JpdHMgPSBsYml0czY7XG4xMzIxOlx0XHRcdFx0fVxuMTMyMjpcdFx0XHR9IGVsc2Uge1xuMTMyMzpcdFx0XHRcdGlmIChwb2xpY3ktXHUwMDNlZmFtaWx5ID09IEFGX0lORVQpIHtcbjEzMjQ6XHRcdFx0XHRcdGRiaXRzID0gbGJpdHM0O1xuMTMyNTpcdFx0XHRcdFx0c2JpdHMgPSByYml0czQ7XG4xMzI2Olx0XHRcdFx0fSBlbHNlIHtcbjEzMjc6XHRcdFx0XHRcdGRiaXRzID0gbGJpdHM2O1xuMTMyODpcdFx0XHRcdFx0c2JpdHMgPSByYml0czY7XG4xMzI5Olx0XHRcdFx0fVxuMTMzMDpcdFx0XHR9XG4xMzMxOlx0XG4xMzMyOlx0XHRcdGlmIChwb2xpY3ktXHUwMDNlc2VsZWN0b3IucHJlZml4bGVuX2QgXHUwMDNlPSBkYml0cyBcdTAwMjZcdTAwMjZcbjEzMzM6XHRcdFx0ICAgIHBvbGljeS1cdTAwM2VzZWxlY3Rvci5wcmVmaXhsZW5fcyBcdTAwM2U9IHNiaXRzKVxuMTMzNDpcdFx0XHRcdGNvbnRpbnVlO1xuMTMzNTpcdFxuMTMzNjpcdFx0XHRiaW4gPSB4ZnJtX3BvbGljeV9pbmV4YWN0X2FsbG9jX2Jpbihwb2xpY3ksIGRpcik7XG4xMzM3Olx0XHRcdGlmICghYmluKVxuMTMzODpcdFx0XHRcdGdvdG8gb3V0X3VubG9jaztcbjEzMzk6XHRcbjEzNDA6XHRcdFx0aWYgKCF4ZnJtX3BvbGljeV9pbmV4YWN0X2FsbG9jX2NoYWluKGJpbiwgcG9saWN5LCBkaXIpKVxuMTM0MTpcdFx0XHRcdGdvdG8gb3V0X3VubG9jaztcbjEzNDI6XHRcdH1cbjEzNDM6XHRcbjEzNDQ6XHRcdGZvciAoZGlyID0gMDsgZGlyIFx1MDAzYyBYRlJNX1BPTElDWV9NQVg7IGRpciYjNDM7JiM0MzspIHtcbjEzNDU6XHRcdFx0aWYgKChkaXIgXHUwMDI2IFhGUk1fUE9MSUNZX01BU0spID09IFhGUk1fUE9MSUNZX09VVCkge1xuMTM0NjpcdFx0XHRcdC8qIGRpciBvdXQgPVx1MDAzZSBkc3QgPSByZW1vdGUsIHNyYyA9IGxvY2FsICovXG4xMzQ3Olx0XHRcdFx0bmV0LVx1MDAzZXhmcm0ucG9saWN5X2J5ZHN0W2Rpcl0uZGJpdHM0ID0gcmJpdHM0O1xuMTM0ODpcdFx0XHRcdG5ldC1cdTAwM2V4ZnJtLnBvbGljeV9ieWRzdFtkaXJdLnNiaXRzNCA9IGxiaXRzNDtcbjEzNDk6XHRcdFx0XHRuZXQtXHUwMDNleGZybS5wb2xpY3lfYnlkc3RbZGlyXS5kYml0czYgPSByYml0czY7XG4xMzUwOlx0XHRcdFx0bmV0LVx1MDAzZXhmcm0ucG9saWN5X2J5ZHN0W2Rpcl0uc2JpdHM2ID0gbGJpdHM2O1xuMTM1MTpcdFx0XHR9IGVsc2Uge1xuMTM1MjpcdFx0XHRcdC8qIGRpciBpbi9md2QgPVx1MDAzZSBkc3QgPSBsb2NhbCwgc3JjID0gcmVtb3RlICovXG4xMzUzOlx0XHRcdFx0bmV0LVx1MDAzZXhmcm0ucG9saWN5X2J5ZHN0W2Rpcl0uZGJpdHM0ID0gbGJpdHM0O1xuMTM1NDpcdFx0XHRcdG5ldC1cdTAwM2V4ZnJtLnBvbGljeV9ieWRzdFtkaXJdLnNiaXRzNCA9IHJiaXRzNDtcbjEzNTU6XHRcdFx0XHRuZXQtXHUwMDNleGZybS5wb2xpY3lfYnlkc3RbZGlyXS5kYml0czYgPSBsYml0czY7XG4xMzU2Olx0XHRcdFx0bmV0LVx1MDAzZXhmcm0ucG9saWN5X2J5ZHN0W2Rpcl0uc2JpdHM2ID0gcmJpdHM2O1xuMTM1NzpcdFx0XHR9XG4xMzU4Olx0XHR9XG4xMzU5Olx0XG4xMzYwOlx0XHQvKiByZS1pbnNlcnQgYWxsIHBvbGljaWVzIGJ5IG9yZGVyIG9mIGNyZWF0aW9uICovXG4xMzYxOlx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JldmVyc2UocG9saWN5LCBcdTAwMjZuZXQtXHUwMDNleGZybS5wb2xpY3lfYWxsLCB3YWxrLmFsbCkge1xuMTM2MjpcdFx0XHRpZiAoeGZybV9wb2xpY3lfaXNfZGVhZF9vcl9zayhwb2xpY3kpKVxuMTM2MzpcdFx0XHRcdGNvbnRpbnVlO1xuMTM2NDpcdFxuMTM2NTpcdFx0XHRobGlzdF9kZWxfcmN1KFx1MDAyNnBvbGljeS1cdTAwM2VieWRzdCk7XG4xMzY2Olx0XG4xMzY3Olx0XHRcdG5ld3BvcyA9IE5VTEw7XG4xMzY4Olx0XHRcdGRpciA9IHhmcm1fcG9saWN5X2lkMmRpcihwb2xpY3ktXHUwMDNlaW5kZXgpO1xuMTM2OTpcdFx0XHRjaGFpbiA9IHBvbGljeV9oYXNoX2J5c2VsKG5ldCwgXHUwMDI2cG9saWN5LVx1MDAzZXNlbGVjdG9yLFxuMTM3MDpcdFx0XHRcdFx0XHQgIHBvbGljeS1cdTAwM2VmYW1pbHksIGRpcik7XG4xMzcxOlx0XG4xMzcyOlx0XHRcdGlmICghY2hhaW4pIHtcbjEzNzM6XHRcdFx0XHR2b2lkICpwID0geGZybV9wb2xpY3lfaW5leGFjdF9pbnNlcnQocG9saWN5LCBkaXIsIDApO1xuMTM3NDpcdFxuMTM3NTpcdFx0XHRcdFdBUk5fT05DRShJU19FUlIocCksIFwmIzM0O3JlaW5zZXJ0OiAlbGRcXG5cJiMzNDssIFBUUl9FUlIocCkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNTo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NzI5CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIGEgUG9saWN5IEZpbHRlcmluZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdHdlYWtpbmcgdGhlIHBvbGljeSBmaWx0ZXJpbmcgbG9naWMgZHVyaW5nIGEgaGFzaCByZWJ1aWxkLiBUaGUgb3JpZ2luYWwgY29kZSB3YXMgdXNpbmcgYSBsZXNzLXRoYW4gY29tcGFyaXNvbjogYHBvbGljeS0mZ3Q7c2VsZWN0b3IucHJlZml4bGVuX2QgJmx0OyBkYml0cyB8fCBwb2xpY3ktJmd0O3NlbGVjdG9yLnByZWZpeGxlbl9zICZsdDsgc2JpdHNgLiBUaGUgcGF0Y2ggZmxpcHMgdGhhdCB0byBhIGdyZWF0ZXItdGhhbi1vci1lcXVhbC10byBjb21wYXJpc29uIHVzaW5nIGEgbG9naWNhbCBBTkQ6IGBwb2xpY3ktJmd0O3NlbGVjdG9yLnByZWZpeGxlbl9kICZndDs9IGRiaXRzICZhbXA7JmFtcDsgcG9saWN5LSZndDtzZWxlY3Rvci5wcmVmaXhsZW5fcyAmZ3Q7PSBzYml0c2AuIFRoYXQmIzM5O3MgYSBjbGVhciBsb2dpY2FsIHNoaWZ0IGluIGhvdyB3ZSYjMzk7cmUgZmlsdGVyaW5nIHBvbGljaWVzIGZvciBpbmV4YWN0IGJpbiBhbGxvY2F0aW9uLiBGdW5jdGlvbmFsbHksIHRoaXMgbG9va3Mgc291bmQsIGFuZCBkZWZpbml0ZWx5IHdhcnJhbnRzIHNvbWUgc2VyaW91cyBmdXp6aW5nIHRvIG1ha2Ugc3VyZSBpdCBob2xkcyB1cCB1bmRlciBwcmVzc3VyZS4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIGludm9sdmVkLiBUaGlzIHBhdGNoIG1vZGlmaWVzIGB4ZnJtX2hhc2hfcmVidWlsZGAsIHdoaWNoIGlzIHRyaWdnZXJlZCBieSBgeGZybV9wb2xpY3lfaGFzaF9yZWJ1aWxkYCwgd2hpY2ggaW4gdHVybiBnZXRzIGNhbGxlZCBieSBgeGZybV9zZXRfc3BkaW5mb2AuIFRob3NlIHNlZW0gdG8gYmUgdGhlIGNvcmUgYml0cyB0byB6ZXJvIGluIG9uLiBBbHNvLCBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyBpbmNsdWRlIGB4ZnJtX3BvbGljeV9pbmV4YWN0X2FsbG9jX2JpbmAsIGB4ZnJtX3BvbGljeV9pbmV4YWN0X2FsbG9jX2NoYWluYCwgYW5kIGB4ZnJtX3BvbGljeV9pbmV4YWN0X2luc2VydGAuIFNpbmNlIGB4ZnJtX2hhc2hfcmVidWlsZGAgYW5kIGB4ZnJtX3NldF9zcGRpbmZvYCBhcmUgZGlyZWN0bHkgaW1wYWN0ZWQsIHRoZXkgZ28gb24gdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyBsaXN0LCB0b28uCgpGaW5hbGx5LCBhIHF1aWNrIGNvbmZpZyBjaGVjay4gYFhGUk1gIGFuZCBgWEZSTV9VU0VSYCBhcmUgdGhlIG9idmlvdXMgb25lcy4gQnV0LCBsZXQmIzM5O3MgYmUgdGhvcm91Z2ggYW5kIHBva2UgYXJvdW5kIGBuZXQveGZybS9LY29uZmlnYCB0byBjb25maXJtIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlncyByZWxhdGVkIHRvIGBYRlJNX1VTRVJgIHRoYXQgd2UgbmVlZCB0byBjb25zaWRlciBkdXJpbmcgdGVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDU6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGUk1fVVNFUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZnJtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZz0yMj1pZiBJTkVUXG5uZXQveGZybS9LY29uZmlnOjIzOmNvbmZpZyBYRlJNX1VTRVJcbm5ldC94ZnJtL0tjb25maWctMjQtXHR0cmlzdGF0ZSBcJiMzNDtUcmFuc2Zvcm1hdGlvbiB1c2VyIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy0zMS1cbm5ldC94ZnJtL0tjb25maWc6MzI6Y29uZmlnIFhGUk1fVVNFUl9DT01QQVRcbm5ldC94ZnJtL0tjb25maWctMzMtXHR0cmlzdGF0ZSBcJiMzNDtDb21wYXRpYmxlIEFCSSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA1OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg1NzEKCQkJCQkJCW91dHB1dDogMTQ5CgkJCQkJCQl0aG91Z2h0czogNTE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBYRlJNIFBvbGljeSBIYXNoIFJlYnVpbGQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCB0aGUgY29uZmlndXJhdGlvbnMgdGhhdCBqdW1wIG91dCBhcmUgYFhGUk1gIGFuZCBgWEZSTV9VU0VSYC4gSSBzZWUgdGhhdCBgWEZSTWAgaXMgYSBib29sZWFuIGFuZCBgWEZSTV9VU0VSYCBpcyBhIHRyaXN0YXRlLCBhbmQgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgZnVuY3Rpb25hbGl0eSwgYFhGUk1fVVNFUmAgc2VlbXMgbGlrZSB0aGUgZXNzZW50aWFsIG9uZSB0byBlbnN1cmUgaXMgZW5hYmxlZC4KCk15IHByaW1hcnkgY29uY2VybiBpcyByZWFjaGFiaWxpdHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBjb2RlIHBhdGggaXMgYWN0dWFsbHkgaGl0LiBMZXQgbWUgc2VlLCBgeGZybV9oYXNoX3JlYnVpbGRgLi4uIHllcywgaXQmIzM5O3MgdHJpZ2dlcmVkIGJ5IGB4ZnJtX3BvbGljeV9oYXNoX3JlYnVpbGRgLCB3aGljaCBpdHNlbGYgaXMgY2FsbGVkIGZyb20gYHhmcm1fc2V0X3NwZGluZm9gIHdoZW4gYSBgWEZSTV9NU0dfTkVXU1BESU5GT2AgbmV0bGluayBtZXNzYWdlIGFycml2ZXMuIFRoYXQmIzM5O3MgZ29vZCwgdGhhdCBjb25maXJtcyBpdCYjMzk7cyByZWFjaGFibGUgZGlyZWN0bHkgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmssIHdoaWNoIGlzIHRoZSBrZXkuCgpMZXQgbWUgdGhpbmsgYSBiaXQgYWJvdXQgdGhlIG90aGVyIGZ1bmN0aW9ucyBpbnZvbHZlZC4gYHhmcm1faGFzaF9yZWJ1aWxkYCBpcyB0aGUgY29yZS4gYHhmcm1fcG9saWN5X2hhc2hfcmVidWlsZGAgaXMganVzdCBhIHdyYXBwZXIsIGFuZCBgeGZybV9zZXRfc3BkaW5mb2AgaXMgdGhlIG5ldGxpbmsgaGFuZGxlci4gSSBzZWUgYHhmcm1fcG9saWN5X2luZXhhY3RfYWxsb2NfYmluYCBhbmQgYHhmcm1fcG9saWN5X2luZXhhY3RfYWxsb2NfY2hhaW5gIGNhbGxlZCB3aXRoaW4gdGhlIGxvb3AsIGJ1dCBpdCYjMzk7cyB0aGUgcmVidWlsZCB0aGF0JiMzOTtzIHRoZSBmb2N1cy4KClNvLCB0aGUga2V5IHN5bWJvbHMgaGVyZSBhcmUgYHhmcm1faGFzaF9yZWJ1aWxkYCBhbmQgYHhmcm1fc2V0X3NwZGluZm9gLiBBbmQgdGhlIGNvbmZpZ3MgSSYjMzk7bSBjb25maXJtaW5nIGFyZSBgWEZSTV9VU0VSYCBhbmQgYFhGUk1gLgoKVGhlIHBhdGNoIGlzIGZ1bmRhbWVudGFsbHkgbW9kaWZ5aW5nIHRoZSBjb25kaXRpb24gZm9yIGFsbG9jYXRpbmcgaW5leGFjdCBiaW5zIGR1cmluZyB0aGUgWEZSTSBwb2xpY3kgaGFzaCByZWJ1aWxkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHBvbGljeSBoYXNoaW5nIGFuZCBsb29rdXAgaW4gdGhlIElQc2VjL1hGUk0gc3Vic3lzdGVtLiBHaXZlbiB0aGF0IGBYRlJNX01TR19ORVdTUERJTkZPYCBpcyB0aGUgdHJpZ2dlciwgYW5kIGl0JiMzOTtzIHJlYWNoYWJsZSB0aHJvdWdoIGEgbmV0bGluayBtZXNzYWdlLCB0aGlzIHNlZW1zIHByZXR0eSBzb2xpZC4KCkkmIzM5O20gZG91YmxlLWNoZWNraW5nIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gYFhGUk1gIGFuZCBgWEZSTV9VU0VSYCBhcmUgZGVmaW5lZCBpbiBgbmV0L3hmcm0vS2NvbmZpZ2AgYW5kIGFyZSB0aGUgcmVsZXZhbnQgY29uZmlncy4KCldhaXQsIGB4ZnJtX2hhc2hfcmVidWlsZGAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgcmVpbmZvcmNlcyBpdCBhcyB0aGUgY29yZSBtb2RpZmljYXRpb24uIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjb25maXJtIHRoYXQgYHhmcm1faGFzaF9yZWJ1aWxkYCBpcyB0aGUgb25seSBmdW5jdGlvbiB0aGF0JiMzOTtzIG1vZGlmaWVkLCBhbmQgeWVzLCBpdCYjMzk7cyBqdXN0IHRoYXQgb25lIGZ1bmN0aW9uIGluIGBuZXQveGZybS94ZnJtX3BvbGljeS5jYC4KCk9rYXksIEkmIzM5O20gY29uZmlkZW50IGluIHRoZSBhbmFseXNpcy4gTGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDU6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk0mIzM0OywKICAgICYjMzQ7WEZSTV9VU0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eGZybV9oYXNoX3JlYnVpbGQmIzM0OywKICAgICYjMzQ7eGZybV9zZXRfc3BkaW5mbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29uZGl0aW9uIGZvciBhbGxvY2F0aW5nIGluZXhhY3QgYmlucyBkdXJpbmcgWEZSTSBwb2xpY3kgaGFzaCByZWJ1aWxkcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJUHNlYy9YRlJNIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgaG93IHBvbGljaWVzIGFyZSBoYXNoZWQgYW5kIGxvb2tlZCB1cC4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgWEZSTV9NU0dfTkVXU1BESU5GTyBuZXRsaW5rIG1lc3NhZ2UsIHdoaWNoIHRyaWdnZXJzIHhmcm1fc2V0X3NwZGluZm8gYW5kIHNjaGVkdWxlcyB0aGUgeGZybV9oYXNoX3JlYnVpbGQgd29yay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WEZSTSYjMzQ7LAogICAgJiMzNDtYRlJNX1VTRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4ZnJtX2hhc2hfcmVidWlsZCYjMzQ7LAogICAgJiMzNDt4ZnJtX3NldF9zcGRpbmZvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb25kaXRpb24gZm9yIGFsbG9jYXRpbmcgaW5leGFjdCBiaW5zIGR1cmluZyBYRlJNIHBvbGljeSBoYXNoIHJlYnVpbGRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIElQc2VjL1hGUk0gc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBob3cgcG9saWNpZXMgYXJlIGhhc2hlZCBhbmQgbG9va2VkIHVwLiBUaGUgY29kZSBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBYRlJNX01TR19ORVdTUERJTkZPIG5ldGxpbmsgbWVzc2FnZSwgd2hpY2ggdHJpZ2dlcnMgeGZybV9zZXRfc3BkaW5mbyBhbmQgc2NoZWR1bGVzIHRoZSB4ZnJtX2hhc2hfcmVidWlsZCB3b3JrLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDNUMDU6NDY6NTcuMjc1MjY2NzU5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3OTEzNDI4Nzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhGUk1cIixcbiAgICBcIlhGUk1fVVNFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhmcm1faGFzaF9yZWJ1aWxkXCIsXG4gICAgXCJ4ZnJtX3NldF9zcGRpbmZvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvbmRpdGlvbiBmb3IgYWxsb2NhdGluZyBpbmV4YWN0IGJpbnMgZHVyaW5nIFhGUk0gcG9saWN5IGhhc2ggcmVidWlsZHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVBzZWMvWEZSTSBzdWJzeXN0ZW0gdGhhdCBhZmZlY3RzIGhvdyBwb2xpY2llcyBhcmUgaGFzaGVkIGFuZCBsb29rZWQgdXAuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIFhGUk1fTVNHX05FV1NQRElORk8gbmV0bGluayBtZXNzYWdlLCB3aGljaCB0cmlnZ2VycyB4ZnJtX3NldF9zcGRpbmZvIGFuZCBzY2hlZHVsZXMgdGhlIHhmcm1faGFzaF9yZWJ1aWxkIHdvcmsuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA1OjQ2OjU3LjI3NTI3MTgyOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYxNDQ1NDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMWM3ZmY4MzI4MDExYWJiY2M3MWY5NzAxNWI0ZjhiYjdhZGVlZDlkM1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAzIDA1OjQ2OjU2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmMgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXFxuaW5kZXggN2VmODYxYTBlODIzMWIuLjkzMmEzMTNiOTQ2MGE1IDEwMDY0NFxcbi0tLSBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmNcXG4rKysgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXFxuQEAgLTEzMjksOCArMTMyOSw4IEBAIHN0YXRpYyB2b2lkIHhmcm1faGFzaF9yZWJ1aWxkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuIFxcbi1cXHRcXHRpZiAocG9saWN5LVxcdTAwM2VzZWxlY3Rvci5wcmVmaXhsZW5fZCBcXHUwMDNjIGRiaXRzIHx8XFxuLVxcdFxcdCAgICBwb2xpY3ktXFx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9zIFxcdTAwM2Mgc2JpdHMpXFxuK1xcdFxcdGlmIChwb2xpY3ktXFx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9kIFxcdTAwM2U9IGRiaXRzIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICBwb2xpY3ktXFx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9zIFxcdTAwM2U9IHNiaXRzKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdGJpbiA9IHhmcm1fcG9saWN5X2luZXhhY3RfYWxsb2NfYmluKHBvbGljeSwgZGlyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDU6NDY6NTcuNzM3OTk0OTkzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDc0NTA2ODkzMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTVwiLFxuICAgIFwiWEZSTV9VU0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieGZybV9oYXNoX3JlYnVpbGRcIixcbiAgICBcInhmcm1fc2V0X3NwZGluZm9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29uZGl0aW9uIGZvciBhbGxvY2F0aW5nIGluZXhhY3QgYmlucyBkdXJpbmcgWEZSTSBwb2xpY3kgaGFzaCByZWJ1aWxkcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJUHNlYy9YRlJNIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgaG93IHBvbGljaWVzIGFyZSBoYXNoZWQgYW5kIGxvb2tlZCB1cC4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgWEZSTV9NU0dfTkVXU1BESU5GTyBuZXRsaW5rIG1lc3NhZ2UsIHdoaWNoIHRyaWdnZXJzIHhmcm1fc2V0X3NwZGluZm8gYW5kIHNjaGVkdWxlcyB0aGUgeGZybV9oYXNoX3JlYnVpbGQgd29yay5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxYzdmZjgzMjgwMTFhYmJjYzcxZjk3MDE1YjRmOGJiN2FkZWVkOWQzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMyAwNTo0Njo1NiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmMgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXG5pbmRleCA3ZWY4NjFhMGU4MjMxYi4uOTMyYTMxM2I5NDYwYTUgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX3BvbGljeS5jXG4rKysgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXG5AQCAtMTMyOSw4ICsxMzI5LDggQEAgc3RhdGljIHZvaWQgeGZybV9oYXNoX3JlYnVpbGQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRcdH1cbiBcdFx0fVxuIFxuLVx0XHRpZiAocG9saWN5LVx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9kIFx1MDAzYyBkYml0cyB8fFxuLVx0XHQgICAgcG9saWN5LVx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9zIFx1MDAzYyBzYml0cylcbitcdFx0aWYgKHBvbGljeS1cdTAwM2VzZWxlY3Rvci5wcmVmaXhsZW5fZCBcdTAwM2U9IGRiaXRzIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgcG9saWN5LVx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9zIFx1MDAzZT0gc2JpdHMpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdGJpbiA9IHhmcm1fcG9saWN5X2luZXhhY3RfYWxsb2NfYmluKHBvbGljeSwgZGlyKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA1OjQ2OjU3LjczNzk5NzI0M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMzg4MzQ4NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBYRlJNIFBvbGljeSBIYXNoaW5nIENoYW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgaGl0dGluZyBgbmV0L3hmcm0veGZybV9wb2xpY3kuY2AsIHNwZWNpZmljYWxseSB0aGUgYHhmcm1faGFzaF9yZWJ1aWxkYCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzIHRoZSBjb25kaXRpb25hbCBzdGF0ZW1lbnQgdGhhdCdzIGJlZW4gbW9kaWZpZWQgd2l0aGluIHRoYXQgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb24gdGhlIElQc2VjL1hGUk0gcG9saWN5IGhhc2hpbmcgbG9naWMuXG5cbkl0IGxvb2tzIGxpa2UgdGhlIG9yaWdpbmFsIGNvZGUgd2FzIHNraXBwaW5nIG92ZXIgcG9saWNpZXMgYmFzZWQgb24gc29tZSBwcmVmaXggbGVuZ3RoIGNvbXBhcmlzb24sIHNwZWNpZmljYWxseTogYHBvbGljeS1cdTAwM2VzZWxlY3Rvci5wcmVmaXhsZW5fZCBcdTAwM2MgZGJpdHMgfHwgcG9saWN5LVx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9zIFx1MDAzYyBzYml0c2AuIFRoZSBwYXRjaCwgaG93ZXZlciwgaW52ZXJ0cyB0aGlzIGNvbmRpdGlvbiB0byBub3cgc2tpcCBwb2xpY2llcyBpZjogYHBvbGljeS1cdTAwM2VzZWxlY3Rvci5wcmVmaXhsZW5fZCBcdTAwM2U9IGRiaXRzIFx1MDAyNlx1MDAyNiBwb2xpY3ktXHUwMDNlc2VsZWN0b3IucHJlZml4bGVuX3MgXHUwMDNlPSBzYml0c2AuIFRoYXQncyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLiBJIG5lZWQgdG8gZGlnIGluIGFuZCB1bmRlcnN0YW5kICp3aHkqIHRoaXMgY2hhbmdlIHdhcyBtYWRlLiBXaGF0IHNjZW5hcmlvcyBkb2VzIHRoaXMgbmV3IGNvbmRpdGlvbiBoYW5kbGUgdGhhdCB0aGUgb2xkIG9uZSBkaWRuJ3Q/IFdoYXQncyB0aGUgaW50ZW5kZWQgYmVoYXZpb3IgYW5kIHdoYXQgZWRnZSBjYXNlcyBtaWdodCB0aGlzIGFmZmVjdD8gSSdsbCBwcm9iYWJseSBzdGFydCBieSByZXZpZXdpbmcgdGhlIHJlbGF0ZWQgY29tbWl0cyBhbmQgYW55IGFzc29jaWF0ZWQgYnVnIHJlcG9ydHMgb3IgbWFpbGluZyBsaXN0IGRpc2N1c3Npb25zIHRvIHVuZGVyc3RhbmQgdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg1NiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA1OjQ3OjAxLjc3NjgzMzY3NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDYxMTM4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX2hhc2hfcmVidWlsZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGZybS94ZnJtX3BvbGljeS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MTI2NT1zdGF0aWMgYm9vbCB4ZnJtX3BvbGljeV9pc19kZWFkX29yX3NrKGNvbnN0IHN0cnVjdCB4ZnJtX3BvbGljeSAqcG9saWN5KVxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMjc1LVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTI3NjpzdGF0aWMgdm9pZCB4ZnJtX2hhc2hfcmVidWlsZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMjc3LXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9NDIxMj1zdGF0aWMgaW50IF9fbmV0X2luaXQgeGZybV9wb2xpY3lfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNTctXFx0SU5JVF9XT1JLKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2hhc2hfd29yaywgeGZybV9oYXNoX3Jlc2l6ZSk7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzo0MjU4OlxcdElOSVRfV09SSyhcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLndvcmssIHhmcm1faGFzaF9yZWJ1aWxkKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNTktXFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA1OjQ3OjAxLjgzNzQ1NDYwMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1OTg4Mzg1MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIGJyZWFrZG93biBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFhGUk0gSGFzaCBSZWJ1aWxkKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYHhmcm1faGFzaF9yZWJ1aWxkYCwgYW5kIGl0J3MgZmxhZ2dlZCBhcyBhIHdvcmtxdWV1ZSBmdW5jdGlvbiB3aXRoaW4gdGhlIFhGUk0gZnJhbWV3b3JrLiBUaGF0J3MgaW1tZWRpYXRlbHkgaW50ZXJlc3Rpbmcg4oCTIG1lYW5pbmcgaXQncyBsaWtlbHkgYSBiYWNrZ3JvdW5kIHRhc2sgYW5kIG5vdCBwYXJ0IG9mIHRoZSBjcml0aWNhbCBwYXRoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgdHJpZ2dlcmluZyBtZWNoYW5pc20gZm9yIHRoaXMgcmVidWlsZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBldmVudHMgb3IgY29uZGl0aW9ucyBuZWNlc3NpdGF0ZSBhIGhhc2ggcmVidWlsZCBpbiB0aGUgSVBzZWMgY29udGV4dC4gSXMgaXQgcmVsYXRlZCB0byBwb2xpY3kgY2hhbmdlcywgcmVzb3VyY2UgbGltaXRzLCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaW1lIHRvIGRpZyBkZWVwZXIgYW5kIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMuIExldCdzIHNlZSB3aGF0IGNhbGxzIGludG8gaXQsIHdoYXQgdmFyaWFibGVzIGl0IHJlbGllcyBvbiBhbmQgd2hlcmUgdGhvc2Ugb3JpZ2luYXRlLiBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyByb2xlIGluIHRoZSBsYXJnZXIgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTgzLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDU6NDc6MDUuNDM2Mjk2NjI3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0ODQ3MzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBvbGljeV9odGhyZXNoXFxcXC53b3JrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS94ZnJtX3BvbGljeS5jPTEyNzY9c3RhdGljIHZvaWQgeGZybV9oYXNoX3JlYnVpbGQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMjc4LVxcdHN0cnVjdCBuZXQgKm5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0LFxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTI3OTpcXHRcXHRcXHRcXHQgICAgICAgeGZybS5wb2xpY3lfaHRocmVzaC53b3JrKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTEyODAtXFx0c3RydWN0IHhmcm1fcG9saWN5ICpwb2w7XFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTEzOTk9dm9pZCB4ZnJtX3BvbGljeV9oYXNoX3JlYnVpbGQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMTQwMC17XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoxNDAxOlxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNm5ldC1cXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC53b3JrKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTE0MDItfVxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz00MjEyPXN0YXRpYyBpbnQgX19uZXRfaW5pdCB4ZnJtX3BvbGljeV9pbml0KHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI1Ny1cXHRJTklUX1dPUksoXFx1MDAyNm5ldC1cXHUwMDNleGZybS5wb2xpY3lfaGFzaF93b3JrLCB4ZnJtX2hhc2hfcmVzaXplKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQyNTg6XFx0SU5JVF9XT1JLKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gud29yaywgeGZybV9oYXNoX3JlYnVpbGQpO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI1OS1cXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9NDI3Mz1zdGF0aWMgdm9pZCBfX25ldF9leGl0IHhmcm1fbmV0X3ByZV9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNzQte1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDI3NTpcXHRkaXNhYmxlX3dvcmtfc3luYyhcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLndvcmspO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI3Ni1cXHRmbHVzaF93b3JrKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2hhc2hfd29yayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA1OjQ3OjA1LjUwMTE1MDkzMloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODE0NjI4OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGF0IHNuaXBwZXQ6XG5cbioqRGl2aW5nIGludG8gdGhlIFBvbGljeSBIYXNoIFJlYnVpbGQqKlxuXG5Pa2F5LCBzbyBgeGZybV9wb2xpY3lfaGFzaF9yZWJ1aWxkYCBpcyB0aGUga2V5IGZ1bmN0aW9uIHRoYXQgaW5pdGlhdGVzIHRoaXMgcHJvY2Vzcy4gTXkgbmV4dCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgdGhlICoqdHJpZ2dlcioqIC0gdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gdGhhdCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBldmVudHMgb3IgYWN0aW9ucyBsZWFkIHRvIHRoZSBoYXNoIHRhYmxlIGJlaW5nIHJlYnVpbHQuIExldCdzIHNlZSB3aGVyZSB0aGF0IHBhcnRpY3VsYXIgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20sIGFuZCBtYXAgaXQgb3V0IHNvIEkgaGF2ZSBhIG1lbnRhbCBwaWN0dXJlIG9mIHRoZSBwb3NzaWJsZSBzY2VuYXJpb3MuIFRpbWUgdG8gZ28gaHVudGluZyBmb3IgY2FsbCBzaXRlcyFcblxuXG4iLCJJbnB1dFRva2VucyI6MzM4MCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA1OjQ3OjA5LjE4MjYxNTkyMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTExNDE1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZybV9wb2xpY3lfaGFzaF9yZWJ1aWxkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS94ZnJtX3BvbGljeS5jPTEyNzY9c3RhdGljIHZvaWQgeGZybV9oYXNoX3JlYnVpbGQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMzk4LVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTM5OTp2b2lkIHhmcm1fcG9saWN5X2hhc2hfcmVidWlsZChzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xNDAwLXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMTQwMi19XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoxNDAzOkVYUE9SVF9TWU1CT0woeGZybV9wb2xpY3lfaGFzaF9yZWJ1aWxkKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTE0MDQtXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz0xNjk0PXN0YXRpYyBpbnQgeGZybV9zZXRfc3BkaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTE3NDEtXFxubmV0L3hmcm0veGZybV91c2VyLmM6MTc0MjpcXHRcXHR4ZnJtX3BvbGljeV9oYXNoX3JlYnVpbGQobmV0KTtcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xNzQzLVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDU6NDc6MDkuNTczNzYyNjcyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ5MjMxMTc0NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBJIHNlZSBpdDpcblxuKipYRlJNIFNQRGluZm8gYW5kIENvbmZpZ3VyYXRpb24gQ2hlY2sqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYHhmcm1fc2V0X3NwZGluZm9gIGNhbGwsIHJpZ2h0PyBTZWVtcyBsaWtlIGl0J3MgdGhlIGVudHJ5IHBvaW50IGZyb20gdXNlciBzcGFjZSwgY29taW5nIGluIHZpYSBuZXRsaW5rIGluIGBuZXQveGZybS94ZnJtX3VzZXIuY2AuICBJJ20gcHJldHR5IGNvbmZpZGVudCB0aGF0IGB4ZnJtX2hhc2hfcmVidWlsZGAgaXMgYWN0dWFsbHkgYmVpbmcgY2FsbGVkIGFuZCBpcyB3b3JraW5nIGFzIGV4cGVjdGVkLiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIFhGUk0gY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIHNldCB1cCBjb3JyZWN0bHkgaW4gdGhlIHN5c3RlbSB0byBkZXRlcm1pbmUgd2h5IEknbSBleHBlcmllbmNpbmcgdGhpcyBpc3N1ZS4gTGV0IG1lIHJldmlldyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODcxLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDU6NDc6NDQuNDk2ODgyMTE0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzY0NjM0NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhGUk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL0tjb25maWctNC0jXFxubmV0L3hmcm0vS2NvbmZpZzo1OmNvbmZpZyBYRlJNXFxubmV0L3hmcm0vS2NvbmZpZy02LVxcdGJvb2xcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTAtXFxubmV0L3hmcm0vS2NvbmZpZzoxMTpjb25maWcgWEZSTV9PRkZMT0FEXFxubmV0L3hmcm0vS2NvbmZpZy0xMi1cXHRib29sXFxubmV0L3hmcm0vS2NvbmZpZy0xMy1cXG5uZXQveGZybS9LY29uZmlnOjE0OmNvbmZpZyBYRlJNX0FMR09cXG5uZXQveGZybS9LY29uZmlnLTE1LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTIyPWlmIElORVRcXG5uZXQveGZybS9LY29uZmlnOjIzOmNvbmZpZyBYRlJNX1VTRVJcXG5uZXQveGZybS9LY29uZmlnLTI0LVxcdHRyaXN0YXRlIFxcXCJUcmFuc2Zvcm1hdGlvbiB1c2VyIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy0zMS1cXG5uZXQveGZybS9LY29uZmlnOjMyOmNvbmZpZyBYRlJNX1VTRVJfQ09NUEFUXFxubmV0L3hmcm0vS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZSBcXFwiQ29tcGF0aWJsZSBBQkkgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNDItXFxubmV0L3hmcm0vS2NvbmZpZzo0Mzpjb25maWcgWEZSTV9JTlRFUkZBQ0VcXG5uZXQveGZybS9LY29uZmlnLTQ0LVxcdHRyaXN0YXRlIFxcXCJUcmFuc2Zvcm1hdGlvbiB2aXJ0dWFsIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNTAtXFxubmV0L3hmcm0vS2NvbmZpZzo1MTpjb25maWcgWEZSTV9TVUJfUE9MSUNZXFxubmV0L3hmcm0vS2NvbmZpZy01Mi1cXHRib29sIFxcXCJUcmFuc2Zvcm1hdGlvbiBzdWIgcG9saWN5IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTYwLVxcbm5ldC94ZnJtL0tjb25maWc6NjE6Y29uZmlnIFhGUk1fTUlHUkFURVxcbm5ldC94ZnJtL0tjb25maWctNjItXFx0Ym9vbCBcXFwiVHJhbnNmb3JtYXRpb24gbWlncmF0ZSBkYXRhYmFzZVxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNzEtXFxubmV0L3hmcm0vS2NvbmZpZzo3Mjpjb25maWcgWEZSTV9TVEFUSVNUSUNTXFxubmV0L3hmcm0vS2NvbmZpZy03My1cXHRib29sIFxcXCJUcmFuc2Zvcm1hdGlvbiBzdGF0aXN0aWNzXFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy04My0jIFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXFxubmV0L3hmcm0vS2NvbmZpZzo4NDpjb25maWcgWEZSTV9BSFxcbm5ldC94ZnJtL0tjb25maWctODUtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctOTItIyBhbGdvcml0aG1zIHRoYXQgUkZDIDgyMjEgbGlzdHMgYXMgTVVTVCBiZSBpbXBsZW1lbnRlZC5cXG5uZXQveGZybS9LY29uZmlnOjkzOmNvbmZpZyBYRlJNX0VTUFxcbm5ldC94ZnJtL0tjb25maWctOTQtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTA1LVxcbm5ldC94ZnJtL0tjb25maWc6MTA2OmNvbmZpZyBYRlJNX0lQQ09NUFxcbm5ldC94ZnJtL0tjb25maWctMTA3LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTEyNT1jb25maWcgTkVUX0tFWV9NSUdSQVRFXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTE0MC1cXG5uZXQveGZybS9LY29uZmlnOjE0MTpjb25maWcgWEZSTV9JUFRGU1xcbm5ldC94ZnJtL0tjb25maWctMTQyLVxcdHRyaXN0YXRlIFxcXCJJUHNlYyBJUC1URlMvQUdHRlJBRyAoUkZDIDkzNDcpIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTU2LVxcbm5ldC94ZnJtL0tjb25maWc6MTU3OmNvbmZpZyBYRlJNX0VTUElOVENQXFxubmV0L3hmcm0vS2NvbmZpZy0xNTgtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNTo0Nzo0NC42MzMzNTEwOTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkxNjc1ODQ2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIEtlcm5lbCBYRlJNIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlc2UgWEZSTSBjb21wb25lbnRzIGFyZSBidWlsdCwgc3BlY2lmaWNhbGx5IGhvdyBgeGZybV9wb2xpY3kuY2AgZml0cyBpbnRvIHRoZSBwaWN0dXJlLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgYFhGUk1gIGFuZCBgWEZSTV9VU0VSYCBhcmUgdGhlIGtleSBjb25maWdzIHRvIGNoZWNrLCBzaW5jZSBgeGZybV9zZXRfc3BkaW5mb2AgaXMgY2xlYXJseSBkZWZpbmVkIGluIGB4ZnJtX3VzZXIuY2AuIFRvIGNvbmZpcm0gdGhpcywgSSBzaG91bGQgZGl2ZSBpbnRvIGBuZXQveGZybS9NYWtlZmlsZWAuIFRoYXQncyB3aGVyZSBJJ2xsIGdldCBhIHJlYWwgdW5kZXJzdGFuZGluZyBvZiBob3cgYHhmcm1fcG9saWN5LmNgIGlzIGNvbXBpbGVkIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBhcmUgYXQgcGxheS4gSXQncyB0aW1lIHRvIG1hcCBvdXQgdGhlIGJ1aWxkIHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5MDgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNTo0Nzo0OC41NTAxMTEwODVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NjU1ODM4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX3BvbGljeVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGZybS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS9NYWtlZmlsZT0xMj1lbmRpZlxcbm5ldC94ZnJtL01ha2VmaWxlLTEzLVxcbm5ldC94ZnJtL01ha2VmaWxlOjE0Om9iai0kKENPTkZJR19YRlJNKSA6PSB4ZnJtX3BvbGljeS5vIHhmcm1fc3RhdGUubyB4ZnJtX2hhc2gubyBcXFxcXFxubmV0L3hmcm0vTWFrZWZpbGUtMTUtXFx0XFx0ICAgICAgeGZybV9pbnB1dC5vIHhmcm1fb3V0cHV0Lm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNTo0Nzo0OC43NDY2NzUwOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTA1MTc1OTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgWEZSTSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgQ09ORklHX1hGUk1gIGlzIGVuYWJsZWQg4oCTIHRoYXQncyBmdW5kYW1lbnRhbC4gQW5kIHRoZW4sIEkgYWJzb2x1dGVseSBuZWVkIGBDT05GSUdfWEZSTV9VU0VSYCBpZiBJJ20gZ29pbmcgdG8ga2ljayBvZmYgdGhhdCByZWJ1aWxkIHZpYSBuZXRsaW5rLiBOb3csIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBkZXRhaWxzIG9mIGhvdyB0aGUgdXNlci1zcGFjZSBpbnRlcmFjdGlvbiB3b3Jrcy4gSSdtIGdvaW5nIHRvIHplcm8gaW4gb24gYHhmcm1fc2V0X3NwZGluZm9gLCBzcGVjaWZpY2FsbHkgaW4gYG5ldC94ZnJtL3hmcm1fdXNlci5jYC4gVGhhdCdzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyIGxpZXMsIGFuZCB0aGF0IGZ1bmN0aW9uJ3MgdGhlIGtleS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI1MiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA1OjQ3OjUxLjg1MTg1Mjg4NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQzMjc1MDA2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX3NldF9zcGRpbmZvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL3hmcm1fdXNlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fdXNlci5jPTE2NDE9c3RhdGljIGludCBidWlsZF9zcGRpbmZvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTE2OTMtXFxubmV0L3hmcm0veGZybV91c2VyLmM6MTY5NDpzdGF0aWMgaW50IHhmcm1fc2V0X3NwZGluZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxubmV0L3hmcm0veGZybV91c2VyLmMtMTY5NS1cXHRcXHRcXHQgICAgc3RydWN0IG5sYXR0ciAqKmF0dHJzLFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MzcyMT1zdGF0aWMgY29uc3Qgc3RydWN0IHhmcm1fbGluayB7XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzUyLVxcdFtYRlJNX01TR19HRVRTQURJTkZPICAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fZ2V0X3NhZGluZm8gICB9LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM3NTM6XFx0W1hGUk1fTVNHX05FV1NQRElORk8gIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9zZXRfc3BkaW5mbyxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzU0LVxcdFxcdFxcdFxcdFxcdFxcdCAgIC5ubGFfcG9sID0geGZybWFfc3BkX3BvbGljeSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDU6NDc6NTMuMjg0NjA4MDQ1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1OTI4NjMzODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBYRlJNIFNQRElORk8gRmxvdyoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgdGhpcyBgWEZSTV9NU0dfTkVXU1BESU5GT2AgbmV0bGluayBtZXNzYWdlIGlzIHRoZSB0cmlnZ2VyIHRoYXQga2lja3Mgb2ZmIGB4ZnJtX3NldF9zcGRpbmZvYC4gTXkgZ3V0IHRlbGxzIG1lIHRoYXQncyB0aGUgcG9pbnQgb2YgaW50ZXJlc3QuIEkgYWxzbyByZW1lbWJlciB0aGF0IHRoZXJlJ3MgYSBwYXRjaCByZWxhdGVkIHRvIHRoaXMgd2hvbGUgYXJlYSBpbiBgeGZybV9oYXNoX3JlYnVpbGRgLiBMZXQncyBkaWcgaW50byBgeGZybV9oYXNoX3JlYnVpbGRgIGRpcmVjdGx5IHRvIHJlZnJlc2ggbXkgbWVtb3J5IGFuZCB1bmRlcnN0YW5kIHRoZSBwYXRjaCdzIGltcGFjdCB3aXRoaW4gdGhhdCBjb250ZXh0LiBUaGF0J3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIgbGlrZWx5IGxpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MTUsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNTo0ODowMS44Nzc0NzM0OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTcyOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3hmcm0veGZybV9wb2xpY3kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjc2LFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTI3NjpcXHRzdGF0aWMgdm9pZCB4ZnJtX2hhc2hfcmVidWlsZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuMTI3NzpcXHR7XFxuMTI3ODpcXHRcXHRzdHJ1Y3QgbmV0ICpuZXQgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG5ldCxcXG4xMjc5OlxcdFxcdFxcdFxcdFxcdCAgICAgICB4ZnJtLnBvbGljeV9odGhyZXNoLndvcmspO1xcbjEyODA6XFx0XFx0c3RydWN0IHhmcm1fcG9saWN5ICpwb2w7XFxuMTI4MTpcXHRcXHRzdHJ1Y3QgeGZybV9wb2xpY3kgKnBvbGljeTtcXG4xMjgyOlxcdFxcdHN0cnVjdCBobGlzdF9oZWFkICpjaGFpbjtcXG4xMjgzOlxcdFxcdHN0cnVjdCBobGlzdF9ub2RlICpuZXdwb3M7XFxuMTI4NDpcXHRcXHRpbnQgZGlyO1xcbjEyODU6XFx0XFx0dW5zaWduZWQgc2VxO1xcbjEyODY6XFx0XFx0dTggbGJpdHM0LCByYml0czQsIGxiaXRzNiwgcmJpdHM2O1xcbjEyODc6XFx0XFxuMTI4ODpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZoYXNoX3Jlc2l6ZV9tdXRleCk7XFxuMTI4OTpcXHRcXG4xMjkwOlxcdFxcdC8qIHJlYWQgc2VsZWN0b3IgcHJlZml4bGVuIHRocmVzaG9sZHMgKi9cXG4xMjkxOlxcdFxcdGRvIHtcXG4xMjkyOlxcdFxcdFxcdHNlcSA9IHJlYWRfc2VxYmVnaW4oXFx1MDAyNm5ldC1cXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC5sb2NrKTtcXG4xMjkzOlxcdFxcbjEyOTQ6XFx0XFx0XFx0bGJpdHM0ID0gbmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLmxiaXRzNDtcXG4xMjk1OlxcdFxcdFxcdHJiaXRzNCA9IG5ldC1cXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC5yYml0czQ7XFxuMTI5NjpcXHRcXHRcXHRsYml0czYgPSBuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gubGJpdHM2O1xcbjEyOTc6XFx0XFx0XFx0cmJpdHM2ID0gbmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLnJiaXRzNjtcXG4xMjk4OlxcdFxcdH0gd2hpbGUgKHJlYWRfc2VxcmV0cnkoXFx1MDAyNm5ldC1cXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC5sb2NrLCBzZXEpKTtcXG4xMjk5OlxcdFxcbjEzMDA6XFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ueGZybV9wb2xpY3lfbG9jayk7XFxuMTMwMTpcXHRcXHR3cml0ZV9zZXFjb3VudF9iZWdpbihcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLnhmcm1fcG9saWN5X2hhc2hfZ2VuZXJhdGlvbik7XFxuMTMwMjpcXHRcXG4xMzAzOlxcdFxcdC8qIG1ha2Ugc3VyZSB0aGF0IHdlIGNhbiBpbnNlcnQgdGhlIGluZGlyZWN0IHBvbGljaWVzIGFnYWluIGJlZm9yZVxcbjEzMDQ6XFx0XFx0ICogd2Ugc3RhcnQgd2l0aCBkZXN0cnVjdGl2ZSBhY3Rpb24uXFxuMTMwNTpcXHRcXHQgKi9cXG4xMzA2OlxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkocG9saWN5LCBcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9hbGwsIHdhbGsuYWxsKSB7XFxuMTMwNzpcXHRcXHRcXHRzdHJ1Y3QgeGZybV9wb2xfaW5leGFjdF9iaW4gKmJpbjtcXG4xMzA4OlxcdFxcdFxcdHU4IGRiaXRzLCBzYml0cztcXG4xMzA5OlxcdFxcbjEzMTA6XFx0XFx0XFx0aWYgKHhmcm1fcG9saWN5X2lzX2RlYWRfb3Jfc2socG9saWN5KSlcXG4xMzExOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjEzMTI6XFx0XFxuMTMxMzpcXHRcXHRcXHRkaXIgPSB4ZnJtX3BvbGljeV9pZDJkaXIocG9saWN5LVxcdTAwM2VpbmRleCk7XFxuMTMxNDpcXHRcXHRcXHRpZiAoKGRpciBcXHUwMDI2IFhGUk1fUE9MSUNZX01BU0spID09IFhGUk1fUE9MSUNZX09VVCkge1xcbjEzMTU6XFx0XFx0XFx0XFx0aWYgKHBvbGljeS1cXHUwMDNlZmFtaWx5ID09IEFGX0lORVQpIHtcXG4xMzE2OlxcdFxcdFxcdFxcdFxcdGRiaXRzID0gcmJpdHM0O1xcbjEzMTc6XFx0XFx0XFx0XFx0XFx0c2JpdHMgPSBsYml0czQ7XFxuMTMxODpcXHRcXHRcXHRcXHR9IGVsc2Uge1xcbjEzMTk6XFx0XFx0XFx0XFx0XFx0ZGJpdHMgPSByYml0czY7XFxuMTMyMDpcXHRcXHRcXHRcXHRcXHRzYml0cyA9IGxiaXRzNjtcXG4xMzIxOlxcdFxcdFxcdFxcdH1cXG4xMzIyOlxcdFxcdFxcdH0gZWxzZSB7XFxuMTMyMzpcXHRcXHRcXHRcXHRpZiAocG9saWN5LVxcdTAwM2VmYW1pbHkgPT0gQUZfSU5FVCkge1xcbjEzMjQ6XFx0XFx0XFx0XFx0XFx0ZGJpdHMgPSBsYml0czQ7XFxuMTMyNTpcXHRcXHRcXHRcXHRcXHRzYml0cyA9IHJiaXRzNDtcXG4xMzI2OlxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuMTMyNzpcXHRcXHRcXHRcXHRcXHRkYml0cyA9IGxiaXRzNjtcXG4xMzI4OlxcdFxcdFxcdFxcdFxcdHNiaXRzID0gcmJpdHM2O1xcbjEzMjk6XFx0XFx0XFx0XFx0fVxcbjEzMzA6XFx0XFx0XFx0fVxcbjEzMzE6XFx0XFxuMTMzMjpcXHRcXHRcXHRpZiAocG9saWN5LVxcdTAwM2VzZWxlY3Rvci5wcmVmaXhsZW5fZCBcXHUwMDNlPSBkYml0cyBcXHUwMDI2XFx1MDAyNlxcbjEzMzM6XFx0XFx0XFx0ICAgIHBvbGljeS1cXHUwMDNlc2VsZWN0b3IucHJlZml4bGVuX3MgXFx1MDAzZT0gc2JpdHMpXFxuMTMzNDpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4xMzM1OlxcdFxcbjEzMzY6XFx0XFx0XFx0YmluID0geGZybV9wb2xpY3lfaW5leGFjdF9hbGxvY19iaW4ocG9saWN5LCBkaXIpO1xcbjEzMzc6XFx0XFx0XFx0aWYgKCFiaW4pXFxuMTMzODpcXHRcXHRcXHRcXHRnb3RvIG91dF91bmxvY2s7XFxuMTMzOTpcXHRcXG4xMzQwOlxcdFxcdFxcdGlmICgheGZybV9wb2xpY3lfaW5leGFjdF9hbGxvY19jaGFpbihiaW4sIHBvbGljeSwgZGlyKSlcXG4xMzQxOlxcdFxcdFxcdFxcdGdvdG8gb3V0X3VubG9jaztcXG4xMzQyOlxcdFxcdH1cXG4xMzQzOlxcdFxcbjEzNDQ6XFx0XFx0Zm9yIChkaXIgPSAwOyBkaXIgXFx1MDAzYyBYRlJNX1BPTElDWV9NQVg7IGRpcisrKSB7XFxuMTM0NTpcXHRcXHRcXHRpZiAoKGRpciBcXHUwMDI2IFhGUk1fUE9MSUNZX01BU0spID09IFhGUk1fUE9MSUNZX09VVCkge1xcbjEzNDY6XFx0XFx0XFx0XFx0LyogZGlyIG91dCA9XFx1MDAzZSBkc3QgPSByZW1vdGUsIHNyYyA9IGxvY2FsICovXFxuMTM0NzpcXHRcXHRcXHRcXHRuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2J5ZHN0W2Rpcl0uZGJpdHM0ID0gcmJpdHM0O1xcbjEzNDg6XFx0XFx0XFx0XFx0bmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9ieWRzdFtkaXJdLnNiaXRzNCA9IGxiaXRzNDtcXG4xMzQ5OlxcdFxcdFxcdFxcdG5ldC1cXHUwMDNleGZybS5wb2xpY3lfYnlkc3RbZGlyXS5kYml0czYgPSByYml0czY7XFxuMTM1MDpcXHRcXHRcXHRcXHRuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2J5ZHN0W2Rpcl0uc2JpdHM2ID0gbGJpdHM2O1xcbjEzNTE6XFx0XFx0XFx0fSBlbHNlIHtcXG4xMzUyOlxcdFxcdFxcdFxcdC8qIGRpciBpbi9md2QgPVxcdTAwM2UgZHN0ID0gbG9jYWwsIHNyYyA9IHJlbW90ZSAqL1xcbjEzNTM6XFx0XFx0XFx0XFx0bmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9ieWRzdFtkaXJdLmRiaXRzNCA9IGxiaXRzNDtcXG4xMzU0OlxcdFxcdFxcdFxcdG5ldC1cXHUwMDNleGZybS5wb2xpY3lfYnlkc3RbZGlyXS5zYml0czQgPSByYml0czQ7XFxuMTM1NTpcXHRcXHRcXHRcXHRuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2J5ZHN0W2Rpcl0uZGJpdHM2ID0gbGJpdHM2O1xcbjEzNTY6XFx0XFx0XFx0XFx0bmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9ieWRzdFtkaXJdLnNiaXRzNiA9IHJiaXRzNjtcXG4xMzU3OlxcdFxcdFxcdH1cXG4xMzU4OlxcdFxcdH1cXG4xMzU5OlxcdFxcbjEzNjA6XFx0XFx0LyogcmUtaW5zZXJ0IGFsbCBwb2xpY2llcyBieSBvcmRlciBvZiBjcmVhdGlvbiAqL1xcbjEzNjE6XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yZXZlcnNlKHBvbGljeSwgXFx1MDAyNm5ldC1cXHUwMDNleGZybS5wb2xpY3lfYWxsLCB3YWxrLmFsbCkge1xcbjEzNjI6XFx0XFx0XFx0aWYgKHhmcm1fcG9saWN5X2lzX2RlYWRfb3Jfc2socG9saWN5KSlcXG4xMzYzOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjEzNjQ6XFx0XFxuMTM2NTpcXHRcXHRcXHRobGlzdF9kZWxfcmN1KFxcdTAwMjZwb2xpY3ktXFx1MDAzZWJ5ZHN0KTtcXG4xMzY2OlxcdFxcbjEzNjc6XFx0XFx0XFx0bmV3cG9zID0gTlVMTDtcXG4xMzY4OlxcdFxcdFxcdGRpciA9IHhmcm1fcG9saWN5X2lkMmRpcihwb2xpY3ktXFx1MDAzZWluZGV4KTtcXG4xMzY5OlxcdFxcdFxcdGNoYWluID0gcG9saWN5X2hhc2hfYnlzZWwobmV0LCBcXHUwMDI2cG9saWN5LVxcdTAwM2VzZWxlY3RvcixcXG4xMzcwOlxcdFxcdFxcdFxcdFxcdFxcdCAgcG9saWN5LVxcdTAwM2VmYW1pbHksIGRpcik7XFxuMTM3MTpcXHRcXG4xMzcyOlxcdFxcdFxcdGlmICghY2hhaW4pIHtcXG4xMzczOlxcdFxcdFxcdFxcdHZvaWQgKnAgPSB4ZnJtX3BvbGljeV9pbmV4YWN0X2luc2VydChwb2xpY3ksIGRpciwgMCk7XFxuMTM3NDpcXHRcXG4xMzc1OlxcdFxcdFxcdFxcdFdBUk5fT05DRShJU19FUlIocCksIFxcXCJyZWluc2VydDogJWxkXFxcXG5cXFwiLCBQVFJfRVJSKHApKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDU6NDg6MDEuODc3NjcyMjNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ5NjE1NDg2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBhIFBvbGljeSBGaWx0ZXJpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIHR3ZWFraW5nIHRoZSBwb2xpY3kgZmlsdGVyaW5nIGxvZ2ljIGR1cmluZyBhIGhhc2ggcmVidWlsZC4gVGhlIG9yaWdpbmFsIGNvZGUgd2FzIHVzaW5nIGEgbGVzcy10aGFuIGNvbXBhcmlzb246IGBwb2xpY3ktXHUwMDNlc2VsZWN0b3IucHJlZml4bGVuX2QgXHUwMDNjIGRiaXRzIHx8IHBvbGljeS1cdTAwM2VzZWxlY3Rvci5wcmVmaXhsZW5fcyBcdTAwM2Mgc2JpdHNgLiBUaGUgcGF0Y2ggZmxpcHMgdGhhdCB0byBhIGdyZWF0ZXItdGhhbi1vci1lcXVhbC10byBjb21wYXJpc29uIHVzaW5nIGEgbG9naWNhbCBBTkQ6IGBwb2xpY3ktXHUwMDNlc2VsZWN0b3IucHJlZml4bGVuX2QgXHUwMDNlPSBkYml0cyBcdTAwMjZcdTAwMjYgcG9saWN5LVx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9zIFx1MDAzZT0gc2JpdHNgLiBUaGF0J3MgYSBjbGVhciBsb2dpY2FsIHNoaWZ0IGluIGhvdyB3ZSdyZSBmaWx0ZXJpbmcgcG9saWNpZXMgZm9yIGluZXhhY3QgYmluIGFsbG9jYXRpb24uIEZ1bmN0aW9uYWxseSwgdGhpcyBsb29rcyBzb3VuZCwgYW5kIGRlZmluaXRlbHkgd2FycmFudHMgc29tZSBzZXJpb3VzIGZ1enppbmcgdG8gbWFrZSBzdXJlIGl0IGhvbGRzIHVwIHVuZGVyIHByZXNzdXJlLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIGludm9sdmVkLiBUaGlzIHBhdGNoIG1vZGlmaWVzIGB4ZnJtX2hhc2hfcmVidWlsZGAsIHdoaWNoIGlzIHRyaWdnZXJlZCBieSBgeGZybV9wb2xpY3lfaGFzaF9yZWJ1aWxkYCwgd2hpY2ggaW4gdHVybiBnZXRzIGNhbGxlZCBieSBgeGZybV9zZXRfc3BkaW5mb2AuIFRob3NlIHNlZW0gdG8gYmUgdGhlIGNvcmUgYml0cyB0byB6ZXJvIGluIG9uLiBBbHNvLCBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyBpbmNsdWRlIGB4ZnJtX3BvbGljeV9pbmV4YWN0X2FsbG9jX2JpbmAsIGB4ZnJtX3BvbGljeV9pbmV4YWN0X2FsbG9jX2NoYWluYCwgYW5kIGB4ZnJtX3BvbGljeV9pbmV4YWN0X2luc2VydGAuIFNpbmNlIGB4ZnJtX2hhc2hfcmVidWlsZGAgYW5kIGB4ZnJtX3NldF9zcGRpbmZvYCBhcmUgZGlyZWN0bHkgaW1wYWN0ZWQsIHRoZXkgZ28gb24gdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyBsaXN0LCB0b28uXG5cbkZpbmFsbHksIGEgcXVpY2sgY29uZmlnIGNoZWNrLiBgWEZSTWAgYW5kIGBYRlJNX1VTRVJgIGFyZSB0aGUgb2J2aW91cyBvbmVzLiBCdXQsIGxldCdzIGJlIHRob3JvdWdoIGFuZCBwb2tlIGFyb3VuZCBgbmV0L3hmcm0vS2NvbmZpZ2AgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3MgcmVsYXRlZCB0byBgWEZSTV9VU0VSYCB0aGF0IHdlIG5lZWQgdG8gY29uc2lkZXIgZHVyaW5nIHRlc3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3MjksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNTo0ODowNy4zNzM4MjkyODJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5NTY2NTQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWEZSTV9VU0VSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vS2NvbmZpZz0yMj1pZiBJTkVUXFxubmV0L3hmcm0vS2NvbmZpZzoyMzpjb25maWcgWEZSTV9VU0VSXFxubmV0L3hmcm0vS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZSBcXFwiVHJhbnNmb3JtYXRpb24gdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMzEtXFxubmV0L3hmcm0vS2NvbmZpZzozMjpjb25maWcgWEZSTV9VU0VSX0NPTVBBVFxcbm5ldC94ZnJtL0tjb25maWctMzMtXFx0dHJpc3RhdGUgXFxcIkNvbXBhdGlibGUgQUJJIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA1OjQ4OjA3Ljc2OTUwMDMxMloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzMzMDc5NDk0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgWEZSTSBQb2xpY3kgSGFzaCBSZWJ1aWxkIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBjb25maWd1cmF0aW9ucyB0aGF0IGp1bXAgb3V0IGFyZSBgWEZSTWAgYW5kIGBYRlJNX1VTRVJgLiBJIHNlZSB0aGF0IGBYRlJNYCBpcyBhIGJvb2xlYW4gYW5kIGBYRlJNX1VTRVJgIGlzIGEgdHJpc3RhdGUsIGFuZCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBmdW5jdGlvbmFsaXR5LCBgWEZSTV9VU0VSYCBzZWVtcyBsaWtlIHRoZSBlc3NlbnRpYWwgb25lIHRvIGVuc3VyZSBpcyBlbmFibGVkLlxuXG5NeSBwcmltYXJ5IGNvbmNlcm4gaXMgcmVhY2hhYmlsaXR5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgY29kZSBwYXRoIGlzIGFjdHVhbGx5IGhpdC4gTGV0IG1lIHNlZSwgYHhmcm1faGFzaF9yZWJ1aWxkYC4uLiB5ZXMsIGl0J3MgdHJpZ2dlcmVkIGJ5IGB4ZnJtX3BvbGljeV9oYXNoX3JlYnVpbGRgLCB3aGljaCBpdHNlbGYgaXMgY2FsbGVkIGZyb20gYHhmcm1fc2V0X3NwZGluZm9gIHdoZW4gYSBgWEZSTV9NU0dfTkVXU1BESU5GT2AgbmV0bGluayBtZXNzYWdlIGFycml2ZXMuIFRoYXQncyBnb29kLCB0aGF0IGNvbmZpcm1zIGl0J3MgcmVhY2hhYmxlIGRpcmVjdGx5IGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLCB3aGljaCBpcyB0aGUga2V5LlxuXG5MZXQgbWUgdGhpbmsgYSBiaXQgYWJvdXQgdGhlIG90aGVyIGZ1bmN0aW9ucyBpbnZvbHZlZC4gYHhmcm1faGFzaF9yZWJ1aWxkYCBpcyB0aGUgY29yZS4gYHhmcm1fcG9saWN5X2hhc2hfcmVidWlsZGAgaXMganVzdCBhIHdyYXBwZXIsIGFuZCBgeGZybV9zZXRfc3BkaW5mb2AgaXMgdGhlIG5ldGxpbmsgaGFuZGxlci4gSSBzZWUgYHhmcm1fcG9saWN5X2luZXhhY3RfYWxsb2NfYmluYCBhbmQgYHhmcm1fcG9saWN5X2luZXhhY3RfYWxsb2NfY2hhaW5gIGNhbGxlZCB3aXRoaW4gdGhlIGxvb3AsIGJ1dCBpdCdzIHRoZSByZWJ1aWxkIHRoYXQncyB0aGUgZm9jdXMuXG5cblNvLCB0aGUga2V5IHN5bWJvbHMgaGVyZSBhcmUgYHhmcm1faGFzaF9yZWJ1aWxkYCBhbmQgYHhmcm1fc2V0X3NwZGluZm9gLiBBbmQgdGhlIGNvbmZpZ3MgSSdtIGNvbmZpcm1pbmcgYXJlIGBYRlJNX1VTRVJgIGFuZCBgWEZSTWAuXG5cblRoZSBwYXRjaCBpcyBmdW5kYW1lbnRhbGx5IG1vZGlmeWluZyB0aGUgY29uZGl0aW9uIGZvciBhbGxvY2F0aW5nIGluZXhhY3QgYmlucyBkdXJpbmcgdGhlIFhGUk0gcG9saWN5IGhhc2ggcmVidWlsZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyBwb2xpY3kgaGFzaGluZyBhbmQgbG9va3VwIGluIHRoZSBJUHNlYy9YRlJNIHN1YnN5c3RlbS4gR2l2ZW4gdGhhdCBgWEZSTV9NU0dfTkVXU1BESU5GT2AgaXMgdGhlIHRyaWdnZXIsIGFuZCBpdCdzIHJlYWNoYWJsZSB0aHJvdWdoIGEgbmV0bGluayBtZXNzYWdlLCB0aGlzIHNlZW1zIHByZXR0eSBzb2xpZC5cblxuSSdtIGRvdWJsZS1jaGVja2luZyB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIGBYRlJNYCBhbmQgYFhGUk1fVVNFUmAgYXJlIGRlZmluZWQgaW4gYG5ldC94ZnJtL0tjb25maWdgIGFuZCBhcmUgdGhlIHJlbGV2YW50IGNvbmZpZ3MuXG5cbldhaXQsIGB4ZnJtX2hhc2hfcmVidWlsZGAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgcmVpbmZvcmNlcyBpdCBhcyB0aGUgY29yZSBtb2RpZmljYXRpb24uIEknbSBnb2luZyB0byBxdWlja2x5IGNvbmZpcm0gdGhhdCBgeGZybV9oYXNoX3JlYnVpbGRgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQncyBtb2RpZmllZCwgYW5kIHllcywgaXQncyBqdXN0IHRoYXQgb25lIGZ1bmN0aW9uIGluIGBuZXQveGZybS94ZnJtX3BvbGljeS5jYC5cblxuT2theSwgSSdtIGNvbmZpZGVudCBpbiB0aGUgYW5hbHlzaXMuIExldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODU3MSwiT3V0cHV0VG9rZW5zIjoxNDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDU6NDg6NDUuMTAwMjk3NDdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODM4MjU3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTVwiLFxuICAgIFwiWEZSTV9VU0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieGZybV9oYXNoX3JlYnVpbGRcIixcbiAgICBcInhmcm1fc2V0X3NwZGluZm9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29uZGl0aW9uIGZvciBhbGxvY2F0aW5nIGluZXhhY3QgYmlucyBkdXJpbmcgWEZSTSBwb2xpY3kgaGFzaCByZWJ1aWxkcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJUHNlYy9YRlJNIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgaG93IHBvbGljaWVzIGFyZSBoYXNoZWQgYW5kIGxvb2tlZCB1cC4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgWEZSTV9NU0dfTkVXU1BESU5GTyBuZXRsaW5rIG1lc3NhZ2UsIHdoaWNoIHRyaWdnZXJzIHhmcm1fc2V0X3NwZGluZm8gYW5kIHNjaGVkdWxlcyB0aGUgeGZybV9oYXNoX3JlYnVpbGQgd29yay5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNXCIsXG4gICAgXCJYRlJNX1VTRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4ZnJtX2hhc2hfcmVidWlsZFwiLFxuICAgIFwieGZybV9zZXRfc3BkaW5mb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb25kaXRpb24gZm9yIGFsbG9jYXRpbmcgaW5leGFjdCBiaW5zIGR1cmluZyBYRlJNIHBvbGljeSBoYXNoIHJlYnVpbGRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIElQc2VjL1hGUk0gc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBob3cgcG9saWNpZXMgYXJlIGhhc2hlZCBhbmQgbG9va2VkIHVwLiBUaGUgY29kZSBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBYRlJNX01TR19ORVdTUERJTkZPIG5ldGxpbmsgbWVzc2FnZSwgd2hpY2ggdHJpZ2dlcnMgeGZybV9zZXRfc3BkaW5mbyBhbmQgc2NoZWR1bGVzIHRoZSB4ZnJtX2hhc2hfcmVidWlsZCB3b3JrLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowrsptj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-03 05:37:13 +0000 UTC FinishedAt: 2026-07-03 05:48:46 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "08bc5b2636afcbadc31bb17243eec094e048bd79", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM", "XFRM_USER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "08bc5b2636afcbadc31bb17243eec094e048bd79", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM", "XFRM_USER" ], "series_id": "3b600e52-724d-4edb-ac53-4e6c31bdfedc" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "xfrm_hash_rebuild", "xfrm_set_spdinfo" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAzIDA1OjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk0mIzM0OywKICAgICYjMzQ7WEZSTV9VU0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eGZybV9oYXNoX3JlYnVpbGQmIzM0OywKICAgICYjMzQ7eGZybV9zZXRfc3BkaW5mbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29uZGl0aW9uIGZvciBhbGxvY2F0aW5nIGluZXhhY3QgYmlucyBkdXJpbmcgWEZSTSBwb2xpY3kgaGFzaCByZWJ1aWxkcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJUHNlYy9YRlJNIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgaG93IHBvbGljaWVzIGFyZSBoYXNoZWQgYW5kIGxvb2tlZCB1cC4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgWEZSTV9NU0dfTkVXU1BESU5GTyBuZXRsaW5rIG1lc3NhZ2UsIHdoaWNoIHRyaWdnZXJzIHhmcm1fc2V0X3NwZGluZm8gYW5kIHNjaGVkdWxlcyB0aGUgeGZybV9oYXNoX3JlYnVpbGQgd29yay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNTo0NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDFjN2ZmODMyODAxMWFiYmNjNzFmOTcwMTViNGY4YmI3YWRlZWQ5ZDNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAzIDA1OjQ2OjU2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmMgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXG5pbmRleCA3ZWY4NjFhMGU4MjMxYi4uOTMyYTMxM2I5NDYwYTUgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX3BvbGljeS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXG5AQCAtMTMyOSw4ICYjNDM7MTMyOSw4IEBAIHN0YXRpYyB2b2lkIHhmcm1faGFzaF9yZWJ1aWxkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdFx0XHR9XG4gXHRcdH1cbiBcbi1cdFx0aWYgKHBvbGljeS1cdTAwM2VzZWxlY3Rvci5wcmVmaXhsZW5fZCBcdTAwM2MgZGJpdHMgfHxcbi1cdFx0ICAgIHBvbGljeS1cdTAwM2VzZWxlY3Rvci5wcmVmaXhsZW5fcyBcdTAwM2Mgc2JpdHMpXG4mIzQzO1x0XHRpZiAocG9saWN5LVx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9kIFx1MDAzZT0gZGJpdHMgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgcG9saWN5LVx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9zIFx1MDAzZT0gc2JpdHMpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdGJpbiA9IHhmcm1fcG9saWN5X2luZXhhY3RfYWxsb2NfYmluKHBvbGljeSwgZGlyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNTo0NjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlJNJiMzNDssCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hmcm1faGFzaF9yZWJ1aWxkJiMzNDssCiAgICAmIzM0O3hmcm1fc2V0X3NwZGluZm8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvbmRpdGlvbiBmb3IgYWxsb2NhdGluZyBpbmV4YWN0IGJpbnMgZHVyaW5nIFhGUk0gcG9saWN5IGhhc2ggcmVidWlsZHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVBzZWMvWEZSTSBzdWJzeXN0ZW0gdGhhdCBhZmZlY3RzIGhvdyBwb2xpY2llcyBhcmUgaGFzaGVkIGFuZCBsb29rZWQgdXAuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIFhGUk1fTVNHX05FV1NQRElORk8gbmV0bGluayBtZXNzYWdlLCB3aGljaCB0cmlnZ2VycyB4ZnJtX3NldF9zcGRpbmZvIGFuZCBzY2hlZHVsZXMgdGhlIHhmcm1faGFzaF9yZWJ1aWxkIHdvcmsuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDFjN2ZmODMyODAxMWFiYmNjNzFmOTcwMTViNGY4YmI3YWRlZWQ5ZDMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAzIDA1OjQ2OjU2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9wb2xpY3kuYyBiL25ldC94ZnJtL3hmcm1fcG9saWN5LmMKaW5kZXggN2VmODYxYTBlODIzMWIuLjkzMmEzMTNiOTQ2MGE1IDEwMDY0NAotLS0gYS9uZXQveGZybS94ZnJtX3BvbGljeS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZnJtL3hmcm1fcG9saWN5LmMKQEAgLTEzMjksOCAmIzQzOzEzMjksOCBAQCBzdGF0aWMgdm9pZCB4ZnJtX2hhc2hfcmVidWlsZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJCQl9CiAJCX0KIAotCQlpZiAocG9saWN5LSZndDtzZWxlY3Rvci5wcmVmaXhsZW5fZCAmbHQ7IGRiaXRzIHx8Ci0JCSAgICBwb2xpY3ktJmd0O3NlbGVjdG9yLnByZWZpeGxlbl9zICZsdDsgc2JpdHMpCiYjNDM7CQlpZiAocG9saWN5LSZndDtzZWxlY3Rvci5wcmVmaXhsZW5fZCAmZ3Q7PSBkYml0cyAmYW1wOyZhbXA7CiYjNDM7CQkgICAgcG9saWN5LSZndDtzZWxlY3Rvci5wcmVmaXhsZW5fcyAmZ3Q7PSBzYml0cykKIAkJCWNvbnRpbnVlOwogCiAJCWJpbiA9IHhmcm1fcG9saWN5X2luZXhhY3RfYWxsb2NfYmluKHBvbGljeSwgZGlyKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDU6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg1NgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFhGUk0gUG9saWN5IEhhc2hpbmcgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBoaXR0aW5nIGBuZXQveGZybS94ZnJtX3BvbGljeS5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgeGZybV9oYXNoX3JlYnVpbGRgIGZ1bmN0aW9uLiBUaGUga2V5IGhlcmUgaXMgdGhlIGNvbmRpdGlvbmFsIHN0YXRlbWVudCB0aGF0JiMzOTtzIGJlZW4gbW9kaWZpZWQgd2l0aGluIHRoYXQgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb24gdGhlIElQc2VjL1hGUk0gcG9saWN5IGhhc2hpbmcgbG9naWMuCgpJdCBsb29rcyBsaWtlIHRoZSBvcmlnaW5hbCBjb2RlIHdhcyBza2lwcGluZyBvdmVyIHBvbGljaWVzIGJhc2VkIG9uIHNvbWUgcHJlZml4IGxlbmd0aCBjb21wYXJpc29uLCBzcGVjaWZpY2FsbHk6IGBwb2xpY3ktJmd0O3NlbGVjdG9yLnByZWZpeGxlbl9kICZsdDsgZGJpdHMgfHwgcG9saWN5LSZndDtzZWxlY3Rvci5wcmVmaXhsZW5fcyAmbHQ7IHNiaXRzYC4gVGhlIHBhdGNoLCBob3dldmVyLCBpbnZlcnRzIHRoaXMgY29uZGl0aW9uIHRvIG5vdyBza2lwIHBvbGljaWVzIGlmOiBgcG9saWN5LSZndDtzZWxlY3Rvci5wcmVmaXhsZW5fZCAmZ3Q7PSBkYml0cyAmYW1wOyZhbXA7IHBvbGljeS0mZ3Q7c2VsZWN0b3IucHJlZml4bGVuX3MgJmd0Oz0gc2JpdHNgLiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UuIEkgbmVlZCB0byBkaWcgaW4gYW5kIHVuZGVyc3RhbmQgKndoeSogdGhpcyBjaGFuZ2Ugd2FzIG1hZGUuIFdoYXQgc2NlbmFyaW9zIGRvZXMgdGhpcyBuZXcgY29uZGl0aW9uIGhhbmRsZSB0aGF0IHRoZSBvbGQgb25lIGRpZG4mIzM5O3Q/IFdoYXQmIzM5O3MgdGhlIGludGVuZGVkIGJlaGF2aW9yIGFuZCB3aGF0IGVkZ2UgY2FzZXMgbWlnaHQgdGhpcyBhZmZlY3Q/IEkmIzM5O2xsIHByb2JhYmx5IHN0YXJ0IGJ5IHJldmlld2luZyB0aGUgcmVsYXRlZCBjb21taXRzIGFuZCBhbnkgYXNzb2NpYXRlZCBidWcgcmVwb3J0cyBvciBtYWlsaW5nIGxpc3QgZGlzY3Vzc2lvbnMgdG8gdW5kZXJzdGFuZCB0aGUgcmVhc29uaW5nIGJlaGluZCB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA1OjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmcm1faGFzaF9yZWJ1aWxkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9wb2xpY3kuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS94ZnJtX3BvbGljeS5jPTEyNjU9c3RhdGljIGJvb2wgeGZybV9wb2xpY3lfaXNfZGVhZF9vcl9zayhjb25zdCBzdHJ1Y3QgeGZybV9wb2xpY3kgKnBvbGljeSlcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTEyNzUtXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjEyNzY6c3RhdGljIHZvaWQgeGZybV9oYXNoX3JlYnVpbGQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMjc3LXtcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTQyMTI9c3RhdGljIGludCBfX25ldF9pbml0IHhmcm1fcG9saWN5X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI1Ny1cdElOSVRfV09SSyhcdTAwMjZuZXQtXHUwMDNleGZybS5wb2xpY3lfaGFzaF93b3JrLCB4ZnJtX2hhc2hfcmVzaXplKTtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDI1ODpcdElOSVRfV09SSyhcdTAwMjZuZXQtXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC53b3JrLCB4ZnJtX2hhc2hfcmVidWlsZCk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNTktXHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNTo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTgzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBicmVha2Rvd24gb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgWEZSTSBIYXNoIFJlYnVpbGQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGB4ZnJtX2hhc2hfcmVidWlsZGAsIGFuZCBpdCYjMzk7cyBmbGFnZ2VkIGFzIGEgd29ya3F1ZXVlIGZ1bmN0aW9uIHdpdGhpbiB0aGUgWEZSTSBmcmFtZXdvcmsuIFRoYXQmIzM5O3MgaW1tZWRpYXRlbHkgaW50ZXJlc3Rpbmcg4oCTIG1lYW5pbmcgaXQmIzM5O3MgbGlrZWx5IGEgYmFja2dyb3VuZCB0YXNrIGFuZCBub3QgcGFydCBvZiB0aGUgY3JpdGljYWwgcGF0aC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIHRyaWdnZXJpbmcgbWVjaGFuaXNtIGZvciB0aGlzIHJlYnVpbGQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgZXZlbnRzIG9yIGNvbmRpdGlvbnMgbmVjZXNzaXRhdGUgYSBoYXNoIHJlYnVpbGQgaW4gdGhlIElQc2VjIGNvbnRleHQuIElzIGl0IHJlbGF0ZWQgdG8gcG9saWN5IGNoYW5nZXMsIHJlc291cmNlIGxpbWl0cywgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGltZSB0byBkaWcgZGVlcGVyIGFuZCB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzLiBMZXQmIzM5O3Mgc2VlIHdoYXQgY2FsbHMgaW50byBpdCwgd2hhdCB2YXJpYWJsZXMgaXQgcmVsaWVzIG9uIGFuZCB3aGVyZSB0aG9zZSBvcmlnaW5hdGUuIEkgbmVlZCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIHJvbGUgaW4gdGhlIGxhcmdlciBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDU6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cG9saWN5X2h0aHJlc2hcXC53b3JrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fcG9saWN5LmM9MTI3Nj1zdGF0aWMgdm9pZCB4ZnJtX2hhc2hfcmVidWlsZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMjc4LVx0c3RydWN0IG5ldCAqbmV0ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZXQsXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjEyNzk6XHRcdFx0XHQgICAgICAgeGZybS5wb2xpY3lfaHRocmVzaC53b3JrKTtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMTI4MC1cdHN0cnVjdCB4ZnJtX3BvbGljeSAqcG9sO1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MTM5OT12b2lkIHhmcm1fcG9saWN5X2hhc2hfcmVidWlsZChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTE0MDAte1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzoxNDAxOlx0c2NoZWR1bGVfd29yayhcdTAwMjZuZXQtXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC53b3JrKTtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMTQwMi19XG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYz00MjEyPXN0YXRpYyBpbnQgX19uZXRfaW5pdCB4ZnJtX3BvbGljeV9pbml0KHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNTctXHRJTklUX1dPUksoXHUwMDI2bmV0LVx1MDAzZXhmcm0ucG9saWN5X2hhc2hfd29yaywgeGZybV9oYXNoX3Jlc2l6ZSk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQyNTg6XHRJTklUX1dPUksoXHUwMDI2bmV0LVx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gud29yaywgeGZybV9oYXNoX3JlYnVpbGQpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy00MjU5LVx0cmV0dXJuIDA7XG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYz00MjczPXN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgeGZybV9uZXRfcHJlX2V4aXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy00Mjc0LXtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDI3NTpcdGRpc2FibGVfd29ya19zeW5jKFx1MDAyNm5ldC1cdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLndvcmspO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy00Mjc2LVx0Zmx1c2hfd29yayhcdTAwMjZuZXQtXHUwMDNleGZybS5wb2xpY3lfaGFzaF93b3JrKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNTo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzgwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhhdCBzbmlwcGV0OgoKKipEaXZpbmcgaW50byB0aGUgUG9saWN5IEhhc2ggUmVidWlsZCoqCgpPa2F5LCBzbyBgeGZybV9wb2xpY3lfaGFzaF9yZWJ1aWxkYCBpcyB0aGUga2V5IGZ1bmN0aW9uIHRoYXQgaW5pdGlhdGVzIHRoaXMgcHJvY2Vzcy4gTXkgbmV4dCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgdGhlICoqdHJpZ2dlcioqIC0gdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gdGhhdCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBldmVudHMgb3IgYWN0aW9ucyBsZWFkIHRvIHRoZSBoYXNoIHRhYmxlIGJlaW5nIHJlYnVpbHQuIExldCYjMzk7cyBzZWUgd2hlcmUgdGhhdCBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tLCBhbmQgbWFwIGl0IG91dCBzbyBJIGhhdmUgYSBtZW50YWwgcGljdHVyZSBvZiB0aGUgcG9zc2libGUgc2NlbmFyaW9zLiBUaW1lIHRvIGdvIGh1bnRpbmcgZm9yIGNhbGwgc2l0ZXMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDU6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZybV9wb2xpY3lfaGFzaF9yZWJ1aWxkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fcG9saWN5LmM9MTI3Nj1zdGF0aWMgdm9pZCB4ZnJtX2hhc2hfcmVidWlsZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMzk4LVxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoxMzk5OnZvaWQgeGZybV9wb2xpY3lfaGFzaF9yZWJ1aWxkKHN0cnVjdCBuZXQgKm5ldClcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMTQwMC17XG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xNDAyLX1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTQwMzpFWFBPUlRfU1lNQk9MKHhmcm1fcG9saWN5X2hhc2hfcmVidWlsZCk7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTE0MDQtXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MTY5ND1zdGF0aWMgaW50IHhmcm1fc2V0X3NwZGluZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMTc0MS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jOjE3NDI6XHRcdHhmcm1fcG9saWN5X2hhc2hfcmVidWlsZChuZXQpO1xubmV0L3hmcm0veGZybV91c2VyLmMtMTc0My1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNTo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODcxCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgSSBzZWUgaXQ6CgoqKlhGUk0gU1BEaW5mbyBhbmQgQ29uZmlndXJhdGlvbiBDaGVjayoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGB4ZnJtX3NldF9zcGRpbmZvYCBjYWxsLCByaWdodD8gU2VlbXMgbGlrZSBpdCYjMzk7cyB0aGUgZW50cnkgcG9pbnQgZnJvbSB1c2VyIHNwYWNlLCBjb21pbmcgaW4gdmlhIG5ldGxpbmsgaW4gYG5ldC94ZnJtL3hmcm1fdXNlci5jYC4gIEkmIzM5O20gcHJldHR5IGNvbmZpZGVudCB0aGF0IGB4ZnJtX2hhc2hfcmVidWlsZGAgaXMgYWN0dWFsbHkgYmVpbmcgY2FsbGVkIGFuZCBpcyB3b3JraW5nIGFzIGV4cGVjdGVkLiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIFhGUk0gY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIHNldCB1cCBjb3JyZWN0bHkgaW4gdGhlIHN5c3RlbSB0byBkZXRlcm1pbmUgd2h5IEkmIzM5O20gZXhwZXJpZW5jaW5nIHRoaXMgaXNzdWUuIExldCBtZSByZXZpZXcgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDU6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGUk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGZybS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZy00LSNcbm5ldC94ZnJtL0tjb25maWc6NTpjb25maWcgWEZSTVxubmV0L3hmcm0vS2NvbmZpZy02LVx0Ym9vbFxuLS1cbm5ldC94ZnJtL0tjb25maWctMTAtXG5uZXQveGZybS9LY29uZmlnOjExOmNvbmZpZyBYRlJNX09GRkxPQURcbm5ldC94ZnJtL0tjb25maWctMTItXHRib29sXG5uZXQveGZybS9LY29uZmlnLTEzLVxubmV0L3hmcm0vS2NvbmZpZzoxNDpjb25maWcgWEZSTV9BTEdPXG5uZXQveGZybS9LY29uZmlnLTE1LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnPTIyPWlmIElORVRcbm5ldC94ZnJtL0tjb25maWc6MjM6Y29uZmlnIFhGUk1fVVNFUlxubmV0L3hmcm0vS2NvbmZpZy0yNC1cdHRyaXN0YXRlIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTMxLVxubmV0L3hmcm0vS2NvbmZpZzozMjpjb25maWcgWEZSTV9VU0VSX0NPTVBBVFxubmV0L3hmcm0vS2NvbmZpZy0zMy1cdHRyaXN0YXRlIFwmIzM0O0NvbXBhdGlibGUgQUJJIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTQyLVxubmV0L3hmcm0vS2NvbmZpZzo0Mzpjb25maWcgWEZSTV9JTlRFUkZBQ0Vcbm5ldC94ZnJtL0tjb25maWctNDQtXHR0cmlzdGF0ZSBcJiMzNDtUcmFuc2Zvcm1hdGlvbiB2aXJ0dWFsIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctNTAtXG5uZXQveGZybS9LY29uZmlnOjUxOmNvbmZpZyBYRlJNX1NVQl9QT0xJQ1lcbm5ldC94ZnJtL0tjb25maWctNTItXHRib29sIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHN1YiBwb2xpY3kgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctNjAtXG5uZXQveGZybS9LY29uZmlnOjYxOmNvbmZpZyBYRlJNX01JR1JBVEVcbm5ldC94ZnJtL0tjb25maWctNjItXHRib29sIFwmIzM0O1RyYW5zZm9ybWF0aW9uIG1pZ3JhdGUgZGF0YWJhc2VcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTcxLVxubmV0L3hmcm0vS2NvbmZpZzo3Mjpjb25maWcgWEZSTV9TVEFUSVNUSUNTXG5uZXQveGZybS9LY29uZmlnLTczLVx0Ym9vbCBcJiMzNDtUcmFuc2Zvcm1hdGlvbiBzdGF0aXN0aWNzXCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy04My0jIFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXG5uZXQveGZybS9LY29uZmlnOjg0OmNvbmZpZyBYRlJNX0FIXG5uZXQveGZybS9LY29uZmlnLTg1LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnLTkyLSMgYWxnb3JpdGhtcyB0aGF0IFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXG5uZXQveGZybS9LY29uZmlnOjkzOmNvbmZpZyBYRlJNX0VTUFxubmV0L3hmcm0vS2NvbmZpZy05NC1cdHRyaXN0YXRlXG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xMDUtXG5uZXQveGZybS9LY29uZmlnOjEwNjpjb25maWcgWEZSTV9JUENPTVBcbm5ldC94ZnJtL0tjb25maWctMTA3LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnPTEyNT1jb25maWcgTkVUX0tFWV9NSUdSQVRFXG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xNDAtXG5uZXQveGZybS9LY29uZmlnOjE0MTpjb25maWcgWEZSTV9JUFRGU1xubmV0L3hmcm0vS2NvbmZpZy0xNDItXHR0cmlzdGF0ZSBcJiMzNDtJUHNlYyBJUC1URlMvQUdHRlJBRyAoUkZDIDkzNDcpIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctMTU2LVxubmV0L3hmcm0vS2NvbmZpZzoxNTc6Y29uZmlnIFhGUk1fRVNQSU5UQ1Bcbm5ldC94ZnJtL0tjb25maWctMTU4LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNTo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTA4CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBLZXJuZWwgWEZSTSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGVzZSBYRlJNIGNvbXBvbmVudHMgYXJlIGJ1aWx0LCBzcGVjaWZpY2FsbHkgaG93IGB4ZnJtX3BvbGljeS5jYCBmaXRzIGludG8gdGhlIHBpY3R1cmUuIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCBgWEZSTWAgYW5kIGBYRlJNX1VTRVJgIGFyZSB0aGUga2V5IGNvbmZpZ3MgdG8gY2hlY2ssIHNpbmNlIGB4ZnJtX3NldF9zcGRpbmZvYCBpcyBjbGVhcmx5IGRlZmluZWQgaW4gYHhmcm1fdXNlci5jYC4gVG8gY29uZmlybSB0aGlzLCBJIHNob3VsZCBkaXZlIGludG8gYG5ldC94ZnJtL01ha2VmaWxlYC4gVGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtsbCBnZXQgYSByZWFsIHVuZGVyc3RhbmRpbmcgb2YgaG93IGB4ZnJtX3BvbGljeS5jYCBpcyBjb21waWxlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgYXJlIGF0IHBsYXkuIEl0JiMzOTtzIHRpbWUgdG8gbWFwIG91dCB0aGUgYnVpbGQgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDU6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZybV9wb2xpY3kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGZybS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9NYWtlZmlsZT0xMj1lbmRpZlxubmV0L3hmcm0vTWFrZWZpbGUtMTMtXG5uZXQveGZybS9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfWEZSTSkgOj0geGZybV9wb2xpY3kubyB4ZnJtX3N0YXRlLm8geGZybV9oYXNoLm8gXFxcbm5ldC94ZnJtL01ha2VmaWxlLTE1LVx0XHQgICAgICB4ZnJtX2lucHV0Lm8geGZybV9vdXRwdXQubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNTo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjUyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBYRlJNIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgQ09ORklHX1hGUk1gIGlzIGVuYWJsZWQg4oCTIHRoYXQmIzM5O3MgZnVuZGFtZW50YWwuIEFuZCB0aGVuLCBJIGFic29sdXRlbHkgbmVlZCBgQ09ORklHX1hGUk1fVVNFUmAgaWYgSSYjMzk7bSBnb2luZyB0byBraWNrIG9mZiB0aGF0IHJlYnVpbGQgdmlhIG5ldGxpbmsuIE5vdywgdGhlIG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhlIGRldGFpbHMgb2YgaG93IHRoZSB1c2VyLXNwYWNlIGludGVyYWN0aW9uIHdvcmtzLiBJJiMzOTttIGdvaW5nIHRvIHplcm8gaW4gb24gYHhmcm1fc2V0X3NwZGluZm9gLCBzcGVjaWZpY2FsbHkgaW4gYG5ldC94ZnJtL3hmcm1fdXNlci5jYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciBsaWVzLCBhbmQgdGhhdCBmdW5jdGlvbiYjMzk7cyB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNTo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX3NldF9zcGRpbmZvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV91c2VyLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV91c2VyLmM9MTY0MT1zdGF0aWMgaW50IGJ1aWxkX3NwZGluZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTE2OTMtXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxNjk0OnN0YXRpYyBpbnQgeGZybV9zZXRfc3BkaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTE2OTUtXHRcdFx0ICAgIHN0cnVjdCBubGF0dHIgKiphdHRycyxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zNzIxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgeGZybV9saW5rIHtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzUyLVx0W1hGUk1fTVNHX0dFVFNBRElORk8gIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9nZXRfc2FkaW5mbyAgIH0sXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNzUzOlx0W1hGUk1fTVNHX05FV1NQRElORk8gIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9zZXRfc3BkaW5mbyxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM3NTQtXHRcdFx0XHRcdFx0ICAgLm5sYV9wb2wgPSB4ZnJtYV9zcGRfcG9saWN5LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNTo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODE1CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBYRlJNIFNQRElORk8gRmxvdyoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IHRoaXMgYFhGUk1fTVNHX05FV1NQRElORk9gIG5ldGxpbmsgbWVzc2FnZSBpcyB0aGUgdHJpZ2dlciB0aGF0IGtpY2tzIG9mZiBgeGZybV9zZXRfc3BkaW5mb2AuIE15IGd1dCB0ZWxscyBtZSB0aGF0JiMzOTtzIHRoZSBwb2ludCBvZiBpbnRlcmVzdC4gSSBhbHNvIHJlbWVtYmVyIHRoYXQgdGhlcmUmIzM5O3MgYSBwYXRjaCByZWxhdGVkIHRvIHRoaXMgd2hvbGUgYXJlYSBpbiBgeGZybV9oYXNoX3JlYnVpbGRgLiBMZXQmIzM5O3MgZGlnIGludG8gYHhmcm1faGFzaF9yZWJ1aWxkYCBkaXJlY3RseSB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgdW5kZXJzdGFuZCB0aGUgcGF0Y2gmIzM5O3MgaW1wYWN0IHdpdGhpbiB0aGF0IGNvbnRleHQuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIgbGlrZWx5IGxpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA1OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9wb2xpY3kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyNzYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEyNzY6XHRzdGF0aWMgdm9pZCB4ZnJtX2hhc2hfcmVidWlsZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4xMjc3Olx0e1xuMTI3ODpcdFx0c3RydWN0IG5ldCAqbmV0ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZXQsXG4xMjc5Olx0XHRcdFx0XHQgICAgICAgeGZybS5wb2xpY3lfaHRocmVzaC53b3JrKTtcbjEyODA6XHRcdHN0cnVjdCB4ZnJtX3BvbGljeSAqcG9sO1xuMTI4MTpcdFx0c3RydWN0IHhmcm1fcG9saWN5ICpwb2xpY3k7XG4xMjgyOlx0XHRzdHJ1Y3QgaGxpc3RfaGVhZCAqY2hhaW47XG4xMjgzOlx0XHRzdHJ1Y3QgaGxpc3Rfbm9kZSAqbmV3cG9zO1xuMTI4NDpcdFx0aW50IGRpcjtcbjEyODU6XHRcdHVuc2lnbmVkIHNlcTtcbjEyODY6XHRcdHU4IGxiaXRzNCwgcmJpdHM0LCBsYml0czYsIHJiaXRzNjtcbjEyODc6XHRcbjEyODg6XHRcdG11dGV4X2xvY2soXHUwMDI2aGFzaF9yZXNpemVfbXV0ZXgpO1xuMTI4OTpcdFxuMTI5MDpcdFx0LyogcmVhZCBzZWxlY3RvciBwcmVmaXhsZW4gdGhyZXNob2xkcyAqL1xuMTI5MTpcdFx0ZG8ge1xuMTI5MjpcdFx0XHRzZXEgPSByZWFkX3NlcWJlZ2luKFx1MDAyNm5ldC1cdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLmxvY2spO1xuMTI5MzpcdFxuMTI5NDpcdFx0XHRsYml0czQgPSBuZXQtXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC5sYml0czQ7XG4xMjk1Olx0XHRcdHJiaXRzNCA9IG5ldC1cdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLnJiaXRzNDtcbjEyOTY6XHRcdFx0bGJpdHM2ID0gbmV0LVx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gubGJpdHM2O1xuMTI5NzpcdFx0XHRyYml0czYgPSBuZXQtXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC5yYml0czY7XG4xMjk4Olx0XHR9IHdoaWxlIChyZWFkX3NlcXJldHJ5KFx1MDAyNm5ldC1cdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLmxvY2ssIHNlcSkpO1xuMTI5OTpcdFxuMTMwMDpcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNm5ldC1cdTAwM2V4ZnJtLnhmcm1fcG9saWN5X2xvY2spO1xuMTMwMTpcdFx0d3JpdGVfc2VxY291bnRfYmVnaW4oXHUwMDI2bmV0LVx1MDAzZXhmcm0ueGZybV9wb2xpY3lfaGFzaF9nZW5lcmF0aW9uKTtcbjEzMDI6XHRcbjEzMDM6XHRcdC8qIG1ha2Ugc3VyZSB0aGF0IHdlIGNhbiBpbnNlcnQgdGhlIGluZGlyZWN0IHBvbGljaWVzIGFnYWluIGJlZm9yZVxuMTMwNDpcdFx0ICogd2Ugc3RhcnQgd2l0aCBkZXN0cnVjdGl2ZSBhY3Rpb24uXG4xMzA1Olx0XHQgKi9cbjEzMDY6XHRcdGxpc3RfZm9yX2VhY2hfZW50cnkocG9saWN5LCBcdTAwMjZuZXQtXHUwMDNleGZybS5wb2xpY3lfYWxsLCB3YWxrLmFsbCkge1xuMTMwNzpcdFx0XHRzdHJ1Y3QgeGZybV9wb2xfaW5leGFjdF9iaW4gKmJpbjtcbjEzMDg6XHRcdFx0dTggZGJpdHMsIHNiaXRzO1xuMTMwOTpcdFxuMTMxMDpcdFx0XHRpZiAoeGZybV9wb2xpY3lfaXNfZGVhZF9vcl9zayhwb2xpY3kpKVxuMTMxMTpcdFx0XHRcdGNvbnRpbnVlO1xuMTMxMjpcdFxuMTMxMzpcdFx0XHRkaXIgPSB4ZnJtX3BvbGljeV9pZDJkaXIocG9saWN5LVx1MDAzZWluZGV4KTtcbjEzMTQ6XHRcdFx0aWYgKChkaXIgXHUwMDI2IFhGUk1fUE9MSUNZX01BU0spID09IFhGUk1fUE9MSUNZX09VVCkge1xuMTMxNTpcdFx0XHRcdGlmIChwb2xpY3ktXHUwMDNlZmFtaWx5ID09IEFGX0lORVQpIHtcbjEzMTY6XHRcdFx0XHRcdGRiaXRzID0gcmJpdHM0O1xuMTMxNzpcdFx0XHRcdFx0c2JpdHMgPSBsYml0czQ7XG4xMzE4Olx0XHRcdFx0fSBlbHNlIHtcbjEzMTk6XHRcdFx0XHRcdGRiaXRzID0gcmJpdHM2O1xuMTMyMDpcdFx0XHRcdFx0c2JpdHMgPSBsYml0czY7XG4xMzIxOlx0XHRcdFx0fVxuMTMyMjpcdFx0XHR9IGVsc2Uge1xuMTMyMzpcdFx0XHRcdGlmIChwb2xpY3ktXHUwMDNlZmFtaWx5ID09IEFGX0lORVQpIHtcbjEzMjQ6XHRcdFx0XHRcdGRiaXRzID0gbGJpdHM0O1xuMTMyNTpcdFx0XHRcdFx0c2JpdHMgPSByYml0czQ7XG4xMzI2Olx0XHRcdFx0fSBlbHNlIHtcbjEzMjc6XHRcdFx0XHRcdGRiaXRzID0gbGJpdHM2O1xuMTMyODpcdFx0XHRcdFx0c2JpdHMgPSByYml0czY7XG4xMzI5Olx0XHRcdFx0fVxuMTMzMDpcdFx0XHR9XG4xMzMxOlx0XG4xMzMyOlx0XHRcdGlmIChwb2xpY3ktXHUwMDNlc2VsZWN0b3IucHJlZml4bGVuX2QgXHUwMDNlPSBkYml0cyBcdTAwMjZcdTAwMjZcbjEzMzM6XHRcdFx0ICAgIHBvbGljeS1cdTAwM2VzZWxlY3Rvci5wcmVmaXhsZW5fcyBcdTAwM2U9IHNiaXRzKVxuMTMzNDpcdFx0XHRcdGNvbnRpbnVlO1xuMTMzNTpcdFxuMTMzNjpcdFx0XHRiaW4gPSB4ZnJtX3BvbGljeV9pbmV4YWN0X2FsbG9jX2Jpbihwb2xpY3ksIGRpcik7XG4xMzM3Olx0XHRcdGlmICghYmluKVxuMTMzODpcdFx0XHRcdGdvdG8gb3V0X3VubG9jaztcbjEzMzk6XHRcbjEzNDA6XHRcdFx0aWYgKCF4ZnJtX3BvbGljeV9pbmV4YWN0X2FsbG9jX2NoYWluKGJpbiwgcG9saWN5LCBkaXIpKVxuMTM0MTpcdFx0XHRcdGdvdG8gb3V0X3VubG9jaztcbjEzNDI6XHRcdH1cbjEzNDM6XHRcbjEzNDQ6XHRcdGZvciAoZGlyID0gMDsgZGlyIFx1MDAzYyBYRlJNX1BPTElDWV9NQVg7IGRpciYjNDM7JiM0MzspIHtcbjEzNDU6XHRcdFx0aWYgKChkaXIgXHUwMDI2IFhGUk1fUE9MSUNZX01BU0spID09IFhGUk1fUE9MSUNZX09VVCkge1xuMTM0NjpcdFx0XHRcdC8qIGRpciBvdXQgPVx1MDAzZSBkc3QgPSByZW1vdGUsIHNyYyA9IGxvY2FsICovXG4xMzQ3Olx0XHRcdFx0bmV0LVx1MDAzZXhmcm0ucG9saWN5X2J5ZHN0W2Rpcl0uZGJpdHM0ID0gcmJpdHM0O1xuMTM0ODpcdFx0XHRcdG5ldC1cdTAwM2V4ZnJtLnBvbGljeV9ieWRzdFtkaXJdLnNiaXRzNCA9IGxiaXRzNDtcbjEzNDk6XHRcdFx0XHRuZXQtXHUwMDNleGZybS5wb2xpY3lfYnlkc3RbZGlyXS5kYml0czYgPSByYml0czY7XG4xMzUwOlx0XHRcdFx0bmV0LVx1MDAzZXhmcm0ucG9saWN5X2J5ZHN0W2Rpcl0uc2JpdHM2ID0gbGJpdHM2O1xuMTM1MTpcdFx0XHR9IGVsc2Uge1xuMTM1MjpcdFx0XHRcdC8qIGRpciBpbi9md2QgPVx1MDAzZSBkc3QgPSBsb2NhbCwgc3JjID0gcmVtb3RlICovXG4xMzUzOlx0XHRcdFx0bmV0LVx1MDAzZXhmcm0ucG9saWN5X2J5ZHN0W2Rpcl0uZGJpdHM0ID0gbGJpdHM0O1xuMTM1NDpcdFx0XHRcdG5ldC1cdTAwM2V4ZnJtLnBvbGljeV9ieWRzdFtkaXJdLnNiaXRzNCA9IHJiaXRzNDtcbjEzNTU6XHRcdFx0XHRuZXQtXHUwMDNleGZybS5wb2xpY3lfYnlkc3RbZGlyXS5kYml0czYgPSBsYml0czY7XG4xMzU2Olx0XHRcdFx0bmV0LVx1MDAzZXhmcm0ucG9saWN5X2J5ZHN0W2Rpcl0uc2JpdHM2ID0gcmJpdHM2O1xuMTM1NzpcdFx0XHR9XG4xMzU4Olx0XHR9XG4xMzU5Olx0XG4xMzYwOlx0XHQvKiByZS1pbnNlcnQgYWxsIHBvbGljaWVzIGJ5IG9yZGVyIG9mIGNyZWF0aW9uICovXG4xMzYxOlx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3JldmVyc2UocG9saWN5LCBcdTAwMjZuZXQtXHUwMDNleGZybS5wb2xpY3lfYWxsLCB3YWxrLmFsbCkge1xuMTM2MjpcdFx0XHRpZiAoeGZybV9wb2xpY3lfaXNfZGVhZF9vcl9zayhwb2xpY3kpKVxuMTM2MzpcdFx0XHRcdGNvbnRpbnVlO1xuMTM2NDpcdFxuMTM2NTpcdFx0XHRobGlzdF9kZWxfcmN1KFx1MDAyNnBvbGljeS1cdTAwM2VieWRzdCk7XG4xMzY2Olx0XG4xMzY3Olx0XHRcdG5ld3BvcyA9IE5VTEw7XG4xMzY4Olx0XHRcdGRpciA9IHhmcm1fcG9saWN5X2lkMmRpcihwb2xpY3ktXHUwMDNlaW5kZXgpO1xuMTM2OTpcdFx0XHRjaGFpbiA9IHBvbGljeV9oYXNoX2J5c2VsKG5ldCwgXHUwMDI2cG9saWN5LVx1MDAzZXNlbGVjdG9yLFxuMTM3MDpcdFx0XHRcdFx0XHQgIHBvbGljeS1cdTAwM2VmYW1pbHksIGRpcik7XG4xMzcxOlx0XG4xMzcyOlx0XHRcdGlmICghY2hhaW4pIHtcbjEzNzM6XHRcdFx0XHR2b2lkICpwID0geGZybV9wb2xpY3lfaW5leGFjdF9pbnNlcnQocG9saWN5LCBkaXIsIDApO1xuMTM3NDpcdFxuMTM3NTpcdFx0XHRcdFdBUk5fT05DRShJU19FUlIocCksIFwmIzM0O3JlaW5zZXJ0OiAlbGRcXG5cJiMzNDssIFBUUl9FUlIocCkpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAwNTo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NzI5CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIGEgUG9saWN5IEZpbHRlcmluZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdHdlYWtpbmcgdGhlIHBvbGljeSBmaWx0ZXJpbmcgbG9naWMgZHVyaW5nIGEgaGFzaCByZWJ1aWxkLiBUaGUgb3JpZ2luYWwgY29kZSB3YXMgdXNpbmcgYSBsZXNzLXRoYW4gY29tcGFyaXNvbjogYHBvbGljeS0mZ3Q7c2VsZWN0b3IucHJlZml4bGVuX2QgJmx0OyBkYml0cyB8fCBwb2xpY3ktJmd0O3NlbGVjdG9yLnByZWZpeGxlbl9zICZsdDsgc2JpdHNgLiBUaGUgcGF0Y2ggZmxpcHMgdGhhdCB0byBhIGdyZWF0ZXItdGhhbi1vci1lcXVhbC10byBjb21wYXJpc29uIHVzaW5nIGEgbG9naWNhbCBBTkQ6IGBwb2xpY3ktJmd0O3NlbGVjdG9yLnByZWZpeGxlbl9kICZndDs9IGRiaXRzICZhbXA7JmFtcDsgcG9saWN5LSZndDtzZWxlY3Rvci5wcmVmaXhsZW5fcyAmZ3Q7PSBzYml0c2AuIFRoYXQmIzM5O3MgYSBjbGVhciBsb2dpY2FsIHNoaWZ0IGluIGhvdyB3ZSYjMzk7cmUgZmlsdGVyaW5nIHBvbGljaWVzIGZvciBpbmV4YWN0IGJpbiBhbGxvY2F0aW9uLiBGdW5jdGlvbmFsbHksIHRoaXMgbG9va3Mgc291bmQsIGFuZCBkZWZpbml0ZWx5IHdhcnJhbnRzIHNvbWUgc2VyaW91cyBmdXp6aW5nIHRvIG1ha2Ugc3VyZSBpdCBob2xkcyB1cCB1bmRlciBwcmVzc3VyZS4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIGludm9sdmVkLiBUaGlzIHBhdGNoIG1vZGlmaWVzIGB4ZnJtX2hhc2hfcmVidWlsZGAsIHdoaWNoIGlzIHRyaWdnZXJlZCBieSBgeGZybV9wb2xpY3lfaGFzaF9yZWJ1aWxkYCwgd2hpY2ggaW4gdHVybiBnZXRzIGNhbGxlZCBieSBgeGZybV9zZXRfc3BkaW5mb2AuIFRob3NlIHNlZW0gdG8gYmUgdGhlIGNvcmUgYml0cyB0byB6ZXJvIGluIG9uLiBBbHNvLCBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyBpbmNsdWRlIGB4ZnJtX3BvbGljeV9pbmV4YWN0X2FsbG9jX2JpbmAsIGB4ZnJtX3BvbGljeV9pbmV4YWN0X2FsbG9jX2NoYWluYCwgYW5kIGB4ZnJtX3BvbGljeV9pbmV4YWN0X2luc2VydGAuIFNpbmNlIGB4ZnJtX2hhc2hfcmVidWlsZGAgYW5kIGB4ZnJtX3NldF9zcGRpbmZvYCBhcmUgZGlyZWN0bHkgaW1wYWN0ZWQsIHRoZXkgZ28gb24gdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyBsaXN0LCB0b28uCgpGaW5hbGx5LCBhIHF1aWNrIGNvbmZpZyBjaGVjay4gYFhGUk1gIGFuZCBgWEZSTV9VU0VSYCBhcmUgdGhlIG9idmlvdXMgb25lcy4gQnV0LCBsZXQmIzM5O3MgYmUgdGhvcm91Z2ggYW5kIHBva2UgYXJvdW5kIGBuZXQveGZybS9LY29uZmlnYCB0byBjb25maXJtIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlncyByZWxhdGVkIHRvIGBYRlJNX1VTRVJgIHRoYXQgd2UgbmVlZCB0byBjb25zaWRlciBkdXJpbmcgdGVzdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDU6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGUk1fVVNFUiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC94ZnJtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZz0yMj1pZiBJTkVUXG5uZXQveGZybS9LY29uZmlnOjIzOmNvbmZpZyBYRlJNX1VTRVJcbm5ldC94ZnJtL0tjb25maWctMjQtXHR0cmlzdGF0ZSBcJiMzNDtUcmFuc2Zvcm1hdGlvbiB1c2VyIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy0zMS1cbm5ldC94ZnJtL0tjb25maWc6MzI6Y29uZmlnIFhGUk1fVVNFUl9DT01QQVRcbm5ldC94ZnJtL0tjb25maWctMzMtXHR0cmlzdGF0ZSBcJiMzNDtDb21wYXRpYmxlIEFCSSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDA1OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg1NzEKCQkJCQkJCW91dHB1dDogMTQ5CgkJCQkJCQl0aG91Z2h0czogNTE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBYRlJNIFBvbGljeSBIYXNoIFJlYnVpbGQgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCB0aGUgY29uZmlndXJhdGlvbnMgdGhhdCBqdW1wIG91dCBhcmUgYFhGUk1gIGFuZCBgWEZSTV9VU0VSYC4gSSBzZWUgdGhhdCBgWEZSTWAgaXMgYSBib29sZWFuIGFuZCBgWEZSTV9VU0VSYCBpcyBhIHRyaXN0YXRlLCBhbmQgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgZnVuY3Rpb25hbGl0eSwgYFhGUk1fVVNFUmAgc2VlbXMgbGlrZSB0aGUgZXNzZW50aWFsIG9uZSB0byBlbnN1cmUgaXMgZW5hYmxlZC4KCk15IHByaW1hcnkgY29uY2VybiBpcyByZWFjaGFiaWxpdHkuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBjb2RlIHBhdGggaXMgYWN0dWFsbHkgaGl0LiBMZXQgbWUgc2VlLCBgeGZybV9oYXNoX3JlYnVpbGRgLi4uIHllcywgaXQmIzM5O3MgdHJpZ2dlcmVkIGJ5IGB4ZnJtX3BvbGljeV9oYXNoX3JlYnVpbGRgLCB3aGljaCBpdHNlbGYgaXMgY2FsbGVkIGZyb20gYHhmcm1fc2V0X3NwZGluZm9gIHdoZW4gYSBgWEZSTV9NU0dfTkVXU1BESU5GT2AgbmV0bGluayBtZXNzYWdlIGFycml2ZXMuIFRoYXQmIzM5O3MgZ29vZCwgdGhhdCBjb25maXJtcyBpdCYjMzk7cyByZWFjaGFibGUgZGlyZWN0bHkgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmssIHdoaWNoIGlzIHRoZSBrZXkuCgpMZXQgbWUgdGhpbmsgYSBiaXQgYWJvdXQgdGhlIG90aGVyIGZ1bmN0aW9ucyBpbnZvbHZlZC4gYHhmcm1faGFzaF9yZWJ1aWxkYCBpcyB0aGUgY29yZS4gYHhmcm1fcG9saWN5X2hhc2hfcmVidWlsZGAgaXMganVzdCBhIHdyYXBwZXIsIGFuZCBgeGZybV9zZXRfc3BkaW5mb2AgaXMgdGhlIG5ldGxpbmsgaGFuZGxlci4gSSBzZWUgYHhmcm1fcG9saWN5X2luZXhhY3RfYWxsb2NfYmluYCBhbmQgYHhmcm1fcG9saWN5X2luZXhhY3RfYWxsb2NfY2hhaW5gIGNhbGxlZCB3aXRoaW4gdGhlIGxvb3AsIGJ1dCBpdCYjMzk7cyB0aGUgcmVidWlsZCB0aGF0JiMzOTtzIHRoZSBmb2N1cy4KClNvLCB0aGUga2V5IHN5bWJvbHMgaGVyZSBhcmUgYHhmcm1faGFzaF9yZWJ1aWxkYCBhbmQgYHhmcm1fc2V0X3NwZGluZm9gLiBBbmQgdGhlIGNvbmZpZ3MgSSYjMzk7bSBjb25maXJtaW5nIGFyZSBgWEZSTV9VU0VSYCBhbmQgYFhGUk1gLgoKVGhlIHBhdGNoIGlzIGZ1bmRhbWVudGFsbHkgbW9kaWZ5aW5nIHRoZSBjb25kaXRpb24gZm9yIGFsbG9jYXRpbmcgaW5leGFjdCBiaW5zIGR1cmluZyB0aGUgWEZSTSBwb2xpY3kgaGFzaCByZWJ1aWxkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHBvbGljeSBoYXNoaW5nIGFuZCBsb29rdXAgaW4gdGhlIElQc2VjL1hGUk0gc3Vic3lzdGVtLiBHaXZlbiB0aGF0IGBYRlJNX01TR19ORVdTUERJTkZPYCBpcyB0aGUgdHJpZ2dlciwgYW5kIGl0JiMzOTtzIHJlYWNoYWJsZSB0aHJvdWdoIGEgbmV0bGluayBtZXNzYWdlLCB0aGlzIHNlZW1zIHByZXR0eSBzb2xpZC4KCkkmIzM5O20gZG91YmxlLWNoZWNraW5nIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gYFhGUk1gIGFuZCBgWEZSTV9VU0VSYCBhcmUgZGVmaW5lZCBpbiBgbmV0L3hmcm0vS2NvbmZpZ2AgYW5kIGFyZSB0aGUgcmVsZXZhbnQgY29uZmlncy4KCldhaXQsIGB4ZnJtX2hhc2hfcmVidWlsZGAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgcmVpbmZvcmNlcyBpdCBhcyB0aGUgY29yZSBtb2RpZmljYXRpb24uIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjb25maXJtIHRoYXQgYHhmcm1faGFzaF9yZWJ1aWxkYCBpcyB0aGUgb25seSBmdW5jdGlvbiB0aGF0JiMzOTtzIG1vZGlmaWVkLCBhbmQgeWVzLCBpdCYjMzk7cyBqdXN0IHRoYXQgb25lIGZ1bmN0aW9uIGluIGBuZXQveGZybS94ZnJtX3BvbGljeS5jYC4KCk9rYXksIEkmIzM5O20gY29uZmlkZW50IGluIHRoZSBhbmFseXNpcy4gTGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMDU6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk0mIzM0OywKICAgICYjMzQ7WEZSTV9VU0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eGZybV9oYXNoX3JlYnVpbGQmIzM0OywKICAgICYjMzQ7eGZybV9zZXRfc3BkaW5mbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29uZGl0aW9uIGZvciBhbGxvY2F0aW5nIGluZXhhY3QgYmlucyBkdXJpbmcgWEZSTSBwb2xpY3kgaGFzaCByZWJ1aWxkcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJUHNlYy9YRlJNIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgaG93IHBvbGljaWVzIGFyZSBoYXNoZWQgYW5kIGxvb2tlZCB1cC4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgWEZSTV9NU0dfTkVXU1BESU5GTyBuZXRsaW5rIG1lc3NhZ2UsIHdoaWNoIHRyaWdnZXJzIHhmcm1fc2V0X3NwZGluZm8gYW5kIHNjaGVkdWxlcyB0aGUgeGZybV9oYXNoX3JlYnVpbGQgd29yay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WEZSTSYjMzQ7LAogICAgJiMzNDtYRlJNX1VTRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4ZnJtX2hhc2hfcmVidWlsZCYjMzQ7LAogICAgJiMzNDt4ZnJtX3NldF9zcGRpbmZvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb25kaXRpb24gZm9yIGFsbG9jYXRpbmcgaW5leGFjdCBiaW5zIGR1cmluZyBYRlJNIHBvbGljeSBoYXNoIHJlYnVpbGRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIElQc2VjL1hGUk0gc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBob3cgcG9saWNpZXMgYXJlIGhhc2hlZCBhbmQgbG9va2VkIHVwLiBUaGUgY29kZSBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBYRlJNX01TR19ORVdTUERJTkZPIG5ldGxpbmsgbWVzc2FnZSwgd2hpY2ggdHJpZ2dlcnMgeGZybV9zZXRfc3BkaW5mbyBhbmQgc2NoZWR1bGVzIHRoZSB4ZnJtX2hhc2hfcmVidWlsZCB3b3JrLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMDNUMDU6NDY6NTcuMjc1MjY2NzU5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA3OTEzNDI4Nzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhGUk1cIixcbiAgICBcIlhGUk1fVVNFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhmcm1faGFzaF9yZWJ1aWxkXCIsXG4gICAgXCJ4ZnJtX3NldF9zcGRpbmZvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvbmRpdGlvbiBmb3IgYWxsb2NhdGluZyBpbmV4YWN0IGJpbnMgZHVyaW5nIFhGUk0gcG9saWN5IGhhc2ggcmVidWlsZHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgSVBzZWMvWEZSTSBzdWJzeXN0ZW0gdGhhdCBhZmZlY3RzIGhvdyBwb2xpY2llcyBhcmUgaGFzaGVkIGFuZCBsb29rZWQgdXAuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgdGhlIFhGUk1fTVNHX05FV1NQRElORk8gbmV0bGluayBtZXNzYWdlLCB3aGljaCB0cmlnZ2VycyB4ZnJtX3NldF9zcGRpbmZvIGFuZCBzY2hlZHVsZXMgdGhlIHhmcm1faGFzaF9yZWJ1aWxkIHdvcmsuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA1OjQ2OjU3LjI3NTI3MTgyOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYxNDQ1NDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMWM3ZmY4MzI4MDExYWJiY2M3MWY5NzAxNWI0ZjhiYjdhZGVlZDlkM1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1bCAzIDA1OjQ2OjU2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmMgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXFxuaW5kZXggN2VmODYxYTBlODIzMWIuLjkzMmEzMTNiOTQ2MGE1IDEwMDY0NFxcbi0tLSBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmNcXG4rKysgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXFxuQEAgLTEzMjksOCArMTMyOSw4IEBAIHN0YXRpYyB2b2lkIHhmcm1faGFzaF9yZWJ1aWxkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuIFxcbi1cXHRcXHRpZiAocG9saWN5LVxcdTAwM2VzZWxlY3Rvci5wcmVmaXhsZW5fZCBcXHUwMDNjIGRiaXRzIHx8XFxuLVxcdFxcdCAgICBwb2xpY3ktXFx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9zIFxcdTAwM2Mgc2JpdHMpXFxuK1xcdFxcdGlmIChwb2xpY3ktXFx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9kIFxcdTAwM2U9IGRiaXRzIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICBwb2xpY3ktXFx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9zIFxcdTAwM2U9IHNiaXRzKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFxuIFxcdFxcdGJpbiA9IHhmcm1fcG9saWN5X2luZXhhY3RfYWxsb2NfYmluKHBvbGljeSwgZGlyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDU6NDY6NTcuNzM3OTk0OTkzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDc0NTA2ODkzMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTVwiLFxuICAgIFwiWEZSTV9VU0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieGZybV9oYXNoX3JlYnVpbGRcIixcbiAgICBcInhmcm1fc2V0X3NwZGluZm9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29uZGl0aW9uIGZvciBhbGxvY2F0aW5nIGluZXhhY3QgYmlucyBkdXJpbmcgWEZSTSBwb2xpY3kgaGFzaCByZWJ1aWxkcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJUHNlYy9YRlJNIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgaG93IHBvbGljaWVzIGFyZSBoYXNoZWQgYW5kIGxvb2tlZCB1cC4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgWEZSTV9NU0dfTkVXU1BESU5GTyBuZXRsaW5rIG1lc3NhZ2UsIHdoaWNoIHRyaWdnZXJzIHhmcm1fc2V0X3NwZGluZm8gYW5kIHNjaGVkdWxlcyB0aGUgeGZybV9oYXNoX3JlYnVpbGQgd29yay5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAxYzdmZjgzMjgwMTFhYmJjYzcxZjk3MDE1YjRmOGJiN2FkZWVkOWQzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMyAwNTo0Njo1NiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fcG9saWN5LmMgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXG5pbmRleCA3ZWY4NjFhMGU4MjMxYi4uOTMyYTMxM2I5NDYwYTUgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX3BvbGljeS5jXG4rKysgYi9uZXQveGZybS94ZnJtX3BvbGljeS5jXG5AQCAtMTMyOSw4ICsxMzI5LDggQEAgc3RhdGljIHZvaWQgeGZybV9oYXNoX3JlYnVpbGQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0XHRcdH1cbiBcdFx0fVxuIFxuLVx0XHRpZiAocG9saWN5LVx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9kIFx1MDAzYyBkYml0cyB8fFxuLVx0XHQgICAgcG9saWN5LVx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9zIFx1MDAzYyBzYml0cylcbitcdFx0aWYgKHBvbGljeS1cdTAwM2VzZWxlY3Rvci5wcmVmaXhsZW5fZCBcdTAwM2U9IGRiaXRzIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgcG9saWN5LVx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9zIFx1MDAzZT0gc2JpdHMpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdGJpbiA9IHhmcm1fcG9saWN5X2luZXhhY3RfYWxsb2NfYmluKHBvbGljeSwgZGlyKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA1OjQ2OjU3LjczNzk5NzI0M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMzg4MzQ4NTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBYRlJNIFBvbGljeSBIYXNoaW5nIENoYW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgaGl0dGluZyBgbmV0L3hmcm0veGZybV9wb2xpY3kuY2AsIHNwZWNpZmljYWxseSB0aGUgYHhmcm1faGFzaF9yZWJ1aWxkYCBmdW5jdGlvbi4gVGhlIGtleSBoZXJlIGlzIHRoZSBjb25kaXRpb25hbCBzdGF0ZW1lbnQgdGhhdCdzIGJlZW4gbW9kaWZpZWQgd2l0aGluIHRoYXQgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb24gdGhlIElQc2VjL1hGUk0gcG9saWN5IGhhc2hpbmcgbG9naWMuXG5cbkl0IGxvb2tzIGxpa2UgdGhlIG9yaWdpbmFsIGNvZGUgd2FzIHNraXBwaW5nIG92ZXIgcG9saWNpZXMgYmFzZWQgb24gc29tZSBwcmVmaXggbGVuZ3RoIGNvbXBhcmlzb24sIHNwZWNpZmljYWxseTogYHBvbGljeS1cdTAwM2VzZWxlY3Rvci5wcmVmaXhsZW5fZCBcdTAwM2MgZGJpdHMgfHwgcG9saWN5LVx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9zIFx1MDAzYyBzYml0c2AuIFRoZSBwYXRjaCwgaG93ZXZlciwgaW52ZXJ0cyB0aGlzIGNvbmRpdGlvbiB0byBub3cgc2tpcCBwb2xpY2llcyBpZjogYHBvbGljeS1cdTAwM2VzZWxlY3Rvci5wcmVmaXhsZW5fZCBcdTAwM2U9IGRiaXRzIFx1MDAyNlx1MDAyNiBwb2xpY3ktXHUwMDNlc2VsZWN0b3IucHJlZml4bGVuX3MgXHUwMDNlPSBzYml0c2AuIFRoYXQncyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLiBJIG5lZWQgdG8gZGlnIGluIGFuZCB1bmRlcnN0YW5kICp3aHkqIHRoaXMgY2hhbmdlIHdhcyBtYWRlLiBXaGF0IHNjZW5hcmlvcyBkb2VzIHRoaXMgbmV3IGNvbmRpdGlvbiBoYW5kbGUgdGhhdCB0aGUgb2xkIG9uZSBkaWRuJ3Q/IFdoYXQncyB0aGUgaW50ZW5kZWQgYmVoYXZpb3IgYW5kIHdoYXQgZWRnZSBjYXNlcyBtaWdodCB0aGlzIGFmZmVjdD8gSSdsbCBwcm9iYWJseSBzdGFydCBieSByZXZpZXdpbmcgdGhlIHJlbGF0ZWQgY29tbWl0cyBhbmQgYW55IGFzc29jaWF0ZWQgYnVnIHJlcG9ydHMgb3IgbWFpbGluZyBsaXN0IGRpc2N1c3Npb25zIHRvIHVuZGVyc3RhbmQgdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg1NiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA1OjQ3OjAxLjc3NjgzMzY3NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDYxMTM4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX2hhc2hfcmVidWlsZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGZybS94ZnJtX3BvbGljeS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MTI2NT1zdGF0aWMgYm9vbCB4ZnJtX3BvbGljeV9pc19kZWFkX29yX3NrKGNvbnN0IHN0cnVjdCB4ZnJtX3BvbGljeSAqcG9saWN5KVxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMjc1LVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTI3NjpzdGF0aWMgdm9pZCB4ZnJtX2hhc2hfcmVidWlsZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMjc3LXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9NDIxMj1zdGF0aWMgaW50IF9fbmV0X2luaXQgeGZybV9wb2xpY3lfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNTctXFx0SU5JVF9XT1JLKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2hhc2hfd29yaywgeGZybV9oYXNoX3Jlc2l6ZSk7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzo0MjU4OlxcdElOSVRfV09SSyhcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLndvcmssIHhmcm1faGFzaF9yZWJ1aWxkKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNTktXFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA1OjQ3OjAxLjgzNzQ1NDYwMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1OTg4Mzg1MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIGJyZWFrZG93biBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFhGUk0gSGFzaCBSZWJ1aWxkKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYHhmcm1faGFzaF9yZWJ1aWxkYCwgYW5kIGl0J3MgZmxhZ2dlZCBhcyBhIHdvcmtxdWV1ZSBmdW5jdGlvbiB3aXRoaW4gdGhlIFhGUk0gZnJhbWV3b3JrLiBUaGF0J3MgaW1tZWRpYXRlbHkgaW50ZXJlc3Rpbmcg4oCTIG1lYW5pbmcgaXQncyBsaWtlbHkgYSBiYWNrZ3JvdW5kIHRhc2sgYW5kIG5vdCBwYXJ0IG9mIHRoZSBjcml0aWNhbCBwYXRoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCB0aGUgdHJpZ2dlcmluZyBtZWNoYW5pc20gZm9yIHRoaXMgcmVidWlsZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBldmVudHMgb3IgY29uZGl0aW9ucyBuZWNlc3NpdGF0ZSBhIGhhc2ggcmVidWlsZCBpbiB0aGUgSVBzZWMgY29udGV4dC4gSXMgaXQgcmVsYXRlZCB0byBwb2xpY3kgY2hhbmdlcywgcmVzb3VyY2UgbGltaXRzLCBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24sIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaW1lIHRvIGRpZyBkZWVwZXIgYW5kIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMuIExldCdzIHNlZSB3aGF0IGNhbGxzIGludG8gaXQsIHdoYXQgdmFyaWFibGVzIGl0IHJlbGllcyBvbiBhbmQgd2hlcmUgdGhvc2Ugb3JpZ2luYXRlLiBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyByb2xlIGluIHRoZSBsYXJnZXIgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTgzLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDU6NDc6MDUuNDM2Mjk2NjI3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0ODQ3MzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBvbGljeV9odGhyZXNoXFxcXC53b3JrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS94ZnJtX3BvbGljeS5jPTEyNzY9c3RhdGljIHZvaWQgeGZybV9oYXNoX3JlYnVpbGQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMjc4LVxcdHN0cnVjdCBuZXQgKm5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0LFxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTI3OTpcXHRcXHRcXHRcXHQgICAgICAgeGZybS5wb2xpY3lfaHRocmVzaC53b3JrKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTEyODAtXFx0c3RydWN0IHhmcm1fcG9saWN5ICpwb2w7XFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTEzOTk9dm9pZCB4ZnJtX3BvbGljeV9oYXNoX3JlYnVpbGQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMTQwMC17XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoxNDAxOlxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNm5ldC1cXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC53b3JrKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTE0MDItfVxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYz00MjEyPXN0YXRpYyBpbnQgX19uZXRfaW5pdCB4ZnJtX3BvbGljeV9pbml0KHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI1Ny1cXHRJTklUX1dPUksoXFx1MDAyNm5ldC1cXHUwMDNleGZybS5wb2xpY3lfaGFzaF93b3JrLCB4ZnJtX2hhc2hfcmVzaXplKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQyNTg6XFx0SU5JVF9XT1JLKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gud29yaywgeGZybV9oYXNoX3JlYnVpbGQpO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI1OS1cXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9NDI3Mz1zdGF0aWMgdm9pZCBfX25ldF9leGl0IHhmcm1fbmV0X3ByZV9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQyNzQte1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDI3NTpcXHRkaXNhYmxlX3dvcmtfc3luYyhcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLndvcmspO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDI3Ni1cXHRmbHVzaF93b3JrKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2hhc2hfd29yayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA1OjQ3OjA1LjUwMTE1MDkzMloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODE0NjI4OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGF0IHNuaXBwZXQ6XG5cbioqRGl2aW5nIGludG8gdGhlIFBvbGljeSBIYXNoIFJlYnVpbGQqKlxuXG5Pa2F5LCBzbyBgeGZybV9wb2xpY3lfaGFzaF9yZWJ1aWxkYCBpcyB0aGUga2V5IGZ1bmN0aW9uIHRoYXQgaW5pdGlhdGVzIHRoaXMgcHJvY2Vzcy4gTXkgbmV4dCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgdGhlICoqdHJpZ2dlcioqIC0gdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gdGhhdCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBldmVudHMgb3IgYWN0aW9ucyBsZWFkIHRvIHRoZSBoYXNoIHRhYmxlIGJlaW5nIHJlYnVpbHQuIExldCdzIHNlZSB3aGVyZSB0aGF0IHBhcnRpY3VsYXIgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20sIGFuZCBtYXAgaXQgb3V0IHNvIEkgaGF2ZSBhIG1lbnRhbCBwaWN0dXJlIG9mIHRoZSBwb3NzaWJsZSBzY2VuYXJpb3MuIFRpbWUgdG8gZ28gaHVudGluZyBmb3IgY2FsbCBzaXRlcyFcblxuXG4iLCJJbnB1dFRva2VucyI6MzM4MCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA1OjQ3OjA5LjE4MjYxNTkyMloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTExNDE1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZybV9wb2xpY3lfaGFzaF9yZWJ1aWxkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS94ZnJtX3BvbGljeS5jPTEyNzY9c3RhdGljIHZvaWQgeGZybV9oYXNoX3JlYnVpbGQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xMzk4LVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6MTM5OTp2b2lkIHhmcm1fcG9saWN5X2hhc2hfcmVidWlsZChzdHJ1Y3QgbmV0ICpuZXQpXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0xNDAwLXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMTQwMi19XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzoxNDAzOkVYUE9SVF9TWU1CT0woeGZybV9wb2xpY3lfaGFzaF9yZWJ1aWxkKTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTE0MDQtXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz0xNjk0PXN0YXRpYyBpbnQgeGZybV9zZXRfc3BkaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTE3NDEtXFxubmV0L3hmcm0veGZybV91c2VyLmM6MTc0MjpcXHRcXHR4ZnJtX3BvbGljeV9oYXNoX3JlYnVpbGQobmV0KTtcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xNzQzLVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDU6NDc6MDkuNTczNzYyNjcyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ5MjMxMTc0NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBJIHNlZSBpdDpcblxuKipYRlJNIFNQRGluZm8gYW5kIENvbmZpZ3VyYXRpb24gQ2hlY2sqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYHhmcm1fc2V0X3NwZGluZm9gIGNhbGwsIHJpZ2h0PyBTZWVtcyBsaWtlIGl0J3MgdGhlIGVudHJ5IHBvaW50IGZyb20gdXNlciBzcGFjZSwgY29taW5nIGluIHZpYSBuZXRsaW5rIGluIGBuZXQveGZybS94ZnJtX3VzZXIuY2AuICBJJ20gcHJldHR5IGNvbmZpZGVudCB0aGF0IGB4ZnJtX2hhc2hfcmVidWlsZGAgaXMgYWN0dWFsbHkgYmVpbmcgY2FsbGVkIGFuZCBpcyB3b3JraW5nIGFzIGV4cGVjdGVkLiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIFhGUk0gY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIHNldCB1cCBjb3JyZWN0bHkgaW4gdGhlIHN5c3RlbSB0byBkZXRlcm1pbmUgd2h5IEknbSBleHBlcmllbmNpbmcgdGhpcyBpc3N1ZS4gTGV0IG1lIHJldmlldyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODcxLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDU6NDc6NDQuNDk2ODgyMTE0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzY0NjM0NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhGUk1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL0tjb25maWctNC0jXFxubmV0L3hmcm0vS2NvbmZpZzo1OmNvbmZpZyBYRlJNXFxubmV0L3hmcm0vS2NvbmZpZy02LVxcdGJvb2xcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTAtXFxubmV0L3hmcm0vS2NvbmZpZzoxMTpjb25maWcgWEZSTV9PRkZMT0FEXFxubmV0L3hmcm0vS2NvbmZpZy0xMi1cXHRib29sXFxubmV0L3hmcm0vS2NvbmZpZy0xMy1cXG5uZXQveGZybS9LY29uZmlnOjE0OmNvbmZpZyBYRlJNX0FMR09cXG5uZXQveGZybS9LY29uZmlnLTE1LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTIyPWlmIElORVRcXG5uZXQveGZybS9LY29uZmlnOjIzOmNvbmZpZyBYRlJNX1VTRVJcXG5uZXQveGZybS9LY29uZmlnLTI0LVxcdHRyaXN0YXRlIFxcXCJUcmFuc2Zvcm1hdGlvbiB1c2VyIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy0zMS1cXG5uZXQveGZybS9LY29uZmlnOjMyOmNvbmZpZyBYRlJNX1VTRVJfQ09NUEFUXFxubmV0L3hmcm0vS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZSBcXFwiQ29tcGF0aWJsZSBBQkkgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNDItXFxubmV0L3hmcm0vS2NvbmZpZzo0Mzpjb25maWcgWEZSTV9JTlRFUkZBQ0VcXG5uZXQveGZybS9LY29uZmlnLTQ0LVxcdHRyaXN0YXRlIFxcXCJUcmFuc2Zvcm1hdGlvbiB2aXJ0dWFsIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNTAtXFxubmV0L3hmcm0vS2NvbmZpZzo1MTpjb25maWcgWEZSTV9TVUJfUE9MSUNZXFxubmV0L3hmcm0vS2NvbmZpZy01Mi1cXHRib29sIFxcXCJUcmFuc2Zvcm1hdGlvbiBzdWIgcG9saWN5IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTYwLVxcbm5ldC94ZnJtL0tjb25maWc6NjE6Y29uZmlnIFhGUk1fTUlHUkFURVxcbm5ldC94ZnJtL0tjb25maWctNjItXFx0Ym9vbCBcXFwiVHJhbnNmb3JtYXRpb24gbWlncmF0ZSBkYXRhYmFzZVxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNzEtXFxubmV0L3hmcm0vS2NvbmZpZzo3Mjpjb25maWcgWEZSTV9TVEFUSVNUSUNTXFxubmV0L3hmcm0vS2NvbmZpZy03My1cXHRib29sIFxcXCJUcmFuc2Zvcm1hdGlvbiBzdGF0aXN0aWNzXFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy04My0jIFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXFxubmV0L3hmcm0vS2NvbmZpZzo4NDpjb25maWcgWEZSTV9BSFxcbm5ldC94ZnJtL0tjb25maWctODUtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctOTItIyBhbGdvcml0aG1zIHRoYXQgUkZDIDgyMjEgbGlzdHMgYXMgTVVTVCBiZSBpbXBsZW1lbnRlZC5cXG5uZXQveGZybS9LY29uZmlnOjkzOmNvbmZpZyBYRlJNX0VTUFxcbm5ldC94ZnJtL0tjb25maWctOTQtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTA1LVxcbm5ldC94ZnJtL0tjb25maWc6MTA2OmNvbmZpZyBYRlJNX0lQQ09NUFxcbm5ldC94ZnJtL0tjb25maWctMTA3LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTEyNT1jb25maWcgTkVUX0tFWV9NSUdSQVRFXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTE0MC1cXG5uZXQveGZybS9LY29uZmlnOjE0MTpjb25maWcgWEZSTV9JUFRGU1xcbm5ldC94ZnJtL0tjb25maWctMTQyLVxcdHRyaXN0YXRlIFxcXCJJUHNlYyBJUC1URlMvQUdHRlJBRyAoUkZDIDkzNDcpIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTU2LVxcbm5ldC94ZnJtL0tjb25maWc6MTU3OmNvbmZpZyBYRlJNX0VTUElOVENQXFxubmV0L3hmcm0vS2NvbmZpZy0xNTgtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNTo0Nzo0NC42MzMzNTEwOTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkxNjc1ODQ2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIEtlcm5lbCBYRlJNIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlc2UgWEZSTSBjb21wb25lbnRzIGFyZSBidWlsdCwgc3BlY2lmaWNhbGx5IGhvdyBgeGZybV9wb2xpY3kuY2AgZml0cyBpbnRvIHRoZSBwaWN0dXJlLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgYFhGUk1gIGFuZCBgWEZSTV9VU0VSYCBhcmUgdGhlIGtleSBjb25maWdzIHRvIGNoZWNrLCBzaW5jZSBgeGZybV9zZXRfc3BkaW5mb2AgaXMgY2xlYXJseSBkZWZpbmVkIGluIGB4ZnJtX3VzZXIuY2AuIFRvIGNvbmZpcm0gdGhpcywgSSBzaG91bGQgZGl2ZSBpbnRvIGBuZXQveGZybS9NYWtlZmlsZWAuIFRoYXQncyB3aGVyZSBJJ2xsIGdldCBhIHJlYWwgdW5kZXJzdGFuZGluZyBvZiBob3cgYHhmcm1fcG9saWN5LmNgIGlzIGNvbXBpbGVkIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBhcmUgYXQgcGxheS4gSXQncyB0aW1lIHRvIG1hcCBvdXQgdGhlIGJ1aWxkIHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5MDgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNTo0Nzo0OC41NTAxMTEwODVaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NjU1ODM4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX3BvbGljeVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGZybS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS9NYWtlZmlsZT0xMj1lbmRpZlxcbm5ldC94ZnJtL01ha2VmaWxlLTEzLVxcbm5ldC94ZnJtL01ha2VmaWxlOjE0Om9iai0kKENPTkZJR19YRlJNKSA6PSB4ZnJtX3BvbGljeS5vIHhmcm1fc3RhdGUubyB4ZnJtX2hhc2gubyBcXFxcXFxubmV0L3hmcm0vTWFrZWZpbGUtMTUtXFx0XFx0ICAgICAgeGZybV9pbnB1dC5vIHhmcm1fb3V0cHV0Lm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNTo0Nzo0OC43NDY2NzUwOFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTA1MTc1OTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgWEZSTSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgQ09ORklHX1hGUk1gIGlzIGVuYWJsZWQg4oCTIHRoYXQncyBmdW5kYW1lbnRhbC4gQW5kIHRoZW4sIEkgYWJzb2x1dGVseSBuZWVkIGBDT05GSUdfWEZSTV9VU0VSYCBpZiBJJ20gZ29pbmcgdG8ga2ljayBvZmYgdGhhdCByZWJ1aWxkIHZpYSBuZXRsaW5rLiBOb3csIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBkZXRhaWxzIG9mIGhvdyB0aGUgdXNlci1zcGFjZSBpbnRlcmFjdGlvbiB3b3Jrcy4gSSdtIGdvaW5nIHRvIHplcm8gaW4gb24gYHhmcm1fc2V0X3NwZGluZm9gLCBzcGVjaWZpY2FsbHkgaW4gYG5ldC94ZnJtL3hmcm1fdXNlci5jYC4gVGhhdCdzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyIGxpZXMsIGFuZCB0aGF0IGZ1bmN0aW9uJ3MgdGhlIGtleS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTI1MiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA1OjQ3OjUxLjg1MTg1Mjg4NFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQzMjc1MDA2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX3NldF9zcGRpbmZvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL3hmcm1fdXNlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fdXNlci5jPTE2NDE9c3RhdGljIGludCBidWlsZF9zcGRpbmZvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTE2OTMtXFxubmV0L3hmcm0veGZybV91c2VyLmM6MTY5NDpzdGF0aWMgaW50IHhmcm1fc2V0X3NwZGluZm8oc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxubmV0L3hmcm0veGZybV91c2VyLmMtMTY5NS1cXHRcXHRcXHQgICAgc3RydWN0IG5sYXR0ciAqKmF0dHJzLFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MzcyMT1zdGF0aWMgY29uc3Qgc3RydWN0IHhmcm1fbGluayB7XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzUyLVxcdFtYRlJNX01TR19HRVRTQURJTkZPICAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fZ2V0X3NhZGluZm8gICB9LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM3NTM6XFx0W1hGUk1fTVNHX05FV1NQRElORk8gIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9zZXRfc3BkaW5mbyxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzU0LVxcdFxcdFxcdFxcdFxcdFxcdCAgIC5ubGFfcG9sID0geGZybWFfc3BkX3BvbGljeSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDU6NDc6NTMuMjg0NjA4MDQ1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1OTI4NjMzODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBYRlJNIFNQRElORk8gRmxvdyoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgdGhpcyBgWEZSTV9NU0dfTkVXU1BESU5GT2AgbmV0bGluayBtZXNzYWdlIGlzIHRoZSB0cmlnZ2VyIHRoYXQga2lja3Mgb2ZmIGB4ZnJtX3NldF9zcGRpbmZvYC4gTXkgZ3V0IHRlbGxzIG1lIHRoYXQncyB0aGUgcG9pbnQgb2YgaW50ZXJlc3QuIEkgYWxzbyByZW1lbWJlciB0aGF0IHRoZXJlJ3MgYSBwYXRjaCByZWxhdGVkIHRvIHRoaXMgd2hvbGUgYXJlYSBpbiBgeGZybV9oYXNoX3JlYnVpbGRgLiBMZXQncyBkaWcgaW50byBgeGZybV9oYXNoX3JlYnVpbGRgIGRpcmVjdGx5IHRvIHJlZnJlc2ggbXkgbWVtb3J5IGFuZCB1bmRlcnN0YW5kIHRoZSBwYXRjaCdzIGltcGFjdCB3aXRoaW4gdGhhdCBjb250ZXh0LiBUaGF0J3Mgd2hlcmUgdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIgbGlrZWx5IGxpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MTUsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNTo0ODowMS44Nzc0NzM0OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTcyOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3hmcm0veGZybV9wb2xpY3kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjc2LFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTI3NjpcXHRzdGF0aWMgdm9pZCB4ZnJtX2hhc2hfcmVidWlsZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuMTI3NzpcXHR7XFxuMTI3ODpcXHRcXHRzdHJ1Y3QgbmV0ICpuZXQgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG5ldCxcXG4xMjc5OlxcdFxcdFxcdFxcdFxcdCAgICAgICB4ZnJtLnBvbGljeV9odGhyZXNoLndvcmspO1xcbjEyODA6XFx0XFx0c3RydWN0IHhmcm1fcG9saWN5ICpwb2w7XFxuMTI4MTpcXHRcXHRzdHJ1Y3QgeGZybV9wb2xpY3kgKnBvbGljeTtcXG4xMjgyOlxcdFxcdHN0cnVjdCBobGlzdF9oZWFkICpjaGFpbjtcXG4xMjgzOlxcdFxcdHN0cnVjdCBobGlzdF9ub2RlICpuZXdwb3M7XFxuMTI4NDpcXHRcXHRpbnQgZGlyO1xcbjEyODU6XFx0XFx0dW5zaWduZWQgc2VxO1xcbjEyODY6XFx0XFx0dTggbGJpdHM0LCByYml0czQsIGxiaXRzNiwgcmJpdHM2O1xcbjEyODc6XFx0XFxuMTI4ODpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZoYXNoX3Jlc2l6ZV9tdXRleCk7XFxuMTI4OTpcXHRcXG4xMjkwOlxcdFxcdC8qIHJlYWQgc2VsZWN0b3IgcHJlZml4bGVuIHRocmVzaG9sZHMgKi9cXG4xMjkxOlxcdFxcdGRvIHtcXG4xMjkyOlxcdFxcdFxcdHNlcSA9IHJlYWRfc2VxYmVnaW4oXFx1MDAyNm5ldC1cXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC5sb2NrKTtcXG4xMjkzOlxcdFxcbjEyOTQ6XFx0XFx0XFx0bGJpdHM0ID0gbmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLmxiaXRzNDtcXG4xMjk1OlxcdFxcdFxcdHJiaXRzNCA9IG5ldC1cXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC5yYml0czQ7XFxuMTI5NjpcXHRcXHRcXHRsYml0czYgPSBuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2h0aHJlc2gubGJpdHM2O1xcbjEyOTc6XFx0XFx0XFx0cmJpdHM2ID0gbmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9odGhyZXNoLnJiaXRzNjtcXG4xMjk4OlxcdFxcdH0gd2hpbGUgKHJlYWRfc2VxcmV0cnkoXFx1MDAyNm5ldC1cXHUwMDNleGZybS5wb2xpY3lfaHRocmVzaC5sb2NrLCBzZXEpKTtcXG4xMjk5OlxcdFxcbjEzMDA6XFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ueGZybV9wb2xpY3lfbG9jayk7XFxuMTMwMTpcXHRcXHR3cml0ZV9zZXFjb3VudF9iZWdpbihcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLnhmcm1fcG9saWN5X2hhc2hfZ2VuZXJhdGlvbik7XFxuMTMwMjpcXHRcXG4xMzAzOlxcdFxcdC8qIG1ha2Ugc3VyZSB0aGF0IHdlIGNhbiBpbnNlcnQgdGhlIGluZGlyZWN0IHBvbGljaWVzIGFnYWluIGJlZm9yZVxcbjEzMDQ6XFx0XFx0ICogd2Ugc3RhcnQgd2l0aCBkZXN0cnVjdGl2ZSBhY3Rpb24uXFxuMTMwNTpcXHRcXHQgKi9cXG4xMzA2OlxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkocG9saWN5LCBcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9hbGwsIHdhbGsuYWxsKSB7XFxuMTMwNzpcXHRcXHRcXHRzdHJ1Y3QgeGZybV9wb2xfaW5leGFjdF9iaW4gKmJpbjtcXG4xMzA4OlxcdFxcdFxcdHU4IGRiaXRzLCBzYml0cztcXG4xMzA5OlxcdFxcbjEzMTA6XFx0XFx0XFx0aWYgKHhmcm1fcG9saWN5X2lzX2RlYWRfb3Jfc2socG9saWN5KSlcXG4xMzExOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjEzMTI6XFx0XFxuMTMxMzpcXHRcXHRcXHRkaXIgPSB4ZnJtX3BvbGljeV9pZDJkaXIocG9saWN5LVxcdTAwM2VpbmRleCk7XFxuMTMxNDpcXHRcXHRcXHRpZiAoKGRpciBcXHUwMDI2IFhGUk1fUE9MSUNZX01BU0spID09IFhGUk1fUE9MSUNZX09VVCkge1xcbjEzMTU6XFx0XFx0XFx0XFx0aWYgKHBvbGljeS1cXHUwMDNlZmFtaWx5ID09IEFGX0lORVQpIHtcXG4xMzE2OlxcdFxcdFxcdFxcdFxcdGRiaXRzID0gcmJpdHM0O1xcbjEzMTc6XFx0XFx0XFx0XFx0XFx0c2JpdHMgPSBsYml0czQ7XFxuMTMxODpcXHRcXHRcXHRcXHR9IGVsc2Uge1xcbjEzMTk6XFx0XFx0XFx0XFx0XFx0ZGJpdHMgPSByYml0czY7XFxuMTMyMDpcXHRcXHRcXHRcXHRcXHRzYml0cyA9IGxiaXRzNjtcXG4xMzIxOlxcdFxcdFxcdFxcdH1cXG4xMzIyOlxcdFxcdFxcdH0gZWxzZSB7XFxuMTMyMzpcXHRcXHRcXHRcXHRpZiAocG9saWN5LVxcdTAwM2VmYW1pbHkgPT0gQUZfSU5FVCkge1xcbjEzMjQ6XFx0XFx0XFx0XFx0XFx0ZGJpdHMgPSBsYml0czQ7XFxuMTMyNTpcXHRcXHRcXHRcXHRcXHRzYml0cyA9IHJiaXRzNDtcXG4xMzI2OlxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuMTMyNzpcXHRcXHRcXHRcXHRcXHRkYml0cyA9IGxiaXRzNjtcXG4xMzI4OlxcdFxcdFxcdFxcdFxcdHNiaXRzID0gcmJpdHM2O1xcbjEzMjk6XFx0XFx0XFx0XFx0fVxcbjEzMzA6XFx0XFx0XFx0fVxcbjEzMzE6XFx0XFxuMTMzMjpcXHRcXHRcXHRpZiAocG9saWN5LVxcdTAwM2VzZWxlY3Rvci5wcmVmaXhsZW5fZCBcXHUwMDNlPSBkYml0cyBcXHUwMDI2XFx1MDAyNlxcbjEzMzM6XFx0XFx0XFx0ICAgIHBvbGljeS1cXHUwMDNlc2VsZWN0b3IucHJlZml4bGVuX3MgXFx1MDAzZT0gc2JpdHMpXFxuMTMzNDpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4xMzM1OlxcdFxcbjEzMzY6XFx0XFx0XFx0YmluID0geGZybV9wb2xpY3lfaW5leGFjdF9hbGxvY19iaW4ocG9saWN5LCBkaXIpO1xcbjEzMzc6XFx0XFx0XFx0aWYgKCFiaW4pXFxuMTMzODpcXHRcXHRcXHRcXHRnb3RvIG91dF91bmxvY2s7XFxuMTMzOTpcXHRcXG4xMzQwOlxcdFxcdFxcdGlmICgheGZybV9wb2xpY3lfaW5leGFjdF9hbGxvY19jaGFpbihiaW4sIHBvbGljeSwgZGlyKSlcXG4xMzQxOlxcdFxcdFxcdFxcdGdvdG8gb3V0X3VubG9jaztcXG4xMzQyOlxcdFxcdH1cXG4xMzQzOlxcdFxcbjEzNDQ6XFx0XFx0Zm9yIChkaXIgPSAwOyBkaXIgXFx1MDAzYyBYRlJNX1BPTElDWV9NQVg7IGRpcisrKSB7XFxuMTM0NTpcXHRcXHRcXHRpZiAoKGRpciBcXHUwMDI2IFhGUk1fUE9MSUNZX01BU0spID09IFhGUk1fUE9MSUNZX09VVCkge1xcbjEzNDY6XFx0XFx0XFx0XFx0LyogZGlyIG91dCA9XFx1MDAzZSBkc3QgPSByZW1vdGUsIHNyYyA9IGxvY2FsICovXFxuMTM0NzpcXHRcXHRcXHRcXHRuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2J5ZHN0W2Rpcl0uZGJpdHM0ID0gcmJpdHM0O1xcbjEzNDg6XFx0XFx0XFx0XFx0bmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9ieWRzdFtkaXJdLnNiaXRzNCA9IGxiaXRzNDtcXG4xMzQ5OlxcdFxcdFxcdFxcdG5ldC1cXHUwMDNleGZybS5wb2xpY3lfYnlkc3RbZGlyXS5kYml0czYgPSByYml0czY7XFxuMTM1MDpcXHRcXHRcXHRcXHRuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2J5ZHN0W2Rpcl0uc2JpdHM2ID0gbGJpdHM2O1xcbjEzNTE6XFx0XFx0XFx0fSBlbHNlIHtcXG4xMzUyOlxcdFxcdFxcdFxcdC8qIGRpciBpbi9md2QgPVxcdTAwM2UgZHN0ID0gbG9jYWwsIHNyYyA9IHJlbW90ZSAqL1xcbjEzNTM6XFx0XFx0XFx0XFx0bmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9ieWRzdFtkaXJdLmRiaXRzNCA9IGxiaXRzNDtcXG4xMzU0OlxcdFxcdFxcdFxcdG5ldC1cXHUwMDNleGZybS5wb2xpY3lfYnlkc3RbZGlyXS5zYml0czQgPSByYml0czQ7XFxuMTM1NTpcXHRcXHRcXHRcXHRuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2J5ZHN0W2Rpcl0uZGJpdHM2ID0gbGJpdHM2O1xcbjEzNTY6XFx0XFx0XFx0XFx0bmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9ieWRzdFtkaXJdLnNiaXRzNiA9IHJiaXRzNjtcXG4xMzU3OlxcdFxcdFxcdH1cXG4xMzU4OlxcdFxcdH1cXG4xMzU5OlxcdFxcbjEzNjA6XFx0XFx0LyogcmUtaW5zZXJ0IGFsbCBwb2xpY2llcyBieSBvcmRlciBvZiBjcmVhdGlvbiAqL1xcbjEzNjE6XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9yZXZlcnNlKHBvbGljeSwgXFx1MDAyNm5ldC1cXHUwMDNleGZybS5wb2xpY3lfYWxsLCB3YWxrLmFsbCkge1xcbjEzNjI6XFx0XFx0XFx0aWYgKHhmcm1fcG9saWN5X2lzX2RlYWRfb3Jfc2socG9saWN5KSlcXG4xMzYzOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjEzNjQ6XFx0XFxuMTM2NTpcXHRcXHRcXHRobGlzdF9kZWxfcmN1KFxcdTAwMjZwb2xpY3ktXFx1MDAzZWJ5ZHN0KTtcXG4xMzY2OlxcdFxcbjEzNjc6XFx0XFx0XFx0bmV3cG9zID0gTlVMTDtcXG4xMzY4OlxcdFxcdFxcdGRpciA9IHhmcm1fcG9saWN5X2lkMmRpcihwb2xpY3ktXFx1MDAzZWluZGV4KTtcXG4xMzY5OlxcdFxcdFxcdGNoYWluID0gcG9saWN5X2hhc2hfYnlzZWwobmV0LCBcXHUwMDI2cG9saWN5LVxcdTAwM2VzZWxlY3RvcixcXG4xMzcwOlxcdFxcdFxcdFxcdFxcdFxcdCAgcG9saWN5LVxcdTAwM2VmYW1pbHksIGRpcik7XFxuMTM3MTpcXHRcXG4xMzcyOlxcdFxcdFxcdGlmICghY2hhaW4pIHtcXG4xMzczOlxcdFxcdFxcdFxcdHZvaWQgKnAgPSB4ZnJtX3BvbGljeV9pbmV4YWN0X2luc2VydChwb2xpY3ksIGRpciwgMCk7XFxuMTM3NDpcXHRcXG4xMzc1OlxcdFxcdFxcdFxcdFdBUk5fT05DRShJU19FUlIocCksIFxcXCJyZWluc2VydDogJWxkXFxcXG5cXFwiLCBQVFJfRVJSKHApKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDU6NDg6MDEuODc3NjcyMjNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ5NjE1NDg2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBhIFBvbGljeSBGaWx0ZXJpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIHR3ZWFraW5nIHRoZSBwb2xpY3kgZmlsdGVyaW5nIGxvZ2ljIGR1cmluZyBhIGhhc2ggcmVidWlsZC4gVGhlIG9yaWdpbmFsIGNvZGUgd2FzIHVzaW5nIGEgbGVzcy10aGFuIGNvbXBhcmlzb246IGBwb2xpY3ktXHUwMDNlc2VsZWN0b3IucHJlZml4bGVuX2QgXHUwMDNjIGRiaXRzIHx8IHBvbGljeS1cdTAwM2VzZWxlY3Rvci5wcmVmaXhsZW5fcyBcdTAwM2Mgc2JpdHNgLiBUaGUgcGF0Y2ggZmxpcHMgdGhhdCB0byBhIGdyZWF0ZXItdGhhbi1vci1lcXVhbC10byBjb21wYXJpc29uIHVzaW5nIGEgbG9naWNhbCBBTkQ6IGBwb2xpY3ktXHUwMDNlc2VsZWN0b3IucHJlZml4bGVuX2QgXHUwMDNlPSBkYml0cyBcdTAwMjZcdTAwMjYgcG9saWN5LVx1MDAzZXNlbGVjdG9yLnByZWZpeGxlbl9zIFx1MDAzZT0gc2JpdHNgLiBUaGF0J3MgYSBjbGVhciBsb2dpY2FsIHNoaWZ0IGluIGhvdyB3ZSdyZSBmaWx0ZXJpbmcgcG9saWNpZXMgZm9yIGluZXhhY3QgYmluIGFsbG9jYXRpb24uIEZ1bmN0aW9uYWxseSwgdGhpcyBsb29rcyBzb3VuZCwgYW5kIGRlZmluaXRlbHkgd2FycmFudHMgc29tZSBzZXJpb3VzIGZ1enppbmcgdG8gbWFrZSBzdXJlIGl0IGhvbGRzIHVwIHVuZGVyIHByZXNzdXJlLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIGludm9sdmVkLiBUaGlzIHBhdGNoIG1vZGlmaWVzIGB4ZnJtX2hhc2hfcmVidWlsZGAsIHdoaWNoIGlzIHRyaWdnZXJlZCBieSBgeGZybV9wb2xpY3lfaGFzaF9yZWJ1aWxkYCwgd2hpY2ggaW4gdHVybiBnZXRzIGNhbGxlZCBieSBgeGZybV9zZXRfc3BkaW5mb2AuIFRob3NlIHNlZW0gdG8gYmUgdGhlIGNvcmUgYml0cyB0byB6ZXJvIGluIG9uLiBBbHNvLCBvdGhlciByZWxhdGVkIGZ1bmN0aW9ucyBpbmNsdWRlIGB4ZnJtX3BvbGljeV9pbmV4YWN0X2FsbG9jX2JpbmAsIGB4ZnJtX3BvbGljeV9pbmV4YWN0X2FsbG9jX2NoYWluYCwgYW5kIGB4ZnJtX3BvbGljeV9pbmV4YWN0X2luc2VydGAuIFNpbmNlIGB4ZnJtX2hhc2hfcmVidWlsZGAgYW5kIGB4ZnJtX3NldF9zcGRpbmZvYCBhcmUgZGlyZWN0bHkgaW1wYWN0ZWQsIHRoZXkgZ28gb24gdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucyBsaXN0LCB0b28uXG5cbkZpbmFsbHksIGEgcXVpY2sgY29uZmlnIGNoZWNrLiBgWEZSTWAgYW5kIGBYRlJNX1VTRVJgIGFyZSB0aGUgb2J2aW91cyBvbmVzLiBCdXQsIGxldCdzIGJlIHRob3JvdWdoIGFuZCBwb2tlIGFyb3VuZCBgbmV0L3hmcm0vS2NvbmZpZ2AgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3MgcmVsYXRlZCB0byBgWEZSTV9VU0VSYCB0aGF0IHdlIG5lZWQgdG8gY29uc2lkZXIgZHVyaW5nIHRlc3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc3MjksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QwNTo0ODowNy4zNzM4MjkyODJaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5NTY2NTQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWEZSTV9VU0VSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vS2NvbmZpZz0yMj1pZiBJTkVUXFxubmV0L3hmcm0vS2NvbmZpZzoyMzpjb25maWcgWEZSTV9VU0VSXFxubmV0L3hmcm0vS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZSBcXFwiVHJhbnNmb3JtYXRpb24gdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMzEtXFxubmV0L3hmcm0vS2NvbmZpZzozMjpjb25maWcgWEZSTV9VU0VSX0NPTVBBVFxcbm5ldC94ZnJtL0tjb25maWctMzMtXFx0dHJpc3RhdGUgXFxcIkNvbXBhdGlibGUgQUJJIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDA1OjQ4OjA3Ljc2OTUwMDMxMloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzMzMDc5NDk0OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgWEZSTSBQb2xpY3kgSGFzaCBSZWJ1aWxkIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBjb25maWd1cmF0aW9ucyB0aGF0IGp1bXAgb3V0IGFyZSBgWEZSTWAgYW5kIGBYRlJNX1VTRVJgLiBJIHNlZSB0aGF0IGBYRlJNYCBpcyBhIGJvb2xlYW4gYW5kIGBYRlJNX1VTRVJgIGlzIGEgdHJpc3RhdGUsIGFuZCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBmdW5jdGlvbmFsaXR5LCBgWEZSTV9VU0VSYCBzZWVtcyBsaWtlIHRoZSBlc3NlbnRpYWwgb25lIHRvIGVuc3VyZSBpcyBlbmFibGVkLlxuXG5NeSBwcmltYXJ5IGNvbmNlcm4gaXMgcmVhY2hhYmlsaXR5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgY29kZSBwYXRoIGlzIGFjdHVhbGx5IGhpdC4gTGV0IG1lIHNlZSwgYHhmcm1faGFzaF9yZWJ1aWxkYC4uLiB5ZXMsIGl0J3MgdHJpZ2dlcmVkIGJ5IGB4ZnJtX3BvbGljeV9oYXNoX3JlYnVpbGRgLCB3aGljaCBpdHNlbGYgaXMgY2FsbGVkIGZyb20gYHhmcm1fc2V0X3NwZGluZm9gIHdoZW4gYSBgWEZSTV9NU0dfTkVXU1BESU5GT2AgbmV0bGluayBtZXNzYWdlIGFycml2ZXMuIFRoYXQncyBnb29kLCB0aGF0IGNvbmZpcm1zIGl0J3MgcmVhY2hhYmxlIGRpcmVjdGx5IGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLCB3aGljaCBpcyB0aGUga2V5LlxuXG5MZXQgbWUgdGhpbmsgYSBiaXQgYWJvdXQgdGhlIG90aGVyIGZ1bmN0aW9ucyBpbnZvbHZlZC4gYHhmcm1faGFzaF9yZWJ1aWxkYCBpcyB0aGUgY29yZS4gYHhmcm1fcG9saWN5X2hhc2hfcmVidWlsZGAgaXMganVzdCBhIHdyYXBwZXIsIGFuZCBgeGZybV9zZXRfc3BkaW5mb2AgaXMgdGhlIG5ldGxpbmsgaGFuZGxlci4gSSBzZWUgYHhmcm1fcG9saWN5X2luZXhhY3RfYWxsb2NfYmluYCBhbmQgYHhmcm1fcG9saWN5X2luZXhhY3RfYWxsb2NfY2hhaW5gIGNhbGxlZCB3aXRoaW4gdGhlIGxvb3AsIGJ1dCBpdCdzIHRoZSByZWJ1aWxkIHRoYXQncyB0aGUgZm9jdXMuXG5cblNvLCB0aGUga2V5IHN5bWJvbHMgaGVyZSBhcmUgYHhmcm1faGFzaF9yZWJ1aWxkYCBhbmQgYHhmcm1fc2V0X3NwZGluZm9gLiBBbmQgdGhlIGNvbmZpZ3MgSSdtIGNvbmZpcm1pbmcgYXJlIGBYRlJNX1VTRVJgIGFuZCBgWEZSTWAuXG5cblRoZSBwYXRjaCBpcyBmdW5kYW1lbnRhbGx5IG1vZGlmeWluZyB0aGUgY29uZGl0aW9uIGZvciBhbGxvY2F0aW5nIGluZXhhY3QgYmlucyBkdXJpbmcgdGhlIFhGUk0gcG9saWN5IGhhc2ggcmVidWlsZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyBwb2xpY3kgaGFzaGluZyBhbmQgbG9va3VwIGluIHRoZSBJUHNlYy9YRlJNIHN1YnN5c3RlbS4gR2l2ZW4gdGhhdCBgWEZSTV9NU0dfTkVXU1BESU5GT2AgaXMgdGhlIHRyaWdnZXIsIGFuZCBpdCdzIHJlYWNoYWJsZSB0aHJvdWdoIGEgbmV0bGluayBtZXNzYWdlLCB0aGlzIHNlZW1zIHByZXR0eSBzb2xpZC5cblxuSSdtIGRvdWJsZS1jaGVja2luZyB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIGBYRlJNYCBhbmQgYFhGUk1fVVNFUmAgYXJlIGRlZmluZWQgaW4gYG5ldC94ZnJtL0tjb25maWdgIGFuZCBhcmUgdGhlIHJlbGV2YW50IGNvbmZpZ3MuXG5cbldhaXQsIGB4ZnJtX2hhc2hfcmVidWlsZGAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgcmVpbmZvcmNlcyBpdCBhcyB0aGUgY29yZSBtb2RpZmljYXRpb24uIEknbSBnb2luZyB0byBxdWlja2x5IGNvbmZpcm0gdGhhdCBgeGZybV9oYXNoX3JlYnVpbGRgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQncyBtb2RpZmllZCwgYW5kIHllcywgaXQncyBqdXN0IHRoYXQgb25lIGZ1bmN0aW9uIGluIGBuZXQveGZybS94ZnJtX3BvbGljeS5jYC5cblxuT2theSwgSSdtIGNvbmZpZGVudCBpbiB0aGUgYW5hbHlzaXMuIExldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODU3MSwiT3V0cHV0VG9rZW5zIjoxNDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMDU6NDg6NDUuMTAwMjk3NDdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODM4MjU3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiWEZSTVwiLFxuICAgIFwiWEZSTV9VU0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwieGZybV9oYXNoX3JlYnVpbGRcIixcbiAgICBcInhmcm1fc2V0X3NwZGluZm9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29uZGl0aW9uIGZvciBhbGxvY2F0aW5nIGluZXhhY3QgYmlucyBkdXJpbmcgWEZSTSBwb2xpY3kgaGFzaCByZWJ1aWxkcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBJUHNlYy9YRlJNIHN1YnN5c3RlbSB0aGF0IGFmZmVjdHMgaG93IHBvbGljaWVzIGFyZSBoYXNoZWQgYW5kIGxvb2tlZCB1cC4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgWEZSTV9NU0dfTkVXU1BESU5GTyBuZXRsaW5rIG1lc3NhZ2UsIHdoaWNoIHRyaWdnZXJzIHhmcm1fc2V0X3NwZGluZm8gYW5kIHNjaGVkdWxlcyB0aGUgeGZybV9oYXNoX3JlYnVpbGQgd29yay5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNXCIsXG4gICAgXCJYRlJNX1VTRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4ZnJtX2hhc2hfcmVidWlsZFwiLFxuICAgIFwieGZybV9zZXRfc3BkaW5mb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb25kaXRpb24gZm9yIGFsbG9jYXRpbmcgaW5leGFjdCBiaW5zIGR1cmluZyBYRlJNIHBvbGljeSBoYXNoIHJlYnVpbGRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIElQc2VjL1hGUk0gc3Vic3lzdGVtIHRoYXQgYWZmZWN0cyBob3cgcG9saWNpZXMgYXJlIGhhc2hlZCBhbmQgbG9va2VkIHVwLiBUaGUgY29kZSBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHRoZSBYRlJNX01TR19ORVdTUERJTkZPIG5ldGxpbmsgbWVzc2FnZSwgd2hpY2ggdHJpZ2dlcnMgeGZybV9zZXRfc3BkaW5mbyBhbmQgc2NoZWR1bGVzIHRoZSB4ZnJtX2hhc2hfcmVidWlsZCB3b3JrLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowrsptj[1] Phase: Succeeded StartedAt: 2026-07-03 05:48:56 +0000 UTC FinishedAt: 2026-07-03 05:48:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrsptj[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-03 05:48:56 +0000 UTC FinishedAt: 2026-07-03 05:48:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrsptj[2] Phase: Succeeded StartedAt: 2026-07-03 05:48:56 +0000 UTC FinishedAt: 2026-07-03 09:59:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-03 05:48:56 +0000 UTC FinishedAt: 2026-07-03 09:59:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-03 05:48:56 +0000 UTC FinishedAt: 2026-07-03 05:50:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-03 05:48:56 +0000 UTC FinishedAt: 2026-07-03 05:49:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflowrsptj/series-workflowrsptj-convert-artifact-267702663/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-03 05:50:21 +0000 UTC FinishedAt: 2026-07-03 06:18:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-03 05:50:21 +0000 UTC FinishedAt: 2026-07-03 06:18:24 +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:*74e34589-32f7-43f6-81d2-7d5129f02594,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-workflowrsptj/series-workflowrsptj-convert-artifact-267702663/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": "eb40f228-9088-4845-96dd-bf375e9c07f3", "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-workflowrsptj/series-workflowrsptj-build-action-3622182941/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-03 05:50:21 +0000 UTC FinishedAt: 2026-07-03 06:18:14 +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:*74e34589-32f7-43f6-81d2-7d5129f02594,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-workflowrsptj/series-workflowrsptj-convert-artifact-267702663/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": "eb40f228-9088-4845-96dd-bf375e9c07f3", "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-workflowrsptj/series-workflowrsptj-build-action-3622182941/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-03 06:18:24 +0000 UTC FinishedAt: 2026-07-03 06:18:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-03 06:18:24 +0000 UTC FinishedAt: 2026-07-03 06:18:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-03 06:18:24 +0000 UTC FinishedAt: 2026-07-03 06:18:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-03 06:18:24 +0000 UTC FinishedAt: 2026-07-03 06:18:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflowrsptj/series-workflowrsptj-convert-artifact-3730749110/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-03 06:18:34 +0000 UTC FinishedAt: 2026-07-03 06:20:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-03 06:18:34 +0000 UTC FinishedAt: 2026-07-03 06:20:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*eb40f228-9088-4845-96dd-bf375e9c07f3,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-workflowrsptj/series-workflowrsptj-build-action-3622182941/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-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-03 06:20:51 +0000 UTC FinishedAt: 2026-07-03 06:20:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-03 06:20:51 +0000 UTC FinishedAt: 2026-07-03 06:20:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-03 06:20:51 +0000 UTC FinishedAt: 2026-07-03 06:52:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-03 06:20:51 +0000 UTC FinishedAt: 2026-07-03 06:52:49 +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:*74e34589-32f7-43f6-81d2-7d5129f02594,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-workflowrsptj/series-workflowrsptj-convert-artifact-3730749110/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": "6ef0ff36-b70e-4e0b-b9d4-13de7ff84901", "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-workflowrsptj/series-workflowrsptj-build-action-1079442362/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-03 06:20:51 +0000 UTC FinishedAt: 2026-07-03 06:52:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*74e34589-32f7-43f6-81d2-7d5129f02594,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-workflowrsptj/series-workflowrsptj-convert-artifact-3730749110/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": "6ef0ff36-b70e-4e0b-b9d4-13de7ff84901", "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-workflowrsptj/series-workflowrsptj-build-action-1079442362/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-03 06:52:49 +0000 UTC FinishedAt: 2026-07-03 06:52:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-03 06:52:49 +0000 UTC FinishedAt: 2026-07-03 06:52:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-03 06:52:49 +0000 UTC FinishedAt: 2026-07-03 06:55:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-03 06:52:49 +0000 UTC FinishedAt: 2026-07-03 06:55:24 +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:*6ef0ff36-b70e-4e0b-b9d4-13de7ff84901,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-workflowrsptj/series-workflowrsptj-build-action-1079442362/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-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-03 06:55:34 +0000 UTC FinishedAt: 2026-07-03 09:59:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-03 06:55:34 +0000 UTC FinishedAt: 2026-07-03 09:59:05 +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":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"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:*eb40f228-9088-4845-96dd-bf375e9c07f3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6ef0ff36-b70e-4e0b-b9d4-13de7ff84901,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-workflowrsptj/series-workflowrsptj-build-action-3622182941/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-workflowrsptj/series-workflowrsptj-build-action-1079442362/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-03 06:55:34 +0000 UTC FinishedAt: 2026-07-03 06:56:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-03 06:55:34 +0000 UTC FinishedAt: 2026-07-03 06:56:22 +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":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"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-workflowrsptj/series-workflowrsptj-convert-artifact-2539721691/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-03 06:55:34 +0000 UTC FinishedAt: 2026-07-03 06:55:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-03 06:55:34 +0000 UTC FinishedAt: 2026-07-03 06:55:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-03 06:55:34 +0000 UTC FinishedAt: 2026-07-03 06:55:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-03 06:56:46 +0000 UTC FinishedAt: 2026-07-03 09:59:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrsptj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_hash_rebuild","xfrm_set_spdinfo"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"08bc5b2636afcbadc31bb17243eec094e048bd79","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM","XFRM_USER"],"series_id":"3b600e52-724d-4edb-ac53-4e6c31bdfedc","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-03 06:56:46 +0000 UTC FinishedAt: 2026-07-03 09:58:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*eb40f228-9088-4845-96dd-bf375e9c07f3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6ef0ff36-b70e-4e0b-b9d4-13de7ff84901,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-workflowrsptj/series-workflowrsptj-build-action-3622182941/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-workflowrsptj/series-workflowrsptj-build-action-1079442362/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-workflowrsptj/series-workflowrsptj-convert-artifact-2539721691/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,}