Name: series-workflowdph95 Phase: Succeeded StartedAt: 2026-08-16 18:01:02 +0000 UTC FinishedAt: 2026-08-16 19:19:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdph95[0] Phase: Succeeded StartedAt: 2026-08-16 18:01:02 +0000 UTC FinishedAt: 2026-08-16 18:40:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdph95[0].run-triage Phase: Succeeded StartedAt: 2026-08-16 18:01:02 +0000 UTC FinishedAt: 2026-08-16 18:40:56 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4477a78374a57c3809b172ad30cceabda48c47c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7921U", "MAC80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4477a78374a57c3809b172ad30cceabda48c47c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7921U", "MAC80211" ], "series_id": "f7185af4-8227-4ea2-b2fe-b52ce22e9c7d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7921_run_firmware" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE2IDE4OjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyMVUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjFfcnVuX2Zpcm13YXJlJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhcnNpbmcgbG9naWMgZm9yIGZpcm13YXJlIENMQyByZWNvcmRzIGluIHRoZSBtdDc5MjEgZHJpdmVyLiBJdCBjaGFuZ2VzIHRoZSBiZWhhdmlvciB3aGVuIGVuY291bnRlcmluZyBhIENMQyByZWNvcmQgd2l0aCBhbiBpbmRleCBsYXJnZXIgdGhhbiB0aGUgZHJpdmVyJiMzOTtzIGFycmF5IHNpemU6IGluc3RlYWQgb2YgcmV0dXJuaW5nIGFuIGVycm9yLCBpdCBub3cgaWdub3JlcyB0aGUgcmVjb3JkIGFuZCBjb250aW51ZXMgcGFyc2luZy4gVGhpcyBwcmV2ZW50cyB0aGUgZHJpdmVyIGZyb20gZmFpbGluZyB0byBsb2FkIG5ld2VyIGZpcm13YXJlIHRoYXQgY29udGFpbnMgYWRkaXRpb25hbCByZWNvcmRzLiBUaGUgZGF0YSBiZWluZyBwYXJzZWQgaXMgbG9hZGVkIGZyb20gYSBmaXJtd2FyZSBmaWxlIGFuZCBpcyBmdWxseSBpbml0aWFsaXplZC4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBhbGxvY2F0aW9ucyBvZiB1bmluaXRpYWxpemVkIHN0cnVjdHVyZXMsIG9yIGluZm9ybWF0aW9uIGxlYWtzIHRvIHVzZXIgc3BhY2UgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciB0b29scyBhcmUgc3VmZmljaWVudCBmb3IgZGV0ZWN0aW5nIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgbWVtb3J5IGNvcnJ1cHRpb24uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljIGluIHRoZSBNVDc5MjEgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IG91dC1vZi1ib3VuZHMgQ0xDIHJlY29yZCBpbmRpY2VzIGFyZSBoYW5kbGVkIChpZ25vcmluZyB0aGVtIGluc3RlYWQgb2YgcmV0dXJuaW5nIGFuIGVycm9yKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFVTQiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE4OjM5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNDA1OWRhOWIxODJjNzQ0NjE0NzA2Y2RkOWYyN2FlOWM4ZWE1MjJhYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDE2IDE4OjM5OjQzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcbmluZGV4IGExMThhMzAxNTY0YzguLjQwNTQ2MDA1Yzc0M2IgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcbkBAIC00NzcsMTggJiM0Mzs0NzcsMjMgQEAgc3RhdGljIGludCBtdDc5MjFfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcbiBcbiBcdGZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IFx1MDAzYyBsZW47IG9mZnNldCAmIzQzOz0gY2xjX2xlbikge1xuIFx0XHRpZiAobGVuIC0gb2Zmc2V0IFx1MDAzYyBzaXplb2YoKmNsYykpIHtcbiYjNDM7XHRcdFx0ZGV2X2VycihtZGV2LVx1MDAzZWRldiwgXCYjMzQ7SW52YWxpZCBDTEMgcmVjb3JkXFxuXCYjMzQ7KTtcbiBcdFx0XHRyZXQgPSAtRUlOVkFMO1xuIFx0XHRcdGdvdG8gb3V0O1xuIFx0XHR9XG4gXG4gXHRcdGNsYyA9IChjb25zdCBzdHJ1Y3QgbXQ3OTIxX2NsYyAqKShjbGNfYmFzZSAmIzQzOyBvZmZzZXQpO1xuIFx0XHRjbGNfbGVuID0gbGUzMl90b19jcHUoY2xjLVx1MDAzZWxlbik7XG4tXHRcdGlmIChjbGNfbGVuIFx1MDAzYyBzaXplb2YoKmNsYykgfHwgY2xjX2xlbiBcdTAwM2UgbGVuIC0gb2Zmc2V0IHx8XG4tXHRcdCAgICBjbGMtXHUwMDNlaWR4IFx1MDAzZT0gQVJSQVlfU0laRShwaHktXHUwMDNlY2xjKSkge1xuJiM0MztcdFx0aWYgKGNsY19sZW4gXHUwMDNjIHNpemVvZigqY2xjKSB8fCBjbGNfbGVuIFx1MDAzZSBsZW4gLSBvZmZzZXQpIHtcbiYjNDM7XHRcdFx0ZGV2X2VycihtZGV2LVx1MDAzZWRldiwgXCYjMzQ7SW52YWxpZCBDTEMgcmVjb3JkXFxuXCYjMzQ7KTtcbiBcdFx0XHRyZXQgPSAtRUlOVkFMO1xuIFx0XHRcdGdvdG8gb3V0O1xuIFx0XHR9XG4gXG4mIzQzO1x0XHQvKiBOZXdlciBmaXJtd2FyZSBtYXkgYWRkIHJlY29yZHMgdGhpcyBkcml2ZXIgZG9lcyBub3QgdXNlIHlldCAqL1xuJiM0MztcdFx0aWYgKGNsYy1cdTAwM2VpZHggXHUwMDNlPSBBUlJBWV9TSVpFKHBoeS1cdTAwM2VjbGMpKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4gXHRcdC8qIGRvIG5vdCBpbml0IGJ1ZiBhZ2FpbiBpZiBjaGlwIHJlc2V0IHRyaWdnZXJlZCAqL1xuIFx0XHRpZiAocGh5LVx1MDAzZWNsY1tjbGMtXHUwMDNlaWR4XSlcbiBcdFx0XHRjb250aW51ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxODozOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3OTIxVSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyMV9ydW5fZmlybXdhcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZpcm13YXJlIHBhcnNpbmcgbG9naWMgaW4gdGhlIE1UNzkyMSB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgb3V0LW9mLWJvdW5kcyBDTEMgcmVjb3JkIGluZGljZXMgYXJlIGhhbmRsZWQgKGlnbm9yaW5nIHRoZW0gaW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gZXJyb3IpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0MDU5ZGE5YjE4MmM3NDQ2MTQ3MDZjZGQ5ZjI3YWU5YzhlYTUyMmFiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMTYgMTg6Mzk6NDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jCmluZGV4IGExMThhMzAxNTY0YzguLjQwNTQ2MDA1Yzc0M2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jCkBAIC00NzcsMTggJiM0Mzs0NzcsMjMgQEAgc3RhdGljIGludCBtdDc5MjFfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSkKIAogCWZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0ICZsdDsgbGVuOyBvZmZzZXQgJiM0Mzs9IGNsY19sZW4pIHsKIAkJaWYgKGxlbiAtIG9mZnNldCAmbHQ7IHNpemVvZigqY2xjKSkgewomIzQzOwkJCWRldl9lcnIobWRldi0mZ3Q7ZGV2LCAmIzM0O0ludmFsaWQgQ0xDIHJlY29yZFxuJiMzNDspOwogCQkJcmV0ID0gLUVJTlZBTDsKIAkJCWdvdG8gb3V0OwogCQl9CiAKIAkJY2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjFfY2xjICopKGNsY19iYXNlICYjNDM7IG9mZnNldCk7CiAJCWNsY19sZW4gPSBsZTMyX3RvX2NwdShjbGMtJmd0O2xlbik7Ci0JCWlmIChjbGNfbGVuICZsdDsgc2l6ZW9mKCpjbGMpIHx8IGNsY19sZW4gJmd0OyBsZW4gLSBvZmZzZXQgfHwKLQkJICAgIGNsYy0mZ3Q7aWR4ICZndDs9IEFSUkFZX1NJWkUocGh5LSZndDtjbGMpKSB7CiYjNDM7CQlpZiAoY2xjX2xlbiAmbHQ7IHNpemVvZigqY2xjKSB8fCBjbGNfbGVuICZndDsgbGVuIC0gb2Zmc2V0KSB7CiYjNDM7CQkJZGV2X2VycihtZGV2LSZndDtkZXYsICYjMzQ7SW52YWxpZCBDTEMgcmVjb3JkXG4mIzM0Oyk7CiAJCQlyZXQgPSAtRUlOVkFMOwogCQkJZ290byBvdXQ7CiAJCX0KIAomIzQzOwkJLyogTmV3ZXIgZmlybXdhcmUgbWF5IGFkZCByZWNvcmRzIHRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZSB5ZXQgKi8KJiM0MzsJCWlmIChjbGMtJmd0O2lkeCAmZ3Q7PSBBUlJBWV9TSVpFKHBoeS0mZ3Q7Y2xjKSkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsKIAkJLyogZG8gbm90IGluaXQgYnVmIGFnYWluIGlmIGNoaXAgcmVzZXQgdHJpZ2dlcmVkICovCiAJCWlmIChwaHktJmd0O2NsY1tjbGMtJmd0O2lkeF0pCiAJCQljb250aW51ZTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTg6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI4NAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBNZWRpYXRlayBXaUZpIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIHR3ZWFraW5nIHRoZSBgbXQ3OTIxX2xvYWRfY2xjYCBmdW5jdGlvbiBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNgLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIGxpa2UgdGhlIHBhdGNoIGlzIGFkZGluZyBhIGBkZXZfZXJyYCBjYWxsIGZvciBpbnZhbGlkIENMQyByZWNvcmRzIGFuZCB0aGVuIGdyYWNlZnVsbHkgaWdub3JpbmcgcmVjb3JkcyB3aGVyZSBgY2xjLSZndDtpZHhgIGlzIG91dCBvZiBib3VuZHMgKGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgQVJSQVlfU0laRShwaHktJmd0O2NsYylgKSBpbnN0ZWFkIG9mIGV4cGxpY2l0bHkgcmV0dXJuaW5nIGFuIGVycm9yLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBtYWtlcyBpdCBtb3JlIHJvYnVzdCwgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpczogd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBmb3IgdmlydHVhbGl6YXRpb24/IFRoZSBgbXQ3OTIxYCBpcyBhIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlciwgYW5kIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQgaXMgYSBQQ0ksIFVTQiwgb3IgU0RJTyBkcml2ZXIgdG8gYXNzZXNzIGl0cyB2aXJ0dWFsaXphYmlsaXR5LiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzb3VyY2UgY29kZSB0byBiZSBzdXJlLCBzbyBsZXQmIzM5O3MgY2hlY2sgdGhlIGZpbGVzIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9gIHRvIGZpZ3VyZSBvdXQgdGhlIGJ1cyB0eXBlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE4OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjUwOCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvTWFrZWZpbGUtMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX01UNzkyMV9DT01NT04pICYjNDM7PSBtdDc5MjEtY29tbW9uLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX01UNzkyMUUpICYjNDM7PSBtdDc5MjFlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX01UNzkyMVMpICYjNDM7PSBtdDc5MjFzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX01UNzkyMVUpICYjNDM7PSBtdDc5MjF1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlLTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9NYWtlZmlsZTo4Om10NzkyMS1jb21tb24teSA6PSBtYWMubyBtY3UubyByZWdkLm8gbWFpbi5vIGluaXQubyBkZWJ1Z2ZzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlOjk6bXQ3OTIxLWNvbW1vbi0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvTWFrZWZpbGU6MTA6bXQ3OTIxZS15IDo9IHBjaS5vIHBjaV9tYWMubyBwY2lfbWN1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlOjExOm10NzkyMXMteSA6PSBzZGlvLm8gc2Rpb19tYWMubyBzZGlvX21jdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9NYWtlZmlsZToxMjptdDc5MjF1LXkgOj0gdXNiLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzo0OiNpbmNsdWRlIFwmIzM0O210NzkyMS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz02PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzo3Om10NzkyMV9yZWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtOC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTE4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxOTptdDc5MjFfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjMwOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JlZ3ZhbCwgbXQ3OTIxX3JlZ19nZXQsIG10NzkyMV9yZWdfc2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTMxLVx0XHRcdCBcJiMzNDsweCUwOGxseFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MzI9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjMzOm10NzkyMV9md19kZWJ1Z19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0zNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTM5LVx0ZGV2LVx1MDAzZWZ3X2RlYnVnID0gKHU4KXZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzo0MDpcdG10NzkyMV9tY3VfZndfbG9nXzJfaG9zdChkZXYsIGRldi1cdTAwM2Vmd19kZWJ1Zyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtNDEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTQ3PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzo0ODptdDc5MjFfZndfZGVidWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTQ5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6NTc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWcsIG10NzkyMV9md19kZWJ1Z19nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6NTg6XHRcdFx0IG10NzkyMV9md19kZWJ1Z19zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTU5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz02Mj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjYzOm10NzkyMV9zZXFfcHV0c19hcnJheShzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKnN0cixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy02NC1cdFx0ICAgICAgczggKnZhbCwgaW50IGxlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6Nzc6I2RlZmluZSBtdDc5MjFfcHJpbnRfdHhwd3JfZW50cnkocHJlZml4LCByYXRlKVx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy03OC0oe1x0XHRcdFx0XHRcdFx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6Nzk6XHRtdDc5MjFfc2VxX3B1dHNfYXJyYXkocywgI3ByZWZpeCBcJiMzNDsgKHVzZXIpXCYjMzQ7LFx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtODAtXHRcdFx0ICAgICAgdHhwd3IuZGF0YVtUWFBXUl9VU0VSXS5yYXRlLFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTgxLVx0XHRcdCAgICAgIEFSUkFZX1NJWkUodHhwd3IuZGF0YVtUWFBXUl9VU0VSXS5yYXRlKSk7IFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6ODI6XHRtdDc5MjFfc2VxX3B1dHNfYXJyYXkocywgI3ByZWZpeCBcJiMzNDsgKGVlcHJvbSlcJiMzNDssXHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy04My1cdFx0XHQgICAgICB0eHB3ci5kYXRhW1RYUFdSX0VFUFJPTV0ucmF0ZSxcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy04NC1cdFx0XHQgICAgICBBUlJBWV9TSVpFKHR4cHdyLmRhdGFbVFhQV1JfRUVQUk9NXS5yYXRlKSk7IFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6ODU6XHRtdDc5MjFfc2VxX3B1dHNfYXJyYXkocywgI3ByZWZpeCBcJiMzNDsgKHRtYWMpXCYjMzQ7LFx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtODYtXHRcdFx0ICAgICAgdHhwd3IuZGF0YVtUWFBXUl9NQUNdLnJhdGUsXHRcdFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTkwPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzo5MTptdDc5MjFfdHhwd3Ioc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTkyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy05My1cdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cdTAwM2Vwcml2YXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzo5NDpcdHN0cnVjdCBtdDc5MjFfdHhwd3IgdHhwd3I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtOTUtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy05Ny1cdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6OTg6XHRyZXQgPSBtdDc5MjFfZ2V0X3R4cHdyX2luZm8oZGV2LCBcdTAwMjZ0eHB3cik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtOTktXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xMDYtXHRcdCAgIFwmIzM0OyBcJiMzNDssIFwmIzM0OzFtXCYjMzQ7LCBcJiMzNDsybVwmIzM0OywgXCYjMzQ7NW1cJiMzNDssIFwmIzM0OzExbVwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTA3Olx0bXQ3OTIxX3ByaW50X3R4cHdyX2VudHJ5KENDSywgY2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xMDgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTExMS1cdFx0ICAgXCYjMzQ7NDhtXCYjMzQ7LCBcJiMzNDs1NG1cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjExMjpcdG10NzkyMV9wcmludF90eHB3cl9lbnRyeShPRkRNLCBvZmRtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xMTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTExNi1cdFx0ICAgXCYjMzQ7bWNzNlwmIzM0OywgXCYjMzQ7bWNzN1wmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTE3Olx0bXQ3OTIxX3ByaW50X3R4cHdyX2VudHJ5KEhUMjAsIGh0MjApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTExOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTIxLVx0XHQgICBcJiMzNDttY3M2XCYjMzQ7LCBcJiMzNDttY3M3XCYjMzQ7LCBcJiMzNDttY3MzMlwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTIyOlx0bXQ3OTIxX3ByaW50X3R4cHdyX2VudHJ5KEhUNDAsIGh0NDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTEyMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTI2LVx0XHQgICBcJiMzNDttY3M2XCYjMzQ7LCBcJiMzNDttY3M3XCYjMzQ7LCBcJiMzNDttY3M4XCYjMzQ7LCBcJiMzNDttY3M5XCYjMzQ7LCBcJiMzNDttY3MxMFwmIzM0OywgXCYjMzQ7bWNzMTFcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjEyNzpcdG10NzkyMV9wcmludF90eHB3cl9lbnRyeShWSFQyMCwgdmh0MjApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjEyODpcdG10NzkyMV9wcmludF90eHB3cl9lbnRyeShWSFQ0MCwgdmh0NDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjEyOTpcdG10NzkyMV9wcmludF90eHB3cl9lbnRyeShWSFQ4MCwgdmh0ODApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjEzMDpcdG10NzkyMV9wcmludF90eHB3cl9lbnRyeShWSFQxNjAsIHZodDE2MCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTMxOlx0bXQ3OTIxX3ByaW50X3R4cHdyX2VudHJ5KEhFMjYsIGhlMjYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjEzMjpcdG10NzkyMV9wcmludF90eHB3cl9lbnRyeShIRTUyLCBoZTUyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxMzM6XHRtdDc5MjFfcHJpbnRfdHhwd3JfZW50cnkoSEUxMDYsIGhlMTA2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxMzQ6XHRtdDc5MjFfcHJpbnRfdHhwd3JfZW50cnkoSEUyNDIsIGhlMjQyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxMzU6XHRtdDc5MjFfcHJpbnRfdHhwd3JfZW50cnkoSEU0ODQsIGhlNDg0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxMzY6XHRtdDc5MjFfcHJpbnRfdHhwd3JfZW50cnkoSEU5OTYsIGhlOTk2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxMzc6XHRtdDc5MjFfcHJpbnRfdHhwd3JfZW50cnkoSEU5OTZ4MiwgaGU5OTZ4Mik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTM4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0xNDI9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjE0MzptdDc5MjFfcG1fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTQ0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTY2LVx0cG0tXHUwMDNlZW5hYmxlX3VzZXIgPSB2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTY3Olx0bXQ3OTIxX3NldF9ydW50aW1lX3BtKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTY4LVx0bXQ3Nl9jb25uYWNfcG93ZXJfc2F2ZV9zY2hlZChcdTAwMjZkZXYtXHUwMDNlbXBoeSwgcG0pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0xNzU9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjE3NjptdDc5MjFfcG1fZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTE3Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTE4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxODU6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcG0sIG10NzkyMV9wbV9nZXQsIG10NzkyMV9wbV9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTE4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0xODc9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjE4ODptdDc5MjFfZGVlcF9zbGVlcF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xODkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0yMTE9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjIxMjptdDc5MjFfZGVlcF9zbGVlcF9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjEzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjIyMTpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19kcywgbXQ3OTIxX2RlZXBfc2xlZXBfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjIyMjpcdFx0XHQgbXQ3OTIxX2RlZXBfc2xlZXBfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MjI0PURFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3BtX2lkbGVfdGltZW91dCwgbXQ3OTJ4X3BtX2lkbGVfdGltZW91dF9nZXQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyMjc6c3RhdGljIGludCBtdDc5MjFfY2hpcF9yZXNldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIyOC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyNDg6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVzZXQsIE5VTEwsIG10NzkyMV9jaGlwX3Jlc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MjUwPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyNTE6bXQ3OTIxc19zY2hlZF9xdW90YV9yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNTIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjY0OmludCBtdDc5MjFfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjY1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjc5LVx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7dHhwb3dlcl9za3VcJiMzNDssIGRpcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyODA6XHRcdFx0XHQgICAgbXQ3OTIxX3R4cHdyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yODEtXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3R4X3N0YXRzXCYjMzQ7LCAwNDAwLCBkaXIsIGRldiwgXHUwMDI2bXQ3OTJ4X3R4X3N0YXRzX2ZvcHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yOTEtXHRcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwmIzM0O3NjaGVkLXF1b3RhXCYjMzQ7LCBkaXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjkyOlx0XHRcdFx0XHQgICAgbXQ3OTIxc19zY2hlZF9xdW90YV9yZWFkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yOTMtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtOC0jaW5jbHVkZSBcdTAwM2NsaW51eC9maXJtd2FyZS5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6OTojaW5jbHVkZSBcJiMzNDttdDc5MjEuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEwLSNpbmNsdWRlIFwmIzM0Oy4uL210NzZfY29ubmFjMl9tYWMuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxNDpzdGF0aWMgc3NpemVfdCBtdDc5MjFfdGhlcm1hbF90ZW1wX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE1LVx0XHRcdFx0XHRzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjQtXHRcdG10NzkyeF9tdXRleF9hY3F1aXJlKG1kZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjI1Olx0XHR0ZW1wZXJhdHVyZSA9IG10NzkyMV9tY3VfZ2V0X3RlbXBlcmF0dXJlKHBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjYtXHRcdG10NzkyeF9tdXRleF9yZWxlYXNlKG1kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0zNi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6Mzc6c3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUl9STyh0ZW1wMV9pbnB1dCwgbXQ3OTIxX3RoZXJtYWxfdGVtcCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6Mzk6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKm10NzkyMV9od21vbl9hdHRyc1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTQwLVx0XHUwMDI2c2Vuc29yX2Rldl9hdHRyX3RlbXAxX2lucHV0LmRldl9hdHRyLmF0dHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTQyLX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6NDM6QVRUUklCVVRFX0dST1VQUyhtdDc5MjFfaHdtb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjQ1OnN0YXRpYyBpbnQgbXQ3OTIxX3RoZXJtYWxfaW5pdChzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTQ2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtNTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6NTQ6XHRuYW1lID0gZGV2bV9rYXNwcmludGYoXHUwMDI2d2lwaHktXHUwMDNlZGV2LCBHRlBfS0VSTkVMLCBcJiMzNDttdDc5MjFfJXNcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtNTUtXHRcdFx0ICAgICAgd2lwaHlfbmFtZSh3aXBoeSkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy01OS1cdGh3bW9uID0gZGV2bV9od21vbl9kZXZpY2VfcmVnaXN0ZXJfd2l0aF9ncm91cHMoXHUwMDI2d2lwaHktXHUwMDNlZGV2LCBuYW1lLCBwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6NjA6XHRcdFx0XHRcdFx0ICAgICAgIG10NzkyMV9od21vbl9ncm91cHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTYxLVx0cmV0dXJuIFBUUl9FUlJfT1JfWkVSTyhod21vbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjY0OmludCBtdDc5MjFfbWFjX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy02NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTc0LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTVQ3OTJ4X1dUQkxfU0laRTsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6NzU6XHRcdG10NzkyMV9tYWNfd3RibF91cGRhdGUoZGV2LCBpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTc2LVx0XHRcdFx0ICAgICAgIE1UX1dUQkxfVVBEQVRFX0FETV9DT1VOVF9DTEVBUik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTgxLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzo4MjpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjFfbWFjX2luaXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjg0OnN0YXRpYyBpbnQgX19tdDc5MjFfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtOTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTAwOlx0cmV0ID0gbXQ3OTIxX21jdV9zZXRfZWVwcm9tKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTAxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjEwNDpcdHJldCA9IG10NzkyMV9tYWNfaW5pdChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEwNS1vdXQ6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxMDk6c3RhdGljIGludCBtdDc5MjFfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTExMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTExNS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1UNzkyeF9NQ1VfSU5JVF9SRVRSWV9DT1VOVDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxMTY6XHRcdHJldCA9IF9fbXQ3OTIxX2luaXRfaGFyZHdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xMTctXHRcdGlmICghcmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTMxOnN0YXRpYyB2b2lkIG10NzkyMV9pbml0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEzMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxMzc6XHRyZXQgPSBtdDc5MjFfaW5pdF9oYXJkd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEzOC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE0MS1cdG10NzZfc2V0X3N0cmVhbV9jYXBzKFx1MDAyNmRldi1cdTAwM2VtcGh5LCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxNDI6XHRtdDc5MjFfc2V0X3N0cmVhbV9oZV9jYXBzKFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE0My1cdG10NzkyeF9jb25maWdfbWFjX2FkZHJfbGlzdChkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xNTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTUyOlx0cmV0ID0gbXQ3OTIxX2luaXRfZGVidWdmcyhkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE1My1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjE1ODpcdHJldCA9IG10NzkyMV90aGVybWFsX2luaXQoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTU5LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xNjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTcwOmludCBtdDc5MjFfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTcxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTg5LVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZW1waHkubWFjX3dvcmssIG10NzkyeF9tYWNfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTkwOlx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBoeS5zY2FuX3dvcmssIG10NzkyMV9zY2FuX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjE5MTpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2Vjb3JlZHVtcC53b3JrLCBtdDc5MjFfY29yZWR1bXBfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTkyLSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjE5MzpcdElOSVRfV09SSyhcdTAwMjZkZXYtXHUwMDNlaXB2Nl9uc193b3JrLCBtdDc5MjFfc2V0X2lwdjZfbnNfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTk0LVx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZkZXYtXHUwMDNlaXB2Nl9uc19saXN0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjE5OTpcdElOSVRfV09SSyhcdTAwMjZkZXYtXHUwMDNlcmVzZXRfd29yaywgbXQ3OTIxX21hY19yZXNldF93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoyMDA6XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZWluaXRfd29yaywgbXQ3OTIxX2luaXRfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjIwMjpcdElOSVRfV09SSyhcdTAwMjZkZXYtXHUwMDNlcGh5LnJvY193b3JrLCBtdDc5MjFfcm9jX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIwMy1cdHRpbWVyX3NldHVwKFx1MDAyNmRldi1cdTAwM2VwaHkucm9jX3RpbWVyLCBtdDc5Mnhfcm9jX3RpbWVyLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjIzMTpcdGh3LVx1MDAzZXdpcGh5LVx1MDAzZXJlZ19ub3RpZmllciA9IG10NzkyMV9yZWdkX25vdGlmaWVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIzMi1cdGRldi1cdTAwM2VtcGh5LnNiYW5kXzJnLnNiYW5kLmh0X2NhcC5jYXAgfD1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjU1LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoyNTY6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX3JlZ2lzdGVyX2RldmljZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNi0jaW5jbHVkZSBcdTAwM2NsaW51eC90aW1la2VlcGluZy5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo3OiNpbmNsdWRlIFwmIzM0O210NzkyMS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04LSNpbmNsdWRlIFwmIzM0Oy4uL2RtYS5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoxOTpib29sIG10NzkyMV9tYWNfd3RibF91cGRhdGUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgaW50IGlkeCwgdTMyIG1hc2spXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0yMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoyODpzdGF0aWMgdTMyIG10NzkyMV9tYWNfd3RibF9sbWFjX2FkZHIoaW50IGlkeCwgdTggb2Zmc2V0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMjkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6MzM6c3RhdGljIHZvaWQgbXQ3OTIxX21hY19zdGFfcG9sbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTcyLVx0XHRpZHggPSBtbGluay1cdTAwM2V3Y2lkLmlkeDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjczOlx0XHRhZGRyID0gbXQ3OTIxX21hY193dGJsX2xtYWNfYWRkcihpZHgsIE1UX1dUQkxfQUMwX0NUVF9PRkZTRVQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtOTEtXHRcdGlmIChjbGVhcikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6OTI6XHRcdFx0bXQ3OTIxX21hY193dGJsX3VwZGF0ZShkZXYsIGlkeCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTkzLVx0XHRcdFx0XHQgICAgICAgTVRfV1RCTF9VUERBVEVfQURNX0NPVU5UX0NMRUFSKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0xMjAtXHRcdHJhdGUgPSBcdTAwMjZtbGluay1cdTAwM2V3Y2lkLnJhdGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoxMjE6XHRcdGFkZHIgPSBtdDc5MjFfbWFjX3d0YmxfbG1hY19hZGRyKGlkeCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTEyMi1cdFx0XHRcdFx0XHQgTVRfV1RCTF9UWFJYX0NBUF9SQVRFX09GRlNFVCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMTUyLVx0XHQvKiBnZXQgc2lnbmFsIHN0cmVuZ3RoIG9mIHJlc3AgZnJhbWVzIChDVFMvQkEvQUNLKSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6MTUzOlx0XHRhZGRyID0gbXQ3OTIxX21hY193dGJsX2xtYWNfYWRkcihpZHgsIDMwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTE1NC1cdFx0dmFsID0gbXQ3Nl9ycihkZXYsIGFkZHIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTE2OD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoxNjk6bXQ3OTIxX21hY19maWxsX3J4KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0xNzAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTQ0Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjQ0Nzp2b2lkIG10NzkyMV9tYWNfYWRkX3R4cyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNDQ4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy00ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo0ODU6c3RhdGljIHZvaWQgbXQ3OTIxX21hY190eF9mcmVlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEsIGludCBsZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy00ODYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTU1NS1cdHJjdV9yZWFkX2xvY2soKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjU1NjpcdG10NzkyMV9tYWNfc3RhX3BvbGwoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTU1Ny1cdHJjdV9yZWFkX3VubG9jaygpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTU2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjU2Mjpib29sIG10NzkyMV9yeF9jaGVjayhzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKmRhdGEsIGludCBsZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01NjMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTU3NC1cdFx0XHRyZXR1cm4gZmFsc2U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo1NzU6XHRcdG10NzkyMV9tYWNfdHhfZnJlZShkZXYsIGRhdGEsIGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01NzYtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01NzgtXHRcdGZvciAocnhkICYjNDM7PSAyOyByeGQgJiM0MzsgOCBcdTAwM2M9IGVuZDsgcnhkICYjNDM7PSA4KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NTc5Olx0XHRcdG10NzkyMV9tYWNfYWRkX3R4cyhkZXYsIHJ4ZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01ODAtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01ODQtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NTg1OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyMV9yeF9jaGVjayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01ODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo1ODc6dm9pZCBtdDc5MjFfcXVldWVfcnhfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgZW51bSBtdDc2X3J4cV9pZCBxLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNTg4LVx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgKmluZm8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjA3LVx0XHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo2MDg6XHRcdG10NzkyMV9tYWNfdHhfZnJlZShkZXYsIHNrYi1cdTAwM2VkYXRhLCBza2ItXHUwMDNlbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTYwOS1cdFx0bmFwaV9jb25zdW1lX3NrYihza2IsIDEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTYxMS1cdGNhc2UgUEtUX1RZUEVfUlhfRVZFTlQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo2MTI6XHRcdG10NzkyMV9tY3VfcnhfZXZlbnQoZGV2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjEzLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02MTUtXHRcdGZvciAocnhkICYjNDM7PSAyOyByeGQgJiM0MzsgOCBcdTAwM2M9IGVuZDsgcnhkICYjNDM7PSA4KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NjE2Olx0XHRcdG10NzkyMV9tYWNfYWRkX3R4cyhkZXYsIHJ4ZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02MTctXHRcdGRldl9rZnJlZV9za2Ioc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02MjAtXHRjYXNlIFBLVF9UWVBFX05PUk1BTDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjYyMTpcdFx0aWYgKCFtdDc5MjFfbWFjX2ZpbGxfcngoZGV2LCBza2IpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02MjItXHRcdFx0bXQ3Nl9yeChcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgcSwgc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02MzAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NjMxOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyMV9xdWV1ZV9yeF9za2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9NjMzPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo2MzQ6bXQ3OTIxX3ZpZl9jb25uZWN0X2l0ZXIodm9pZCAqcHJpdiwgdTggKm1hYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTYzNS1cdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTY0Ni1cdFx0XHRcdCAgICBcdTAwMjZtdmlmLVx1MDAzZXN0YS5kZWZsaW5rLndjaWQsIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NjQ3Olx0bXQ3OTIxX21jdV9zZXRfdHgoZGV2LCB2aWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjQ4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTY1MS1cdFx0XHRcdFx0ICAgIHRydWUsIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NjUyOlx0XHRtdDc5MjFfbWN1X3N0YV91cGRhdGUoZGV2LCBOVUxMLCB2aWYsIHRydWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02NTMtXHRcdFx0XHQgICAgICBNVDc2X1NUQV9JTkZPX1NUQVRFX05PTkUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NjU0Olx0XHRtdDc5MjFfbWN1X3VuaV9hZGRfYmVhY29uX29mZmxvYWQoZGV2LCBodywgdmlmLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTY1NS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02NTgtLyogc3lzdGVtIGVycm9yIHJlY292ZXJ5ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo2NTk6dm9pZCBtdDc5MjFfbWFjX3Jlc2V0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjYwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy03MDgtXHRcdFx0XHRcdCAgICBJRUVFODAyMTFfSUZBQ0VfSVRFUl9SRVNVTUVfQUxMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NzA5Olx0XHRcdFx0XHQgICAgbXQ3OTIxX3ZpZl9jb25uZWN0X2l0ZXIsIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzEwLVx0bXQ3Nl9jb25uYWNfcG93ZXJfc2F2ZV9zY2hlZChcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5waHksIHBtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTcxMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjcxMjpcdG10NzkyMV9yZWdkX2NoYW5nZShcdTAwMjZkZXYtXHUwMDNlcGh5LCBcJiMzNDswMFwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy03MTMtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NzE1OnZvaWQgbXQ3OTIxX2NvcmVkdW1wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzE2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYz03NjM9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjc2NDptdDc5MjFfdXNiX3NkaW9fd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzY1LVx0XHRcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjc3NjppbnQgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy03NzctXHRcdFx0XHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04MDYtXHRwa3RpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIHdjaWQsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4MDc6XHRtdDc5MjFfdXNiX3NkaW9fd3JpdGVfdHh3aShkZXYsIHdjaWQsIHFpZCwgc3RhLCBrZXksIHBrdGlkLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODA4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTgyMS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4MjI6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTgyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjgyNDp2b2lkIG10NzkyMV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODI1LVx0XHRcdFx0ICAgICBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9lbnRyeSAqZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NDItfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODQzOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyMV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODQ1OmJvb2wgbXQ3OTIxX3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTg0Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODQ5LVx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjg1MDpcdG10NzkyMV9tYWNfc3RhX3BvbGwoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTg1MS1cdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODU0LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjg1NTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjFfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODU3LSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODU4OnZvaWQgbXQ3OTIxX3NldF9pcHY2X25zX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODU5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtOC0jaW5jbHVkZSBcdTAwM2NuZXQvaXB2Ni5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6OTojaW5jbHVkZSBcJiMzNDttdDc5MjEuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTEwLSNpbmNsdWRlIFwmIzM0O3JlZ2QuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYz0xMz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MTQ6bXQ3OTIxX2luaXRfaGVfY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBlbnVtIG5sODAyMTFfYmFuZCBiYW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTE1LVx0XHQgICAgc3RydWN0IGllZWU4MDIxMV9zYmFuZF9pZnR5cGVfZGF0YSAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMTk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjE5Njp2b2lkIG10NzkyMV9zZXRfc3RyZWFtX2hlX2NhcHMoc3RydWN0IG10NzkyeF9waHkgKnBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0xOTcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yMDMtXHRcdGRhdGEgPSBwaHktXHUwMDNlaWZ0eXBlW05MODAyMTFfQkFORF8yR0haXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzoyMDQ6XHRcdG4gPSBtdDc5MjFfaW5pdF9oZV9jYXBzKHBoeSwgTkw4MDIxMV9CQU5EXzJHSFosIGRhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTIwNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjExLVx0XHRkYXRhID0gcGh5LVx1MDAzZWlmdHlwZVtOTDgwMjExX0JBTkRfNUdIWl07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjEyOlx0XHRuID0gbXQ3OTIxX2luaXRfaGVfY2FwcyhwaHksIE5MODAyMTFfQkFORF81R0haLCBkYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yMTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTIxOC1cdFx0XHRkYXRhID0gcGh5LVx1MDAzZWlmdHlwZVtOTDgwMjExX0JBTkRfNkdIWl07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjE5Olx0XHRcdG4gPSBtdDc5MjFfaW5pdF9oZV9jYXBzKHBoeSwgTkw4MDIxMV9CQU5EXzZHSFosIGRhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTIyMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjIyNzppbnQgX19tdDc5MjFfc3RhcnQoc3RydWN0IG10NzkyeF9waHkgKnBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yMjgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjQwOlx0ZXJyID0gbXQ3OTIxX21jdV9zZXRfY2hhbl9pbmZvKHBoeSwgTUNVX0VYVF9DTUQoU0VUX1JYX1BBVEgpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNDEtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjQ0Olx0ZXJyID0gbXQ3OTIxX3NldF90eF9zYXJfcHdyKG1waHktXHUwMDNlaHcsIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI0NS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI1My1cdGlmIChtdDc2X2lzX21taW8obXBoeS1cdTAwM2VkZXYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjU0Olx0XHRlcnIgPSBtdDc5MjFfbWN1X3JhZGlvX2xlZF9jdHJsKHBoeS1cdTAwM2VkZXYsIEVYVF9DTURfUkFESU9fTEVEX0NUUkxfRU5BQkxFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNTUtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzoyNTg6XHRcdGVyciA9IG10NzkyMV9tY3VfcmFkaW9fbGVkX2N0cmwocGh5LVx1MDAzZWRldiwgRVhUX0NNRF9SQURJT19PTl9MRUQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI1OS1cdFx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjYzLVx0aWYgKHBoeS1cdTAwM2VjaGlwX2NhcCBcdTAwMjYgTVQ3OTJ4X0NISVBfQ0FQX1dGX1JGX1BJTl9DVFJMX0VWVF9FTikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI2NDpcdFx0bXQ3OTIxX21jdV93Zl9yZl9waW5fY3RybChwaHksIFdGX1JGX1BJTl9JTklUKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNjUtXHRcdHdpcGh5X3Jma2lsbF9zdGFydF9wb2xsaW5nKG1waHktXHUwMDNlaHctXHUwMDNld2lwaHkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNjktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI3MDpFWFBPUlRfU1lNQk9MX0dQTChfX210NzkyMV9zdGFydCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI3MjpzdGF0aWMgaW50IG10NzkyMV9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNzMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNzctXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShwaHktXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzoyNzg6XHRlcnIgPSBfX210NzkyMV9zdGFydChwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI3OS1cdG10NzkyeF9tdXRleF9yZWxlYXNlKHBoeS1cdTAwM2VkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6Mjg0OnN0YXRpYyB2b2lkIG10NzkyMV9zdG9wKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBib29sIHN1c3BlbmQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjkwLVx0XHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI5MTpcdFx0ZXJyID0gbXQ3OTIxX21jdV9yYWRpb19sZWRfY3RybChkZXYsIEVYVF9DTURfUkFESU9fT0ZGX0xFRCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjkyLVx0XHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYz0zMDA9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjMwMTptdDc5MjFfYWRkX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zMDIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzM5Olx0bXQ3OTIxX21hY193dGJsX3VwZGF0ZShkZXYsIGlkeCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zNDAtXHRcdFx0ICAgICAgIE1UX1dUQkxfVVBEQVRFX0FETV9DT1VOVF9DTEVBUik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozNTQ6XHRJTklUX1dPUksoXHUwMDI2bXZpZi1cdTAwM2Vjc2Ffd29yaywgbXQ3OTIxX2NzYV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zNTUtXHR0aW1lcl9zZXR1cChcdTAwMjZtdmlmLVx1MDAzZWNzYV90aW1lciwgbXQ3OTJ4X2NzYV90aW1lciwgMCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozNjI6c3RhdGljIHZvaWQgbXQ3OTIxX3JvY19pdGVyKHZvaWQgKnByaXYsIHU4ICptYWMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzYzLVx0XHRcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzY4Olx0bXQ3OTIxX21jdV9hYm9ydF9yb2MocGh5LCBtdmlmLCBwaHktXHUwMDNlcm9jX3Rva2VuX2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zNjktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozNzE6dm9pZCBtdDc5MjFfcm9jX2Fib3J0X3N5bmMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zNzIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zODItXHRcdFx0XHQgICAgIElFRUU4MDIxMV9JRkFDRV9JVEVSX1JFU1VNRV9BTEwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzgzOlx0XHRcdFx0ICAgICBtdDc5MjFfcm9jX2l0ZXIsICh2b2lkICopcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zODQtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjM4NTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjFfcm9jX2Fib3J0X3N5bmMpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTg6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkxMjMKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAxODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTVQ3OTIxRSBEcml2ZXI6IEEgVVNCLUJhc2VkIEFwcHJvYWNoKioKCk9rYXksIHNvIHRoZSBgbXQ3OTIxZWAgZHJpdmVyIHN1cHBvcnRzIFBDSSwgU0RJTywgYW5kIFVTQiwgd2hpY2ggaXMgZ29vZCBuZXdzLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBVU0IgZHJpdmVyLCBgbXQ3OTIxdWAsIGJlY2F1c2UgdGhhdCBvcGVucyB1cCBzb21lIGludGVyZXN0aW5nIGZ1enppbmcgcG9zc2liaWxpdGllcy4gVGhpbmtpbmcgcHJhY3RpY2FsbHksIHRoaXMgbWVhbnMgSSBjYW4gbGV2ZXJhZ2UgdGhlIFVTQiBnYWRnZXQgZnJhbWV3b3JrIOKAkyBzcGVjaWZpY2FsbHksIGEgZHVtbXkgSENEIOKAkyB0byBmdXp6IHRoaXMgdGhpbmcgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoYXQmIzM5O3MgYSBtdWNoIGNsZWFuZXIgYW5kIG1vcmUgY29udHJvbGxlZCBzZXR1cCB0aGFuIG1lc3Npbmcgd2l0aCBhY3R1YWwgaGFyZHdhcmUuCgpOb3csIHdoZXJlJiMzOTtzIHRoZSBjb2RlPyBBaCwgaGVyZSBpdCBpcywgdGhlIHBhdGNoIEkgd2FzIGxvb2tpbmcgZm9yIGlzIGxvY2F0ZWQgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuY2AuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIHNlZSBob3cgdGhlIGBtdDc5MjFfbG9hZF9jbGNgIGZ1bmN0aW9uIGdldHMgY2FsbGVkLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY29uZmlybSB3aGV0aGVyIGl0JiMzOTtzIHJlYWNoYWJsZSBhbmQgdHJpZ2dlcmVkIGR1cmluZyBzdGFydHVwLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBlbnRyeSBwb2ludC4gTGV0JiMzOTtzIHN0YXJ0IHRyYWNpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTg6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTIxX2xvYWRfY2xjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jPTQwMT1pbnQgbXQ3OTIxX21jdV91bmlfcnhfYmEoc3RydWN0IG10NzkyeF9kZXYgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy00MTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo0MTI6c3RhdGljIGludCBtdDc5MjFfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTQxMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM9NjYyPWludCBtdDc5MjFfcnVuX2Zpcm13YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6Njc0Olx0ZXJyID0gbXQ3OTIxX2xvYWRfY2xjKGRldiwgbXQ3OTJ4X3JhbV9uYW1lKGRldikpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjc1LVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxODozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTk1NQoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIEZpcm13YXJlIExvYWRpbmcgU2VxdWVuY2UgaW4gTVQ3OTIxKioKCk9rYXksIHNvIGBtdDc5MjFfbG9hZF9jbGNgIGlzIGRlZmluaXRlbHkgYSBrZXkgZnVuY3Rpb24sIGFuZCB0aGUgY29kZSB0ZWxscyBtZSBpdCBnZXRzIGNhbGxlZCBmcm9tIGBtdDc5MjFfcnVuX2Zpcm13YXJlYC4gVGhhdCBzdWdnZXN0cyBhIHZlcnkgc3BlY2lmaWMgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucy4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgKmJyb2FkZXIqIGNvbnRleHQuIFdoZXJlIGlzIGBtdDc5MjFfcnVuX2Zpcm13YXJlYCBpdHNlbGYgaW52b2tlZD8gVGhhdCYjMzk7cyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAuIEJ5IHRyYWNpbmcgYmFjayB0byB0aGUgY2FsbGVycyBvZiBgbXQ3OTIxX3J1bl9maXJtd2FyZWAsIEkgY2FuIHBpZWNlIHRvZ2V0aGVyIHRoZSBjb21wbGV0ZSBmaXJtd2FyZSBsb2FkaW5nIGFuZCBpbml0aWFsaXphdGlvbiBmbG93LCB3aGljaCBpcyBwcm9iYWJseSBjcml0aWNhbCB0byBkaWFnbm9zaW5nIHNvbWUgaXNzdWUgb3IgdW5kZXJzdGFuZGluZyB0aGUgYm9vdCBzZXF1ZW5jZS4gS25vd2luZyB0aGUgY2FsbCBncmFwaCB3aWxsIHJlYWxseSBoZWxwIG1lIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IHN1YnN5c3RlbXMgYW5kIGRyaXZlcnMuIFRpbWUgdG8gZmlyZSB1cCBteSBkZWJ1Z2dlciBhbmQgc3RhcnQgZGlnZ2luZyB0aHJvdWdoIHRoZSBjYWxsIHNpdGVzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE4OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyMV9ydW5fZmlybXdhcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM9NjQ5PWludCBtdDc5MjFfbWN1X2Z3X2xvZ18yX2hvc3Qoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggY3RybClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy02NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo2NjI6aW50IG10NzkyMV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY2My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjgwLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jOjY4MTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjFfcnVuX2Zpcm13YXJlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY4Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaD0yMDY9dm9pZCBtdDc5MjFfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaDoyMDc6aW50IG10NzkyMV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaC0yMDgtaW50IG10NzkyMV9zZXRfY2hhbm5lbChzdHJ1Y3QgbXQ3Nl9waHkgKm1waHkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tYWMuYz01Nj1pbnQgbXQ3OTIxZV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWFjLmMtMTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21hYy5jOjEwNzpcdGVyciA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tYWMuYy0xMDgtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tY3UuYz00MT1pbnQgbXQ3OTIxZV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tY3UuYy01Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tY3UuYzo1ODpcdGVyciA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tY3UuYy01OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21hYy5jPTE0Nz1pbnQgbXQ3OTIxc19tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21hYy5jLTE4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWFjLmM6MTgxOlx0ZXJyID0gbXQ3OTIxX3J1bl9maXJtd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tYWMuYy0xODItXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWN1LmM9NzQ9aW50IG10NzkyMXNfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21jdS5jLTkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tY3UuYzo5MTpcdHJldCA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWN1LmMtOTItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTY1PXN0YXRpYyBpbnQgbXQ3OTIxdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTc4LVx0bXQ3Nl9zZXQoZGV2LCBNVF9VRE1BX1RYX1FTRUwsIE1UX0ZXX0RMX0VOKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjc5Olx0cmV0ID0gbXQ3OTIxX3J1bl9maXJtd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtODAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTg5PXN0YXRpYyBpbnQgbXQ3OTIxdV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xMjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzoxMjc6XHRlcnIgPSBtdDc5MjFfcnVuX2Zpcm13YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xMjgtXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE4OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNzM3CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMTAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgQ29kZSBQYXRoKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgbXQ3OTIxdV9tY3VfaW5pdGAgZnVuY3Rpb24sIGNhbGxlZCBmcm9tIGB1c2IuY2AuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgY29ubmVjdGVkIHRvIFVTQiBpcyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZywgZXNwZWNpYWxseSBjb25zaWRlcmluZyBwb3RlbnRpYWwgYXR0YWNrIHZlY3RvcnMuIFRoaXMgb3BlbnMgdXAgcG9zc2liaWxpdGllcyBmb3IgVVNCIGdhZGdldCBmdXp6aW5nLCB3aGljaCBtZWFucyB0aGUgZXhwb3N1cmUgaXMgc29tZXRoaW5nIEkgbmVlZCB0byBrZWVwIGluIG1pbmQuIFRoZSBjcnV4IG9mIHRoaXMgY2hhbmdlIHNlZW1zIHRvIHJldm9sdmUgYXJvdW5kIGhvdyBDTEMgcmVjb3JkcyBhcmUgcGFyc2VkIHdpdGhpbiBgbXQ3OTIxX2xvYWRfY2xjYCwgc28gSSBzaG91bGQgcHJvYmFibHkgc3RhcnQgdGhlcmUuIExldCYjMzk7cyBoZWFkIG92ZXIgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jYCBhbmQgZGlnIGludG8gYG10NzkyMV9sb2FkX2NsY2AgZnVuY3Rpb24gaXRzZWxmLCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgZ29pbmcgb24gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE4OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0NjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQ2MDpcdFx0XHQvKiBjaGVjayBpZiB3ZSBoYXZlIHZhbGlkIGJ1ZmZlciBzaXplICovXG4gNDYxOlx0XHRcdGlmIChsZW4gXHUwMDNlIGZ3X2RhdGFfbGVuIC0gb2Zmc2V0KSB7XG4gNDYyOlx0XHRcdFx0ZGV2X2VycihtZGV2LVx1MDAzZWRldiwgXCYjMzQ7SW52YWxpZCBmaXJtd2FyZSByZWdpb25cXG5cJiMzNDspO1xuIDQ2MzpcdFx0XHRcdHJldCA9IC1FSU5WQUw7XG4gNDY0Olx0XHRcdFx0Z290byBvdXQ7XG4gNDY1Olx0XHRcdH1cbiA0NjY6XHRcbiA0Njc6XHRcdFx0aWYgKChyZWdpb24tXHUwMDNlZmVhdHVyZV9zZXQgXHUwMDI2IEZXX0ZFQVRVUkVfTk9OX0RMKSBcdTAwMjZcdTAwMjZcbiA0Njg6XHRcdFx0ICAgIHJlZ2lvbi1cdTAwM2V0eXBlID09IEZXX1RZUEVfQ0xDKSB7XG4gNDY5Olx0XHRcdFx0Y2xjX2Jhc2UgPSAodTggKikoZnctXHUwMDNlZGF0YSAmIzQzOyBvZmZzZXQpO1xuIDQ3MDpcdFx0XHRcdGJyZWFrO1xuIDQ3MTpcdFx0XHR9XG4gNDcyOlx0XHRcdG9mZnNldCAmIzQzOz0gbGVuO1xuIDQ3MzpcdFx0fVxuIDQ3NDpcdFxuIDQ3NTpcdFx0aWYgKCFjbGNfYmFzZSlcbiA0NzY6XHRcdFx0Z290byBvdXQ7XG4gNDc3Olx0XG4gNDc4Olx0XHRmb3IgKG9mZnNldCA9IDA7IG9mZnNldCBcdTAwM2MgbGVuOyBvZmZzZXQgJiM0Mzs9IGNsY19sZW4pIHtcbiA0Nzk6XHRcdFx0aWYgKGxlbiAtIG9mZnNldCBcdTAwM2Mgc2l6ZW9mKCpjbGMpKSB7XG4gNDgwOlx0XHRcdFx0ZGV2X2VycihtZGV2LVx1MDAzZWRldiwgXCYjMzQ7SW52YWxpZCBDTEMgcmVjb3JkXFxuXCYjMzQ7KTtcbiA0ODE6XHRcdFx0XHRyZXQgPSAtRUlOVkFMO1xuIDQ4MjpcdFx0XHRcdGdvdG8gb3V0O1xuIDQ4MzpcdFx0XHR9XG4gNDg0Olx0XG4gNDg1Olx0XHRcdGNsYyA9IChjb25zdCBzdHJ1Y3QgbXQ3OTIxX2NsYyAqKShjbGNfYmFzZSAmIzQzOyBvZmZzZXQpO1xuIDQ4NjpcdFx0XHRjbGNfbGVuID0gbGUzMl90b19jcHUoY2xjLVx1MDAzZWxlbik7XG4gNDg3Olx0XHRcdGlmIChjbGNfbGVuIFx1MDAzYyBzaXplb2YoKmNsYykgfHwgY2xjX2xlbiBcdTAwM2UgbGVuIC0gb2Zmc2V0KSB7XG4gNDg4Olx0XHRcdFx0ZGV2X2VycihtZGV2LVx1MDAzZWRldiwgXCYjMzQ7SW52YWxpZCBDTEMgcmVjb3JkXFxuXCYjMzQ7KTtcbiA0ODk6XHRcdFx0XHRyZXQgPSAtRUlOVkFMO1xuIDQ5MDpcdFx0XHRcdGdvdG8gb3V0O1xuIDQ5MTpcdFx0XHR9XG4gNDkyOlx0XG4gNDkzOlx0XHRcdC8qIE5ld2VyIGZpcm13YXJlIG1heSBhZGQgcmVjb3JkcyB0aGlzIGRyaXZlciBkb2VzIG5vdCB1c2UgeWV0ICovXG4gNDk0Olx0XHRcdGlmIChjbGMtXHUwMDNlaWR4IFx1MDAzZT0gQVJSQVlfU0laRShwaHktXHUwMDNlY2xjKSlcbiA0OTU6XHRcdFx0XHRjb250aW51ZTtcbiA0OTY6XHRcbiA0OTc6XHRcdFx0LyogZG8gbm90IGluaXQgYnVmIGFnYWluIGlmIGNoaXAgcmVzZXQgdHJpZ2dlcmVkICovXG4gNDk4Olx0XHRcdGlmIChwaHktXHUwMDNlY2xjW2NsYy1cdTAwM2VpZHhdKVxuIDQ5OTpcdFx0XHRcdGNvbnRpbnVlO1xuIDUwMDpcdFxuIDUwMTpcdFx0XHQvKiBoZWFkZXIgY29udGVudCBzYW5pdHkgKi9cbiA1MDI6XHRcdFx0aWYgKGNsYy1cdTAwM2VpZHggPT0gTVQ3OTIxX0NMQ19QT1dFUiBcdTAwMjZcdTAwMjZcbiA1MDM6XHRcdFx0ICAgIHU4X2dldF9iaXRzKGNsYy1cdTAwM2V0eXBlLCBNVF9FRV9IV19UWVBFX0VOQ0FQKSAhPSBod19lbmNhcClcbiA1MDQ6XHRcdFx0XHRjb250aW51ZTtcbiA1MDU6XHRcbiA1MDY6XHRcdFx0cGh5LVx1MDAzZWNsY1tjbGMtXHUwMDNlaWR4XSA9IGRldm1fa21lbWR1cChtZGV2LVx1MDAzZWRldiwgY2xjLFxuIDUwNzpcdFx0XHRcdFx0XHRcdCAgY2xjX2xlbixcbiA1MDg6XHRcdFx0XHRcdFx0XHQgIEdGUF9LRVJORUwpO1xuIDUwOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxODo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjgzNQoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDMyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhpcyBGaXJtd2FyZSBQYXJzaW5nIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWJvdXQgaG93IHdlIHBhcnNlIGZpcm13YXJlIHJlY29yZHMuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgZGVhbGluZyB3aXRoIGZpcm13YXJlIGZpbGVzIHRoYXQgYXJlIGxvYWRlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIHVzaW5nIGByZXF1ZXN0X2Zpcm13YXJlYC4gVGhlIGZpcnN0IHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMsIGNhbiBzeXprYWxsZXIgZXZlbiB0b3VjaCBmaXJtd2FyZSBmaWxlcz8gT2ggcmlnaHQsIGl0IGNhbiwgdXNpbmcgYHN5el9tb3VudF9pbWFnZWAsIHJvb3RmcyBtb2RpZmljYXRpb25zLCBvciBldmVuIHRoZSBmaXJtd2FyZSBsb2FkZXIgZmFsbGJhY2suCgpCdXQsIGhvbGQgb24uIElzIHN5emthbGxlciBmdXp6aW5nIHRoZSBmaXJtd2FyZSBkaXJlY3RseSwgb3IganVzdCB0aGUgY29kZSB0aGF0ICp1c2VzKiB0aGUgZmlybXdhcmU/IFR5cGljYWxseSwgaXQmIzM5O3MgZm9jdXNlZCBvbiBzeXNjYWxscyBhbmQgdGhpbmdzIGxpa2UgVVNCL1BDSS4gRmlybXdhcmUgbG9hZGluZyBpcyB1c3VhbGx5IHNvbWV0aGluZyB0aGF0IGhhcHBlbnMgZnJvbSB0aGUgaG9zdCBmaWxlc3lzdGVtLiBIb3dldmVyLCBpdCAqY2FuKiBpbnRlcmNlcHQgZmlybXdhcmUgbG9hZGluZyBpZiBgcmVxdWVzdF9maXJtd2FyZWAgaXMgaW52b2x2ZWQgYW5kIHRoZSBmYWxsYmFjayBvciBjdXN0b20gZmlsZXN5c3RlbSBtZWNoYW5pc21zIGFyZSBpbiBwbGF5LgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogSXMgdGhpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgaXMgaXQgd29ydGggdGhlIGVmZm9ydCB0byBmdXp6IGl0PyBUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgYWRkaW5nIGEgYGRldl9lcnJgIGNhbGwgYW5kIG1vZGlmeWluZyB0aGUgZXJyb3IgaGFuZGxpbmcgd2hlbiBgY2xjLSZndDtpZHhgIGdvZXMgb3V0IG9mIGJvdW5kcy4gUHJldmlvdXNseSwgaXQgcmV0dXJuZWQgYC1FSU5WQUxgLiBOb3csIGl0IGp1c3QgYGNvbnRpbnVlYHMuIFNvLCBpdCYjMzk7cyBiYXNpY2FsbHkgYSBmaXggdG8gYWxsb3cgbmV3ZXIgZmlybXdhcmUgdG8gd29yayBvbiBvbGRlciBrZXJuZWxzLgoKSG1tLCBiZWNhdXNlIHRoaXMgYWZmZWN0cyBmaXJtd2FyZSBwYXJzaW5nLCBpdCBjb3VsZCBiZSB0cmlnZ2VyZWQgaWYgc3l6a2FsbGVyIGZlZWRzIGEgY3VzdG9tIGZpcm13YXJlIGZpbGUgaW50byB0aGUgc3lzdGVtLiBJdCYjMzk7cyBhIHBhcnNpbmcgaXNzdWUsIHRoYXQgKmNvdWxkKiBiZSBleHBsb2l0ZWQuCgpMZXQmIzM5O3MgZGlnIGEgYml0IGRlZXBlci4gSSBzZWUgYG10NzkyMV9sb2FkX2NsY2AgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgbWVhbnMgaXQmIzM5O3MgY2FsbGVkIG9ubHkgd2l0aGluIHRoZSBzYW1lIGNvbXBpbGF0aW9uIHVuaXQuIFRoZSBjYWxsZXIgaXMgYG10NzkyMV9ydW5fZmlybXdhcmVgLiBPa2F5LCBsZXQmIzM5O3MgdHVybiBvdXIgYXR0ZW50aW9uIHRvIGBtdDc5MjFfcnVuX2Zpcm13YXJlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTg6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjYwOlx0fVxuIDY2MTpcdFxuIDY2MjpcdGludCBtdDc5MjFfcnVuX2Zpcm13YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gNjYzOlx0e1xuIDY2NDpcdFx0aW50IGVycjtcbiA2NjU6XHRcbiA2NjY6XHRcdGVyciA9IG10NzkyeF9sb2FkX2Zpcm13YXJlKGRldik7XG4gNjY3Olx0XHRpZiAoZXJyKVxuIDY2ODpcdFx0XHRyZXR1cm4gZXJyO1xuIDY2OTpcdFxuIDY3MDpcdFx0ZXJyID0gbXQ3OTIxX21jdV9nZXRfbmljX2NhcGFiaWxpdHkoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG4gNjcxOlx0XHRpZiAoZXJyKVxuIDY3MjpcdFx0XHRyZXR1cm4gZXJyO1xuIDY3MzpcdFxuIDY3NDpcdFx0ZXJyID0gbXQ3OTIxX2xvYWRfY2xjKGRldiwgbXQ3OTJ4X3JhbV9uYW1lKGRldikpO1xuIDY3NTpcdFx0aWYgKGVycilcbiA2NzY6XHRcdFx0cmV0dXJuIGVycjtcbiA2Nzc6XHRcdHNldF9iaXQoTVQ3Nl9TVEFURV9NQ1VfUlVOTklORywgXHUwMDI2ZGV2LVx1MDAzZW1waHkuc3RhdGUpO1xuIDY3ODpcdFxuIDY3OTpcdFx0cmV0dXJuIG10NzkyMV9tY3VfZndfbG9nXzJfaG9zdChkZXYsIDEpO1xuIDY4MDpcdH1cbiA2ODE6XHRFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjFfcnVuX2Zpcm13YXJlKTtcbiA2ODI6XHRcbiA2ODM6XHRpbnQgbXQ3OTIxX21jdV9yYWRpb19sZWRfY3RybChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCB2YWx1ZSlcbiA2ODQ6XHR7XG4gNjg1Olx0XHRzdHJ1Y3Qge1xuIDY4NjpcdFx0XHR1OCBjdHJsaWQ7XG4gNjg3Olx0XHRcdHU4IHJzdlszXTtcbiA2ODg6XHRcdH0gX19wYWNrZWQgcmVxID0ge1xuIDY4OTpcdFx0XHQuY3RybGlkID0gdmFsdWUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE4OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MDQzCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRmlybXdhcmUgUGFyc2luZyBQYXRjaCoqCgpPa2F5LCBzbyBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgaXMgYmVpbmcgZXhwb3J0ZWQsIHdoaWNoIG1lYW5zIGl0JiMzOTtzIGFjY2Vzc2libGUuIFRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgaG93IGZpcm13YXJlIGlzIHBhcnNlZC4gSW1tZWRpYXRlbHksIG15IG1pbmQgZ29lcyB0bywgJiMzNDtJcyB0aGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG9yIGp1c3QgYSBjb2RlIHN0eWxlIHR3ZWFrPyYjMzQ7IFllcywgaXQgKmlzKiBmdW5jdGlvbmFsIOKAkyBpdCYjMzk7cyBhbHRlcmluZyB0aGUgZXhlY3V0aW9uIGZsb3cuIEl0JiMzOTtzIG1vdmluZyBmcm9tIGEgaGFyZCBgLUVJTlZBTGAgcmV0dXJuIHRvIHNpbXBseSBjb250aW51aW5nIHRoZSBwYXJzaW5nLiBUaGUgaW1wbGljYXRpb24gaXMgY2xlYXI6IGl0IG5vdyAqcGVybWl0cyogdGhlIGRyaXZlciB0byB3b3JrIHdpdGggZmlybXdhcmUgdGhhdCBoYXMgdGhlc2UgZXh0cmEgQ0xDIHJlY29yZHMsIHdoaWNoIG1pZ2h0IGhhdmUgYmVlbiByZWplY3RlZCBiZWZvcmUuCgpUaGlzIHNjcmVhbXMgJiMzNDtmdXp6aW5nIHRhcmdldCYjMzQ7IHRvIG1lLiBGaXJtd2FyZSBwYXJzaW5nIGlzICphbHdheXMqIGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuIFNvLCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9ucyBuZWVkZWQuIEkgbmVlZCB0byBrbm93IHdoYXQgZW52aXJvbm1lbnQgdGhpcyBpcyBvcGVyYXRpbmcgdW5kZXIuIEkmIzM5O2xsIG5lZWQgYENPTkZJR19NVDc5MjFfQ09NTU9OYCBhbmQsIHNpbmNlIHRoZXJlJiMzOTtzIGEgZ29vZCBjaGFuY2Ugb2YgVVNCIGludGVyYWN0aW9uIGhlcmUsIGBDT05GSUdfTVQ3OTIxVWAuIE5vdywgbGV0JiMzOTtzIGNvbmZpcm0gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gYnkgcmV2aWV3aW5nIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZ2AgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTg6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1UNzkyMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI6Y29uZmlnIE1UNzkyMV9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzo3OmNvbmZpZyBNVDc5MjFFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTgtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjFFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6MTc6Y29uZmlnIE1UNzkyMVNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMTgtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjFTIChTRElPKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjg6Y29uZmlnIE1UNzkyMVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMjktXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjFVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTg6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ5MTIKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiA3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIENoZWNrbGlzdCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBNVDc5MjFVYCBmb3IgVVNCLCBgTVQ3OTIxRWAgZm9yIFBDSWUsIGFuZCBgTVQ3OTIxU2AgZm9yIFNESU8uIEkgbmVlZCB0byBnZXQgYE1UNzkyMVVgIGVuYWJsZWQgYmVjYXVzZSB0aGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludCBmb3IgVVNCIGZ1enppbmcsIHdoaWNoIGlzIGEga2V5IHRlc3RpbmcgYXJlYSBJIHdhbnQgdG8gZm9jdXMgb24uIEJlZm9yZSBJIGRpdmUgaW50byBhbnl0aGluZywgSSYjMzk7bGwgcXVpY2tseSBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBNVDc5MjFVYCB0byBtYWtlIHN1cmUgZW5hYmxpbmcgaXQgZG9lc24mIzM5O3QgY2F1c2UgYW55IHVuZXhwZWN0ZWQgZG93bnN0cmVhbSBpc3N1ZXMgb3IgY29uZmxpY3RzLiBCZXN0IHRvIHVuZGVyc3RhbmQgdGhlIGxhbmRzY2FwZSBiZWZvcmUgbWFraW5nIGFueSBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxODo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDI1Olx0XG4gIDI2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDI3Olx0XG4gIDI4Olx0Y29uZmlnIE1UNzkyMVVcbiAgMjk6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuICAzMDpcdFx0c2VsZWN0IE1UNzkyeF9VU0JcbiAgMzE6XHRcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXG4gIDMyOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDMzOlx0XHRkZXBlbmRzIG9uIFVTQlxuICAzNDpcdFx0aGVscFxuICAzNTpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxVSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXG4gIDM2Olx0XG4gIDM3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE4OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MzcyCgkJCQkJCQlvdXRwdXQ6IDExOAoJCQkJCQkJdGhvdWdodHM6IDU3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgTVQ3OTIxVSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGRlcGVuZGVuY2llcyBhcmUgcmlnaHQuIFdlJiMzOTtyZSBsb29raW5nIGF0IHRoZSBgTVQ3OTIxVWAgZHJpdmVyLCB3aGljaCBoaW5nZXMgb24gYE1BQzgwMjExYCBhbmQgYFVTQmAuICBUaGVyZWZvcmUsIHRoZSBgTVQ3OTIxVWAgY29uZmlnIG5lZWRzIHRvIGJlIGFkZGVkIHRvIGBFbmFibGVDb25maWdzYCB0byBlbnN1cmUgdGhpcyBkcml2ZXIgaXMgcHJvcGVybHkgZW5hYmxlZC4KCk5vdywgdGhlIGNvcmUgb2YgdGhlIG1hdHRlcjogVGhpcyBwYXRjaCBmb2N1c2VzIG9uIGNoYW5nZXMgdG8gaG93IHRoZSBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgZnVuY3Rpb24gd29ya3MuIFdoaWxlIGBtdDc5MjFfbG9hZF9jbGNgICppcyogc3RhdGljIChqdXN0IGNvbmZpcm1lZCB0aGF0KSwgYG10NzkyMV9ydW5fZmlybXdhcmVgIGlzIGV4cG9ydGVkLCBtYWtpbmcgaXQgdGhlIG1vcmUgYXBwcm9wcmlhdGUgZm9jdXMgZm9yIG91ciBhbmFseXNpcy4KClRoZSBwYXRjaCBpdHNlbGYgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGZpcm13YXJlIHBhcnNpbmcgbG9naWMuIEl0IGFsdGVycyBob3cgd2UgaGFuZGxlIENMQyAoQ29uZmlndXJhdGlvbiBMaWZlY3ljbGUgQ29udHJvbCkgcmVjb3Jkcy4gIEVzc2VudGlhbGx5LCBpdCYjMzk7cyBtb2RpZnlpbmcgdGhlIGVycm9yIGhhbmRsaW5nIHdoZW4gZGVhbGluZyB3aXRoIENMQyByZWNvcmQgaW5kaWNlcyB0aGF0IGFyZSBvdXQgb2YgYm91bmRzLiBUaGUgb2xkIGNvZGUgd291bGQgZXJyb3Igb3V0OyB0aGUgbmV3IGNvZGUgaWdub3JlcyB1bmtub3duIENMQyByZWNvcmRzLgoKVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmU6IGlzIHRoaXMgcGF0Y2ggZnV6emFibGU/IFllcywgYWJzb2x1dGVseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBhIGRyaXZlciwgYW5kIHRoZSBkcml2ZXIgaXMgYWNjZXNzaWJsZSB2aWEgVVNCLiAgVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljIGFuZCB0aGVyZWZvcmUgaXMgd29ydGggZnV6emluZy4KCkdpdmVuIHRoYXQgYE1UNzkyMVVgIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYFVTQmAgKGFuZCBgTUFDODAyMTFgIGl0c2VsZiBkZXBlbmRzIG9uIGBDRkc4MDIxMWApLCBJIG5lZWQgdG8gYWRkIGJvdGggYE1UNzkyMVVgIGFuZCBgTUFDODAyMTFgIHRvIHRoZSBjb25maWd1cmF0aW9uLCBtYWtpbmcgc3VyZSBhbGwgZGVwZW5kZW5jaWVzIGFyZSBpbiBwbGFjZS4KCkFscmlnaHQsIEkmIzM5O20gY29uZmlkZW50IGluIG15IGFuYWx5c2lzLiBMZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxODo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3OTIxVSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyMV9ydW5fZmlybXdhcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZpcm13YXJlIHBhcnNpbmcgbG9naWMgaW4gdGhlIE1UNzkyMSB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgb3V0LW9mLWJvdW5kcyBDTEMgcmVjb3JkIGluZGljZXMgYXJlIGhhbmRsZWQgKGlnbm9yaW5nIHRoZW0gaW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gZXJyb3IpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyMVUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjFfcnVuX2Zpcm13YXJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljIGluIHRoZSBNVDc5MjEgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IG91dC1vZi1ib3VuZHMgQ0xDIHJlY29yZCBpbmRpY2VzIGFyZSBoYW5kbGVkIChpZ25vcmluZyB0aGVtIGluc3RlYWQgb2YgcmV0dXJuaW5nIGFuIGVycm9yKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFVTQiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxODo0MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE4OjQwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYXJzaW5nIGxvZ2ljIGZvciBmaXJtd2FyZSBDTEMgcmVjb3JkcyBpbiB0aGUgbXQ3OTIxIGRyaXZlci4gSXQgY2hhbmdlcyB0aGUgYmVoYXZpb3Igd2hlbiBlbmNvdW50ZXJpbmcgYSBDTEMgcmVjb3JkIHdpdGggYW4gaW5kZXggbGFyZ2VyIHRoYW4gdGhlIGRyaXZlciYjMzk7cyBhcnJheSBzaXplOiBpbnN0ZWFkIG9mIHJldHVybmluZyBhbiBlcnJvciwgaXQgbm93IGlnbm9yZXMgdGhlIHJlY29yZCBhbmQgY29udGludWVzIHBhcnNpbmcuIFRoaXMgcHJldmVudHMgdGhlIGRyaXZlciBmcm9tIGZhaWxpbmcgdG8gbG9hZCBuZXdlciBmaXJtd2FyZSB0aGF0IGNvbnRhaW5zIGFkZGl0aW9uYWwgcmVjb3Jkcy4gVGhlIGRhdGEgYmVpbmcgcGFyc2VkIGlzIGxvYWRlZCBmcm9tIGEgZmlybXdhcmUgZmlsZSBhbmQgaXMgZnVsbHkgaW5pdGlhbGl6ZWQuIFRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgYWxsb2NhdGlvbnMgb2YgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmVzLCBvciBpbmZvcm1hdGlvbiBsZWFrcyB0byB1c2VyIHNwYWNlIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgdG9vbHMgYXJlIHN1ZmZpY2llbnQgZm9yIGRldGVjdGluZyBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIG1lbW9yeSBjb3JydXB0aW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0MDU5ZGE5YjE4MmM3NDQ2MTQ3MDZjZGQ5ZjI3YWU5YzhlYTUyMmFiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMTYgMTg6Mzk6NDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jCmluZGV4IGExMThhMzAxNTY0YzguLjQwNTQ2MDA1Yzc0M2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jCkBAIC00NzcsMTggJiM0Mzs0NzcsMjMgQEAgc3RhdGljIGludCBtdDc5MjFfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSkKIAogCWZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0ICZsdDsgbGVuOyBvZmZzZXQgJiM0Mzs9IGNsY19sZW4pIHsKIAkJaWYgKGxlbiAtIG9mZnNldCAmbHQ7IHNpemVvZigqY2xjKSkgewomIzQzOwkJCWRldl9lcnIobWRldi0mZ3Q7ZGV2LCAmIzM0O0ludmFsaWQgQ0xDIHJlY29yZFxuJiMzNDspOwogCQkJcmV0ID0gLUVJTlZBTDsKIAkJCWdvdG8gb3V0OwogCQl9CiAKIAkJY2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjFfY2xjICopKGNsY19iYXNlICYjNDM7IG9mZnNldCk7CiAJCWNsY19sZW4gPSBsZTMyX3RvX2NwdShjbGMtJmd0O2xlbik7Ci0JCWlmIChjbGNfbGVuICZsdDsgc2l6ZW9mKCpjbGMpIHx8IGNsY19sZW4gJmd0OyBsZW4gLSBvZmZzZXQgfHwKLQkJICAgIGNsYy0mZ3Q7aWR4ICZndDs9IEFSUkFZX1NJWkUocGh5LSZndDtjbGMpKSB7CiYjNDM7CQlpZiAoY2xjX2xlbiAmbHQ7IHNpemVvZigqY2xjKSB8fCBjbGNfbGVuICZndDsgbGVuIC0gb2Zmc2V0KSB7CiYjNDM7CQkJZGV2X2VycihtZGV2LSZndDtkZXYsICYjMzQ7SW52YWxpZCBDTEMgcmVjb3JkXG4mIzM0Oyk7CiAJCQlyZXQgPSAtRUlOVkFMOwogCQkJZ290byBvdXQ7CiAJCX0KIAomIzQzOwkJLyogTmV3ZXIgZmlybXdhcmUgbWF5IGFkZCByZWNvcmRzIHRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZSB5ZXQgKi8KJiM0MzsJCWlmIChjbGMtJmd0O2lkeCAmZ3Q7PSBBUlJBWV9TSVpFKHBoeS0mZ3Q7Y2xjKSkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsKIAkJLyogZG8gbm90IGluaXQgYnVmIGFnYWluIGlmIGNoaXAgcmVzZXQgdHJpZ2dlcmVkICovCiAJCWlmIChwaHktJmd0O2NsY1tjbGMtJmd0O2lkeF0pCiAJCQljb250aW51ZTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE4OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyODEKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiAxOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbXQ3OTIxX2xvYWRfY2xjYCBpbiB0aGUgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuY2AuIEl0IHNlZW1zIGxpa2UgdGhleSYjMzk7cmUgYWRkcmVzc2luZyBzb21lIGlzc3VlIHJlbGF0ZWQgdG8gdGhlIENMQyAoQ2FsaWJyYXRpb24gYW5kIENvbmZpZ3VyYXRpb24pIHJlY29yZHMuIFRoZSBwYXRjaCBhZGRzIGFuIGVycm9yIG1lc3NhZ2Ug4oCTIHRoYXQmIzM5O3MgZ29vZCwgYWx3YXlzIGhlbHBzIHdpdGggZGVidWdnaW5nLiBCdXQgaXTigJlzIHRoZSBjaGFuZ2UgaW4gYmVoYXZpb3IgSSBuZWVkIHRvIHJlYWxseSBkaWcgaW50by4KClByZXZpb3VzbHksIGlmIGBjbGMtJmd0O2lkeGAgd2VudCBiZXlvbmQgdGhlIGJvdW5kcyBvZiBgcGh5LSZndDtjbGNgICggYEFSUkFZX1NJWkUocGh5LSZndDtjbGMpYCApLCBpdCB3b3VsZCByZXR1cm4gYC1FSU5WQUxgLiBUaGlzIHdvdWxkIGVzc2VudGlhbGx5IGhhbHQgdGhlIHByb2Nlc3MuIE5vdywgdGhlIHBhdGNoICpjb250aW51ZXMqIHRoZSBsb29wLiBTbywgaXQgKmlnbm9yZXMqIHRoYXQgc3BlY2lmaWMgcmVjb3JkIGluc3RlYWQgb2YgZXJyb3Jpbmcgb3V0IGFuZCBzdG9wcGluZyB0aGUgd2hvbGUgbG9hZC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyBvdXQtb2YtYm91bmRzIGFjY2VzcyBwcm90ZWN0aW9uLCBidXQgaG9sZCBvbiwgdGhlIHByZXZpb3VzIGJlaGF2aW9yICpwcmV2ZW50ZWQqIHRoYXQuIFNvLCB3aHkgdGhlIGNoYW5nZT8gSXQmIzM5O3MgbW9yZSBsaWtlbHkgdGhpcyBpcyBhYm91dCBncmFjZWZ1bGx5IGhhbmRsaW5nIG5ld2VyIGZpcm13YXJlIHJlY29yZHMgdGhhdCBtaWdodCBoYXZlIGFkZGVkIGRhdGEgYmV5b25kIHdoYXQgdGhpcyBzcGVjaWZpYyBkcml2ZXIgdmVyc2lvbiBleHBlY3RzLgoKUmlnaHQsIHNvIGJ5IGNvbnRpbnVpbmcsIGl0IGVzc2VudGlhbGx5IHNraXBzIG92ZXIgdGhhdCBwb3RlbnRpYWxseSB1bmtub3duIHJlY29yZCBhbmQgbW92ZXMgb24gdG8gdGhlIG5leHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCBza2lwLiBJIG5lZWQgdG8gZXhhbWluZSB0aGUgc3Vycm91bmRpbmcgY29kZSBjYXJlZnVsbHkgbm93IHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiBza2lwcGluZyB0aGF0IGNhbGlicmF0aW9uIHJlY29yZC4gRG9lcyBpdCBoYXZlIGNyaXRpY2FsIGRhdGE/IE9yIGlzIGl0IG9wdGlvbmFsPyBJIG5lZWQgdG8ga25vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTg6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDYwOlx0XHRcdC8qIGNoZWNrIGlmIHdlIGhhdmUgdmFsaWQgYnVmZmVyIHNpemUgKi9cbiA0NjE6XHRcdFx0aWYgKGxlbiBcdTAwM2UgZndfZGF0YV9sZW4gLSBvZmZzZXQpIHtcbiA0NjI6XHRcdFx0XHRkZXZfZXJyKG1kZXYtXHUwMDNlZGV2LCBcJiMzNDtJbnZhbGlkIGZpcm13YXJlIHJlZ2lvblxcblwmIzM0Oyk7XG4gNDYzOlx0XHRcdFx0cmV0ID0gLUVJTlZBTDtcbiA0NjQ6XHRcdFx0XHRnb3RvIG91dDtcbiA0NjU6XHRcdFx0fVxuIDQ2NjpcdFxuIDQ2NzpcdFx0XHRpZiAoKHJlZ2lvbi1cdTAwM2VmZWF0dXJlX3NldCBcdTAwMjYgRldfRkVBVFVSRV9OT05fREwpIFx1MDAyNlx1MDAyNlxuIDQ2ODpcdFx0XHQgICAgcmVnaW9uLVx1MDAzZXR5cGUgPT0gRldfVFlQRV9DTEMpIHtcbiA0Njk6XHRcdFx0XHRjbGNfYmFzZSA9ICh1OCAqKShmdy1cdTAwM2VkYXRhICYjNDM7IG9mZnNldCk7XG4gNDcwOlx0XHRcdFx0YnJlYWs7XG4gNDcxOlx0XHRcdH1cbiA0NzI6XHRcdFx0b2Zmc2V0ICYjNDM7PSBsZW47XG4gNDczOlx0XHR9XG4gNDc0Olx0XG4gNDc1Olx0XHRpZiAoIWNsY19iYXNlKVxuIDQ3NjpcdFx0XHRnb3RvIG91dDtcbiA0Nzc6XHRcbiA0Nzg6XHRcdGZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IFx1MDAzYyBsZW47IG9mZnNldCAmIzQzOz0gY2xjX2xlbikge1xuIDQ3OTpcdFx0XHRpZiAobGVuIC0gb2Zmc2V0IFx1MDAzYyBzaXplb2YoKmNsYykpIHtcbiA0ODA6XHRcdFx0XHRkZXZfZXJyKG1kZXYtXHUwMDNlZGV2LCBcJiMzNDtJbnZhbGlkIENMQyByZWNvcmRcXG5cJiMzNDspO1xuIDQ4MTpcdFx0XHRcdHJldCA9IC1FSU5WQUw7XG4gNDgyOlx0XHRcdFx0Z290byBvdXQ7XG4gNDgzOlx0XHRcdH1cbiA0ODQ6XHRcbiA0ODU6XHRcdFx0Y2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjFfY2xjICopKGNsY19iYXNlICYjNDM7IG9mZnNldCk7XG4gNDg2Olx0XHRcdGNsY19sZW4gPSBsZTMyX3RvX2NwdShjbGMtXHUwMDNlbGVuKTtcbiA0ODc6XHRcdFx0aWYgKGNsY19sZW4gXHUwMDNjIHNpemVvZigqY2xjKSB8fCBjbGNfbGVuIFx1MDAzZSBsZW4gLSBvZmZzZXQpIHtcbiA0ODg6XHRcdFx0XHRkZXZfZXJyKG1kZXYtXHUwMDNlZGV2LCBcJiMzNDtJbnZhbGlkIENMQyByZWNvcmRcXG5cJiMzNDspO1xuIDQ4OTpcdFx0XHRcdHJldCA9IC1FSU5WQUw7XG4gNDkwOlx0XHRcdFx0Z290byBvdXQ7XG4gNDkxOlx0XHRcdH1cbiA0OTI6XHRcbiA0OTM6XHRcdFx0LyogTmV3ZXIgZmlybXdhcmUgbWF5IGFkZCByZWNvcmRzIHRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZSB5ZXQgKi9cbiA0OTQ6XHRcdFx0aWYgKGNsYy1cdTAwM2VpZHggXHUwMDNlPSBBUlJBWV9TSVpFKHBoeS1cdTAwM2VjbGMpKVxuIDQ5NTpcdFx0XHRcdGNvbnRpbnVlO1xuIDQ5NjpcdFxuIDQ5NzpcdFx0XHQvKiBkbyBub3QgaW5pdCBidWYgYWdhaW4gaWYgY2hpcCByZXNldCB0cmlnZ2VyZWQgKi9cbiA0OTg6XHRcdFx0aWYgKHBoeS1cdTAwM2VjbGNbY2xjLVx1MDAzZWlkeF0pXG4gNDk5Olx0XHRcdFx0Y29udGludWU7XG4gNTAwOlx0XG4gNTAxOlx0XHRcdC8qIGhlYWRlciBjb250ZW50IHNhbml0eSAqL1xuIDUwMjpcdFx0XHRpZiAoY2xjLVx1MDAzZWlkeCA9PSBNVDc5MjFfQ0xDX1BPV0VSIFx1MDAyNlx1MDAyNlxuIDUwMzpcdFx0XHQgICAgdThfZ2V0X2JpdHMoY2xjLVx1MDAzZXR5cGUsIE1UX0VFX0hXX1RZUEVfRU5DQVApICE9IGh3X2VuY2FwKVxuIDUwNDpcdFx0XHRcdGNvbnRpbnVlO1xuIDUwNTpcdFxuIDUwNjpcdFx0XHRwaHktXHUwMDNlY2xjW2NsYy1cdTAwM2VpZHhdID0gZGV2bV9rbWVtZHVwKG1kZXYtXHUwMDNlZGV2LCBjbGMsXG4gNTA3Olx0XHRcdFx0XHRcdFx0ICBjbGNfbGVuLFxuIDUwODpcdFx0XHRcdFx0XHRcdCAgR0ZQX0tFUk5FTCk7XG4gNTA5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE4OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MTcKCQkJCQkJCW91dHB1dDogMTY4CgkJCQkJCQl0aG91Z2h0czogMjc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZpcm13YXJlIFBhcnNpbmcgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIG92ZXIgdGhpcyBwYXRjaC4gSXQmIzM5O3MgZm9jdXNlZCBvbiBwYXJzaW5nIGZpcm13YXJlIGRhdGEsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBDTEMgcmVjb3Jkcy4gVGhlIGtleSBjaGFuZ2UgaXMgaG93IGl0IGRlYWxzIHdpdGggYGNsYy0mZ3Q7aWR4ICZndDs9IEFSUkFZX1NJWkUocGh5LSZndDtjbGMpYC4gUHJldmlvdXNseSwgaXQgd2FzIGFuIGVycm9yLCBidXQgbm93IGl0JiMzOTtzIGJlaW5nIGhhbmRsZWQgYnkgc2ltcGx5IHNraXBwaW5nIHRoZSByZWNvcmQuCgpNeSBpbW1lZGlhdGUgYW5hbHlzaXM/IE5vIEtNU0FOIG5lZWRlZC4gVGhlIGZpcm13YXJlIGRhdGEsIGBmdy0mZ3Q7ZGF0YWAsIGlzIGZ1bGx5IGluaXRpYWxpemVkOyBpdCBjb21lcyBkaXJlY3RseSBmcm9tIGEgZmlsZS4gVGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyB0aGUgY29udHJvbCBmbG93IG9mIHRoZSBwYXJzaW5nIHByb2Nlc3M7IGl0IGRvZXNuJiMzOTt0IHRvdWNoIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmUmIzM5O3Mgbm8gd2F5IHRoaXMgaXMgaW50cm9kdWNpbmcgdW5pbml0aWFsaXplZCByZWFkcyBvciBwb3RlbnRpYWwgbGVha3MgdG8gdXNlcnNwYWNlLiBUaGUgZmlybXdhcmUgZGF0YSBpdHNlbGYgaXMgY2FyZWZ1bGx5IGNvbnN0cnVjdGVkIGFuZCBpbml0aWFsaXplZCwgd2hpY2ggbWVhbnMgd2UgYXJlbiYjMzk7dCByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LgoKVGhlcmVmb3JlLCBLTVNBTiBpcyBvdmVya2lsbCBpbiB0aGlzIHNpdHVhdGlvbi4gS0FTQU4gYW5kIG91ciBvdGhlciBzdGFuZGFyZCB0b29scyBzaG91bGQgYmUgcGVyZmVjdGx5IGFkZXF1YXRlIHRvIGNhdGNoIGFueSBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyB0aGF0ICptaWdodCogYXJpc2UgZnJvbSB0aGlzIGNvZGUuIEkmIzM5O20gZ29pbmcgdG8gbWFyayB0aGlzIGFzIGBOZWVkc0tNU0FOPWZhbHNlYC4gSXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgY2hhbmdlIHRoYXQgc2ltcGxpZmllcyB0aGUgZmlybXdhcmUgcGFyc2luZyBpbiBhIHNhZmUgd2F5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxODo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2luZyBsb2dpYyBmb3IgZmlybXdhcmUgQ0xDIHJlY29yZHMgaW4gdGhlIG10NzkyMSBkcml2ZXIuIEl0IGNoYW5nZXMgdGhlIGJlaGF2aW9yIHdoZW4gZW5jb3VudGVyaW5nIGEgQ0xDIHJlY29yZCB3aXRoIGFuIGluZGV4IGxhcmdlciB0aGFuIHRoZSBkcml2ZXImIzM5O3MgYXJyYXkgc2l6ZTogaW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gZXJyb3IsIGl0IG5vdyBpZ25vcmVzIHRoZSByZWNvcmQgYW5kIGNvbnRpbnVlcyBwYXJzaW5nLiBUaGlzIHByZXZlbnRzIHRoZSBkcml2ZXIgZnJvbSBmYWlsaW5nIHRvIGxvYWQgbmV3ZXIgZmlybXdhcmUgdGhhdCBjb250YWlucyBhZGRpdGlvbmFsIHJlY29yZHMuIFRoZSBkYXRhIGJlaW5nIHBhcnNlZCBpcyBsb2FkZWQgZnJvbSBhIGZpcm13YXJlIGZpbGUgYW5kIGlzIGZ1bGx5IGluaXRpYWxpemVkLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGFsbG9jYXRpb25zIG9mIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlcywgb3IgaW5mb3JtYXRpb24gbGVha3MgdG8gdXNlciBzcGFjZSBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIHRvb2xzIGFyZSBzdWZmaWNpZW50IGZvciBkZXRlY3Rpbmcgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBtZW1vcnkgY29ycnVwdGlvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYXJzaW5nIGxvZ2ljIGZvciBmaXJtd2FyZSBDTEMgcmVjb3JkcyBpbiB0aGUgbXQ3OTIxIGRyaXZlci4gSXQgY2hhbmdlcyB0aGUgYmVoYXZpb3Igd2hlbiBlbmNvdW50ZXJpbmcgYSBDTEMgcmVjb3JkIHdpdGggYW4gaW5kZXggbGFyZ2VyIHRoYW4gdGhlIGRyaXZlciYjMzk7cyBhcnJheSBzaXplOiBpbnN0ZWFkIG9mIHJldHVybmluZyBhbiBlcnJvciwgaXQgbm93IGlnbm9yZXMgdGhlIHJlY29yZCBhbmQgY29udGludWVzIHBhcnNpbmcuIFRoaXMgcHJldmVudHMgdGhlIGRyaXZlciBmcm9tIGZhaWxpbmcgdG8gbG9hZCBuZXdlciBmaXJtd2FyZSB0aGF0IGNvbnRhaW5zIGFkZGl0aW9uYWwgcmVjb3Jkcy4gVGhlIGRhdGEgYmVpbmcgcGFyc2VkIGlzIGxvYWRlZCBmcm9tIGEgZmlybXdhcmUgZmlsZSBhbmQgaXMgZnVsbHkgaW5pdGlhbGl6ZWQuIFRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgYWxsb2NhdGlvbnMgb2YgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmVzLCBvciBpbmZvcm1hdGlvbiBsZWFrcyB0byB1c2VyIHNwYWNlIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgdG9vbHMgYXJlIHN1ZmZpY2llbnQgZm9yIGRldGVjdGluZyBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIG1lbW9yeSBjb3JydXB0aW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxODozOTo0NS40NjQ1OTAyNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4ODEyMDA3NDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyMVVcIixcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTIxX3J1bl9maXJtd2FyZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhcnNpbmcgbG9naWMgZm9yIGZpcm13YXJlIENMQyByZWNvcmRzIGluIHRoZSBtdDc5MjEgZHJpdmVyLiBJdCBjaGFuZ2VzIHRoZSBiZWhhdmlvciB3aGVuIGVuY291bnRlcmluZyBhIENMQyByZWNvcmQgd2l0aCBhbiBpbmRleCBsYXJnZXIgdGhhbiB0aGUgZHJpdmVyJ3MgYXJyYXkgc2l6ZTogaW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gZXJyb3IsIGl0IG5vdyBpZ25vcmVzIHRoZSByZWNvcmQgYW5kIGNvbnRpbnVlcyBwYXJzaW5nLiBUaGlzIHByZXZlbnRzIHRoZSBkcml2ZXIgZnJvbSBmYWlsaW5nIHRvIGxvYWQgbmV3ZXIgZmlybXdhcmUgdGhhdCBjb250YWlucyBhZGRpdGlvbmFsIHJlY29yZHMuIFRoZSBkYXRhIGJlaW5nIHBhcnNlZCBpcyBsb2FkZWQgZnJvbSBhIGZpcm13YXJlIGZpbGUgYW5kIGlzIGZ1bGx5IGluaXRpYWxpemVkLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGFsbG9jYXRpb25zIG9mIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlcywgb3IgaW5mb3JtYXRpb24gbGVha3MgdG8gdXNlciBzcGFjZSBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIHRvb2xzIGFyZSBzdWZmaWNpZW50IGZvciBkZXRlY3Rpbmcgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBtZW1vcnkgY29ycnVwdGlvbi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZmlybXdhcmUgcGFyc2luZyBsb2dpYyBpbiB0aGUgTVQ3OTIxIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGhvdyBvdXQtb2YtYm91bmRzIENMQyByZWNvcmQgaW5kaWNlcyBhcmUgaGFuZGxlZCAoaWdub3JpbmcgdGhlbSBpbnN0ZWFkIG9mIHJldHVybmluZyBhbiBlcnJvcikuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBVU0IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTg6Mzk6NDUuNDY0NjAwNzFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjQ0ODczMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0MDU5ZGE5YjE4MmM3NDQ2MTQ3MDZjZGQ5ZjI3YWU5YzhlYTUyMmFiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDE2IDE4OjM5OjQzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcXG5pbmRleCBhMTE4YTMwMTU2NGM4Li40MDU0NjAwNWM3NDNiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcXG5AQCAtNDc3LDE4ICs0NzcsMjMgQEAgc3RhdGljIGludCBtdDc5MjFfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcXG4gXFxuIFxcdGZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IFxcdTAwM2MgbGVuOyBvZmZzZXQgKz0gY2xjX2xlbikge1xcbiBcXHRcXHRpZiAobGVuIC0gb2Zmc2V0IFxcdTAwM2Mgc2l6ZW9mKCpjbGMpKSB7XFxuK1xcdFxcdFxcdGRldl9lcnIobWRldi1cXHUwMDNlZGV2LCBcXFwiSW52YWxpZCBDTEMgcmVjb3JkXFxcXG5cXFwiKTtcXG4gXFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4gXFx0XFx0XFx0Z290byBvdXQ7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGNsYyA9IChjb25zdCBzdHJ1Y3QgbXQ3OTIxX2NsYyAqKShjbGNfYmFzZSArIG9mZnNldCk7XFxuIFxcdFxcdGNsY19sZW4gPSBsZTMyX3RvX2NwdShjbGMtXFx1MDAzZWxlbik7XFxuLVxcdFxcdGlmIChjbGNfbGVuIFxcdTAwM2Mgc2l6ZW9mKCpjbGMpIHx8IGNsY19sZW4gXFx1MDAzZSBsZW4gLSBvZmZzZXQgfHxcXG4tXFx0XFx0ICAgIGNsYy1cXHUwMDNlaWR4IFxcdTAwM2U9IEFSUkFZX1NJWkUocGh5LVxcdTAwM2VjbGMpKSB7XFxuK1xcdFxcdGlmIChjbGNfbGVuIFxcdTAwM2Mgc2l6ZW9mKCpjbGMpIHx8IGNsY19sZW4gXFx1MDAzZSBsZW4gLSBvZmZzZXQpIHtcXG4rXFx0XFx0XFx0ZGV2X2VycihtZGV2LVxcdTAwM2VkZXYsIFxcXCJJbnZhbGlkIENMQyByZWNvcmRcXFxcblxcXCIpO1xcbiBcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbiBcXHRcXHRcXHRnb3RvIG91dDtcXG4gXFx0XFx0fVxcbiBcXG4rXFx0XFx0LyogTmV3ZXIgZmlybXdhcmUgbWF5IGFkZCByZWNvcmRzIHRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZSB5ZXQgKi9cXG4rXFx0XFx0aWYgKGNsYy1cXHUwMDNlaWR4IFxcdTAwM2U9IEFSUkFZX1NJWkUocGh5LVxcdTAwM2VjbGMpKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFxuIFxcdFxcdC8qIGRvIG5vdCBpbml0IGJ1ZiBhZ2FpbiBpZiBjaGlwIHJlc2V0IHRyaWdnZXJlZCAqL1xcbiBcXHRcXHRpZiAocGh5LVxcdTAwM2VjbGNbY2xjLVxcdTAwM2VpZHhdKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTg6Mzk6NDYuODg5NzIzMTI1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDczOTczMzg2NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTIxVVwiLFxuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjFfcnVuX2Zpcm13YXJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZpcm13YXJlIHBhcnNpbmcgbG9naWMgaW4gdGhlIE1UNzkyMSB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgb3V0LW9mLWJvdW5kcyBDTEMgcmVjb3JkIGluZGljZXMgYXJlIGhhbmRsZWQgKGlnbm9yaW5nIHRoZW0gaW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gZXJyb3IpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQwNTlkYTliMTgyYzc0NDYxNDcwNmNkZDlmMjdhZTljOGVhNTIyYWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAxNiAxODozOTo0MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcbmluZGV4IGExMThhMzAxNTY0YzguLjQwNTQ2MDA1Yzc0M2IgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcbkBAIC00NzcsMTggKzQ3NywyMyBAQCBzdGF0aWMgaW50IG10NzkyMV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxuIFxuIFx0Zm9yIChvZmZzZXQgPSAwOyBvZmZzZXQgXHUwMDNjIGxlbjsgb2Zmc2V0ICs9IGNsY19sZW4pIHtcbiBcdFx0aWYgKGxlbiAtIG9mZnNldCBcdTAwM2Mgc2l6ZW9mKCpjbGMpKSB7XG4rXHRcdFx0ZGV2X2VycihtZGV2LVx1MDAzZWRldiwgXCJJbnZhbGlkIENMQyByZWNvcmRcXG5cIik7XG4gXHRcdFx0cmV0ID0gLUVJTlZBTDtcbiBcdFx0XHRnb3RvIG91dDtcbiBcdFx0fVxuIFxuIFx0XHRjbGMgPSAoY29uc3Qgc3RydWN0IG10NzkyMV9jbGMgKikoY2xjX2Jhc2UgKyBvZmZzZXQpO1xuIFx0XHRjbGNfbGVuID0gbGUzMl90b19jcHUoY2xjLVx1MDAzZWxlbik7XG4tXHRcdGlmIChjbGNfbGVuIFx1MDAzYyBzaXplb2YoKmNsYykgfHwgY2xjX2xlbiBcdTAwM2UgbGVuIC0gb2Zmc2V0IHx8XG4tXHRcdCAgICBjbGMtXHUwMDNlaWR4IFx1MDAzZT0gQVJSQVlfU0laRShwaHktXHUwMDNlY2xjKSkge1xuK1x0XHRpZiAoY2xjX2xlbiBcdTAwM2Mgc2l6ZW9mKCpjbGMpIHx8IGNsY19sZW4gXHUwMDNlIGxlbiAtIG9mZnNldCkge1xuK1x0XHRcdGRldl9lcnIobWRldi1cdTAwM2VkZXYsIFwiSW52YWxpZCBDTEMgcmVjb3JkXFxuXCIpO1xuIFx0XHRcdHJldCA9IC1FSU5WQUw7XG4gXHRcdFx0Z290byBvdXQ7XG4gXHRcdH1cbiBcbitcdFx0LyogTmV3ZXIgZmlybXdhcmUgbWF5IGFkZCByZWNvcmRzIHRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZSB5ZXQgKi9cbitcdFx0aWYgKGNsYy1cdTAwM2VpZHggXHUwMDNlPSBBUlJBWV9TSVpFKHBoeS1cdTAwM2VjbGMpKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1xuIFx0XHQvKiBkbyBub3QgaW5pdCBidWYgYWdhaW4gaWYgY2hpcCByZXNldCB0cmlnZ2VyZWQgKi9cbiBcdFx0aWYgKHBoeS1cdTAwM2VjbGNbY2xjLVx1MDAzZWlkeF0pXG4gXHRcdFx0Y29udGludWU7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxODozOTo0Ni44ODk3MjQzMzVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTA5MTQwMzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE1lZGlhdGVrIFdpRmkgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0J3MgdHdlYWtpbmcgdGhlIGBtdDc5MjFfbG9hZF9jbGNgIGZ1bmN0aW9uIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuY2AuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgbGlrZSB0aGUgcGF0Y2ggaXMgYWRkaW5nIGEgYGRldl9lcnJgIGNhbGwgZm9yIGludmFsaWQgQ0xDIHJlY29yZHMgYW5kIHRoZW4gZ3JhY2VmdWxseSBpZ25vcmluZyByZWNvcmRzIHdoZXJlIGBjbGMtXHUwMDNlaWR4YCBpcyBvdXQgb2YgYm91bmRzIChncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYEFSUkFZX1NJWkUocGh5LVx1MDAzZWNsYylgKSBpbnN0ZWFkIG9mIGV4cGxpY2l0bHkgcmV0dXJuaW5nIGFuIGVycm9yLiBUaGF0J3MgaW50ZXJlc3RpbmcsIG1ha2VzIGl0IG1vcmUgcm9idXN0LCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXM6IHdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgZm9yIHZpcnR1YWxpemF0aW9uPyBUaGUgYG10NzkyMWAgaXMgYSBNZWRpYXRlayB3aXJlbGVzcyBkcml2ZXIsIGFuZCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0IGlzIGEgUENJLCBVU0IsIG9yIFNESU8gZHJpdmVyIHRvIGFzc2VzcyBpdHMgdmlydHVhbGl6YWJpbGl0eS4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzb3VyY2UgY29kZSB0byBiZSBzdXJlLCBzbyBsZXQncyBjaGVjayB0aGUgZmlsZXMgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2AgdG8gZmlndXJlIG91dCB0aGUgYnVzIHR5cGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyODQsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxODozOTo1MS4zOTg4NjcxNDJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE5NDQ0MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTIxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDI1MDggbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlLTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTVQ3OTIxX0NPTU1PTikgKz0gbXQ3OTIxLWNvbW1vbi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfTVQ3OTIxRSkgKz0gbXQ3OTIxZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfTVQ3OTIxUykgKz0gbXQ3OTIxcy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTVQ3OTIxVSkgKz0gbXQ3OTIxdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvTWFrZWZpbGUtNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9NYWtlZmlsZTo4Om10NzkyMS1jb21tb24teSA6PSBtYWMubyBtY3UubyByZWdkLm8gbWFpbi5vIGluaXQubyBkZWJ1Z2ZzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9NYWtlZmlsZTo5Om10NzkyMS1jb21tb24tJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlOjEwOm10NzkyMWUteSA6PSBwY2kubyBwY2lfbWFjLm8gcGNpX21jdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvTWFrZWZpbGU6MTE6bXQ3OTIxcy15IDo9IHNkaW8ubyBzZGlvX21hYy5vIHNkaW9fbWN1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9NYWtlZmlsZToxMjptdDc5MjF1LXkgOj0gdXNiLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0zLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzo0OiNpbmNsdWRlIFxcXCJtdDc5MjEuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9Nj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjc6bXQ3OTIxX3JlZ19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MTg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxOTptdDc5MjFfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzozMDpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZWd2YWwsIG10NzkyMV9yZWdfZ2V0LCBtdDc5MjFfcmVnX3NldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMzEtXFx0XFx0XFx0IFxcXCIweCUwOGxseFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTMyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MzM6bXQ3OTIxX2Z3X2RlYnVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0zNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMzktXFx0ZGV2LVxcdTAwM2Vmd19kZWJ1ZyA9ICh1OCl2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjQwOlxcdG10NzkyMV9tY3VfZndfbG9nXzJfaG9zdChkZXYsIGRldi1cXHUwMDNlZndfZGVidWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy00MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz00Nz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjQ4Om10NzkyMV9md19kZWJ1Z19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy01Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6NTc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWcsIG10NzkyMV9md19kZWJ1Z19nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjU4OlxcdFxcdFxcdCBtdDc5MjFfZndfZGVidWdfc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTU5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTYyPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjYzOm10NzkyMV9zZXFfcHV0c19hcnJheShzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKnN0cixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtNjQtXFx0XFx0ICAgICAgczggKnZhbCwgaW50IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy03Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6Nzc6I2RlZmluZSBtdDc5MjFfcHJpbnRfdHhwd3JfZW50cnkocHJlZml4LCByYXRlKVxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtNzgtKHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjc5OlxcdG10NzkyMV9zZXFfcHV0c19hcnJheShzLCAjcHJlZml4IFxcXCIgKHVzZXIpXFxcIixcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTgwLVxcdFxcdFxcdCAgICAgIHR4cHdyLmRhdGFbVFhQV1JfVVNFUl0ucmF0ZSxcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTgxLVxcdFxcdFxcdCAgICAgIEFSUkFZX1NJWkUodHhwd3IuZGF0YVtUWFBXUl9VU0VSXS5yYXRlKSk7IFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6ODI6XFx0bXQ3OTIxX3NlcV9wdXRzX2FycmF5KHMsICNwcmVmaXggXFxcIiAoZWVwcm9tKVxcXCIsXFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy04My1cXHRcXHRcXHQgICAgICB0eHB3ci5kYXRhW1RYUFdSX0VFUFJPTV0ucmF0ZSxcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTg0LVxcdFxcdFxcdCAgICAgIEFSUkFZX1NJWkUodHhwd3IuZGF0YVtUWFBXUl9FRVBST01dLnJhdGUpKTsgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzo4NTpcXHRtdDc5MjFfc2VxX3B1dHNfYXJyYXkocywgI3ByZWZpeCBcXFwiICh0bWFjKVxcXCIsXFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy04Ni1cXHRcXHRcXHQgICAgICB0eHB3ci5kYXRhW1RYUFdSX01BQ10ucmF0ZSxcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9OTA9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzo5MTptdDc5MjFfdHhwd3Ioc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy05Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTkzLVxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cXHUwMDNlcHJpdmF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjk0OlxcdHN0cnVjdCBtdDc5MjFfdHhwd3IgdHhwd3I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTk1LVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtOTctXFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6OTg6XFx0cmV0ID0gbXQ3OTIxX2dldF90eHB3cl9pbmZvKGRldiwgXFx1MDAyNnR4cHdyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtOTktXFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xMDYtXFx0XFx0ICAgXFxcIiBcXFwiLCBcXFwiMW1cXFwiLCBcXFwiMm1cXFwiLCBcXFwiNW1cXFwiLCBcXFwiMTFtXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjEwNzpcXHRtdDc5MjFfcHJpbnRfdHhwd3JfZW50cnkoQ0NLLCBjY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xMDgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTExLVxcdFxcdCAgIFxcXCI0OG1cXFwiLCBcXFwiNTRtXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjExMjpcXHRtdDc5MjFfcHJpbnRfdHhwd3JfZW50cnkoT0ZETSwgb2ZkbSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTExMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xMTYtXFx0XFx0ICAgXFxcIm1jczZcXFwiLCBcXFwibWNzN1xcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxMTc6XFx0bXQ3OTIxX3ByaW50X3R4cHdyX2VudHJ5KEhUMjAsIGh0MjApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xMTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTIxLVxcdFxcdCAgIFxcXCJtY3M2XFxcIiwgXFxcIm1jczdcXFwiLCBcXFwibWNzMzJcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTIyOlxcdG10NzkyMV9wcmludF90eHB3cl9lbnRyeShIVDQwLCBodDQwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTIzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTEyNi1cXHRcXHQgICBcXFwibWNzNlxcXCIsIFxcXCJtY3M3XFxcIiwgXFxcIm1jczhcXFwiLCBcXFwibWNzOVxcXCIsIFxcXCJtY3MxMFxcXCIsIFxcXCJtY3MxMVxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxMjc6XFx0bXQ3OTIxX3ByaW50X3R4cHdyX2VudHJ5KFZIVDIwLCB2aHQyMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjEyODpcXHRtdDc5MjFfcHJpbnRfdHhwd3JfZW50cnkoVkhUNDAsIHZodDQwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTI5OlxcdG10NzkyMV9wcmludF90eHB3cl9lbnRyeShWSFQ4MCwgdmh0ODApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxMzA6XFx0bXQ3OTIxX3ByaW50X3R4cHdyX2VudHJ5KFZIVDE2MCwgdmh0MTYwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTMxOlxcdG10NzkyMV9wcmludF90eHB3cl9lbnRyeShIRTI2LCBoZTI2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTMyOlxcdG10NzkyMV9wcmludF90eHB3cl9lbnRyeShIRTUyLCBoZTUyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTMzOlxcdG10NzkyMV9wcmludF90eHB3cl9lbnRyeShIRTEwNiwgaGUxMDYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxMzQ6XFx0bXQ3OTIxX3ByaW50X3R4cHdyX2VudHJ5KEhFMjQyLCBoZTI0Mik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjEzNTpcXHRtdDc5MjFfcHJpbnRfdHhwd3JfZW50cnkoSEU0ODQsIGhlNDg0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTM2OlxcdG10NzkyMV9wcmludF90eHB3cl9lbnRyeShIRTk5NiwgaGU5OTYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxMzc6XFx0bXQ3OTIxX3ByaW50X3R4cHdyX2VudHJ5KEhFOTk2eDIsIGhlOTk2eDIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xMzgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MTQyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTQzOm10NzkyMV9wbV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xNjYtXFx0cG0tXFx1MDAzZWVuYWJsZV91c2VyID0gdmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxNjc6XFx0bXQ3OTIxX3NldF9ydW50aW1lX3BtKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTE2OC1cXHRtdDc2X2Nvbm5hY19wb3dlcl9zYXZlX3NjaGVkKFxcdTAwMjZkZXYtXFx1MDAzZW1waHksIHBtKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0xNzU9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxNzY6bXQ3OTIxX3BtX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTc3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjE4NTpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbSwgbXQ3OTIxX3BtX2dldCwgbXQ3OTIxX3BtX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTE4Nz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjE4ODptdDc5MjFfZGVlcF9zbGVlcF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTg5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0yMTE9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyMTI6bXQ3OTIxX2RlZXBfc2xlZXBfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjIxOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2RzLCBtdDc5MjFfZGVlcF9zbGVlcF9nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjIyMjpcXHRcXHRcXHQgbXQ3OTIxX2RlZXBfc2xlZXBfc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MjI0PURFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3BtX2lkbGVfdGltZW91dCwgbXQ3OTJ4X3BtX2lkbGVfdGltZW91dF9nZXQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyMjc6c3RhdGljIGludCBtdDc5MjFfY2hpcF9yZXNldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMjgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjQ4OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3Jlc2V0LCBOVUxMLCBtdDc5MjFfY2hpcF9yZXNldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTI1MD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI1MTptdDc5MjFzX3NjaGVkX3F1b3RhX3JlYWQoc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNTIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjY0OmludCBtdDc5MjFfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI2NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjc5LVxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwidHhwb3dlcl9za3VcXFwiLCBkaXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI4MDpcXHRcXHRcXHRcXHQgICAgbXQ3OTIxX3R4cHdyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjgxLVxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInR4X3N0YXRzXFxcIiwgMDQwMCwgZGlyLCBkZXYsIFxcdTAwMjZtdDc5MnhfdHhfc3RhdHNfZm9wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjkxLVxcdFxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwic2NoZWQtcXVvdGFcXFwiLCBkaXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI5MjpcXHRcXHRcXHRcXHRcXHQgICAgbXQ3OTIxc19zY2hlZF9xdW90YV9yZWFkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjkzLVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTgtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Zpcm13YXJlLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjk6I2luY2x1ZGUgXFxcIm10NzkyMS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xMC0jaW5jbHVkZSBcXFwiLi4vbXQ3Nl9jb25uYWMyX21hYy5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxNDpzdGF0aWMgc3NpemVfdCBtdDc5MjFfdGhlcm1hbF90ZW1wX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xNS1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0yNC1cXHRcXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShtZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MjU6XFx0XFx0dGVtcGVyYXR1cmUgPSBtdDc5MjFfbWN1X2dldF90ZW1wZXJhdHVyZShwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0yNi1cXHRcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShtZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0zNi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjM3OnN0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFJfUk8odGVtcDFfaW5wdXQsIG10NzkyMV90aGVybWFsX3RlbXAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0zOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6Mzk6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKm10NzkyMV9od21vbl9hdHRyc1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy00MC1cXHRcXHUwMDI2c2Vuc29yX2Rldl9hdHRyX3RlbXAxX2lucHV0LmRldl9hdHRyLmF0dHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtNDItfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6NDM6QVRUUklCVVRFX0dST1VQUyhtdDc5MjFfaHdtb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy00NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6NDU6c3RhdGljIGludCBtdDc5MjFfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy01My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6NTQ6XFx0bmFtZSA9IGRldm1fa2FzcHJpbnRmKFxcdTAwMjZ3aXBoeS1cXHUwMDNlZGV2LCBHRlBfS0VSTkVMLCBcXFwibXQ3OTIxXyVzXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtNTUtXFx0XFx0XFx0ICAgICAgd2lwaHlfbmFtZSh3aXBoeSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTU5LVxcdGh3bW9uID0gZGV2bV9od21vbl9kZXZpY2VfcmVnaXN0ZXJfd2l0aF9ncm91cHMoXFx1MDAyNndpcGh5LVxcdTAwM2VkZXYsIG5hbWUsIHBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6NjA6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIG10NzkyMV9od21vbl9ncm91cHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy02MS1cXHRyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGh3bW9uKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy02My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6NjQ6aW50IG10NzkyMV9tYWNfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy02NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtNzQtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE1UNzkyeF9XVEJMX1NJWkU7IGkrKylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6NzU6XFx0XFx0bXQ3OTIxX21hY193dGJsX3VwZGF0ZShkZXYsIGksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTc2LVxcdFxcdFxcdFxcdCAgICAgICBNVF9XVEJMX1VQREFURV9BRE1fQ09VTlRfQ0xFQVIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTgxLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6ODI6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX21hY19pbml0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjg0OnN0YXRpYyBpbnQgX19tdDc5MjFfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy04NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtOTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjEwMDpcXHRyZXQgPSBtdDc5MjFfbWN1X3NldF9lZXByb20oZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTAxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxMDQ6XFx0cmV0ID0gbXQ3OTIxX21hY19pbml0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEwNS1vdXQ6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxMDk6c3RhdGljIGludCBtdDc5MjFfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xMTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTExNS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTVQ3OTJ4X01DVV9JTklUX1JFVFJZX0NPVU5UOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTE2OlxcdFxcdHJldCA9IF9fbXQ3OTIxX2luaXRfaGFyZHdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTE3LVxcdFxcdGlmICghcmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTMxOnN0YXRpYyB2b2lkIG10NzkyMV9pbml0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xMzIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEzNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTM3OlxcdHJldCA9IG10NzkyMV9pbml0X2hhcmR3YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEzOC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE0MS1cXHRtdDc2X3NldF9zdHJlYW1fY2FwcyhcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LCB0cnVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTQyOlxcdG10NzkyMV9zZXRfc3RyZWFtX2hlX2NhcHMoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTQzLVxcdG10NzkyeF9jb25maWdfbWFjX2FkZHJfbGlzdChkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTUyOlxcdHJldCA9IG10NzkyMV9pbml0X2RlYnVnZnMoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTUzLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjE1ODpcXHRyZXQgPSBtdDc5MjFfdGhlcm1hbF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE1OS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxNzA6aW50IG10NzkyMV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTcxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xODktXFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlbXBoeS5tYWNfd29yaywgbXQ3OTJ4X21hY193b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTkwOlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXBoeS5zY2FuX3dvcmssIG10NzkyMV9zY2FuX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxOTE6XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlY29yZWR1bXAud29yaywgbXQ3OTIxX2NvcmVkdW1wX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xOTItI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjE5MzpcXHRJTklUX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlaXB2Nl9uc193b3JrLCBtdDc5MjFfc2V0X2lwdjZfbnNfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE5NC1cXHRza2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZWlwdjZfbnNfbGlzdCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxOTk6XFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXJlc2V0X3dvcmssIG10NzkyMV9tYWNfcmVzZXRfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjIwMDpcXHRJTklUX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlaW5pdF93b3JrLCBtdDc5MjFfaW5pdF93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoyMDI6XFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXBoeS5yb2Nfd29yaywgbXQ3OTIxX3JvY193b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjAzLVxcdHRpbWVyX3NldHVwKFxcdTAwMjZkZXYtXFx1MDAzZXBoeS5yb2NfdGltZXIsIG10NzkyeF9yb2NfdGltZXIsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MjMxOlxcdGh3LVxcdTAwM2V3aXBoeS1cXHUwMDNlcmVnX25vdGlmaWVyID0gbXQ3OTIxX3JlZ2Rfbm90aWZpZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIzMi1cXHRkZXYtXFx1MDAzZW1waHkuc2JhbmRfMmcuc2JhbmQuaHRfY2FwLmNhcCB8PVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTI1NS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjI1NjpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjFfcmVnaXN0ZXJfZGV2aWNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTYtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3RpbWVrZWVwaW5nLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NzojaW5jbHVkZSBcXFwibXQ3OTIxLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtOC0jaW5jbHVkZSBcXFwiLi4vZG1hLmhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0xOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoxOTpib29sIG10NzkyMV9tYWNfd3RibF91cGRhdGUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgaW50IGlkeCwgdTMyIG1hc2spXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6Mjg6c3RhdGljIHUzMiBtdDc5MjFfbWFjX3d0YmxfbG1hY19hZGRyKGludCBpZHgsIHU4IG9mZnNldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0yOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0zMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzozMzpzdGF0aWMgdm9pZCBtdDc5MjFfbWFjX3N0YV9wb2xsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzItXFx0XFx0aWR4ID0gbWxpbmstXFx1MDAzZXdjaWQuaWR4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjczOlxcdFxcdGFkZHIgPSBtdDc5MjFfbWFjX3d0YmxfbG1hY19hZGRyKGlkeCwgTVRfV1RCTF9BQzBfQ1RUX09GRlNFVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy05MS1cXHRcXHRpZiAoY2xlYXIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo5MjpcXHRcXHRcXHRtdDc5MjFfbWFjX3d0YmxfdXBkYXRlKGRldiwgaWR4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTkzLVxcdFxcdFxcdFxcdFxcdCAgICAgICBNVF9XVEJMX1VQREFURV9BRE1fQ09VTlRfQ0xFQVIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMTIwLVxcdFxcdHJhdGUgPSBcXHUwMDI2bWxpbmstXFx1MDAzZXdjaWQucmF0ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoxMjE6XFx0XFx0YWRkciA9IG10NzkyMV9tYWNfd3RibF9sbWFjX2FkZHIoaWR4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTEyMi1cXHRcXHRcXHRcXHRcXHRcXHQgTVRfV1RCTF9UWFJYX0NBUF9SQVRFX09GRlNFVCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0xNTItXFx0XFx0LyogZ2V0IHNpZ25hbCBzdHJlbmd0aCBvZiByZXNwIGZyYW1lcyAoQ1RTL0JBL0FDSykgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoxNTM6XFx0XFx0YWRkciA9IG10NzkyMV9tYWNfd3RibF9sbWFjX2FkZHIoaWR4LCAzMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMTU0LVxcdFxcdHZhbCA9IG10NzZfcnIoZGV2LCBhZGRyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTE2OD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6MTY5Om10NzkyMV9tYWNfZmlsbF9yeChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTE3MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy00NDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NDQ3OnZvaWQgbXQ3OTIxX21hY19hZGRfdHhzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNDQ4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTQ4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo0ODU6c3RhdGljIHZvaWQgbXQ3OTIxX21hY190eF9mcmVlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEsIGludCBsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNDg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTU1NS1cXHRyY3VfcmVhZF9sb2NrKCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NTU2OlxcdG10NzkyMV9tYWNfc3RhX3BvbGwoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01NTctXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NTYyOmJvb2wgbXQ3OTIxX3J4X2NoZWNrKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqZGF0YSwgaW50IGxlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01NjMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNTc0LVxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo1NzU6XFx0XFx0bXQ3OTIxX21hY190eF9mcmVlKGRldiwgZGF0YSwgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01NzYtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNTc4LVxcdFxcdGZvciAocnhkICs9IDI7IHJ4ZCArIDggXFx1MDAzYz0gZW5kOyByeGQgKz0gOClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo1Nzk6XFx0XFx0XFx0bXQ3OTIxX21hY19hZGRfdHhzKGRldiwgcnhkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01ODAtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNTg0LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo1ODU6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX3J4X2NoZWNrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01ODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NTg3OnZvaWQgbXQ3OTIxX3F1ZXVlX3J4X3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01ODgtXFx0XFx0XFx0IHN0cnVjdCBza19idWZmICpza2IsIHUzMiAqaW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTYwNy1cXHRcXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NjA4OlxcdFxcdG10NzkyMV9tYWNfdHhfZnJlZShkZXYsIHNrYi1cXHUwMDNlZGF0YSwgc2tiLVxcdTAwM2VsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTYwOS1cXHRcXHRuYXBpX2NvbnN1bWVfc2tiKHNrYiwgMSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02MTEtXFx0Y2FzZSBQS1RfVFlQRV9SWF9FVkVOVDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo2MTI6XFx0XFx0bXQ3OTIxX21jdV9yeF9ldmVudChkZXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjEzLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjE1LVxcdFxcdGZvciAocnhkICs9IDI7IHJ4ZCArIDggXFx1MDAzYz0gZW5kOyByeGQgKz0gOClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo2MTY6XFx0XFx0XFx0bXQ3OTIxX21hY19hZGRfdHhzKGRldiwgcnhkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02MTctXFx0XFx0ZGV2X2tmcmVlX3NrYihza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjIwLVxcdGNhc2UgUEtUX1RZUEVfTk9STUFMOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjYyMTpcXHRcXHRpZiAoIW10NzkyMV9tYWNfZmlsbF9yeChkZXYsIHNrYikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02MjItXFx0XFx0XFx0bXQ3Nl9yeChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBxLCBza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjMwLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo2MzE6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX3F1ZXVlX3J4X3NrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTYzMz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjYzNDptdDc5MjFfdmlmX2Nvbm5lY3RfaXRlcih2b2lkICpwcml2LCB1OCAqbWFjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTYzNS1cXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjQ2LVxcdFxcdFxcdFxcdCAgICBcXHUwMDI2bXZpZi1cXHUwMDNlc3RhLmRlZmxpbmsud2NpZCwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NjQ3OlxcdG10NzkyMV9tY3Vfc2V0X3R4KGRldiwgdmlmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02NDgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02NTEtXFx0XFx0XFx0XFx0XFx0ICAgIHRydWUsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjY1MjpcXHRcXHRtdDc5MjFfbWN1X3N0YV91cGRhdGUoZGV2LCBOVUxMLCB2aWYsIHRydWUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjUzLVxcdFxcdFxcdFxcdCAgICAgIE1UNzZfU1RBX0lORk9fU1RBVEVfTk9ORSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NjU0OlxcdFxcdG10NzkyMV9tY3VfdW5pX2FkZF9iZWFjb25fb2ZmbG9hZChkZXYsIGh3LCB2aWYsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTY1NS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02NTgtLyogc3lzdGVtIGVycm9yIHJlY292ZXJ5ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NjU5OnZvaWQgbXQ3OTIxX21hY19yZXNldF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02NjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzA4LVxcdFxcdFxcdFxcdFxcdCAgICBJRUVFODAyMTFfSUZBQ0VfSVRFUl9SRVNVTUVfQUxMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjcwOTpcXHRcXHRcXHRcXHRcXHQgICAgbXQ3OTIxX3ZpZl9jb25uZWN0X2l0ZXIsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTcxMC1cXHRtdDc2X2Nvbm5hY19wb3dlcl9zYXZlX3NjaGVkKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYucGh5LCBwbSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjcxMjpcXHRtdDc5MjFfcmVnZF9jaGFuZ2UoXFx1MDAyNmRldi1cXHUwMDNlcGh5LCBcXFwiMDBcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy03MTMtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTcxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo3MTU6dm9pZCBtdDc5MjFfY29yZWR1bXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTc2Mz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjc2NDptdDc5MjFfdXNiX3NkaW9fd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc2NS1cXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo3NzY6aW50IG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc3Ny1cXHRcXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTgwNi1cXHRwa3RpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Niwgd2NpZCwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4MDc6XFx0bXQ3OTIxX3VzYl9zZGlvX3dyaXRlX3R4d2koZGV2LCB3Y2lkLCBxaWQsIHN0YSwga2V5LCBwa3RpZCwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04MDgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04MjEtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjgyMjpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTgyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4MjQ6dm9pZCBtdDc5MjFfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04MjUtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9lbnRyeSAqZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTg0Mi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODQzOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyMV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTg0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4NDU6Ym9vbCBtdDc5MjFfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTg0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NDktXFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4NTA6XFx0bXQ3OTIxX21hY19zdGFfcG9sbChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTg1MS1cXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODU0LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4NTU6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODU3LSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjg1ODp2b2lkIG10NzkyMV9zZXRfaXB2Nl9uc193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NTkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTgtI2luY2x1ZGUgXFx1MDAzY25ldC9pcHY2LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjk6I2luY2x1ZGUgXFxcIm10NzkyMS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0xMC0jaW5jbHVkZSBcXFwicmVnZC5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jPTEzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MTQ6bXQ3OTIxX2luaXRfaGVfY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBlbnVtIG5sODAyMTFfYmFuZCBiYW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0xNS1cXHRcXHQgICAgc3RydWN0IGllZWU4MDIxMV9zYmFuZF9pZnR5cGVfZGF0YSAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0xOTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjE5Njp2b2lkIG10NzkyMV9zZXRfc3RyZWFtX2hlX2NhcHMoc3RydWN0IG10NzkyeF9waHkgKnBoeSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMTk3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yMDMtXFx0XFx0ZGF0YSA9IHBoeS1cXHUwMDNlaWZ0eXBlW05MODAyMTFfQkFORF8yR0haXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjA0OlxcdFxcdG4gPSBtdDc5MjFfaW5pdF9oZV9jYXBzKHBoeSwgTkw4MDIxMV9CQU5EXzJHSFosIGRhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yMDUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjExLVxcdFxcdGRhdGEgPSBwaHktXFx1MDAzZWlmdHlwZVtOTDgwMjExX0JBTkRfNUdIWl07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjIxMjpcXHRcXHRuID0gbXQ3OTIxX2luaXRfaGVfY2FwcyhwaHksIE5MODAyMTFfQkFORF81R0haLCBkYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjEzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTIxOC1cXHRcXHRcXHRkYXRhID0gcGh5LVxcdTAwM2VpZnR5cGVbTkw4MDIxMV9CQU5EXzZHSFpdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzoyMTk6XFx0XFx0XFx0biA9IG10NzkyMV9pbml0X2hlX2NhcHMocGh5LCBOTDgwMjExX0JBTkRfNkdIWiwgZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTIyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjIyNzppbnQgX19tdDc5MjFfc3RhcnQoc3RydWN0IG10NzkyeF9waHkgKnBoeSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI0MDpcXHRlcnIgPSBtdDc5MjFfbWN1X3NldF9jaGFuX2luZm8ocGh5LCBNQ1VfRVhUX0NNRChTRVRfUlhfUEFUSCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNDEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI0NDpcXHRlcnIgPSBtdDc5MjFfc2V0X3R4X3Nhcl9wd3IobXBoeS1cXHUwMDNlaHcsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNDUtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNTMtXFx0aWYgKG10NzZfaXNfbW1pbyhtcGh5LVxcdTAwM2VkZXYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI1NDpcXHRcXHRlcnIgPSBtdDc5MjFfbWN1X3JhZGlvX2xlZF9jdHJsKHBoeS1cXHUwMDNlZGV2LCBFWFRfQ01EX1JBRElPX0xFRF9DVFJMX0VOQUJMRSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI1NS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjU4OlxcdFxcdGVyciA9IG10NzkyMV9tY3VfcmFkaW9fbGVkX2N0cmwocGh5LVxcdTAwM2VkZXYsIEVYVF9DTURfUkFESU9fT05fTEVEKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjU5LVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjYzLVxcdGlmIChwaHktXFx1MDAzZWNoaXBfY2FwIFxcdTAwMjYgTVQ3OTJ4X0NISVBfQ0FQX1dGX1JGX1BJTl9DVFJMX0VWVF9FTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzoyNjQ6XFx0XFx0bXQ3OTIxX21jdV93Zl9yZl9waW5fY3RybChwaHksIFdGX1JGX1BJTl9JTklUKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjY1LVxcdFxcdHdpcGh5X3Jma2lsbF9zdGFydF9wb2xsaW5nKG1waHktXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjY5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjcwOkVYUE9SVF9TWU1CT0xfR1BMKF9fbXQ3OTIxX3N0YXJ0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzoyNzI6c3RhdGljIGludCBtdDc5MjFfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI3My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjc3LVxcdG10NzkyeF9tdXRleF9hY3F1aXJlKHBoeS1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6Mjc4OlxcdGVyciA9IF9fbXQ3OTIxX3N0YXJ0KHBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI3OS1cXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShwaHktXFx1MDAzZWRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzoyODQ6c3RhdGljIHZvaWQgbXQ3OTIxX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yOTAtXFx0XFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjkxOlxcdFxcdGVyciA9IG10NzkyMV9tY3VfcmFkaW9fbGVkX2N0cmwoZGV2LCBFWFRfQ01EX1JBRElPX09GRl9MRUQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yOTItXFx0XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYz0zMDA9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozMDE6bXQ3OTIxX2FkZF9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTMwMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozMzk6XFx0bXQ3OTIxX21hY193dGJsX3VwZGF0ZShkZXYsIGlkeCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzQwLVxcdFxcdFxcdCAgICAgICBNVF9XVEJMX1VQREFURV9BRE1fQ09VTlRfQ0xFQVIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzU0OlxcdElOSVRfV09SSyhcXHUwMDI2bXZpZi1cXHUwMDNlY3NhX3dvcmssIG10NzkyMV9jc2Ffd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM1NS1cXHR0aW1lcl9zZXR1cChcXHUwMDI2bXZpZi1cXHUwMDNlY3NhX3RpbWVyLCBtdDc5MnhfY3NhX3RpbWVyLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zNjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjM2MjpzdGF0aWMgdm9pZCBtdDc5MjFfcm9jX2l0ZXIodm9pZCAqcHJpdiwgdTggKm1hYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzYzLVxcdFxcdFxcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzY4OlxcdG10NzkyMV9tY3VfYWJvcnRfcm9jKHBoeSwgbXZpZiwgcGh5LVxcdTAwM2Vyb2NfdG9rZW5faWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zNjktfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjM3MTp2b2lkIG10NzkyMV9yb2NfYWJvcnRfc3luYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zNzIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM4Mi1cXHRcXHRcXHRcXHQgICAgIElFRUU4MDIxMV9JRkFDRV9JVEVSX1JFU1VNRV9BTEwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjM4MzpcXHRcXHRcXHRcXHQgICAgIG10NzkyMV9yb2NfaXRlciwgKHZvaWQgKilwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zODQtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozODU6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX3JvY19hYm9ydF9zeW5jKTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTg6Mzk6NTEuNDgwODE1MjQzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkyODU3NjE1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBNVDc5MjFFIERyaXZlcjogQSBVU0ItQmFzZWQgQXBwcm9hY2gqKlxuXG5Pa2F5LCBzbyB0aGUgYG10NzkyMWVgIGRyaXZlciBzdXBwb3J0cyBQQ0ksIFNESU8sIGFuZCBVU0IsIHdoaWNoIGlzIGdvb2QgbmV3cy4gSSdtIGZvY3VzaW5nIG9uIHRoZSBVU0IgZHJpdmVyLCBgbXQ3OTIxdWAsIGJlY2F1c2UgdGhhdCBvcGVucyB1cCBzb21lIGludGVyZXN0aW5nIGZ1enppbmcgcG9zc2liaWxpdGllcy4gVGhpbmtpbmcgcHJhY3RpY2FsbHksIHRoaXMgbWVhbnMgSSBjYW4gbGV2ZXJhZ2UgdGhlIFVTQiBnYWRnZXQgZnJhbWV3b3JrIOKAkyBzcGVjaWZpY2FsbHksIGEgZHVtbXkgSENEIOKAkyB0byBmdXp6IHRoaXMgdGhpbmcgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoYXQncyBhIG11Y2ggY2xlYW5lciBhbmQgbW9yZSBjb250cm9sbGVkIHNldHVwIHRoYW4gbWVzc2luZyB3aXRoIGFjdHVhbCBoYXJkd2FyZS5cblxuTm93LCB3aGVyZSdzIHRoZSBjb2RlPyBBaCwgaGVyZSBpdCBpcywgdGhlIHBhdGNoIEkgd2FzIGxvb2tpbmcgZm9yIGlzIGxvY2F0ZWQgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuY2AuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIHNlZSBob3cgdGhlIGBtdDc5MjFfbG9hZF9jbGNgIGZ1bmN0aW9uIGdldHMgY2FsbGVkLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY29uZmlybSB3aGV0aGVyIGl0J3MgcmVhY2hhYmxlIGFuZCB0cmlnZ2VyZWQgZHVyaW5nIHN0YXJ0dXAuIEknbSBnb2luZyB0byBsb29rIGZvciB0aGUgZW50cnkgcG9pbnQuIExldCdzIHN0YXJ0IHRyYWNpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MTIzLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE4OjM5OjU2LjQwOTM5NTk1NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTIwMTkzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MjFfbG9hZF9jbGNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jPTQwMT1pbnQgbXQ3OTIxX21jdV91bmlfcnhfYmEoc3RydWN0IG10NzkyeF9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTQxMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo0MTI6c3RhdGljIGludCBtdDc5MjFfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy00MTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM9NjYyPWludCBtdDc5MjFfcnVuX2Zpcm13YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy02NzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6Njc0OlxcdGVyciA9IG10NzkyMV9sb2FkX2NsYyhkZXYsIG10NzkyeF9yYW1fbmFtZShkZXYpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy02NzUtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTg6Mzk6NTYuNDk0NjAyNTU2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI3MDIxNjIyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRmlybXdhcmUgTG9hZGluZyBTZXF1ZW5jZSBpbiBNVDc5MjEqKlxuXG5Pa2F5LCBzbyBgbXQ3OTIxX2xvYWRfY2xjYCBpcyBkZWZpbml0ZWx5IGEga2V5IGZ1bmN0aW9uLCBhbmQgdGhlIGNvZGUgdGVsbHMgbWUgaXQgZ2V0cyBjYWxsZWQgZnJvbSBgbXQ3OTIxX3J1bl9maXJtd2FyZWAuIFRoYXQgc3VnZ2VzdHMgYSB2ZXJ5IHNwZWNpZmljIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlICpicm9hZGVyKiBjb250ZXh0LiBXaGVyZSBpcyBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgaXRzZWxmIGludm9rZWQ/IFRoYXQncyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAuIEJ5IHRyYWNpbmcgYmFjayB0byB0aGUgY2FsbGVycyBvZiBgbXQ3OTIxX3J1bl9maXJtd2FyZWAsIEkgY2FuIHBpZWNlIHRvZ2V0aGVyIHRoZSBjb21wbGV0ZSBmaXJtd2FyZSBsb2FkaW5nIGFuZCBpbml0aWFsaXphdGlvbiBmbG93LCB3aGljaCBpcyBwcm9iYWJseSBjcml0aWNhbCB0byBkaWFnbm9zaW5nIHNvbWUgaXNzdWUgb3IgdW5kZXJzdGFuZGluZyB0aGUgYm9vdCBzZXF1ZW5jZS4gS25vd2luZyB0aGUgY2FsbCBncmFwaCB3aWxsIHJlYWxseSBoZWxwIG1lIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IHN1YnN5c3RlbXMgYW5kIGRyaXZlcnMuIFRpbWUgdG8gZmlyZSB1cCBteSBkZWJ1Z2dlciBhbmQgc3RhcnQgZGlnZ2luZyB0aHJvdWdoIHRoZSBjYWxsIHNpdGVzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTk1NSwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE4OjQwOjAwLjc2NDgyMjU2MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY2OTAwMzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTIxX3J1bl9maXJtd2FyZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM9NjQ5PWludCBtdDc5MjFfbWN1X2Z3X2xvZ18yX2hvc3Qoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggY3RybClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo2NjI6aW50IG10NzkyMV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy02NjMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjgwLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo2ODE6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX3J1bl9maXJtd2FyZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjgyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmg9MjA2PXZvaWQgbXQ3OTIxX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oOjIwNzppbnQgbXQ3OTIxX3J1bl9maXJtd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaC0yMDgtaW50IG10NzkyMV9zZXRfY2hhbm5lbChzdHJ1Y3QgbXQ3Nl9waHkgKm1waHkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21hYy5jPTU2PWludCBtdDc5MjFlX21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21hYy5jLTEwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWFjLmM6MTA3OlxcdGVyciA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWFjLmMtMTA4LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWN1LmM9NDE9aW50IG10NzkyMWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tY3UuYy01Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWN1LmM6NTg6XFx0ZXJyID0gbXQ3OTIxX3J1bl9maXJtd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tY3UuYy01OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWFjLmM9MTQ3PWludCBtdDc5MjFzX21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tYWMuYy0xODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tYWMuYzoxODE6XFx0ZXJyID0gbXQ3OTIxX3J1bl9maXJtd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWFjLmMtMTgyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21jdS5jPTc0PWludCBtdDc5MjFzX21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21jdS5jLTkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWN1LmM6OTE6XFx0cmV0ID0gbXQ3OTIxX3J1bl9maXJtd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWN1LmMtOTItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTY1PXN0YXRpYyBpbnQgbXQ3OTIxdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtNzgtXFx0bXQ3Nl9zZXQoZGV2LCBNVF9VRE1BX1RYX1FTRUwsIE1UX0ZXX0RMX0VOKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzo3OTpcXHRyZXQgPSBtdDc5MjFfcnVuX2Zpcm13YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtODAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTg5PXN0YXRpYyBpbnQgbXQ3OTIxdV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTEyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzoxMjc6XFx0ZXJyID0gbXQ3OTIxX3J1bl9maXJtd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTEyOC1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxODo0MDowMC44NzE1MTg2MzVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDkzNjc0MTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgQ29kZSBQYXRoKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYG10NzkyMXVfbWN1X2luaXRgIGZ1bmN0aW9uLCBjYWxsZWQgZnJvbSBgdXNiLmNgLiBUaGUgZmFjdCB0aGF0IGl0J3MgY29ubmVjdGVkIHRvIFVTQiBpcyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZywgZXNwZWNpYWxseSBjb25zaWRlcmluZyBwb3RlbnRpYWwgYXR0YWNrIHZlY3RvcnMuIFRoaXMgb3BlbnMgdXAgcG9zc2liaWxpdGllcyBmb3IgVVNCIGdhZGdldCBmdXp6aW5nLCB3aGljaCBtZWFucyB0aGUgZXhwb3N1cmUgaXMgc29tZXRoaW5nIEkgbmVlZCB0byBrZWVwIGluIG1pbmQuIFRoZSBjcnV4IG9mIHRoaXMgY2hhbmdlIHNlZW1zIHRvIHJldm9sdmUgYXJvdW5kIGhvdyBDTEMgcmVjb3JkcyBhcmUgcGFyc2VkIHdpdGhpbiBgbXQ3OTIxX2xvYWRfY2xjYCwgc28gSSBzaG91bGQgcHJvYmFibHkgc3RhcnQgdGhlcmUuIExldCdzIGhlYWQgb3ZlciB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNgIGFuZCBkaWcgaW50byBgbXQ3OTIxX2xvYWRfY2xjYCBmdW5jdGlvbiBpdHNlbGYsIHRvIGZpZ3VyZSBvdXQgd2hhdCdzIGdvaW5nIG9uIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTczNywiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxODo0MDowNS45NjUxOTU4MDlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgyNjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ2MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ2MDpcXHRcXHRcXHQvKiBjaGVjayBpZiB3ZSBoYXZlIHZhbGlkIGJ1ZmZlciBzaXplICovXFxuIDQ2MTpcXHRcXHRcXHRpZiAobGVuIFxcdTAwM2UgZndfZGF0YV9sZW4gLSBvZmZzZXQpIHtcXG4gNDYyOlxcdFxcdFxcdFxcdGRldl9lcnIobWRldi1cXHUwMDNlZGV2LCBcXFwiSW52YWxpZCBmaXJtd2FyZSByZWdpb25cXFxcblxcXCIpO1xcbiA0NjM6XFx0XFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4gNDY0OlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbiA0NjU6XFx0XFx0XFx0fVxcbiA0NjY6XFx0XFxuIDQ2NzpcXHRcXHRcXHRpZiAoKHJlZ2lvbi1cXHUwMDNlZmVhdHVyZV9zZXQgXFx1MDAyNiBGV19GRUFUVVJFX05PTl9ETCkgXFx1MDAyNlxcdTAwMjZcXG4gNDY4OlxcdFxcdFxcdCAgICByZWdpb24tXFx1MDAzZXR5cGUgPT0gRldfVFlQRV9DTEMpIHtcXG4gNDY5OlxcdFxcdFxcdFxcdGNsY19iYXNlID0gKHU4ICopKGZ3LVxcdTAwM2VkYXRhICsgb2Zmc2V0KTtcXG4gNDcwOlxcdFxcdFxcdFxcdGJyZWFrO1xcbiA0NzE6XFx0XFx0XFx0fVxcbiA0NzI6XFx0XFx0XFx0b2Zmc2V0ICs9IGxlbjtcXG4gNDczOlxcdFxcdH1cXG4gNDc0OlxcdFxcbiA0NzU6XFx0XFx0aWYgKCFjbGNfYmFzZSlcXG4gNDc2OlxcdFxcdFxcdGdvdG8gb3V0O1xcbiA0Nzc6XFx0XFxuIDQ3ODpcXHRcXHRmb3IgKG9mZnNldCA9IDA7IG9mZnNldCBcXHUwMDNjIGxlbjsgb2Zmc2V0ICs9IGNsY19sZW4pIHtcXG4gNDc5OlxcdFxcdFxcdGlmIChsZW4gLSBvZmZzZXQgXFx1MDAzYyBzaXplb2YoKmNsYykpIHtcXG4gNDgwOlxcdFxcdFxcdFxcdGRldl9lcnIobWRldi1cXHUwMDNlZGV2LCBcXFwiSW52YWxpZCBDTEMgcmVjb3JkXFxcXG5cXFwiKTtcXG4gNDgxOlxcdFxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuIDQ4MjpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4gNDgzOlxcdFxcdFxcdH1cXG4gNDg0OlxcdFxcbiA0ODU6XFx0XFx0XFx0Y2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjFfY2xjICopKGNsY19iYXNlICsgb2Zmc2V0KTtcXG4gNDg2OlxcdFxcdFxcdGNsY19sZW4gPSBsZTMyX3RvX2NwdShjbGMtXFx1MDAzZWxlbik7XFxuIDQ4NzpcXHRcXHRcXHRpZiAoY2xjX2xlbiBcXHUwMDNjIHNpemVvZigqY2xjKSB8fCBjbGNfbGVuIFxcdTAwM2UgbGVuIC0gb2Zmc2V0KSB7XFxuIDQ4ODpcXHRcXHRcXHRcXHRkZXZfZXJyKG1kZXYtXFx1MDAzZWRldiwgXFxcIkludmFsaWQgQ0xDIHJlY29yZFxcXFxuXFxcIik7XFxuIDQ4OTpcXHRcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbiA0OTA6XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuIDQ5MTpcXHRcXHRcXHR9XFxuIDQ5MjpcXHRcXG4gNDkzOlxcdFxcdFxcdC8qIE5ld2VyIGZpcm13YXJlIG1heSBhZGQgcmVjb3JkcyB0aGlzIGRyaXZlciBkb2VzIG5vdCB1c2UgeWV0ICovXFxuIDQ5NDpcXHRcXHRcXHRpZiAoY2xjLVxcdTAwM2VpZHggXFx1MDAzZT0gQVJSQVlfU0laRShwaHktXFx1MDAzZWNsYykpXFxuIDQ5NTpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gNDk2OlxcdFxcbiA0OTc6XFx0XFx0XFx0LyogZG8gbm90IGluaXQgYnVmIGFnYWluIGlmIGNoaXAgcmVzZXQgdHJpZ2dlcmVkICovXFxuIDQ5ODpcXHRcXHRcXHRpZiAocGh5LVxcdTAwM2VjbGNbY2xjLVxcdTAwM2VpZHhdKVxcbiA0OTk6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIDUwMDpcXHRcXG4gNTAxOlxcdFxcdFxcdC8qIGhlYWRlciBjb250ZW50IHNhbml0eSAqL1xcbiA1MDI6XFx0XFx0XFx0aWYgKGNsYy1cXHUwMDNlaWR4ID09IE1UNzkyMV9DTENfUE9XRVIgXFx1MDAyNlxcdTAwMjZcXG4gNTAzOlxcdFxcdFxcdCAgICB1OF9nZXRfYml0cyhjbGMtXFx1MDAzZXR5cGUsIE1UX0VFX0hXX1RZUEVfRU5DQVApICE9IGh3X2VuY2FwKVxcbiA1MDQ6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIDUwNTpcXHRcXG4gNTA2OlxcdFxcdFxcdHBoeS1cXHUwMDNlY2xjW2NsYy1cXHUwMDNlaWR4XSA9IGRldm1fa21lbWR1cChtZGV2LVxcdTAwM2VkZXYsIGNsYyxcXG4gNTA3OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgY2xjX2xlbixcXG4gNTA4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgR0ZQX0tFUk5FTCk7XFxuIDUwOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTg6NDA6MDUuOTY1MzgxODg5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3NzU2OTE2MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoaXMgRmlybXdhcmUgUGFyc2luZyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWJvdXQgaG93IHdlIHBhcnNlIGZpcm13YXJlIHJlY29yZHMuIFNwZWNpZmljYWxseSwgaXQncyBkZWFsaW5nIHdpdGggZmlybXdhcmUgZmlsZXMgdGhhdCBhcmUgbG9hZGVkIGZyb20gdGhlIGZpbGVzeXN0ZW0gdXNpbmcgYHJlcXVlc3RfZmlybXdhcmVgLiBUaGUgZmlyc3QgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcywgY2FuIHN5emthbGxlciBldmVuIHRvdWNoIGZpcm13YXJlIGZpbGVzPyBPaCByaWdodCwgaXQgY2FuLCB1c2luZyBgc3l6X21vdW50X2ltYWdlYCwgcm9vdGZzIG1vZGlmaWNhdGlvbnMsIG9yIGV2ZW4gdGhlIGZpcm13YXJlIGxvYWRlciBmYWxsYmFjay5cblxuQnV0LCBob2xkIG9uLiBJcyBzeXprYWxsZXIgZnV6emluZyB0aGUgZmlybXdhcmUgZGlyZWN0bHksIG9yIGp1c3QgdGhlIGNvZGUgdGhhdCAqdXNlcyogdGhlIGZpcm13YXJlPyBUeXBpY2FsbHksIGl0J3MgZm9jdXNlZCBvbiBzeXNjYWxscyBhbmQgdGhpbmdzIGxpa2UgVVNCL1BDSS4gRmlybXdhcmUgbG9hZGluZyBpcyB1c3VhbGx5IHNvbWV0aGluZyB0aGF0IGhhcHBlbnMgZnJvbSB0aGUgaG9zdCBmaWxlc3lzdGVtLiBIb3dldmVyLCBpdCAqY2FuKiBpbnRlcmNlcHQgZmlybXdhcmUgbG9hZGluZyBpZiBgcmVxdWVzdF9maXJtd2FyZWAgaXMgaW52b2x2ZWQgYW5kIHRoZSBmYWxsYmFjayBvciBjdXN0b20gZmlsZXN5c3RlbSBtZWNoYW5pc21zIGFyZSBpbiBwbGF5LlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBJcyB0aGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGFuZCBpcyBpdCB3b3J0aCB0aGUgZWZmb3J0IHRvIGZ1enogaXQ/IFRoZSBwYXRjaCBzZWVtcyB0byBiZSBhZGRpbmcgYSBgZGV2X2VycmAgY2FsbCBhbmQgbW9kaWZ5aW5nIHRoZSBlcnJvciBoYW5kbGluZyB3aGVuIGBjbGMtXHUwMDNlaWR4YCBnb2VzIG91dCBvZiBib3VuZHMuIFByZXZpb3VzbHksIGl0IHJldHVybmVkIGAtRUlOVkFMYC4gTm93LCBpdCBqdXN0IGBjb250aW51ZWBzLiBTbywgaXQncyBiYXNpY2FsbHkgYSBmaXggdG8gYWxsb3cgbmV3ZXIgZmlybXdhcmUgdG8gd29yayBvbiBvbGRlciBrZXJuZWxzLlxuXG5IbW0sIGJlY2F1c2UgdGhpcyBhZmZlY3RzIGZpcm13YXJlIHBhcnNpbmcsIGl0IGNvdWxkIGJlIHRyaWdnZXJlZCBpZiBzeXprYWxsZXIgZmVlZHMgYSBjdXN0b20gZmlybXdhcmUgZmlsZSBpbnRvIHRoZSBzeXN0ZW0uIEl0J3MgYSBwYXJzaW5nIGlzc3VlLCB0aGF0ICpjb3VsZCogYmUgZXhwbG9pdGVkLlxuXG5MZXQncyBkaWcgYSBiaXQgZGVlcGVyLiBJIHNlZSBgbXQ3OTIxX2xvYWRfY2xjYCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBtZWFucyBpdCdzIGNhbGxlZCBvbmx5IHdpdGhpbiB0aGUgc2FtZSBjb21waWxhdGlvbiB1bml0LiBUaGUgY2FsbGVyIGlzIGBtdDc5MjFfcnVuX2Zpcm13YXJlYC4gT2theSwgbGV0J3MgdHVybiBvdXIgYXR0ZW50aW9uIHRvIGBtdDc5MjFfcnVuX2Zpcm13YXJlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI4MzUsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxODo0MDoxMy43NDEwNzY4NDFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY2MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY2MDpcXHR9XFxuIDY2MTpcXHRcXG4gNjYyOlxcdGludCBtdDc5MjFfcnVuX2Zpcm13YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuIDY2MzpcXHR7XFxuIDY2NDpcXHRcXHRpbnQgZXJyO1xcbiA2NjU6XFx0XFxuIDY2NjpcXHRcXHRlcnIgPSBtdDc5MnhfbG9hZF9maXJtd2FyZShkZXYpO1xcbiA2Njc6XFx0XFx0aWYgKGVycilcXG4gNjY4OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDY2OTpcXHRcXG4gNjcwOlxcdFxcdGVyciA9IG10NzkyMV9tY3VfZ2V0X25pY19jYXBhYmlsaXR5KFxcdTAwMjZkZXYtXFx1MDAzZXBoeSk7XFxuIDY3MTpcXHRcXHRpZiAoZXJyKVxcbiA2NzI6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gNjczOlxcdFxcbiA2NzQ6XFx0XFx0ZXJyID0gbXQ3OTIxX2xvYWRfY2xjKGRldiwgbXQ3OTJ4X3JhbV9uYW1lKGRldikpO1xcbiA2NzU6XFx0XFx0aWYgKGVycilcXG4gNjc2OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDY3NzpcXHRcXHRzZXRfYml0KE1UNzZfU1RBVEVfTUNVX1JVTk5JTkcsIFxcdTAwMjZkZXYtXFx1MDAzZW1waHkuc3RhdGUpO1xcbiA2Nzg6XFx0XFxuIDY3OTpcXHRcXHRyZXR1cm4gbXQ3OTIxX21jdV9md19sb2dfMl9ob3N0KGRldiwgMSk7XFxuIDY4MDpcXHR9XFxuIDY4MTpcXHRFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjFfcnVuX2Zpcm13YXJlKTtcXG4gNjgyOlxcdFxcbiA2ODM6XFx0aW50IG10NzkyMV9tY3VfcmFkaW9fbGVkX2N0cmwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggdmFsdWUpXFxuIDY4NDpcXHR7XFxuIDY4NTpcXHRcXHRzdHJ1Y3Qge1xcbiA2ODY6XFx0XFx0XFx0dTggY3RybGlkO1xcbiA2ODc6XFx0XFx0XFx0dTggcnN2WzNdO1xcbiA2ODg6XFx0XFx0fSBfX3BhY2tlZCByZXEgPSB7XFxuIDY4OTpcXHRcXHRcXHQuY3RybGlkID0gdmFsdWUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE4OjQwOjEzLjc0MTI0ODY5MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzEwMDE0NTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRmlybXdhcmUgUGFyc2luZyBQYXRjaCoqXG5cbk9rYXksIHNvIGBtdDc5MjFfcnVuX2Zpcm13YXJlYCBpcyBiZWluZyBleHBvcnRlZCwgd2hpY2ggbWVhbnMgaXQncyBhY2Nlc3NpYmxlLiBUaGlzIHBhdGNoIGlzIHRvdWNoaW5nIGhvdyBmaXJtd2FyZSBpcyBwYXJzZWQuIEltbWVkaWF0ZWx5LCBteSBtaW5kIGdvZXMgdG8sIFwiSXMgdGhpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBvciBqdXN0IGEgY29kZSBzdHlsZSB0d2Vhaz9cIiBZZXMsIGl0ICppcyogZnVuY3Rpb25hbCDigJMgaXQncyBhbHRlcmluZyB0aGUgZXhlY3V0aW9uIGZsb3cuIEl0J3MgbW92aW5nIGZyb20gYSBoYXJkIGAtRUlOVkFMYCByZXR1cm4gdG8gc2ltcGx5IGNvbnRpbnVpbmcgdGhlIHBhcnNpbmcuIFRoZSBpbXBsaWNhdGlvbiBpcyBjbGVhcjogaXQgbm93ICpwZXJtaXRzKiB0aGUgZHJpdmVyIHRvIHdvcmsgd2l0aCBmaXJtd2FyZSB0aGF0IGhhcyB0aGVzZSBleHRyYSBDTEMgcmVjb3Jkcywgd2hpY2ggbWlnaHQgaGF2ZSBiZWVuIHJlamVjdGVkIGJlZm9yZS5cblxuVGhpcyBzY3JlYW1zIFwiZnV6emluZyB0YXJnZXRcIiB0byBtZS4gRmlybXdhcmUgcGFyc2luZyBpcyAqYWx3YXlzKiBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLiBTbywgbGV0J3MgbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9ucyBuZWVkZWQuIEkgbmVlZCB0byBrbm93IHdoYXQgZW52aXJvbm1lbnQgdGhpcyBpcyBvcGVyYXRpbmcgdW5kZXIuIEknbGwgbmVlZCBgQ09ORklHX01UNzkyMV9DT01NT05gIGFuZCwgc2luY2UgdGhlcmUncyBhIGdvb2QgY2hhbmNlIG9mIFVTQiBpbnRlcmFjdGlvbiBoZXJlLCBgQ09ORklHX01UNzkyMVVgLiBOb3csIGxldCdzIGNvbmZpcm0gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gYnkgcmV2aWV3aW5nIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZ2AgZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQwNDMsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxODo0MDoxOS40NTEyNjcyMTRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyNTI0MTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNVDc5MjFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI6Y29uZmlnIE1UNzkyMV9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyMUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTgtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyMUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6MTc6Y29uZmlnIE1UNzkyMVNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjFTIChTRElPKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI4OmNvbmZpZyBNVDc5MjFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yOS1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxODo0MDoxOS41MDM3OTY2MTFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc2NDEzNzg4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIENoZWNrbGlzdCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zOiBgTVQ3OTIxVWAgZm9yIFVTQiwgYE1UNzkyMUVgIGZvciBQQ0llLCBhbmQgYE1UNzkyMVNgIGZvciBTRElPLiBJIG5lZWQgdG8gZ2V0IGBNVDc5MjFVYCBlbmFibGVkIGJlY2F1c2UgdGhhdCdzIHRoZSBlbnRyeSBwb2ludCBmb3IgVVNCIGZ1enppbmcsIHdoaWNoIGlzIGEga2V5IHRlc3RpbmcgYXJlYSBJIHdhbnQgdG8gZm9jdXMgb24uIEJlZm9yZSBJIGRpdmUgaW50byBhbnl0aGluZywgSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE1UNzkyMVVgIHRvIG1ha2Ugc3VyZSBlbmFibGluZyBpdCBkb2Vzbid0IGNhdXNlIGFueSB1bmV4cGVjdGVkIGRvd25zdHJlYW0gaXNzdWVzIG9yIGNvbmZsaWN0cy4gQmVzdCB0byB1bmRlcnN0YW5kIHRoZSBsYW5kc2NhcGUgYmVmb3JlIG1ha2luZyBhbnkgY2hhbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ5MTIsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxODo0MDoyNS4yNjc5Mzc1ODFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyOTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjU6XFx0XFxuICAyNjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuICAyNzpcXHRcXG4gIDI4OlxcdGNvbmZpZyBNVDc5MjFVXFxuICAyOTpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSBzdXBwb3J0XFxcIlxcbiAgMzA6XFx0XFx0c2VsZWN0IE1UNzkyeF9VU0JcXG4gIDMxOlxcdFxcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXFxuICAzMjpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAzMzpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgMzQ6XFx0XFx0aGVscFxcbiAgMzU6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxVSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXFxuICAzNjpcXHRcXG4gIDM3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTg6NDA6MjUuMjY4MDQyNzUxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg4NzAxMzQ3MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIE1UNzkyMVUgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZGVwZW5kZW5jaWVzIGFyZSByaWdodC4gV2UncmUgbG9va2luZyBhdCB0aGUgYE1UNzkyMVVgIGRyaXZlciwgd2hpY2ggaGluZ2VzIG9uIGBNQUM4MDIxMWAgYW5kIGBVU0JgLiAgVGhlcmVmb3JlLCB0aGUgYE1UNzkyMVVgIGNvbmZpZyBuZWVkcyB0byBiZSBhZGRlZCB0byBgRW5hYmxlQ29uZmlnc2AgdG8gZW5zdXJlIHRoaXMgZHJpdmVyIGlzIHByb3Blcmx5IGVuYWJsZWQuXG5cbk5vdywgdGhlIGNvcmUgb2YgdGhlIG1hdHRlcjogVGhpcyBwYXRjaCBmb2N1c2VzIG9uIGNoYW5nZXMgdG8gaG93IHRoZSBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgZnVuY3Rpb24gd29ya3MuIFdoaWxlIGBtdDc5MjFfbG9hZF9jbGNgICppcyogc3RhdGljIChqdXN0IGNvbmZpcm1lZCB0aGF0KSwgYG10NzkyMV9ydW5fZmlybXdhcmVgIGlzIGV4cG9ydGVkLCBtYWtpbmcgaXQgdGhlIG1vcmUgYXBwcm9wcmlhdGUgZm9jdXMgZm9yIG91ciBhbmFseXNpcy5cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgZmlybXdhcmUgcGFyc2luZyBsb2dpYy4gSXQgYWx0ZXJzIGhvdyB3ZSBoYW5kbGUgQ0xDIChDb25maWd1cmF0aW9uIExpZmVjeWNsZSBDb250cm9sKSByZWNvcmRzLiAgRXNzZW50aWFsbHksIGl0J3MgbW9kaWZ5aW5nIHRoZSBlcnJvciBoYW5kbGluZyB3aGVuIGRlYWxpbmcgd2l0aCBDTEMgcmVjb3JkIGluZGljZXMgdGhhdCBhcmUgb3V0IG9mIGJvdW5kcy4gVGhlIG9sZCBjb2RlIHdvdWxkIGVycm9yIG91dDsgdGhlIG5ldyBjb2RlIGlnbm9yZXMgdW5rbm93biBDTEMgcmVjb3Jkcy5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmU6IGlzIHRoaXMgcGF0Y2ggZnV6emFibGU/IFllcywgYWJzb2x1dGVseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBhIGRyaXZlciwgYW5kIHRoZSBkcml2ZXIgaXMgYWNjZXNzaWJsZSB2aWEgVVNCLiAgVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljIGFuZCB0aGVyZWZvcmUgaXMgd29ydGggZnV6emluZy5cblxuR2l2ZW4gdGhhdCBgTVQ3OTIxVWAgZGVwZW5kcyBvbiBgTUFDODAyMTFgIGFuZCBgVVNCYCAoYW5kIGBNQUM4MDIxMWAgaXRzZWxmIGRlcGVuZHMgb24gYENGRzgwMjExYCksIEkgbmVlZCB0byBhZGQgYm90aCBgTVQ3OTIxVWAgYW5kIGBNQUM4MDIxMWAgdG8gdGhlIGNvbmZpZ3VyYXRpb24sIG1ha2luZyBzdXJlIGFsbCBkZXBlbmRlbmNpZXMgYXJlIGluIHBsYWNlLlxuXG5BbHJpZ2h0LCBJJ20gY29uZmlkZW50IGluIG15IGFuYWx5c2lzLiBMZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MzcyLCJPdXRwdXRUb2tlbnMiOjExOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE4OjQwOjM0LjEzODE4MDQ2NVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODg3Nzc2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTIxVVwiLFxuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjFfcnVuX2Zpcm13YXJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZpcm13YXJlIHBhcnNpbmcgbG9naWMgaW4gdGhlIE1UNzkyMSB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgb3V0LW9mLWJvdW5kcyBDTEMgcmVjb3JkIGluZGljZXMgYXJlIGhhbmRsZWQgKGlnbm9yaW5nIHRoZW0gaW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gZXJyb3IpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTIxVVwiLFxuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjFfcnVuX2Zpcm13YXJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZpcm13YXJlIHBhcnNpbmcgbG9naWMgaW4gdGhlIE1UNzkyMSB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgb3V0LW9mLWJvdW5kcyBDTEMgcmVjb3JkIGluZGljZXMgYXJlIGhhbmRsZWQgKGlnbm9yaW5nIHRoZW0gaW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gZXJyb3IpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE4OjQwOjM0LjI4NzA2NTk3NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTk4OTUyMjU4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE4OjQwOjM0LjI4NzUwNzMzNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo5OTg5MDc3MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2luZyBsb2dpYyBmb3IgZmlybXdhcmUgQ0xDIHJlY29yZHMgaW4gdGhlIG10NzkyMSBkcml2ZXIuIEl0IGNoYW5nZXMgdGhlIGJlaGF2aW9yIHdoZW4gZW5jb3VudGVyaW5nIGEgQ0xDIHJlY29yZCB3aXRoIGFuIGluZGV4IGxhcmdlciB0aGFuIHRoZSBkcml2ZXIncyBhcnJheSBzaXplOiBpbnN0ZWFkIG9mIHJldHVybmluZyBhbiBlcnJvciwgaXQgbm93IGlnbm9yZXMgdGhlIHJlY29yZCBhbmQgY29udGludWVzIHBhcnNpbmcuIFRoaXMgcHJldmVudHMgdGhlIGRyaXZlciBmcm9tIGZhaWxpbmcgdG8gbG9hZCBuZXdlciBmaXJtd2FyZSB0aGF0IGNvbnRhaW5zIGFkZGl0aW9uYWwgcmVjb3Jkcy4gVGhlIGRhdGEgYmVpbmcgcGFyc2VkIGlzIGxvYWRlZCBmcm9tIGEgZmlybXdhcmUgZmlsZSBhbmQgaXMgZnVsbHkgaW5pdGlhbGl6ZWQuIFRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgYWxsb2NhdGlvbnMgb2YgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmVzLCBvciBpbmZvcm1hdGlvbiBsZWFrcyB0byB1c2VyIHNwYWNlIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgdG9vbHMgYXJlIHN1ZmZpY2llbnQgZm9yIGRldGVjdGluZyBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIG1lbW9yeSBjb3JydXB0aW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQwNTlkYTliMTgyYzc0NDYxNDcwNmNkZDlmMjdhZTljOGVhNTIyYWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAxNiAxODozOTo0MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcbmluZGV4IGExMThhMzAxNTY0YzguLjQwNTQ2MDA1Yzc0M2IgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcbkBAIC00NzcsMTggKzQ3NywyMyBAQCBzdGF0aWMgaW50IG10NzkyMV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxuIFxuIFx0Zm9yIChvZmZzZXQgPSAwOyBvZmZzZXQgXHUwMDNjIGxlbjsgb2Zmc2V0ICs9IGNsY19sZW4pIHtcbiBcdFx0aWYgKGxlbiAtIG9mZnNldCBcdTAwM2Mgc2l6ZW9mKCpjbGMpKSB7XG4rXHRcdFx0ZGV2X2VycihtZGV2LVx1MDAzZWRldiwgXCJJbnZhbGlkIENMQyByZWNvcmRcXG5cIik7XG4gXHRcdFx0cmV0ID0gLUVJTlZBTDtcbiBcdFx0XHRnb3RvIG91dDtcbiBcdFx0fVxuIFxuIFx0XHRjbGMgPSAoY29uc3Qgc3RydWN0IG10NzkyMV9jbGMgKikoY2xjX2Jhc2UgKyBvZmZzZXQpO1xuIFx0XHRjbGNfbGVuID0gbGUzMl90b19jcHUoY2xjLVx1MDAzZWxlbik7XG4tXHRcdGlmIChjbGNfbGVuIFx1MDAzYyBzaXplb2YoKmNsYykgfHwgY2xjX2xlbiBcdTAwM2UgbGVuIC0gb2Zmc2V0IHx8XG4tXHRcdCAgICBjbGMtXHUwMDNlaWR4IFx1MDAzZT0gQVJSQVlfU0laRShwaHktXHUwMDNlY2xjKSkge1xuK1x0XHRpZiAoY2xjX2xlbiBcdTAwM2Mgc2l6ZW9mKCpjbGMpIHx8IGNsY19sZW4gXHUwMDNlIGxlbiAtIG9mZnNldCkge1xuK1x0XHRcdGRldl9lcnIobWRldi1cdTAwM2VkZXYsIFwiSW52YWxpZCBDTEMgcmVjb3JkXFxuXCIpO1xuIFx0XHRcdHJldCA9IC1FSU5WQUw7XG4gXHRcdFx0Z290byBvdXQ7XG4gXHRcdH1cbiBcbitcdFx0LyogTmV3ZXIgZmlybXdhcmUgbWF5IGFkZCByZWNvcmRzIHRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZSB5ZXQgKi9cbitcdFx0aWYgKGNsYy1cdTAwM2VpZHggXHUwMDNlPSBBUlJBWV9TSVpFKHBoeS1cdTAwM2VjbGMpKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1xuIFx0XHQvKiBkbyBub3QgaW5pdCBidWYgYWdhaW4gaWYgY2hpcCByZXNldCB0cmlnZ2VyZWQgKi9cbiBcdFx0aWYgKHBoeS1cdTAwM2VjbGNbY2xjLVx1MDAzZWlkeF0pXG4gXHRcdFx0Y29udGludWU7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxODo0MDozNC4yODc1MDgzNTVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQzNTg3NjIwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbXQ3OTIxX2xvYWRfY2xjYCBpbiB0aGUgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0J3MgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jYC4gSXQgc2VlbXMgbGlrZSB0aGV5J3JlIGFkZHJlc3Npbmcgc29tZSBpc3N1ZSByZWxhdGVkIHRvIHRoZSBDTEMgKENhbGlicmF0aW9uIGFuZCBDb25maWd1cmF0aW9uKSByZWNvcmRzLiBUaGUgcGF0Y2ggYWRkcyBhbiBlcnJvciBtZXNzYWdlIOKAkyB0aGF0J3MgZ29vZCwgYWx3YXlzIGhlbHBzIHdpdGggZGVidWdnaW5nLiBCdXQgaXTigJlzIHRoZSBjaGFuZ2UgaW4gYmVoYXZpb3IgSSBuZWVkIHRvIHJlYWxseSBkaWcgaW50by5cblxuUHJldmlvdXNseSwgaWYgYGNsYy1cdTAwM2VpZHhgIHdlbnQgYmV5b25kIHRoZSBib3VuZHMgb2YgYHBoeS1cdTAwM2VjbGNgICggYEFSUkFZX1NJWkUocGh5LVx1MDAzZWNsYylgICksIGl0IHdvdWxkIHJldHVybiBgLUVJTlZBTGAuIFRoaXMgd291bGQgZXNzZW50aWFsbHkgaGFsdCB0aGUgcHJvY2Vzcy4gTm93LCB0aGUgcGF0Y2ggKmNvbnRpbnVlcyogdGhlIGxvb3AuIFNvLCBpdCAqaWdub3JlcyogdGhhdCBzcGVjaWZpYyByZWNvcmQgaW5zdGVhZCBvZiBlcnJvcmluZyBvdXQgYW5kIHN0b3BwaW5nIHRoZSB3aG9sZSBsb2FkLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIG91dC1vZi1ib3VuZHMgYWNjZXNzIHByb3RlY3Rpb24sIGJ1dCBob2xkIG9uLCB0aGUgcHJldmlvdXMgYmVoYXZpb3IgKnByZXZlbnRlZCogdGhhdC4gU28sIHdoeSB0aGUgY2hhbmdlPyBJdCdzIG1vcmUgbGlrZWx5IHRoaXMgaXMgYWJvdXQgZ3JhY2VmdWxseSBoYW5kbGluZyBuZXdlciBmaXJtd2FyZSByZWNvcmRzIHRoYXQgbWlnaHQgaGF2ZSBhZGRlZCBkYXRhIGJleW9uZCB3aGF0IHRoaXMgc3BlY2lmaWMgZHJpdmVyIHZlcnNpb24gZXhwZWN0cy5cblxuUmlnaHQsIHNvIGJ5IGNvbnRpbnVpbmcsIGl0IGVzc2VudGlhbGx5IHNraXBzIG92ZXIgdGhhdCBwb3RlbnRpYWxseSB1bmtub3duIHJlY29yZCBhbmQgbW92ZXMgb24gdG8gdGhlIG5leHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCBza2lwLiBJIG5lZWQgdG8gZXhhbWluZSB0aGUgc3Vycm91bmRpbmcgY29kZSBjYXJlZnVsbHkgbm93IHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiBza2lwcGluZyB0aGF0IGNhbGlicmF0aW9uIHJlY29yZC4gRG9lcyBpdCBoYXZlIGNyaXRpY2FsIGRhdGE/IE9yIGlzIGl0IG9wdGlvbmFsPyBJIG5lZWQgdG8ga25vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI4MSwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE4OjQwOjM4LjcyMzM4NzMyMloiLCJTZXEiOjIyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQ4NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDYwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDYwOlxcdFxcdFxcdC8qIGNoZWNrIGlmIHdlIGhhdmUgdmFsaWQgYnVmZmVyIHNpemUgKi9cXG4gNDYxOlxcdFxcdFxcdGlmIChsZW4gXFx1MDAzZSBmd19kYXRhX2xlbiAtIG9mZnNldCkge1xcbiA0NjI6XFx0XFx0XFx0XFx0ZGV2X2VycihtZGV2LVxcdTAwM2VkZXYsIFxcXCJJbnZhbGlkIGZpcm13YXJlIHJlZ2lvblxcXFxuXFxcIik7XFxuIDQ2MzpcXHRcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbiA0NjQ6XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuIDQ2NTpcXHRcXHRcXHR9XFxuIDQ2NjpcXHRcXG4gNDY3OlxcdFxcdFxcdGlmICgocmVnaW9uLVxcdTAwM2VmZWF0dXJlX3NldCBcXHUwMDI2IEZXX0ZFQVRVUkVfTk9OX0RMKSBcXHUwMDI2XFx1MDAyNlxcbiA0Njg6XFx0XFx0XFx0ICAgIHJlZ2lvbi1cXHUwMDNldHlwZSA9PSBGV19UWVBFX0NMQykge1xcbiA0Njk6XFx0XFx0XFx0XFx0Y2xjX2Jhc2UgPSAodTggKikoZnctXFx1MDAzZWRhdGEgKyBvZmZzZXQpO1xcbiA0NzA6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDQ3MTpcXHRcXHRcXHR9XFxuIDQ3MjpcXHRcXHRcXHRvZmZzZXQgKz0gbGVuO1xcbiA0NzM6XFx0XFx0fVxcbiA0NzQ6XFx0XFxuIDQ3NTpcXHRcXHRpZiAoIWNsY19iYXNlKVxcbiA0NzY6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDQ3NzpcXHRcXG4gNDc4OlxcdFxcdGZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IFxcdTAwM2MgbGVuOyBvZmZzZXQgKz0gY2xjX2xlbikge1xcbiA0Nzk6XFx0XFx0XFx0aWYgKGxlbiAtIG9mZnNldCBcXHUwMDNjIHNpemVvZigqY2xjKSkge1xcbiA0ODA6XFx0XFx0XFx0XFx0ZGV2X2VycihtZGV2LVxcdTAwM2VkZXYsIFxcXCJJbnZhbGlkIENMQyByZWNvcmRcXFxcblxcXCIpO1xcbiA0ODE6XFx0XFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4gNDgyOlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbiA0ODM6XFx0XFx0XFx0fVxcbiA0ODQ6XFx0XFxuIDQ4NTpcXHRcXHRcXHRjbGMgPSAoY29uc3Qgc3RydWN0IG10NzkyMV9jbGMgKikoY2xjX2Jhc2UgKyBvZmZzZXQpO1xcbiA0ODY6XFx0XFx0XFx0Y2xjX2xlbiA9IGxlMzJfdG9fY3B1KGNsYy1cXHUwMDNlbGVuKTtcXG4gNDg3OlxcdFxcdFxcdGlmIChjbGNfbGVuIFxcdTAwM2Mgc2l6ZW9mKCpjbGMpIHx8IGNsY19sZW4gXFx1MDAzZSBsZW4gLSBvZmZzZXQpIHtcXG4gNDg4OlxcdFxcdFxcdFxcdGRldl9lcnIobWRldi1cXHUwMDNlZGV2LCBcXFwiSW52YWxpZCBDTEMgcmVjb3JkXFxcXG5cXFwiKTtcXG4gNDg5OlxcdFxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuIDQ5MDpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4gNDkxOlxcdFxcdFxcdH1cXG4gNDkyOlxcdFxcbiA0OTM6XFx0XFx0XFx0LyogTmV3ZXIgZmlybXdhcmUgbWF5IGFkZCByZWNvcmRzIHRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZSB5ZXQgKi9cXG4gNDk0OlxcdFxcdFxcdGlmIChjbGMtXFx1MDAzZWlkeCBcXHUwMDNlPSBBUlJBWV9TSVpFKHBoeS1cXHUwMDNlY2xjKSlcXG4gNDk1OlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiA0OTY6XFx0XFxuIDQ5NzpcXHRcXHRcXHQvKiBkbyBub3QgaW5pdCBidWYgYWdhaW4gaWYgY2hpcCByZXNldCB0cmlnZ2VyZWQgKi9cXG4gNDk4OlxcdFxcdFxcdGlmIChwaHktXFx1MDAzZWNsY1tjbGMtXFx1MDAzZWlkeF0pXFxuIDQ5OTpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gNTAwOlxcdFxcbiA1MDE6XFx0XFx0XFx0LyogaGVhZGVyIGNvbnRlbnQgc2FuaXR5ICovXFxuIDUwMjpcXHRcXHRcXHRpZiAoY2xjLVxcdTAwM2VpZHggPT0gTVQ3OTIxX0NMQ19QT1dFUiBcXHUwMDI2XFx1MDAyNlxcbiA1MDM6XFx0XFx0XFx0ICAgIHU4X2dldF9iaXRzKGNsYy1cXHUwMDNldHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApXFxuIDUwNDpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gNTA1OlxcdFxcbiA1MDY6XFx0XFx0XFx0cGh5LVxcdTAwM2VjbGNbY2xjLVxcdTAwM2VpZHhdID0gZGV2bV9rbWVtZHVwKG1kZXYtXFx1MDAzZWRldiwgY2xjLFxcbiA1MDc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBjbGNfbGVuLFxcbiA1MDg6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBHRlBfS0VSTkVMKTtcXG4gNTA5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxODo0MDozOC43MjM1NDQ1ODJaIiwiU2VxIjoyMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU1MzAxNjM2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGaXJtd2FyZSBQYXJzaW5nIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgb3ZlciB0aGlzIHBhdGNoLiBJdCdzIGZvY3VzZWQgb24gcGFyc2luZyBmaXJtd2FyZSBkYXRhLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgQ0xDIHJlY29yZHMuIFRoZSBrZXkgY2hhbmdlIGlzIGhvdyBpdCBkZWFscyB3aXRoIGBjbGMtXHUwMDNlaWR4IFx1MDAzZT0gQVJSQVlfU0laRShwaHktXHUwMDNlY2xjKWAuIFByZXZpb3VzbHksIGl0IHdhcyBhbiBlcnJvciwgYnV0IG5vdyBpdCdzIGJlaW5nIGhhbmRsZWQgYnkgc2ltcGx5IHNraXBwaW5nIHRoZSByZWNvcmQuXG5cbk15IGltbWVkaWF0ZSBhbmFseXNpcz8gTm8gS01TQU4gbmVlZGVkLiBUaGUgZmlybXdhcmUgZGF0YSwgYGZ3LVx1MDAzZWRhdGFgLCBpcyBmdWxseSBpbml0aWFsaXplZDsgaXQgY29tZXMgZGlyZWN0bHkgZnJvbSBhIGZpbGUuIFRoZSBwYXRjaCAqb25seSogbW9kaWZpZXMgdGhlIGNvbnRyb2wgZmxvdyBvZiB0aGUgcGFyc2luZyBwcm9jZXNzOyBpdCBkb2Vzbid0IHRvdWNoIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmUncyBubyB3YXkgdGhpcyBpcyBpbnRyb2R1Y2luZyB1bmluaXRpYWxpemVkIHJlYWRzIG9yIHBvdGVudGlhbCBsZWFrcyB0byB1c2Vyc3BhY2UuIFRoZSBmaXJtd2FyZSBkYXRhIGl0c2VsZiBpcyBjYXJlZnVsbHkgY29uc3RydWN0ZWQgYW5kIGluaXRpYWxpemVkLCB3aGljaCBtZWFucyB3ZSBhcmVuJ3QgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeS5cblxuVGhlcmVmb3JlLCBLTVNBTiBpcyBvdmVya2lsbCBpbiB0aGlzIHNpdHVhdGlvbi4gS0FTQU4gYW5kIG91ciBvdGhlciBzdGFuZGFyZCB0b29scyBzaG91bGQgYmUgcGVyZmVjdGx5IGFkZXF1YXRlIHRvIGNhdGNoIGFueSBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyB0aGF0ICptaWdodCogYXJpc2UgZnJvbSB0aGlzIGNvZGUuIEknbSBnb2luZyB0byBtYXJrIHRoaXMgYXMgYE5lZWRzS01TQU49ZmFsc2VgLiBJdCdzIGEgc3RyYWlnaHRmb3J3YXJkIGNoYW5nZSB0aGF0IHNpbXBsaWZpZXMgdGhlIGZpcm13YXJlIHBhcnNpbmcgaW4gYSBzYWZlIHdheS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYxNywiT3V0cHV0VG9rZW5zIjoxNjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxODo0MDo0NC4yNzY1NjM0OTZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTQxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYXJzaW5nIGxvZ2ljIGZvciBmaXJtd2FyZSBDTEMgcmVjb3JkcyBpbiB0aGUgbXQ3OTIxIGRyaXZlci4gSXQgY2hhbmdlcyB0aGUgYmVoYXZpb3Igd2hlbiBlbmNvdW50ZXJpbmcgYSBDTEMgcmVjb3JkIHdpdGggYW4gaW5kZXggbGFyZ2VyIHRoYW4gdGhlIGRyaXZlcidzIGFycmF5IHNpemU6IGluc3RlYWQgb2YgcmV0dXJuaW5nIGFuIGVycm9yLCBpdCBub3cgaWdub3JlcyB0aGUgcmVjb3JkIGFuZCBjb250aW51ZXMgcGFyc2luZy4gVGhpcyBwcmV2ZW50cyB0aGUgZHJpdmVyIGZyb20gZmFpbGluZyB0byBsb2FkIG5ld2VyIGZpcm13YXJlIHRoYXQgY29udGFpbnMgYWRkaXRpb25hbCByZWNvcmRzLiBUaGUgZGF0YSBiZWluZyBwYXJzZWQgaXMgbG9hZGVkIGZyb20gYSBmaXJtd2FyZSBmaWxlIGFuZCBpcyBmdWxseSBpbml0aWFsaXplZC4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBhbGxvY2F0aW9ucyBvZiB1bmluaXRpYWxpemVkIHN0cnVjdHVyZXMsIG9yIGluZm9ybWF0aW9uIGxlYWtzIHRvIHVzZXIgc3BhY2UgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciB0b29scyBhcmUgc3VmZmljaWVudCBmb3IgZGV0ZWN0aW5nIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgbWVtb3J5IGNvcnJ1cHRpb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhcnNpbmcgbG9naWMgZm9yIGZpcm13YXJlIENMQyByZWNvcmRzIGluIHRoZSBtdDc5MjEgZHJpdmVyLiBJdCBjaGFuZ2VzIHRoZSBiZWhhdmlvciB3aGVuIGVuY291bnRlcmluZyBhIENMQyByZWNvcmQgd2l0aCBhbiBpbmRleCBsYXJnZXIgdGhhbiB0aGUgZHJpdmVyJ3MgYXJyYXkgc2l6ZTogaW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gZXJyb3IsIGl0IG5vdyBpZ25vcmVzIHRoZSByZWNvcmQgYW5kIGNvbnRpbnVlcyBwYXJzaW5nLiBUaGlzIHByZXZlbnRzIHRoZSBkcml2ZXIgZnJvbSBmYWlsaW5nIHRvIGxvYWQgbmV3ZXIgZmlybXdhcmUgdGhhdCBjb250YWlucyBhZGRpdGlvbmFsIHJlY29yZHMuIFRoZSBkYXRhIGJlaW5nIHBhcnNlZCBpcyBsb2FkZWQgZnJvbSBhIGZpcm13YXJlIGZpbGUgYW5kIGlzIGZ1bGx5IGluaXRpYWxpemVkLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGFsbG9jYXRpb25zIG9mIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlcywgb3IgaW5mb3JtYXRpb24gbGVha3MgdG8gdXNlciBzcGFjZSBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIHRvb2xzIGFyZSBzdWZmaWNpZW50IGZvciBkZXRlY3Rpbmcgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBtZW1vcnkgY29ycnVwdGlvbi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowdph95[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-16 18:01:02 +0000 UTC FinishedAt: 2026-08-16 18:40:46 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4477a78374a57c3809b172ad30cceabda48c47c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7921U", "MAC80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4477a78374a57c3809b172ad30cceabda48c47c6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MT7921U", "MAC80211" ], "series_id": "f7185af4-8227-4ea2-b2fe-b52ce22e9c7d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "mt7921_run_firmware" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE2IDE4OjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyMVUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjFfcnVuX2Zpcm13YXJlJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhcnNpbmcgbG9naWMgZm9yIGZpcm13YXJlIENMQyByZWNvcmRzIGluIHRoZSBtdDc5MjEgZHJpdmVyLiBJdCBjaGFuZ2VzIHRoZSBiZWhhdmlvciB3aGVuIGVuY291bnRlcmluZyBhIENMQyByZWNvcmQgd2l0aCBhbiBpbmRleCBsYXJnZXIgdGhhbiB0aGUgZHJpdmVyJiMzOTtzIGFycmF5IHNpemU6IGluc3RlYWQgb2YgcmV0dXJuaW5nIGFuIGVycm9yLCBpdCBub3cgaWdub3JlcyB0aGUgcmVjb3JkIGFuZCBjb250aW51ZXMgcGFyc2luZy4gVGhpcyBwcmV2ZW50cyB0aGUgZHJpdmVyIGZyb20gZmFpbGluZyB0byBsb2FkIG5ld2VyIGZpcm13YXJlIHRoYXQgY29udGFpbnMgYWRkaXRpb25hbCByZWNvcmRzLiBUaGUgZGF0YSBiZWluZyBwYXJzZWQgaXMgbG9hZGVkIGZyb20gYSBmaXJtd2FyZSBmaWxlIGFuZCBpcyBmdWxseSBpbml0aWFsaXplZC4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBhbGxvY2F0aW9ucyBvZiB1bmluaXRpYWxpemVkIHN0cnVjdHVyZXMsIG9yIGluZm9ybWF0aW9uIGxlYWtzIHRvIHVzZXIgc3BhY2UgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciB0b29scyBhcmUgc3VmZmljaWVudCBmb3IgZGV0ZWN0aW5nIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgbWVtb3J5IGNvcnJ1cHRpb24uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljIGluIHRoZSBNVDc5MjEgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IG91dC1vZi1ib3VuZHMgQ0xDIHJlY29yZCBpbmRpY2VzIGFyZSBoYW5kbGVkIChpZ25vcmluZyB0aGVtIGluc3RlYWQgb2YgcmV0dXJuaW5nIGFuIGVycm9yKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFVTQiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE4OjM5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNDA1OWRhOWIxODJjNzQ0NjE0NzA2Y2RkOWYyN2FlOWM4ZWE1MjJhYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDE2IDE4OjM5OjQzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcbmluZGV4IGExMThhMzAxNTY0YzguLjQwNTQ2MDA1Yzc0M2IgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcbkBAIC00NzcsMTggJiM0Mzs0NzcsMjMgQEAgc3RhdGljIGludCBtdDc5MjFfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcbiBcbiBcdGZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IFx1MDAzYyBsZW47IG9mZnNldCAmIzQzOz0gY2xjX2xlbikge1xuIFx0XHRpZiAobGVuIC0gb2Zmc2V0IFx1MDAzYyBzaXplb2YoKmNsYykpIHtcbiYjNDM7XHRcdFx0ZGV2X2VycihtZGV2LVx1MDAzZWRldiwgXCYjMzQ7SW52YWxpZCBDTEMgcmVjb3JkXFxuXCYjMzQ7KTtcbiBcdFx0XHRyZXQgPSAtRUlOVkFMO1xuIFx0XHRcdGdvdG8gb3V0O1xuIFx0XHR9XG4gXG4gXHRcdGNsYyA9IChjb25zdCBzdHJ1Y3QgbXQ3OTIxX2NsYyAqKShjbGNfYmFzZSAmIzQzOyBvZmZzZXQpO1xuIFx0XHRjbGNfbGVuID0gbGUzMl90b19jcHUoY2xjLVx1MDAzZWxlbik7XG4tXHRcdGlmIChjbGNfbGVuIFx1MDAzYyBzaXplb2YoKmNsYykgfHwgY2xjX2xlbiBcdTAwM2UgbGVuIC0gb2Zmc2V0IHx8XG4tXHRcdCAgICBjbGMtXHUwMDNlaWR4IFx1MDAzZT0gQVJSQVlfU0laRShwaHktXHUwMDNlY2xjKSkge1xuJiM0MztcdFx0aWYgKGNsY19sZW4gXHUwMDNjIHNpemVvZigqY2xjKSB8fCBjbGNfbGVuIFx1MDAzZSBsZW4gLSBvZmZzZXQpIHtcbiYjNDM7XHRcdFx0ZGV2X2VycihtZGV2LVx1MDAzZWRldiwgXCYjMzQ7SW52YWxpZCBDTEMgcmVjb3JkXFxuXCYjMzQ7KTtcbiBcdFx0XHRyZXQgPSAtRUlOVkFMO1xuIFx0XHRcdGdvdG8gb3V0O1xuIFx0XHR9XG4gXG4mIzQzO1x0XHQvKiBOZXdlciBmaXJtd2FyZSBtYXkgYWRkIHJlY29yZHMgdGhpcyBkcml2ZXIgZG9lcyBub3QgdXNlIHlldCAqL1xuJiM0MztcdFx0aWYgKGNsYy1cdTAwM2VpZHggXHUwMDNlPSBBUlJBWV9TSVpFKHBoeS1cdTAwM2VjbGMpKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4gXHRcdC8qIGRvIG5vdCBpbml0IGJ1ZiBhZ2FpbiBpZiBjaGlwIHJlc2V0IHRyaWdnZXJlZCAqL1xuIFx0XHRpZiAocGh5LVx1MDAzZWNsY1tjbGMtXHUwMDNlaWR4XSlcbiBcdFx0XHRjb250aW51ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxODozOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3OTIxVSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyMV9ydW5fZmlybXdhcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZpcm13YXJlIHBhcnNpbmcgbG9naWMgaW4gdGhlIE1UNzkyMSB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgb3V0LW9mLWJvdW5kcyBDTEMgcmVjb3JkIGluZGljZXMgYXJlIGhhbmRsZWQgKGlnbm9yaW5nIHRoZW0gaW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gZXJyb3IpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0MDU5ZGE5YjE4MmM3NDQ2MTQ3MDZjZGQ5ZjI3YWU5YzhlYTUyMmFiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMTYgMTg6Mzk6NDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jCmluZGV4IGExMThhMzAxNTY0YzguLjQwNTQ2MDA1Yzc0M2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jCkBAIC00NzcsMTggJiM0Mzs0NzcsMjMgQEAgc3RhdGljIGludCBtdDc5MjFfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSkKIAogCWZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0ICZsdDsgbGVuOyBvZmZzZXQgJiM0Mzs9IGNsY19sZW4pIHsKIAkJaWYgKGxlbiAtIG9mZnNldCAmbHQ7IHNpemVvZigqY2xjKSkgewomIzQzOwkJCWRldl9lcnIobWRldi0mZ3Q7ZGV2LCAmIzM0O0ludmFsaWQgQ0xDIHJlY29yZFxuJiMzNDspOwogCQkJcmV0ID0gLUVJTlZBTDsKIAkJCWdvdG8gb3V0OwogCQl9CiAKIAkJY2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjFfY2xjICopKGNsY19iYXNlICYjNDM7IG9mZnNldCk7CiAJCWNsY19sZW4gPSBsZTMyX3RvX2NwdShjbGMtJmd0O2xlbik7Ci0JCWlmIChjbGNfbGVuICZsdDsgc2l6ZW9mKCpjbGMpIHx8IGNsY19sZW4gJmd0OyBsZW4gLSBvZmZzZXQgfHwKLQkJICAgIGNsYy0mZ3Q7aWR4ICZndDs9IEFSUkFZX1NJWkUocGh5LSZndDtjbGMpKSB7CiYjNDM7CQlpZiAoY2xjX2xlbiAmbHQ7IHNpemVvZigqY2xjKSB8fCBjbGNfbGVuICZndDsgbGVuIC0gb2Zmc2V0KSB7CiYjNDM7CQkJZGV2X2VycihtZGV2LSZndDtkZXYsICYjMzQ7SW52YWxpZCBDTEMgcmVjb3JkXG4mIzM0Oyk7CiAJCQlyZXQgPSAtRUlOVkFMOwogCQkJZ290byBvdXQ7CiAJCX0KIAomIzQzOwkJLyogTmV3ZXIgZmlybXdhcmUgbWF5IGFkZCByZWNvcmRzIHRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZSB5ZXQgKi8KJiM0MzsJCWlmIChjbGMtJmd0O2lkeCAmZ3Q7PSBBUlJBWV9TSVpFKHBoeS0mZ3Q7Y2xjKSkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsKIAkJLyogZG8gbm90IGluaXQgYnVmIGFnYWluIGlmIGNoaXAgcmVzZXQgdHJpZ2dlcmVkICovCiAJCWlmIChwaHktJmd0O2NsY1tjbGMtJmd0O2lkeF0pCiAJCQljb250aW51ZTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTg6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI4NAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBNZWRpYXRlayBXaUZpIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIHR3ZWFraW5nIHRoZSBgbXQ3OTIxX2xvYWRfY2xjYCBmdW5jdGlvbiBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNgLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIGxpa2UgdGhlIHBhdGNoIGlzIGFkZGluZyBhIGBkZXZfZXJyYCBjYWxsIGZvciBpbnZhbGlkIENMQyByZWNvcmRzIGFuZCB0aGVuIGdyYWNlZnVsbHkgaWdub3JpbmcgcmVjb3JkcyB3aGVyZSBgY2xjLSZndDtpZHhgIGlzIG91dCBvZiBib3VuZHMgKGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgQVJSQVlfU0laRShwaHktJmd0O2NsYylgKSBpbnN0ZWFkIG9mIGV4cGxpY2l0bHkgcmV0dXJuaW5nIGFuIGVycm9yLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBtYWtlcyBpdCBtb3JlIHJvYnVzdCwgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpczogd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBmb3IgdmlydHVhbGl6YXRpb24/IFRoZSBgbXQ3OTIxYCBpcyBhIE1lZGlhdGVrIHdpcmVsZXNzIGRyaXZlciwgYW5kIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQgaXMgYSBQQ0ksIFVTQiwgb3IgU0RJTyBkcml2ZXIgdG8gYXNzZXNzIGl0cyB2aXJ0dWFsaXphYmlsaXR5LiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzb3VyY2UgY29kZSB0byBiZSBzdXJlLCBzbyBsZXQmIzM5O3MgY2hlY2sgdGhlIGZpbGVzIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9gIHRvIGZpZ3VyZSBvdXQgdGhlIGJ1cyB0eXBlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE4OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMjUwOCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvTWFrZWZpbGUtMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX01UNzkyMV9DT01NT04pICYjNDM7PSBtdDc5MjEtY29tbW9uLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX01UNzkyMUUpICYjNDM7PSBtdDc5MjFlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX01UNzkyMVMpICYjNDM7PSBtdDc5MjFzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX01UNzkyMVUpICYjNDM7PSBtdDc5MjF1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlLTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9NYWtlZmlsZTo4Om10NzkyMS1jb21tb24teSA6PSBtYWMubyBtY3UubyByZWdkLm8gbWFpbi5vIGluaXQubyBkZWJ1Z2ZzLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlOjk6bXQ3OTIxLWNvbW1vbi0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvTWFrZWZpbGU6MTA6bXQ3OTIxZS15IDo9IHBjaS5vIHBjaV9tYWMubyBwY2lfbWN1Lm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlOjExOm10NzkyMXMteSA6PSBzZGlvLm8gc2Rpb19tYWMubyBzZGlvX21jdS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9NYWtlZmlsZToxMjptdDc5MjF1LXkgOj0gdXNiLm9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzo0OiNpbmNsdWRlIFwmIzM0O210NzkyMS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz02PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzo3Om10NzkyMV9yZWdfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtOC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTE4PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxOTptdDc5MjFfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjMwOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3JlZ3ZhbCwgbXQ3OTIxX3JlZ19nZXQsIG10NzkyMV9yZWdfc2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTMxLVx0XHRcdCBcJiMzNDsweCUwOGxseFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MzI9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjMzOm10NzkyMV9md19kZWJ1Z19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0zNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTM5LVx0ZGV2LVx1MDAzZWZ3X2RlYnVnID0gKHU4KXZhbDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzo0MDpcdG10NzkyMV9tY3VfZndfbG9nXzJfaG9zdChkZXYsIGRldi1cdTAwM2Vmd19kZWJ1Zyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtNDEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTQ3PXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzo0ODptdDc5MjFfZndfZGVidWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTQ5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtNTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6NTc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWcsIG10NzkyMV9md19kZWJ1Z19nZXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6NTg6XHRcdFx0IG10NzkyMV9md19kZWJ1Z19zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTU5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz02Mj1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjYzOm10NzkyMV9zZXFfcHV0c19hcnJheShzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKnN0cixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy02NC1cdFx0ICAgICAgczggKnZhbCwgaW50IGxlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtNzYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6Nzc6I2RlZmluZSBtdDc5MjFfcHJpbnRfdHhwd3JfZW50cnkocHJlZml4LCByYXRlKVx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy03OC0oe1x0XHRcdFx0XHRcdFx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6Nzk6XHRtdDc5MjFfc2VxX3B1dHNfYXJyYXkocywgI3ByZWZpeCBcJiMzNDsgKHVzZXIpXCYjMzQ7LFx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtODAtXHRcdFx0ICAgICAgdHhwd3IuZGF0YVtUWFBXUl9VU0VSXS5yYXRlLFx0XHRcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTgxLVx0XHRcdCAgICAgIEFSUkFZX1NJWkUodHhwd3IuZGF0YVtUWFBXUl9VU0VSXS5yYXRlKSk7IFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6ODI6XHRtdDc5MjFfc2VxX3B1dHNfYXJyYXkocywgI3ByZWZpeCBcJiMzNDsgKGVlcHJvbSlcJiMzNDssXHRcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy04My1cdFx0XHQgICAgICB0eHB3ci5kYXRhW1RYUFdSX0VFUFJPTV0ucmF0ZSxcdFx0XFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy04NC1cdFx0XHQgICAgICBBUlJBWV9TSVpFKHR4cHdyLmRhdGFbVFhQV1JfRUVQUk9NXS5yYXRlKSk7IFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6ODU6XHRtdDc5MjFfc2VxX3B1dHNfYXJyYXkocywgI3ByZWZpeCBcJiMzNDsgKHRtYWMpXCYjMzQ7LFx0XHRcdFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtODYtXHRcdFx0ICAgICAgdHhwd3IuZGF0YVtUWFBXUl9NQUNdLnJhdGUsXHRcdFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTkwPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzo5MTptdDc5MjFfdHhwd3Ioc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTkyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy05My1cdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cdTAwM2Vwcml2YXRlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzo5NDpcdHN0cnVjdCBtdDc5MjFfdHhwd3IgdHhwd3I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtOTUtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy05Ny1cdG10NzkyeF9tdXRleF9hY3F1aXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6OTg6XHRyZXQgPSBtdDc5MjFfZ2V0X3R4cHdyX2luZm8oZGV2LCBcdTAwMjZ0eHB3cik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtOTktXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xMDYtXHRcdCAgIFwmIzM0OyBcJiMzNDssIFwmIzM0OzFtXCYjMzQ7LCBcJiMzNDsybVwmIzM0OywgXCYjMzQ7NW1cJiMzNDssIFwmIzM0OzExbVwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTA3Olx0bXQ3OTIxX3ByaW50X3R4cHdyX2VudHJ5KENDSywgY2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xMDgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTExMS1cdFx0ICAgXCYjMzQ7NDhtXCYjMzQ7LCBcJiMzNDs1NG1cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjExMjpcdG10NzkyMV9wcmludF90eHB3cl9lbnRyeShPRkRNLCBvZmRtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xMTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTExNi1cdFx0ICAgXCYjMzQ7bWNzNlwmIzM0OywgXCYjMzQ7bWNzN1wmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTE3Olx0bXQ3OTIxX3ByaW50X3R4cHdyX2VudHJ5KEhUMjAsIGh0MjApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTExOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTIxLVx0XHQgICBcJiMzNDttY3M2XCYjMzQ7LCBcJiMzNDttY3M3XCYjMzQ7LCBcJiMzNDttY3MzMlwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTIyOlx0bXQ3OTIxX3ByaW50X3R4cHdyX2VudHJ5KEhUNDAsIGh0NDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTEyMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTI2LVx0XHQgICBcJiMzNDttY3M2XCYjMzQ7LCBcJiMzNDttY3M3XCYjMzQ7LCBcJiMzNDttY3M4XCYjMzQ7LCBcJiMzNDttY3M5XCYjMzQ7LCBcJiMzNDttY3MxMFwmIzM0OywgXCYjMzQ7bWNzMTFcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjEyNzpcdG10NzkyMV9wcmludF90eHB3cl9lbnRyeShWSFQyMCwgdmh0MjApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjEyODpcdG10NzkyMV9wcmludF90eHB3cl9lbnRyeShWSFQ0MCwgdmh0NDApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjEyOTpcdG10NzkyMV9wcmludF90eHB3cl9lbnRyeShWSFQ4MCwgdmh0ODApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjEzMDpcdG10NzkyMV9wcmludF90eHB3cl9lbnRyeShWSFQxNjAsIHZodDE2MCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTMxOlx0bXQ3OTIxX3ByaW50X3R4cHdyX2VudHJ5KEhFMjYsIGhlMjYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjEzMjpcdG10NzkyMV9wcmludF90eHB3cl9lbnRyeShIRTUyLCBoZTUyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxMzM6XHRtdDc5MjFfcHJpbnRfdHhwd3JfZW50cnkoSEUxMDYsIGhlMTA2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxMzQ6XHRtdDc5MjFfcHJpbnRfdHhwd3JfZW50cnkoSEUyNDIsIGhlMjQyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxMzU6XHRtdDc5MjFfcHJpbnRfdHhwd3JfZW50cnkoSEU0ODQsIGhlNDg0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxMzY6XHRtdDc5MjFfcHJpbnRfdHhwd3JfZW50cnkoSEU5OTYsIGhlOTk2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxMzc6XHRtdDc5MjFfcHJpbnRfdHhwd3JfZW50cnkoSEU5OTZ4MiwgaGU5OTZ4Mik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTM4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0xNDI9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjE0MzptdDc5MjFfcG1fc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTQ0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTY2LVx0cG0tXHUwMDNlZW5hYmxlX3VzZXIgPSB2YWw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTY3Olx0bXQ3OTIxX3NldF9ydW50aW1lX3BtKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTY4LVx0bXQ3Nl9jb25uYWNfcG93ZXJfc2F2ZV9zY2hlZChcdTAwMjZkZXYtXHUwMDNlbXBoeSwgcG0pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0xNzU9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjE3NjptdDc5MjFfcG1fZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTE3Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTE4NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxODU6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcG0sIG10NzkyMV9wbV9nZXQsIG10NzkyMV9wbV9zZXQsIFwmIzM0OyVsbGRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTE4Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0xODc9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjE4ODptdDc5MjFfZGVlcF9zbGVlcF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xODkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0yMTE9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjIxMjptdDc5MjFfZGVlcF9zbGVlcF9nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjEzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjIwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjIyMTpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19kcywgbXQ3OTIxX2RlZXBfc2xlZXBfZ2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjIyMjpcdFx0XHQgbXQ3OTIxX2RlZXBfc2xlZXBfc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MjI0PURFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3BtX2lkbGVfdGltZW91dCwgbXQ3OTJ4X3BtX2lkbGVfdGltZW91dF9nZXQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyMjc6c3RhdGljIGludCBtdDc5MjFfY2hpcF9yZXNldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIyOC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyNDg6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfcmVzZXQsIE5VTEwsIG10NzkyMV9jaGlwX3Jlc2V0LCBcJiMzNDslbGxkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MjUwPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyNTE6bXQ3OTIxc19zY2hlZF9xdW90YV9yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNTIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjY0OmludCBtdDc5MjFfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjY1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjc5LVx0ZGVidWdmc19jcmVhdGVfZGV2bV9zZXFmaWxlKGRldi1cdTAwM2VtdDc2LmRldiwgXCYjMzQ7dHhwb3dlcl9za3VcJiMzNDssIGRpcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyODA6XHRcdFx0XHQgICAgbXQ3OTIxX3R4cHdyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yODEtXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3R4X3N0YXRzXCYjMzQ7LCAwNDAwLCBkaXIsIGRldiwgXHUwMDI2bXQ3OTJ4X3R4X3N0YXRzX2ZvcHMpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yOTEtXHRcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXHUwMDNlbXQ3Ni5kZXYsIFwmIzM0O3NjaGVkLXF1b3RhXCYjMzQ7LCBkaXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjkyOlx0XHRcdFx0XHQgICAgbXQ3OTIxc19zY2hlZF9xdW90YV9yZWFkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yOTMtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtOC0jaW5jbHVkZSBcdTAwM2NsaW51eC9maXJtd2FyZS5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6OTojaW5jbHVkZSBcJiMzNDttdDc5MjEuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEwLSNpbmNsdWRlIFwmIzM0Oy4uL210NzZfY29ubmFjMl9tYWMuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxNDpzdGF0aWMgc3NpemVfdCBtdDc5MjFfdGhlcm1hbF90ZW1wX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE1LVx0XHRcdFx0XHRzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjQtXHRcdG10NzkyeF9tdXRleF9hY3F1aXJlKG1kZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjI1Olx0XHR0ZW1wZXJhdHVyZSA9IG10NzkyMV9tY3VfZ2V0X3RlbXBlcmF0dXJlKHBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjYtXHRcdG10NzkyeF9tdXRleF9yZWxlYXNlKG1kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0zNi19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6Mzc6c3RhdGljIFNFTlNPUl9ERVZJQ0VfQVRUUl9STyh0ZW1wMV9pbnB1dCwgbXQ3OTIxX3RoZXJtYWxfdGVtcCwgMCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6Mzk6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKm10NzkyMV9od21vbl9hdHRyc1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTQwLVx0XHUwMDI2c2Vuc29yX2Rldl9hdHRyX3RlbXAxX2lucHV0LmRldl9hdHRyLmF0dHIsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTQyLX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6NDM6QVRUUklCVVRFX0dST1VQUyhtdDc5MjFfaHdtb24pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjQ1OnN0YXRpYyBpbnQgbXQ3OTIxX3RoZXJtYWxfaW5pdChzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTQ2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtNTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6NTQ6XHRuYW1lID0gZGV2bV9rYXNwcmludGYoXHUwMDI2d2lwaHktXHUwMDNlZGV2LCBHRlBfS0VSTkVMLCBcJiMzNDttdDc5MjFfJXNcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtNTUtXHRcdFx0ICAgICAgd2lwaHlfbmFtZSh3aXBoeSkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy01OS1cdGh3bW9uID0gZGV2bV9od21vbl9kZXZpY2VfcmVnaXN0ZXJfd2l0aF9ncm91cHMoXHUwMDI2d2lwaHktXHUwMDNlZGV2LCBuYW1lLCBwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6NjA6XHRcdFx0XHRcdFx0ICAgICAgIG10NzkyMV9od21vbl9ncm91cHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTYxLVx0cmV0dXJuIFBUUl9FUlJfT1JfWkVSTyhod21vbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjY0OmludCBtdDc5MjFfbWFjX2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy02NS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTc0LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTVQ3OTJ4X1dUQkxfU0laRTsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6NzU6XHRcdG10NzkyMV9tYWNfd3RibF91cGRhdGUoZGV2LCBpLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTc2LVx0XHRcdFx0ICAgICAgIE1UX1dUQkxfVVBEQVRFX0FETV9DT1VOVF9DTEVBUik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTgxLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzo4MjpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjFfbWFjX2luaXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjg0OnN0YXRpYyBpbnQgX19tdDc5MjFfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtOTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTAwOlx0cmV0ID0gbXQ3OTIxX21jdV9zZXRfZWVwcm9tKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTAxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjEwNDpcdHJldCA9IG10NzkyMV9tYWNfaW5pdChkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEwNS1vdXQ6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxMDk6c3RhdGljIGludCBtdDc5MjFfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTExMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTExNS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIE1UNzkyeF9NQ1VfSU5JVF9SRVRSWV9DT1VOVDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxMTY6XHRcdHJldCA9IF9fbXQ3OTIxX2luaXRfaGFyZHdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xMTctXHRcdGlmICghcmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xMzAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTMxOnN0YXRpYyB2b2lkIG10NzkyMV9pbml0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEzMi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxMzc6XHRyZXQgPSBtdDc5MjFfaW5pdF9oYXJkd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEzOC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE0MS1cdG10NzZfc2V0X3N0cmVhbV9jYXBzKFx1MDAyNmRldi1cdTAwM2VtcGh5LCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxNDI6XHRtdDc5MjFfc2V0X3N0cmVhbV9oZV9jYXBzKFx1MDAyNmRldi1cdTAwM2VwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE0My1cdG10NzkyeF9jb25maWdfbWFjX2FkZHJfbGlzdChkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xNTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTUyOlx0cmV0ID0gbXQ3OTIxX2luaXRfZGVidWdmcyhkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE1My1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjE1ODpcdHJldCA9IG10NzkyMV90aGVybWFsX2luaXQoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTU5LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xNjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTcwOmludCBtdDc5MjFfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTcxLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTg5LVx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZW1waHkubWFjX3dvcmssIG10NzkyeF9tYWNfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTkwOlx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXBoeS5zY2FuX3dvcmssIG10NzkyMV9zY2FuX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjE5MTpcdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmRldi1cdTAwM2Vjb3JlZHVtcC53b3JrLCBtdDc5MjFfY29yZWR1bXBfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTkyLSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjE5MzpcdElOSVRfV09SSyhcdTAwMjZkZXYtXHUwMDNlaXB2Nl9uc193b3JrLCBtdDc5MjFfc2V0X2lwdjZfbnNfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTk0LVx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZkZXYtXHUwMDNlaXB2Nl9uc19saXN0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTk4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjE5OTpcdElOSVRfV09SSyhcdTAwMjZkZXYtXHUwMDNlcmVzZXRfd29yaywgbXQ3OTIxX21hY19yZXNldF93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoyMDA6XHRJTklUX1dPUksoXHUwMDI2ZGV2LVx1MDAzZWluaXRfd29yaywgbXQ3OTIxX2luaXRfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjIwMjpcdElOSVRfV09SSyhcdTAwMjZkZXYtXHUwMDNlcGh5LnJvY193b3JrLCBtdDc5MjFfcm9jX3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIwMy1cdHRpbWVyX3NldHVwKFx1MDAyNmRldi1cdTAwM2VwaHkucm9jX3RpbWVyLCBtdDc5Mnhfcm9jX3RpbWVyLCAwKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjMwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjIzMTpcdGh3LVx1MDAzZXdpcGh5LVx1MDAzZXJlZ19ub3RpZmllciA9IG10NzkyMV9yZWdkX25vdGlmaWVyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIzMi1cdGRldi1cdTAwM2VtcGh5LnNiYW5kXzJnLnNiYW5kLmh0X2NhcC5jYXAgfD1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjU1LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoyNTY6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX3JlZ2lzdGVyX2RldmljZSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNi0jaW5jbHVkZSBcdTAwM2NsaW51eC90aW1la2VlcGluZy5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo3OiNpbmNsdWRlIFwmIzM0O210NzkyMS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04LSNpbmNsdWRlIFwmIzM0Oy4uL2RtYS5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoxOTpib29sIG10NzkyMV9tYWNfd3RibF91cGRhdGUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgaW50IGlkeCwgdTMyIG1hc2spXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0yMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoyODpzdGF0aWMgdTMyIG10NzkyMV9tYWNfd3RibF9sbWFjX2FkZHIoaW50IGlkeCwgdTggb2Zmc2V0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMjkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6MzM6c3RhdGljIHZvaWQgbXQ3OTIxX21hY19zdGFfcG9sbChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTcyLVx0XHRpZHggPSBtbGluay1cdTAwM2V3Y2lkLmlkeDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjczOlx0XHRhZGRyID0gbXQ3OTIxX21hY193dGJsX2xtYWNfYWRkcihpZHgsIE1UX1dUQkxfQUMwX0NUVF9PRkZTRVQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtOTEtXHRcdGlmIChjbGVhcikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6OTI6XHRcdFx0bXQ3OTIxX21hY193dGJsX3VwZGF0ZShkZXYsIGlkeCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTkzLVx0XHRcdFx0XHQgICAgICAgTVRfV1RCTF9VUERBVEVfQURNX0NPVU5UX0NMRUFSKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0xMjAtXHRcdHJhdGUgPSBcdTAwMjZtbGluay1cdTAwM2V3Y2lkLnJhdGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoxMjE6XHRcdGFkZHIgPSBtdDc5MjFfbWFjX3d0YmxfbG1hY19hZGRyKGlkeCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTEyMi1cdFx0XHRcdFx0XHQgTVRfV1RCTF9UWFJYX0NBUF9SQVRFX09GRlNFVCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMTUyLVx0XHQvKiBnZXQgc2lnbmFsIHN0cmVuZ3RoIG9mIHJlc3AgZnJhbWVzIChDVFMvQkEvQUNLKSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6MTUzOlx0XHRhZGRyID0gbXQ3OTIxX21hY193dGJsX2xtYWNfYWRkcihpZHgsIDMwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTE1NC1cdFx0dmFsID0gbXQ3Nl9ycihkZXYsIGFkZHIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTE2OD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoxNjk6bXQ3OTIxX21hY19maWxsX3J4KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0xNzAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTQ0Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjQ0Nzp2b2lkIG10NzkyMV9tYWNfYWRkX3R4cyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNDQ4LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy00ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo0ODU6c3RhdGljIHZvaWQgbXQ3OTIxX21hY190eF9mcmVlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEsIGludCBsZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy00ODYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTU1NS1cdHJjdV9yZWFkX2xvY2soKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjU1NjpcdG10NzkyMV9tYWNfc3RhX3BvbGwoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTU1Ny1cdHJjdV9yZWFkX3VubG9jaygpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTU2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjU2Mjpib29sIG10NzkyMV9yeF9jaGVjayhzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKmRhdGEsIGludCBsZW4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01NjMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTU3NC1cdFx0XHRyZXR1cm4gZmFsc2U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo1NzU6XHRcdG10NzkyMV9tYWNfdHhfZnJlZShkZXYsIGRhdGEsIGxlbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01NzYtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01NzgtXHRcdGZvciAocnhkICYjNDM7PSAyOyByeGQgJiM0MzsgOCBcdTAwM2M9IGVuZDsgcnhkICYjNDM7PSA4KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NTc5Olx0XHRcdG10NzkyMV9tYWNfYWRkX3R4cyhkZXYsIHJ4ZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01ODAtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01ODQtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NTg1OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyMV9yeF9jaGVjayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01ODYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo1ODc6dm9pZCBtdDc5MjFfcXVldWVfcnhfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgZW51bSBtdDc2X3J4cV9pZCBxLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNTg4LVx0XHRcdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgKmluZm8pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjA3LVx0XHR9XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo2MDg6XHRcdG10NzkyMV9tYWNfdHhfZnJlZShkZXYsIHNrYi1cdTAwM2VkYXRhLCBza2ItXHUwMDNlbGVuKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTYwOS1cdFx0bmFwaV9jb25zdW1lX3NrYihza2IsIDEpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTYxMS1cdGNhc2UgUEtUX1RZUEVfUlhfRVZFTlQ6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo2MTI6XHRcdG10NzkyMV9tY3VfcnhfZXZlbnQoZGV2LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjEzLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02MTUtXHRcdGZvciAocnhkICYjNDM7PSAyOyByeGQgJiM0MzsgOCBcdTAwM2M9IGVuZDsgcnhkICYjNDM7PSA4KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NjE2Olx0XHRcdG10NzkyMV9tYWNfYWRkX3R4cyhkZXYsIHJ4ZCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02MTctXHRcdGRldl9rZnJlZV9za2Ioc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02MjAtXHRjYXNlIFBLVF9UWVBFX05PUk1BTDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjYyMTpcdFx0aWYgKCFtdDc5MjFfbWFjX2ZpbGxfcngoZGV2LCBza2IpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02MjItXHRcdFx0bXQ3Nl9yeChcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgcSwgc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02MzAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NjMxOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyMV9xdWV1ZV9yeF9za2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9NjMzPXN0YXRpYyB2b2lkXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo2MzQ6bXQ3OTIxX3ZpZl9jb25uZWN0X2l0ZXIodm9pZCAqcHJpdiwgdTggKm1hYyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTYzNS1cdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTY0Ni1cdFx0XHRcdCAgICBcdTAwMjZtdmlmLVx1MDAzZXN0YS5kZWZsaW5rLndjaWQsIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NjQ3Olx0bXQ3OTIxX21jdV9zZXRfdHgoZGV2LCB2aWYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjQ4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTY1MS1cdFx0XHRcdFx0ICAgIHRydWUsIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NjUyOlx0XHRtdDc5MjFfbWN1X3N0YV91cGRhdGUoZGV2LCBOVUxMLCB2aWYsIHRydWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02NTMtXHRcdFx0XHQgICAgICBNVDc2X1NUQV9JTkZPX1NUQVRFX05PTkUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NjU0Olx0XHRtdDc5MjFfbWN1X3VuaV9hZGRfYmVhY29uX29mZmxvYWQoZGV2LCBodywgdmlmLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTY1NS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02NTgtLyogc3lzdGVtIGVycm9yIHJlY292ZXJ5ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo2NTk6dm9pZCBtdDc5MjFfbWFjX3Jlc2V0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjYwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy03MDgtXHRcdFx0XHRcdCAgICBJRUVFODAyMTFfSUZBQ0VfSVRFUl9SRVNVTUVfQUxMLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NzA5Olx0XHRcdFx0XHQgICAgbXQ3OTIxX3ZpZl9jb25uZWN0X2l0ZXIsIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzEwLVx0bXQ3Nl9jb25uYWNfcG93ZXJfc2F2ZV9zY2hlZChcdTAwMjZkZXYtXHUwMDNlbXQ3Ni5waHksIHBtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTcxMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjcxMjpcdG10NzkyMV9yZWdkX2NoYW5nZShcdTAwMjZkZXYtXHUwMDNlcGh5LCBcJiMzNDswMFwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy03MTMtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NzE1OnZvaWQgbXQ3OTIxX2NvcmVkdW1wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzE2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYz03NjM9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjc2NDptdDc5MjFfdXNiX3NkaW9fd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzY1LVx0XHRcdCAgIGVudW0gbXQ3Nl90eHFfaWQgcWlkLCBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjc3NjppbnQgbXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqdHh3aV9wdHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy03NzctXHRcdFx0XHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04MDYtXHRwa3RpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQoXHUwMDI2ZGV2LVx1MDAzZW10NzYsIHdjaWQsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4MDc6XHRtdDc5MjFfdXNiX3NkaW9fd3JpdGVfdHh3aShkZXYsIHdjaWQsIHFpZCwgc3RhLCBrZXksIHBrdGlkLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODA4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTgyMS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4MjI6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX3VzYl9zZGlvX3R4X3ByZXBhcmVfc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTgyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjgyNDp2b2lkIG10NzkyMV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2Ioc3RydWN0IG10NzZfZGV2ICptZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODI1LVx0XHRcdFx0ICAgICBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9lbnRyeSAqZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NDItfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODQzOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyMV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODQ1OmJvb2wgbXQ3OTIxX3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdTggKnVwZGF0ZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTg0Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODQ5LVx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjg1MDpcdG10NzkyMV9tYWNfc3RhX3BvbGwoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTg1MS1cdG10NzkyeF9tdXRleF9yZWxlYXNlKGRldik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODU0LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjg1NTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjFfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODU2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODU3LSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODU4OnZvaWQgbXQ3OTIxX3NldF9pcHY2X25zX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODU5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtOC0jaW5jbHVkZSBcdTAwM2NuZXQvaXB2Ni5oXHUwMDNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6OTojaW5jbHVkZSBcJiMzNDttdDc5MjEuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTEwLSNpbmNsdWRlIFwmIzM0O3JlZ2QuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYz0xMz1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MTQ6bXQ3OTIxX2luaXRfaGVfY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBlbnVtIG5sODAyMTFfYmFuZCBiYW5kLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTE1LVx0XHQgICAgc3RydWN0IGllZWU4MDIxMV9zYmFuZF9pZnR5cGVfZGF0YSAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMTk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjE5Njp2b2lkIG10NzkyMV9zZXRfc3RyZWFtX2hlX2NhcHMoc3RydWN0IG10NzkyeF9waHkgKnBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0xOTcte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yMDMtXHRcdGRhdGEgPSBwaHktXHUwMDNlaWZ0eXBlW05MODAyMTFfQkFORF8yR0haXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzoyMDQ6XHRcdG4gPSBtdDc5MjFfaW5pdF9oZV9jYXBzKHBoeSwgTkw4MDIxMV9CQU5EXzJHSFosIGRhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTIwNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjExLVx0XHRkYXRhID0gcGh5LVx1MDAzZWlmdHlwZVtOTDgwMjExX0JBTkRfNUdIWl07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjEyOlx0XHRuID0gbXQ3OTIxX2luaXRfaGVfY2FwcyhwaHksIE5MODAyMTFfQkFORF81R0haLCBkYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yMTMtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTIxOC1cdFx0XHRkYXRhID0gcGh5LVx1MDAzZWlmdHlwZVtOTDgwMjExX0JBTkRfNkdIWl07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjE5Olx0XHRcdG4gPSBtdDc5MjFfaW5pdF9oZV9jYXBzKHBoeSwgTkw4MDIxMV9CQU5EXzZHSFosIGRhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTIyMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjIyNzppbnQgX19tdDc5MjFfc3RhcnQoc3RydWN0IG10NzkyeF9waHkgKnBoeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yMjgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjQwOlx0ZXJyID0gbXQ3OTIxX21jdV9zZXRfY2hhbl9pbmZvKHBoeSwgTUNVX0VYVF9DTUQoU0VUX1JYX1BBVEgpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNDEtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjQ0Olx0ZXJyID0gbXQ3OTIxX3NldF90eF9zYXJfcHdyKG1waHktXHUwMDNlaHcsIE5VTEwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI0NS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI1My1cdGlmIChtdDc2X2lzX21taW8obXBoeS1cdTAwM2VkZXYpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjU0Olx0XHRlcnIgPSBtdDc5MjFfbWN1X3JhZGlvX2xlZF9jdHJsKHBoeS1cdTAwM2VkZXYsIEVYVF9DTURfUkFESU9fTEVEX0NUUkxfRU5BQkxFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNTUtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzoyNTg6XHRcdGVyciA9IG10NzkyMV9tY3VfcmFkaW9fbGVkX2N0cmwocGh5LVx1MDAzZWRldiwgRVhUX0NNRF9SQURJT19PTl9MRUQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI1OS1cdFx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjYzLVx0aWYgKHBoeS1cdTAwM2VjaGlwX2NhcCBcdTAwMjYgTVQ3OTJ4X0NISVBfQ0FQX1dGX1JGX1BJTl9DVFJMX0VWVF9FTikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI2NDpcdFx0bXQ3OTIxX21jdV93Zl9yZl9waW5fY3RybChwaHksIFdGX1JGX1BJTl9JTklUKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNjUtXHRcdHdpcGh5X3Jma2lsbF9zdGFydF9wb2xsaW5nKG1waHktXHUwMDNlaHctXHUwMDNld2lwaHkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNjktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI3MDpFWFBPUlRfU1lNQk9MX0dQTChfX210NzkyMV9zdGFydCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI3MjpzdGF0aWMgaW50IG10NzkyMV9zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNzMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNzctXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShwaHktXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzoyNzg6XHRlcnIgPSBfX210NzkyMV9zdGFydChwaHkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI3OS1cdG10NzkyeF9tdXRleF9yZWxlYXNlKHBoeS1cdTAwM2VkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6Mjg0OnN0YXRpYyB2b2lkIG10NzkyMV9zdG9wKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBib29sIHN1c3BlbmQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjkwLVx0XHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI5MTpcdFx0ZXJyID0gbXQ3OTIxX21jdV9yYWRpb19sZWRfY3RybChkZXYsIEVYVF9DTURfUkFESU9fT0ZGX0xFRCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjkyLVx0XHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYz0zMDA9c3RhdGljIGludFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjMwMTptdDc5MjFfYWRkX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zMDIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzM5Olx0bXQ3OTIxX21hY193dGJsX3VwZGF0ZShkZXYsIGlkeCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zNDAtXHRcdFx0ICAgICAgIE1UX1dUQkxfVVBEQVRFX0FETV9DT1VOVF9DTEVBUik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM1My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozNTQ6XHRJTklUX1dPUksoXHUwMDI2bXZpZi1cdTAwM2Vjc2Ffd29yaywgbXQ3OTIxX2NzYV93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zNTUtXHR0aW1lcl9zZXR1cChcdTAwMjZtdmlmLVx1MDAzZWNzYV90aW1lciwgbXQ3OTJ4X2NzYV90aW1lciwgMCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozNjI6c3RhdGljIHZvaWQgbXQ3OTIxX3JvY19pdGVyKHZvaWQgKnByaXYsIHU4ICptYWMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzYzLVx0XHRcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzY4Olx0bXQ3OTIxX21jdV9hYm9ydF9yb2MocGh5LCBtdmlmLCBwaHktXHUwMDNlcm9jX3Rva2VuX2lkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zNjktfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozNzE6dm9pZCBtdDc5MjFfcm9jX2Fib3J0X3N5bmMoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zNzIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zODItXHRcdFx0XHQgICAgIElFRUU4MDIxMV9JRkFDRV9JVEVSX1JFU1VNRV9BTEwsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzgzOlx0XHRcdFx0ICAgICBtdDc5MjFfcm9jX2l0ZXIsICh2b2lkICopcGh5KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zODQtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjM4NTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjFfcm9jX2Fib3J0X3N5bmMpO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTg6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkxMjMKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAxODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTVQ3OTIxRSBEcml2ZXI6IEEgVVNCLUJhc2VkIEFwcHJvYWNoKioKCk9rYXksIHNvIHRoZSBgbXQ3OTIxZWAgZHJpdmVyIHN1cHBvcnRzIFBDSSwgU0RJTywgYW5kIFVTQiwgd2hpY2ggaXMgZ29vZCBuZXdzLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBVU0IgZHJpdmVyLCBgbXQ3OTIxdWAsIGJlY2F1c2UgdGhhdCBvcGVucyB1cCBzb21lIGludGVyZXN0aW5nIGZ1enppbmcgcG9zc2liaWxpdGllcy4gVGhpbmtpbmcgcHJhY3RpY2FsbHksIHRoaXMgbWVhbnMgSSBjYW4gbGV2ZXJhZ2UgdGhlIFVTQiBnYWRnZXQgZnJhbWV3b3JrIOKAkyBzcGVjaWZpY2FsbHksIGEgZHVtbXkgSENEIOKAkyB0byBmdXp6IHRoaXMgdGhpbmcgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoYXQmIzM5O3MgYSBtdWNoIGNsZWFuZXIgYW5kIG1vcmUgY29udHJvbGxlZCBzZXR1cCB0aGFuIG1lc3Npbmcgd2l0aCBhY3R1YWwgaGFyZHdhcmUuCgpOb3csIHdoZXJlJiMzOTtzIHRoZSBjb2RlPyBBaCwgaGVyZSBpdCBpcywgdGhlIHBhdGNoIEkgd2FzIGxvb2tpbmcgZm9yIGlzIGxvY2F0ZWQgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuY2AuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIHNlZSBob3cgdGhlIGBtdDc5MjFfbG9hZF9jbGNgIGZ1bmN0aW9uIGdldHMgY2FsbGVkLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY29uZmlybSB3aGV0aGVyIGl0JiMzOTtzIHJlYWNoYWJsZSBhbmQgdHJpZ2dlcmVkIGR1cmluZyBzdGFydHVwLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBlbnRyeSBwb2ludC4gTGV0JiMzOTtzIHN0YXJ0IHRyYWNpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTg6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bXQ3OTIxX2xvYWRfY2xjJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jPTQwMT1pbnQgbXQ3OTIxX21jdV91bmlfcnhfYmEoc3RydWN0IG10NzkyeF9kZXYgKmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy00MTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo0MTI6c3RhdGljIGludCBtdDc5MjFfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTQxMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM9NjYyPWludCBtdDc5MjFfcnVuX2Zpcm13YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6Njc0Olx0ZXJyID0gbXQ3OTIxX2xvYWRfY2xjKGRldiwgbXQ3OTJ4X3JhbV9uYW1lKGRldikpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjc1LVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxODozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTk1NQoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIEZpcm13YXJlIExvYWRpbmcgU2VxdWVuY2UgaW4gTVQ3OTIxKioKCk9rYXksIHNvIGBtdDc5MjFfbG9hZF9jbGNgIGlzIGRlZmluaXRlbHkgYSBrZXkgZnVuY3Rpb24sIGFuZCB0aGUgY29kZSB0ZWxscyBtZSBpdCBnZXRzIGNhbGxlZCBmcm9tIGBtdDc5MjFfcnVuX2Zpcm13YXJlYC4gVGhhdCBzdWdnZXN0cyBhIHZlcnkgc3BlY2lmaWMgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucy4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgKmJyb2FkZXIqIGNvbnRleHQuIFdoZXJlIGlzIGBtdDc5MjFfcnVuX2Zpcm13YXJlYCBpdHNlbGYgaW52b2tlZD8gVGhhdCYjMzk7cyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAuIEJ5IHRyYWNpbmcgYmFjayB0byB0aGUgY2FsbGVycyBvZiBgbXQ3OTIxX3J1bl9maXJtd2FyZWAsIEkgY2FuIHBpZWNlIHRvZ2V0aGVyIHRoZSBjb21wbGV0ZSBmaXJtd2FyZSBsb2FkaW5nIGFuZCBpbml0aWFsaXphdGlvbiBmbG93LCB3aGljaCBpcyBwcm9iYWJseSBjcml0aWNhbCB0byBkaWFnbm9zaW5nIHNvbWUgaXNzdWUgb3IgdW5kZXJzdGFuZGluZyB0aGUgYm9vdCBzZXF1ZW5jZS4gS25vd2luZyB0aGUgY2FsbCBncmFwaCB3aWxsIHJlYWxseSBoZWxwIG1lIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IHN1YnN5c3RlbXMgYW5kIGRyaXZlcnMuIFRpbWUgdG8gZmlyZSB1cCBteSBkZWJ1Z2dlciBhbmQgc3RhcnQgZGlnZ2luZyB0aHJvdWdoIHRoZSBjYWxsIHNpdGVzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE4OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyMV9ydW5fZmlybXdhcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM9NjQ5PWludCBtdDc5MjFfbWN1X2Z3X2xvZ18yX2hvc3Qoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggY3RybClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy02NjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo2NjI6aW50IG10NzkyMV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY2My17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjgwLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jOjY4MTpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjFfcnVuX2Zpcm13YXJlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY4Mi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaD0yMDY9dm9pZCBtdDc5MjFfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaDoyMDc6aW50IG10NzkyMV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaC0yMDgtaW50IG10NzkyMV9zZXRfY2hhbm5lbChzdHJ1Y3QgbXQ3Nl9waHkgKm1waHkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tYWMuYz01Nj1pbnQgbXQ3OTIxZV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWFjLmMtMTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21hYy5jOjEwNzpcdGVyciA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tYWMuYy0xMDgtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tY3UuYz00MT1pbnQgbXQ3OTIxZV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tY3UuYy01Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tY3UuYzo1ODpcdGVyciA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tY3UuYy01OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21hYy5jPTE0Nz1pbnQgbXQ3OTIxc19tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21hYy5jLTE4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWFjLmM6MTgxOlx0ZXJyID0gbXQ3OTIxX3J1bl9maXJtd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tYWMuYy0xODItXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWN1LmM9NzQ9aW50IG10NzkyMXNfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21jdS5jLTkwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tY3UuYzo5MTpcdHJldCA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWN1LmMtOTItXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTY1PXN0YXRpYyBpbnQgbXQ3OTIxdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTc4LVx0bXQ3Nl9zZXQoZGV2LCBNVF9VRE1BX1RYX1FTRUwsIE1UX0ZXX0RMX0VOKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjc5Olx0cmV0ID0gbXQ3OTIxX3J1bl9maXJtd2FyZShkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtODAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTg5PXN0YXRpYyBpbnQgbXQ3OTIxdV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xMjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzoxMjc6XHRlcnIgPSBtdDc5MjFfcnVuX2Zpcm13YXJlKGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0xMjgtXHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE4OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNzM3CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMTAyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgQ29kZSBQYXRoKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgbXQ3OTIxdV9tY3VfaW5pdGAgZnVuY3Rpb24sIGNhbGxlZCBmcm9tIGB1c2IuY2AuIFRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgY29ubmVjdGVkIHRvIFVTQiBpcyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZywgZXNwZWNpYWxseSBjb25zaWRlcmluZyBwb3RlbnRpYWwgYXR0YWNrIHZlY3RvcnMuIFRoaXMgb3BlbnMgdXAgcG9zc2liaWxpdGllcyBmb3IgVVNCIGdhZGdldCBmdXp6aW5nLCB3aGljaCBtZWFucyB0aGUgZXhwb3N1cmUgaXMgc29tZXRoaW5nIEkgbmVlZCB0byBrZWVwIGluIG1pbmQuIFRoZSBjcnV4IG9mIHRoaXMgY2hhbmdlIHNlZW1zIHRvIHJldm9sdmUgYXJvdW5kIGhvdyBDTEMgcmVjb3JkcyBhcmUgcGFyc2VkIHdpdGhpbiBgbXQ3OTIxX2xvYWRfY2xjYCwgc28gSSBzaG91bGQgcHJvYmFibHkgc3RhcnQgdGhlcmUuIExldCYjMzk7cyBoZWFkIG92ZXIgdG8gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jYCBhbmQgZGlnIGludG8gYG10NzkyMV9sb2FkX2NsY2AgZnVuY3Rpb24gaXRzZWxmLCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgZ29pbmcgb24gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE4OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0NjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQ2MDpcdFx0XHQvKiBjaGVjayBpZiB3ZSBoYXZlIHZhbGlkIGJ1ZmZlciBzaXplICovXG4gNDYxOlx0XHRcdGlmIChsZW4gXHUwMDNlIGZ3X2RhdGFfbGVuIC0gb2Zmc2V0KSB7XG4gNDYyOlx0XHRcdFx0ZGV2X2VycihtZGV2LVx1MDAzZWRldiwgXCYjMzQ7SW52YWxpZCBmaXJtd2FyZSByZWdpb25cXG5cJiMzNDspO1xuIDQ2MzpcdFx0XHRcdHJldCA9IC1FSU5WQUw7XG4gNDY0Olx0XHRcdFx0Z290byBvdXQ7XG4gNDY1Olx0XHRcdH1cbiA0NjY6XHRcbiA0Njc6XHRcdFx0aWYgKChyZWdpb24tXHUwMDNlZmVhdHVyZV9zZXQgXHUwMDI2IEZXX0ZFQVRVUkVfTk9OX0RMKSBcdTAwMjZcdTAwMjZcbiA0Njg6XHRcdFx0ICAgIHJlZ2lvbi1cdTAwM2V0eXBlID09IEZXX1RZUEVfQ0xDKSB7XG4gNDY5Olx0XHRcdFx0Y2xjX2Jhc2UgPSAodTggKikoZnctXHUwMDNlZGF0YSAmIzQzOyBvZmZzZXQpO1xuIDQ3MDpcdFx0XHRcdGJyZWFrO1xuIDQ3MTpcdFx0XHR9XG4gNDcyOlx0XHRcdG9mZnNldCAmIzQzOz0gbGVuO1xuIDQ3MzpcdFx0fVxuIDQ3NDpcdFxuIDQ3NTpcdFx0aWYgKCFjbGNfYmFzZSlcbiA0NzY6XHRcdFx0Z290byBvdXQ7XG4gNDc3Olx0XG4gNDc4Olx0XHRmb3IgKG9mZnNldCA9IDA7IG9mZnNldCBcdTAwM2MgbGVuOyBvZmZzZXQgJiM0Mzs9IGNsY19sZW4pIHtcbiA0Nzk6XHRcdFx0aWYgKGxlbiAtIG9mZnNldCBcdTAwM2Mgc2l6ZW9mKCpjbGMpKSB7XG4gNDgwOlx0XHRcdFx0ZGV2X2VycihtZGV2LVx1MDAzZWRldiwgXCYjMzQ7SW52YWxpZCBDTEMgcmVjb3JkXFxuXCYjMzQ7KTtcbiA0ODE6XHRcdFx0XHRyZXQgPSAtRUlOVkFMO1xuIDQ4MjpcdFx0XHRcdGdvdG8gb3V0O1xuIDQ4MzpcdFx0XHR9XG4gNDg0Olx0XG4gNDg1Olx0XHRcdGNsYyA9IChjb25zdCBzdHJ1Y3QgbXQ3OTIxX2NsYyAqKShjbGNfYmFzZSAmIzQzOyBvZmZzZXQpO1xuIDQ4NjpcdFx0XHRjbGNfbGVuID0gbGUzMl90b19jcHUoY2xjLVx1MDAzZWxlbik7XG4gNDg3Olx0XHRcdGlmIChjbGNfbGVuIFx1MDAzYyBzaXplb2YoKmNsYykgfHwgY2xjX2xlbiBcdTAwM2UgbGVuIC0gb2Zmc2V0KSB7XG4gNDg4Olx0XHRcdFx0ZGV2X2VycihtZGV2LVx1MDAzZWRldiwgXCYjMzQ7SW52YWxpZCBDTEMgcmVjb3JkXFxuXCYjMzQ7KTtcbiA0ODk6XHRcdFx0XHRyZXQgPSAtRUlOVkFMO1xuIDQ5MDpcdFx0XHRcdGdvdG8gb3V0O1xuIDQ5MTpcdFx0XHR9XG4gNDkyOlx0XG4gNDkzOlx0XHRcdC8qIE5ld2VyIGZpcm13YXJlIG1heSBhZGQgcmVjb3JkcyB0aGlzIGRyaXZlciBkb2VzIG5vdCB1c2UgeWV0ICovXG4gNDk0Olx0XHRcdGlmIChjbGMtXHUwMDNlaWR4IFx1MDAzZT0gQVJSQVlfU0laRShwaHktXHUwMDNlY2xjKSlcbiA0OTU6XHRcdFx0XHRjb250aW51ZTtcbiA0OTY6XHRcbiA0OTc6XHRcdFx0LyogZG8gbm90IGluaXQgYnVmIGFnYWluIGlmIGNoaXAgcmVzZXQgdHJpZ2dlcmVkICovXG4gNDk4Olx0XHRcdGlmIChwaHktXHUwMDNlY2xjW2NsYy1cdTAwM2VpZHhdKVxuIDQ5OTpcdFx0XHRcdGNvbnRpbnVlO1xuIDUwMDpcdFxuIDUwMTpcdFx0XHQvKiBoZWFkZXIgY29udGVudCBzYW5pdHkgKi9cbiA1MDI6XHRcdFx0aWYgKGNsYy1cdTAwM2VpZHggPT0gTVQ3OTIxX0NMQ19QT1dFUiBcdTAwMjZcdTAwMjZcbiA1MDM6XHRcdFx0ICAgIHU4X2dldF9iaXRzKGNsYy1cdTAwM2V0eXBlLCBNVF9FRV9IV19UWVBFX0VOQ0FQKSAhPSBod19lbmNhcClcbiA1MDQ6XHRcdFx0XHRjb250aW51ZTtcbiA1MDU6XHRcbiA1MDY6XHRcdFx0cGh5LVx1MDAzZWNsY1tjbGMtXHUwMDNlaWR4XSA9IGRldm1fa21lbWR1cChtZGV2LVx1MDAzZWRldiwgY2xjLFxuIDUwNzpcdFx0XHRcdFx0XHRcdCAgY2xjX2xlbixcbiA1MDg6XHRcdFx0XHRcdFx0XHQgIEdGUF9LRVJORUwpO1xuIDUwOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxODo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjgzNQoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDMyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhpcyBGaXJtd2FyZSBQYXJzaW5nIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWJvdXQgaG93IHdlIHBhcnNlIGZpcm13YXJlIHJlY29yZHMuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgZGVhbGluZyB3aXRoIGZpcm13YXJlIGZpbGVzIHRoYXQgYXJlIGxvYWRlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIHVzaW5nIGByZXF1ZXN0X2Zpcm13YXJlYC4gVGhlIGZpcnN0IHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMsIGNhbiBzeXprYWxsZXIgZXZlbiB0b3VjaCBmaXJtd2FyZSBmaWxlcz8gT2ggcmlnaHQsIGl0IGNhbiwgdXNpbmcgYHN5el9tb3VudF9pbWFnZWAsIHJvb3RmcyBtb2RpZmljYXRpb25zLCBvciBldmVuIHRoZSBmaXJtd2FyZSBsb2FkZXIgZmFsbGJhY2suCgpCdXQsIGhvbGQgb24uIElzIHN5emthbGxlciBmdXp6aW5nIHRoZSBmaXJtd2FyZSBkaXJlY3RseSwgb3IganVzdCB0aGUgY29kZSB0aGF0ICp1c2VzKiB0aGUgZmlybXdhcmU/IFR5cGljYWxseSwgaXQmIzM5O3MgZm9jdXNlZCBvbiBzeXNjYWxscyBhbmQgdGhpbmdzIGxpa2UgVVNCL1BDSS4gRmlybXdhcmUgbG9hZGluZyBpcyB1c3VhbGx5IHNvbWV0aGluZyB0aGF0IGhhcHBlbnMgZnJvbSB0aGUgaG9zdCBmaWxlc3lzdGVtLiBIb3dldmVyLCBpdCAqY2FuKiBpbnRlcmNlcHQgZmlybXdhcmUgbG9hZGluZyBpZiBgcmVxdWVzdF9maXJtd2FyZWAgaXMgaW52b2x2ZWQgYW5kIHRoZSBmYWxsYmFjayBvciBjdXN0b20gZmlsZXN5c3RlbSBtZWNoYW5pc21zIGFyZSBpbiBwbGF5LgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogSXMgdGhpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgaXMgaXQgd29ydGggdGhlIGVmZm9ydCB0byBmdXp6IGl0PyBUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgYWRkaW5nIGEgYGRldl9lcnJgIGNhbGwgYW5kIG1vZGlmeWluZyB0aGUgZXJyb3IgaGFuZGxpbmcgd2hlbiBgY2xjLSZndDtpZHhgIGdvZXMgb3V0IG9mIGJvdW5kcy4gUHJldmlvdXNseSwgaXQgcmV0dXJuZWQgYC1FSU5WQUxgLiBOb3csIGl0IGp1c3QgYGNvbnRpbnVlYHMuIFNvLCBpdCYjMzk7cyBiYXNpY2FsbHkgYSBmaXggdG8gYWxsb3cgbmV3ZXIgZmlybXdhcmUgdG8gd29yayBvbiBvbGRlciBrZXJuZWxzLgoKSG1tLCBiZWNhdXNlIHRoaXMgYWZmZWN0cyBmaXJtd2FyZSBwYXJzaW5nLCBpdCBjb3VsZCBiZSB0cmlnZ2VyZWQgaWYgc3l6a2FsbGVyIGZlZWRzIGEgY3VzdG9tIGZpcm13YXJlIGZpbGUgaW50byB0aGUgc3lzdGVtLiBJdCYjMzk7cyBhIHBhcnNpbmcgaXNzdWUsIHRoYXQgKmNvdWxkKiBiZSBleHBsb2l0ZWQuCgpMZXQmIzM5O3MgZGlnIGEgYml0IGRlZXBlci4gSSBzZWUgYG10NzkyMV9sb2FkX2NsY2AgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgbWVhbnMgaXQmIzM5O3MgY2FsbGVkIG9ubHkgd2l0aGluIHRoZSBzYW1lIGNvbXBpbGF0aW9uIHVuaXQuIFRoZSBjYWxsZXIgaXMgYG10NzkyMV9ydW5fZmlybXdhcmVgLiBPa2F5LCBsZXQmIzM5O3MgdHVybiBvdXIgYXR0ZW50aW9uIHRvIGBtdDc5MjFfcnVuX2Zpcm13YXJlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTg6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDY2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjYwOlx0fVxuIDY2MTpcdFxuIDY2MjpcdGludCBtdDc5MjFfcnVuX2Zpcm13YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4gNjYzOlx0e1xuIDY2NDpcdFx0aW50IGVycjtcbiA2NjU6XHRcbiA2NjY6XHRcdGVyciA9IG10NzkyeF9sb2FkX2Zpcm13YXJlKGRldik7XG4gNjY3Olx0XHRpZiAoZXJyKVxuIDY2ODpcdFx0XHRyZXR1cm4gZXJyO1xuIDY2OTpcdFxuIDY3MDpcdFx0ZXJyID0gbXQ3OTIxX21jdV9nZXRfbmljX2NhcGFiaWxpdHkoXHUwMDI2ZGV2LVx1MDAzZXBoeSk7XG4gNjcxOlx0XHRpZiAoZXJyKVxuIDY3MjpcdFx0XHRyZXR1cm4gZXJyO1xuIDY3MzpcdFxuIDY3NDpcdFx0ZXJyID0gbXQ3OTIxX2xvYWRfY2xjKGRldiwgbXQ3OTJ4X3JhbV9uYW1lKGRldikpO1xuIDY3NTpcdFx0aWYgKGVycilcbiA2NzY6XHRcdFx0cmV0dXJuIGVycjtcbiA2Nzc6XHRcdHNldF9iaXQoTVQ3Nl9TVEFURV9NQ1VfUlVOTklORywgXHUwMDI2ZGV2LVx1MDAzZW1waHkuc3RhdGUpO1xuIDY3ODpcdFxuIDY3OTpcdFx0cmV0dXJuIG10NzkyMV9tY3VfZndfbG9nXzJfaG9zdChkZXYsIDEpO1xuIDY4MDpcdH1cbiA2ODE6XHRFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjFfcnVuX2Zpcm13YXJlKTtcbiA2ODI6XHRcbiA2ODM6XHRpbnQgbXQ3OTIxX21jdV9yYWRpb19sZWRfY3RybChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCB1OCB2YWx1ZSlcbiA2ODQ6XHR7XG4gNjg1Olx0XHRzdHJ1Y3Qge1xuIDY4NjpcdFx0XHR1OCBjdHJsaWQ7XG4gNjg3Olx0XHRcdHU4IHJzdlszXTtcbiA2ODg6XHRcdH0gX19wYWNrZWQgcmVxID0ge1xuIDY4OTpcdFx0XHQuY3RybGlkID0gdmFsdWUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE4OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0MDQzCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRmlybXdhcmUgUGFyc2luZyBQYXRjaCoqCgpPa2F5LCBzbyBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgaXMgYmVpbmcgZXhwb3J0ZWQsIHdoaWNoIG1lYW5zIGl0JiMzOTtzIGFjY2Vzc2libGUuIFRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgaG93IGZpcm13YXJlIGlzIHBhcnNlZC4gSW1tZWRpYXRlbHksIG15IG1pbmQgZ29lcyB0bywgJiMzNDtJcyB0aGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG9yIGp1c3QgYSBjb2RlIHN0eWxlIHR3ZWFrPyYjMzQ7IFllcywgaXQgKmlzKiBmdW5jdGlvbmFsIOKAkyBpdCYjMzk7cyBhbHRlcmluZyB0aGUgZXhlY3V0aW9uIGZsb3cuIEl0JiMzOTtzIG1vdmluZyBmcm9tIGEgaGFyZCBgLUVJTlZBTGAgcmV0dXJuIHRvIHNpbXBseSBjb250aW51aW5nIHRoZSBwYXJzaW5nLiBUaGUgaW1wbGljYXRpb24gaXMgY2xlYXI6IGl0IG5vdyAqcGVybWl0cyogdGhlIGRyaXZlciB0byB3b3JrIHdpdGggZmlybXdhcmUgdGhhdCBoYXMgdGhlc2UgZXh0cmEgQ0xDIHJlY29yZHMsIHdoaWNoIG1pZ2h0IGhhdmUgYmVlbiByZWplY3RlZCBiZWZvcmUuCgpUaGlzIHNjcmVhbXMgJiMzNDtmdXp6aW5nIHRhcmdldCYjMzQ7IHRvIG1lLiBGaXJtd2FyZSBwYXJzaW5nIGlzICphbHdheXMqIGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuIFNvLCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9ucyBuZWVkZWQuIEkgbmVlZCB0byBrbm93IHdoYXQgZW52aXJvbm1lbnQgdGhpcyBpcyBvcGVyYXRpbmcgdW5kZXIuIEkmIzM5O2xsIG5lZWQgYENPTkZJR19NVDc5MjFfQ09NTU9OYCBhbmQsIHNpbmNlIHRoZXJlJiMzOTtzIGEgZ29vZCBjaGFuY2Ugb2YgVVNCIGludGVyYWN0aW9uIGhlcmUsIGBDT05GSUdfTVQ3OTIxVWAuIE5vdywgbGV0JiMzOTtzIGNvbmZpcm0gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gYnkgcmV2aWV3aW5nIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZ2AgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTg6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1UNzkyMSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI6Y29uZmlnIE1UNzkyMV9DT01NT05cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZzo3OmNvbmZpZyBNVDc5MjFFXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTgtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjFFIChQQ0llKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0xNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6MTc6Y29uZmlnIE1UNzkyMVNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMTgtXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjFTIChTRElPKSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6Mjg6Y29uZmlnIE1UNzkyMVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMjktXHR0cmlzdGF0ZSBcJiMzNDtNZWRpYVRlayBNVDc5MjFVIChVU0IpIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTg6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ5MTIKCQkJCQkJCW91dHB1dDogNDgKCQkJCQkJCXRob3VnaHRzOiA3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIENoZWNrbGlzdCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnM6IGBNVDc5MjFVYCBmb3IgVVNCLCBgTVQ3OTIxRWAgZm9yIFBDSWUsIGFuZCBgTVQ3OTIxU2AgZm9yIFNESU8uIEkgbmVlZCB0byBnZXQgYE1UNzkyMVVgIGVuYWJsZWQgYmVjYXVzZSB0aGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludCBmb3IgVVNCIGZ1enppbmcsIHdoaWNoIGlzIGEga2V5IHRlc3RpbmcgYXJlYSBJIHdhbnQgdG8gZm9jdXMgb24uIEJlZm9yZSBJIGRpdmUgaW50byBhbnl0aGluZywgSSYjMzk7bGwgcXVpY2tseSBjaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBNVDc5MjFVYCB0byBtYWtlIHN1cmUgZW5hYmxpbmcgaXQgZG9lc24mIzM5O3QgY2F1c2UgYW55IHVuZXhwZWN0ZWQgZG93bnN0cmVhbSBpc3N1ZXMgb3IgY29uZmxpY3RzLiBCZXN0IHRvIHVuZGVyc3RhbmQgdGhlIGxhbmRzY2FwZSBiZWZvcmUgbWFraW5nIGFueSBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxODo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDI1Olx0XG4gIDI2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gIDI3Olx0XG4gIDI4Olx0Y29uZmlnIE1UNzkyMVVcbiAgMjk6XHRcdHRyaXN0YXRlIFwmIzM0O01lZGlhVGVrIE1UNzkyMVUgKFVTQikgc3VwcG9ydFwmIzM0O1xuICAzMDpcdFx0c2VsZWN0IE1UNzkyeF9VU0JcbiAgMzE6XHRcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXG4gIDMyOlx0XHRkZXBlbmRzIG9uIE1BQzgwMjExXG4gIDMzOlx0XHRkZXBlbmRzIG9uIFVTQlxuICAzNDpcdFx0aGVscFxuICAzNTpcdFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxVSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXG4gIDM2Olx0XG4gIDM3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE4OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MzcyCgkJCQkJCQlvdXRwdXQ6IDExOAoJCQkJCQkJdGhvdWdodHM6IDU3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgTVQ3OTIxVSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGRlcGVuZGVuY2llcyBhcmUgcmlnaHQuIFdlJiMzOTtyZSBsb29raW5nIGF0IHRoZSBgTVQ3OTIxVWAgZHJpdmVyLCB3aGljaCBoaW5nZXMgb24gYE1BQzgwMjExYCBhbmQgYFVTQmAuICBUaGVyZWZvcmUsIHRoZSBgTVQ3OTIxVWAgY29uZmlnIG5lZWRzIHRvIGJlIGFkZGVkIHRvIGBFbmFibGVDb25maWdzYCB0byBlbnN1cmUgdGhpcyBkcml2ZXIgaXMgcHJvcGVybHkgZW5hYmxlZC4KCk5vdywgdGhlIGNvcmUgb2YgdGhlIG1hdHRlcjogVGhpcyBwYXRjaCBmb2N1c2VzIG9uIGNoYW5nZXMgdG8gaG93IHRoZSBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgZnVuY3Rpb24gd29ya3MuIFdoaWxlIGBtdDc5MjFfbG9hZF9jbGNgICppcyogc3RhdGljIChqdXN0IGNvbmZpcm1lZCB0aGF0KSwgYG10NzkyMV9ydW5fZmlybXdhcmVgIGlzIGV4cG9ydGVkLCBtYWtpbmcgaXQgdGhlIG1vcmUgYXBwcm9wcmlhdGUgZm9jdXMgZm9yIG91ciBhbmFseXNpcy4KClRoZSBwYXRjaCBpdHNlbGYgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGZpcm13YXJlIHBhcnNpbmcgbG9naWMuIEl0IGFsdGVycyBob3cgd2UgaGFuZGxlIENMQyAoQ29uZmlndXJhdGlvbiBMaWZlY3ljbGUgQ29udHJvbCkgcmVjb3Jkcy4gIEVzc2VudGlhbGx5LCBpdCYjMzk7cyBtb2RpZnlpbmcgdGhlIGVycm9yIGhhbmRsaW5nIHdoZW4gZGVhbGluZyB3aXRoIENMQyByZWNvcmQgaW5kaWNlcyB0aGF0IGFyZSBvdXQgb2YgYm91bmRzLiBUaGUgb2xkIGNvZGUgd291bGQgZXJyb3Igb3V0OyB0aGUgbmV3IGNvZGUgaWdub3JlcyB1bmtub3duIENMQyByZWNvcmRzLgoKVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmU6IGlzIHRoaXMgcGF0Y2ggZnV6emFibGU/IFllcywgYWJzb2x1dGVseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBhIGRyaXZlciwgYW5kIHRoZSBkcml2ZXIgaXMgYWNjZXNzaWJsZSB2aWEgVVNCLiAgVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljIGFuZCB0aGVyZWZvcmUgaXMgd29ydGggZnV6emluZy4KCkdpdmVuIHRoYXQgYE1UNzkyMVVgIGRlcGVuZHMgb24gYE1BQzgwMjExYCBhbmQgYFVTQmAgKGFuZCBgTUFDODAyMTFgIGl0c2VsZiBkZXBlbmRzIG9uIGBDRkc4MDIxMWApLCBJIG5lZWQgdG8gYWRkIGJvdGggYE1UNzkyMVVgIGFuZCBgTUFDODAyMTFgIHRvIHRoZSBjb25maWd1cmF0aW9uLCBtYWtpbmcgc3VyZSBhbGwgZGVwZW5kZW5jaWVzIGFyZSBpbiBwbGFjZS4KCkFscmlnaHQsIEkmIzM5O20gY29uZmlkZW50IGluIG15IGFuYWx5c2lzLiBMZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxODo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TVQ3OTIxVSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O210NzkyMV9ydW5fZmlybXdhcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZpcm13YXJlIHBhcnNpbmcgbG9naWMgaW4gdGhlIE1UNzkyMSB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgb3V0LW9mLWJvdW5kcyBDTEMgcmVjb3JkIGluZGljZXMgYXJlIGhhbmRsZWQgKGlnbm9yaW5nIHRoZW0gaW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gZXJyb3IpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01UNzkyMVUmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttdDc5MjFfcnVuX2Zpcm13YXJlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljIGluIHRoZSBNVDc5MjEgd2lyZWxlc3MgZHJpdmVyLCBzcGVjaWZpY2FsbHkgY2hhbmdpbmcgaG93IG91dC1vZi1ib3VuZHMgQ0xDIHJlY29yZCBpbmRpY2VzIGFyZSBoYW5kbGVkIChpZ25vcmluZyB0aGVtIGluc3RlYWQgb2YgcmV0dXJuaW5nIGFuIGVycm9yKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgZHJpdmVyIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFVTQiBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxODo0MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE4OjQwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYXJzaW5nIGxvZ2ljIGZvciBmaXJtd2FyZSBDTEMgcmVjb3JkcyBpbiB0aGUgbXQ3OTIxIGRyaXZlci4gSXQgY2hhbmdlcyB0aGUgYmVoYXZpb3Igd2hlbiBlbmNvdW50ZXJpbmcgYSBDTEMgcmVjb3JkIHdpdGggYW4gaW5kZXggbGFyZ2VyIHRoYW4gdGhlIGRyaXZlciYjMzk7cyBhcnJheSBzaXplOiBpbnN0ZWFkIG9mIHJldHVybmluZyBhbiBlcnJvciwgaXQgbm93IGlnbm9yZXMgdGhlIHJlY29yZCBhbmQgY29udGludWVzIHBhcnNpbmcuIFRoaXMgcHJldmVudHMgdGhlIGRyaXZlciBmcm9tIGZhaWxpbmcgdG8gbG9hZCBuZXdlciBmaXJtd2FyZSB0aGF0IGNvbnRhaW5zIGFkZGl0aW9uYWwgcmVjb3Jkcy4gVGhlIGRhdGEgYmVpbmcgcGFyc2VkIGlzIGxvYWRlZCBmcm9tIGEgZmlybXdhcmUgZmlsZSBhbmQgaXMgZnVsbHkgaW5pdGlhbGl6ZWQuIFRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgYWxsb2NhdGlvbnMgb2YgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmVzLCBvciBpbmZvcm1hdGlvbiBsZWFrcyB0byB1c2VyIHNwYWNlIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgdG9vbHMgYXJlIHN1ZmZpY2llbnQgZm9yIGRldGVjdGluZyBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIG1lbW9yeSBjb3JydXB0aW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0MDU5ZGE5YjE4MmM3NDQ2MTQ3MDZjZGQ5ZjI3YWU5YzhlYTUyMmFiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMTYgMTg6Mzk6NDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jCmluZGV4IGExMThhMzAxNTY0YzguLjQwNTQ2MDA1Yzc0M2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jCkBAIC00NzcsMTggJiM0Mzs0NzcsMjMgQEAgc3RhdGljIGludCBtdDc5MjFfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSkKIAogCWZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0ICZsdDsgbGVuOyBvZmZzZXQgJiM0Mzs9IGNsY19sZW4pIHsKIAkJaWYgKGxlbiAtIG9mZnNldCAmbHQ7IHNpemVvZigqY2xjKSkgewomIzQzOwkJCWRldl9lcnIobWRldi0mZ3Q7ZGV2LCAmIzM0O0ludmFsaWQgQ0xDIHJlY29yZFxuJiMzNDspOwogCQkJcmV0ID0gLUVJTlZBTDsKIAkJCWdvdG8gb3V0OwogCQl9CiAKIAkJY2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjFfY2xjICopKGNsY19iYXNlICYjNDM7IG9mZnNldCk7CiAJCWNsY19sZW4gPSBsZTMyX3RvX2NwdShjbGMtJmd0O2xlbik7Ci0JCWlmIChjbGNfbGVuICZsdDsgc2l6ZW9mKCpjbGMpIHx8IGNsY19sZW4gJmd0OyBsZW4gLSBvZmZzZXQgfHwKLQkJICAgIGNsYy0mZ3Q7aWR4ICZndDs9IEFSUkFZX1NJWkUocGh5LSZndDtjbGMpKSB7CiYjNDM7CQlpZiAoY2xjX2xlbiAmbHQ7IHNpemVvZigqY2xjKSB8fCBjbGNfbGVuICZndDsgbGVuIC0gb2Zmc2V0KSB7CiYjNDM7CQkJZGV2X2VycihtZGV2LSZndDtkZXYsICYjMzQ7SW52YWxpZCBDTEMgcmVjb3JkXG4mIzM0Oyk7CiAJCQlyZXQgPSAtRUlOVkFMOwogCQkJZ290byBvdXQ7CiAJCX0KIAomIzQzOwkJLyogTmV3ZXIgZmlybXdhcmUgbWF5IGFkZCByZWNvcmRzIHRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZSB5ZXQgKi8KJiM0MzsJCWlmIChjbGMtJmd0O2lkeCAmZ3Q7PSBBUlJBWV9TSVpFKHBoeS0mZ3Q7Y2xjKSkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsKIAkJLyogZG8gbm90IGluaXQgYnVmIGFnYWluIGlmIGNoaXAgcmVzZXQgdHJpZ2dlcmVkICovCiAJCWlmIChwaHktJmd0O2NsY1tjbGMtJmd0O2lkeF0pCiAJCQljb250aW51ZTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE4OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyODEKCQkJCQkJCW91dHB1dDogNTEKCQkJCQkJCXRob3VnaHRzOiAxOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbXQ3OTIxX2xvYWRfY2xjYCBpbiB0aGUgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuY2AuIEl0IHNlZW1zIGxpa2UgdGhleSYjMzk7cmUgYWRkcmVzc2luZyBzb21lIGlzc3VlIHJlbGF0ZWQgdG8gdGhlIENMQyAoQ2FsaWJyYXRpb24gYW5kIENvbmZpZ3VyYXRpb24pIHJlY29yZHMuIFRoZSBwYXRjaCBhZGRzIGFuIGVycm9yIG1lc3NhZ2Ug4oCTIHRoYXQmIzM5O3MgZ29vZCwgYWx3YXlzIGhlbHBzIHdpdGggZGVidWdnaW5nLiBCdXQgaXTigJlzIHRoZSBjaGFuZ2UgaW4gYmVoYXZpb3IgSSBuZWVkIHRvIHJlYWxseSBkaWcgaW50by4KClByZXZpb3VzbHksIGlmIGBjbGMtJmd0O2lkeGAgd2VudCBiZXlvbmQgdGhlIGJvdW5kcyBvZiBgcGh5LSZndDtjbGNgICggYEFSUkFZX1NJWkUocGh5LSZndDtjbGMpYCApLCBpdCB3b3VsZCByZXR1cm4gYC1FSU5WQUxgLiBUaGlzIHdvdWxkIGVzc2VudGlhbGx5IGhhbHQgdGhlIHByb2Nlc3MuIE5vdywgdGhlIHBhdGNoICpjb250aW51ZXMqIHRoZSBsb29wLiBTbywgaXQgKmlnbm9yZXMqIHRoYXQgc3BlY2lmaWMgcmVjb3JkIGluc3RlYWQgb2YgZXJyb3Jpbmcgb3V0IGFuZCBzdG9wcGluZyB0aGUgd2hvbGUgbG9hZC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyBvdXQtb2YtYm91bmRzIGFjY2VzcyBwcm90ZWN0aW9uLCBidXQgaG9sZCBvbiwgdGhlIHByZXZpb3VzIGJlaGF2aW9yICpwcmV2ZW50ZWQqIHRoYXQuIFNvLCB3aHkgdGhlIGNoYW5nZT8gSXQmIzM5O3MgbW9yZSBsaWtlbHkgdGhpcyBpcyBhYm91dCBncmFjZWZ1bGx5IGhhbmRsaW5nIG5ld2VyIGZpcm13YXJlIHJlY29yZHMgdGhhdCBtaWdodCBoYXZlIGFkZGVkIGRhdGEgYmV5b25kIHdoYXQgdGhpcyBzcGVjaWZpYyBkcml2ZXIgdmVyc2lvbiBleHBlY3RzLgoKUmlnaHQsIHNvIGJ5IGNvbnRpbnVpbmcsIGl0IGVzc2VudGlhbGx5IHNraXBzIG92ZXIgdGhhdCBwb3RlbnRpYWxseSB1bmtub3duIHJlY29yZCBhbmQgbW92ZXMgb24gdG8gdGhlIG5leHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCBza2lwLiBJIG5lZWQgdG8gZXhhbWluZSB0aGUgc3Vycm91bmRpbmcgY29kZSBjYXJlZnVsbHkgbm93IHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiBza2lwcGluZyB0aGF0IGNhbGlicmF0aW9uIHJlY29yZC4gRG9lcyBpdCBoYXZlIGNyaXRpY2FsIGRhdGE/IE9yIGlzIGl0IG9wdGlvbmFsPyBJIG5lZWQgdG8ga25vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTYgMTg6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDYwOlx0XHRcdC8qIGNoZWNrIGlmIHdlIGhhdmUgdmFsaWQgYnVmZmVyIHNpemUgKi9cbiA0NjE6XHRcdFx0aWYgKGxlbiBcdTAwM2UgZndfZGF0YV9sZW4gLSBvZmZzZXQpIHtcbiA0NjI6XHRcdFx0XHRkZXZfZXJyKG1kZXYtXHUwMDNlZGV2LCBcJiMzNDtJbnZhbGlkIGZpcm13YXJlIHJlZ2lvblxcblwmIzM0Oyk7XG4gNDYzOlx0XHRcdFx0cmV0ID0gLUVJTlZBTDtcbiA0NjQ6XHRcdFx0XHRnb3RvIG91dDtcbiA0NjU6XHRcdFx0fVxuIDQ2NjpcdFxuIDQ2NzpcdFx0XHRpZiAoKHJlZ2lvbi1cdTAwM2VmZWF0dXJlX3NldCBcdTAwMjYgRldfRkVBVFVSRV9OT05fREwpIFx1MDAyNlx1MDAyNlxuIDQ2ODpcdFx0XHQgICAgcmVnaW9uLVx1MDAzZXR5cGUgPT0gRldfVFlQRV9DTEMpIHtcbiA0Njk6XHRcdFx0XHRjbGNfYmFzZSA9ICh1OCAqKShmdy1cdTAwM2VkYXRhICYjNDM7IG9mZnNldCk7XG4gNDcwOlx0XHRcdFx0YnJlYWs7XG4gNDcxOlx0XHRcdH1cbiA0NzI6XHRcdFx0b2Zmc2V0ICYjNDM7PSBsZW47XG4gNDczOlx0XHR9XG4gNDc0Olx0XG4gNDc1Olx0XHRpZiAoIWNsY19iYXNlKVxuIDQ3NjpcdFx0XHRnb3RvIG91dDtcbiA0Nzc6XHRcbiA0Nzg6XHRcdGZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IFx1MDAzYyBsZW47IG9mZnNldCAmIzQzOz0gY2xjX2xlbikge1xuIDQ3OTpcdFx0XHRpZiAobGVuIC0gb2Zmc2V0IFx1MDAzYyBzaXplb2YoKmNsYykpIHtcbiA0ODA6XHRcdFx0XHRkZXZfZXJyKG1kZXYtXHUwMDNlZGV2LCBcJiMzNDtJbnZhbGlkIENMQyByZWNvcmRcXG5cJiMzNDspO1xuIDQ4MTpcdFx0XHRcdHJldCA9IC1FSU5WQUw7XG4gNDgyOlx0XHRcdFx0Z290byBvdXQ7XG4gNDgzOlx0XHRcdH1cbiA0ODQ6XHRcbiA0ODU6XHRcdFx0Y2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjFfY2xjICopKGNsY19iYXNlICYjNDM7IG9mZnNldCk7XG4gNDg2Olx0XHRcdGNsY19sZW4gPSBsZTMyX3RvX2NwdShjbGMtXHUwMDNlbGVuKTtcbiA0ODc6XHRcdFx0aWYgKGNsY19sZW4gXHUwMDNjIHNpemVvZigqY2xjKSB8fCBjbGNfbGVuIFx1MDAzZSBsZW4gLSBvZmZzZXQpIHtcbiA0ODg6XHRcdFx0XHRkZXZfZXJyKG1kZXYtXHUwMDNlZGV2LCBcJiMzNDtJbnZhbGlkIENMQyByZWNvcmRcXG5cJiMzNDspO1xuIDQ4OTpcdFx0XHRcdHJldCA9IC1FSU5WQUw7XG4gNDkwOlx0XHRcdFx0Z290byBvdXQ7XG4gNDkxOlx0XHRcdH1cbiA0OTI6XHRcbiA0OTM6XHRcdFx0LyogTmV3ZXIgZmlybXdhcmUgbWF5IGFkZCByZWNvcmRzIHRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZSB5ZXQgKi9cbiA0OTQ6XHRcdFx0aWYgKGNsYy1cdTAwM2VpZHggXHUwMDNlPSBBUlJBWV9TSVpFKHBoeS1cdTAwM2VjbGMpKVxuIDQ5NTpcdFx0XHRcdGNvbnRpbnVlO1xuIDQ5NjpcdFxuIDQ5NzpcdFx0XHQvKiBkbyBub3QgaW5pdCBidWYgYWdhaW4gaWYgY2hpcCByZXNldCB0cmlnZ2VyZWQgKi9cbiA0OTg6XHRcdFx0aWYgKHBoeS1cdTAwM2VjbGNbY2xjLVx1MDAzZWlkeF0pXG4gNDk5Olx0XHRcdFx0Y29udGludWU7XG4gNTAwOlx0XG4gNTAxOlx0XHRcdC8qIGhlYWRlciBjb250ZW50IHNhbml0eSAqL1xuIDUwMjpcdFx0XHRpZiAoY2xjLVx1MDAzZWlkeCA9PSBNVDc5MjFfQ0xDX1BPV0VSIFx1MDAyNlx1MDAyNlxuIDUwMzpcdFx0XHQgICAgdThfZ2V0X2JpdHMoY2xjLVx1MDAzZXR5cGUsIE1UX0VFX0hXX1RZUEVfRU5DQVApICE9IGh3X2VuY2FwKVxuIDUwNDpcdFx0XHRcdGNvbnRpbnVlO1xuIDUwNTpcdFxuIDUwNjpcdFx0XHRwaHktXHUwMDNlY2xjW2NsYy1cdTAwM2VpZHhdID0gZGV2bV9rbWVtZHVwKG1kZXYtXHUwMDNlZGV2LCBjbGMsXG4gNTA3Olx0XHRcdFx0XHRcdFx0ICBjbGNfbGVuLFxuIDUwODpcdFx0XHRcdFx0XHRcdCAgR0ZQX0tFUk5FTCk7XG4gNTA5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE2IDE4OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MTcKCQkJCQkJCW91dHB1dDogMTY4CgkJCQkJCQl0aG91Z2h0czogMjc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZpcm13YXJlIFBhcnNpbmcgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIG92ZXIgdGhpcyBwYXRjaC4gSXQmIzM5O3MgZm9jdXNlZCBvbiBwYXJzaW5nIGZpcm13YXJlIGRhdGEsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBDTEMgcmVjb3Jkcy4gVGhlIGtleSBjaGFuZ2UgaXMgaG93IGl0IGRlYWxzIHdpdGggYGNsYy0mZ3Q7aWR4ICZndDs9IEFSUkFZX1NJWkUocGh5LSZndDtjbGMpYC4gUHJldmlvdXNseSwgaXQgd2FzIGFuIGVycm9yLCBidXQgbm93IGl0JiMzOTtzIGJlaW5nIGhhbmRsZWQgYnkgc2ltcGx5IHNraXBwaW5nIHRoZSByZWNvcmQuCgpNeSBpbW1lZGlhdGUgYW5hbHlzaXM/IE5vIEtNU0FOIG5lZWRlZC4gVGhlIGZpcm13YXJlIGRhdGEsIGBmdy0mZ3Q7ZGF0YWAsIGlzIGZ1bGx5IGluaXRpYWxpemVkOyBpdCBjb21lcyBkaXJlY3RseSBmcm9tIGEgZmlsZS4gVGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyB0aGUgY29udHJvbCBmbG93IG9mIHRoZSBwYXJzaW5nIHByb2Nlc3M7IGl0IGRvZXNuJiMzOTt0IHRvdWNoIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmUmIzM5O3Mgbm8gd2F5IHRoaXMgaXMgaW50cm9kdWNpbmcgdW5pbml0aWFsaXplZCByZWFkcyBvciBwb3RlbnRpYWwgbGVha3MgdG8gdXNlcnNwYWNlLiBUaGUgZmlybXdhcmUgZGF0YSBpdHNlbGYgaXMgY2FyZWZ1bGx5IGNvbnN0cnVjdGVkIGFuZCBpbml0aWFsaXplZCwgd2hpY2ggbWVhbnMgd2UgYXJlbiYjMzk7dCByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LgoKVGhlcmVmb3JlLCBLTVNBTiBpcyBvdmVya2lsbCBpbiB0aGlzIHNpdHVhdGlvbi4gS0FTQU4gYW5kIG91ciBvdGhlciBzdGFuZGFyZCB0b29scyBzaG91bGQgYmUgcGVyZmVjdGx5IGFkZXF1YXRlIHRvIGNhdGNoIGFueSBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyB0aGF0ICptaWdodCogYXJpc2UgZnJvbSB0aGlzIGNvZGUuIEkmIzM5O20gZ29pbmcgdG8gbWFyayB0aGlzIGFzIGBOZWVkc0tNU0FOPWZhbHNlYC4gSXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgY2hhbmdlIHRoYXQgc2ltcGxpZmllcyB0aGUgZmlybXdhcmUgcGFyc2luZyBpbiBhIHNhZmUgd2F5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNiAxODo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2luZyBsb2dpYyBmb3IgZmlybXdhcmUgQ0xDIHJlY29yZHMgaW4gdGhlIG10NzkyMSBkcml2ZXIuIEl0IGNoYW5nZXMgdGhlIGJlaGF2aW9yIHdoZW4gZW5jb3VudGVyaW5nIGEgQ0xDIHJlY29yZCB3aXRoIGFuIGluZGV4IGxhcmdlciB0aGFuIHRoZSBkcml2ZXImIzM5O3MgYXJyYXkgc2l6ZTogaW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gZXJyb3IsIGl0IG5vdyBpZ25vcmVzIHRoZSByZWNvcmQgYW5kIGNvbnRpbnVlcyBwYXJzaW5nLiBUaGlzIHByZXZlbnRzIHRoZSBkcml2ZXIgZnJvbSBmYWlsaW5nIHRvIGxvYWQgbmV3ZXIgZmlybXdhcmUgdGhhdCBjb250YWlucyBhZGRpdGlvbmFsIHJlY29yZHMuIFRoZSBkYXRhIGJlaW5nIHBhcnNlZCBpcyBsb2FkZWQgZnJvbSBhIGZpcm13YXJlIGZpbGUgYW5kIGlzIGZ1bGx5IGluaXRpYWxpemVkLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGFsbG9jYXRpb25zIG9mIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlcywgb3IgaW5mb3JtYXRpb24gbGVha3MgdG8gdXNlciBzcGFjZSBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIHRvb2xzIGFyZSBzdWZmaWNpZW50IGZvciBkZXRlY3Rpbmcgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBtZW1vcnkgY29ycnVwdGlvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYXJzaW5nIGxvZ2ljIGZvciBmaXJtd2FyZSBDTEMgcmVjb3JkcyBpbiB0aGUgbXQ3OTIxIGRyaXZlci4gSXQgY2hhbmdlcyB0aGUgYmVoYXZpb3Igd2hlbiBlbmNvdW50ZXJpbmcgYSBDTEMgcmVjb3JkIHdpdGggYW4gaW5kZXggbGFyZ2VyIHRoYW4gdGhlIGRyaXZlciYjMzk7cyBhcnJheSBzaXplOiBpbnN0ZWFkIG9mIHJldHVybmluZyBhbiBlcnJvciwgaXQgbm93IGlnbm9yZXMgdGhlIHJlY29yZCBhbmQgY29udGludWVzIHBhcnNpbmcuIFRoaXMgcHJldmVudHMgdGhlIGRyaXZlciBmcm9tIGZhaWxpbmcgdG8gbG9hZCBuZXdlciBmaXJtd2FyZSB0aGF0IGNvbnRhaW5zIGFkZGl0aW9uYWwgcmVjb3Jkcy4gVGhlIGRhdGEgYmVpbmcgcGFyc2VkIGlzIGxvYWRlZCBmcm9tIGEgZmlybXdhcmUgZmlsZSBhbmQgaXMgZnVsbHkgaW5pdGlhbGl6ZWQuIFRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgYWxsb2NhdGlvbnMgb2YgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmVzLCBvciBpbmZvcm1hdGlvbiBsZWFrcyB0byB1c2VyIHNwYWNlIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgdG9vbHMgYXJlIHN1ZmZpY2llbnQgZm9yIGRldGVjdGluZyBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIG1lbW9yeSBjb3JydXB0aW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxODozOTo0NS40NjQ1OTAyNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4ODEyMDA3NDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1UNzkyMVVcIixcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibXQ3OTIxX3J1bl9maXJtd2FyZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhcnNpbmcgbG9naWMgZm9yIGZpcm13YXJlIENMQyByZWNvcmRzIGluIHRoZSBtdDc5MjEgZHJpdmVyLiBJdCBjaGFuZ2VzIHRoZSBiZWhhdmlvciB3aGVuIGVuY291bnRlcmluZyBhIENMQyByZWNvcmQgd2l0aCBhbiBpbmRleCBsYXJnZXIgdGhhbiB0aGUgZHJpdmVyJ3MgYXJyYXkgc2l6ZTogaW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gZXJyb3IsIGl0IG5vdyBpZ25vcmVzIHRoZSByZWNvcmQgYW5kIGNvbnRpbnVlcyBwYXJzaW5nLiBUaGlzIHByZXZlbnRzIHRoZSBkcml2ZXIgZnJvbSBmYWlsaW5nIHRvIGxvYWQgbmV3ZXIgZmlybXdhcmUgdGhhdCBjb250YWlucyBhZGRpdGlvbmFsIHJlY29yZHMuIFRoZSBkYXRhIGJlaW5nIHBhcnNlZCBpcyBsb2FkZWQgZnJvbSBhIGZpcm13YXJlIGZpbGUgYW5kIGlzIGZ1bGx5IGluaXRpYWxpemVkLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGFsbG9jYXRpb25zIG9mIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlcywgb3IgaW5mb3JtYXRpb24gbGVha3MgdG8gdXNlciBzcGFjZSBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIHRvb2xzIGFyZSBzdWZmaWNpZW50IGZvciBkZXRlY3Rpbmcgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBtZW1vcnkgY29ycnVwdGlvbi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZmlybXdhcmUgcGFyc2luZyBsb2dpYyBpbiB0aGUgTVQ3OTIxIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIGhvdyBvdXQtb2YtYm91bmRzIENMQyByZWNvcmQgaW5kaWNlcyBhcmUgaGFuZGxlZCAoaWdub3JpbmcgdGhlbSBpbnN0ZWFkIG9mIHJldHVybmluZyBhbiBlcnJvcikuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBVU0IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTg6Mzk6NDUuNDY0NjAwNzFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjQ0ODczMjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0MDU5ZGE5YjE4MmM3NDQ2MTQ3MDZjZGQ5ZjI3YWU5YzhlYTUyMmFiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDE2IDE4OjM5OjQzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcXG5pbmRleCBhMTE4YTMwMTU2NGM4Li40MDU0NjAwNWM3NDNiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcXG5AQCAtNDc3LDE4ICs0NzcsMjMgQEAgc3RhdGljIGludCBtdDc5MjFfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcXG4gXFxuIFxcdGZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IFxcdTAwM2MgbGVuOyBvZmZzZXQgKz0gY2xjX2xlbikge1xcbiBcXHRcXHRpZiAobGVuIC0gb2Zmc2V0IFxcdTAwM2Mgc2l6ZW9mKCpjbGMpKSB7XFxuK1xcdFxcdFxcdGRldl9lcnIobWRldi1cXHUwMDNlZGV2LCBcXFwiSW52YWxpZCBDTEMgcmVjb3JkXFxcXG5cXFwiKTtcXG4gXFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4gXFx0XFx0XFx0Z290byBvdXQ7XFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGNsYyA9IChjb25zdCBzdHJ1Y3QgbXQ3OTIxX2NsYyAqKShjbGNfYmFzZSArIG9mZnNldCk7XFxuIFxcdFxcdGNsY19sZW4gPSBsZTMyX3RvX2NwdShjbGMtXFx1MDAzZWxlbik7XFxuLVxcdFxcdGlmIChjbGNfbGVuIFxcdTAwM2Mgc2l6ZW9mKCpjbGMpIHx8IGNsY19sZW4gXFx1MDAzZSBsZW4gLSBvZmZzZXQgfHxcXG4tXFx0XFx0ICAgIGNsYy1cXHUwMDNlaWR4IFxcdTAwM2U9IEFSUkFZX1NJWkUocGh5LVxcdTAwM2VjbGMpKSB7XFxuK1xcdFxcdGlmIChjbGNfbGVuIFxcdTAwM2Mgc2l6ZW9mKCpjbGMpIHx8IGNsY19sZW4gXFx1MDAzZSBsZW4gLSBvZmZzZXQpIHtcXG4rXFx0XFx0XFx0ZGV2X2VycihtZGV2LVxcdTAwM2VkZXYsIFxcXCJJbnZhbGlkIENMQyByZWNvcmRcXFxcblxcXCIpO1xcbiBcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbiBcXHRcXHRcXHRnb3RvIG91dDtcXG4gXFx0XFx0fVxcbiBcXG4rXFx0XFx0LyogTmV3ZXIgZmlybXdhcmUgbWF5IGFkZCByZWNvcmRzIHRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZSB5ZXQgKi9cXG4rXFx0XFx0aWYgKGNsYy1cXHUwMDNlaWR4IFxcdTAwM2U9IEFSUkFZX1NJWkUocGh5LVxcdTAwM2VjbGMpKVxcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFxuIFxcdFxcdC8qIGRvIG5vdCBpbml0IGJ1ZiBhZ2FpbiBpZiBjaGlwIHJlc2V0IHRyaWdnZXJlZCAqL1xcbiBcXHRcXHRpZiAocGh5LVxcdTAwM2VjbGNbY2xjLVxcdTAwM2VpZHhdKVxcbiBcXHRcXHRcXHRjb250aW51ZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTg6Mzk6NDYuODg5NzIzMTI1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDczOTczMzg2NzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTIxVVwiLFxuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjFfcnVuX2Zpcm13YXJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZpcm13YXJlIHBhcnNpbmcgbG9naWMgaW4gdGhlIE1UNzkyMSB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgb3V0LW9mLWJvdW5kcyBDTEMgcmVjb3JkIGluZGljZXMgYXJlIGhhbmRsZWQgKGlnbm9yaW5nIHRoZW0gaW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gZXJyb3IpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQwNTlkYTliMTgyYzc0NDYxNDcwNmNkZDlmMjdhZTljOGVhNTIyYWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAxNiAxODozOTo0MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcbmluZGV4IGExMThhMzAxNTY0YzguLjQwNTQ2MDA1Yzc0M2IgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcbkBAIC00NzcsMTggKzQ3NywyMyBAQCBzdGF0aWMgaW50IG10NzkyMV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxuIFxuIFx0Zm9yIChvZmZzZXQgPSAwOyBvZmZzZXQgXHUwMDNjIGxlbjsgb2Zmc2V0ICs9IGNsY19sZW4pIHtcbiBcdFx0aWYgKGxlbiAtIG9mZnNldCBcdTAwM2Mgc2l6ZW9mKCpjbGMpKSB7XG4rXHRcdFx0ZGV2X2VycihtZGV2LVx1MDAzZWRldiwgXCJJbnZhbGlkIENMQyByZWNvcmRcXG5cIik7XG4gXHRcdFx0cmV0ID0gLUVJTlZBTDtcbiBcdFx0XHRnb3RvIG91dDtcbiBcdFx0fVxuIFxuIFx0XHRjbGMgPSAoY29uc3Qgc3RydWN0IG10NzkyMV9jbGMgKikoY2xjX2Jhc2UgKyBvZmZzZXQpO1xuIFx0XHRjbGNfbGVuID0gbGUzMl90b19jcHUoY2xjLVx1MDAzZWxlbik7XG4tXHRcdGlmIChjbGNfbGVuIFx1MDAzYyBzaXplb2YoKmNsYykgfHwgY2xjX2xlbiBcdTAwM2UgbGVuIC0gb2Zmc2V0IHx8XG4tXHRcdCAgICBjbGMtXHUwMDNlaWR4IFx1MDAzZT0gQVJSQVlfU0laRShwaHktXHUwMDNlY2xjKSkge1xuK1x0XHRpZiAoY2xjX2xlbiBcdTAwM2Mgc2l6ZW9mKCpjbGMpIHx8IGNsY19sZW4gXHUwMDNlIGxlbiAtIG9mZnNldCkge1xuK1x0XHRcdGRldl9lcnIobWRldi1cdTAwM2VkZXYsIFwiSW52YWxpZCBDTEMgcmVjb3JkXFxuXCIpO1xuIFx0XHRcdHJldCA9IC1FSU5WQUw7XG4gXHRcdFx0Z290byBvdXQ7XG4gXHRcdH1cbiBcbitcdFx0LyogTmV3ZXIgZmlybXdhcmUgbWF5IGFkZCByZWNvcmRzIHRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZSB5ZXQgKi9cbitcdFx0aWYgKGNsYy1cdTAwM2VpZHggXHUwMDNlPSBBUlJBWV9TSVpFKHBoeS1cdTAwM2VjbGMpKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1xuIFx0XHQvKiBkbyBub3QgaW5pdCBidWYgYWdhaW4gaWYgY2hpcCByZXNldCB0cmlnZ2VyZWQgKi9cbiBcdFx0aWYgKHBoeS1cdTAwM2VjbGNbY2xjLVx1MDAzZWlkeF0pXG4gXHRcdFx0Y29udGludWU7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxODozOTo0Ni44ODk3MjQzMzVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTA5MTQwMzU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE1lZGlhdGVrIFdpRmkgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0J3MgdHdlYWtpbmcgdGhlIGBtdDc5MjFfbG9hZF9jbGNgIGZ1bmN0aW9uIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuY2AuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgbGlrZSB0aGUgcGF0Y2ggaXMgYWRkaW5nIGEgYGRldl9lcnJgIGNhbGwgZm9yIGludmFsaWQgQ0xDIHJlY29yZHMgYW5kIHRoZW4gZ3JhY2VmdWxseSBpZ25vcmluZyByZWNvcmRzIHdoZXJlIGBjbGMtXHUwMDNlaWR4YCBpcyBvdXQgb2YgYm91bmRzIChncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gYEFSUkFZX1NJWkUocGh5LVx1MDAzZWNsYylgKSBpbnN0ZWFkIG9mIGV4cGxpY2l0bHkgcmV0dXJuaW5nIGFuIGVycm9yLiBUaGF0J3MgaW50ZXJlc3RpbmcsIG1ha2VzIGl0IG1vcmUgcm9idXN0LCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgaXM6IHdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgZm9yIHZpcnR1YWxpemF0aW9uPyBUaGUgYG10NzkyMWAgaXMgYSBNZWRpYXRlayB3aXJlbGVzcyBkcml2ZXIsIGFuZCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGl0IGlzIGEgUENJLCBVU0IsIG9yIFNESU8gZHJpdmVyIHRvIGFzc2VzcyBpdHMgdmlydHVhbGl6YWJpbGl0eS4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzb3VyY2UgY29kZSB0byBiZSBzdXJlLCBzbyBsZXQncyBjaGVjayB0aGUgZmlsZXMgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2AgdG8gZmlndXJlIG91dCB0aGUgYnVzIHR5cGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyODQsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxODozOTo1MS4zOTg4NjcxNDJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE5NDQ0MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTIxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDI1MDggbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlLTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvTWFrZWZpbGU6MzpvYmotJChDT05GSUdfTVQ3OTIxX0NPTU1PTikgKz0gbXQ3OTIxLWNvbW1vbi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfTVQ3OTIxRSkgKz0gbXQ3OTIxZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfTVQ3OTIxUykgKz0gbXQ3OTIxcy5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTVQ3OTIxVSkgKz0gbXQ3OTIxdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvTWFrZWZpbGUtNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9NYWtlZmlsZTo4Om10NzkyMS1jb21tb24teSA6PSBtYWMubyBtY3UubyByZWdkLm8gbWFpbi5vIGluaXQubyBkZWJ1Z2ZzLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9NYWtlZmlsZTo5Om10NzkyMS1jb21tb24tJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL01ha2VmaWxlOjEwOm10NzkyMWUteSA6PSBwY2kubyBwY2lfbWFjLm8gcGNpX21jdS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvTWFrZWZpbGU6MTE6bXQ3OTIxcy15IDo9IHNkaW8ubyBzZGlvX21hYy5vIHNkaW9fbWN1Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9NYWtlZmlsZToxMjptdDc5MjF1LXkgOj0gdXNiLm9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0zLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzo0OiNpbmNsdWRlIFxcXCJtdDc5MjEuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9Nj1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjc6bXQ3OTIxX3JlZ19zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MTg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxOTptdDc5MjFfcmVnX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzozMDpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19yZWd2YWwsIG10NzkyMV9yZWdfZ2V0LCBtdDc5MjFfcmVnX3NldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMzEtXFx0XFx0XFx0IFxcXCIweCUwOGxseFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTMyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MzM6bXQ3OTIxX2Z3X2RlYnVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0zNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMzktXFx0ZGV2LVxcdTAwM2Vmd19kZWJ1ZyA9ICh1OCl2YWw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjQwOlxcdG10NzkyMV9tY3VfZndfbG9nXzJfaG9zdChkZXYsIGRldi1cXHUwMDNlZndfZGVidWcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy00MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz00Nz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjQ4Om10NzkyMV9md19kZWJ1Z19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTQ5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy01Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6NTc6REVGSU5FX0RFQlVHRlNfQVRUUklCVVRFKGZvcHNfZndfZGVidWcsIG10NzkyMV9md19kZWJ1Z19nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjU4OlxcdFxcdFxcdCBtdDc5MjFfZndfZGVidWdfc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTU5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTYyPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjYzOm10NzkyMV9zZXFfcHV0c19hcnJheShzdHJ1Y3Qgc2VxX2ZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKnN0cixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtNjQtXFx0XFx0ICAgICAgczggKnZhbCwgaW50IGxlbilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy03Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6Nzc6I2RlZmluZSBtdDc5MjFfcHJpbnRfdHhwd3JfZW50cnkocHJlZml4LCByYXRlKVxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtNzgtKHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjc5OlxcdG10NzkyMV9zZXFfcHV0c19hcnJheShzLCAjcHJlZml4IFxcXCIgKHVzZXIpXFxcIixcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTgwLVxcdFxcdFxcdCAgICAgIHR4cHdyLmRhdGFbVFhQV1JfVVNFUl0ucmF0ZSxcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTgxLVxcdFxcdFxcdCAgICAgIEFSUkFZX1NJWkUodHhwd3IuZGF0YVtUWFBXUl9VU0VSXS5yYXRlKSk7IFxcXFxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6ODI6XFx0bXQ3OTIxX3NlcV9wdXRzX2FycmF5KHMsICNwcmVmaXggXFxcIiAoZWVwcm9tKVxcXCIsXFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy04My1cXHRcXHRcXHQgICAgICB0eHB3ci5kYXRhW1RYUFdSX0VFUFJPTV0ucmF0ZSxcXHRcXHRcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTg0LVxcdFxcdFxcdCAgICAgIEFSUkFZX1NJWkUodHhwd3IuZGF0YVtUWFBXUl9FRVBST01dLnJhdGUpKTsgXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzo4NTpcXHRtdDc5MjFfc2VxX3B1dHNfYXJyYXkocywgI3ByZWZpeCBcXFwiICh0bWFjKVxcXCIsXFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy04Ni1cXHRcXHRcXHQgICAgICB0eHB3ci5kYXRhW1RYUFdSX01BQ10ucmF0ZSxcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9OTA9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzo5MTptdDc5MjFfdHhwd3Ioc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy05Mi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTkzLVxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBkZXZfZ2V0X2RydmRhdGEocy1cXHUwMDNlcHJpdmF0ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjk0OlxcdHN0cnVjdCBtdDc5MjFfdHhwd3IgdHhwd3I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTk1LVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtOTctXFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6OTg6XFx0cmV0ID0gbXQ3OTIxX2dldF90eHB3cl9pbmZvKGRldiwgXFx1MDAyNnR4cHdyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtOTktXFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xMDYtXFx0XFx0ICAgXFxcIiBcXFwiLCBcXFwiMW1cXFwiLCBcXFwiMm1cXFwiLCBcXFwiNW1cXFwiLCBcXFwiMTFtXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjEwNzpcXHRtdDc5MjFfcHJpbnRfdHhwd3JfZW50cnkoQ0NLLCBjY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xMDgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTExLVxcdFxcdCAgIFxcXCI0OG1cXFwiLCBcXFwiNTRtXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjExMjpcXHRtdDc5MjFfcHJpbnRfdHhwd3JfZW50cnkoT0ZETSwgb2ZkbSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTExMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xMTYtXFx0XFx0ICAgXFxcIm1jczZcXFwiLCBcXFwibWNzN1xcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxMTc6XFx0bXQ3OTIxX3ByaW50X3R4cHdyX2VudHJ5KEhUMjAsIGh0MjApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xMTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTIxLVxcdFxcdCAgIFxcXCJtY3M2XFxcIiwgXFxcIm1jczdcXFwiLCBcXFwibWNzMzJcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTIyOlxcdG10NzkyMV9wcmludF90eHB3cl9lbnRyeShIVDQwLCBodDQwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTIzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTEyNi1cXHRcXHQgICBcXFwibWNzNlxcXCIsIFxcXCJtY3M3XFxcIiwgXFxcIm1jczhcXFwiLCBcXFwibWNzOVxcXCIsIFxcXCJtY3MxMFxcXCIsIFxcXCJtY3MxMVxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxMjc6XFx0bXQ3OTIxX3ByaW50X3R4cHdyX2VudHJ5KFZIVDIwLCB2aHQyMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjEyODpcXHRtdDc5MjFfcHJpbnRfdHhwd3JfZW50cnkoVkhUNDAsIHZodDQwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTI5OlxcdG10NzkyMV9wcmludF90eHB3cl9lbnRyeShWSFQ4MCwgdmh0ODApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxMzA6XFx0bXQ3OTIxX3ByaW50X3R4cHdyX2VudHJ5KFZIVDE2MCwgdmh0MTYwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTMxOlxcdG10NzkyMV9wcmludF90eHB3cl9lbnRyeShIRTI2LCBoZTI2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTMyOlxcdG10NzkyMV9wcmludF90eHB3cl9lbnRyeShIRTUyLCBoZTUyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTMzOlxcdG10NzkyMV9wcmludF90eHB3cl9lbnRyeShIRTEwNiwgaGUxMDYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxMzQ6XFx0bXQ3OTIxX3ByaW50X3R4cHdyX2VudHJ5KEhFMjQyLCBoZTI0Mik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjEzNTpcXHRtdDc5MjFfcHJpbnRfdHhwd3JfZW50cnkoSEU0ODQsIGhlNDg0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTM2OlxcdG10NzkyMV9wcmludF90eHB3cl9lbnRyeShIRTk5NiwgaGU5OTYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxMzc6XFx0bXQ3OTIxX3ByaW50X3R4cHdyX2VudHJ5KEhFOTk2eDIsIGhlOTk2eDIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xMzgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MTQyPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MTQzOm10NzkyMV9wbV9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTQ0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xNjYtXFx0cG0tXFx1MDAzZWVuYWJsZV91c2VyID0gdmFsO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxNjc6XFx0bXQ3OTIxX3NldF9ydW50aW1lX3BtKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTE2OC1cXHRtdDc2X2Nvbm5hY19wb3dlcl9zYXZlX3NjaGVkKFxcdTAwMjZkZXYtXFx1MDAzZW1waHksIHBtKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0xNzU9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoxNzY6bXQ3OTIxX3BtX2dldCh2b2lkICpkYXRhLCB1NjQgKnZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTc3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjE4NTpERUZJTkVfREVCVUdGU19BVFRSSUJVVEUoZm9wc19wbSwgbXQ3OTIxX3BtX2dldCwgbXQ3OTIxX3BtX3NldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0xODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTE4Nz1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjE4ODptdDc5MjFfZGVlcF9zbGVlcF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMTg5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0yMTE9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyMTI6bXQ3OTIxX2RlZXBfc2xlZXBfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjIxOkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX2RzLCBtdDc5MjFfZGVlcF9zbGVlcF9nZXQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjIyMjpcXHRcXHRcXHQgbXQ3OTIxX2RlZXBfc2xlZXBfc2V0LCBcXFwiJWxsZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM9MjI0PURFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3BtX2lkbGVfdGltZW91dCwgbXQ3OTJ4X3BtX2lkbGVfdGltZW91dF9nZXQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjI2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYzoyMjc6c3RhdGljIGludCBtdDc5MjFfY2hpcF9yZXNldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMjgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjQ4OkRFRklORV9ERUJVR0ZTX0FUVFJJQlVURShmb3BzX3Jlc2V0LCBOVUxMLCBtdDc5MjFfY2hpcF9yZXNldCwgXFxcIiVsbGRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTI1MD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI1MTptdDc5MjFzX3NjaGVkX3F1b3RhX3JlYWQoc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yNTIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI2My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjY0OmludCBtdDc5MjFfaW5pdF9kZWJ1Z2ZzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTI2NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjc5LVxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwidHhwb3dlcl9za3VcXFwiLCBkaXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI4MDpcXHRcXHRcXHRcXHQgICAgbXQ3OTIxX3R4cHdyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjgxLVxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInR4X3N0YXRzXFxcIiwgMDQwMCwgZGlyLCBkZXYsIFxcdTAwMjZtdDc5MnhfdHhfc3RhdHNfZm9wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjkxLVxcdFxcdGRlYnVnZnNfY3JlYXRlX2Rldm1fc2VxZmlsZShkZXYtXFx1MDAzZW10NzYuZGV2LCBcXFwic2NoZWQtcXVvdGFcXFwiLCBkaXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjI5MjpcXHRcXHRcXHRcXHRcXHQgICAgbXQ3OTIxc19zY2hlZF9xdW90YV9yZWFkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjkzLVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTgtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Zpcm13YXJlLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjk6I2luY2x1ZGUgXFxcIm10NzkyMS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xMC0jaW5jbHVkZSBcXFwiLi4vbXQ3Nl9jb25uYWMyX21hYy5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxNDpzdGF0aWMgc3NpemVfdCBtdDc5MjFfdGhlcm1hbF90ZW1wX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xNS1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0yNC1cXHRcXHRtdDc5MnhfbXV0ZXhfYWNxdWlyZShtZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MjU6XFx0XFx0dGVtcGVyYXR1cmUgPSBtdDc5MjFfbWN1X2dldF90ZW1wZXJhdHVyZShwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0yNi1cXHRcXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShtZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0zNi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjM3OnN0YXRpYyBTRU5TT1JfREVWSUNFX0FUVFJfUk8odGVtcDFfaW5wdXQsIG10NzkyMV90aGVybWFsX3RlbXAsIDApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0zOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6Mzk6c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKm10NzkyMV9od21vbl9hdHRyc1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy00MC1cXHRcXHUwMDI2c2Vuc29yX2Rldl9hdHRyX3RlbXAxX2lucHV0LmRldl9hdHRyLmF0dHIsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtNDItfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6NDM6QVRUUklCVVRFX0dST1VQUyhtdDc5MjFfaHdtb24pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy00NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6NDU6c3RhdGljIGludCBtdDc5MjFfdGhlcm1hbF9pbml0KHN0cnVjdCBtdDc5MnhfcGh5ICpwaHkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy01My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6NTQ6XFx0bmFtZSA9IGRldm1fa2FzcHJpbnRmKFxcdTAwMjZ3aXBoeS1cXHUwMDNlZGV2LCBHRlBfS0VSTkVMLCBcXFwibXQ3OTIxXyVzXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtNTUtXFx0XFx0XFx0ICAgICAgd2lwaHlfbmFtZSh3aXBoeSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTU5LVxcdGh3bW9uID0gZGV2bV9od21vbl9kZXZpY2VfcmVnaXN0ZXJfd2l0aF9ncm91cHMoXFx1MDAyNndpcGh5LVxcdTAwM2VkZXYsIG5hbWUsIHBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6NjA6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIG10NzkyMV9od21vbl9ncm91cHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy02MS1cXHRyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGh3bW9uKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy02My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6NjQ6aW50IG10NzkyMV9tYWNfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy02NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtNzQtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIE1UNzkyeF9XVEJMX1NJWkU7IGkrKylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6NzU6XFx0XFx0bXQ3OTIxX21hY193dGJsX3VwZGF0ZShkZXYsIGksXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTc2LVxcdFxcdFxcdFxcdCAgICAgICBNVF9XVEJMX1VQREFURV9BRE1fQ09VTlRfQ0xFQVIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTgxLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6ODI6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX21hY19pbml0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjg0OnN0YXRpYyBpbnQgX19tdDc5MjFfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy04NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtOTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjEwMDpcXHRyZXQgPSBtdDc5MjFfbWN1X3NldF9lZXByb20oZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTAxLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxMDQ6XFx0cmV0ID0gbXQ3OTIxX21hY19pbml0KGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEwNS1vdXQ6XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxMDk6c3RhdGljIGludCBtdDc5MjFfaW5pdF9oYXJkd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xMTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTExNS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgTVQ3OTJ4X01DVV9JTklUX1JFVFJZX0NPVU5UOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTE2OlxcdFxcdHJldCA9IF9fbXQ3OTIxX2luaXRfaGFyZHdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTE3LVxcdFxcdGlmICghcmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTMxOnN0YXRpYyB2b2lkIG10NzkyMV9pbml0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xMzIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEzNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTM3OlxcdHJldCA9IG10NzkyMV9pbml0X2hhcmR3YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTEzOC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE0MS1cXHRtdDc2X3NldF9zdHJlYW1fY2FwcyhcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LCB0cnVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTQyOlxcdG10NzkyMV9zZXRfc3RyZWFtX2hlX2NhcHMoXFx1MDAyNmRldi1cXHUwMDNlcGh5KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTQzLVxcdG10NzkyeF9jb25maWdfbWFjX2FkZHJfbGlzdChkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTUyOlxcdHJldCA9IG10NzkyMV9pbml0X2RlYnVnZnMoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTUzLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjE1ODpcXHRyZXQgPSBtdDc5MjFfdGhlcm1hbF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZXBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE1OS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxNzA6aW50IG10NzkyMV9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTcxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xODktXFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlbXBoeS5tYWNfd29yaywgbXQ3OTJ4X21hY193b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MTkwOlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXBoeS5zY2FuX3dvcmssIG10NzkyMV9zY2FuX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxOTE6XFx0SU5JVF9ERUxBWUVEX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlY29yZWR1bXAud29yaywgbXQ3OTIxX2NvcmVkdW1wX3dvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYy0xOTItI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjE5MzpcXHRJTklUX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlaXB2Nl9uc193b3JrLCBtdDc5MjFfc2V0X2lwdjZfbnNfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTE5NC1cXHRza2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZkZXYtXFx1MDAzZWlwdjZfbnNfbGlzdCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMTk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoxOTk6XFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXJlc2V0X3dvcmssIG10NzkyMV9tYWNfcmVzZXRfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjIwMDpcXHRJTklUX1dPUksoXFx1MDAyNmRldi1cXHUwMDNlaW5pdF93b3JrLCBtdDc5MjFfaW5pdF93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjAxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2luaXQuYzoyMDI6XFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXBoeS5yb2Nfd29yaywgbXQ3OTIxX3JvY193b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmMtMjAzLVxcdHRpbWVyX3NldHVwKFxcdTAwMjZkZXYtXFx1MDAzZXBoeS5yb2NfdGltZXIsIG10NzkyeF9yb2NfdGltZXIsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9pbml0LmM6MjMxOlxcdGh3LVxcdTAwM2V3aXBoeS1cXHUwMDNlcmVnX25vdGlmaWVyID0gbXQ3OTIxX3JlZ2Rfbm90aWZpZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTIzMi1cXHRkZXYtXFx1MDAzZW1waHkuc2JhbmRfMmcuc2JhbmQuaHRfY2FwLmNhcCB8PVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jLTI1NS19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvaW5pdC5jOjI1NjpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjFfcmVnaXN0ZXJfZGV2aWNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTYtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3RpbWVrZWVwaW5nLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NzojaW5jbHVkZSBcXFwibXQ3OTIxLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtOC0jaW5jbHVkZSBcXFwiLi4vZG1hLmhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0xOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoxOTpib29sIG10NzkyMV9tYWNfd3RibF91cGRhdGUoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgaW50IGlkeCwgdTMyIG1hc2spXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6Mjg6c3RhdGljIHUzMiBtdDc5MjFfbWFjX3d0YmxfbG1hY19hZGRyKGludCBpZHgsIHU4IG9mZnNldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0yOS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0zMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzozMzpzdGF0aWMgdm9pZCBtdDc5MjFfbWFjX3N0YV9wb2xsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzItXFx0XFx0aWR4ID0gbWxpbmstXFx1MDAzZXdjaWQuaWR4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjczOlxcdFxcdGFkZHIgPSBtdDc5MjFfbWFjX3d0YmxfbG1hY19hZGRyKGlkeCwgTVRfV1RCTF9BQzBfQ1RUX09GRlNFVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy05MS1cXHRcXHRpZiAoY2xlYXIpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo5MjpcXHRcXHRcXHRtdDc5MjFfbWFjX3d0YmxfdXBkYXRlKGRldiwgaWR4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTkzLVxcdFxcdFxcdFxcdFxcdCAgICAgICBNVF9XVEJMX1VQREFURV9BRE1fQ09VTlRfQ0xFQVIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMTIwLVxcdFxcdHJhdGUgPSBcXHUwMDI2bWxpbmstXFx1MDAzZXdjaWQucmF0ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoxMjE6XFx0XFx0YWRkciA9IG10NzkyMV9tYWNfd3RibF9sbWFjX2FkZHIoaWR4LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTEyMi1cXHRcXHRcXHRcXHRcXHRcXHQgTVRfV1RCTF9UWFJYX0NBUF9SQVRFX09GRlNFVCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy0xNTItXFx0XFx0LyogZ2V0IHNpZ25hbCBzdHJlbmd0aCBvZiByZXNwIGZyYW1lcyAoQ1RTL0JBL0FDSykgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzoxNTM6XFx0XFx0YWRkciA9IG10NzkyMV9tYWNfd3RibF9sbWFjX2FkZHIoaWR4LCAzMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtMTU0LVxcdFxcdHZhbCA9IG10NzZfcnIoZGV2LCBhZGRyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTE2OD1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6MTY5Om10NzkyMV9tYWNfZmlsbF9yeChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTE3MC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy00NDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NDQ3OnZvaWQgbXQ3OTIxX21hY19hZGRfdHhzKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNDQ4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTQ4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo0ODU6c3RhdGljIHZvaWQgbXQ3OTIxX21hY190eF9mcmVlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYsIHZvaWQgKmRhdGEsIGludCBsZW4pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNDg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTU1NS1cXHRyY3VfcmVhZF9sb2NrKCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NTU2OlxcdG10NzkyMV9tYWNfc3RhX3BvbGwoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01NTctXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01NjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NTYyOmJvb2wgbXQ3OTIxX3J4X2NoZWNrKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgdm9pZCAqZGF0YSwgaW50IGxlbilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01NjMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNTc0LVxcdFxcdFxcdHJldHVybiBmYWxzZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo1NzU6XFx0XFx0bXQ3OTIxX21hY190eF9mcmVlKGRldiwgZGF0YSwgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01NzYtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNTc4LVxcdFxcdGZvciAocnhkICs9IDI7IHJ4ZCArIDggXFx1MDAzYz0gZW5kOyByeGQgKz0gOClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo1Nzk6XFx0XFx0XFx0bXQ3OTIxX21hY19hZGRfdHhzKGRldiwgcnhkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01ODAtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNTg0LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo1ODU6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX3J4X2NoZWNrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01ODYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NTg3OnZvaWQgbXQ3OTIxX3F1ZXVlX3J4X3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGVudW0gbXQ3Nl9yeHFfaWQgcSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy01ODgtXFx0XFx0XFx0IHN0cnVjdCBza19idWZmICpza2IsIHUzMiAqaW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTYwNy1cXHRcXHR9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NjA4OlxcdFxcdG10NzkyMV9tYWNfdHhfZnJlZShkZXYsIHNrYi1cXHUwMDNlZGF0YSwgc2tiLVxcdTAwM2VsZW4pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTYwOS1cXHRcXHRuYXBpX2NvbnN1bWVfc2tiKHNrYiwgMSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02MTEtXFx0Y2FzZSBQS1RfVFlQRV9SWF9FVkVOVDpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo2MTI6XFx0XFx0bXQ3OTIxX21jdV9yeF9ldmVudChkZXYsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjEzLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjE1LVxcdFxcdGZvciAocnhkICs9IDI7IHJ4ZCArIDggXFx1MDAzYz0gZW5kOyByeGQgKz0gOClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo2MTY6XFx0XFx0XFx0bXQ3OTIxX21hY19hZGRfdHhzKGRldiwgcnhkKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02MTctXFx0XFx0ZGV2X2tmcmVlX3NrYihza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjIwLVxcdGNhc2UgUEtUX1RZUEVfTk9STUFMOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjYyMTpcXHRcXHRpZiAoIW10NzkyMV9tYWNfZmlsbF9yeChkZXYsIHNrYikpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02MjItXFx0XFx0XFx0bXQ3Nl9yeChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2LCBxLCBza2IpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjMwLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo2MzE6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX3F1ZXVlX3J4X3NrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTYzMz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjYzNDptdDc5MjFfdmlmX2Nvbm5lY3RfaXRlcih2b2lkICpwcml2LCB1OCAqbWFjLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTYzNS1cXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjQ2LVxcdFxcdFxcdFxcdCAgICBcXHUwMDI2bXZpZi1cXHUwMDNlc3RhLmRlZmxpbmsud2NpZCwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NjQ3OlxcdG10NzkyMV9tY3Vfc2V0X3R4KGRldiwgdmlmKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02NDgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02NTEtXFx0XFx0XFx0XFx0XFx0ICAgIHRydWUsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjY1MjpcXHRcXHRtdDc5MjFfbWN1X3N0YV91cGRhdGUoZGV2LCBOVUxMLCB2aWYsIHRydWUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNjUzLVxcdFxcdFxcdFxcdCAgICAgIE1UNzZfU1RBX0lORk9fU1RBVEVfTk9ORSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NjU0OlxcdFxcdG10NzkyMV9tY3VfdW5pX2FkZF9iZWFjb25fb2ZmbG9hZChkZXYsIGh3LCB2aWYsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTY1NS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02NTgtLyogc3lzdGVtIGVycm9yIHJlY292ZXJ5ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6NjU5OnZvaWQgbXQ3OTIxX21hY19yZXNldF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy02NjAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzA4LVxcdFxcdFxcdFxcdFxcdCAgICBJRUVFODAyMTFfSUZBQ0VfSVRFUl9SRVNVTUVfQUxMLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjcwOTpcXHRcXHRcXHRcXHRcXHQgICAgbXQ3OTIxX3ZpZl9jb25uZWN0X2l0ZXIsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTcxMC1cXHRtdDc2X2Nvbm5hY19wb3dlcl9zYXZlX3NjaGVkKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYucGh5LCBwbSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzExLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjcxMjpcXHRtdDc5MjFfcmVnZF9jaGFuZ2UoXFx1MDAyNmRldi1cXHUwMDNlcGh5LCBcXFwiMDBcXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy03MTMtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTcxNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo3MTU6dm9pZCBtdDc5MjFfY29yZWR1bXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtNzE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTc2Mz1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjc2NDptdDc5MjFfdXNiX3NkaW9fd3JpdGVfdHh3aShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBzdHJ1Y3QgbXQ3Nl93Y2lkICp3Y2lkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc2NS1cXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo3NzY6aW50IG10NzkyMV91c2Jfc2Rpb190eF9wcmVwYXJlX3NrYihzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIHZvaWQgKnR4d2lfcHRyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc3Ny1cXHRcXHRcXHRcXHQgICBlbnVtIG10NzZfdHhxX2lkIHFpZCwgc3RydWN0IG10NzZfd2NpZCAqd2NpZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTgwNi1cXHRwa3RpZCA9IG10NzZfdHhfc3RhdHVzX3NrYl9hZGQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Niwgd2NpZCwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4MDc6XFx0bXQ3OTIxX3VzYl9zZGlvX3dyaXRlX3R4d2koZGV2LCB3Y2lkLCBxaWQsIHN0YSwga2V5LCBwa3RpZCwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04MDgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04MjEtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjgyMjpFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjFfdXNiX3NkaW9fdHhfcHJlcGFyZV9za2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTgyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4MjQ6dm9pZCBtdDc5MjFfdXNiX3NkaW9fdHhfY29tcGxldGVfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04MjUtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbXQ3Nl9xdWV1ZV9lbnRyeSAqZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTg0Mi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM6ODQzOkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyMV91c2Jfc2Rpb190eF9jb21wbGV0ZV9za2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTg0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4NDU6Ym9vbCBtdDc5MjFfdXNiX3NkaW9fdHhfc3RhdHVzX2RhdGEoc3RydWN0IG10NzZfZGV2ICptZGV2LCB1OCAqdXBkYXRlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTg0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NDktXFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4NTA6XFx0bXQ3OTIxX21hY19zdGFfcG9sbChkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTg1MS1cXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODU0LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo4NTU6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX3VzYl9zZGlvX3R4X3N0YXR1c19kYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmMtODU3LSNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjg1ODp2b2lkIG10NzkyMV9zZXRfaXB2Nl9uc193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy04NTkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTgtI2luY2x1ZGUgXFx1MDAzY25ldC9pcHY2LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjk6I2luY2x1ZGUgXFxcIm10NzkyMS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0xMC0jaW5jbHVkZSBcXFwicmVnZC5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jPTEzPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MTQ6bXQ3OTIxX2luaXRfaGVfY2FwcyhzdHJ1Y3QgbXQ3OTJ4X3BoeSAqcGh5LCBlbnVtIG5sODAyMTFfYmFuZCBiYW5kLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0xNS1cXHRcXHQgICAgc3RydWN0IGllZWU4MDIxMV9zYmFuZF9pZnR5cGVfZGF0YSAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0xOTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjE5Njp2b2lkIG10NzkyMV9zZXRfc3RyZWFtX2hlX2NhcHMoc3RydWN0IG10NzkyeF9waHkgKnBoeSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMTk3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yMDMtXFx0XFx0ZGF0YSA9IHBoeS1cXHUwMDNlaWZ0eXBlW05MODAyMTFfQkFORF8yR0haXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjA0OlxcdFxcdG4gPSBtdDc5MjFfaW5pdF9oZV9jYXBzKHBoeSwgTkw4MDIxMV9CQU5EXzJHSFosIGRhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yMDUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjExLVxcdFxcdGRhdGEgPSBwaHktXFx1MDAzZWlmdHlwZVtOTDgwMjExX0JBTkRfNUdIWl07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjIxMjpcXHRcXHRuID0gbXQ3OTIxX2luaXRfaGVfY2FwcyhwaHksIE5MODAyMTFfQkFORF81R0haLCBkYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjEzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTIxOC1cXHRcXHRcXHRkYXRhID0gcGh5LVxcdTAwM2VpZnR5cGVbTkw4MDIxMV9CQU5EXzZHSFpdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzoyMTk6XFx0XFx0XFx0biA9IG10NzkyMV9pbml0X2hlX2NhcHMocGh5LCBOTDgwMjExX0JBTkRfNkdIWiwgZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTIyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjIyNzppbnQgX19tdDc5MjFfc3RhcnQoc3RydWN0IG10NzkyeF9waHkgKnBoeSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI0MDpcXHRlcnIgPSBtdDc5MjFfbWN1X3NldF9jaGFuX2luZm8ocGh5LCBNQ1VfRVhUX0NNRChTRVRfUlhfUEFUSCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNDEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI0NDpcXHRlcnIgPSBtdDc5MjFfc2V0X3R4X3Nhcl9wd3IobXBoeS1cXHUwMDNlaHcsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNDUtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yNTMtXFx0aWYgKG10NzZfaXNfbW1pbyhtcGh5LVxcdTAwM2VkZXYpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjI1NDpcXHRcXHRlcnIgPSBtdDc5MjFfbWN1X3JhZGlvX2xlZF9jdHJsKHBoeS1cXHUwMDNlZGV2LCBFWFRfQ01EX1JBRElPX0xFRF9DVFJMX0VOQUJMRSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI1NS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjU4OlxcdFxcdGVyciA9IG10NzkyMV9tY3VfcmFkaW9fbGVkX2N0cmwocGh5LVxcdTAwM2VkZXYsIEVYVF9DTURfUkFESU9fT05fTEVEKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjU5LVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjYzLVxcdGlmIChwaHktXFx1MDAzZWNoaXBfY2FwIFxcdTAwMjYgTVQ3OTJ4X0NISVBfQ0FQX1dGX1JGX1BJTl9DVFJMX0VWVF9FTikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzoyNjQ6XFx0XFx0bXQ3OTIxX21jdV93Zl9yZl9waW5fY3RybChwaHksIFdGX1JGX1BJTl9JTklUKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjY1LVxcdFxcdHdpcGh5X3Jma2lsbF9zdGFydF9wb2xsaW5nKG1waHktXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjY5LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjcwOkVYUE9SVF9TWU1CT0xfR1BMKF9fbXQ3OTIxX3N0YXJ0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjcxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzoyNzI6c3RhdGljIGludCBtdDc5MjFfc3RhcnQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI3My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjc3LVxcdG10NzkyeF9tdXRleF9hY3F1aXJlKHBoeS1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6Mjc4OlxcdGVyciA9IF9fbXQ3OTIxX3N0YXJ0KHBoeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTI3OS1cXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShwaHktXFx1MDAzZWRldik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjgzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzoyODQ6c3RhdGljIHZvaWQgbXQ3OTIxX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIGJvb2wgc3VzcGVuZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMjg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yOTAtXFx0XFx0bXQ3OTJ4X211dGV4X2FjcXVpcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MjkxOlxcdFxcdGVyciA9IG10NzkyMV9tY3VfcmFkaW9fbGVkX2N0cmwoZGV2LCBFWFRfQ01EX1JBRElPX09GRl9MRUQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0yOTItXFx0XFx0bXQ3OTJ4X211dGV4X3JlbGVhc2UoZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYz0zMDA9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozMDE6bXQ3OTIxX2FkZF9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTMwMi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzM4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozMzk6XFx0bXQ3OTIxX21hY193dGJsX3VwZGF0ZShkZXYsIGlkeCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzQwLVxcdFxcdFxcdCAgICAgICBNVF9XVEJMX1VQREFURV9BRE1fQ09VTlRfQ0xFQVIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzU0OlxcdElOSVRfV09SSyhcXHUwMDI2bXZpZi1cXHUwMDNlY3NhX3dvcmssIG10NzkyMV9jc2Ffd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM1NS1cXHR0aW1lcl9zZXR1cChcXHUwMDI2bXZpZi1cXHUwMDNlY3NhX3RpbWVyLCBtdDc5MnhfY3NhX3RpbWVyLCAwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zNjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjM2MjpzdGF0aWMgdm9pZCBtdDc5MjFfcm9jX2l0ZXIodm9pZCAqcHJpdiwgdTggKm1hYyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtMzYzLVxcdFxcdFxcdCAgICBzdHJ1Y3QgaWVlZTgwMjExX3ZpZiAqdmlmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmM6MzY4OlxcdG10NzkyMV9tY3VfYWJvcnRfcm9jKHBoeSwgbXZpZiwgcGh5LVxcdTAwM2Vyb2NfdG9rZW5faWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zNjktfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjM3MTp2b2lkIG10NzkyMV9yb2NfYWJvcnRfc3luYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zNzIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTM4Mi1cXHRcXHRcXHRcXHQgICAgIElFRUU4MDIxMV9JRkFDRV9JVEVSX1JFU1VNRV9BTEwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjM4MzpcXHRcXHRcXHRcXHQgICAgIG10NzkyMV9yb2NfaXRlciwgKHZvaWQgKilwaHkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy0zODQtfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzozODU6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX3JvY19hYm9ydF9zeW5jKTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTg6Mzk6NTEuNDgwODE1MjQzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkyODU3NjE1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBNVDc5MjFFIERyaXZlcjogQSBVU0ItQmFzZWQgQXBwcm9hY2gqKlxuXG5Pa2F5LCBzbyB0aGUgYG10NzkyMWVgIGRyaXZlciBzdXBwb3J0cyBQQ0ksIFNESU8sIGFuZCBVU0IsIHdoaWNoIGlzIGdvb2QgbmV3cy4gSSdtIGZvY3VzaW5nIG9uIHRoZSBVU0IgZHJpdmVyLCBgbXQ3OTIxdWAsIGJlY2F1c2UgdGhhdCBvcGVucyB1cCBzb21lIGludGVyZXN0aW5nIGZ1enppbmcgcG9zc2liaWxpdGllcy4gVGhpbmtpbmcgcHJhY3RpY2FsbHksIHRoaXMgbWVhbnMgSSBjYW4gbGV2ZXJhZ2UgdGhlIFVTQiBnYWRnZXQgZnJhbWV3b3JrIOKAkyBzcGVjaWZpY2FsbHksIGEgZHVtbXkgSENEIOKAkyB0byBmdXp6IHRoaXMgdGhpbmcgd2l0aGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoYXQncyBhIG11Y2ggY2xlYW5lciBhbmQgbW9yZSBjb250cm9sbGVkIHNldHVwIHRoYW4gbWVzc2luZyB3aXRoIGFjdHVhbCBoYXJkd2FyZS5cblxuTm93LCB3aGVyZSdzIHRoZSBjb2RlPyBBaCwgaGVyZSBpdCBpcywgdGhlIHBhdGNoIEkgd2FzIGxvb2tpbmcgZm9yIGlzIGxvY2F0ZWQgd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuY2AuIEkgbmVlZCB0byBkaWcgaW50byB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIHNlZSBob3cgdGhlIGBtdDc5MjFfbG9hZF9jbGNgIGZ1bmN0aW9uIGdldHMgY2FsbGVkLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY29uZmlybSB3aGV0aGVyIGl0J3MgcmVhY2hhYmxlIGFuZCB0cmlnZ2VyZWQgZHVyaW5nIHN0YXJ0dXAuIEknbSBnb2luZyB0byBsb29rIGZvciB0aGUgZW50cnkgcG9pbnQuIExldCdzIHN0YXJ0IHRyYWNpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MTIzLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE4OjM5OjU2LjQwOTM5NTk1NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTIwMTkzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MjFfbG9hZF9jbGNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jPTQwMT1pbnQgbXQ3OTIxX21jdV91bmlfcnhfYmEoc3RydWN0IG10NzkyeF9kZXYgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTQxMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo0MTI6c3RhdGljIGludCBtdDc5MjFfbG9hZF9jbGMoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgY29uc3QgY2hhciAqZndfbmFtZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy00MTMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM9NjYyPWludCBtdDc5MjFfcnVuX2Zpcm13YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy02NzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6Njc0OlxcdGVyciA9IG10NzkyMV9sb2FkX2NsYyhkZXYsIG10NzkyeF9yYW1fbmFtZShkZXYpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy02NzUtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTg6Mzk6NTYuNDk0NjAyNTU2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI3MDIxNjIyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgRmlybXdhcmUgTG9hZGluZyBTZXF1ZW5jZSBpbiBNVDc5MjEqKlxuXG5Pa2F5LCBzbyBgbXQ3OTIxX2xvYWRfY2xjYCBpcyBkZWZpbml0ZWx5IGEga2V5IGZ1bmN0aW9uLCBhbmQgdGhlIGNvZGUgdGVsbHMgbWUgaXQgZ2V0cyBjYWxsZWQgZnJvbSBgbXQ3OTIxX3J1bl9maXJtd2FyZWAuIFRoYXQgc3VnZ2VzdHMgYSB2ZXJ5IHNwZWNpZmljIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMuIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlICpicm9hZGVyKiBjb250ZXh0LiBXaGVyZSBpcyBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgaXRzZWxmIGludm9rZWQ/IFRoYXQncyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAuIEJ5IHRyYWNpbmcgYmFjayB0byB0aGUgY2FsbGVycyBvZiBgbXQ3OTIxX3J1bl9maXJtd2FyZWAsIEkgY2FuIHBpZWNlIHRvZ2V0aGVyIHRoZSBjb21wbGV0ZSBmaXJtd2FyZSBsb2FkaW5nIGFuZCBpbml0aWFsaXphdGlvbiBmbG93LCB3aGljaCBpcyBwcm9iYWJseSBjcml0aWNhbCB0byBkaWFnbm9zaW5nIHNvbWUgaXNzdWUgb3IgdW5kZXJzdGFuZGluZyB0aGUgYm9vdCBzZXF1ZW5jZS4gS25vd2luZyB0aGUgY2FsbCBncmFwaCB3aWxsIHJlYWxseSBoZWxwIG1lIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IHN1YnN5c3RlbXMgYW5kIGRyaXZlcnMuIFRpbWUgdG8gZmlyZSB1cCBteSBkZWJ1Z2dlciBhbmQgc3RhcnQgZGlnZ2luZyB0aHJvdWdoIHRoZSBjYWxsIHNpdGVzIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTk1NSwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE4OjQwOjAwLjc2NDgyMjU2MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY2OTAwMzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibXQ3OTIxX3J1bl9maXJtd2FyZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM9NjQ5PWludCBtdDc5MjFfbWN1X2Z3X2xvZ18yX2hvc3Qoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggY3RybClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTY2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo2NjI6aW50IG10NzkyMV9ydW5fZmlybXdhcmUoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy02NjMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjgwLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzo2ODE6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTIxX3J1bl9maXJtd2FyZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtNjgyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbXQ3OTIxLmg9MjA2PXZvaWQgbXQ3OTIxX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL210NzkyMS5oOjIwNzppbnQgbXQ3OTIxX3J1bl9maXJtd2FyZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tdDc5MjEuaC0yMDgtaW50IG10NzkyMV9zZXRfY2hhbm5lbChzdHJ1Y3QgbXQ3Nl9waHkgKm1waHkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21hYy5jPTU2PWludCBtdDc5MjFlX21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpX21hYy5jLTEwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWFjLmM6MTA3OlxcdGVyciA9IG10NzkyMV9ydW5fZmlybXdhcmUoZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWFjLmMtMTA4LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWN1LmM9NDE9aW50IG10NzkyMWVfbWN1X2luaXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tY3UuYy01Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2lfbWN1LmM6NTg6XFx0ZXJyID0gbXQ3OTIxX3J1bl9maXJtd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaV9tY3UuYy01OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWFjLmM9MTQ3PWludCBtdDc5MjFzX21hY19yZXNldChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tYWMuYy0xODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpb19tYWMuYzoxODE6XFx0ZXJyID0gbXQ3OTIxX3J1bl9maXJtd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWFjLmMtMTgyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21jdS5jPTc0PWludCBtdDc5MjFzX21jdV9pbml0KHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvX21jdS5jLTkwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWN1LmM6OTE6XFx0cmV0ID0gbXQ3OTIxX3J1bl9maXJtd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW9fbWN1LmMtOTItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTY1PXN0YXRpYyBpbnQgbXQ3OTIxdV9tY3VfaW5pdChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtNzgtXFx0bXQ3Nl9zZXQoZGV2LCBNVF9VRE1BX1RYX1FTRUwsIE1UX0ZXX0RMX0VOKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzo3OTpcXHRyZXQgPSBtdDc5MjFfcnVuX2Zpcm13YXJlKGRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtODAtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTg5PXN0YXRpYyBpbnQgbXQ3OTIxdV9tYWNfcmVzZXQoc3RydWN0IG10NzkyeF9kZXYgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTEyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzoxMjc6XFx0ZXJyID0gbXQ3OTIxX3J1bl9maXJtd2FyZShkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTEyOC1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxODo0MDowMC44NzE1MTg2MzVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDkzNjc0MTIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgQ29kZSBQYXRoKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYG10NzkyMXVfbWN1X2luaXRgIGZ1bmN0aW9uLCBjYWxsZWQgZnJvbSBgdXNiLmNgLiBUaGUgZmFjdCB0aGF0IGl0J3MgY29ubmVjdGVkIHRvIFVTQiBpcyBpbW1lZGlhdGVseSBpbnRlcmVzdGluZywgZXNwZWNpYWxseSBjb25zaWRlcmluZyBwb3RlbnRpYWwgYXR0YWNrIHZlY3RvcnMuIFRoaXMgb3BlbnMgdXAgcG9zc2liaWxpdGllcyBmb3IgVVNCIGdhZGdldCBmdXp6aW5nLCB3aGljaCBtZWFucyB0aGUgZXhwb3N1cmUgaXMgc29tZXRoaW5nIEkgbmVlZCB0byBrZWVwIGluIG1pbmQuIFRoZSBjcnV4IG9mIHRoaXMgY2hhbmdlIHNlZW1zIHRvIHJldm9sdmUgYXJvdW5kIGhvdyBDTEMgcmVjb3JkcyBhcmUgcGFyc2VkIHdpdGhpbiBgbXQ3OTIxX2xvYWRfY2xjYCwgc28gSSBzaG91bGQgcHJvYmFibHkgc3RhcnQgdGhlcmUuIExldCdzIGhlYWQgb3ZlciB0byBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNgIGFuZCBkaWcgaW50byBgbXQ3OTIxX2xvYWRfY2xjYCBmdW5jdGlvbiBpdHNlbGYsIHRvIGZpZ3VyZSBvdXQgd2hhdCdzIGdvaW5nIG9uIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTczNywiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxODo0MDowNS45NjUxOTU4MDlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgyNjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ2MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ2MDpcXHRcXHRcXHQvKiBjaGVjayBpZiB3ZSBoYXZlIHZhbGlkIGJ1ZmZlciBzaXplICovXFxuIDQ2MTpcXHRcXHRcXHRpZiAobGVuIFxcdTAwM2UgZndfZGF0YV9sZW4gLSBvZmZzZXQpIHtcXG4gNDYyOlxcdFxcdFxcdFxcdGRldl9lcnIobWRldi1cXHUwMDNlZGV2LCBcXFwiSW52YWxpZCBmaXJtd2FyZSByZWdpb25cXFxcblxcXCIpO1xcbiA0NjM6XFx0XFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4gNDY0OlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbiA0NjU6XFx0XFx0XFx0fVxcbiA0NjY6XFx0XFxuIDQ2NzpcXHRcXHRcXHRpZiAoKHJlZ2lvbi1cXHUwMDNlZmVhdHVyZV9zZXQgXFx1MDAyNiBGV19GRUFUVVJFX05PTl9ETCkgXFx1MDAyNlxcdTAwMjZcXG4gNDY4OlxcdFxcdFxcdCAgICByZWdpb24tXFx1MDAzZXR5cGUgPT0gRldfVFlQRV9DTEMpIHtcXG4gNDY5OlxcdFxcdFxcdFxcdGNsY19iYXNlID0gKHU4ICopKGZ3LVxcdTAwM2VkYXRhICsgb2Zmc2V0KTtcXG4gNDcwOlxcdFxcdFxcdFxcdGJyZWFrO1xcbiA0NzE6XFx0XFx0XFx0fVxcbiA0NzI6XFx0XFx0XFx0b2Zmc2V0ICs9IGxlbjtcXG4gNDczOlxcdFxcdH1cXG4gNDc0OlxcdFxcbiA0NzU6XFx0XFx0aWYgKCFjbGNfYmFzZSlcXG4gNDc2OlxcdFxcdFxcdGdvdG8gb3V0O1xcbiA0Nzc6XFx0XFxuIDQ3ODpcXHRcXHRmb3IgKG9mZnNldCA9IDA7IG9mZnNldCBcXHUwMDNjIGxlbjsgb2Zmc2V0ICs9IGNsY19sZW4pIHtcXG4gNDc5OlxcdFxcdFxcdGlmIChsZW4gLSBvZmZzZXQgXFx1MDAzYyBzaXplb2YoKmNsYykpIHtcXG4gNDgwOlxcdFxcdFxcdFxcdGRldl9lcnIobWRldi1cXHUwMDNlZGV2LCBcXFwiSW52YWxpZCBDTEMgcmVjb3JkXFxcXG5cXFwiKTtcXG4gNDgxOlxcdFxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuIDQ4MjpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4gNDgzOlxcdFxcdFxcdH1cXG4gNDg0OlxcdFxcbiA0ODU6XFx0XFx0XFx0Y2xjID0gKGNvbnN0IHN0cnVjdCBtdDc5MjFfY2xjICopKGNsY19iYXNlICsgb2Zmc2V0KTtcXG4gNDg2OlxcdFxcdFxcdGNsY19sZW4gPSBsZTMyX3RvX2NwdShjbGMtXFx1MDAzZWxlbik7XFxuIDQ4NzpcXHRcXHRcXHRpZiAoY2xjX2xlbiBcXHUwMDNjIHNpemVvZigqY2xjKSB8fCBjbGNfbGVuIFxcdTAwM2UgbGVuIC0gb2Zmc2V0KSB7XFxuIDQ4ODpcXHRcXHRcXHRcXHRkZXZfZXJyKG1kZXYtXFx1MDAzZWRldiwgXFxcIkludmFsaWQgQ0xDIHJlY29yZFxcXFxuXFxcIik7XFxuIDQ4OTpcXHRcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbiA0OTA6XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuIDQ5MTpcXHRcXHRcXHR9XFxuIDQ5MjpcXHRcXG4gNDkzOlxcdFxcdFxcdC8qIE5ld2VyIGZpcm13YXJlIG1heSBhZGQgcmVjb3JkcyB0aGlzIGRyaXZlciBkb2VzIG5vdCB1c2UgeWV0ICovXFxuIDQ5NDpcXHRcXHRcXHRpZiAoY2xjLVxcdTAwM2VpZHggXFx1MDAzZT0gQVJSQVlfU0laRShwaHktXFx1MDAzZWNsYykpXFxuIDQ5NTpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gNDk2OlxcdFxcbiA0OTc6XFx0XFx0XFx0LyogZG8gbm90IGluaXQgYnVmIGFnYWluIGlmIGNoaXAgcmVzZXQgdHJpZ2dlcmVkICovXFxuIDQ5ODpcXHRcXHRcXHRpZiAocGh5LVxcdTAwM2VjbGNbY2xjLVxcdTAwM2VpZHhdKVxcbiA0OTk6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIDUwMDpcXHRcXG4gNTAxOlxcdFxcdFxcdC8qIGhlYWRlciBjb250ZW50IHNhbml0eSAqL1xcbiA1MDI6XFx0XFx0XFx0aWYgKGNsYy1cXHUwMDNlaWR4ID09IE1UNzkyMV9DTENfUE9XRVIgXFx1MDAyNlxcdTAwMjZcXG4gNTAzOlxcdFxcdFxcdCAgICB1OF9nZXRfYml0cyhjbGMtXFx1MDAzZXR5cGUsIE1UX0VFX0hXX1RZUEVfRU5DQVApICE9IGh3X2VuY2FwKVxcbiA1MDQ6XFx0XFx0XFx0XFx0Y29udGludWU7XFxuIDUwNTpcXHRcXG4gNTA2OlxcdFxcdFxcdHBoeS1cXHUwMDNlY2xjW2NsYy1cXHUwMDNlaWR4XSA9IGRldm1fa21lbWR1cChtZGV2LVxcdTAwM2VkZXYsIGNsYyxcXG4gNTA3OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgY2xjX2xlbixcXG4gNTA4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgR0ZQX0tFUk5FTCk7XFxuIDUwOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTg6NDA6MDUuOTY1MzgxODg5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3NzU2OTE2MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoaXMgRmlybXdhcmUgUGFyc2luZyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWJvdXQgaG93IHdlIHBhcnNlIGZpcm13YXJlIHJlY29yZHMuIFNwZWNpZmljYWxseSwgaXQncyBkZWFsaW5nIHdpdGggZmlybXdhcmUgZmlsZXMgdGhhdCBhcmUgbG9hZGVkIGZyb20gdGhlIGZpbGVzeXN0ZW0gdXNpbmcgYHJlcXVlc3RfZmlybXdhcmVgLiBUaGUgZmlyc3QgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcywgY2FuIHN5emthbGxlciBldmVuIHRvdWNoIGZpcm13YXJlIGZpbGVzPyBPaCByaWdodCwgaXQgY2FuLCB1c2luZyBgc3l6X21vdW50X2ltYWdlYCwgcm9vdGZzIG1vZGlmaWNhdGlvbnMsIG9yIGV2ZW4gdGhlIGZpcm13YXJlIGxvYWRlciBmYWxsYmFjay5cblxuQnV0LCBob2xkIG9uLiBJcyBzeXprYWxsZXIgZnV6emluZyB0aGUgZmlybXdhcmUgZGlyZWN0bHksIG9yIGp1c3QgdGhlIGNvZGUgdGhhdCAqdXNlcyogdGhlIGZpcm13YXJlPyBUeXBpY2FsbHksIGl0J3MgZm9jdXNlZCBvbiBzeXNjYWxscyBhbmQgdGhpbmdzIGxpa2UgVVNCL1BDSS4gRmlybXdhcmUgbG9hZGluZyBpcyB1c3VhbGx5IHNvbWV0aGluZyB0aGF0IGhhcHBlbnMgZnJvbSB0aGUgaG9zdCBmaWxlc3lzdGVtLiBIb3dldmVyLCBpdCAqY2FuKiBpbnRlcmNlcHQgZmlybXdhcmUgbG9hZGluZyBpZiBgcmVxdWVzdF9maXJtd2FyZWAgaXMgaW52b2x2ZWQgYW5kIHRoZSBmYWxsYmFjayBvciBjdXN0b20gZmlsZXN5c3RlbSBtZWNoYW5pc21zIGFyZSBpbiBwbGF5LlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBJcyB0aGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGFuZCBpcyBpdCB3b3J0aCB0aGUgZWZmb3J0IHRvIGZ1enogaXQ/IFRoZSBwYXRjaCBzZWVtcyB0byBiZSBhZGRpbmcgYSBgZGV2X2VycmAgY2FsbCBhbmQgbW9kaWZ5aW5nIHRoZSBlcnJvciBoYW5kbGluZyB3aGVuIGBjbGMtXHUwMDNlaWR4YCBnb2VzIG91dCBvZiBib3VuZHMuIFByZXZpb3VzbHksIGl0IHJldHVybmVkIGAtRUlOVkFMYC4gTm93LCBpdCBqdXN0IGBjb250aW51ZWBzLiBTbywgaXQncyBiYXNpY2FsbHkgYSBmaXggdG8gYWxsb3cgbmV3ZXIgZmlybXdhcmUgdG8gd29yayBvbiBvbGRlciBrZXJuZWxzLlxuXG5IbW0sIGJlY2F1c2UgdGhpcyBhZmZlY3RzIGZpcm13YXJlIHBhcnNpbmcsIGl0IGNvdWxkIGJlIHRyaWdnZXJlZCBpZiBzeXprYWxsZXIgZmVlZHMgYSBjdXN0b20gZmlybXdhcmUgZmlsZSBpbnRvIHRoZSBzeXN0ZW0uIEl0J3MgYSBwYXJzaW5nIGlzc3VlLCB0aGF0ICpjb3VsZCogYmUgZXhwbG9pdGVkLlxuXG5MZXQncyBkaWcgYSBiaXQgZGVlcGVyLiBJIHNlZSBgbXQ3OTIxX2xvYWRfY2xjYCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBtZWFucyBpdCdzIGNhbGxlZCBvbmx5IHdpdGhpbiB0aGUgc2FtZSBjb21waWxhdGlvbiB1bml0LiBUaGUgY2FsbGVyIGlzIGBtdDc5MjFfcnVuX2Zpcm13YXJlYC4gT2theSwgbGV0J3MgdHVybiBvdXIgYXR0ZW50aW9uIHRvIGBtdDc5MjFfcnVuX2Zpcm13YXJlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI4MzUsIk91dHB1dFRva2VucyI6NTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxODo0MDoxMy43NDEwNzY4NDFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY2MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY2MDpcXHR9XFxuIDY2MTpcXHRcXG4gNjYyOlxcdGludCBtdDc5MjFfcnVuX2Zpcm13YXJlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXFxuIDY2MzpcXHR7XFxuIDY2NDpcXHRcXHRpbnQgZXJyO1xcbiA2NjU6XFx0XFxuIDY2NjpcXHRcXHRlcnIgPSBtdDc5MnhfbG9hZF9maXJtd2FyZShkZXYpO1xcbiA2Njc6XFx0XFx0aWYgKGVycilcXG4gNjY4OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDY2OTpcXHRcXG4gNjcwOlxcdFxcdGVyciA9IG10NzkyMV9tY3VfZ2V0X25pY19jYXBhYmlsaXR5KFxcdTAwMjZkZXYtXFx1MDAzZXBoeSk7XFxuIDY3MTpcXHRcXHRpZiAoZXJyKVxcbiA2NzI6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gNjczOlxcdFxcbiA2NzQ6XFx0XFx0ZXJyID0gbXQ3OTIxX2xvYWRfY2xjKGRldiwgbXQ3OTJ4X3JhbV9uYW1lKGRldikpO1xcbiA2NzU6XFx0XFx0aWYgKGVycilcXG4gNjc2OlxcdFxcdFxcdHJldHVybiBlcnI7XFxuIDY3NzpcXHRcXHRzZXRfYml0KE1UNzZfU1RBVEVfTUNVX1JVTk5JTkcsIFxcdTAwMjZkZXYtXFx1MDAzZW1waHkuc3RhdGUpO1xcbiA2Nzg6XFx0XFxuIDY3OTpcXHRcXHRyZXR1cm4gbXQ3OTIxX21jdV9md19sb2dfMl9ob3N0KGRldiwgMSk7XFxuIDY4MDpcXHR9XFxuIDY4MTpcXHRFWFBPUlRfU1lNQk9MX0dQTChtdDc5MjFfcnVuX2Zpcm13YXJlKTtcXG4gNjgyOlxcdFxcbiA2ODM6XFx0aW50IG10NzkyMV9tY3VfcmFkaW9fbGVkX2N0cmwoc3RydWN0IG10NzkyeF9kZXYgKmRldiwgdTggdmFsdWUpXFxuIDY4NDpcXHR7XFxuIDY4NTpcXHRcXHRzdHJ1Y3Qge1xcbiA2ODY6XFx0XFx0XFx0dTggY3RybGlkO1xcbiA2ODc6XFx0XFx0XFx0dTggcnN2WzNdO1xcbiA2ODg6XFx0XFx0fSBfX3BhY2tlZCByZXEgPSB7XFxuIDY4OTpcXHRcXHRcXHQuY3RybGlkID0gdmFsdWUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE4OjQwOjEzLjc0MTI0ODY5MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzEwMDE0NTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRmlybXdhcmUgUGFyc2luZyBQYXRjaCoqXG5cbk9rYXksIHNvIGBtdDc5MjFfcnVuX2Zpcm13YXJlYCBpcyBiZWluZyBleHBvcnRlZCwgd2hpY2ggbWVhbnMgaXQncyBhY2Nlc3NpYmxlLiBUaGlzIHBhdGNoIGlzIHRvdWNoaW5nIGhvdyBmaXJtd2FyZSBpcyBwYXJzZWQuIEltbWVkaWF0ZWx5LCBteSBtaW5kIGdvZXMgdG8sIFwiSXMgdGhpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBvciBqdXN0IGEgY29kZSBzdHlsZSB0d2Vhaz9cIiBZZXMsIGl0ICppcyogZnVuY3Rpb25hbCDigJMgaXQncyBhbHRlcmluZyB0aGUgZXhlY3V0aW9uIGZsb3cuIEl0J3MgbW92aW5nIGZyb20gYSBoYXJkIGAtRUlOVkFMYCByZXR1cm4gdG8gc2ltcGx5IGNvbnRpbnVpbmcgdGhlIHBhcnNpbmcuIFRoZSBpbXBsaWNhdGlvbiBpcyBjbGVhcjogaXQgbm93ICpwZXJtaXRzKiB0aGUgZHJpdmVyIHRvIHdvcmsgd2l0aCBmaXJtd2FyZSB0aGF0IGhhcyB0aGVzZSBleHRyYSBDTEMgcmVjb3Jkcywgd2hpY2ggbWlnaHQgaGF2ZSBiZWVuIHJlamVjdGVkIGJlZm9yZS5cblxuVGhpcyBzY3JlYW1zIFwiZnV6emluZyB0YXJnZXRcIiB0byBtZS4gRmlybXdhcmUgcGFyc2luZyBpcyAqYWx3YXlzKiBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLiBTbywgbGV0J3MgbmFpbCBkb3duIHRoZSBjb25maWd1cmF0aW9ucyBuZWVkZWQuIEkgbmVlZCB0byBrbm93IHdoYXQgZW52aXJvbm1lbnQgdGhpcyBpcyBvcGVyYXRpbmcgdW5kZXIuIEknbGwgbmVlZCBgQ09ORklHX01UNzkyMV9DT01NT05gIGFuZCwgc2luY2UgdGhlcmUncyBhIGdvb2QgY2hhbmNlIG9mIFVTQiBpbnRlcmFjdGlvbiBoZXJlLCBgQ09ORklHX01UNzkyMVVgLiBOb3csIGxldCdzIGNvbmZpcm0gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gYnkgcmV2aWV3aW5nIHRoZSBgZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZ2AgZmlsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQwNDMsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxODo0MDoxOS40NTEyNjcyMTRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyNTI0MTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNVDc5MjFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UtQ2xlYXJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI6Y29uZmlnIE1UNzkyMV9DT01NT05cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWctNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjc6Y29uZmlnIE1UNzkyMUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTgtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UNzkyMUUgKFBDSWUpIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWc6MTc6Y29uZmlnIE1UNzkyMVNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJNZWRpYVRlayBNVDc5MjFTIChTRElPKSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9LY29uZmlnOjI4OmNvbmZpZyBNVDc5MjFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvS2NvbmZpZy0yOS1cXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxODo0MDoxOS41MDM3OTY2MTFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc2NDEzNzg4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIENoZWNrbGlzdCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zOiBgTVQ3OTIxVWAgZm9yIFVTQiwgYE1UNzkyMUVgIGZvciBQQ0llLCBhbmQgYE1UNzkyMVNgIGZvciBTRElPLiBJIG5lZWQgdG8gZ2V0IGBNVDc5MjFVYCBlbmFibGVkIGJlY2F1c2UgdGhhdCdzIHRoZSBlbnRyeSBwb2ludCBmb3IgVVNCIGZ1enppbmcsIHdoaWNoIGlzIGEga2V5IHRlc3RpbmcgYXJlYSBJIHdhbnQgdG8gZm9jdXMgb24uIEJlZm9yZSBJIGRpdmUgaW50byBhbnl0aGluZywgSSdsbCBxdWlja2x5IGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE1UNzkyMVVgIHRvIG1ha2Ugc3VyZSBlbmFibGluZyBpdCBkb2Vzbid0IGNhdXNlIGFueSB1bmV4cGVjdGVkIGRvd25zdHJlYW0gaXNzdWVzIG9yIGNvbmZsaWN0cy4gQmVzdCB0byB1bmRlcnN0YW5kIHRoZSBsYW5kc2NhcGUgYmVmb3JlIG1ha2luZyBhbnkgY2hhbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjQ5MTIsIk91dHB1dFRva2VucyI6NDgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxODo0MDoyNS4yNjc5Mzc1ODFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyOTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjUsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjU6XFx0XFxuICAyNjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuICAyNzpcXHRcXG4gIDI4OlxcdGNvbmZpZyBNVDc5MjFVXFxuICAyOTpcXHRcXHR0cmlzdGF0ZSBcXFwiTWVkaWFUZWsgTVQ3OTIxVSAoVVNCKSBzdXBwb3J0XFxcIlxcbiAgMzA6XFx0XFx0c2VsZWN0IE1UNzkyeF9VU0JcXG4gIDMxOlxcdFxcdHNlbGVjdCBNVDc5MjFfQ09NTU9OXFxuICAzMjpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAzMzpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgMzQ6XFx0XFx0aGVscFxcbiAgMzU6XFx0XFx0ICBUaGlzIGFkZHMgc3VwcG9ydCBmb3IgTVQ3OTIxVSA4MDIuMTFheCAyeDI6MlNTIHdpcmVsZXNzIGRldmljZXMuXFxuICAzNjpcXHRcXG4gIDM3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTZUMTg6NDA6MjUuMjY4MDQyNzUxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg4NzAxMzQ3MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIE1UNzkyMVUgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZGVwZW5kZW5jaWVzIGFyZSByaWdodC4gV2UncmUgbG9va2luZyBhdCB0aGUgYE1UNzkyMVVgIGRyaXZlciwgd2hpY2ggaGluZ2VzIG9uIGBNQUM4MDIxMWAgYW5kIGBVU0JgLiAgVGhlcmVmb3JlLCB0aGUgYE1UNzkyMVVgIGNvbmZpZyBuZWVkcyB0byBiZSBhZGRlZCB0byBgRW5hYmxlQ29uZmlnc2AgdG8gZW5zdXJlIHRoaXMgZHJpdmVyIGlzIHByb3Blcmx5IGVuYWJsZWQuXG5cbk5vdywgdGhlIGNvcmUgb2YgdGhlIG1hdHRlcjogVGhpcyBwYXRjaCBmb2N1c2VzIG9uIGNoYW5nZXMgdG8gaG93IHRoZSBgbXQ3OTIxX3J1bl9maXJtd2FyZWAgZnVuY3Rpb24gd29ya3MuIFdoaWxlIGBtdDc5MjFfbG9hZF9jbGNgICppcyogc3RhdGljIChqdXN0IGNvbmZpcm1lZCB0aGF0KSwgYG10NzkyMV9ydW5fZmlybXdhcmVgIGlzIGV4cG9ydGVkLCBtYWtpbmcgaXQgdGhlIG1vcmUgYXBwcm9wcmlhdGUgZm9jdXMgZm9yIG91ciBhbmFseXNpcy5cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiB0aGUgZmlybXdhcmUgcGFyc2luZyBsb2dpYy4gSXQgYWx0ZXJzIGhvdyB3ZSBoYW5kbGUgQ0xDIChDb25maWd1cmF0aW9uIExpZmVjeWNsZSBDb250cm9sKSByZWNvcmRzLiAgRXNzZW50aWFsbHksIGl0J3MgbW9kaWZ5aW5nIHRoZSBlcnJvciBoYW5kbGluZyB3aGVuIGRlYWxpbmcgd2l0aCBDTEMgcmVjb3JkIGluZGljZXMgdGhhdCBhcmUgb3V0IG9mIGJvdW5kcy4gVGhlIG9sZCBjb2RlIHdvdWxkIGVycm9yIG91dDsgdGhlIG5ldyBjb2RlIGlnbm9yZXMgdW5rbm93biBDTEMgcmVjb3Jkcy5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGhlcmU6IGlzIHRoaXMgcGF0Y2ggZnV6emFibGU/IFllcywgYWJzb2x1dGVseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBhIGRyaXZlciwgYW5kIHRoZSBkcml2ZXIgaXMgYWNjZXNzaWJsZSB2aWEgVVNCLiAgVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBmaXJtd2FyZSBwYXJzaW5nIGxvZ2ljIGFuZCB0aGVyZWZvcmUgaXMgd29ydGggZnV6emluZy5cblxuR2l2ZW4gdGhhdCBgTVQ3OTIxVWAgZGVwZW5kcyBvbiBgTUFDODAyMTFgIGFuZCBgVVNCYCAoYW5kIGBNQUM4MDIxMWAgaXRzZWxmIGRlcGVuZHMgb24gYENGRzgwMjExYCksIEkgbmVlZCB0byBhZGQgYm90aCBgTVQ3OTIxVWAgYW5kIGBNQUM4MDIxMWAgdG8gdGhlIGNvbmZpZ3VyYXRpb24sIG1ha2luZyBzdXJlIGFsbCBkZXBlbmRlbmNpZXMgYXJlIGluIHBsYWNlLlxuXG5BbHJpZ2h0LCBJJ20gY29uZmlkZW50IGluIG15IGFuYWx5c2lzLiBMZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MzcyLCJPdXRwdXRUb2tlbnMiOjExOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE4OjQwOjM0LjEzODE4MDQ2NVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODg3Nzc2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTIxVVwiLFxuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjFfcnVuX2Zpcm13YXJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZpcm13YXJlIHBhcnNpbmcgbG9naWMgaW4gdGhlIE1UNzkyMSB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgb3V0LW9mLWJvdW5kcyBDTEMgcmVjb3JkIGluZGljZXMgYXJlIGhhbmRsZWQgKGlnbm9yaW5nIHRoZW0gaW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gZXJyb3IpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTVQ3OTIxVVwiLFxuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtdDc5MjFfcnVuX2Zpcm13YXJlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGZpcm13YXJlIHBhcnNpbmcgbG9naWMgaW4gdGhlIE1UNzkyMSB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBjaGFuZ2luZyBob3cgb3V0LW9mLWJvdW5kcyBDTEMgcmVjb3JkIGluZGljZXMgYXJlIGhhbmRsZWQgKGlnbm9yaW5nIHRoZW0gaW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gZXJyb3IpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE4OjQwOjM0LjI4NzA2NTk3NVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTk4OTUyMjU4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE4OjQwOjM0LjI4NzUwNzMzNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo5OTg5MDc3MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2luZyBsb2dpYyBmb3IgZmlybXdhcmUgQ0xDIHJlY29yZHMgaW4gdGhlIG10NzkyMSBkcml2ZXIuIEl0IGNoYW5nZXMgdGhlIGJlaGF2aW9yIHdoZW4gZW5jb3VudGVyaW5nIGEgQ0xDIHJlY29yZCB3aXRoIGFuIGluZGV4IGxhcmdlciB0aGFuIHRoZSBkcml2ZXIncyBhcnJheSBzaXplOiBpbnN0ZWFkIG9mIHJldHVybmluZyBhbiBlcnJvciwgaXQgbm93IGlnbm9yZXMgdGhlIHJlY29yZCBhbmQgY29udGludWVzIHBhcnNpbmcuIFRoaXMgcHJldmVudHMgdGhlIGRyaXZlciBmcm9tIGZhaWxpbmcgdG8gbG9hZCBuZXdlciBmaXJtd2FyZSB0aGF0IGNvbnRhaW5zIGFkZGl0aW9uYWwgcmVjb3Jkcy4gVGhlIGRhdGEgYmVpbmcgcGFyc2VkIGlzIGxvYWRlZCBmcm9tIGEgZmlybXdhcmUgZmlsZSBhbmQgaXMgZnVsbHkgaW5pdGlhbGl6ZWQuIFRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgYWxsb2NhdGlvbnMgb2YgdW5pbml0aWFsaXplZCBzdHJ1Y3R1cmVzLCBvciBpbmZvcm1hdGlvbiBsZWFrcyB0byB1c2VyIHNwYWNlIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiBTdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgdG9vbHMgYXJlIHN1ZmZpY2llbnQgZm9yIGRldGVjdGluZyBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIG1lbW9yeSBjb3JydXB0aW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQwNTlkYTliMTgyYzc0NDYxNDcwNmNkZDlmMjdhZTljOGVhNTIyYWJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAxNiAxODozOTo0MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcbmluZGV4IGExMThhMzAxNTY0YzguLjQwNTQ2MDA1Yzc0M2IgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcbkBAIC00NzcsMTggKzQ3NywyMyBAQCBzdGF0aWMgaW50IG10NzkyMV9sb2FkX2NsYyhzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2LCBjb25zdCBjaGFyICpmd19uYW1lKVxuIFxuIFx0Zm9yIChvZmZzZXQgPSAwOyBvZmZzZXQgXHUwMDNjIGxlbjsgb2Zmc2V0ICs9IGNsY19sZW4pIHtcbiBcdFx0aWYgKGxlbiAtIG9mZnNldCBcdTAwM2Mgc2l6ZW9mKCpjbGMpKSB7XG4rXHRcdFx0ZGV2X2VycihtZGV2LVx1MDAzZWRldiwgXCJJbnZhbGlkIENMQyByZWNvcmRcXG5cIik7XG4gXHRcdFx0cmV0ID0gLUVJTlZBTDtcbiBcdFx0XHRnb3RvIG91dDtcbiBcdFx0fVxuIFxuIFx0XHRjbGMgPSAoY29uc3Qgc3RydWN0IG10NzkyMV9jbGMgKikoY2xjX2Jhc2UgKyBvZmZzZXQpO1xuIFx0XHRjbGNfbGVuID0gbGUzMl90b19jcHUoY2xjLVx1MDAzZWxlbik7XG4tXHRcdGlmIChjbGNfbGVuIFx1MDAzYyBzaXplb2YoKmNsYykgfHwgY2xjX2xlbiBcdTAwM2UgbGVuIC0gb2Zmc2V0IHx8XG4tXHRcdCAgICBjbGMtXHUwMDNlaWR4IFx1MDAzZT0gQVJSQVlfU0laRShwaHktXHUwMDNlY2xjKSkge1xuK1x0XHRpZiAoY2xjX2xlbiBcdTAwM2Mgc2l6ZW9mKCpjbGMpIHx8IGNsY19sZW4gXHUwMDNlIGxlbiAtIG9mZnNldCkge1xuK1x0XHRcdGRldl9lcnIobWRldi1cdTAwM2VkZXYsIFwiSW52YWxpZCBDTEMgcmVjb3JkXFxuXCIpO1xuIFx0XHRcdHJldCA9IC1FSU5WQUw7XG4gXHRcdFx0Z290byBvdXQ7XG4gXHRcdH1cbiBcbitcdFx0LyogTmV3ZXIgZmlybXdhcmUgbWF5IGFkZCByZWNvcmRzIHRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZSB5ZXQgKi9cbitcdFx0aWYgKGNsYy1cdTAwM2VpZHggXHUwMDNlPSBBUlJBWV9TSVpFKHBoeS1cdTAwM2VjbGMpKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1xuIFx0XHQvKiBkbyBub3QgaW5pdCBidWYgYWdhaW4gaWYgY2hpcCByZXNldCB0cmlnZ2VyZWQgKi9cbiBcdFx0aWYgKHBoeS1cdTAwM2VjbGNbY2xjLVx1MDAzZWlkeF0pXG4gXHRcdFx0Y29udGludWU7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxODo0MDozNC4yODc1MDgzNTVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQzNTg3NjIwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbXQ3OTIxX2xvYWRfY2xjYCBpbiB0aGUgTWVkaWF0ZWsgd2lyZWxlc3MgZHJpdmVyLiBTcGVjaWZpY2FsbHksIGl0J3MgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jYC4gSXQgc2VlbXMgbGlrZSB0aGV5J3JlIGFkZHJlc3Npbmcgc29tZSBpc3N1ZSByZWxhdGVkIHRvIHRoZSBDTEMgKENhbGlicmF0aW9uIGFuZCBDb25maWd1cmF0aW9uKSByZWNvcmRzLiBUaGUgcGF0Y2ggYWRkcyBhbiBlcnJvciBtZXNzYWdlIOKAkyB0aGF0J3MgZ29vZCwgYWx3YXlzIGhlbHBzIHdpdGggZGVidWdnaW5nLiBCdXQgaXTigJlzIHRoZSBjaGFuZ2UgaW4gYmVoYXZpb3IgSSBuZWVkIHRvIHJlYWxseSBkaWcgaW50by5cblxuUHJldmlvdXNseSwgaWYgYGNsYy1cdTAwM2VpZHhgIHdlbnQgYmV5b25kIHRoZSBib3VuZHMgb2YgYHBoeS1cdTAwM2VjbGNgICggYEFSUkFZX1NJWkUocGh5LVx1MDAzZWNsYylgICksIGl0IHdvdWxkIHJldHVybiBgLUVJTlZBTGAuIFRoaXMgd291bGQgZXNzZW50aWFsbHkgaGFsdCB0aGUgcHJvY2Vzcy4gTm93LCB0aGUgcGF0Y2ggKmNvbnRpbnVlcyogdGhlIGxvb3AuIFNvLCBpdCAqaWdub3JlcyogdGhhdCBzcGVjaWZpYyByZWNvcmQgaW5zdGVhZCBvZiBlcnJvcmluZyBvdXQgYW5kIHN0b3BwaW5nIHRoZSB3aG9sZSBsb2FkLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIG91dC1vZi1ib3VuZHMgYWNjZXNzIHByb3RlY3Rpb24sIGJ1dCBob2xkIG9uLCB0aGUgcHJldmlvdXMgYmVoYXZpb3IgKnByZXZlbnRlZCogdGhhdC4gU28sIHdoeSB0aGUgY2hhbmdlPyBJdCdzIG1vcmUgbGlrZWx5IHRoaXMgaXMgYWJvdXQgZ3JhY2VmdWxseSBoYW5kbGluZyBuZXdlciBmaXJtd2FyZSByZWNvcmRzIHRoYXQgbWlnaHQgaGF2ZSBhZGRlZCBkYXRhIGJleW9uZCB3aGF0IHRoaXMgc3BlY2lmaWMgZHJpdmVyIHZlcnNpb24gZXhwZWN0cy5cblxuUmlnaHQsIHNvIGJ5IGNvbnRpbnVpbmcsIGl0IGVzc2VudGlhbGx5IHNraXBzIG92ZXIgdGhhdCBwb3RlbnRpYWxseSB1bmtub3duIHJlY29yZCBhbmQgbW92ZXMgb24gdG8gdGhlIG5leHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCBza2lwLiBJIG5lZWQgdG8gZXhhbWluZSB0aGUgc3Vycm91bmRpbmcgY29kZSBjYXJlZnVsbHkgbm93IHRvIHVuZGVyc3RhbmQgdGhlIGltcGFjdCBvZiBza2lwcGluZyB0aGF0IGNhbGlicmF0aW9uIHJlY29yZC4gRG9lcyBpdCBoYXZlIGNyaXRpY2FsIGRhdGE/IE9yIGlzIGl0IG9wdGlvbmFsPyBJIG5lZWQgdG8ga25vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI4MSwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE2VDE4OjQwOjM4LjcyMzM4NzMyMloiLCJTZXEiOjIyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTQ4NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDYwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDYwOlxcdFxcdFxcdC8qIGNoZWNrIGlmIHdlIGhhdmUgdmFsaWQgYnVmZmVyIHNpemUgKi9cXG4gNDYxOlxcdFxcdFxcdGlmIChsZW4gXFx1MDAzZSBmd19kYXRhX2xlbiAtIG9mZnNldCkge1xcbiA0NjI6XFx0XFx0XFx0XFx0ZGV2X2VycihtZGV2LVxcdTAwM2VkZXYsIFxcXCJJbnZhbGlkIGZpcm13YXJlIHJlZ2lvblxcXFxuXFxcIik7XFxuIDQ2MzpcXHRcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbiA0NjQ6XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuIDQ2NTpcXHRcXHRcXHR9XFxuIDQ2NjpcXHRcXG4gNDY3OlxcdFxcdFxcdGlmICgocmVnaW9uLVxcdTAwM2VmZWF0dXJlX3NldCBcXHUwMDI2IEZXX0ZFQVRVUkVfTk9OX0RMKSBcXHUwMDI2XFx1MDAyNlxcbiA0Njg6XFx0XFx0XFx0ICAgIHJlZ2lvbi1cXHUwMDNldHlwZSA9PSBGV19UWVBFX0NMQykge1xcbiA0Njk6XFx0XFx0XFx0XFx0Y2xjX2Jhc2UgPSAodTggKikoZnctXFx1MDAzZWRhdGEgKyBvZmZzZXQpO1xcbiA0NzA6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDQ3MTpcXHRcXHRcXHR9XFxuIDQ3MjpcXHRcXHRcXHRvZmZzZXQgKz0gbGVuO1xcbiA0NzM6XFx0XFx0fVxcbiA0NzQ6XFx0XFxuIDQ3NTpcXHRcXHRpZiAoIWNsY19iYXNlKVxcbiA0NzY6XFx0XFx0XFx0Z290byBvdXQ7XFxuIDQ3NzpcXHRcXG4gNDc4OlxcdFxcdGZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IFxcdTAwM2MgbGVuOyBvZmZzZXQgKz0gY2xjX2xlbikge1xcbiA0Nzk6XFx0XFx0XFx0aWYgKGxlbiAtIG9mZnNldCBcXHUwMDNjIHNpemVvZigqY2xjKSkge1xcbiA0ODA6XFx0XFx0XFx0XFx0ZGV2X2VycihtZGV2LVxcdTAwM2VkZXYsIFxcXCJJbnZhbGlkIENMQyByZWNvcmRcXFxcblxcXCIpO1xcbiA0ODE6XFx0XFx0XFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4gNDgyOlxcdFxcdFxcdFxcdGdvdG8gb3V0O1xcbiA0ODM6XFx0XFx0XFx0fVxcbiA0ODQ6XFx0XFxuIDQ4NTpcXHRcXHRcXHRjbGMgPSAoY29uc3Qgc3RydWN0IG10NzkyMV9jbGMgKikoY2xjX2Jhc2UgKyBvZmZzZXQpO1xcbiA0ODY6XFx0XFx0XFx0Y2xjX2xlbiA9IGxlMzJfdG9fY3B1KGNsYy1cXHUwMDNlbGVuKTtcXG4gNDg3OlxcdFxcdFxcdGlmIChjbGNfbGVuIFxcdTAwM2Mgc2l6ZW9mKCpjbGMpIHx8IGNsY19sZW4gXFx1MDAzZSBsZW4gLSBvZmZzZXQpIHtcXG4gNDg4OlxcdFxcdFxcdFxcdGRldl9lcnIobWRldi1cXHUwMDNlZGV2LCBcXFwiSW52YWxpZCBDTEMgcmVjb3JkXFxcXG5cXFwiKTtcXG4gNDg5OlxcdFxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuIDQ5MDpcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4gNDkxOlxcdFxcdFxcdH1cXG4gNDkyOlxcdFxcbiA0OTM6XFx0XFx0XFx0LyogTmV3ZXIgZmlybXdhcmUgbWF5IGFkZCByZWNvcmRzIHRoaXMgZHJpdmVyIGRvZXMgbm90IHVzZSB5ZXQgKi9cXG4gNDk0OlxcdFxcdFxcdGlmIChjbGMtXFx1MDAzZWlkeCBcXHUwMDNlPSBBUlJBWV9TSVpFKHBoeS1cXHUwMDNlY2xjKSlcXG4gNDk1OlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiA0OTY6XFx0XFxuIDQ5NzpcXHRcXHRcXHQvKiBkbyBub3QgaW5pdCBidWYgYWdhaW4gaWYgY2hpcCByZXNldCB0cmlnZ2VyZWQgKi9cXG4gNDk4OlxcdFxcdFxcdGlmIChwaHktXFx1MDAzZWNsY1tjbGMtXFx1MDAzZWlkeF0pXFxuIDQ5OTpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gNTAwOlxcdFxcbiA1MDE6XFx0XFx0XFx0LyogaGVhZGVyIGNvbnRlbnQgc2FuaXR5ICovXFxuIDUwMjpcXHRcXHRcXHRpZiAoY2xjLVxcdTAwM2VpZHggPT0gTVQ3OTIxX0NMQ19QT1dFUiBcXHUwMDI2XFx1MDAyNlxcbiA1MDM6XFx0XFx0XFx0ICAgIHU4X2dldF9iaXRzKGNsYy1cXHUwMDNldHlwZSwgTVRfRUVfSFdfVFlQRV9FTkNBUCkgIT0gaHdfZW5jYXApXFxuIDUwNDpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gNTA1OlxcdFxcbiA1MDY6XFx0XFx0XFx0cGh5LVxcdTAwM2VjbGNbY2xjLVxcdTAwM2VpZHhdID0gZGV2bV9rbWVtZHVwKG1kZXYtXFx1MDAzZWRldiwgY2xjLFxcbiA1MDc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBjbGNfbGVuLFxcbiA1MDg6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBHRlBfS0VSTkVMKTtcXG4gNTA5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxODo0MDozOC43MjM1NDQ1ODJaIiwiU2VxIjoyMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTU1MzAxNjM2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBGaXJtd2FyZSBQYXJzaW5nIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgb3ZlciB0aGlzIHBhdGNoLiBJdCdzIGZvY3VzZWQgb24gcGFyc2luZyBmaXJtd2FyZSBkYXRhLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgQ0xDIHJlY29yZHMuIFRoZSBrZXkgY2hhbmdlIGlzIGhvdyBpdCBkZWFscyB3aXRoIGBjbGMtXHUwMDNlaWR4IFx1MDAzZT0gQVJSQVlfU0laRShwaHktXHUwMDNlY2xjKWAuIFByZXZpb3VzbHksIGl0IHdhcyBhbiBlcnJvciwgYnV0IG5vdyBpdCdzIGJlaW5nIGhhbmRsZWQgYnkgc2ltcGx5IHNraXBwaW5nIHRoZSByZWNvcmQuXG5cbk15IGltbWVkaWF0ZSBhbmFseXNpcz8gTm8gS01TQU4gbmVlZGVkLiBUaGUgZmlybXdhcmUgZGF0YSwgYGZ3LVx1MDAzZWRhdGFgLCBpcyBmdWxseSBpbml0aWFsaXplZDsgaXQgY29tZXMgZGlyZWN0bHkgZnJvbSBhIGZpbGUuIFRoZSBwYXRjaCAqb25seSogbW9kaWZpZXMgdGhlIGNvbnRyb2wgZmxvdyBvZiB0aGUgcGFyc2luZyBwcm9jZXNzOyBpdCBkb2Vzbid0IHRvdWNoIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmUncyBubyB3YXkgdGhpcyBpcyBpbnRyb2R1Y2luZyB1bmluaXRpYWxpemVkIHJlYWRzIG9yIHBvdGVudGlhbCBsZWFrcyB0byB1c2Vyc3BhY2UuIFRoZSBmaXJtd2FyZSBkYXRhIGl0c2VsZiBpcyBjYXJlZnVsbHkgY29uc3RydWN0ZWQgYW5kIGluaXRpYWxpemVkLCB3aGljaCBtZWFucyB3ZSBhcmVuJ3QgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeS5cblxuVGhlcmVmb3JlLCBLTVNBTiBpcyBvdmVya2lsbCBpbiB0aGlzIHNpdHVhdGlvbi4gS0FTQU4gYW5kIG91ciBvdGhlciBzdGFuZGFyZCB0b29scyBzaG91bGQgYmUgcGVyZmVjdGx5IGFkZXF1YXRlIHRvIGNhdGNoIGFueSBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlcyB0aGF0ICptaWdodCogYXJpc2UgZnJvbSB0aGlzIGNvZGUuIEknbSBnb2luZyB0byBtYXJrIHRoaXMgYXMgYE5lZWRzS01TQU49ZmFsc2VgLiBJdCdzIGEgc3RyYWlnaHRmb3J3YXJkIGNoYW5nZSB0aGF0IHNpbXBsaWZpZXMgdGhlIGZpcm13YXJlIHBhcnNpbmcgaW4gYSBzYWZlIHdheS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzYxNywiT3V0cHV0VG9rZW5zIjoxNjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNlQxODo0MDo0NC4yNzY1NjM0OTZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTQxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYXJzaW5nIGxvZ2ljIGZvciBmaXJtd2FyZSBDTEMgcmVjb3JkcyBpbiB0aGUgbXQ3OTIxIGRyaXZlci4gSXQgY2hhbmdlcyB0aGUgYmVoYXZpb3Igd2hlbiBlbmNvdW50ZXJpbmcgYSBDTEMgcmVjb3JkIHdpdGggYW4gaW5kZXggbGFyZ2VyIHRoYW4gdGhlIGRyaXZlcidzIGFycmF5IHNpemU6IGluc3RlYWQgb2YgcmV0dXJuaW5nIGFuIGVycm9yLCBpdCBub3cgaWdub3JlcyB0aGUgcmVjb3JkIGFuZCBjb250aW51ZXMgcGFyc2luZy4gVGhpcyBwcmV2ZW50cyB0aGUgZHJpdmVyIGZyb20gZmFpbGluZyB0byBsb2FkIG5ld2VyIGZpcm13YXJlIHRoYXQgY29udGFpbnMgYWRkaXRpb25hbCByZWNvcmRzLiBUaGUgZGF0YSBiZWluZyBwYXJzZWQgaXMgbG9hZGVkIGZyb20gYSBmaXJtd2FyZSBmaWxlIGFuZCBpcyBmdWxseSBpbml0aWFsaXplZC4gVGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBhbGxvY2F0aW9ucyBvZiB1bmluaXRpYWxpemVkIHN0cnVjdHVyZXMsIG9yIGluZm9ybWF0aW9uIGxlYWtzIHRvIHVzZXIgc3BhY2UgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuIFN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciB0b29scyBhcmUgc3VmZmljaWVudCBmb3IgZGV0ZWN0aW5nIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgbWVtb3J5IGNvcnJ1cHRpb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhcnNpbmcgbG9naWMgZm9yIGZpcm13YXJlIENMQyByZWNvcmRzIGluIHRoZSBtdDc5MjEgZHJpdmVyLiBJdCBjaGFuZ2VzIHRoZSBiZWhhdmlvciB3aGVuIGVuY291bnRlcmluZyBhIENMQyByZWNvcmQgd2l0aCBhbiBpbmRleCBsYXJnZXIgdGhhbiB0aGUgZHJpdmVyJ3MgYXJyYXkgc2l6ZTogaW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gZXJyb3IsIGl0IG5vdyBpZ25vcmVzIHRoZSByZWNvcmQgYW5kIGNvbnRpbnVlcyBwYXJzaW5nLiBUaGlzIHByZXZlbnRzIHRoZSBkcml2ZXIgZnJvbSBmYWlsaW5nIHRvIGxvYWQgbmV3ZXIgZmlybXdhcmUgdGhhdCBjb250YWlucyBhZGRpdGlvbmFsIHJlY29yZHMuIFRoZSBkYXRhIGJlaW5nIHBhcnNlZCBpcyBsb2FkZWQgZnJvbSBhIGZpcm13YXJlIGZpbGUgYW5kIGlzIGZ1bGx5IGluaXRpYWxpemVkLiBUaGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGFsbG9jYXRpb25zIG9mIHVuaW5pdGlhbGl6ZWQgc3RydWN0dXJlcywgb3IgaW5mb3JtYXRpb24gbGVha3MgdG8gdXNlciBzcGFjZSBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2guIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS4gU3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIHRvb2xzIGFyZSBzdWZmaWNpZW50IGZvciBkZXRlY3Rpbmcgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBtZW1vcnkgY29ycnVwdGlvbi5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowdph95[1] Phase: Succeeded StartedAt: 2026-08-16 18:40:56 +0000 UTC FinishedAt: 2026-08-16 18:40:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdph95[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-16 18:40:56 +0000 UTC FinishedAt: 2026-08-16 18:40:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdph95[2] Phase: Succeeded StartedAt: 2026-08-16 18:40:56 +0000 UTC FinishedAt: 2026-08-16 19:19:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-16 18:40:56 +0000 UTC FinishedAt: 2026-08-16 19:19:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-16 18:40:56 +0000 UTC FinishedAt: 2026-08-16 18:41:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-16 18:40:56 +0000 UTC FinishedAt: 2026-08-16 18:41:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowdph95/series-workflowdph95-convert-artifact-1887142308/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-16 18:41:06 +0000 UTC FinishedAt: 2026-08-16 18:57:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-16 18:41:06 +0000 UTC FinishedAt: 2026-08-16 18:57:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*45833334-b10a-44dc-abf6-c069f991376c,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-workflowdph95/series-workflowdph95-convert-artifact-1887142308/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": "159532be-ecad-4b41-9667-c88150de13d8", "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-workflowdph95/series-workflowdph95-build-action-3908768738/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-16 18:41:06 +0000 UTC FinishedAt: 2026-08-16 18:57:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*45833334-b10a-44dc-abf6-c069f991376c,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-workflowdph95/series-workflowdph95-convert-artifact-1887142308/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": "159532be-ecad-4b41-9667-c88150de13d8", "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-workflowdph95/series-workflowdph95-build-action-3908768738/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-16 18:57:41 +0000 UTC FinishedAt: 2026-08-16 18:57:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-16 18:57:41 +0000 UTC FinishedAt: 2026-08-16 18:57:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-16 18:57:41 +0000 UTC FinishedAt: 2026-08-16 18:57:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-16 18:57:41 +0000 UTC FinishedAt: 2026-08-16 18:57:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowdph95/series-workflowdph95-convert-artifact-853978019/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-16 18:57:51 +0000 UTC FinishedAt: 2026-08-16 19:00:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-16 18:57:51 +0000 UTC FinishedAt: 2026-08-16 18:59:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*159532be-ecad-4b41-9667-c88150de13d8,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-workflowdph95/series-workflowdph95-build-action-3908768738/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-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-16 19:00:01 +0000 UTC FinishedAt: 2026-08-16 19:00:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-16 19:00:01 +0000 UTC FinishedAt: 2026-08-16 19:00:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-16 19:00:01 +0000 UTC FinishedAt: 2026-08-16 19:16:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-16 19:00:01 +0000 UTC FinishedAt: 2026-08-16 19:16:29 +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:*45833334-b10a-44dc-abf6-c069f991376c,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-workflowdph95/series-workflowdph95-convert-artifact-853978019/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": "73c2b5d3-6a3c-4b49-a817-52262eed2b5a", "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-workflowdph95/series-workflowdph95-build-action-1524740183/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-16 19:00:01 +0000 UTC FinishedAt: 2026-08-16 19:16:19 +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:*45833334-b10a-44dc-abf6-c069f991376c,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-workflowdph95/series-workflowdph95-convert-artifact-853978019/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": "73c2b5d3-6a3c-4b49-a817-52262eed2b5a", "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-workflowdph95/series-workflowdph95-build-action-1524740183/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-16 19:16:29 +0000 UTC FinishedAt: 2026-08-16 19:16:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-16 19:16:29 +0000 UTC FinishedAt: 2026-08-16 19:16:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-16 19:16:29 +0000 UTC FinishedAt: 2026-08-16 19:18:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-16 19:16:29 +0000 UTC FinishedAt: 2026-08-16 19:18:30 +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:*73c2b5d3-6a3c-4b49-a817-52262eed2b5a,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-workflowdph95/series-workflowdph95-build-action-1524740183/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-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-16 19:18:39 +0000 UTC FinishedAt: 2026-08-16 19:19:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-16 19:18:39 +0000 UTC FinishedAt: 2026-08-16 19:19:58 +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":["mt7921_run_firmware"],"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:*159532be-ecad-4b41-9667-c88150de13d8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*73c2b5d3-6a3c-4b49-a817-52262eed2b5a,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-workflowdph95/series-workflowdph95-build-action-3908768738/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-workflowdph95/series-workflowdph95-build-action-1524740183/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-16 19:18:39 +0000 UTC FinishedAt: 2026-08-16 19:18:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-16 19:18:39 +0000 UTC FinishedAt: 2026-08-16 19:18:44 +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":["mt7921_run_firmware"],"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-workflowdph95/series-workflowdph95-convert-artifact-1187749820/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-16 19:18:39 +0000 UTC FinishedAt: 2026-08-16 19:18:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-16 19:18:39 +0000 UTC FinishedAt: 2026-08-16 19:18:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-16 19:18:39 +0000 UTC FinishedAt: 2026-08-16 19:18:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-16 19:18:49 +0000 UTC FinishedAt: 2026-08-16 19:19:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdph95[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["mt7921_run_firmware"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4477a78374a57c3809b172ad30cceabda48c47c6","config_name":"upstream-apparmor-kasan.config","enable_configs":["MT7921U","MAC80211"],"series_id":"f7185af4-8227-4ea2-b2fe-b52ce22e9c7d","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-16 19:18:49 +0000 UTC FinishedAt: 2026-08-16 19:19:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*159532be-ecad-4b41-9667-c88150de13d8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*73c2b5d3-6a3c-4b49-a817-52262eed2b5a,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-workflowdph95/series-workflowdph95-build-action-3908768738/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-workflowdph95/series-workflowdph95-build-action-1524740183/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-workflowdph95/series-workflowdph95-convert-artifact-1187749820/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,}