Name: series-workflowfk8cf Phase: Succeeded StartedAt: 2026-07-16 00:48:18 +0000 UTC FinishedAt: 2026-07-16 05:37:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfk8cf[0] Phase: Succeeded StartedAt: 2026-07-16 00:48:18 +0000 UTC FinishedAt: 2026-07-16 01:15:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfk8cf[0].run-triage Phase: Succeeded StartedAt: 2026-07-16 00:48:18 +0000 UTC FinishedAt: 2026-07-16 01:15:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "MAC80211_HWSIM" ], "series_id": "0a375e70-34ee-46e9-9a0b-ac42aee8390e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_get_chanctx_max_required_bw", "__ieee80211_recalc_chanctx_min_def" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9idyYjMzQ7LAogICAgJiMzNDtfX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgZGV0ZXJtaW5pbmcgdGhlIG1heGltdW0gcmVxdWlyZWQgY2hhbm5lbCBiYW5kd2lkdGggaW4gbWFjODAyMTEuIEl0IGNoYW5nZXMgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhlIG1vbml0b3IgaW50ZXJmYWNlJiMzOTtzIGNvbmZpZ3VyZWQgYmFuZHdpZHRoIGlzIHVzZWQsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgODAyLjExIHN0YWNrLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjE0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYWMyZDFkMDYyNTExMzRiYjgxOTMwNzAyNWZkZDVmY2I0YTlkYTBlMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDE2IDAxOjE0OjUyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9jaGFuLmMgYi9uZXQvbWFjODAyMTEvY2hhbi5jXG5pbmRleCA1MTUyYjg0YTMzNTc3OS4uNzViYjIwNGFkNzQzMmMgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvY2hhbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvY2hhbi5jXG5AQCAtNjA3LDEwICYjNDM7NjA3LDEyIEBAIGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYncoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4gXHRcdG1heF9idyA9IG1heChtYXhfYncsIHdpZHRoKTtcbiBcdH1cbiBcbi1cdGlmICghcnN2ZF9mb3IgfHxcbi1cdCAgICByc3ZkX2Zvci1cdTAwM2VzZGF0YSA9PSByY3VfYWNjZXNzX3BvaW50ZXIobG9jYWwtXHUwMDNlbW9uaXRvcl9zZGF0YSkpXG4mIzQzO1x0aWYgKCFyc3ZkX2ZvcilcbiBcdFx0Z290byBjaGVja19tb25pdG9yO1xuIFxuJiM0MztcdGlmIChyc3ZkX2Zvci1cdTAwM2VzZGF0YSA9PSByY3VfYWNjZXNzX3BvaW50ZXIobG9jYWwtXHUwMDNlbW9uaXRvcl9zZGF0YSkpXG4mIzQzO1x0XHRyZXR1cm4gbWF4KG1heF9idywgY3R4LVx1MDAzZWNvbmYuZGVmLndpZHRoKTtcbiYjNDM7XG4gXHQvKiBDb25zaWRlciB0aGUgbGluayBmb3Igd2hpY2ggdGhpcyBjaGFuY3R4IGlzIHJlc2VydmVkL2dvaW5nIHRvIGJlIGFzc2lnbmVkICovXG4gXHR3aWR0aCA9IGllZWU4MDIxMV9nZXRfd2lkdGhfb2ZfbGluayhyc3ZkX2Zvcik7XG4gXHRtYXhfYncgPSBtYXgobWF4X2J3LCB3aWR0aCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDE6MTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfZ2V0X2NoYW5jdHhfbWF4X3JlcXVpcmVkX2J3JiMzNDssCiAgICAmIzM0O19faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBkZXRlcm1pbmluZyB0aGUgbWF4aW11bSByZXF1aXJlZCBjaGFubmVsIGJhbmR3aWR0aCBpbiBtYWM4MDIxMS4gSXQgY2hhbmdlcyB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGUgbW9uaXRvciBpbnRlcmZhY2UmIzM5O3MgY29uZmlndXJlZCBiYW5kd2lkdGggaXMgdXNlZCwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSA4MDIuMTEgc3RhY2suJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFjMmQxZDA2MjUxMTM0YmI4MTkzMDcwMjVmZGQ1ZmNiNGE5ZGEwZTEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAxNiAwMToxNDo1MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9jaGFuLmMgYi9uZXQvbWFjODAyMTEvY2hhbi5jCmluZGV4IDUxNTJiODRhMzM1Nzc5Li43NWJiMjA0YWQ3NDMyYyAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL2NoYW4uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvY2hhbi5jCkBAIC02MDcsMTAgJiM0Mzs2MDcsMTIgQEAgaWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9idyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwKIAkJbWF4X2J3ID0gbWF4KG1heF9idywgd2lkdGgpOwogCX0KIAotCWlmICghcnN2ZF9mb3IgfHwKLQkgICAgcnN2ZF9mb3ItJmd0O3NkYXRhID09IHJjdV9hY2Nlc3NfcG9pbnRlcihsb2NhbC0mZ3Q7bW9uaXRvcl9zZGF0YSkpCiYjNDM7CWlmICghcnN2ZF9mb3IpCiAJCWdvdG8gY2hlY2tfbW9uaXRvcjsKIAomIzQzOwlpZiAocnN2ZF9mb3ItJmd0O3NkYXRhID09IHJjdV9hY2Nlc3NfcG9pbnRlcihsb2NhbC0mZ3Q7bW9uaXRvcl9zZGF0YSkpCiYjNDM7CQlyZXR1cm4gbWF4KG1heF9idywgY3R4LSZndDtjb25mLmRlZi53aWR0aCk7CiYjNDM7CiAJLyogQ29uc2lkZXIgdGhlIGxpbmsgZm9yIHdoaWNoIHRoaXMgY2hhbmN0eCBpcyByZXNlcnZlZC9nb2luZyB0byBiZSBhc3NpZ25lZCAqLwogCXdpZHRoID0gaWVlZTgwMjExX2dldF93aWR0aF9vZl9saW5rKHJzdmRfZm9yKTsKIAltYXhfYncgPSBtYXgobWF4X2J3LCB3aWR0aCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NjIKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAzOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2ggaW4gYG5ldC9tYWM4MDIxMS9jaGFuLmNgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBgbmV0L21hYzgwMjExL2NoYW4uY2AsIHNwZWNpZmljYWxseSB0aGUgYGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgY2hhbmdlIGRvZXMsIHNvIEkmIzM5O2xsIHJldmlldyB0aGUgZGlmZi4gTGV0JiMzOTtzIHNlZS4uLiBpdCBsb29rcyBsaWtlIHRoZXkmIzM5O3ZlIGFkZGVkIGEgY29uZGl0aW9uYWwgYmxvY2sgYXJvdW5kIHRoZSAmIzM0O3Jlc2VydmVkIGZvciYjMzQ7IGxvZ2ljLiBQcmV2aW91c2x5LCB0aGUgbG9naWMgYXBwZWFyZWQgdG8gb25seSBjb25zaWRlciB0aGUgbW9uaXRvciBpbnRlcmZhY2UgaWYgYHJzdmRfZm9yYCB3YXMgbnVsbC4gTm93LCB0aGVyZSYjMzk7cyBhbiBleHBsaWNpdCBjaGVjayAqd2l0aGluKiB0aGF0IGJsb2NrIHRvIHNlZSBpZiBgcnN2ZF9mb3JgIHBvaW50cyB0byB0aGUgbW9uaXRvciYjMzk7cyBzdGF0aW9uIGRhdGEgKGBzZGF0YWApLgoKVGhlIG9yaWdpbmFsIGNvZGUgY29tcGFyZWQgdGhlIGBzZGF0YWAgcG9pbnRlciBkaXJlY3RseSwgYnV0IG5vdyBpZiB0aGUgcmVzZXJ2ZWQgY2hhbm5lbCBpcyB0aGUgbW9uaXRvciBpbnRlcmZhY2UsIGl0IHJldHVybnMgdGhlICpkZWZhdWx0KiB3aWR0aC4gT3RoZXJ3aXNlLCBpdCBwcm9jZWVkcyBhcyBiZWZvcmUgYW5kIGNvbnNpZGVycyB0aGUgbGluayB0aGF0IHRoZSBjaGFubmVsIGNvbnRleHQgaXMgcmVzZXJ2ZWQgZm9yIHdoZW4gY2FsY3VsYXRpbmcgdGhlIG1heGltdW0gYmFuZHdpZHRoLiBUaGlzIGFwcGVhcnMgdG8gYmUgYSBidWcgZml4LCBhbmQgdGhlIGNvbW1pdCBtZXNzYWdlIHdpbGwgYmUgdGVsbGluZy4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIHdpZGVyIGNvbnRleHQgb2YgdGhpcyBjaGFuZ2Ugd2l0aGluIGBuZXQvbWFjODAyMTFgIGFuZCBlbnN1cmUgdGhlcmUgYXJlIG5vIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzLiBUaGUgY2hhbmdlIGxvb2tzIGNvcnJlY3QgaW4gaXNvbGF0aW9uLCB0aG91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDE6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9idyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jaGFuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2NoYW4uYz01ODE9c3RhdGljIGVudW0gbmw4MDIxMV9jaGFuX3dpZHRoXG5uZXQvbWFjODAyMTEvY2hhbi5jOjU4MjppZWVlODAyMTFfZ2V0X2NoYW5jdHhfbWF4X3JlcXVpcmVkX2J3KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjExL2NoYW4uYy01ODMtXHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHggKmN0eCxcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTYzNj1fX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtNjU2LVxubmV0L21hYzgwMjExL2NoYW4uYzo2NTc6XHRtYXhfYncgPSBpZWVlODAyMTFfZ2V0X2NoYW5jdHhfbWF4X3JlcXVpcmVkX2J3KGxvY2FsLCBjdHgsIHJzdmRfZm9yLFxubmV0L21hYzgwMjExL2NoYW4uYy02NTgtXHRcdFx0XHRcdFx0ICAgICAgIGNoZWNrX3Jlc2VydmVkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTY0CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBDaGFubmVsIENvbnRleHQgQmFuZHdpZHRoIFJlcXVpcmVtZW50cyoqCgpBbHJpZ2h0LCBJJiMzOTttIHRyYWNpbmcgZG93biB0aGlzIGJhbmR3aWR0aCBjYWxjdWxhdGlvbiBsb2dpYy4gVGhlIGBpZWVlODAyMTFfZ2V0X2NoYW5jdHhfbWF4X3JlcXVpcmVkX2J3YCBmdW5jdGlvbiBpcyB0aGUga2V5IG9uZSBoZXJlIOKAkyBJIGtub3cgdGhhdCBpdCBmaWd1cmVzIG91dCB0aGUgbWF4aW11bSBiYW5kd2lkdGggYSBjaGFubmVsIGNvbnRleHQgKm5lZWRzKi4gTm93LCBJJiMzOTttIHplcm9pbmcgaW4gb24gd2hlcmUgdGhhdCBmdW5jdGlvbiBpcyBhY3R1YWxseSBnZXR0aW5nIGludm9rZWQuIFRoZSBjYWxsIHRvIGBpZWVlODAyMTFfZ2V0X2NoYW5jdHhfbWF4X3JlcXVpcmVkX2J3YCBvcmlnaW5hdGVzIGZyb20gdGhlIGBfX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmYCBmdW5jdGlvbi4gU28sIG5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsLXNpdGVzIG9mIGBfX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmYCDigJMgaXQmIzM5O3MgdGhlIGNyaXRpY2FsIGxpbmsgaW4gdW5kZXJzdGFuZGluZyB3aGVuIGFuZCB3aHkgd2UgcmUtZXZhbHVhdGUgdGhlc2UgY2hhbm5lbCBjb250ZXh0IGJhbmR3aWR0aCBwYXJhbWV0ZXJzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoZSByZWNhbGN1bGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2hhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jaGFuLmM9NjM1PXN0YXRpYyB1MzJcbm5ldC9tYWM4MDIxMS9jaGFuLmM6NjM2Ol9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG5uZXQvbWFjODAyMTEvY2hhbi5jLTYzNy1cdFx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4LFxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM9NzQ5PV9pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTc1OS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM6NzYwOlx0Y2hhbmdlZCA9IF9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYobG9jYWwsIGN0eCwgcnN2ZF9mb3IsXG5uZXQvbWFjODAyMTEvY2hhbi5jLTc2MS1cdFx0XHRcdFx0XHQgICAgIGNoZWNrX3Jlc2VydmVkKTtcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTgxMT1zdGF0aWMgdm9pZCBfaWVlZTgwMjExX2NoYW5nZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtODgwLVx0LyogY2hlY2sgaWYgbWluIGNoYW5jdHggYWxzbyBjaGFuZ2VkICovXG5uZXQvbWFjODAyMTEvY2hhbi5jOjg4MTpcdGNoYW5nZWQgfD0gX19pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZihsb2NhbCwgY3R4LCByc3ZkX2Zvcixcbm5ldC9tYWM4MDIxMS9jaGFuLmMtODgyLVx0XHRcdFx0XHRcdCAgICAgIGZhbHNlKTtcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTk5OT1pZWVlODAyMTFfYWxsb2NfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTEwMTktXHRjdHgtXHUwMDNlcmFkYXJfZGV0ZWN0ZWQgPSBmYWxzZTtcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MTAyMDpcdF9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYobG9jYWwsIGN0eCwgTlVMTCwgZmFsc2UpO1xubmV0L21hYzgwMjExL2NoYW4uYy0xMDIxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NTgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIG1hYzgwMjExIENoYW5uZWwgQ29udGV4dCoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBtYWM4MDIxMSBjaGFubmVsIGNvbnRleHQgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5LiBJIG5lZWQgdG8gZ2V0IG15IGhlYWQgYXJvdW5kIHRoaXMgcGFydGljdWxhciBhc3BlY3QuIE15IHByaW1hcnkgZm9jdXMgcmlnaHQgbm93IGlzIHRvIGxvY2F0ZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBkZXRhaWxzIGZvciBtYWM4MDIxMS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIG5lZWQgdG8gZ28gaHVudGluZyBmb3IgdGhlIGNvbmZpZyB0aGF0IGdvdmVybnMgaG93IHRoZXNlIGNoYW5uZWwgY29udGV4dHMgYXJlIGhhbmRsZWQuIFRpbWUgdG8gZGlnIGluIGFuZCBmaW5kIHRob3NlIHBhcmFtZXRlcnMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUM4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxubmV0L21hYzgwMjExL0tjb25maWctMjAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cdGJvb2xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNDAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctNDItXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cdHN0cmluZ1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXCYjMzQ7U29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNTktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7RW5hYmxlIExFRCB0cmlnZ2Vyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVx0Ym9vbCBcJiMzNDtUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXHRib29sIFwmIzM0O1NlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0RvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXHRib29sIFwmIzM0O1ZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgSFQgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBPQ0IgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXHRib29sIFwmIzM0O1ZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXHRib29sIFwmIzM0O1ZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjcxLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtWZXJib3NlIFRETFMgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xubmV0L21hYzgwMjExL0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXHRpbnQgXCYjMzQ7U3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVwmIzM0OyBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDE6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjIzNQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIE1BQzgwMjExIENoYW5uZWwgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyB0aGUgY29yZSBjb25maWcgaGVyZSBpcyBkZWZpbml0ZWx5IGBNQUM4MDIxMWAuIFRoYXQgcG9pbnRzIHVzIGRpcmVjdGx5IHRvIHRoZSB3aXJlbGVzcyBuZXR3b3JraW5nIHN0YWNrLiBUaGUgdGhpbmcgdGhhdCYjMzk7cyBpbW1lZGlhdGVseSBncmFiYmluZyBteSBhdHRlbnRpb24gaXMgYGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndgLiBUaGlzIGZ1bmN0aW9uJiMzOTtzIHByZXNlbmNlIGluIHRoZSBkaXNjdXNzaW9uIG1lYW5zIGl0JiMzOTtzIGxpa2VseSBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBjaGFubmVsIGNvbnRleHQgbWFuYWdlbWVudCBwdXp6bGUsIGFuZCBpdOKAmXMgZXhwb3NlZCB0aHJvdWdoIG5ldGxpbmsgY29tbWFuZHMuIFRoYXQmIzM5O3Mga2V5LiBOZXRsaW5rIG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIHVzZXJzcGFjZS1rZXJuZWwgaW50ZXJmYWNlIGZvciBjb25maWd1cmluZyB0aGluZ3MgbGlrZSBpbnRlcmZhY2VzLCBjaGFubmVscywgYW5kIG90aGVyIHBhcmFtZXRlcnMgdGhhdCBhcmUgdmlzaWJsZSB0byBoaWdoZXIgbGV2ZWwgbmV0d29ya2luZyB0b29scy4KCkdpdmVuIHRoYXQgaXQmIzM5O3MgZGVhbGluZyB3aXRoIGJhbmR3aWR0aCwgYW5kIGl0JiMzOTtzIHJlYWNoYWJsZSB0aHJvdWdoIG5ldGxpbmssIGl0JiMzOTtzIHByZXR0eSBjbGVhciBpdCYjMzk7cyBwcm9iYWJseSBpbnZvbHZlZCBpbiBzZXR0aW5nIG9yIHF1ZXJ5aW5nIHRoZSBtYXhpbXVtIGJhbmR3aWR0aCByZXF1aXJlbWVudCBiYXNlZCBvbiB0aGUgY2hhbm5lbCBjb250ZXh0LiBJIG5lZWQgdG8gZGlnIGludG8gYG5ldC9tYWM4MDIxMS9jaGFuLmNgLiBUaGUga2VybmVsIGlzIG9mdGVuIG9yZ2FuaXplZCBpbiBhIHZlcnkgc3RydWN0dXJlZCB3YXksIHNvIEkmIzM5O2xsIHN0YXJ0IHRoZXJlLCBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlncyBvciBjb25kaXRpb25zIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2hhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDE6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYxNgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgbWFjODAyMTEgQ2hhbm5lbCBDb250ZXh0IE1hbmFnZW1lbnQqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgbmV0L21hYzgwMjExL2NoYW4uY2AgZmlsZSwgYW5kIEkmIzM5O20gbm90IHNlZWluZyBhbnkgKnNwZWNpZmljKiBjb25maWcgb3B0aW9ucyByaWdodCBvZmYgdGhlIGJhdC4gVGhlIGZ1bmN0aW9uIGBpZWVlODAyMTFfZ2V0X2NoYW5jdHhfbWF4X3JlcXVpcmVkX2J3YCBpcywgb2YgY291cnNlLCBzdGF0aWMuIFRoYXTigJlzIG5vdCB1bnVzdWFsLiBMZXQmIzM5O3MgdHJhY2Ugd2hlcmUgaXQmIzM5O3MgYmVpbmcgdXNlZC4gUmlnaHQsIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBfX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmYC4gVGhhdCBtYWtlcyBzZW5zZSBpbiB0aGUgY29udGV4dCBvZiByZWNhbGN1bGF0aW5nIGNoYW5uZWwgY29udGV4dCBkZWZpbml0aW9ucy4gTm93LCBgX19pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZmAgaXRzZWxmIGdldHMgY2FsbGVkIGZyb20gYSBmZXcgcGxhY2VzOiBgX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmYCwgYF9pZWVlODAyMTFfY2hhbmdlX2NoYW5jdHhgLCBhbmQgYGllZWU4MDIxMV9hbGxvY19jaGFuY3R4YC4gQmluZ28uIFRob3NlIGFyZSBhbGwgc3F1YXJlbHkgaW4gdGhlIHJlYWxtIG9mIGBtYWM4MDIxMWAmIzM5O3MgY2hhbm5lbCBjb250ZXh0IG1hbmFnZW1lbnQuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhlIHBhdGggdG8gYW55IHZ1bG5lcmFiaWxpdHkgb3IgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNlIGlzIHRocm91Z2ggY2hhbm5lbCBjb250ZXh0IGFsbG9jYXRpb24gYW5kIG1hbmlwdWxhdGlvbi4KClRoaW5raW5nIGFib3V0IGhvdyB0aGlzIGdldHMgZXhlcmNpc2VkLCBJIGltbWVkaWF0ZWx5IHRoaW5rIG9mIGBtYWM4MDIxMV9od3NpbWAuIEl0JiMzOTtzIG15IGdvLXRvIGZvciBmdXp6aW5nIGBtYWM4MDIxMWAuIFNvLCBgTUFDODAyMTFgIGFuZCBgTUFDODAyMTFfSFdTSU1gIGFyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGZvY3VzIG9uLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjaywgYnV0IGl0IGlzIGxpa2VseSBgTUFDODAyMTFfSFdTSU1gIHdpbGwgYmUgcmVmZXJlbmNlZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFjODAyMTFfaHdzaW0uY2Agb3IgYSBzaW1pbGFyIGZpbGUuIFRoYXQmIzM5O3MgdGhlIGxpa2VseSBzb3VyY2Ugb2YgYW55IGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBob3cgdGhpcyBjaGFubmVsIGNvbnRleHQgbWFuYWdlbWVudCB3b3JrcyB3aXRoaW4gdGhlIHNpbXVsYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUM4MDIxMV9IV1NJTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZy0yLVx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDE6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQwOAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgQnVnIEZpeCBpbiB0aGUgTUFDODAyMTEgSFdTSU0gQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYE1BQzgwMjExX0hXU0lNYCwgd2hpY2ggSSBrbm93IGlzIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgc2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbC4gVGhlIGRlc2NyaXB0aW9uIG1lbnRpb25zIGEgcG90ZW50aWFsIE5VTEwgZGVyZWZlcmVuY2UgZm9yIGByc3ZkX2ZvcmAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGltbWVkaWF0ZWx5IGRpdmUgaW50byB0aGUgY29kZS4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgb3JpZ2luYWwgY29kZSBzbmlwcGV0IHdhczoKCmBgYGMKCWlmICghcnN2ZF9mb3IgfHwKCSAgICByc3ZkX2Zvci0mZ3Q7c2RhdGEgPT0gcmN1X2FjY2Vzc19wb2ludGVyKGxvY2FsLSZndDttb25pdG9yX3NkYXRhKSkKCQlnb3RvIGNoZWNrX21vbml0b3I7CmBgYAoKSG1tLi4uIFdhaXQgYSBzZWNvbmQuIFRoZSBjaGVjayBgIXJzdmRfZm9yYCBjb21lcyAqZmlyc3QqLiBUaGF0JiMzOTtzIGEgc2hvcnQtY2lyY3VpdCEgSXQgKnNob3VsZG4mIzM5O3QqIGRlcmVmZXJlbmNlIGByc3ZkX2ZvcmAgaWYgaXQmIzM5O3MgTlVMTCwgYmVjYXVzZSBpZiBgcnN2ZF9mb3JgIGlzIE5VTEwgdGhlICplbnRpcmUqIGBpZmAgY29uZGl0aW9uIHdvdWxkIGV2YWx1YXRlIHRvIHRydWUsIGFuZCBpdCB3b3VsZCBqdW1wIHRvIGBjaGVja19tb25pdG9yYC4gVGhlIHBhdGNoIG1vZGlmaWVzIHRoYXQgY29kZSB0byBiZToKCmBgYGMKCWlmICghcnN2ZF9mb3IpCgkJZ290byBjaGVja19tb25pdG9yOwoKCWlmIChyc3ZkX2Zvci0mZ3Q7c2RhdGEgPT0gcmN1X2FjY2Vzc19wb2ludGVyKGxvY2FsLSZndDttb25pdG9yX3NkYXRhKSkKCQlyZXR1cm4gbWF4KG1heF9idywgY3R4LSZndDtjb25mLmRlZi53aWR0aCk7CmBgYAoKQWghIE5vdyBJIHNlZS4gVGhlIG9yaWdpbmFsIGNvZGUmIzM5O3MgYGNoZWNrX21vbml0b3JgIGxvZ2ljIHRyaWdnZXJlZCB3aGVuIHRoZSBzZWNvbmQgcGFydCBvZiB0aGUgY29uZGl0aW9uIGByc3ZkX2Zvci0mZ3Q7c2RhdGEgPT0gcmN1X2FjY2Vzc19wb2ludGVyKGxvY2FsLSZndDttb25pdG9yX3NkYXRhKWAgd2FzIHRydWUuIFRoZSBuZXcgY29kZSBkb2VzICpub3QqIGp1bXAgdG8gYGNoZWNrX21vbml0b3JgIGluIHRoYXQgY2FzZSwgYnV0IHJldHVybnMgYG1heChtYXhfYncsIGN0eC0mZ3Q7Y29uZi5kZWYud2lkdGgpYCBpbnN0ZWFkLgoKU28gdGhpcyBpcyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UgaW4gbG9naWMsIGEgc3VidGxlIHNoaWZ0IGluIHRoZSBkZWNpc2lvbi1tYWtpbmcgcHJvY2Vzcy4gVGhlIGZpeCBkb2VzbiYjMzk7dCBzaW1wbHkgcmVtb3ZlIGEgTlVMTCBkZXJlZmVyZW5jZTsgaXQgY2hhbmdlcyB3aGF0IHRoZSBmdW5jdGlvbiBkb2VzIHVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgY2hlY2tfbW9uaXRvcmAgZG9lcyB0byBmdWxseSBncmFzcCB0aGUgaW1wbGljYXRpb24gb2YgdGhpcyBjaGFuZ2UuIExldCBtZSBxdWlja2x5IGV4YW1pbmUgYGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndgIHRvIHNlZSB0aGUgaW1wYWN0IG9mIHRoaXMgZnVuY3Rpb25hbCBkaWZmZXJlbmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjaGVja19tb25pdG9yOiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jaGFuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2NoYW4uYz01ODI9aWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9idyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTYxOS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM6NjIwOmNoZWNrX21vbml0b3I6XG5uZXQvbWFjODAyMTEvY2hhbi5jLTYyMS1cdC8qIHVzZSB0aGUgY29uZmlndXJlZCBiYW5kd2lkdGggaW4gY2FzZSBvZiBtb25pdG9yIGludGVyZmFjZSAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDE4CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGNvZGUgc25pcHBldCwgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyBhbiBleHBlcnQtbGV2ZWwgdW5kZXJzdGFuZGluZzoKCioqQW5hbHl6aW5nIGBpZWVlODAyMTFfZ2V0X2NoYW5jdHhfbWF4X3JlcXVpcmVkX2J3YCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCB0aGUgaW1wbGVtZW50YXRpb24gZnJvbSBsaW5lcyA1ODIgdG8gNjMwLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBlc3RhYmxpc2ggdGhlIGNvbnRleHQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiBpcyAqc3VwcG9zZWQqIHRvIGRvIHdpdGhpbiB0aGUgbGFyZ2VyIDgwMi4xMSBmcmFtZXdvcmsuIEp1ZGdpbmcgZnJvbSB0aGUgbmFtZSwgaXQmIzM5O3MgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUgbWF4aW11bSBiYW5kd2lkdGggcmVxdWlyZWQgYnkgYSBjaGFubmVsIGNvbnRleHQsIHByZXN1bWFibHkgZm9yIHRoaW5ncyBsaWtlIGFsbG9jYXRpb24gb3IgY2FwYWJpbGl0eSBuZWdvdGlhdGlvbi4KCkkmIzM5O20gaW1tZWRpYXRlbHkgbG9va2luZyBmb3IgdGhlIGNyaXRpY2FsIHBhcnRzOiB0aGUgaW5wdXRzLCB0aGUgcHJvY2Vzc2luZyBsb2dpYywgYW5kIHRoZSBvdXRwdXRzLiBJJiMzOTtkIGV4cGVjdCBpdCB0YWtlcyB0aGUgYGNoYW5jdHhgIChjaGFubmVsIGNvbnRleHQpIGFzIGEgcHJpbWFyeSBhcmd1bWVudCwgb2J2aW91c2x5LiBUaGUgZnVuY3Rpb24mIzM5O3Mgam9iIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIG1heGltdW0gYmFuZHdpZHRoIGl0IG1pZ2h0IG5lZWQgdG8gdXNlLiBJJiMzOTtkIGV4cGVjdCBpdCB0byBoYW5kbGUgZGlmZmVyZW50IHNjZW5hcmlvcyAtIDIwTUh6LCA0ME1IeiwgODBNSHosIGFuZCBwb3RlbnRpYWxseSBldmVuIDE2ME1IeiBvciB3aWRlciBjaGFubmVscyBkZXBlbmRpbmcgb24gdGhlIHN0YW5kYXJkLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIGJyYW5jaGluZyBiYXNlZCBvbiB0aGluZ3MgbGlrZSB0aGUgYGNoYW5jdHhgJiMzOTtzIGNvbmZpZ3VyZWQgYmFuZHdpZHRoLCB0aGUgc3RhbmRhcmQgc3VwcG9ydGVkIChhL2IvZy9uL2FjL2F4Li4uKSwgYW5kIHBlcmhhcHMgYW55IHJlZ3VsYXRvcnkgY29uc3RyYWludHMgb3IgY2FwYWJpbGl0aWVzIGFkdmVydGlzZWQgYnkgdGhlIGFzc29jaWF0ZWQgcmFkaW8uIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgdXNlIG9mIGFueSBoZWxwZXIgZnVuY3Rpb25zIG9yIG1hY3JvcyBpbnZvbHZlZCwgYXMgdGhhdCB3aWxsIGJlIHdoZXJlIHRoZSBkZXRhaWwgcmVzaWRlcy4gSSYjMzk7bSBleHBlY3RpbmcgYSBjbGVhbiwgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIGdpdmVuIGl0cyBpbXBvcnRhbmNlIGluIHRoZSBkcml2ZXIuIEEgcG9vcmx5IG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBpbiBzb21ldGhpbmcgZnVuZGFtZW50YWwgbGlrZSB0aGlzIHdpbGwgaW1wYWN0IHBlcmZvcm1hbmNlIGFjcm9zcyB0aGUgYm9hcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2NoYW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU4MiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTgyOlx0aWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9idyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiA1ODM6XHRcdFx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4LFxuIDU4NDpcdFx0XHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKnJzdmRfZm9yLFxuIDU4NTpcdFx0XHRcdFx0ICAgICAgYm9vbCBjaGVja19yZXNlcnZlZClcbiA1ODY6XHR7XG4gNTg3Olx0XHRlbnVtIG5sODAyMTFfY2hhbl93aWR0aCBtYXhfYncgPSBOTDgwMjExX0NIQU5fV0lEVEhfMjBfTk9IVDtcbiA1ODg6XHRcdHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eF91c2VyX2l0ZXIgaXRlcjtcbiA1ODk6XHRcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhO1xuIDU5MDpcdFx0ZW51bSBubDgwMjExX2NoYW5fd2lkdGggd2lkdGg7XG4gNTkxOlx0XG4gNTkyOlx0XHRpZiAoV0FSTl9PTihjaGVja19yZXNlcnZlZCBcdTAwMjZcdTAwMjYgcnN2ZF9mb3IpKVxuIDU5MzpcdFx0XHRyZXR1cm4gY3R4LVx1MDAzZWNvbmYuZGVmLndpZHRoO1xuIDU5NDpcdFxuIDU5NTpcdFx0LyogV2hlbiB0aGlzIGlzIHRydWUgd2Ugb25seSBjYXJlIGFib3V0IHRoZSByZXNlcnZpbmcgbGlua3MgKi9cbiA1OTY6XHRcdGlmIChjaGVja19yZXNlcnZlZCkge1xuIDU5NzpcdFx0XHRmb3JfZWFjaF9jaGFuY3R4X3VzZXJfcmVzZXJ2ZWQobG9jYWwsIGN0eCwgXHUwMDI2aXRlcikge1xuIDU5ODpcdFx0XHRcdHdpZHRoID0gaWVlZTgwMjExX2dldF93aWR0aF9vZl9jaGFuY3R4X3VzZXIoXHUwMDI2aXRlcik7XG4gNTk5Olx0XHRcdFx0bWF4X2J3ID0gbWF4KG1heF9idywgd2lkdGgpO1xuIDYwMDpcdFx0XHR9XG4gNjAxOlx0XHRcdGdvdG8gY2hlY2tfbW9uaXRvcjtcbiA2MDI6XHRcdH1cbiA2MDM6XHRcbiA2MDQ6XHRcdC8qIENvbnNpZGVyIGFsbCBhc3NpZ25lZCBsaW5rcyAqL1xuIDYwNTpcdFx0Zm9yX2VhY2hfY2hhbmN0eF91c2VyX2Fzc2lnbmVkKGxvY2FsLCBjdHgsIFx1MDAyNml0ZXIpIHtcbiA2MDY6XHRcdFx0d2lkdGggPSBpZWVlODAyMTFfZ2V0X3dpZHRoX29mX2NoYW5jdHhfdXNlcihcdTAwMjZpdGVyKTtcbiA2MDc6XHRcdFx0bWF4X2J3ID0gbWF4KG1heF9idywgd2lkdGgpO1xuIDYwODpcdFx0fVxuIDYwOTpcdFxuIDYxMDpcdFx0aWYgKCFyc3ZkX2ZvcilcbiA2MTE6XHRcdFx0Z290byBjaGVja19tb25pdG9yO1xuIDYxMjpcdFxuIDYxMzpcdFx0aWYgKHJzdmRfZm9yLVx1MDAzZXNkYXRhID09IHJjdV9hY2Nlc3NfcG9pbnRlcihsb2NhbC1cdTAwM2Vtb25pdG9yX3NkYXRhKSlcbiA2MTQ6XHRcdFx0cmV0dXJuIG1heChtYXhfYncsIGN0eC1cdTAwM2Vjb25mLmRlZi53aWR0aCk7XG4gNjE1Olx0XG4gNjE2Olx0XHQvKiBDb25zaWRlciB0aGUgbGluayBmb3Igd2hpY2ggdGhpcyBjaGFuY3R4IGlzIHJlc2VydmVkL2dvaW5nIHRvIGJlIGFzc2lnbmVkICovXG4gNjE3Olx0XHR3aWR0aCA9IGllZWU4MDIxMV9nZXRfd2lkdGhfb2ZfbGluayhyc3ZkX2Zvcik7XG4gNjE4Olx0XHRtYXhfYncgPSBtYXgobWF4X2J3LCB3aWR0aCk7XG4gNjE5Olx0XG4gNjIwOlx0Y2hlY2tfbW9uaXRvcjpcbiA2MjE6XHRcdC8qIHVzZSB0aGUgY29uZmlndXJlZCBiYW5kd2lkdGggaW4gY2FzZSBvZiBtb25pdG9yIGludGVyZmFjZSAqL1xuIDYyMjpcdFx0c2RhdGEgPSB3aXBoeV9kZXJlZmVyZW5jZShsb2NhbC1cdTAwM2Vody53aXBoeSwgbG9jYWwtXHUwMDNlbW9uaXRvcl9zZGF0YSk7XG4gNjIzOlx0XHRpZiAoc2RhdGEgXHUwMDI2XHUwMDI2XG4gNjI0Olx0XHQgICAgcmN1X2FjY2Vzc19wb2ludGVyKHNkYXRhLVx1MDAzZXZpZi5ic3NfY29uZi5jaGFuY3R4X2NvbmYpID09IFx1MDAyNmN0eC1cdTAwM2Vjb25mKVxuIDYyNTpcdFx0XHRtYXhfYncgPSBtYXgobWF4X2J3LCBjdHgtXHUwMDNlY29uZi5kZWYud2lkdGgpO1xuIDYyNjpcdFxuIDYyNzpcdFx0cmV0dXJuIG1heF9idztcbiA2Mjg6XHR9XG4gNjI5Olx0XG4gNjMwOlx0LypcbiA2MzE6XHQgKiByZWNhbGMgdGhlIG1pbiByZXF1aXJlZCBjaGFuIHdpZHRoIG9mIHRoZSBjaGFubmVsIGNvbnRleHQsIHdoaWNoIGlzXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3NzIKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiA2MjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb2RlIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgb3ZlciB0aGlzIGNvZGUgY2hhbmdlLCBhbmQgaW1tZWRpYXRlbHkgSSBzZWUgYSBmdW5jdGlvbmFsIGRpZmZlcmVuY2UuIEluIHRoZSBvcmlnaW5hbCB2ZXJzaW9uLCBpZiBgcnN2ZF9mb3ItJmd0O3NkYXRhYCBtYXRjaGVkIGBsb2NhbC0mZ3Q7bW9uaXRvcl9zZGF0YWAsIGl0IHdvdWxkIGp1bXAgdG8gYGNoZWNrX21vbml0b3JgLiBXaXRoaW4gYGNoZWNrX21vbml0b3JgLCBpdCB3b3VsZCB0aGVuIHZlcmlmeSBpZiBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZGV0YWlsLCBgc2RhdGEtJmd0O3ZpZi5ic3NfY29uZi5jaGFuY3R4X2NvbmZgLCBtYXRjaGVkIGEgc3BlY2lmaWMgY29udGV4dCwgYCZhbXA7Y3R4LSZndDtjb25mYC4gT25seSBpZiAqdGhhdCogY29uZGl0aW9uIHdhcyBhbHNvIHRydWUgd291bGQgaXQgdXBkYXRlIHRoZSBiYW5kd2lkdGggKGBtYXhfYndgKS4KClRoZSBuZXcgY29kZSwgaG93ZXZlciwgdGhyb3dzIHRoYXQgc2Vjb25kIGNoZWNrIG91dCB0aGUgd2luZG93ISBOb3csIGlmIHRoZSB0d28gYHNkYXRhYCBwb2ludGVycyBtYXRjaCwgaXQgKmFsd2F5cyogcmV0dXJucyBgbWF4KG1heF9idywgY3R4LSZndDtjb25mLmRlZi53aWR0aClgLiBJdCBjb21wbGV0ZWx5IGJ5cGFzc2VzIHRoZSBjb250ZXh0IGNoZWNrIHRoYXQgd2FzIHByZXZpb3VzbHkgaW4gcGxhY2UuIFRoYXQgaXMgYSBzaWduaWZpY2FudCBiZWhhdmlvciBhbHRlcmF0aW9uIGFuZCBkZWZpbml0ZWx5IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2suIEkmIzM5O2QgY29uc2lkZXIgdGhpcyBhIGhpZ2gtcHJpb3JpdHkgYXJlYSBmb3IgZnV6emluZy4KCkdpdmVuIHRoYXQgdGhlIHRhcmdldCBmdW5jdGlvbiwgYGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndgLCBpcyBzdGF0aWMsIEkgbmVlZCB0byBmb2N1cyBvbiBpdHMgY2FsbGVycy4gTGV0JiMzOTtzIHNlZS4uLiBgX19pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZmAgYW5kIGBfaWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWZgIHNlZW0gbGlrZSB0aGUgbGlrZWx5IGNhbmRpZGF0ZXMsIGJ1dCwgaG9sZCBvbiBhIHNlY29uZC4uLml0IGxvb2tzIGxpa2UgYF9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWZgIGlzIGFsc28gc3RhdGljISBBbHJpZ2h0LCBpdCYjMzk7cyB0aW1lIHRvIGV4YW1pbmUgdGhlIGV4cG9ydCBtYXAgdG8gaWRlbnRpZnkgd2hpY2ggZnVuY3Rpb25zIGFyZSBhdCBhIGhpZ2hlciBsZXZlbCwgcG90ZW50aWFsbHkgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgbW9kaWZpZWQgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDE6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2NoYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2hhbi5jPTYzNT1zdGF0aWMgdTMyXG5uZXQvbWFjODAyMTEvY2hhbi5jOjYzNjpfX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjExL2NoYW4uYy02MzctXHRcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHggKmN0eCxcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTc0OD1zdGF0aWMgdm9pZFxubmV0L21hYzgwMjExL2NoYW4uYzo3NDk6X2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjExL2NoYW4uYy03NTAtXHRcdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4LFxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtNzU5LVxubmV0L21hYzgwMjExL2NoYW4uYzo3NjA6XHRjaGFuZ2VkID0gX19pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZihsb2NhbCwgY3R4LCByc3ZkX2Zvcixcbm5ldC9tYWM4MDIxMS9jaGFuLmMtNzYxLVx0XHRcdFx0XHRcdCAgICAgY2hlY2tfcmVzZXJ2ZWQpO1xuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM9NzczPXZvaWQgaWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYy03NzUte1xubmV0L21hYzgwMjExL2NoYW4uYzo3NzY6XHRfaWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYobG9jYWwsIGN0eCwgTlVMTCwgZmFsc2UpO1xubmV0L21hYzgwMjExL2NoYW4uYy03NzctfVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM9ODExPXN0YXRpYyB2b2lkIF9pZWVlODAyMTFfY2hhbmdlX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYy04NTQtXHRpZiAoaWVlZTgwMjExX2NoYW5yZXFfaWRlbnRpY2FsKFx1MDAyNmN0eF9yZXEsIGNoYW5yZXEpKSB7XG5uZXQvbWFjODAyMTEvY2hhbi5jOjg1NTpcdFx0X2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmKGxvY2FsLCBjdHgsIHJzdmRfZm9yLCBmYWxzZSk7XG5uZXQvbWFjODAyMTEvY2hhbi5jLTg1Ni1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtODgwLVx0LyogY2hlY2sgaWYgbWluIGNoYW5jdHggYWxzbyBjaGFuZ2VkICovXG5uZXQvbWFjODAyMTEvY2hhbi5jOjg4MTpcdGNoYW5nZWQgfD0gX19pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZihsb2NhbCwgY3R4LCByc3ZkX2Zvcixcbm5ldC9tYWM4MDIxMS9jaGFuLmMtODgyLVx0XHRcdFx0XHRcdCAgICAgIGZhbHNlKTtcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTk5OT1pZWVlODAyMTFfYWxsb2NfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTEwMTktXHRjdHgtXHUwMDNlcmFkYXJfZGV0ZWN0ZWQgPSBmYWxzZTtcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MTAyMDpcdF9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYobG9jYWwsIGN0eCwgTlVMTCwgZmFsc2UpO1xubmV0L21hYzgwMjExL2NoYW4uYy0xMDIxLVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM9MTE4MT1zdGF0aWMgaW50IGllZWU4MDIxMV9hc3NpZ25fbGlua19jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTIwNi1cdFx0LyogcmVjYWxjIGNvbnNpZGVyaW5nIHRoZSBsaW5rIHdlJiMzOTtsbCB1c2UgaXQgZm9yIG5vdyAqL1xubmV0L21hYzgwMjExL2NoYW4uYzoxMjA3Olx0XHRfaWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYobG9jYWwsIG5ld19jdHgsIGxpbmssIGZhbHNlKTtcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTIwOC1cbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTE4ODU9c3RhdGljIGludCBpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2goc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYy0yMDAxLVxubmV0L21hYzgwMjExL2NoYW4uYzoyMDAyOlx0XHRfaWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYobG9jYWwsIGN0eCwgTlVMTCwgdHJ1ZSk7XG5uZXQvbWFjODAyMTEvY2hhbi5jLTIwMDMtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTcyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBDaGFubmVsIENvbnRleHQgUmVjYWxjdWxhdGlvbiBpbiBtYWM4MDIxMSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IGNoYW5uZWwgY29udGV4dCBtaW5pbXVtIGRlZmF1bHRzIGFyZSByZWNhbGN1bGF0ZWQgaW4gYG1hYzgwMjExYC4gSSBzZWUgdGhhdCB0aGUgZnVuY3Rpb24gYGllZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmYCBpcyBlaXRoZXIgZXhwb3J0ZWQgb3IsIGF0IHRoZSB2ZXJ5IGxlYXN0LCBpc24mIzM5O3Qgc3RhdGljLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY2hlY2sgaG93IGl0JiMzOTtzIHVzZWQg4oCTIGxldCYjMzk7cyBzZWUgd2hlcmUgYGllZWU4MDIxMV9jaGFuZ2VfY2hhbmN0eGAsIGBpZWVlODAyMTFfYWxsb2NfY2hhbmN0eGAsIGFuZCBgaWVlZTgwMjExX2Fzc2lnbl9saW5rX2NoYW5jdHhgIGNhbGwgaXQuIEkgY291bGQgYWxzbyB1c2UgdGhlc2Ugb3RoZXIgZnVuY3Rpb25zIGFzIEZvY3VzU3ltYm9scyB0b28uCgpIbW0sIGludGVyZXN0aW5nLCBgaWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9id2AgaXMgc3RhdGljLCBidXQgaXQmIzM5O3MgdGhlIG9uZSB0aGF0JiMzOTtzIGFjdHVhbGx5IGJlaW5nIG1vZGlmaWVkLiBDYW4gSSBzdGlsbCB1c2UgaXQgZm9yIG15IGFuYWx5c2lzPyBZZXMsIEkgY2FuIHVzZSBzdGF0aWMgZnVuY3Rpb25zIGluIEZvY3VzU3ltYm9scywgYnV0IGl0JiMzOTtzIG9mdGVuIGJldHRlciB0byBnbyB3aXRoIHNsaWdodGx5IGhpZ2hlci1sZXZlbCBvbmVzIGlmIHRoZXkgZXhpc3QuIEdpdmVuIHRoaXMsIEkmIzM5O20gZ29pbmcgdG8gaW5jbHVkZSBib3RoIGBpZWVlODAyMTFfZ2V0X2NoYW5jdHhfbWF4X3JlcXVpcmVkX2J3YCBhbmQgYF9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWZgIGluIG15IGFuYWx5c2lzLgoKTm93LCBhIHF1aWNrIHNhbml0eSBjaGVjayBvZiB0aGUgY29uZmlndXJhdGlvbi4gSSBrbm93IGBNQUM4MDIxMWAgaXMgdGhlIG1haW4gY29uZmlnLCBhbmQgYE1BQzgwMjExX0hXU0lNYCBpcyBoYW5keSBmb3IgZnV6emluZy4gSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxldmFudCBjb25maWdzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBMZXQgbWUgdGFrZSBhIGxvb2sgYXQgdGhlIGBuZXQvbWFjODAyMTEvTWFrZWZpbGVgIHRvIHNlZSBpZiB0aGUgYGNoYW4uY2AgZmlsZSBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkIGJhc2VkIG9uIGFueSBvdGhlciBjb25maWcgb3B0aW9ucy4gSnVzdCB3YW50IHRvIG1ha2Ugc3VyZSBJJiMzOTttIGNvbnNpZGVyaW5nIGFsbCByZWxldmFudCBzY2VuYXJpb3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NoYW4ubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvTWFrZWZpbGU9NT1tYWM4MDIxMS15IDo9IFxcXG4tLVxubmV0L21hYzgwMjExL01ha2VmaWxlLTMyLVx0d21lLm8gXFxcbm5ldC9tYWM4MDIxMS9NYWtlZmlsZTozMzpcdGNoYW4ubyBhcC5vIFxcXG5uZXQvbWFjODAyMTEvTWFrZWZpbGUtMzQtXHR0cmFjZS5vIG1sbWUubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjgzNgoJCQkJCQkJb3V0cHV0OiAxNDYKCQkJCQkJCXRob3VnaHRzOiAyNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2ggaW4gdGhlIE1hYzgwMjExIFN1YnN5c3RlbSoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgdGllZCBpbnRvIGBtYWM4MDIxMS15YCwgbWVhbmluZyBpdCYjMzk7cyBhbHdheXMgaW5jbHVkZWQgd2hlbiBgTUFDODAyMTFgIGlzIGVuYWJsZWQuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LiBMZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgaW1wbGljYXRpb25zIGFuZCBidWlsZCBhIG1lbnRhbCBtYXAuCgpNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoIGlzIGBXb3J0aEZ1enppbmc6IHRydWVgLiBXaHk/IEJlY2F1c2UgaXQmIzM5O3MgZnVuZGFtZW50YWxseSBhbHRlcmluZyBob3cgdGhlIHN5c3RlbSBjYWxjdWxhdGVzIHRoZSBtYXhpbXVtIGNoYW5uZWwgYmFuZHdpZHRoIHJlcXVpcmVkLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBtYWM4MDIxMWAuIEl0IGNoYW5nZXMgdGhlIHJ1bGVzIGZvciB3aGVuIHRoZSBtb25pdG9yIGludGVyZmFjZSYjMzk7cyBiYW5kd2lkdGggY29uZmlndXJhdGlvbiBnZXRzIHVzZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIHNoaWZ0IGluIHRoZSBjb3JlIDgwMi4xMSBzdGFjayDigJMgd2hpY2ggbWVhbnMgdGhlcmUmIzM5O3MgYSBnb29kIGNoYW5jZSB0byBleHBvc2Ugc3VidGxlIGVkZ2UgY2FzZXMgZHVyaW5nIGZ1enppbmcuCgpNeSBwcmltYXJ5IGZvY3VzIG5lZWRzIHRvIGJlIG9uIHRoZXNlIHN5bWJvbHM6IGBpZWVlODAyMTFfZ2V0X2NoYW5jdHhfbWF4X3JlcXVpcmVkX2J3YCBhbmQgYF9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWZgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgY2hhbmdlIHJlc2lkZXMuIFRoZXNlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyBJIG5lZWQgdG8gdGFyZ2V0LgoKQW5kIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGZ1enppbmcgaXMgYXBwcm9wcmlhdGVseSBjb25maWd1cmVkLiBUaGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZDogYE1BQzgwMjExYCwgb2J2aW91c2x5LCBhbmQgYWxzbyBgTUFDODAyMTFfSFdTSU1gLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYE1BQzgwMjExX0hXU0lNYCBpcyAqZXhhY3RseSogdGhlIG5hbWUgdXNlZCBpbiB0aGUga2VybmVsIGNvbmZpZyBmaWxlcy4gTGV0IG1lIHF1aWNrbHkgY2hlY2vigKYgWWVwLCBgY29uZmlnIE1BQzgwMjExX0hXU0lNYCBpcyBkZWZpbmVkIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWdgLCBhbmQgYE1BQzgwMjExYCBpcyBpbiBgbmV0L21hYzgwMjExL0tjb25maWdgLiBFeGNlbGxlbnQuCgpOb3csIEkmIzM5O20gcmVhZHkgdG8gY2FsbCBzZXQtcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDE6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9idyYjMzQ7LAogICAgJiMzNDtfX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgZGV0ZXJtaW5pbmcgdGhlIG1heGltdW0gcmVxdWlyZWQgY2hhbm5lbCBiYW5kd2lkdGggaW4gbWFjODAyMTEuIEl0IGNoYW5nZXMgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhlIG1vbml0b3IgaW50ZXJmYWNlJiMzOTtzIGNvbmZpZ3VyZWQgYmFuZHdpZHRoIGlzIHVzZWQsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgODAyLjExIHN0YWNrLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYncmIzM0OywKICAgICYjMzQ7X19pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGRldGVybWluaW5nIHRoZSBtYXhpbXVtIHJlcXVpcmVkIGNoYW5uZWwgYmFuZHdpZHRoIGluIG1hYzgwMjExLiBJdCBjaGFuZ2VzIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZSBtb25pdG9yIGludGVyZmFjZSYjMzk7cyBjb25maWd1cmVkIGJhbmR3aWR0aCBpcyB1c2VkLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIDgwMi4xMSBzdGFjay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjE0OjUzLjk2NTU2NzM2OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNTE4MDY4MDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndcIixcbiAgICBcIl9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGRldGVybWluaW5nIHRoZSBtYXhpbXVtIHJlcXVpcmVkIGNoYW5uZWwgYmFuZHdpZHRoIGluIG1hYzgwMjExLiBJdCBjaGFuZ2VzIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZSBtb25pdG9yIGludGVyZmFjZSdzIGNvbmZpZ3VyZWQgYmFuZHdpZHRoIGlzIHVzZWQsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgODAyLjExIHN0YWNrLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMToxNDo1My45NjU1NzUyNDlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyODkzNjEzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGFjMmQxZDA2MjUxMTM0YmI4MTkzMDcwMjVmZGQ1ZmNiNGE5ZGEwZTFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMTYgMDE6MTQ6NTIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2NoYW4uYyBiL25ldC9tYWM4MDIxMS9jaGFuLmNcXG5pbmRleCA1MTUyYjg0YTMzNTc3OS4uNzViYjIwNGFkNzQzMmMgMTAwNjQ0XFxuLS0tIGEvbmV0L21hYzgwMjExL2NoYW4uY1xcbisrKyBiL25ldC9tYWM4MDIxMS9jaGFuLmNcXG5AQCAtNjA3LDEwICs2MDcsMTIgQEAgaWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9idyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4gXFx0XFx0bWF4X2J3ID0gbWF4KG1heF9idywgd2lkdGgpO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoIXJzdmRfZm9yIHx8XFxuLVxcdCAgICByc3ZkX2Zvci1cXHUwMDNlc2RhdGEgPT0gcmN1X2FjY2Vzc19wb2ludGVyKGxvY2FsLVxcdTAwM2Vtb25pdG9yX3NkYXRhKSlcXG4rXFx0aWYgKCFyc3ZkX2ZvcilcXG4gXFx0XFx0Z290byBjaGVja19tb25pdG9yO1xcbiBcXG4rXFx0aWYgKHJzdmRfZm9yLVxcdTAwM2VzZGF0YSA9PSByY3VfYWNjZXNzX3BvaW50ZXIobG9jYWwtXFx1MDAzZW1vbml0b3Jfc2RhdGEpKVxcbitcXHRcXHRyZXR1cm4gbWF4KG1heF9idywgY3R4LVxcdTAwM2Vjb25mLmRlZi53aWR0aCk7XFxuK1xcbiBcXHQvKiBDb25zaWRlciB0aGUgbGluayBmb3Igd2hpY2ggdGhpcyBjaGFuY3R4IGlzIHJlc2VydmVkL2dvaW5nIHRvIGJlIGFzc2lnbmVkICovXFxuIFxcdHdpZHRoID0gaWVlZTgwMjExX2dldF93aWR0aF9vZl9saW5rKHJzdmRfZm9yKTtcXG4gXFx0bWF4X2J3ID0gbWF4KG1heF9idywgd2lkdGgpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMToxNDo1NC41OTU0NjU5MzNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5ODg4MTU2ODk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndcIixcbiAgICBcIl9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGRldGVybWluaW5nIHRoZSBtYXhpbXVtIHJlcXVpcmVkIGNoYW5uZWwgYmFuZHdpZHRoIGluIG1hYzgwMjExLiBJdCBjaGFuZ2VzIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZSBtb25pdG9yIGludGVyZmFjZSdzIGNvbmZpZ3VyZWQgYmFuZHdpZHRoIGlzIHVzZWQsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgODAyLjExIHN0YWNrLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGFjMmQxZDA2MjUxMTM0YmI4MTkzMDcwMjVmZGQ1ZmNiNGE5ZGEwZTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAxNiAwMToxNDo1MiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9jaGFuLmMgYi9uZXQvbWFjODAyMTEvY2hhbi5jXG5pbmRleCA1MTUyYjg0YTMzNTc3OS4uNzViYjIwNGFkNzQzMmMgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvY2hhbi5jXG4rKysgYi9uZXQvbWFjODAyMTEvY2hhbi5jXG5AQCAtNjA3LDEwICs2MDcsMTIgQEAgaWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9idyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0bWF4X2J3ID0gbWF4KG1heF9idywgd2lkdGgpO1xuIFx0fVxuIFxuLVx0aWYgKCFyc3ZkX2ZvciB8fFxuLVx0ICAgIHJzdmRfZm9yLVx1MDAzZXNkYXRhID09IHJjdV9hY2Nlc3NfcG9pbnRlcihsb2NhbC1cdTAwM2Vtb25pdG9yX3NkYXRhKSlcbitcdGlmICghcnN2ZF9mb3IpXG4gXHRcdGdvdG8gY2hlY2tfbW9uaXRvcjtcbiBcbitcdGlmIChyc3ZkX2Zvci1cdTAwM2VzZGF0YSA9PSByY3VfYWNjZXNzX3BvaW50ZXIobG9jYWwtXHUwMDNlbW9uaXRvcl9zZGF0YSkpXG4rXHRcdHJldHVybiBtYXgobWF4X2J3LCBjdHgtXHUwMDNlY29uZi5kZWYud2lkdGgpO1xuK1xuIFx0LyogQ29uc2lkZXIgdGhlIGxpbmsgZm9yIHdoaWNoIHRoaXMgY2hhbmN0eCBpcyByZXNlcnZlZC9nb2luZyB0byBiZSBhc3NpZ25lZCAqL1xuIFx0d2lkdGggPSBpZWVlODAyMTFfZ2V0X3dpZHRoX29mX2xpbmsocnN2ZF9mb3IpO1xuIFx0bWF4X2J3ID0gbWF4KG1heF9idywgd2lkdGgpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDE6MTQ6NTQuNTk1NDY4MDAzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUwNTc0OTMwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCBpbiBgbmV0L21hYzgwMjExL2NoYW4uY2AqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBgbmV0L21hYzgwMjExL2NoYW4uY2AsIHNwZWNpZmljYWxseSB0aGUgYGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgY2hhbmdlIGRvZXMsIHNvIEknbGwgcmV2aWV3IHRoZSBkaWZmLiBMZXQncyBzZWUuLi4gaXQgbG9va3MgbGlrZSB0aGV5J3ZlIGFkZGVkIGEgY29uZGl0aW9uYWwgYmxvY2sgYXJvdW5kIHRoZSBcInJlc2VydmVkIGZvclwiIGxvZ2ljLiBQcmV2aW91c2x5LCB0aGUgbG9naWMgYXBwZWFyZWQgdG8gb25seSBjb25zaWRlciB0aGUgbW9uaXRvciBpbnRlcmZhY2UgaWYgYHJzdmRfZm9yYCB3YXMgbnVsbC4gTm93LCB0aGVyZSdzIGFuIGV4cGxpY2l0IGNoZWNrICp3aXRoaW4qIHRoYXQgYmxvY2sgdG8gc2VlIGlmIGByc3ZkX2ZvcmAgcG9pbnRzIHRvIHRoZSBtb25pdG9yJ3Mgc3RhdGlvbiBkYXRhIChgc2RhdGFgKS5cblxuVGhlIG9yaWdpbmFsIGNvZGUgY29tcGFyZWQgdGhlIGBzZGF0YWAgcG9pbnRlciBkaXJlY3RseSwgYnV0IG5vdyBpZiB0aGUgcmVzZXJ2ZWQgY2hhbm5lbCBpcyB0aGUgbW9uaXRvciBpbnRlcmZhY2UsIGl0IHJldHVybnMgdGhlICpkZWZhdWx0KiB3aWR0aC4gT3RoZXJ3aXNlLCBpdCBwcm9jZWVkcyBhcyBiZWZvcmUgYW5kIGNvbnNpZGVycyB0aGUgbGluayB0aGF0IHRoZSBjaGFubmVsIGNvbnRleHQgaXMgcmVzZXJ2ZWQgZm9yIHdoZW4gY2FsY3VsYXRpbmcgdGhlIG1heGltdW0gYmFuZHdpZHRoLiBUaGlzIGFwcGVhcnMgdG8gYmUgYSBidWcgZml4LCBhbmQgdGhlIGNvbW1pdCBtZXNzYWdlIHdpbGwgYmUgdGVsbGluZy4gSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgd2lkZXIgY29udGV4dCBvZiB0aGlzIGNoYW5nZSB3aXRoaW4gYG5ldC9tYWM4MDIxMWAgYW5kIGVuc3VyZSB0aGVyZSBhcmUgbm8gdW5pbnRlbmRlZCBjb25zZXF1ZW5jZXMuIFRoZSBjaGFuZ2UgbG9va3MgY29ycmVjdCBpbiBpc29sYXRpb24sIHRob3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk2MiwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjE1OjAwLjEwMTIxOTQzN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDA1MTg2NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9id1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvY2hhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jaGFuLmM9NTgxPXN0YXRpYyBlbnVtIG5sODAyMTFfY2hhbl93aWR0aFxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6NTgyOmllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYncoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL2NoYW4uYy01ODMtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFuY3R4ICpjdHgsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTYzNj1fX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy02NTYtXFxubmV0L21hYzgwMjExL2NoYW4uYzo2NTc6XFx0bWF4X2J3ID0gaWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9idyhsb2NhbCwgY3R4LCByc3ZkX2ZvcixcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTY1OC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgY2hlY2tfcmVzZXJ2ZWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMToxNTowMC4zNDE3NDMzODZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDk2MDg5NDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIENoYW5uZWwgQ29udGV4dCBCYW5kd2lkdGggUmVxdWlyZW1lbnRzKipcblxuQWxyaWdodCwgSSdtIHRyYWNpbmcgZG93biB0aGlzIGJhbmR3aWR0aCBjYWxjdWxhdGlvbiBsb2dpYy4gVGhlIGBpZWVlODAyMTFfZ2V0X2NoYW5jdHhfbWF4X3JlcXVpcmVkX2J3YCBmdW5jdGlvbiBpcyB0aGUga2V5IG9uZSBoZXJlIOKAkyBJIGtub3cgdGhhdCBpdCBmaWd1cmVzIG91dCB0aGUgbWF4aW11bSBiYW5kd2lkdGggYSBjaGFubmVsIGNvbnRleHQgKm5lZWRzKi4gTm93LCBJJ20gemVyb2luZyBpbiBvbiB3aGVyZSB0aGF0IGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGdldHRpbmcgaW52b2tlZC4gVGhlIGNhbGwgdG8gYGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndgIG9yaWdpbmF0ZXMgZnJvbSB0aGUgYF9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWZgIGZ1bmN0aW9uLiBTbywgbmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwtc2l0ZXMgb2YgYF9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWZgIOKAkyBpdCdzIHRoZSBjcml0aWNhbCBsaW5rIGluIHVuZGVyc3RhbmRpbmcgd2hlbiBhbmQgd2h5IHdlIHJlLWV2YWx1YXRlIHRoZXNlIGNoYW5uZWwgY29udGV4dCBiYW5kd2lkdGggcGFyYW1ldGVycy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0cmlnZ2VycyB0aGUgcmVjYWxjdWxhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk2NCwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjE1OjAzLjQzNzgzNTM0M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjUzMzA2MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvY2hhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jaGFuLmM9NjM1PXN0YXRpYyB1MzJcXG5uZXQvbWFjODAyMTEvY2hhbi5jOjYzNjpfX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtNjM3LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4LFxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYz03NDk9X2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy03NTktXFxubmV0L21hYzgwMjExL2NoYW4uYzo3NjA6XFx0Y2hhbmdlZCA9IF9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYobG9jYWwsIGN0eCwgcnN2ZF9mb3IsXFxubmV0L21hYzgwMjExL2NoYW4uYy03NjEtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBjaGVja19yZXNlcnZlZCk7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTgxMT1zdGF0aWMgdm9pZCBfaWVlZTgwMjExX2NoYW5nZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy04ODAtXFx0LyogY2hlY2sgaWYgbWluIGNoYW5jdHggYWxzbyBjaGFuZ2VkICovXFxubmV0L21hYzgwMjExL2NoYW4uYzo4ODE6XFx0Y2hhbmdlZCB8PSBfX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmKGxvY2FsLCBjdHgsIHJzdmRfZm9yLFxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtODgyLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGZhbHNlKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM9OTk5PWllZWU4MDIxMV9hbGxvY19jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy0xMDE5LVxcdGN0eC1cXHUwMDNlcmFkYXJfZGV0ZWN0ZWQgPSBmYWxzZTtcXG5uZXQvbWFjODAyMTEvY2hhbi5jOjEwMjA6XFx0X19pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZihsb2NhbCwgY3R4LCBOVUxMLCBmYWxzZSk7XFxubmV0L21hYzgwMjExL2NoYW4uYy0xMDIxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMToxNTowMy41NjMxNzE0ODJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTc5NzY2NjUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIG1hYzgwMjExIENoYW5uZWwgQ29udGV4dCoqXG5cbk9rYXksIHNvIHdlJ3JlIHRhbGtpbmcgYWJvdXQgbWFjODAyMTEgY2hhbm5lbCBjb250ZXh0IG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseS4gSSBuZWVkIHRvIGdldCBteSBoZWFkIGFyb3VuZCB0aGlzIHBhcnRpY3VsYXIgYXNwZWN0LiBNeSBwcmltYXJ5IGZvY3VzIHJpZ2h0IG5vdyBpcyB0byBsb2NhdGUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZGV0YWlscyBmb3IgbWFjODAyMTEuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIEknbGwgbmVlZCB0byBnbyBodW50aW5nIGZvciB0aGUgY29uZmlnIHRoYXQgZ292ZXJucyBob3cgdGhlc2UgY2hhbm5lbCBjb250ZXh0cyBhcmUgaGFuZGxlZC4gVGltZSB0byBkaWcgaW4gYW5kIGZpbmQgdGhvc2UgcGFyYW1ldGVycy4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjozODU4LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDE6MTU6MDYuMTQyOTQwMzY0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NzE5NTQ4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDODAyMTFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cXHRib29sXFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiIGlmIEVYUEVSVFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQyLVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXFxubmV0L21hYzgwMjExL0tjb25maWctNDktXFxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cXHRzdHJpbmdcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXFxcIlNvbWUgd2lyZWxlc3MgZHJpdmVycyByZXF1aXJlIGEgcmF0ZSBjb250cm9sIGFsZ29yaXRobVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTU5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBtYWM4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNjktXFxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03MS1cXHRib29sIFxcXCJFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3OTpjb25maWcgTUFDODAyMTFfTEVEU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVxcdGJvb2wgXFxcIkVuYWJsZSBMRUQgdHJpZ2dlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkV4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05OC1cXHRib29sIFxcXCJUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXFxubmV0L21hYzgwMjExL0tjb25maWc6MTEwOm1lbnVjb25maWcgTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cXHRib29sIFxcXCJTZWxlY3QgbWFjODAyMTEgZGVidWdnaW5nIGZlYXR1cmVzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTE1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXFx0Ym9vbCBcXFwiRG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE0Mzpjb25maWcgTUFDODAyMTFfTUxNRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cXHRib29sIFxcXCJWZXJib3NlIG1hbmFnZWQgTUxNRSBvdXRwdXRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXFx0Ym9vbCBcXFwiVmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTY0LVxcdGJvb2wgXFxcIlZlcmJvc2UgSFQgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3NTpjb25maWcgTUFDODAyMTFfT0NCX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTc2LVxcdGJvb2wgXFxcIlZlcmJvc2UgT0NCIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4NS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXFx0Ym9vbCBcXFwiVmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTk4LVxcdGJvb2wgXFxcIlZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIwOTpjb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjEwLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwZWVyIGxpbmsgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjIxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ4OmNvbmZpZyBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHN5bmNocm9uaXphdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3MS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyODE6Y29uZmlnIE1BQzgwMjExX1RETFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXFx0Ym9vbCBcXFwiVmVyYm9zZSBURExTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXFxubmV0L21hYzgwMjExL0tjb25maWctMjk0LVxcdGJvb2wgXFxcIkV4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXFxubmV0L21hYzgwMjExL0tjb25maWctMzA5LVxcdGludCBcXFwiU3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVxcXCIgaWYgTUFDODAyMTFfREVCVUdfTUVOVVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMToxNTowNi4zMDAxNDEzMDFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDM1OTY1OTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNQUM4MDIxMSBDaGFubmVsIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29yZSBjb25maWcgaGVyZSBpcyBkZWZpbml0ZWx5IGBNQUM4MDIxMWAuIFRoYXQgcG9pbnRzIHVzIGRpcmVjdGx5IHRvIHRoZSB3aXJlbGVzcyBuZXR3b3JraW5nIHN0YWNrLiBUaGUgdGhpbmcgdGhhdCdzIGltbWVkaWF0ZWx5IGdyYWJiaW5nIG15IGF0dGVudGlvbiBpcyBgaWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9id2AuIFRoaXMgZnVuY3Rpb24ncyBwcmVzZW5jZSBpbiB0aGUgZGlzY3Vzc2lvbiBtZWFucyBpdCdzIGxpa2VseSBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBjaGFubmVsIGNvbnRleHQgbWFuYWdlbWVudCBwdXp6bGUsIGFuZCBpdOKAmXMgZXhwb3NlZCB0aHJvdWdoIG5ldGxpbmsgY29tbWFuZHMuIFRoYXQncyBrZXkuIE5ldGxpbmsgbWVhbnMgd2UncmUgZGVhbGluZyB3aXRoIHRoZSB1c2Vyc3BhY2Uta2VybmVsIGludGVyZmFjZSBmb3IgY29uZmlndXJpbmcgdGhpbmdzIGxpa2UgaW50ZXJmYWNlcywgY2hhbm5lbHMsIGFuZCBvdGhlciBwYXJhbWV0ZXJzIHRoYXQgYXJlIHZpc2libGUgdG8gaGlnaGVyIGxldmVsIG5ldHdvcmtpbmcgdG9vbHMuXG5cbkdpdmVuIHRoYXQgaXQncyBkZWFsaW5nIHdpdGggYmFuZHdpZHRoLCBhbmQgaXQncyByZWFjaGFibGUgdGhyb3VnaCBuZXRsaW5rLCBpdCdzIHByZXR0eSBjbGVhciBpdCdzIHByb2JhYmx5IGludm9sdmVkIGluIHNldHRpbmcgb3IgcXVlcnlpbmcgdGhlIG1heGltdW0gYmFuZHdpZHRoIHJlcXVpcmVtZW50IGJhc2VkIG9uIHRoZSBjaGFubmVsIGNvbnRleHQuIEkgbmVlZCB0byBkaWcgaW50byBgbmV0L21hYzgwMjExL2NoYW4uY2AuIFRoZSBrZXJuZWwgaXMgb2Z0ZW4gb3JnYW5pemVkIGluIGEgdmVyeSBzdHJ1Y3R1cmVkIHdheSwgc28gSSdsbCBzdGFydCB0aGVyZSwgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3Mgb3IgY29uZGl0aW9ucyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjIzNSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjE1OjA5LjczNjEwOTczN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3MTU5Mjk2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9jaGFuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjE1OjA5LjkwMzI4NTIzMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDI2MzE2NDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBtYWM4MDIxMSBDaGFubmVsIENvbnRleHQgTWFuYWdlbWVudCoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgbmV0L21hYzgwMjExL2NoYW4uY2AgZmlsZSwgYW5kIEknbSBub3Qgc2VlaW5nIGFueSAqc3BlY2lmaWMqIGNvbmZpZyBvcHRpb25zIHJpZ2h0IG9mZiB0aGUgYmF0LiBUaGUgZnVuY3Rpb24gYGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndgIGlzLCBvZiBjb3Vyc2UsIHN0YXRpYy4gVGhhdOKAmXMgbm90IHVudXN1YWwuIExldCdzIHRyYWNlIHdoZXJlIGl0J3MgYmVpbmcgdXNlZC4gUmlnaHQsIGl0J3MgY2FsbGVkIGZyb20gYF9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWZgLiBUaGF0IG1ha2VzIHNlbnNlIGluIHRoZSBjb250ZXh0IG9mIHJlY2FsY3VsYXRpbmcgY2hhbm5lbCBjb250ZXh0IGRlZmluaXRpb25zLiBOb3csIGBfX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmYCBpdHNlbGYgZ2V0cyBjYWxsZWQgZnJvbSBhIGZldyBwbGFjZXM6IGBfaWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWZgLCBgX2llZWU4MDIxMV9jaGFuZ2VfY2hhbmN0eGAsIGFuZCBgaWVlZTgwMjExX2FsbG9jX2NoYW5jdHhgLiBCaW5nby4gVGhvc2UgYXJlIGFsbCBzcXVhcmVseSBpbiB0aGUgcmVhbG0gb2YgYG1hYzgwMjExYCdzIGNoYW5uZWwgY29udGV4dCBtYW5hZ2VtZW50LiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoZSBwYXRoIHRvIGFueSB2dWxuZXJhYmlsaXR5IG9yIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jZSBpcyB0aHJvdWdoIGNoYW5uZWwgY29udGV4dCBhbGxvY2F0aW9uIGFuZCBtYW5pcHVsYXRpb24uXG5cblRoaW5raW5nIGFib3V0IGhvdyB0aGlzIGdldHMgZXhlcmNpc2VkLCBJIGltbWVkaWF0ZWx5IHRoaW5rIG9mIGBtYWM4MDIxMV9od3NpbWAuIEl0J3MgbXkgZ28tdG8gZm9yIGZ1enppbmcgYG1hYzgwMjExYC4gU28sIGBNQUM4MDIxMWAgYW5kIGBNQUM4MDIxMV9IV1NJTWAgYXJlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gZm9jdXMgb24uIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2ssIGJ1dCBpdCBpcyBsaWtlbHkgYE1BQzgwMjExX0hXU0lNYCB3aWxsIGJlIHJlZmVyZW5jZWQgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hYzgwMjExX2h3c2ltLmNgIG9yIGEgc2ltaWxhciBmaWxlLiBUaGF0J3MgdGhlIGxpa2VseSBzb3VyY2Ugb2YgYW55IGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBob3cgdGhpcyBjaGFubmVsIGNvbnRleHQgbWFuYWdlbWVudCB3b3JrcyB3aXRoaW4gdGhlIHNpbXVsYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MTYsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDE6MTU6MTQuOTI5NjA0NDE5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjk1MjE1MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExX0hXU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjE1OjE1LjI1OTEzMjI1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzMzQ0MzIwNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIEJ1ZyBGaXggaW4gdGhlIE1BQzgwMjExIEhXU0lNIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgTUFDODAyMTFfSFdTSU1gLCB3aGljaCBJIGtub3cgaXMgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBzaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sLiBUaGUgZGVzY3JpcHRpb24gbWVudGlvbnMgYSBwb3RlbnRpYWwgTlVMTCBkZXJlZmVyZW5jZSBmb3IgYHJzdmRfZm9yYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gaW1tZWRpYXRlbHkgZGl2ZSBpbnRvIHRoZSBjb2RlLiBMZXQncyBzZWUuLi4gdGhlIG9yaWdpbmFsIGNvZGUgc25pcHBldCB3YXM6XG5cbmBgYGNcblx0aWYgKCFyc3ZkX2ZvciB8fFxuXHQgICAgcnN2ZF9mb3ItXHUwMDNlc2RhdGEgPT0gcmN1X2FjY2Vzc19wb2ludGVyKGxvY2FsLVx1MDAzZW1vbml0b3Jfc2RhdGEpKVxuXHRcdGdvdG8gY2hlY2tfbW9uaXRvcjtcbmBgYFxuXG5IbW0uLi4gV2FpdCBhIHNlY29uZC4gVGhlIGNoZWNrIGAhcnN2ZF9mb3JgIGNvbWVzICpmaXJzdCouIFRoYXQncyBhIHNob3J0LWNpcmN1aXQhIEl0ICpzaG91bGRuJ3QqIGRlcmVmZXJlbmNlIGByc3ZkX2ZvcmAgaWYgaXQncyBOVUxMLCBiZWNhdXNlIGlmIGByc3ZkX2ZvcmAgaXMgTlVMTCB0aGUgKmVudGlyZSogYGlmYCBjb25kaXRpb24gd291bGQgZXZhbHVhdGUgdG8gdHJ1ZSwgYW5kIGl0IHdvdWxkIGp1bXAgdG8gYGNoZWNrX21vbml0b3JgLiBUaGUgcGF0Y2ggbW9kaWZpZXMgdGhhdCBjb2RlIHRvIGJlOlxuXG5gYGBjXG5cdGlmICghcnN2ZF9mb3IpXG5cdFx0Z290byBjaGVja19tb25pdG9yO1xuXG5cdGlmIChyc3ZkX2Zvci1cdTAwM2VzZGF0YSA9PSByY3VfYWNjZXNzX3BvaW50ZXIobG9jYWwtXHUwMDNlbW9uaXRvcl9zZGF0YSkpXG5cdFx0cmV0dXJuIG1heChtYXhfYncsIGN0eC1cdTAwM2Vjb25mLmRlZi53aWR0aCk7XG5gYGBcblxuQWghIE5vdyBJIHNlZS4gVGhlIG9yaWdpbmFsIGNvZGUncyBgY2hlY2tfbW9uaXRvcmAgbG9naWMgdHJpZ2dlcmVkIHdoZW4gdGhlIHNlY29uZCBwYXJ0IG9mIHRoZSBjb25kaXRpb24gYHJzdmRfZm9yLVx1MDAzZXNkYXRhID09IHJjdV9hY2Nlc3NfcG9pbnRlcihsb2NhbC1cdTAwM2Vtb25pdG9yX3NkYXRhKWAgd2FzIHRydWUuIFRoZSBuZXcgY29kZSBkb2VzICpub3QqIGp1bXAgdG8gYGNoZWNrX21vbml0b3JgIGluIHRoYXQgY2FzZSwgYnV0IHJldHVybnMgYG1heChtYXhfYncsIGN0eC1cdTAwM2Vjb25mLmRlZi53aWR0aClgIGluc3RlYWQuXG5cblNvIHRoaXMgaXMgYSAqZnVuY3Rpb25hbCogY2hhbmdlIGluIGxvZ2ljLCBhIHN1YnRsZSBzaGlmdCBpbiB0aGUgZGVjaXNpb24tbWFraW5nIHByb2Nlc3MuIFRoZSBmaXggZG9lc24ndCBzaW1wbHkgcmVtb3ZlIGEgTlVMTCBkZXJlZmVyZW5jZTsgaXQgY2hhbmdlcyB3aGF0IHRoZSBmdW5jdGlvbiBkb2VzIHVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgY2hlY2tfbW9uaXRvcmAgZG9lcyB0byBmdWxseSBncmFzcCB0aGUgaW1wbGljYXRpb24gb2YgdGhpcyBjaGFuZ2UuIExldCBtZSBxdWlja2x5IGV4YW1pbmUgYGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndgIHRvIHNlZSB0aGUgaW1wYWN0IG9mIHRoaXMgZnVuY3Rpb25hbCBkaWZmZXJlbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDA4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjE1OjIxLjU5MzU2NjU1MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI4MjQ3MzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoZWNrX21vbml0b3I6XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9jaGFuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2NoYW4uYz01ODI9aWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9idyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtNjE5LVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6NjIwOmNoZWNrX21vbml0b3I6XFxubmV0L21hYzgwMjExL2NoYW4uYy02MjEtXFx0LyogdXNlIHRoZSBjb25maWd1cmVkIGJhbmR3aWR0aCBpbiBjYXNlIG9mIG1vbml0b3IgaW50ZXJmYWNlICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjE1OjIxLjgyMTgxODg2MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzYzNzE3ODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGNvZGUgc25pcHBldCwgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyBhbiBleHBlcnQtbGV2ZWwgdW5kZXJzdGFuZGluZzpcblxuKipBbmFseXppbmcgYGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCB0aGUgaW1wbGVtZW50YXRpb24gZnJvbSBsaW5lcyA1ODIgdG8gNjMwLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBlc3RhYmxpc2ggdGhlIGNvbnRleHQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiBpcyAqc3VwcG9zZWQqIHRvIGRvIHdpdGhpbiB0aGUgbGFyZ2VyIDgwMi4xMSBmcmFtZXdvcmsuIEp1ZGdpbmcgZnJvbSB0aGUgbmFtZSwgaXQncyBsaWtlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZSBtYXhpbXVtIGJhbmR3aWR0aCByZXF1aXJlZCBieSBhIGNoYW5uZWwgY29udGV4dCwgcHJlc3VtYWJseSBmb3IgdGhpbmdzIGxpa2UgYWxsb2NhdGlvbiBvciBjYXBhYmlsaXR5IG5lZ290aWF0aW9uLlxuXG5JJ20gaW1tZWRpYXRlbHkgbG9va2luZyBmb3IgdGhlIGNyaXRpY2FsIHBhcnRzOiB0aGUgaW5wdXRzLCB0aGUgcHJvY2Vzc2luZyBsb2dpYywgYW5kIHRoZSBvdXRwdXRzLiBJJ2QgZXhwZWN0IGl0IHRha2VzIHRoZSBgY2hhbmN0eGAgKGNoYW5uZWwgY29udGV4dCkgYXMgYSBwcmltYXJ5IGFyZ3VtZW50LCBvYnZpb3VzbHkuIFRoZSBmdW5jdGlvbidzIGpvYiBpcyB0byBmaWd1cmUgb3V0IHRoZSBtYXhpbXVtIGJhbmR3aWR0aCBpdCBtaWdodCBuZWVkIHRvIHVzZS4gSSdkIGV4cGVjdCBpdCB0byBoYW5kbGUgZGlmZmVyZW50IHNjZW5hcmlvcyAtIDIwTUh6LCA0ME1IeiwgODBNSHosIGFuZCBwb3RlbnRpYWxseSBldmVuIDE2ME1IeiBvciB3aWRlciBjaGFubmVscyBkZXBlbmRpbmcgb24gdGhlIHN0YW5kYXJkLiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgYnJhbmNoaW5nIGJhc2VkIG9uIHRoaW5ncyBsaWtlIHRoZSBgY2hhbmN0eGAncyBjb25maWd1cmVkIGJhbmR3aWR0aCwgdGhlIHN0YW5kYXJkIHN1cHBvcnRlZCAoYS9iL2cvbi9hYy9heC4uLiksIGFuZCBwZXJoYXBzIGFueSByZWd1bGF0b3J5IGNvbnN0cmFpbnRzIG9yIGNhcGFiaWxpdGllcyBhZHZlcnRpc2VkIGJ5IHRoZSBhc3NvY2lhdGVkIHJhZGlvLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgdXNlIG9mIGFueSBoZWxwZXIgZnVuY3Rpb25zIG9yIG1hY3JvcyBpbnZvbHZlZCwgYXMgdGhhdCB3aWxsIGJlIHdoZXJlIHRoZSBkZXRhaWwgcmVzaWRlcy4gSSdtIGV4cGVjdGluZyBhIGNsZWFuLCBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gZ2l2ZW4gaXRzIGltcG9ydGFuY2UgaW4gdGhlIGRyaXZlci4gQSBwb29ybHkgb3B0aW1pemVkIGltcGxlbWVudGF0aW9uIGluIHNvbWV0aGluZyBmdW5kYW1lbnRhbCBsaWtlIHRoaXMgd2lsbCBpbXBhY3QgcGVyZm9ybWFuY2UgYWNyb3NzIHRoZSBib2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQxOCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjE1OjI1LjU4NTUzOTA2OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODU5NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL2NoYW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1ODIsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1ODI6XFx0aWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9idyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4gNTgzOlxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4LFxcbiA1ODQ6XFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKnJzdmRfZm9yLFxcbiA1ODU6XFx0XFx0XFx0XFx0XFx0ICAgICAgYm9vbCBjaGVja19yZXNlcnZlZClcXG4gNTg2OlxcdHtcXG4gNTg3OlxcdFxcdGVudW0gbmw4MDIxMV9jaGFuX3dpZHRoIG1heF9idyA9IE5MODAyMTFfQ0hBTl9XSURUSF8yMF9OT0hUO1xcbiA1ODg6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9jaGFuY3R4X3VzZXJfaXRlciBpdGVyO1xcbiA1ODk6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGE7XFxuIDU5MDpcXHRcXHRlbnVtIG5sODAyMTFfY2hhbl93aWR0aCB3aWR0aDtcXG4gNTkxOlxcdFxcbiA1OTI6XFx0XFx0aWYgKFdBUk5fT04oY2hlY2tfcmVzZXJ2ZWQgXFx1MDAyNlxcdTAwMjYgcnN2ZF9mb3IpKVxcbiA1OTM6XFx0XFx0XFx0cmV0dXJuIGN0eC1cXHUwMDNlY29uZi5kZWYud2lkdGg7XFxuIDU5NDpcXHRcXG4gNTk1OlxcdFxcdC8qIFdoZW4gdGhpcyBpcyB0cnVlIHdlIG9ubHkgY2FyZSBhYm91dCB0aGUgcmVzZXJ2aW5nIGxpbmtzICovXFxuIDU5NjpcXHRcXHRpZiAoY2hlY2tfcmVzZXJ2ZWQpIHtcXG4gNTk3OlxcdFxcdFxcdGZvcl9lYWNoX2NoYW5jdHhfdXNlcl9yZXNlcnZlZChsb2NhbCwgY3R4LCBcXHUwMDI2aXRlcikge1xcbiA1OTg6XFx0XFx0XFx0XFx0d2lkdGggPSBpZWVlODAyMTFfZ2V0X3dpZHRoX29mX2NoYW5jdHhfdXNlcihcXHUwMDI2aXRlcik7XFxuIDU5OTpcXHRcXHRcXHRcXHRtYXhfYncgPSBtYXgobWF4X2J3LCB3aWR0aCk7XFxuIDYwMDpcXHRcXHRcXHR9XFxuIDYwMTpcXHRcXHRcXHRnb3RvIGNoZWNrX21vbml0b3I7XFxuIDYwMjpcXHRcXHR9XFxuIDYwMzpcXHRcXG4gNjA0OlxcdFxcdC8qIENvbnNpZGVyIGFsbCBhc3NpZ25lZCBsaW5rcyAqL1xcbiA2MDU6XFx0XFx0Zm9yX2VhY2hfY2hhbmN0eF91c2VyX2Fzc2lnbmVkKGxvY2FsLCBjdHgsIFxcdTAwMjZpdGVyKSB7XFxuIDYwNjpcXHRcXHRcXHR3aWR0aCA9IGllZWU4MDIxMV9nZXRfd2lkdGhfb2ZfY2hhbmN0eF91c2VyKFxcdTAwMjZpdGVyKTtcXG4gNjA3OlxcdFxcdFxcdG1heF9idyA9IG1heChtYXhfYncsIHdpZHRoKTtcXG4gNjA4OlxcdFxcdH1cXG4gNjA5OlxcdFxcbiA2MTA6XFx0XFx0aWYgKCFyc3ZkX2ZvcilcXG4gNjExOlxcdFxcdFxcdGdvdG8gY2hlY2tfbW9uaXRvcjtcXG4gNjEyOlxcdFxcbiA2MTM6XFx0XFx0aWYgKHJzdmRfZm9yLVxcdTAwM2VzZGF0YSA9PSByY3VfYWNjZXNzX3BvaW50ZXIobG9jYWwtXFx1MDAzZW1vbml0b3Jfc2RhdGEpKVxcbiA2MTQ6XFx0XFx0XFx0cmV0dXJuIG1heChtYXhfYncsIGN0eC1cXHUwMDNlY29uZi5kZWYud2lkdGgpO1xcbiA2MTU6XFx0XFxuIDYxNjpcXHRcXHQvKiBDb25zaWRlciB0aGUgbGluayBmb3Igd2hpY2ggdGhpcyBjaGFuY3R4IGlzIHJlc2VydmVkL2dvaW5nIHRvIGJlIGFzc2lnbmVkICovXFxuIDYxNzpcXHRcXHR3aWR0aCA9IGllZWU4MDIxMV9nZXRfd2lkdGhfb2ZfbGluayhyc3ZkX2Zvcik7XFxuIDYxODpcXHRcXHRtYXhfYncgPSBtYXgobWF4X2J3LCB3aWR0aCk7XFxuIDYxOTpcXHRcXG4gNjIwOlxcdGNoZWNrX21vbml0b3I6XFxuIDYyMTpcXHRcXHQvKiB1c2UgdGhlIGNvbmZpZ3VyZWQgYmFuZHdpZHRoIGluIGNhc2Ugb2YgbW9uaXRvciBpbnRlcmZhY2UgKi9cXG4gNjIyOlxcdFxcdHNkYXRhID0gd2lwaHlfZGVyZWZlcmVuY2UobG9jYWwtXFx1MDAzZWh3LndpcGh5LCBsb2NhbC1cXHUwMDNlbW9uaXRvcl9zZGF0YSk7XFxuIDYyMzpcXHRcXHRpZiAoc2RhdGEgXFx1MDAyNlxcdTAwMjZcXG4gNjI0OlxcdFxcdCAgICByY3VfYWNjZXNzX3BvaW50ZXIoc2RhdGEtXFx1MDAzZXZpZi5ic3NfY29uZi5jaGFuY3R4X2NvbmYpID09IFxcdTAwMjZjdHgtXFx1MDAzZWNvbmYpXFxuIDYyNTpcXHRcXHRcXHRtYXhfYncgPSBtYXgobWF4X2J3LCBjdHgtXFx1MDAzZWNvbmYuZGVmLndpZHRoKTtcXG4gNjI2OlxcdFxcbiA2Mjc6XFx0XFx0cmV0dXJuIG1heF9idztcXG4gNjI4OlxcdH1cXG4gNjI5OlxcdFxcbiA2MzA6XFx0LypcXG4gNjMxOlxcdCAqIHJlY2FsYyB0aGUgbWluIHJlcXVpcmVkIGNoYW4gd2lkdGggb2YgdGhlIGNoYW5uZWwgY29udGV4dCwgd2hpY2ggaXNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDE6MTU6MjUuNTg1NzI3MjE5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0MDA1NjM0NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb2RlIE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIG92ZXIgdGhpcyBjb2RlIGNoYW5nZSwgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIGEgZnVuY3Rpb25hbCBkaWZmZXJlbmNlLiBJbiB0aGUgb3JpZ2luYWwgdmVyc2lvbiwgaWYgYHJzdmRfZm9yLVx1MDAzZXNkYXRhYCBtYXRjaGVkIGBsb2NhbC1cdTAwM2Vtb25pdG9yX3NkYXRhYCwgaXQgd291bGQganVtcCB0byBgY2hlY2tfbW9uaXRvcmAuIFdpdGhpbiBgY2hlY2tfbW9uaXRvcmAsIGl0IHdvdWxkIHRoZW4gdmVyaWZ5IGlmIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBkZXRhaWwsIGBzZGF0YS1cdTAwM2V2aWYuYnNzX2NvbmYuY2hhbmN0eF9jb25mYCwgbWF0Y2hlZCBhIHNwZWNpZmljIGNvbnRleHQsIGBcdTAwMjZjdHgtXHUwMDNlY29uZmAuIE9ubHkgaWYgKnRoYXQqIGNvbmRpdGlvbiB3YXMgYWxzbyB0cnVlIHdvdWxkIGl0IHVwZGF0ZSB0aGUgYmFuZHdpZHRoIChgbWF4X2J3YCkuXG5cblRoZSBuZXcgY29kZSwgaG93ZXZlciwgdGhyb3dzIHRoYXQgc2Vjb25kIGNoZWNrIG91dCB0aGUgd2luZG93ISBOb3csIGlmIHRoZSB0d28gYHNkYXRhYCBwb2ludGVycyBtYXRjaCwgaXQgKmFsd2F5cyogcmV0dXJucyBgbWF4KG1heF9idywgY3R4LVx1MDAzZWNvbmYuZGVmLndpZHRoKWAuIEl0IGNvbXBsZXRlbHkgYnlwYXNzZXMgdGhlIGNvbnRleHQgY2hlY2sgdGhhdCB3YXMgcHJldmlvdXNseSBpbiBwbGFjZS4gVGhhdCBpcyBhIHNpZ25pZmljYW50IGJlaGF2aW9yIGFsdGVyYXRpb24gYW5kIGRlZmluaXRlbHkgd2FycmFudHMgYSBjbG9zZXIgbG9vay4gSSdkIGNvbnNpZGVyIHRoaXMgYSBoaWdoLXByaW9yaXR5IGFyZWEgZm9yIGZ1enppbmcuXG5cbkdpdmVuIHRoYXQgdGhlIHRhcmdldCBmdW5jdGlvbiwgYGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndgLCBpcyBzdGF0aWMsIEkgbmVlZCB0byBmb2N1cyBvbiBpdHMgY2FsbGVycy4gTGV0J3Mgc2VlLi4uIGBfX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmYCBhbmQgYF9pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZmAgc2VlbSBsaWtlIHRoZSBsaWtlbHkgY2FuZGlkYXRlcywgYnV0LCBob2xkIG9uIGEgc2Vjb25kLi4uaXQgbG9va3MgbGlrZSBgX19pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZmAgaXMgYWxzbyBzdGF0aWMhIEFscmlnaHQsIGl0J3MgdGltZSB0byBleGFtaW5lIHRoZSBleHBvcnQgbWFwIHRvIGlkZW50aWZ5IHdoaWNoIGZ1bmN0aW9ucyBhcmUgYXQgYSBoaWdoZXIgbGV2ZWwsIHBvdGVudGlhbGx5IGludGVyYWN0aW5nIHdpdGggdGhlIG1vZGlmaWVkIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3NzIsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMToxNTozMi45ODYyOTMxOTVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1OTgzMzIxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfaWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL2NoYW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvY2hhbi5jPTYzNT1zdGF0aWMgdTMyXFxubmV0L21hYzgwMjExL2NoYW4uYzo2MzY6X19pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTYzNy1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHggKmN0eCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM9NzQ4PXN0YXRpYyB2b2lkXFxubmV0L21hYzgwMjExL2NoYW4uYzo3NDk6X2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtNzUwLVxcdFxcdFxcdFxcdCAgc3RydWN0IGllZWU4MDIxMV9jaGFuY3R4ICpjdHgsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTc1OS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jOjc2MDpcXHRjaGFuZ2VkID0gX19pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZihsb2NhbCwgY3R4LCByc3ZkX2ZvcixcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTc2MS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIGNoZWNrX3Jlc2VydmVkKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM9NzczPXZvaWQgaWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTc3NS17XFxubmV0L21hYzgwMjExL2NoYW4uYzo3NzY6XFx0X2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmKGxvY2FsLCBjdHgsIE5VTEwsIGZhbHNlKTtcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTc3Ny19XFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTgxMT1zdGF0aWMgdm9pZCBfaWVlZTgwMjExX2NoYW5nZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy04NTQtXFx0aWYgKGllZWU4MDIxMV9jaGFucmVxX2lkZW50aWNhbChcXHUwMDI2Y3R4X3JlcSwgY2hhbnJlcSkpIHtcXG5uZXQvbWFjODAyMTEvY2hhbi5jOjg1NTpcXHRcXHRfaWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYobG9jYWwsIGN0eCwgcnN2ZF9mb3IsIGZhbHNlKTtcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTg1Ni1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTg4MC1cXHQvKiBjaGVjayBpZiBtaW4gY2hhbmN0eCBhbHNvIGNoYW5nZWQgKi9cXG5uZXQvbWFjODAyMTEvY2hhbi5jOjg4MTpcXHRjaGFuZ2VkIHw9IF9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYobG9jYWwsIGN0eCwgcnN2ZF9mb3IsXFxubmV0L21hYzgwMjExL2NoYW4uYy04ODItXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgZmFsc2UpO1xcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYz05OTk9aWVlZTgwMjExX2FsbG9jX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTEwMTktXFx0Y3R4LVxcdTAwM2VyYWRhcl9kZXRlY3RlZCA9IGZhbHNlO1xcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MTAyMDpcXHRfX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmKGxvY2FsLCBjdHgsIE5VTEwsIGZhbHNlKTtcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTEwMjEtXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTExODE9c3RhdGljIGludCBpZWVlODAyMTFfYXNzaWduX2xpbmtfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTIwNi1cXHRcXHQvKiByZWNhbGMgY29uc2lkZXJpbmcgdGhlIGxpbmsgd2UnbGwgdXNlIGl0IGZvciBub3cgKi9cXG5uZXQvbWFjODAyMTEvY2hhbi5jOjEyMDc6XFx0XFx0X2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmKGxvY2FsLCBuZXdfY3R4LCBsaW5rLCBmYWxzZSk7XFxubmV0L21hYzgwMjExL2NoYW4uYy0xMjA4LVxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYz0xODg1PXN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy0yMDAxLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjAwMjpcXHRcXHRfaWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYobG9jYWwsIGN0eCwgTlVMTCwgdHJ1ZSk7XFxubmV0L21hYzgwMjExL2NoYW4uYy0yMDAzLVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDE6MTU6MzMuMTQ2MTMyNjgxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMTA0MjY0MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIENoYW5uZWwgQ29udGV4dCBSZWNhbGN1bGF0aW9uIGluIG1hYzgwMjExKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IGNoYW5uZWwgY29udGV4dCBtaW5pbXVtIGRlZmF1bHRzIGFyZSByZWNhbGN1bGF0ZWQgaW4gYG1hYzgwMjExYC4gSSBzZWUgdGhhdCB0aGUgZnVuY3Rpb24gYGllZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmYCBpcyBlaXRoZXIgZXhwb3J0ZWQgb3IsIGF0IHRoZSB2ZXJ5IGxlYXN0LCBpc24ndCBzdGF0aWMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjaGVjayBob3cgaXQncyB1c2VkIOKAkyBsZXQncyBzZWUgd2hlcmUgYGllZWU4MDIxMV9jaGFuZ2VfY2hhbmN0eGAsIGBpZWVlODAyMTFfYWxsb2NfY2hhbmN0eGAsIGFuZCBgaWVlZTgwMjExX2Fzc2lnbl9saW5rX2NoYW5jdHhgIGNhbGwgaXQuIEkgY291bGQgYWxzbyB1c2UgdGhlc2Ugb3RoZXIgZnVuY3Rpb25zIGFzIEZvY3VzU3ltYm9scyB0b28uXG5cbkhtbSwgaW50ZXJlc3RpbmcsIGBpZWVlODAyMTFfZ2V0X2NoYW5jdHhfbWF4X3JlcXVpcmVkX2J3YCBpcyBzdGF0aWMsIGJ1dCBpdCdzIHRoZSBvbmUgdGhhdCdzIGFjdHVhbGx5IGJlaW5nIG1vZGlmaWVkLiBDYW4gSSBzdGlsbCB1c2UgaXQgZm9yIG15IGFuYWx5c2lzPyBZZXMsIEkgY2FuIHVzZSBzdGF0aWMgZnVuY3Rpb25zIGluIEZvY3VzU3ltYm9scywgYnV0IGl0J3Mgb2Z0ZW4gYmV0dGVyIHRvIGdvIHdpdGggc2xpZ2h0bHkgaGlnaGVyLWxldmVsIG9uZXMgaWYgdGhleSBleGlzdC4gR2l2ZW4gdGhpcywgSSdtIGdvaW5nIHRvIGluY2x1ZGUgYm90aCBgaWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9id2AgYW5kIGBfX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmYCBpbiBteSBhbmFseXNpcy5cblxuTm93LCBhIHF1aWNrIHNhbml0eSBjaGVjayBvZiB0aGUgY29uZmlndXJhdGlvbi4gSSBrbm93IGBNQUM4MDIxMWAgaXMgdGhlIG1haW4gY29uZmlnLCBhbmQgYE1BQzgwMjExX0hXU0lNYCBpcyBoYW5keSBmb3IgZnV6emluZy4gSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxldmFudCBjb25maWdzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBMZXQgbWUgdGFrZSBhIGxvb2sgYXQgdGhlIGBuZXQvbWFjODAyMTEvTWFrZWZpbGVgIHRvIHNlZSBpZiB0aGUgYGNoYW4uY2AgZmlsZSBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkIGJhc2VkIG9uIGFueSBvdGhlciBjb25maWcgb3B0aW9ucy4gSnVzdCB3YW50IHRvIG1ha2Ugc3VyZSBJJ20gY29uc2lkZXJpbmcgYWxsIHJlbGV2YW50IHNjZW5hcmlvcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE5NzIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDE6MTU6MzguMjU2NTYxMzYxWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjk1NTc1NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2hhbi5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvTWFrZWZpbGU9NT1tYWM4MDIxMS15IDo9IFxcXFxcXG4tLVxcbm5ldC9tYWM4MDIxMS9NYWtlZmlsZS0zMi1cXHR3bWUubyBcXFxcXFxubmV0L21hYzgwMjExL01ha2VmaWxlOjMzOlxcdGNoYW4ubyBhcC5vIFxcXFxcXG5uZXQvbWFjODAyMTEvTWFrZWZpbGUtMzQtXFx0dHJhY2UubyBtbG1lLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMToxNTozOC40MjYxMjY5MTVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTgyNzc3NzAxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCBpbiB0aGUgTWFjODAyMTEgU3Vic3lzdGVtKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHRpZWQgaW50byBgbWFjODAyMTEteWAsIG1lYW5pbmcgaXQncyBhbHdheXMgaW5jbHVkZWQgd2hlbiBgTUFDODAyMTFgIGlzIGVuYWJsZWQuIFRoYXQncyBnb29kIHRvIGtub3cuIExldCdzIGJyZWFrIGRvd24gdGhlIGltcGxpY2F0aW9ucyBhbmQgYnVpbGQgYSBtZW50YWwgbWFwLlxuXG5NeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoIGlzIGBXb3J0aEZ1enppbmc6IHRydWVgLiBXaHk/IEJlY2F1c2UgaXQncyBmdW5kYW1lbnRhbGx5IGFsdGVyaW5nIGhvdyB0aGUgc3lzdGVtIGNhbGN1bGF0ZXMgdGhlIG1heGltdW0gY2hhbm5lbCBiYW5kd2lkdGggcmVxdWlyZWQsIHNwZWNpZmljYWxseSB3aXRoaW4gYG1hYzgwMjExYC4gSXQgY2hhbmdlcyB0aGUgcnVsZXMgZm9yIHdoZW4gdGhlIG1vbml0b3IgaW50ZXJmYWNlJ3MgYmFuZHdpZHRoIGNvbmZpZ3VyYXRpb24gZ2V0cyB1c2VkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBzaGlmdCBpbiB0aGUgY29yZSA4MDIuMTEgc3RhY2sg4oCTIHdoaWNoIG1lYW5zIHRoZXJlJ3MgYSBnb29kIGNoYW5jZSB0byBleHBvc2Ugc3VidGxlIGVkZ2UgY2FzZXMgZHVyaW5nIGZ1enppbmcuXG5cbk15IHByaW1hcnkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlc2Ugc3ltYm9sczogYGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndgIGFuZCBgX19pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZmAuIFRoYXQncyB3aGVyZSB0aGUgaGVhcnQgb2YgdGhlIGNoYW5nZSByZXNpZGVzLiBUaGVzZSBhcmUgdGhlIGtleSBmdW5jdGlvbnMgSSBuZWVkIHRvIHRhcmdldC5cblxuQW5kIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGZ1enppbmcgaXMgYXBwcm9wcmlhdGVseSBjb25maWd1cmVkLiBUaGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZDogYE1BQzgwMjExYCwgb2J2aW91c2x5LCBhbmQgYWxzbyBgTUFDODAyMTFfSFdTSU1gLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYE1BQzgwMjExX0hXU0lNYCBpcyAqZXhhY3RseSogdGhlIG5hbWUgdXNlZCBpbiB0aGUga2VybmVsIGNvbmZpZyBmaWxlcy4gTGV0IG1lIHF1aWNrbHkgY2hlY2vigKYgWWVwLCBgY29uZmlnIE1BQzgwMjExX0hXU0lNYCBpcyBkZWZpbmVkIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWdgLCBhbmQgYE1BQzgwMjExYCBpcyBpbiBgbmV0L21hYzgwMjExL0tjb25maWdgLiBFeGNlbGxlbnQuXG5cbk5vdywgSSdtIHJlYWR5IHRvIGNhbGwgc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODM2LCJPdXRwdXRUb2tlbnMiOjE0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMToxNTo0NC4yNTM5MDY2NTFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjk3MTA5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndcIixcbiAgICBcIl9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGRldGVybWluaW5nIHRoZSBtYXhpbXVtIHJlcXVpcmVkIGNoYW5uZWwgYmFuZHdpZHRoIGluIG1hYzgwMjExLiBJdCBjaGFuZ2VzIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZSBtb25pdG9yIGludGVyZmFjZSdzIGNvbmZpZ3VyZWQgYmFuZHdpZHRoIGlzIHVzZWQsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgODAyLjExIHN0YWNrLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndcIixcbiAgICBcIl9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGRldGVybWluaW5nIHRoZSBtYXhpbXVtIHJlcXVpcmVkIGNoYW5uZWwgYmFuZHdpZHRoIGluIG1hYzgwMjExLiBJdCBjaGFuZ2VzIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZSBtb25pdG9yIGludGVyZmFjZSdzIGNvbmZpZ3VyZWQgYmFuZHdpZHRoIGlzIHVzZWQsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgODAyLjExIHN0YWNrLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowfk8cf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-16 00:48:18 +0000 UTC FinishedAt: 2026-07-16 01:15:45 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "58717b2a1365d06c8c64b72aa948541b53fe31eb", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "MAC80211_HWSIM" ], "series_id": "0a375e70-34ee-46e9-9a0b-ac42aee8390e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_get_chanctx_max_required_bw", "__ieee80211_recalc_chanctx_min_def" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9idyYjMzQ7LAogICAgJiMzNDtfX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgZGV0ZXJtaW5pbmcgdGhlIG1heGltdW0gcmVxdWlyZWQgY2hhbm5lbCBiYW5kd2lkdGggaW4gbWFjODAyMTEuIEl0IGNoYW5nZXMgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhlIG1vbml0b3IgaW50ZXJmYWNlJiMzOTtzIGNvbmZpZ3VyZWQgYmFuZHdpZHRoIGlzIHVzZWQsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgODAyLjExIHN0YWNrLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjE0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYWMyZDFkMDYyNTExMzRiYjgxOTMwNzAyNWZkZDVmY2I0YTlkYTBlMVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgSnVsIDE2IDAxOjE0OjUyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9jaGFuLmMgYi9uZXQvbWFjODAyMTEvY2hhbi5jXG5pbmRleCA1MTUyYjg0YTMzNTc3OS4uNzViYjIwNGFkNzQzMmMgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvY2hhbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvY2hhbi5jXG5AQCAtNjA3LDEwICYjNDM7NjA3LDEyIEBAIGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYncoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4gXHRcdG1heF9idyA9IG1heChtYXhfYncsIHdpZHRoKTtcbiBcdH1cbiBcbi1cdGlmICghcnN2ZF9mb3IgfHxcbi1cdCAgICByc3ZkX2Zvci1cdTAwM2VzZGF0YSA9PSByY3VfYWNjZXNzX3BvaW50ZXIobG9jYWwtXHUwMDNlbW9uaXRvcl9zZGF0YSkpXG4mIzQzO1x0aWYgKCFyc3ZkX2ZvcilcbiBcdFx0Z290byBjaGVja19tb25pdG9yO1xuIFxuJiM0MztcdGlmIChyc3ZkX2Zvci1cdTAwM2VzZGF0YSA9PSByY3VfYWNjZXNzX3BvaW50ZXIobG9jYWwtXHUwMDNlbW9uaXRvcl9zZGF0YSkpXG4mIzQzO1x0XHRyZXR1cm4gbWF4KG1heF9idywgY3R4LVx1MDAzZWNvbmYuZGVmLndpZHRoKTtcbiYjNDM7XG4gXHQvKiBDb25zaWRlciB0aGUgbGluayBmb3Igd2hpY2ggdGhpcyBjaGFuY3R4IGlzIHJlc2VydmVkL2dvaW5nIHRvIGJlIGFzc2lnbmVkICovXG4gXHR3aWR0aCA9IGllZWU4MDIxMV9nZXRfd2lkdGhfb2ZfbGluayhyc3ZkX2Zvcik7XG4gXHRtYXhfYncgPSBtYXgobWF4X2J3LCB3aWR0aCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDE6MTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfZ2V0X2NoYW5jdHhfbWF4X3JlcXVpcmVkX2J3JiMzNDssCiAgICAmIzM0O19faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBkZXRlcm1pbmluZyB0aGUgbWF4aW11bSByZXF1aXJlZCBjaGFubmVsIGJhbmR3aWR0aCBpbiBtYWM4MDIxMS4gSXQgY2hhbmdlcyB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGUgbW9uaXRvciBpbnRlcmZhY2UmIzM5O3MgY29uZmlndXJlZCBiYW5kd2lkdGggaXMgdXNlZCwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSA4MDIuMTEgc3RhY2suJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFjMmQxZDA2MjUxMTM0YmI4MTkzMDcwMjVmZGQ1ZmNiNGE5ZGEwZTEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEp1bCAxNiAwMToxNDo1MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9jaGFuLmMgYi9uZXQvbWFjODAyMTEvY2hhbi5jCmluZGV4IDUxNTJiODRhMzM1Nzc5Li43NWJiMjA0YWQ3NDMyYyAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL2NoYW4uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvY2hhbi5jCkBAIC02MDcsMTAgJiM0Mzs2MDcsMTIgQEAgaWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9idyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwKIAkJbWF4X2J3ID0gbWF4KG1heF9idywgd2lkdGgpOwogCX0KIAotCWlmICghcnN2ZF9mb3IgfHwKLQkgICAgcnN2ZF9mb3ItJmd0O3NkYXRhID09IHJjdV9hY2Nlc3NfcG9pbnRlcihsb2NhbC0mZ3Q7bW9uaXRvcl9zZGF0YSkpCiYjNDM7CWlmICghcnN2ZF9mb3IpCiAJCWdvdG8gY2hlY2tfbW9uaXRvcjsKIAomIzQzOwlpZiAocnN2ZF9mb3ItJmd0O3NkYXRhID09IHJjdV9hY2Nlc3NfcG9pbnRlcihsb2NhbC0mZ3Q7bW9uaXRvcl9zZGF0YSkpCiYjNDM7CQlyZXR1cm4gbWF4KG1heF9idywgY3R4LSZndDtjb25mLmRlZi53aWR0aCk7CiYjNDM7CiAJLyogQ29uc2lkZXIgdGhlIGxpbmsgZm9yIHdoaWNoIHRoaXMgY2hhbmN0eCBpcyByZXNlcnZlZC9nb2luZyB0byBiZSBhc3NpZ25lZCAqLwogCXdpZHRoID0gaWVlZTgwMjExX2dldF93aWR0aF9vZl9saW5rKHJzdmRfZm9yKTsKIAltYXhfYncgPSBtYXgobWF4X2J3LCB3aWR0aCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NjIKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAzOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2ggaW4gYG5ldC9tYWM4MDIxMS9jaGFuLmNgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBgbmV0L21hYzgwMjExL2NoYW4uY2AsIHNwZWNpZmljYWxseSB0aGUgYGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgY2hhbmdlIGRvZXMsIHNvIEkmIzM5O2xsIHJldmlldyB0aGUgZGlmZi4gTGV0JiMzOTtzIHNlZS4uLiBpdCBsb29rcyBsaWtlIHRoZXkmIzM5O3ZlIGFkZGVkIGEgY29uZGl0aW9uYWwgYmxvY2sgYXJvdW5kIHRoZSAmIzM0O3Jlc2VydmVkIGZvciYjMzQ7IGxvZ2ljLiBQcmV2aW91c2x5LCB0aGUgbG9naWMgYXBwZWFyZWQgdG8gb25seSBjb25zaWRlciB0aGUgbW9uaXRvciBpbnRlcmZhY2UgaWYgYHJzdmRfZm9yYCB3YXMgbnVsbC4gTm93LCB0aGVyZSYjMzk7cyBhbiBleHBsaWNpdCBjaGVjayAqd2l0aGluKiB0aGF0IGJsb2NrIHRvIHNlZSBpZiBgcnN2ZF9mb3JgIHBvaW50cyB0byB0aGUgbW9uaXRvciYjMzk7cyBzdGF0aW9uIGRhdGEgKGBzZGF0YWApLgoKVGhlIG9yaWdpbmFsIGNvZGUgY29tcGFyZWQgdGhlIGBzZGF0YWAgcG9pbnRlciBkaXJlY3RseSwgYnV0IG5vdyBpZiB0aGUgcmVzZXJ2ZWQgY2hhbm5lbCBpcyB0aGUgbW9uaXRvciBpbnRlcmZhY2UsIGl0IHJldHVybnMgdGhlICpkZWZhdWx0KiB3aWR0aC4gT3RoZXJ3aXNlLCBpdCBwcm9jZWVkcyBhcyBiZWZvcmUgYW5kIGNvbnNpZGVycyB0aGUgbGluayB0aGF0IHRoZSBjaGFubmVsIGNvbnRleHQgaXMgcmVzZXJ2ZWQgZm9yIHdoZW4gY2FsY3VsYXRpbmcgdGhlIG1heGltdW0gYmFuZHdpZHRoLiBUaGlzIGFwcGVhcnMgdG8gYmUgYSBidWcgZml4LCBhbmQgdGhlIGNvbW1pdCBtZXNzYWdlIHdpbGwgYmUgdGVsbGluZy4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIHdpZGVyIGNvbnRleHQgb2YgdGhpcyBjaGFuZ2Ugd2l0aGluIGBuZXQvbWFjODAyMTFgIGFuZCBlbnN1cmUgdGhlcmUgYXJlIG5vIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzLiBUaGUgY2hhbmdlIGxvb2tzIGNvcnJlY3QgaW4gaXNvbGF0aW9uLCB0aG91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDE6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9idyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jaGFuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2NoYW4uYz01ODE9c3RhdGljIGVudW0gbmw4MDIxMV9jaGFuX3dpZHRoXG5uZXQvbWFjODAyMTEvY2hhbi5jOjU4MjppZWVlODAyMTFfZ2V0X2NoYW5jdHhfbWF4X3JlcXVpcmVkX2J3KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjExL2NoYW4uYy01ODMtXHRcdFx0XHQgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHggKmN0eCxcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTYzNj1fX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtNjU2LVxubmV0L21hYzgwMjExL2NoYW4uYzo2NTc6XHRtYXhfYncgPSBpZWVlODAyMTFfZ2V0X2NoYW5jdHhfbWF4X3JlcXVpcmVkX2J3KGxvY2FsLCBjdHgsIHJzdmRfZm9yLFxubmV0L21hYzgwMjExL2NoYW4uYy02NTgtXHRcdFx0XHRcdFx0ICAgICAgIGNoZWNrX3Jlc2VydmVkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTY0CgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBDaGFubmVsIENvbnRleHQgQmFuZHdpZHRoIFJlcXVpcmVtZW50cyoqCgpBbHJpZ2h0LCBJJiMzOTttIHRyYWNpbmcgZG93biB0aGlzIGJhbmR3aWR0aCBjYWxjdWxhdGlvbiBsb2dpYy4gVGhlIGBpZWVlODAyMTFfZ2V0X2NoYW5jdHhfbWF4X3JlcXVpcmVkX2J3YCBmdW5jdGlvbiBpcyB0aGUga2V5IG9uZSBoZXJlIOKAkyBJIGtub3cgdGhhdCBpdCBmaWd1cmVzIG91dCB0aGUgbWF4aW11bSBiYW5kd2lkdGggYSBjaGFubmVsIGNvbnRleHQgKm5lZWRzKi4gTm93LCBJJiMzOTttIHplcm9pbmcgaW4gb24gd2hlcmUgdGhhdCBmdW5jdGlvbiBpcyBhY3R1YWxseSBnZXR0aW5nIGludm9rZWQuIFRoZSBjYWxsIHRvIGBpZWVlODAyMTFfZ2V0X2NoYW5jdHhfbWF4X3JlcXVpcmVkX2J3YCBvcmlnaW5hdGVzIGZyb20gdGhlIGBfX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmYCBmdW5jdGlvbi4gU28sIG5leHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsLXNpdGVzIG9mIGBfX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmYCDigJMgaXQmIzM5O3MgdGhlIGNyaXRpY2FsIGxpbmsgaW4gdW5kZXJzdGFuZGluZyB3aGVuIGFuZCB3aHkgd2UgcmUtZXZhbHVhdGUgdGhlc2UgY2hhbm5lbCBjb250ZXh0IGJhbmR3aWR0aCBwYXJhbWV0ZXJzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRyaWdnZXJzIHRoZSByZWNhbGN1bGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2hhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jaGFuLmM9NjM1PXN0YXRpYyB1MzJcbm5ldC9tYWM4MDIxMS9jaGFuLmM6NjM2Ol9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG5uZXQvbWFjODAyMTEvY2hhbi5jLTYzNy1cdFx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4LFxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM9NzQ5PV9pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTc1OS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM6NzYwOlx0Y2hhbmdlZCA9IF9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYobG9jYWwsIGN0eCwgcnN2ZF9mb3IsXG5uZXQvbWFjODAyMTEvY2hhbi5jLTc2MS1cdFx0XHRcdFx0XHQgICAgIGNoZWNrX3Jlc2VydmVkKTtcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTgxMT1zdGF0aWMgdm9pZCBfaWVlZTgwMjExX2NoYW5nZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtODgwLVx0LyogY2hlY2sgaWYgbWluIGNoYW5jdHggYWxzbyBjaGFuZ2VkICovXG5uZXQvbWFjODAyMTEvY2hhbi5jOjg4MTpcdGNoYW5nZWQgfD0gX19pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZihsb2NhbCwgY3R4LCByc3ZkX2Zvcixcbm5ldC9tYWM4MDIxMS9jaGFuLmMtODgyLVx0XHRcdFx0XHRcdCAgICAgIGZhbHNlKTtcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTk5OT1pZWVlODAyMTFfYWxsb2NfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTEwMTktXHRjdHgtXHUwMDNlcmFkYXJfZGV0ZWN0ZWQgPSBmYWxzZTtcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MTAyMDpcdF9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYobG9jYWwsIGN0eCwgTlVMTCwgZmFsc2UpO1xubmV0L21hYzgwMjExL2NoYW4uYy0xMDIxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NTgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIG1hYzgwMjExIENoYW5uZWwgQ29udGV4dCoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBtYWM4MDIxMSBjaGFubmVsIGNvbnRleHQgbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5LiBJIG5lZWQgdG8gZ2V0IG15IGhlYWQgYXJvdW5kIHRoaXMgcGFydGljdWxhciBhc3BlY3QuIE15IHByaW1hcnkgZm9jdXMgcmlnaHQgbm93IGlzIHRvIGxvY2F0ZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBkZXRhaWxzIGZvciBtYWM4MDIxMS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIG5lZWQgdG8gZ28gaHVudGluZyBmb3IgdGhlIGNvbmZpZyB0aGF0IGdvdmVybnMgaG93IHRoZXNlIGNoYW5uZWwgY29udGV4dHMgYXJlIGhhbmRsZWQuIFRpbWUgdG8gZGlnIGluIGFuZCBmaW5kIHRob3NlIHBhcmFtZXRlcnMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUM4MDIxMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxubmV0L21hYzgwMjExL0tjb25maWctMjAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cdGJvb2xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNDAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctNDItXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cdHN0cmluZ1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXCYjMzQ7U29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNTktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7RW5hYmxlIExFRCB0cmlnZ2Vyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVx0Ym9vbCBcJiMzNDtUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXHRib29sIFwmIzM0O1NlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0RvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXHRib29sIFwmIzM0O1ZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgSFQgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBPQ0IgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXHRib29sIFwmIzM0O1ZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXHRib29sIFwmIzM0O1ZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjcxLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtWZXJib3NlIFRETFMgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xubmV0L21hYzgwMjExL0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXHRpbnQgXCYjMzQ7U3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVwmIzM0OyBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDE6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjIzNQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZToKCioqRGl2aW5nIGludG8gdGhlIE1BQzgwMjExIENoYW5uZWwgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyB0aGUgY29yZSBjb25maWcgaGVyZSBpcyBkZWZpbml0ZWx5IGBNQUM4MDIxMWAuIFRoYXQgcG9pbnRzIHVzIGRpcmVjdGx5IHRvIHRoZSB3aXJlbGVzcyBuZXR3b3JraW5nIHN0YWNrLiBUaGUgdGhpbmcgdGhhdCYjMzk7cyBpbW1lZGlhdGVseSBncmFiYmluZyBteSBhdHRlbnRpb24gaXMgYGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndgLiBUaGlzIGZ1bmN0aW9uJiMzOTtzIHByZXNlbmNlIGluIHRoZSBkaXNjdXNzaW9uIG1lYW5zIGl0JiMzOTtzIGxpa2VseSBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBjaGFubmVsIGNvbnRleHQgbWFuYWdlbWVudCBwdXp6bGUsIGFuZCBpdOKAmXMgZXhwb3NlZCB0aHJvdWdoIG5ldGxpbmsgY29tbWFuZHMuIFRoYXQmIzM5O3Mga2V5LiBOZXRsaW5rIG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIHVzZXJzcGFjZS1rZXJuZWwgaW50ZXJmYWNlIGZvciBjb25maWd1cmluZyB0aGluZ3MgbGlrZSBpbnRlcmZhY2VzLCBjaGFubmVscywgYW5kIG90aGVyIHBhcmFtZXRlcnMgdGhhdCBhcmUgdmlzaWJsZSB0byBoaWdoZXIgbGV2ZWwgbmV0d29ya2luZyB0b29scy4KCkdpdmVuIHRoYXQgaXQmIzM5O3MgZGVhbGluZyB3aXRoIGJhbmR3aWR0aCwgYW5kIGl0JiMzOTtzIHJlYWNoYWJsZSB0aHJvdWdoIG5ldGxpbmssIGl0JiMzOTtzIHByZXR0eSBjbGVhciBpdCYjMzk7cyBwcm9iYWJseSBpbnZvbHZlZCBpbiBzZXR0aW5nIG9yIHF1ZXJ5aW5nIHRoZSBtYXhpbXVtIGJhbmR3aWR0aCByZXF1aXJlbWVudCBiYXNlZCBvbiB0aGUgY2hhbm5lbCBjb250ZXh0LiBJIG5lZWQgdG8gZGlnIGludG8gYG5ldC9tYWM4MDIxMS9jaGFuLmNgLiBUaGUga2VybmVsIGlzIG9mdGVuIG9yZ2FuaXplZCBpbiBhIHZlcnkgc3RydWN0dXJlZCB3YXksIHNvIEkmIzM5O2xsIHN0YXJ0IHRoZXJlLCBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgY29uZmlncyBvciBjb25kaXRpb25zIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2hhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDE6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYxNgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgbWFjODAyMTEgQ2hhbm5lbCBDb250ZXh0IE1hbmFnZW1lbnQqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgbmV0L21hYzgwMjExL2NoYW4uY2AgZmlsZSwgYW5kIEkmIzM5O20gbm90IHNlZWluZyBhbnkgKnNwZWNpZmljKiBjb25maWcgb3B0aW9ucyByaWdodCBvZmYgdGhlIGJhdC4gVGhlIGZ1bmN0aW9uIGBpZWVlODAyMTFfZ2V0X2NoYW5jdHhfbWF4X3JlcXVpcmVkX2J3YCBpcywgb2YgY291cnNlLCBzdGF0aWMuIFRoYXTigJlzIG5vdCB1bnVzdWFsLiBMZXQmIzM5O3MgdHJhY2Ugd2hlcmUgaXQmIzM5O3MgYmVpbmcgdXNlZC4gUmlnaHQsIGl0JiMzOTtzIGNhbGxlZCBmcm9tIGBfX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmYC4gVGhhdCBtYWtlcyBzZW5zZSBpbiB0aGUgY29udGV4dCBvZiByZWNhbGN1bGF0aW5nIGNoYW5uZWwgY29udGV4dCBkZWZpbml0aW9ucy4gTm93LCBgX19pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZmAgaXRzZWxmIGdldHMgY2FsbGVkIGZyb20gYSBmZXcgcGxhY2VzOiBgX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmYCwgYF9pZWVlODAyMTFfY2hhbmdlX2NoYW5jdHhgLCBhbmQgYGllZWU4MDIxMV9hbGxvY19jaGFuY3R4YC4gQmluZ28uIFRob3NlIGFyZSBhbGwgc3F1YXJlbHkgaW4gdGhlIHJlYWxtIG9mIGBtYWM4MDIxMWAmIzM5O3MgY2hhbm5lbCBjb250ZXh0IG1hbmFnZW1lbnQuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgdGhlIHBhdGggdG8gYW55IHZ1bG5lcmFiaWxpdHkgb3IgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNlIGlzIHRocm91Z2ggY2hhbm5lbCBjb250ZXh0IGFsbG9jYXRpb24gYW5kIG1hbmlwdWxhdGlvbi4KClRoaW5raW5nIGFib3V0IGhvdyB0aGlzIGdldHMgZXhlcmNpc2VkLCBJIGltbWVkaWF0ZWx5IHRoaW5rIG9mIGBtYWM4MDIxMV9od3NpbWAuIEl0JiMzOTtzIG15IGdvLXRvIGZvciBmdXp6aW5nIGBtYWM4MDIxMWAuIFNvLCBgTUFDODAyMTFgIGFuZCBgTUFDODAyMTFfSFdTSU1gIGFyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGZvY3VzIG9uLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjaywgYnV0IGl0IGlzIGxpa2VseSBgTUFDODAyMTFfSFdTSU1gIHdpbGwgYmUgcmVmZXJlbmNlZCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFjODAyMTFfaHdzaW0uY2Agb3IgYSBzaW1pbGFyIGZpbGUuIFRoYXQmIzM5O3MgdGhlIGxpa2VseSBzb3VyY2Ugb2YgYW55IGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBob3cgdGhpcyBjaGFubmVsIGNvbnRleHQgbWFuYWdlbWVudCB3b3JrcyB3aXRoaW4gdGhlIHNpbXVsYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUM4MDIxMV9IV1NJTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZy0yLVx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDE6MTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQwOAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDM1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQb3RlbnRpYWwgQnVnIEZpeCBpbiB0aGUgTUFDODAyMTEgSFdTSU0gQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYE1BQzgwMjExX0hXU0lNYCwgd2hpY2ggSSBrbm93IGlzIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgc2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbC4gVGhlIGRlc2NyaXB0aW9uIG1lbnRpb25zIGEgcG90ZW50aWFsIE5VTEwgZGVyZWZlcmVuY2UgZm9yIGByc3ZkX2ZvcmAuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGltbWVkaWF0ZWx5IGRpdmUgaW50byB0aGUgY29kZS4gTGV0JiMzOTtzIHNlZS4uLiB0aGUgb3JpZ2luYWwgY29kZSBzbmlwcGV0IHdhczoKCmBgYGMKCWlmICghcnN2ZF9mb3IgfHwKCSAgICByc3ZkX2Zvci0mZ3Q7c2RhdGEgPT0gcmN1X2FjY2Vzc19wb2ludGVyKGxvY2FsLSZndDttb25pdG9yX3NkYXRhKSkKCQlnb3RvIGNoZWNrX21vbml0b3I7CmBgYAoKSG1tLi4uIFdhaXQgYSBzZWNvbmQuIFRoZSBjaGVjayBgIXJzdmRfZm9yYCBjb21lcyAqZmlyc3QqLiBUaGF0JiMzOTtzIGEgc2hvcnQtY2lyY3VpdCEgSXQgKnNob3VsZG4mIzM5O3QqIGRlcmVmZXJlbmNlIGByc3ZkX2ZvcmAgaWYgaXQmIzM5O3MgTlVMTCwgYmVjYXVzZSBpZiBgcnN2ZF9mb3JgIGlzIE5VTEwgdGhlICplbnRpcmUqIGBpZmAgY29uZGl0aW9uIHdvdWxkIGV2YWx1YXRlIHRvIHRydWUsIGFuZCBpdCB3b3VsZCBqdW1wIHRvIGBjaGVja19tb25pdG9yYC4gVGhlIHBhdGNoIG1vZGlmaWVzIHRoYXQgY29kZSB0byBiZToKCmBgYGMKCWlmICghcnN2ZF9mb3IpCgkJZ290byBjaGVja19tb25pdG9yOwoKCWlmIChyc3ZkX2Zvci0mZ3Q7c2RhdGEgPT0gcmN1X2FjY2Vzc19wb2ludGVyKGxvY2FsLSZndDttb25pdG9yX3NkYXRhKSkKCQlyZXR1cm4gbWF4KG1heF9idywgY3R4LSZndDtjb25mLmRlZi53aWR0aCk7CmBgYAoKQWghIE5vdyBJIHNlZS4gVGhlIG9yaWdpbmFsIGNvZGUmIzM5O3MgYGNoZWNrX21vbml0b3JgIGxvZ2ljIHRyaWdnZXJlZCB3aGVuIHRoZSBzZWNvbmQgcGFydCBvZiB0aGUgY29uZGl0aW9uIGByc3ZkX2Zvci0mZ3Q7c2RhdGEgPT0gcmN1X2FjY2Vzc19wb2ludGVyKGxvY2FsLSZndDttb25pdG9yX3NkYXRhKWAgd2FzIHRydWUuIFRoZSBuZXcgY29kZSBkb2VzICpub3QqIGp1bXAgdG8gYGNoZWNrX21vbml0b3JgIGluIHRoYXQgY2FzZSwgYnV0IHJldHVybnMgYG1heChtYXhfYncsIGN0eC0mZ3Q7Y29uZi5kZWYud2lkdGgpYCBpbnN0ZWFkLgoKU28gdGhpcyBpcyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UgaW4gbG9naWMsIGEgc3VidGxlIHNoaWZ0IGluIHRoZSBkZWNpc2lvbi1tYWtpbmcgcHJvY2Vzcy4gVGhlIGZpeCBkb2VzbiYjMzk7dCBzaW1wbHkgcmVtb3ZlIGEgTlVMTCBkZXJlZmVyZW5jZTsgaXQgY2hhbmdlcyB3aGF0IHRoZSBmdW5jdGlvbiBkb2VzIHVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgY2hlY2tfbW9uaXRvcmAgZG9lcyB0byBmdWxseSBncmFzcCB0aGUgaW1wbGljYXRpb24gb2YgdGhpcyBjaGFuZ2UuIExldCBtZSBxdWlja2x5IGV4YW1pbmUgYGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndgIHRvIHNlZSB0aGUgaW1wYWN0IG9mIHRoaXMgZnVuY3Rpb25hbCBkaWZmZXJlbmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjaGVja19tb25pdG9yOiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jaGFuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2NoYW4uYz01ODI9aWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9idyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTYxOS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM6NjIwOmNoZWNrX21vbml0b3I6XG5uZXQvbWFjODAyMTEvY2hhbi5jLTYyMS1cdC8qIHVzZSB0aGUgY29uZmlndXJlZCBiYW5kd2lkdGggaW4gY2FzZSBvZiBtb25pdG9yIGludGVyZmFjZSAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDE4CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGNvZGUgc25pcHBldCwgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyBhbiBleHBlcnQtbGV2ZWwgdW5kZXJzdGFuZGluZzoKCioqQW5hbHl6aW5nIGBpZWVlODAyMTFfZ2V0X2NoYW5jdHhfbWF4X3JlcXVpcmVkX2J3YCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCB0aGUgaW1wbGVtZW50YXRpb24gZnJvbSBsaW5lcyA1ODIgdG8gNjMwLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBlc3RhYmxpc2ggdGhlIGNvbnRleHQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiBpcyAqc3VwcG9zZWQqIHRvIGRvIHdpdGhpbiB0aGUgbGFyZ2VyIDgwMi4xMSBmcmFtZXdvcmsuIEp1ZGdpbmcgZnJvbSB0aGUgbmFtZSwgaXQmIzM5O3MgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUgbWF4aW11bSBiYW5kd2lkdGggcmVxdWlyZWQgYnkgYSBjaGFubmVsIGNvbnRleHQsIHByZXN1bWFibHkgZm9yIHRoaW5ncyBsaWtlIGFsbG9jYXRpb24gb3IgY2FwYWJpbGl0eSBuZWdvdGlhdGlvbi4KCkkmIzM5O20gaW1tZWRpYXRlbHkgbG9va2luZyBmb3IgdGhlIGNyaXRpY2FsIHBhcnRzOiB0aGUgaW5wdXRzLCB0aGUgcHJvY2Vzc2luZyBsb2dpYywgYW5kIHRoZSBvdXRwdXRzLiBJJiMzOTtkIGV4cGVjdCBpdCB0YWtlcyB0aGUgYGNoYW5jdHhgIChjaGFubmVsIGNvbnRleHQpIGFzIGEgcHJpbWFyeSBhcmd1bWVudCwgb2J2aW91c2x5LiBUaGUgZnVuY3Rpb24mIzM5O3Mgam9iIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIG1heGltdW0gYmFuZHdpZHRoIGl0IG1pZ2h0IG5lZWQgdG8gdXNlLiBJJiMzOTtkIGV4cGVjdCBpdCB0byBoYW5kbGUgZGlmZmVyZW50IHNjZW5hcmlvcyAtIDIwTUh6LCA0ME1IeiwgODBNSHosIGFuZCBwb3RlbnRpYWxseSBldmVuIDE2ME1IeiBvciB3aWRlciBjaGFubmVscyBkZXBlbmRpbmcgb24gdGhlIHN0YW5kYXJkLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIGJyYW5jaGluZyBiYXNlZCBvbiB0aGluZ3MgbGlrZSB0aGUgYGNoYW5jdHhgJiMzOTtzIGNvbmZpZ3VyZWQgYmFuZHdpZHRoLCB0aGUgc3RhbmRhcmQgc3VwcG9ydGVkIChhL2IvZy9uL2FjL2F4Li4uKSwgYW5kIHBlcmhhcHMgYW55IHJlZ3VsYXRvcnkgY29uc3RyYWludHMgb3IgY2FwYWJpbGl0aWVzIGFkdmVydGlzZWQgYnkgdGhlIGFzc29jaWF0ZWQgcmFkaW8uIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgdXNlIG9mIGFueSBoZWxwZXIgZnVuY3Rpb25zIG9yIG1hY3JvcyBpbnZvbHZlZCwgYXMgdGhhdCB3aWxsIGJlIHdoZXJlIHRoZSBkZXRhaWwgcmVzaWRlcy4gSSYjMzk7bSBleHBlY3RpbmcgYSBjbGVhbiwgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIGdpdmVuIGl0cyBpbXBvcnRhbmNlIGluIHRoZSBkcml2ZXIuIEEgcG9vcmx5IG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiBpbiBzb21ldGhpbmcgZnVuZGFtZW50YWwgbGlrZSB0aGlzIHdpbGwgaW1wYWN0IHBlcmZvcm1hbmNlIGFjcm9zcyB0aGUgYm9hcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2NoYW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU4MiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTgyOlx0aWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9idyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiA1ODM6XHRcdFx0XHRcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4LFxuIDU4NDpcdFx0XHRcdFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKnJzdmRfZm9yLFxuIDU4NTpcdFx0XHRcdFx0ICAgICAgYm9vbCBjaGVja19yZXNlcnZlZClcbiA1ODY6XHR7XG4gNTg3Olx0XHRlbnVtIG5sODAyMTFfY2hhbl93aWR0aCBtYXhfYncgPSBOTDgwMjExX0NIQU5fV0lEVEhfMjBfTk9IVDtcbiA1ODg6XHRcdHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eF91c2VyX2l0ZXIgaXRlcjtcbiA1ODk6XHRcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhO1xuIDU5MDpcdFx0ZW51bSBubDgwMjExX2NoYW5fd2lkdGggd2lkdGg7XG4gNTkxOlx0XG4gNTkyOlx0XHRpZiAoV0FSTl9PTihjaGVja19yZXNlcnZlZCBcdTAwMjZcdTAwMjYgcnN2ZF9mb3IpKVxuIDU5MzpcdFx0XHRyZXR1cm4gY3R4LVx1MDAzZWNvbmYuZGVmLndpZHRoO1xuIDU5NDpcdFxuIDU5NTpcdFx0LyogV2hlbiB0aGlzIGlzIHRydWUgd2Ugb25seSBjYXJlIGFib3V0IHRoZSByZXNlcnZpbmcgbGlua3MgKi9cbiA1OTY6XHRcdGlmIChjaGVja19yZXNlcnZlZCkge1xuIDU5NzpcdFx0XHRmb3JfZWFjaF9jaGFuY3R4X3VzZXJfcmVzZXJ2ZWQobG9jYWwsIGN0eCwgXHUwMDI2aXRlcikge1xuIDU5ODpcdFx0XHRcdHdpZHRoID0gaWVlZTgwMjExX2dldF93aWR0aF9vZl9jaGFuY3R4X3VzZXIoXHUwMDI2aXRlcik7XG4gNTk5Olx0XHRcdFx0bWF4X2J3ID0gbWF4KG1heF9idywgd2lkdGgpO1xuIDYwMDpcdFx0XHR9XG4gNjAxOlx0XHRcdGdvdG8gY2hlY2tfbW9uaXRvcjtcbiA2MDI6XHRcdH1cbiA2MDM6XHRcbiA2MDQ6XHRcdC8qIENvbnNpZGVyIGFsbCBhc3NpZ25lZCBsaW5rcyAqL1xuIDYwNTpcdFx0Zm9yX2VhY2hfY2hhbmN0eF91c2VyX2Fzc2lnbmVkKGxvY2FsLCBjdHgsIFx1MDAyNml0ZXIpIHtcbiA2MDY6XHRcdFx0d2lkdGggPSBpZWVlODAyMTFfZ2V0X3dpZHRoX29mX2NoYW5jdHhfdXNlcihcdTAwMjZpdGVyKTtcbiA2MDc6XHRcdFx0bWF4X2J3ID0gbWF4KG1heF9idywgd2lkdGgpO1xuIDYwODpcdFx0fVxuIDYwOTpcdFxuIDYxMDpcdFx0aWYgKCFyc3ZkX2ZvcilcbiA2MTE6XHRcdFx0Z290byBjaGVja19tb25pdG9yO1xuIDYxMjpcdFxuIDYxMzpcdFx0aWYgKHJzdmRfZm9yLVx1MDAzZXNkYXRhID09IHJjdV9hY2Nlc3NfcG9pbnRlcihsb2NhbC1cdTAwM2Vtb25pdG9yX3NkYXRhKSlcbiA2MTQ6XHRcdFx0cmV0dXJuIG1heChtYXhfYncsIGN0eC1cdTAwM2Vjb25mLmRlZi53aWR0aCk7XG4gNjE1Olx0XG4gNjE2Olx0XHQvKiBDb25zaWRlciB0aGUgbGluayBmb3Igd2hpY2ggdGhpcyBjaGFuY3R4IGlzIHJlc2VydmVkL2dvaW5nIHRvIGJlIGFzc2lnbmVkICovXG4gNjE3Olx0XHR3aWR0aCA9IGllZWU4MDIxMV9nZXRfd2lkdGhfb2ZfbGluayhyc3ZkX2Zvcik7XG4gNjE4Olx0XHRtYXhfYncgPSBtYXgobWF4X2J3LCB3aWR0aCk7XG4gNjE5Olx0XG4gNjIwOlx0Y2hlY2tfbW9uaXRvcjpcbiA2MjE6XHRcdC8qIHVzZSB0aGUgY29uZmlndXJlZCBiYW5kd2lkdGggaW4gY2FzZSBvZiBtb25pdG9yIGludGVyZmFjZSAqL1xuIDYyMjpcdFx0c2RhdGEgPSB3aXBoeV9kZXJlZmVyZW5jZShsb2NhbC1cdTAwM2Vody53aXBoeSwgbG9jYWwtXHUwMDNlbW9uaXRvcl9zZGF0YSk7XG4gNjIzOlx0XHRpZiAoc2RhdGEgXHUwMDI2XHUwMDI2XG4gNjI0Olx0XHQgICAgcmN1X2FjY2Vzc19wb2ludGVyKHNkYXRhLVx1MDAzZXZpZi5ic3NfY29uZi5jaGFuY3R4X2NvbmYpID09IFx1MDAyNmN0eC1cdTAwM2Vjb25mKVxuIDYyNTpcdFx0XHRtYXhfYncgPSBtYXgobWF4X2J3LCBjdHgtXHUwMDNlY29uZi5kZWYud2lkdGgpO1xuIDYyNjpcdFxuIDYyNzpcdFx0cmV0dXJuIG1heF9idztcbiA2Mjg6XHR9XG4gNjI5Olx0XG4gNjMwOlx0LypcbiA2MzE6XHQgKiByZWNhbGMgdGhlIG1pbiByZXF1aXJlZCBjaGFuIHdpZHRoIG9mIHRoZSBjaGFubmVsIGNvbnRleHQsIHdoaWNoIGlzXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3NzIKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiA2MjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDb2RlIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgb3ZlciB0aGlzIGNvZGUgY2hhbmdlLCBhbmQgaW1tZWRpYXRlbHkgSSBzZWUgYSBmdW5jdGlvbmFsIGRpZmZlcmVuY2UuIEluIHRoZSBvcmlnaW5hbCB2ZXJzaW9uLCBpZiBgcnN2ZF9mb3ItJmd0O3NkYXRhYCBtYXRjaGVkIGBsb2NhbC0mZ3Q7bW9uaXRvcl9zZGF0YWAsIGl0IHdvdWxkIGp1bXAgdG8gYGNoZWNrX21vbml0b3JgLiBXaXRoaW4gYGNoZWNrX21vbml0b3JgLCBpdCB3b3VsZCB0aGVuIHZlcmlmeSBpZiBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZGV0YWlsLCBgc2RhdGEtJmd0O3ZpZi5ic3NfY29uZi5jaGFuY3R4X2NvbmZgLCBtYXRjaGVkIGEgc3BlY2lmaWMgY29udGV4dCwgYCZhbXA7Y3R4LSZndDtjb25mYC4gT25seSBpZiAqdGhhdCogY29uZGl0aW9uIHdhcyBhbHNvIHRydWUgd291bGQgaXQgdXBkYXRlIHRoZSBiYW5kd2lkdGggKGBtYXhfYndgKS4KClRoZSBuZXcgY29kZSwgaG93ZXZlciwgdGhyb3dzIHRoYXQgc2Vjb25kIGNoZWNrIG91dCB0aGUgd2luZG93ISBOb3csIGlmIHRoZSB0d28gYHNkYXRhYCBwb2ludGVycyBtYXRjaCwgaXQgKmFsd2F5cyogcmV0dXJucyBgbWF4KG1heF9idywgY3R4LSZndDtjb25mLmRlZi53aWR0aClgLiBJdCBjb21wbGV0ZWx5IGJ5cGFzc2VzIHRoZSBjb250ZXh0IGNoZWNrIHRoYXQgd2FzIHByZXZpb3VzbHkgaW4gcGxhY2UuIFRoYXQgaXMgYSBzaWduaWZpY2FudCBiZWhhdmlvciBhbHRlcmF0aW9uIGFuZCBkZWZpbml0ZWx5IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2suIEkmIzM5O2QgY29uc2lkZXIgdGhpcyBhIGhpZ2gtcHJpb3JpdHkgYXJlYSBmb3IgZnV6emluZy4KCkdpdmVuIHRoYXQgdGhlIHRhcmdldCBmdW5jdGlvbiwgYGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndgLCBpcyBzdGF0aWMsIEkgbmVlZCB0byBmb2N1cyBvbiBpdHMgY2FsbGVycy4gTGV0JiMzOTtzIHNlZS4uLiBgX19pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZmAgYW5kIGBfaWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWZgIHNlZW0gbGlrZSB0aGUgbGlrZWx5IGNhbmRpZGF0ZXMsIGJ1dCwgaG9sZCBvbiBhIHNlY29uZC4uLml0IGxvb2tzIGxpa2UgYF9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWZgIGlzIGFsc28gc3RhdGljISBBbHJpZ2h0LCBpdCYjMzk7cyB0aW1lIHRvIGV4YW1pbmUgdGhlIGV4cG9ydCBtYXAgdG8gaWRlbnRpZnkgd2hpY2ggZnVuY3Rpb25zIGFyZSBhdCBhIGhpZ2hlciBsZXZlbCwgcG90ZW50aWFsbHkgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgbW9kaWZpZWQgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDE6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2NoYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2hhbi5jPTYzNT1zdGF0aWMgdTMyXG5uZXQvbWFjODAyMTEvY2hhbi5jOjYzNjpfX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjExL2NoYW4uYy02MzctXHRcdFx0XHQgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHggKmN0eCxcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTc0OD1zdGF0aWMgdm9pZFxubmV0L21hYzgwMjExL2NoYW4uYzo3NDk6X2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjExL2NoYW4uYy03NTAtXHRcdFx0XHQgIHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4LFxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtNzU5LVxubmV0L21hYzgwMjExL2NoYW4uYzo3NjA6XHRjaGFuZ2VkID0gX19pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZihsb2NhbCwgY3R4LCByc3ZkX2Zvcixcbm5ldC9tYWM4MDIxMS9jaGFuLmMtNzYxLVx0XHRcdFx0XHRcdCAgICAgY2hlY2tfcmVzZXJ2ZWQpO1xuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM9NzczPXZvaWQgaWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYy03NzUte1xubmV0L21hYzgwMjExL2NoYW4uYzo3NzY6XHRfaWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYobG9jYWwsIGN0eCwgTlVMTCwgZmFsc2UpO1xubmV0L21hYzgwMjExL2NoYW4uYy03NzctfVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM9ODExPXN0YXRpYyB2b2lkIF9pZWVlODAyMTFfY2hhbmdlX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYy04NTQtXHRpZiAoaWVlZTgwMjExX2NoYW5yZXFfaWRlbnRpY2FsKFx1MDAyNmN0eF9yZXEsIGNoYW5yZXEpKSB7XG5uZXQvbWFjODAyMTEvY2hhbi5jOjg1NTpcdFx0X2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmKGxvY2FsLCBjdHgsIHJzdmRfZm9yLCBmYWxzZSk7XG5uZXQvbWFjODAyMTEvY2hhbi5jLTg1Ni1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtODgwLVx0LyogY2hlY2sgaWYgbWluIGNoYW5jdHggYWxzbyBjaGFuZ2VkICovXG5uZXQvbWFjODAyMTEvY2hhbi5jOjg4MTpcdGNoYW5nZWQgfD0gX19pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZihsb2NhbCwgY3R4LCByc3ZkX2Zvcixcbm5ldC9tYWM4MDIxMS9jaGFuLmMtODgyLVx0XHRcdFx0XHRcdCAgICAgIGZhbHNlKTtcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTk5OT1pZWVlODAyMTFfYWxsb2NfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTEwMTktXHRjdHgtXHUwMDNlcmFkYXJfZGV0ZWN0ZWQgPSBmYWxzZTtcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MTAyMDpcdF9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYobG9jYWwsIGN0eCwgTlVMTCwgZmFsc2UpO1xubmV0L21hYzgwMjExL2NoYW4uYy0xMDIxLVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM9MTE4MT1zdGF0aWMgaW50IGllZWU4MDIxMV9hc3NpZ25fbGlua19jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTIwNi1cdFx0LyogcmVjYWxjIGNvbnNpZGVyaW5nIHRoZSBsaW5rIHdlJiMzOTtsbCB1c2UgaXQgZm9yIG5vdyAqL1xubmV0L21hYzgwMjExL2NoYW4uYzoxMjA3Olx0XHRfaWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYobG9jYWwsIG5ld19jdHgsIGxpbmssIGZhbHNlKTtcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTIwOC1cbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTE4ODU9c3RhdGljIGludCBpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2goc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYy0yMDAxLVxubmV0L21hYzgwMjExL2NoYW4uYzoyMDAyOlx0XHRfaWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYobG9jYWwsIGN0eCwgTlVMTCwgdHJ1ZSk7XG5uZXQvbWFjODAyMTEvY2hhbi5jLTIwMDMtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExOTcyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBDaGFubmVsIENvbnRleHQgUmVjYWxjdWxhdGlvbiBpbiBtYWM4MDIxMSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IGNoYW5uZWwgY29udGV4dCBtaW5pbXVtIGRlZmF1bHRzIGFyZSByZWNhbGN1bGF0ZWQgaW4gYG1hYzgwMjExYC4gSSBzZWUgdGhhdCB0aGUgZnVuY3Rpb24gYGllZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmYCBpcyBlaXRoZXIgZXhwb3J0ZWQgb3IsIGF0IHRoZSB2ZXJ5IGxlYXN0LCBpc24mIzM5O3Qgc3RhdGljLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY2hlY2sgaG93IGl0JiMzOTtzIHVzZWQg4oCTIGxldCYjMzk7cyBzZWUgd2hlcmUgYGllZWU4MDIxMV9jaGFuZ2VfY2hhbmN0eGAsIGBpZWVlODAyMTFfYWxsb2NfY2hhbmN0eGAsIGFuZCBgaWVlZTgwMjExX2Fzc2lnbl9saW5rX2NoYW5jdHhgIGNhbGwgaXQuIEkgY291bGQgYWxzbyB1c2UgdGhlc2Ugb3RoZXIgZnVuY3Rpb25zIGFzIEZvY3VzU3ltYm9scyB0b28uCgpIbW0sIGludGVyZXN0aW5nLCBgaWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9id2AgaXMgc3RhdGljLCBidXQgaXQmIzM5O3MgdGhlIG9uZSB0aGF0JiMzOTtzIGFjdHVhbGx5IGJlaW5nIG1vZGlmaWVkLiBDYW4gSSBzdGlsbCB1c2UgaXQgZm9yIG15IGFuYWx5c2lzPyBZZXMsIEkgY2FuIHVzZSBzdGF0aWMgZnVuY3Rpb25zIGluIEZvY3VzU3ltYm9scywgYnV0IGl0JiMzOTtzIG9mdGVuIGJldHRlciB0byBnbyB3aXRoIHNsaWdodGx5IGhpZ2hlci1sZXZlbCBvbmVzIGlmIHRoZXkgZXhpc3QuIEdpdmVuIHRoaXMsIEkmIzM5O20gZ29pbmcgdG8gaW5jbHVkZSBib3RoIGBpZWVlODAyMTFfZ2V0X2NoYW5jdHhfbWF4X3JlcXVpcmVkX2J3YCBhbmQgYF9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWZgIGluIG15IGFuYWx5c2lzLgoKTm93LCBhIHF1aWNrIHNhbml0eSBjaGVjayBvZiB0aGUgY29uZmlndXJhdGlvbi4gSSBrbm93IGBNQUM4MDIxMWAgaXMgdGhlIG1haW4gY29uZmlnLCBhbmQgYE1BQzgwMjExX0hXU0lNYCBpcyBoYW5keSBmb3IgZnV6emluZy4gSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxldmFudCBjb25maWdzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBMZXQgbWUgdGFrZSBhIGxvb2sgYXQgdGhlIGBuZXQvbWFjODAyMTEvTWFrZWZpbGVgIHRvIHNlZSBpZiB0aGUgYGNoYW4uY2AgZmlsZSBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkIGJhc2VkIG9uIGFueSBvdGhlciBjb25maWcgb3B0aW9ucy4gSnVzdCB3YW50IHRvIG1ha2Ugc3VyZSBJJiMzOTttIGNvbnNpZGVyaW5nIGFsbCByZWxldmFudCBzY2VuYXJpb3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE2IDAxOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NoYW4ubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvTWFrZWZpbGU9NT1tYWM4MDIxMS15IDo9IFxcXG4tLVxubmV0L21hYzgwMjExL01ha2VmaWxlLTMyLVx0d21lLm8gXFxcbm5ldC9tYWM4MDIxMS9NYWtlZmlsZTozMzpcdGNoYW4ubyBhcC5vIFxcXG5uZXQvbWFjODAyMTEvTWFrZWZpbGUtMzQtXHR0cmFjZS5vIG1sbWUubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNiAwMToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjgzNgoJCQkJCQkJb3V0cHV0OiAxNDYKCQkJCQkJCXRob3VnaHRzOiAyNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2ggaW4gdGhlIE1hYzgwMjExIFN1YnN5c3RlbSoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgdGllZCBpbnRvIGBtYWM4MDIxMS15YCwgbWVhbmluZyBpdCYjMzk7cyBhbHdheXMgaW5jbHVkZWQgd2hlbiBgTUFDODAyMTFgIGlzIGVuYWJsZWQuIFRoYXQmIzM5O3MgZ29vZCB0byBrbm93LiBMZXQmIzM5O3MgYnJlYWsgZG93biB0aGUgaW1wbGljYXRpb25zIGFuZCBidWlsZCBhIG1lbnRhbCBtYXAuCgpNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoIGlzIGBXb3J0aEZ1enppbmc6IHRydWVgLiBXaHk/IEJlY2F1c2UgaXQmIzM5O3MgZnVuZGFtZW50YWxseSBhbHRlcmluZyBob3cgdGhlIHN5c3RlbSBjYWxjdWxhdGVzIHRoZSBtYXhpbXVtIGNoYW5uZWwgYmFuZHdpZHRoIHJlcXVpcmVkLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBtYWM4MDIxMWAuIEl0IGNoYW5nZXMgdGhlIHJ1bGVzIGZvciB3aGVuIHRoZSBtb25pdG9yIGludGVyZmFjZSYjMzk7cyBiYW5kd2lkdGggY29uZmlndXJhdGlvbiBnZXRzIHVzZWQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIHNoaWZ0IGluIHRoZSBjb3JlIDgwMi4xMSBzdGFjayDigJMgd2hpY2ggbWVhbnMgdGhlcmUmIzM5O3MgYSBnb29kIGNoYW5jZSB0byBleHBvc2Ugc3VidGxlIGVkZ2UgY2FzZXMgZHVyaW5nIGZ1enppbmcuCgpNeSBwcmltYXJ5IGZvY3VzIG5lZWRzIHRvIGJlIG9uIHRoZXNlIHN5bWJvbHM6IGBpZWVlODAyMTFfZ2V0X2NoYW5jdHhfbWF4X3JlcXVpcmVkX2J3YCBhbmQgYF9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWZgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBoZWFydCBvZiB0aGUgY2hhbmdlIHJlc2lkZXMuIFRoZXNlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyBJIG5lZWQgdG8gdGFyZ2V0LgoKQW5kIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGZ1enppbmcgaXMgYXBwcm9wcmlhdGVseSBjb25maWd1cmVkLiBUaGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZDogYE1BQzgwMjExYCwgb2J2aW91c2x5LCBhbmQgYWxzbyBgTUFDODAyMTFfSFdTSU1gLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYE1BQzgwMjExX0hXU0lNYCBpcyAqZXhhY3RseSogdGhlIG5hbWUgdXNlZCBpbiB0aGUga2VybmVsIGNvbmZpZyBmaWxlcy4gTGV0IG1lIHF1aWNrbHkgY2hlY2vigKYgWWVwLCBgY29uZmlnIE1BQzgwMjExX0hXU0lNYCBpcyBkZWZpbmVkIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWdgLCBhbmQgYE1BQzgwMjExYCBpcyBpbiBgbmV0L21hYzgwMjExL0tjb25maWdgLiBFeGNlbGxlbnQuCgpOb3csIEkmIzM5O20gcmVhZHkgdG8gY2FsbCBzZXQtcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTYgMDE6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9idyYjMzQ7LAogICAgJiMzNDtfX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3IgZGV0ZXJtaW5pbmcgdGhlIG1heGltdW0gcmVxdWlyZWQgY2hhbm5lbCBiYW5kd2lkdGggaW4gbWFjODAyMTEuIEl0IGNoYW5nZXMgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhlIG1vbml0b3IgaW50ZXJmYWNlJiMzOTtzIGNvbmZpZ3VyZWQgYmFuZHdpZHRoIGlzIHVzZWQsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgODAyLjExIHN0YWNrLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYncmIzM0OywKICAgICYjMzQ7X19pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGRldGVybWluaW5nIHRoZSBtYXhpbXVtIHJlcXVpcmVkIGNoYW5uZWwgYmFuZHdpZHRoIGluIG1hYzgwMjExLiBJdCBjaGFuZ2VzIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZSBtb25pdG9yIGludGVyZmFjZSYjMzk7cyBjb25maWd1cmVkIGJhbmR3aWR0aCBpcyB1c2VkLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIDgwMi4xMSBzdGFjay4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjE0OjUzLjk2NTU2NzM2OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNTE4MDY4MDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndcIixcbiAgICBcIl9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGRldGVybWluaW5nIHRoZSBtYXhpbXVtIHJlcXVpcmVkIGNoYW5uZWwgYmFuZHdpZHRoIGluIG1hYzgwMjExLiBJdCBjaGFuZ2VzIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZSBtb25pdG9yIGludGVyZmFjZSdzIGNvbmZpZ3VyZWQgYmFuZHdpZHRoIGlzIHVzZWQsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgODAyLjExIHN0YWNrLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMToxNDo1My45NjU1NzUyNDlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyODkzNjEzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGFjMmQxZDA2MjUxMTM0YmI4MTkzMDcwMjVmZGQ1ZmNiNGE5ZGEwZTFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBKdWwgMTYgMDE6MTQ6NTIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2NoYW4uYyBiL25ldC9tYWM4MDIxMS9jaGFuLmNcXG5pbmRleCA1MTUyYjg0YTMzNTc3OS4uNzViYjIwNGFkNzQzMmMgMTAwNjQ0XFxuLS0tIGEvbmV0L21hYzgwMjExL2NoYW4uY1xcbisrKyBiL25ldC9tYWM4MDIxMS9jaGFuLmNcXG5AQCAtNjA3LDEwICs2MDcsMTIgQEAgaWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9idyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4gXFx0XFx0bWF4X2J3ID0gbWF4KG1heF9idywgd2lkdGgpO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoIXJzdmRfZm9yIHx8XFxuLVxcdCAgICByc3ZkX2Zvci1cXHUwMDNlc2RhdGEgPT0gcmN1X2FjY2Vzc19wb2ludGVyKGxvY2FsLVxcdTAwM2Vtb25pdG9yX3NkYXRhKSlcXG4rXFx0aWYgKCFyc3ZkX2ZvcilcXG4gXFx0XFx0Z290byBjaGVja19tb25pdG9yO1xcbiBcXG4rXFx0aWYgKHJzdmRfZm9yLVxcdTAwM2VzZGF0YSA9PSByY3VfYWNjZXNzX3BvaW50ZXIobG9jYWwtXFx1MDAzZW1vbml0b3Jfc2RhdGEpKVxcbitcXHRcXHRyZXR1cm4gbWF4KG1heF9idywgY3R4LVxcdTAwM2Vjb25mLmRlZi53aWR0aCk7XFxuK1xcbiBcXHQvKiBDb25zaWRlciB0aGUgbGluayBmb3Igd2hpY2ggdGhpcyBjaGFuY3R4IGlzIHJlc2VydmVkL2dvaW5nIHRvIGJlIGFzc2lnbmVkICovXFxuIFxcdHdpZHRoID0gaWVlZTgwMjExX2dldF93aWR0aF9vZl9saW5rKHJzdmRfZm9yKTtcXG4gXFx0bWF4X2J3ID0gbWF4KG1heF9idywgd2lkdGgpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMToxNDo1NC41OTU0NjU5MzNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5ODg4MTU2ODk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndcIixcbiAgICBcIl9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGRldGVybWluaW5nIHRoZSBtYXhpbXVtIHJlcXVpcmVkIGNoYW5uZWwgYmFuZHdpZHRoIGluIG1hYzgwMjExLiBJdCBjaGFuZ2VzIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZSBtb25pdG9yIGludGVyZmFjZSdzIGNvbmZpZ3VyZWQgYmFuZHdpZHRoIGlzIHVzZWQsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgODAyLjExIHN0YWNrLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGFjMmQxZDA2MjUxMTM0YmI4MTkzMDcwMjVmZGQ1ZmNiNGE5ZGEwZTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEp1bCAxNiAwMToxNDo1MiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9jaGFuLmMgYi9uZXQvbWFjODAyMTEvY2hhbi5jXG5pbmRleCA1MTUyYjg0YTMzNTc3OS4uNzViYjIwNGFkNzQzMmMgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvY2hhbi5jXG4rKysgYi9uZXQvbWFjODAyMTEvY2hhbi5jXG5AQCAtNjA3LDEwICs2MDcsMTIgQEAgaWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9idyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0bWF4X2J3ID0gbWF4KG1heF9idywgd2lkdGgpO1xuIFx0fVxuIFxuLVx0aWYgKCFyc3ZkX2ZvciB8fFxuLVx0ICAgIHJzdmRfZm9yLVx1MDAzZXNkYXRhID09IHJjdV9hY2Nlc3NfcG9pbnRlcihsb2NhbC1cdTAwM2Vtb25pdG9yX3NkYXRhKSlcbitcdGlmICghcnN2ZF9mb3IpXG4gXHRcdGdvdG8gY2hlY2tfbW9uaXRvcjtcbiBcbitcdGlmIChyc3ZkX2Zvci1cdTAwM2VzZGF0YSA9PSByY3VfYWNjZXNzX3BvaW50ZXIobG9jYWwtXHUwMDNlbW9uaXRvcl9zZGF0YSkpXG4rXHRcdHJldHVybiBtYXgobWF4X2J3LCBjdHgtXHUwMDNlY29uZi5kZWYud2lkdGgpO1xuK1xuIFx0LyogQ29uc2lkZXIgdGhlIGxpbmsgZm9yIHdoaWNoIHRoaXMgY2hhbmN0eCBpcyByZXNlcnZlZC9nb2luZyB0byBiZSBhc3NpZ25lZCAqL1xuIFx0d2lkdGggPSBpZWVlODAyMTFfZ2V0X3dpZHRoX29mX2xpbmsocnN2ZF9mb3IpO1xuIFx0bWF4X2J3ID0gbWF4KG1heF9idywgd2lkdGgpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDE6MTQ6NTQuNTk1NDY4MDAzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUwNTc0OTMwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCBpbiBgbmV0L21hYzgwMjExL2NoYW4uY2AqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBgbmV0L21hYzgwMjExL2NoYW4uY2AsIHNwZWNpZmljYWxseSB0aGUgYGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgY2hhbmdlIGRvZXMsIHNvIEknbGwgcmV2aWV3IHRoZSBkaWZmLiBMZXQncyBzZWUuLi4gaXQgbG9va3MgbGlrZSB0aGV5J3ZlIGFkZGVkIGEgY29uZGl0aW9uYWwgYmxvY2sgYXJvdW5kIHRoZSBcInJlc2VydmVkIGZvclwiIGxvZ2ljLiBQcmV2aW91c2x5LCB0aGUgbG9naWMgYXBwZWFyZWQgdG8gb25seSBjb25zaWRlciB0aGUgbW9uaXRvciBpbnRlcmZhY2UgaWYgYHJzdmRfZm9yYCB3YXMgbnVsbC4gTm93LCB0aGVyZSdzIGFuIGV4cGxpY2l0IGNoZWNrICp3aXRoaW4qIHRoYXQgYmxvY2sgdG8gc2VlIGlmIGByc3ZkX2ZvcmAgcG9pbnRzIHRvIHRoZSBtb25pdG9yJ3Mgc3RhdGlvbiBkYXRhIChgc2RhdGFgKS5cblxuVGhlIG9yaWdpbmFsIGNvZGUgY29tcGFyZWQgdGhlIGBzZGF0YWAgcG9pbnRlciBkaXJlY3RseSwgYnV0IG5vdyBpZiB0aGUgcmVzZXJ2ZWQgY2hhbm5lbCBpcyB0aGUgbW9uaXRvciBpbnRlcmZhY2UsIGl0IHJldHVybnMgdGhlICpkZWZhdWx0KiB3aWR0aC4gT3RoZXJ3aXNlLCBpdCBwcm9jZWVkcyBhcyBiZWZvcmUgYW5kIGNvbnNpZGVycyB0aGUgbGluayB0aGF0IHRoZSBjaGFubmVsIGNvbnRleHQgaXMgcmVzZXJ2ZWQgZm9yIHdoZW4gY2FsY3VsYXRpbmcgdGhlIG1heGltdW0gYmFuZHdpZHRoLiBUaGlzIGFwcGVhcnMgdG8gYmUgYSBidWcgZml4LCBhbmQgdGhlIGNvbW1pdCBtZXNzYWdlIHdpbGwgYmUgdGVsbGluZy4gSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgd2lkZXIgY29udGV4dCBvZiB0aGlzIGNoYW5nZSB3aXRoaW4gYG5ldC9tYWM4MDIxMWAgYW5kIGVuc3VyZSB0aGVyZSBhcmUgbm8gdW5pbnRlbmRlZCBjb25zZXF1ZW5jZXMuIFRoZSBjaGFuZ2UgbG9va3MgY29ycmVjdCBpbiBpc29sYXRpb24sIHRob3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk2MiwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjE1OjAwLjEwMTIxOTQzN1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDA1MTg2NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9id1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvY2hhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jaGFuLmM9NTgxPXN0YXRpYyBlbnVtIG5sODAyMTFfY2hhbl93aWR0aFxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6NTgyOmllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYncoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL2NoYW4uYy01ODMtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFuY3R4ICpjdHgsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTYzNj1fX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy02NTYtXFxubmV0L21hYzgwMjExL2NoYW4uYzo2NTc6XFx0bWF4X2J3ID0gaWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9idyhsb2NhbCwgY3R4LCByc3ZkX2ZvcixcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTY1OC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgY2hlY2tfcmVzZXJ2ZWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMToxNTowMC4zNDE3NDMzODZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDk2MDg5NDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIENoYW5uZWwgQ29udGV4dCBCYW5kd2lkdGggUmVxdWlyZW1lbnRzKipcblxuQWxyaWdodCwgSSdtIHRyYWNpbmcgZG93biB0aGlzIGJhbmR3aWR0aCBjYWxjdWxhdGlvbiBsb2dpYy4gVGhlIGBpZWVlODAyMTFfZ2V0X2NoYW5jdHhfbWF4X3JlcXVpcmVkX2J3YCBmdW5jdGlvbiBpcyB0aGUga2V5IG9uZSBoZXJlIOKAkyBJIGtub3cgdGhhdCBpdCBmaWd1cmVzIG91dCB0aGUgbWF4aW11bSBiYW5kd2lkdGggYSBjaGFubmVsIGNvbnRleHQgKm5lZWRzKi4gTm93LCBJJ20gemVyb2luZyBpbiBvbiB3aGVyZSB0aGF0IGZ1bmN0aW9uIGlzIGFjdHVhbGx5IGdldHRpbmcgaW52b2tlZC4gVGhlIGNhbGwgdG8gYGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndgIG9yaWdpbmF0ZXMgZnJvbSB0aGUgYF9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWZgIGZ1bmN0aW9uLiBTbywgbmV4dCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwtc2l0ZXMgb2YgYF9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWZgIOKAkyBpdCdzIHRoZSBjcml0aWNhbCBsaW5rIGluIHVuZGVyc3RhbmRpbmcgd2hlbiBhbmQgd2h5IHdlIHJlLWV2YWx1YXRlIHRoZXNlIGNoYW5uZWwgY29udGV4dCBiYW5kd2lkdGggcGFyYW1ldGVycy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0cmlnZ2VycyB0aGUgcmVjYWxjdWxhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk2NCwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjE1OjAzLjQzNzgzNTM0M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjUzMzA2MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvY2hhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jaGFuLmM9NjM1PXN0YXRpYyB1MzJcXG5uZXQvbWFjODAyMTEvY2hhbi5jOjYzNjpfX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtNjM3LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4LFxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYz03NDk9X2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy03NTktXFxubmV0L21hYzgwMjExL2NoYW4uYzo3NjA6XFx0Y2hhbmdlZCA9IF9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYobG9jYWwsIGN0eCwgcnN2ZF9mb3IsXFxubmV0L21hYzgwMjExL2NoYW4uYy03NjEtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBjaGVja19yZXNlcnZlZCk7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTgxMT1zdGF0aWMgdm9pZCBfaWVlZTgwMjExX2NoYW5nZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy04ODAtXFx0LyogY2hlY2sgaWYgbWluIGNoYW5jdHggYWxzbyBjaGFuZ2VkICovXFxubmV0L21hYzgwMjExL2NoYW4uYzo4ODE6XFx0Y2hhbmdlZCB8PSBfX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmKGxvY2FsLCBjdHgsIHJzdmRfZm9yLFxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtODgyLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGZhbHNlKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM9OTk5PWllZWU4MDIxMV9hbGxvY19jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy0xMDE5LVxcdGN0eC1cXHUwMDNlcmFkYXJfZGV0ZWN0ZWQgPSBmYWxzZTtcXG5uZXQvbWFjODAyMTEvY2hhbi5jOjEwMjA6XFx0X19pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZihsb2NhbCwgY3R4LCBOVUxMLCBmYWxzZSk7XFxubmV0L21hYzgwMjExL2NoYW4uYy0xMDIxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMToxNTowMy41NjMxNzE0ODJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTc5NzY2NjUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIG1hYzgwMjExIENoYW5uZWwgQ29udGV4dCoqXG5cbk9rYXksIHNvIHdlJ3JlIHRhbGtpbmcgYWJvdXQgbWFjODAyMTEgY2hhbm5lbCBjb250ZXh0IG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseS4gSSBuZWVkIHRvIGdldCBteSBoZWFkIGFyb3VuZCB0aGlzIHBhcnRpY3VsYXIgYXNwZWN0LiBNeSBwcmltYXJ5IGZvY3VzIHJpZ2h0IG5vdyBpcyB0byBsb2NhdGUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZGV0YWlscyBmb3IgbWFjODAyMTEuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIEknbGwgbmVlZCB0byBnbyBodW50aW5nIGZvciB0aGUgY29uZmlnIHRoYXQgZ292ZXJucyBob3cgdGhlc2UgY2hhbm5lbCBjb250ZXh0cyBhcmUgaGFuZGxlZC4gVGltZSB0byBkaWcgaW4gYW5kIGZpbmQgdGhvc2UgcGFyYW1ldGVycy4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjozODU4LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDE6MTU6MDYuMTQyOTQwMzY0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NzE5NTQ4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDODAyMTFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cXHRib29sXFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiIGlmIEVYUEVSVFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQyLVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXFxubmV0L21hYzgwMjExL0tjb25maWctNDktXFxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cXHRzdHJpbmdcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXFxcIlNvbWUgd2lyZWxlc3MgZHJpdmVycyByZXF1aXJlIGEgcmF0ZSBjb250cm9sIGFsZ29yaXRobVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTU5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBtYWM4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNjktXFxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03MS1cXHRib29sIFxcXCJFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3OTpjb25maWcgTUFDODAyMTFfTEVEU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVxcdGJvb2wgXFxcIkVuYWJsZSBMRUQgdHJpZ2dlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkV4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05OC1cXHRib29sIFxcXCJUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXFxubmV0L21hYzgwMjExL0tjb25maWc6MTEwOm1lbnVjb25maWcgTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cXHRib29sIFxcXCJTZWxlY3QgbWFjODAyMTEgZGVidWdnaW5nIGZlYXR1cmVzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTE1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXFx0Ym9vbCBcXFwiRG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE0Mzpjb25maWcgTUFDODAyMTFfTUxNRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cXHRib29sIFxcXCJWZXJib3NlIG1hbmFnZWQgTUxNRSBvdXRwdXRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXFx0Ym9vbCBcXFwiVmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTY0LVxcdGJvb2wgXFxcIlZlcmJvc2UgSFQgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3NTpjb25maWcgTUFDODAyMTFfT0NCX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTc2LVxcdGJvb2wgXFxcIlZlcmJvc2UgT0NCIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4NS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXFx0Ym9vbCBcXFwiVmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTk4LVxcdGJvb2wgXFxcIlZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIwOTpjb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjEwLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwZWVyIGxpbmsgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjIxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ4OmNvbmZpZyBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHN5bmNocm9uaXphdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3MS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyODE6Y29uZmlnIE1BQzgwMjExX1RETFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXFx0Ym9vbCBcXFwiVmVyYm9zZSBURExTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXFxubmV0L21hYzgwMjExL0tjb25maWctMjk0LVxcdGJvb2wgXFxcIkV4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXFxubmV0L21hYzgwMjExL0tjb25maWctMzA5LVxcdGludCBcXFwiU3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVxcXCIgaWYgTUFDODAyMTFfREVCVUdfTUVOVVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMToxNTowNi4zMDAxNDEzMDFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDM1OTY1OTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNQUM4MDIxMSBDaGFubmVsIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29yZSBjb25maWcgaGVyZSBpcyBkZWZpbml0ZWx5IGBNQUM4MDIxMWAuIFRoYXQgcG9pbnRzIHVzIGRpcmVjdGx5IHRvIHRoZSB3aXJlbGVzcyBuZXR3b3JraW5nIHN0YWNrLiBUaGUgdGhpbmcgdGhhdCdzIGltbWVkaWF0ZWx5IGdyYWJiaW5nIG15IGF0dGVudGlvbiBpcyBgaWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9id2AuIFRoaXMgZnVuY3Rpb24ncyBwcmVzZW5jZSBpbiB0aGUgZGlzY3Vzc2lvbiBtZWFucyBpdCdzIGxpa2VseSBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBjaGFubmVsIGNvbnRleHQgbWFuYWdlbWVudCBwdXp6bGUsIGFuZCBpdOKAmXMgZXhwb3NlZCB0aHJvdWdoIG5ldGxpbmsgY29tbWFuZHMuIFRoYXQncyBrZXkuIE5ldGxpbmsgbWVhbnMgd2UncmUgZGVhbGluZyB3aXRoIHRoZSB1c2Vyc3BhY2Uta2VybmVsIGludGVyZmFjZSBmb3IgY29uZmlndXJpbmcgdGhpbmdzIGxpa2UgaW50ZXJmYWNlcywgY2hhbm5lbHMsIGFuZCBvdGhlciBwYXJhbWV0ZXJzIHRoYXQgYXJlIHZpc2libGUgdG8gaGlnaGVyIGxldmVsIG5ldHdvcmtpbmcgdG9vbHMuXG5cbkdpdmVuIHRoYXQgaXQncyBkZWFsaW5nIHdpdGggYmFuZHdpZHRoLCBhbmQgaXQncyByZWFjaGFibGUgdGhyb3VnaCBuZXRsaW5rLCBpdCdzIHByZXR0eSBjbGVhciBpdCdzIHByb2JhYmx5IGludm9sdmVkIGluIHNldHRpbmcgb3IgcXVlcnlpbmcgdGhlIG1heGltdW0gYmFuZHdpZHRoIHJlcXVpcmVtZW50IGJhc2VkIG9uIHRoZSBjaGFubmVsIGNvbnRleHQuIEkgbmVlZCB0byBkaWcgaW50byBgbmV0L21hYzgwMjExL2NoYW4uY2AuIFRoZSBrZXJuZWwgaXMgb2Z0ZW4gb3JnYW5pemVkIGluIGEgdmVyeSBzdHJ1Y3R1cmVkIHdheSwgc28gSSdsbCBzdGFydCB0aGVyZSwgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGNvbmZpZ3Mgb3IgY29uZGl0aW9ucyBpbiB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjIzNSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjE1OjA5LjczNjEwOTczN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3MTU5Mjk2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9jaGFuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjE1OjA5LjkwMzI4NTIzMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDI2MzE2NDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBtYWM4MDIxMSBDaGFubmVsIENvbnRleHQgTWFuYWdlbWVudCoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgbmV0L21hYzgwMjExL2NoYW4uY2AgZmlsZSwgYW5kIEknbSBub3Qgc2VlaW5nIGFueSAqc3BlY2lmaWMqIGNvbmZpZyBvcHRpb25zIHJpZ2h0IG9mZiB0aGUgYmF0LiBUaGUgZnVuY3Rpb24gYGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndgIGlzLCBvZiBjb3Vyc2UsIHN0YXRpYy4gVGhhdOKAmXMgbm90IHVudXN1YWwuIExldCdzIHRyYWNlIHdoZXJlIGl0J3MgYmVpbmcgdXNlZC4gUmlnaHQsIGl0J3MgY2FsbGVkIGZyb20gYF9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWZgLiBUaGF0IG1ha2VzIHNlbnNlIGluIHRoZSBjb250ZXh0IG9mIHJlY2FsY3VsYXRpbmcgY2hhbm5lbCBjb250ZXh0IGRlZmluaXRpb25zLiBOb3csIGBfX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmYCBpdHNlbGYgZ2V0cyBjYWxsZWQgZnJvbSBhIGZldyBwbGFjZXM6IGBfaWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWZgLCBgX2llZWU4MDIxMV9jaGFuZ2VfY2hhbmN0eGAsIGFuZCBgaWVlZTgwMjExX2FsbG9jX2NoYW5jdHhgLiBCaW5nby4gVGhvc2UgYXJlIGFsbCBzcXVhcmVseSBpbiB0aGUgcmVhbG0gb2YgYG1hYzgwMjExYCdzIGNoYW5uZWwgY29udGV4dCBtYW5hZ2VtZW50LiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIHRoZSBwYXRoIHRvIGFueSB2dWxuZXJhYmlsaXR5IG9yIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jZSBpcyB0aHJvdWdoIGNoYW5uZWwgY29udGV4dCBhbGxvY2F0aW9uIGFuZCBtYW5pcHVsYXRpb24uXG5cblRoaW5raW5nIGFib3V0IGhvdyB0aGlzIGdldHMgZXhlcmNpc2VkLCBJIGltbWVkaWF0ZWx5IHRoaW5rIG9mIGBtYWM4MDIxMV9od3NpbWAuIEl0J3MgbXkgZ28tdG8gZm9yIGZ1enppbmcgYG1hYzgwMjExYC4gU28sIGBNQUM4MDIxMWAgYW5kIGBNQUM4MDIxMV9IV1NJTWAgYXJlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyBJIG5lZWQgdG8gZm9jdXMgb24uIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2ssIGJ1dCBpdCBpcyBsaWtlbHkgYE1BQzgwMjExX0hXU0lNYCB3aWxsIGJlIHJlZmVyZW5jZWQgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hYzgwMjExX2h3c2ltLmNgIG9yIGEgc2ltaWxhciBmaWxlLiBUaGF0J3MgdGhlIGxpa2VseSBzb3VyY2Ugb2YgYW55IGRlcGVuZGVuY2llcyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBob3cgdGhpcyBjaGFubmVsIGNvbnRleHQgbWFuYWdlbWVudCB3b3JrcyB3aXRoaW4gdGhlIHNpbXVsYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MTYsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDE6MTU6MTQuOTI5NjA0NDE5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjk1MjE1MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExX0hXU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjE1OjE1LjI1OTEzMjI1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzMzQ0MzIwNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIEJ1ZyBGaXggaW4gdGhlIE1BQzgwMjExIEhXU0lNIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgTUFDODAyMTFfSFdTSU1gLCB3aGljaCBJIGtub3cgaXMgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBzaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sLiBUaGUgZGVzY3JpcHRpb24gbWVudGlvbnMgYSBwb3RlbnRpYWwgTlVMTCBkZXJlZmVyZW5jZSBmb3IgYHJzdmRfZm9yYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gaW1tZWRpYXRlbHkgZGl2ZSBpbnRvIHRoZSBjb2RlLiBMZXQncyBzZWUuLi4gdGhlIG9yaWdpbmFsIGNvZGUgc25pcHBldCB3YXM6XG5cbmBgYGNcblx0aWYgKCFyc3ZkX2ZvciB8fFxuXHQgICAgcnN2ZF9mb3ItXHUwMDNlc2RhdGEgPT0gcmN1X2FjY2Vzc19wb2ludGVyKGxvY2FsLVx1MDAzZW1vbml0b3Jfc2RhdGEpKVxuXHRcdGdvdG8gY2hlY2tfbW9uaXRvcjtcbmBgYFxuXG5IbW0uLi4gV2FpdCBhIHNlY29uZC4gVGhlIGNoZWNrIGAhcnN2ZF9mb3JgIGNvbWVzICpmaXJzdCouIFRoYXQncyBhIHNob3J0LWNpcmN1aXQhIEl0ICpzaG91bGRuJ3QqIGRlcmVmZXJlbmNlIGByc3ZkX2ZvcmAgaWYgaXQncyBOVUxMLCBiZWNhdXNlIGlmIGByc3ZkX2ZvcmAgaXMgTlVMTCB0aGUgKmVudGlyZSogYGlmYCBjb25kaXRpb24gd291bGQgZXZhbHVhdGUgdG8gdHJ1ZSwgYW5kIGl0IHdvdWxkIGp1bXAgdG8gYGNoZWNrX21vbml0b3JgLiBUaGUgcGF0Y2ggbW9kaWZpZXMgdGhhdCBjb2RlIHRvIGJlOlxuXG5gYGBjXG5cdGlmICghcnN2ZF9mb3IpXG5cdFx0Z290byBjaGVja19tb25pdG9yO1xuXG5cdGlmIChyc3ZkX2Zvci1cdTAwM2VzZGF0YSA9PSByY3VfYWNjZXNzX3BvaW50ZXIobG9jYWwtXHUwMDNlbW9uaXRvcl9zZGF0YSkpXG5cdFx0cmV0dXJuIG1heChtYXhfYncsIGN0eC1cdTAwM2Vjb25mLmRlZi53aWR0aCk7XG5gYGBcblxuQWghIE5vdyBJIHNlZS4gVGhlIG9yaWdpbmFsIGNvZGUncyBgY2hlY2tfbW9uaXRvcmAgbG9naWMgdHJpZ2dlcmVkIHdoZW4gdGhlIHNlY29uZCBwYXJ0IG9mIHRoZSBjb25kaXRpb24gYHJzdmRfZm9yLVx1MDAzZXNkYXRhID09IHJjdV9hY2Nlc3NfcG9pbnRlcihsb2NhbC1cdTAwM2Vtb25pdG9yX3NkYXRhKWAgd2FzIHRydWUuIFRoZSBuZXcgY29kZSBkb2VzICpub3QqIGp1bXAgdG8gYGNoZWNrX21vbml0b3JgIGluIHRoYXQgY2FzZSwgYnV0IHJldHVybnMgYG1heChtYXhfYncsIGN0eC1cdTAwM2Vjb25mLmRlZi53aWR0aClgIGluc3RlYWQuXG5cblNvIHRoaXMgaXMgYSAqZnVuY3Rpb25hbCogY2hhbmdlIGluIGxvZ2ljLCBhIHN1YnRsZSBzaGlmdCBpbiB0aGUgZGVjaXNpb24tbWFraW5nIHByb2Nlc3MuIFRoZSBmaXggZG9lc24ndCBzaW1wbHkgcmVtb3ZlIGEgTlVMTCBkZXJlZmVyZW5jZTsgaXQgY2hhbmdlcyB3aGF0IHRoZSBmdW5jdGlvbiBkb2VzIHVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgY2hlY2tfbW9uaXRvcmAgZG9lcyB0byBmdWxseSBncmFzcCB0aGUgaW1wbGljYXRpb24gb2YgdGhpcyBjaGFuZ2UuIExldCBtZSBxdWlja2x5IGV4YW1pbmUgYGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndgIHRvIHNlZSB0aGUgaW1wYWN0IG9mIHRoaXMgZnVuY3Rpb25hbCBkaWZmZXJlbmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDA4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjE1OjIxLjU5MzU2NjU1MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI4MjQ3MzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNoZWNrX21vbml0b3I6XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9jaGFuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2NoYW4uYz01ODI9aWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9idyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtNjE5LVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6NjIwOmNoZWNrX21vbml0b3I6XFxubmV0L21hYzgwMjExL2NoYW4uYy02MjEtXFx0LyogdXNlIHRoZSBjb25maWd1cmVkIGJhbmR3aWR0aCBpbiBjYXNlIG9mIG1vbml0b3IgaW50ZXJmYWNlICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjE1OjIxLjgyMTgxODg2MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzYzNzE3ODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHByb3ZpZGVkIGNvZGUgc25pcHBldCwgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyBhbiBleHBlcnQtbGV2ZWwgdW5kZXJzdGFuZGluZzpcblxuKipBbmFseXppbmcgYGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCB0aGUgaW1wbGVtZW50YXRpb24gZnJvbSBsaW5lcyA1ODIgdG8gNjMwLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBlc3RhYmxpc2ggdGhlIGNvbnRleHQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiBpcyAqc3VwcG9zZWQqIHRvIGRvIHdpdGhpbiB0aGUgbGFyZ2VyIDgwMi4xMSBmcmFtZXdvcmsuIEp1ZGdpbmcgZnJvbSB0aGUgbmFtZSwgaXQncyBsaWtlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZSBtYXhpbXVtIGJhbmR3aWR0aCByZXF1aXJlZCBieSBhIGNoYW5uZWwgY29udGV4dCwgcHJlc3VtYWJseSBmb3IgdGhpbmdzIGxpa2UgYWxsb2NhdGlvbiBvciBjYXBhYmlsaXR5IG5lZ290aWF0aW9uLlxuXG5JJ20gaW1tZWRpYXRlbHkgbG9va2luZyBmb3IgdGhlIGNyaXRpY2FsIHBhcnRzOiB0aGUgaW5wdXRzLCB0aGUgcHJvY2Vzc2luZyBsb2dpYywgYW5kIHRoZSBvdXRwdXRzLiBJJ2QgZXhwZWN0IGl0IHRha2VzIHRoZSBgY2hhbmN0eGAgKGNoYW5uZWwgY29udGV4dCkgYXMgYSBwcmltYXJ5IGFyZ3VtZW50LCBvYnZpb3VzbHkuIFRoZSBmdW5jdGlvbidzIGpvYiBpcyB0byBmaWd1cmUgb3V0IHRoZSBtYXhpbXVtIGJhbmR3aWR0aCBpdCBtaWdodCBuZWVkIHRvIHVzZS4gSSdkIGV4cGVjdCBpdCB0byBoYW5kbGUgZGlmZmVyZW50IHNjZW5hcmlvcyAtIDIwTUh6LCA0ME1IeiwgODBNSHosIGFuZCBwb3RlbnRpYWxseSBldmVuIDE2ME1IeiBvciB3aWRlciBjaGFubmVscyBkZXBlbmRpbmcgb24gdGhlIHN0YW5kYXJkLiBJJ20gZ29pbmcgdG8gbG9vayBmb3IgYnJhbmNoaW5nIGJhc2VkIG9uIHRoaW5ncyBsaWtlIHRoZSBgY2hhbmN0eGAncyBjb25maWd1cmVkIGJhbmR3aWR0aCwgdGhlIHN0YW5kYXJkIHN1cHBvcnRlZCAoYS9iL2cvbi9hYy9heC4uLiksIGFuZCBwZXJoYXBzIGFueSByZWd1bGF0b3J5IGNvbnN0cmFpbnRzIG9yIGNhcGFiaWxpdGllcyBhZHZlcnRpc2VkIGJ5IHRoZSBhc3NvY2lhdGVkIHJhZGlvLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgdXNlIG9mIGFueSBoZWxwZXIgZnVuY3Rpb25zIG9yIG1hY3JvcyBpbnZvbHZlZCwgYXMgdGhhdCB3aWxsIGJlIHdoZXJlIHRoZSBkZXRhaWwgcmVzaWRlcy4gSSdtIGV4cGVjdGluZyBhIGNsZWFuLCBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gZ2l2ZW4gaXRzIGltcG9ydGFuY2UgaW4gdGhlIGRyaXZlci4gQSBwb29ybHkgb3B0aW1pemVkIGltcGxlbWVudGF0aW9uIGluIHNvbWV0aGluZyBmdW5kYW1lbnRhbCBsaWtlIHRoaXMgd2lsbCBpbXBhY3QgcGVyZm9ybWFuY2UgYWNyb3NzIHRoZSBib2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQxOCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE2VDAxOjE1OjI1LjU4NTUzOTA2OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODU5NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L21hYzgwMjExL2NoYW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1ODIsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA1ODI6XFx0aWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9idyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4gNTgzOlxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4LFxcbiA1ODQ6XFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKnJzdmRfZm9yLFxcbiA1ODU6XFx0XFx0XFx0XFx0XFx0ICAgICAgYm9vbCBjaGVja19yZXNlcnZlZClcXG4gNTg2OlxcdHtcXG4gNTg3OlxcdFxcdGVudW0gbmw4MDIxMV9jaGFuX3dpZHRoIG1heF9idyA9IE5MODAyMTFfQ0hBTl9XSURUSF8yMF9OT0hUO1xcbiA1ODg6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9jaGFuY3R4X3VzZXJfaXRlciBpdGVyO1xcbiA1ODk6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGE7XFxuIDU5MDpcXHRcXHRlbnVtIG5sODAyMTFfY2hhbl93aWR0aCB3aWR0aDtcXG4gNTkxOlxcdFxcbiA1OTI6XFx0XFx0aWYgKFdBUk5fT04oY2hlY2tfcmVzZXJ2ZWQgXFx1MDAyNlxcdTAwMjYgcnN2ZF9mb3IpKVxcbiA1OTM6XFx0XFx0XFx0cmV0dXJuIGN0eC1cXHUwMDNlY29uZi5kZWYud2lkdGg7XFxuIDU5NDpcXHRcXG4gNTk1OlxcdFxcdC8qIFdoZW4gdGhpcyBpcyB0cnVlIHdlIG9ubHkgY2FyZSBhYm91dCB0aGUgcmVzZXJ2aW5nIGxpbmtzICovXFxuIDU5NjpcXHRcXHRpZiAoY2hlY2tfcmVzZXJ2ZWQpIHtcXG4gNTk3OlxcdFxcdFxcdGZvcl9lYWNoX2NoYW5jdHhfdXNlcl9yZXNlcnZlZChsb2NhbCwgY3R4LCBcXHUwMDI2aXRlcikge1xcbiA1OTg6XFx0XFx0XFx0XFx0d2lkdGggPSBpZWVlODAyMTFfZ2V0X3dpZHRoX29mX2NoYW5jdHhfdXNlcihcXHUwMDI2aXRlcik7XFxuIDU5OTpcXHRcXHRcXHRcXHRtYXhfYncgPSBtYXgobWF4X2J3LCB3aWR0aCk7XFxuIDYwMDpcXHRcXHRcXHR9XFxuIDYwMTpcXHRcXHRcXHRnb3RvIGNoZWNrX21vbml0b3I7XFxuIDYwMjpcXHRcXHR9XFxuIDYwMzpcXHRcXG4gNjA0OlxcdFxcdC8qIENvbnNpZGVyIGFsbCBhc3NpZ25lZCBsaW5rcyAqL1xcbiA2MDU6XFx0XFx0Zm9yX2VhY2hfY2hhbmN0eF91c2VyX2Fzc2lnbmVkKGxvY2FsLCBjdHgsIFxcdTAwMjZpdGVyKSB7XFxuIDYwNjpcXHRcXHRcXHR3aWR0aCA9IGllZWU4MDIxMV9nZXRfd2lkdGhfb2ZfY2hhbmN0eF91c2VyKFxcdTAwMjZpdGVyKTtcXG4gNjA3OlxcdFxcdFxcdG1heF9idyA9IG1heChtYXhfYncsIHdpZHRoKTtcXG4gNjA4OlxcdFxcdH1cXG4gNjA5OlxcdFxcbiA2MTA6XFx0XFx0aWYgKCFyc3ZkX2ZvcilcXG4gNjExOlxcdFxcdFxcdGdvdG8gY2hlY2tfbW9uaXRvcjtcXG4gNjEyOlxcdFxcbiA2MTM6XFx0XFx0aWYgKHJzdmRfZm9yLVxcdTAwM2VzZGF0YSA9PSByY3VfYWNjZXNzX3BvaW50ZXIobG9jYWwtXFx1MDAzZW1vbml0b3Jfc2RhdGEpKVxcbiA2MTQ6XFx0XFx0XFx0cmV0dXJuIG1heChtYXhfYncsIGN0eC1cXHUwMDNlY29uZi5kZWYud2lkdGgpO1xcbiA2MTU6XFx0XFxuIDYxNjpcXHRcXHQvKiBDb25zaWRlciB0aGUgbGluayBmb3Igd2hpY2ggdGhpcyBjaGFuY3R4IGlzIHJlc2VydmVkL2dvaW5nIHRvIGJlIGFzc2lnbmVkICovXFxuIDYxNzpcXHRcXHR3aWR0aCA9IGllZWU4MDIxMV9nZXRfd2lkdGhfb2ZfbGluayhyc3ZkX2Zvcik7XFxuIDYxODpcXHRcXHRtYXhfYncgPSBtYXgobWF4X2J3LCB3aWR0aCk7XFxuIDYxOTpcXHRcXG4gNjIwOlxcdGNoZWNrX21vbml0b3I6XFxuIDYyMTpcXHRcXHQvKiB1c2UgdGhlIGNvbmZpZ3VyZWQgYmFuZHdpZHRoIGluIGNhc2Ugb2YgbW9uaXRvciBpbnRlcmZhY2UgKi9cXG4gNjIyOlxcdFxcdHNkYXRhID0gd2lwaHlfZGVyZWZlcmVuY2UobG9jYWwtXFx1MDAzZWh3LndpcGh5LCBsb2NhbC1cXHUwMDNlbW9uaXRvcl9zZGF0YSk7XFxuIDYyMzpcXHRcXHRpZiAoc2RhdGEgXFx1MDAyNlxcdTAwMjZcXG4gNjI0OlxcdFxcdCAgICByY3VfYWNjZXNzX3BvaW50ZXIoc2RhdGEtXFx1MDAzZXZpZi5ic3NfY29uZi5jaGFuY3R4X2NvbmYpID09IFxcdTAwMjZjdHgtXFx1MDAzZWNvbmYpXFxuIDYyNTpcXHRcXHRcXHRtYXhfYncgPSBtYXgobWF4X2J3LCBjdHgtXFx1MDAzZWNvbmYuZGVmLndpZHRoKTtcXG4gNjI2OlxcdFxcbiA2Mjc6XFx0XFx0cmV0dXJuIG1heF9idztcXG4gNjI4OlxcdH1cXG4gNjI5OlxcdFxcbiA2MzA6XFx0LypcXG4gNjMxOlxcdCAqIHJlY2FsYyB0aGUgbWluIHJlcXVpcmVkIGNoYW4gd2lkdGggb2YgdGhlIGNoYW5uZWwgY29udGV4dCwgd2hpY2ggaXNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDE6MTU6MjUuNTg1NzI3MjE5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc0MDA1NjM0NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBDb2RlIE1vZGlmaWNhdGlvbioqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIG92ZXIgdGhpcyBjb2RlIGNoYW5nZSwgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIGEgZnVuY3Rpb25hbCBkaWZmZXJlbmNlLiBJbiB0aGUgb3JpZ2luYWwgdmVyc2lvbiwgaWYgYHJzdmRfZm9yLVx1MDAzZXNkYXRhYCBtYXRjaGVkIGBsb2NhbC1cdTAwM2Vtb25pdG9yX3NkYXRhYCwgaXQgd291bGQganVtcCB0byBgY2hlY2tfbW9uaXRvcmAuIFdpdGhpbiBgY2hlY2tfbW9uaXRvcmAsIGl0IHdvdWxkIHRoZW4gdmVyaWZ5IGlmIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBkZXRhaWwsIGBzZGF0YS1cdTAwM2V2aWYuYnNzX2NvbmYuY2hhbmN0eF9jb25mYCwgbWF0Y2hlZCBhIHNwZWNpZmljIGNvbnRleHQsIGBcdTAwMjZjdHgtXHUwMDNlY29uZmAuIE9ubHkgaWYgKnRoYXQqIGNvbmRpdGlvbiB3YXMgYWxzbyB0cnVlIHdvdWxkIGl0IHVwZGF0ZSB0aGUgYmFuZHdpZHRoIChgbWF4X2J3YCkuXG5cblRoZSBuZXcgY29kZSwgaG93ZXZlciwgdGhyb3dzIHRoYXQgc2Vjb25kIGNoZWNrIG91dCB0aGUgd2luZG93ISBOb3csIGlmIHRoZSB0d28gYHNkYXRhYCBwb2ludGVycyBtYXRjaCwgaXQgKmFsd2F5cyogcmV0dXJucyBgbWF4KG1heF9idywgY3R4LVx1MDAzZWNvbmYuZGVmLndpZHRoKWAuIEl0IGNvbXBsZXRlbHkgYnlwYXNzZXMgdGhlIGNvbnRleHQgY2hlY2sgdGhhdCB3YXMgcHJldmlvdXNseSBpbiBwbGFjZS4gVGhhdCBpcyBhIHNpZ25pZmljYW50IGJlaGF2aW9yIGFsdGVyYXRpb24gYW5kIGRlZmluaXRlbHkgd2FycmFudHMgYSBjbG9zZXIgbG9vay4gSSdkIGNvbnNpZGVyIHRoaXMgYSBoaWdoLXByaW9yaXR5IGFyZWEgZm9yIGZ1enppbmcuXG5cbkdpdmVuIHRoYXQgdGhlIHRhcmdldCBmdW5jdGlvbiwgYGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndgLCBpcyBzdGF0aWMsIEkgbmVlZCB0byBmb2N1cyBvbiBpdHMgY2FsbGVycy4gTGV0J3Mgc2VlLi4uIGBfX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmYCBhbmQgYF9pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZmAgc2VlbSBsaWtlIHRoZSBsaWtlbHkgY2FuZGlkYXRlcywgYnV0LCBob2xkIG9uIGEgc2Vjb25kLi4uaXQgbG9va3MgbGlrZSBgX19pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZmAgaXMgYWxzbyBzdGF0aWMhIEFscmlnaHQsIGl0J3MgdGltZSB0byBleGFtaW5lIHRoZSBleHBvcnQgbWFwIHRvIGlkZW50aWZ5IHdoaWNoIGZ1bmN0aW9ucyBhcmUgYXQgYSBoaWdoZXIgbGV2ZWwsIHBvdGVudGlhbGx5IGludGVyYWN0aW5nIHdpdGggdGhlIG1vZGlmaWVkIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3NzIsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMToxNTozMi45ODYyOTMxOTVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1OTgzMzIxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfaWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL2NoYW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvY2hhbi5jPTYzNT1zdGF0aWMgdTMyXFxubmV0L21hYzgwMjExL2NoYW4uYzo2MzY6X19pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTYzNy1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHggKmN0eCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM9NzQ4PXN0YXRpYyB2b2lkXFxubmV0L21hYzgwMjExL2NoYW4uYzo3NDk6X2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtNzUwLVxcdFxcdFxcdFxcdCAgc3RydWN0IGllZWU4MDIxMV9jaGFuY3R4ICpjdHgsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTc1OS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jOjc2MDpcXHRjaGFuZ2VkID0gX19pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZihsb2NhbCwgY3R4LCByc3ZkX2ZvcixcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTc2MS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIGNoZWNrX3Jlc2VydmVkKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM9NzczPXZvaWQgaWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTc3NS17XFxubmV0L21hYzgwMjExL2NoYW4uYzo3NzY6XFx0X2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmKGxvY2FsLCBjdHgsIE5VTEwsIGZhbHNlKTtcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTc3Ny19XFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTgxMT1zdGF0aWMgdm9pZCBfaWVlZTgwMjExX2NoYW5nZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy04NTQtXFx0aWYgKGllZWU4MDIxMV9jaGFucmVxX2lkZW50aWNhbChcXHUwMDI2Y3R4X3JlcSwgY2hhbnJlcSkpIHtcXG5uZXQvbWFjODAyMTEvY2hhbi5jOjg1NTpcXHRcXHRfaWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYobG9jYWwsIGN0eCwgcnN2ZF9mb3IsIGZhbHNlKTtcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTg1Ni1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTg4MC1cXHQvKiBjaGVjayBpZiBtaW4gY2hhbmN0eCBhbHNvIGNoYW5nZWQgKi9cXG5uZXQvbWFjODAyMTEvY2hhbi5jOjg4MTpcXHRjaGFuZ2VkIHw9IF9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYobG9jYWwsIGN0eCwgcnN2ZF9mb3IsXFxubmV0L21hYzgwMjExL2NoYW4uYy04ODItXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgZmFsc2UpO1xcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYz05OTk9aWVlZTgwMjExX2FsbG9jX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTEwMTktXFx0Y3R4LVxcdTAwM2VyYWRhcl9kZXRlY3RlZCA9IGZhbHNlO1xcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MTAyMDpcXHRfX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmKGxvY2FsLCBjdHgsIE5VTEwsIGZhbHNlKTtcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTEwMjEtXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTExODE9c3RhdGljIGludCBpZWVlODAyMTFfYXNzaWduX2xpbmtfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTIwNi1cXHRcXHQvKiByZWNhbGMgY29uc2lkZXJpbmcgdGhlIGxpbmsgd2UnbGwgdXNlIGl0IGZvciBub3cgKi9cXG5uZXQvbWFjODAyMTEvY2hhbi5jOjEyMDc6XFx0XFx0X2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmKGxvY2FsLCBuZXdfY3R4LCBsaW5rLCBmYWxzZSk7XFxubmV0L21hYzgwMjExL2NoYW4uYy0xMjA4LVxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYz0xODg1PXN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy0yMDAxLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjAwMjpcXHRcXHRfaWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYobG9jYWwsIGN0eCwgTlVMTCwgdHJ1ZSk7XFxubmV0L21hYzgwMjExL2NoYW4uYy0yMDAzLVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDE6MTU6MzMuMTQ2MTMyNjgxWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMTA0MjY0MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIENoYW5uZWwgQ29udGV4dCBSZWNhbGN1bGF0aW9uIGluIG1hYzgwMjExKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IGNoYW5uZWwgY29udGV4dCBtaW5pbXVtIGRlZmF1bHRzIGFyZSByZWNhbGN1bGF0ZWQgaW4gYG1hYzgwMjExYC4gSSBzZWUgdGhhdCB0aGUgZnVuY3Rpb24gYGllZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmYCBpcyBlaXRoZXIgZXhwb3J0ZWQgb3IsIGF0IHRoZSB2ZXJ5IGxlYXN0LCBpc24ndCBzdGF0aWMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBjaGVjayBob3cgaXQncyB1c2VkIOKAkyBsZXQncyBzZWUgd2hlcmUgYGllZWU4MDIxMV9jaGFuZ2VfY2hhbmN0eGAsIGBpZWVlODAyMTFfYWxsb2NfY2hhbmN0eGAsIGFuZCBgaWVlZTgwMjExX2Fzc2lnbl9saW5rX2NoYW5jdHhgIGNhbGwgaXQuIEkgY291bGQgYWxzbyB1c2UgdGhlc2Ugb3RoZXIgZnVuY3Rpb25zIGFzIEZvY3VzU3ltYm9scyB0b28uXG5cbkhtbSwgaW50ZXJlc3RpbmcsIGBpZWVlODAyMTFfZ2V0X2NoYW5jdHhfbWF4X3JlcXVpcmVkX2J3YCBpcyBzdGF0aWMsIGJ1dCBpdCdzIHRoZSBvbmUgdGhhdCdzIGFjdHVhbGx5IGJlaW5nIG1vZGlmaWVkLiBDYW4gSSBzdGlsbCB1c2UgaXQgZm9yIG15IGFuYWx5c2lzPyBZZXMsIEkgY2FuIHVzZSBzdGF0aWMgZnVuY3Rpb25zIGluIEZvY3VzU3ltYm9scywgYnV0IGl0J3Mgb2Z0ZW4gYmV0dGVyIHRvIGdvIHdpdGggc2xpZ2h0bHkgaGlnaGVyLWxldmVsIG9uZXMgaWYgdGhleSBleGlzdC4gR2l2ZW4gdGhpcywgSSdtIGdvaW5nIHRvIGluY2x1ZGUgYm90aCBgaWVlZTgwMjExX2dldF9jaGFuY3R4X21heF9yZXF1aXJlZF9id2AgYW5kIGBfX2llZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmYCBpbiBteSBhbmFseXNpcy5cblxuTm93LCBhIHF1aWNrIHNhbml0eSBjaGVjayBvZiB0aGUgY29uZmlndXJhdGlvbi4gSSBrbm93IGBNQUM4MDIxMWAgaXMgdGhlIG1haW4gY29uZmlnLCBhbmQgYE1BQzgwMjExX0hXU0lNYCBpcyBoYW5keSBmb3IgZnV6emluZy4gSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxldmFudCBjb25maWdzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBMZXQgbWUgdGFrZSBhIGxvb2sgYXQgdGhlIGBuZXQvbWFjODAyMTEvTWFrZWZpbGVgIHRvIHNlZSBpZiB0aGUgYGNoYW4uY2AgZmlsZSBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkIGJhc2VkIG9uIGFueSBvdGhlciBjb25maWcgb3B0aW9ucy4gSnVzdCB3YW50IHRvIG1ha2Ugc3VyZSBJJ20gY29uc2lkZXJpbmcgYWxsIHJlbGV2YW50IHNjZW5hcmlvcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE5NzIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTZUMDE6MTU6MzguMjU2NTYxMzYxWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjk1NTc1NjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2hhbi5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvTWFrZWZpbGU9NT1tYWM4MDIxMS15IDo9IFxcXFxcXG4tLVxcbm5ldC9tYWM4MDIxMS9NYWtlZmlsZS0zMi1cXHR3bWUubyBcXFxcXFxubmV0L21hYzgwMjExL01ha2VmaWxlOjMzOlxcdGNoYW4ubyBhcC5vIFxcXFxcXG5uZXQvbWFjODAyMTEvTWFrZWZpbGUtMzQtXFx0dHJhY2UubyBtbG1lLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMToxNTozOC40MjYxMjY5MTVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTgyNzc3NzAxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCBpbiB0aGUgTWFjODAyMTEgU3Vic3lzdGVtKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHRpZWQgaW50byBgbWFjODAyMTEteWAsIG1lYW5pbmcgaXQncyBhbHdheXMgaW5jbHVkZWQgd2hlbiBgTUFDODAyMTFgIGlzIGVuYWJsZWQuIFRoYXQncyBnb29kIHRvIGtub3cuIExldCdzIGJyZWFrIGRvd24gdGhlIGltcGxpY2F0aW9ucyBhbmQgYnVpbGQgYSBtZW50YWwgbWFwLlxuXG5NeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoIGlzIGBXb3J0aEZ1enppbmc6IHRydWVgLiBXaHk/IEJlY2F1c2UgaXQncyBmdW5kYW1lbnRhbGx5IGFsdGVyaW5nIGhvdyB0aGUgc3lzdGVtIGNhbGN1bGF0ZXMgdGhlIG1heGltdW0gY2hhbm5lbCBiYW5kd2lkdGggcmVxdWlyZWQsIHNwZWNpZmljYWxseSB3aXRoaW4gYG1hYzgwMjExYC4gSXQgY2hhbmdlcyB0aGUgcnVsZXMgZm9yIHdoZW4gdGhlIG1vbml0b3IgaW50ZXJmYWNlJ3MgYmFuZHdpZHRoIGNvbmZpZ3VyYXRpb24gZ2V0cyB1c2VkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBzaGlmdCBpbiB0aGUgY29yZSA4MDIuMTEgc3RhY2sg4oCTIHdoaWNoIG1lYW5zIHRoZXJlJ3MgYSBnb29kIGNoYW5jZSB0byBleHBvc2Ugc3VidGxlIGVkZ2UgY2FzZXMgZHVyaW5nIGZ1enppbmcuXG5cbk15IHByaW1hcnkgZm9jdXMgbmVlZHMgdG8gYmUgb24gdGhlc2Ugc3ltYm9sczogYGllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndgIGFuZCBgX19pZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZmAuIFRoYXQncyB3aGVyZSB0aGUgaGVhcnQgb2YgdGhlIGNoYW5nZSByZXNpZGVzLiBUaGVzZSBhcmUgdGhlIGtleSBmdW5jdGlvbnMgSSBuZWVkIHRvIHRhcmdldC5cblxuQW5kIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGZ1enppbmcgaXMgYXBwcm9wcmlhdGVseSBjb25maWd1cmVkLiBUaGUgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZDogYE1BQzgwMjExYCwgb2J2aW91c2x5LCBhbmQgYWxzbyBgTUFDODAyMTFfSFdTSU1gLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYE1BQzgwMjExX0hXU0lNYCBpcyAqZXhhY3RseSogdGhlIG5hbWUgdXNlZCBpbiB0aGUga2VybmVsIGNvbmZpZyBmaWxlcy4gTGV0IG1lIHF1aWNrbHkgY2hlY2vigKYgWWVwLCBgY29uZmlnIE1BQzgwMjExX0hXU0lNYCBpcyBkZWZpbmVkIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWdgLCBhbmQgYE1BQzgwMjExYCBpcyBpbiBgbmV0L21hYzgwMjExL0tjb25maWdgLiBFeGNlbGxlbnQuXG5cbk5vdywgSSdtIHJlYWR5IHRvIGNhbGwgc2V0LXJlc3VsdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODM2LCJPdXRwdXRUb2tlbnMiOjE0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNlQwMToxNTo0NC4yNTM5MDY2NTFaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjk3MTA5MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndcIixcbiAgICBcIl9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGRldGVybWluaW5nIHRoZSBtYXhpbXVtIHJlcXVpcmVkIGNoYW5uZWwgYmFuZHdpZHRoIGluIG1hYzgwMjExLiBJdCBjaGFuZ2VzIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZSBtb25pdG9yIGludGVyZmFjZSdzIGNvbmZpZ3VyZWQgYmFuZHdpZHRoIGlzIHVzZWQsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgODAyLjExIHN0YWNrLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9nZXRfY2hhbmN0eF9tYXhfcmVxdWlyZWRfYndcIixcbiAgICBcIl9faWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWZcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIGRldGVybWluaW5nIHRoZSBtYXhpbXVtIHJlcXVpcmVkIGNoYW5uZWwgYmFuZHdpZHRoIGluIG1hYzgwMjExLiBJdCBjaGFuZ2VzIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoZSBtb25pdG9yIGludGVyZmFjZSdzIGNvbmZpZ3VyZWQgYmFuZHdpZHRoIGlzIHVzZWQsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgODAyLjExIHN0YWNrLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowfk8cf[1] Phase: Succeeded StartedAt: 2026-07-16 01:15:55 +0000 UTC FinishedAt: 2026-07-16 01:15:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfk8cf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-16 01:15:55 +0000 UTC FinishedAt: 2026-07-16 01:15:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfk8cf[2] Phase: Succeeded StartedAt: 2026-07-16 01:15:55 +0000 UTC FinishedAt: 2026-07-16 05:37:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-16 01:15:55 +0000 UTC FinishedAt: 2026-07-16 05:37:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-16 01:15:55 +0000 UTC FinishedAt: 2026-07-16 01:16:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-16 01:15:55 +0000 UTC FinishedAt: 2026-07-16 01:16:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfk8cf/series-workflowfk8cf-convert-artifact-1238758646/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-16 01:16:05 +0000 UTC FinishedAt: 2026-07-16 01:53:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-16 01:16:05 +0000 UTC FinishedAt: 2026-07-16 01:53:15 +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:*95771b76-bdaa-45ff-b28c-fd628c0cfbda,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-workflowfk8cf/series-workflowfk8cf-convert-artifact-1238758646/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": "dd57f88c-7e5c-40a2-9f66-af7e8c16f3bb", "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-workflowfk8cf/series-workflowfk8cf-build-action-2101088268/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-16 01:16:05 +0000 UTC FinishedAt: 2026-07-16 01:53:05 +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:*95771b76-bdaa-45ff-b28c-fd628c0cfbda,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-workflowfk8cf/series-workflowfk8cf-convert-artifact-1238758646/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": "dd57f88c-7e5c-40a2-9f66-af7e8c16f3bb", "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-workflowfk8cf/series-workflowfk8cf-build-action-2101088268/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-16 01:53:15 +0000 UTC FinishedAt: 2026-07-16 01:53:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-16 01:53:15 +0000 UTC FinishedAt: 2026-07-16 01:53:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-16 01:53:15 +0000 UTC FinishedAt: 2026-07-16 01:53:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-16 01:53:15 +0000 UTC FinishedAt: 2026-07-16 01:53:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfk8cf/series-workflowfk8cf-convert-artifact-2956848265/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-16 01:53:25 +0000 UTC FinishedAt: 2026-07-16 01:55:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-16 01:53:25 +0000 UTC FinishedAt: 2026-07-16 01:55:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*dd57f88c-7e5c-40a2-9f66-af7e8c16f3bb,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-workflowfk8cf/series-workflowfk8cf-build-action-2101088268/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-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-16 01:55:34 +0000 UTC FinishedAt: 2026-07-16 01:55:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-16 01:55:34 +0000 UTC FinishedAt: 2026-07-16 01:55:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-16 01:55:34 +0000 UTC FinishedAt: 2026-07-16 02:33:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-16 01:55:34 +0000 UTC FinishedAt: 2026-07-16 02:33:08 +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:*95771b76-bdaa-45ff-b28c-fd628c0cfbda,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-workflowfk8cf/series-workflowfk8cf-convert-artifact-2956848265/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": "1b678a6e-b233-4a5b-b32f-ceb4c142ff46", "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-workflowfk8cf/series-workflowfk8cf-build-action-101379685/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-16 01:55:34 +0000 UTC FinishedAt: 2026-07-16 02:32:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*95771b76-bdaa-45ff-b28c-fd628c0cfbda,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-workflowfk8cf/series-workflowfk8cf-convert-artifact-2956848265/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": "1b678a6e-b233-4a5b-b32f-ceb4c142ff46", "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-workflowfk8cf/series-workflowfk8cf-build-action-101379685/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-16 02:33:08 +0000 UTC FinishedAt: 2026-07-16 02:33:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-16 02:33:08 +0000 UTC FinishedAt: 2026-07-16 02:33:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-16 02:33:08 +0000 UTC FinishedAt: 2026-07-16 02:35:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-16 02:33:08 +0000 UTC FinishedAt: 2026-07-16 02:35:03 +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:*1b678a6e-b233-4a5b-b32f-ceb4c142ff46,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-workflowfk8cf/series-workflowfk8cf-build-action-101379685/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-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-16 02:35:13 +0000 UTC FinishedAt: 2026-07-16 05:37:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-16 02:35:13 +0000 UTC FinishedAt: 2026-07-16 05:37:55 +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":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"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:*dd57f88c-7e5c-40a2-9f66-af7e8c16f3bb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1b678a6e-b233-4a5b-b32f-ceb4c142ff46,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-workflowfk8cf/series-workflowfk8cf-build-action-2101088268/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-workflowfk8cf/series-workflowfk8cf-build-action-101379685/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-16 02:35:13 +0000 UTC FinishedAt: 2026-07-16 02:35:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-16 02:35:13 +0000 UTC FinishedAt: 2026-07-16 02:35: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":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"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-workflowfk8cf/series-workflowfk8cf-convert-artifact-1506652382/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-16 02:35:13 +0000 UTC FinishedAt: 2026-07-16 02:35:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-16 02:35:13 +0000 UTC FinishedAt: 2026-07-16 02:35:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-16 02:35:13 +0000 UTC FinishedAt: 2026-07-16 02:35:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-16 02:35:34 +0000 UTC FinishedAt: 2026-07-16 05:37:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfk8cf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_get_chanctx_max_required_bw","__ieee80211_recalc_chanctx_min_def"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"58717b2a1365d06c8c64b72aa948541b53fe31eb","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"0a375e70-34ee-46e9-9a0b-ac42aee8390e","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-16 02:35:34 +0000 UTC FinishedAt: 2026-07-16 05:37:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*dd57f88c-7e5c-40a2-9f66-af7e8c16f3bb,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1b678a6e-b233-4a5b-b32f-ceb4c142ff46,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-workflowfk8cf/series-workflowfk8cf-build-action-2101088268/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-workflowfk8cf/series-workflowfk8cf-build-action-101379685/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-workflowfk8cf/series-workflowfk8cf-convert-artifact-1506652382/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,}