Name: series-workflowc82ch Phase: Succeeded StartedAt: 2026-08-04 13:57:43 +0000 UTC FinishedAt: 2026-08-04 18:04:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc82ch[0] Phase: Succeeded StartedAt: 2026-08-04 13:57:43 +0000 UTC FinishedAt: 2026-08-04 14:26:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc82ch[0].run-triage Phase: Succeeded StartedAt: 2026-08-04 13:57:43 +0000 UTC FinishedAt: 2026-08-04 14:26:46 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "5b4f243f78a533abf414bfd96325aa2c96e711a3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VSOCKETS", "VSOCKETS_LOOPBACK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "5b4f243f78a533abf414bfd96325aa2c96e711a3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VSOCKETS", "VSOCKETS_LOOPBACK" ], "series_id": "853a5dff-ad53-49b2-9763-35493eb96fed" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "vsock_connect", "vsock_accept" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA0IDE0OjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZTT0NLRVRTJiMzNDssCiAgICAmIzM0O1ZTT0NLRVRTX0xPT1BCQUNLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dnNvY2tfY29ubmVjdCYjMzQ7LAogICAgJiMzNDt2c29ja19hY2NlcHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIGxvZ2ljIGluIGB2c29ja19jb25uZWN0YCBhbmQgYHZzb2NrX2FjY2VwdGAgZm9yIEFGX1ZTT0NLIHNvY2tldHMuIEl0IGNoYW5nZXMgaG93IGBza19lcnJgIGlzIGNoZWNrZWQgYW5kIGNsZWFyZWQsIHdoaWNoIGRpcmVjdGx5IGFmZmVjdHMgdGhlIGNvbnRyb2wgZmxvdyBhbmQgcmV0dXJuIHZhbHVlcyBvZiB0aGVzZSBjb3JlIHNvY2tldCBvcGVyYXRpb25zLiBGdXp6aW5nIHRoZXNlIGZ1bmN0aW9ucyBpcyBpbXBvcnRhbnQgdG8gZW5zdXJlIHRoZSBuZXcgZXJyb3IgaGFuZGxpbmcgYmVoYXZlcyBjb3JyZWN0bHkgdW5kZXIgdmFyaW91cyBzb2NrZXQgc3RhdGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE0OjIxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNDJiNThkMWQ4MGJmMGZlOWNjYWJmOGQ3YzVjYTdjM2MzMjBmZmE2OVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTQ6MjE6MTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3Ztd192c29jay9hZl92c29jay5jIGIvbmV0L3Ztd192c29jay9hZl92c29jay5jXG5pbmRleCA2MjJkYmQwNDY3OTk0Li41OTRmZTI3ZDJlYmU2IDEwMDY0NFxuLS0tIGEvbmV0L3Ztd192c29jay9hZl92c29jay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmNcbkBAIC0xODQ3LDEyICYjNDM7MTg0NywxMCBAQCBzdGF0aWMgaW50IHZzb2NrX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKmFkZHIsXG4gXHRcdHByZXBhcmVfdG9fd2FpdChza19zbGVlcChzayksIFx1MDAyNndhaXQsIFRBU0tfSU5URVJSVVBUSUJMRSk7XG4gXHR9XG4gXG4tXHRpZiAoc2stXHUwMDNlc2tfZXJyKSB7XG4tXHRcdGVyciA9IC1zay1cdTAwM2Vza19lcnI7XG4mIzQzO1x0ZXJyID0gc29ja19lcnJvcihzayk7XG4mIzQzO1x0aWYgKGVycikge1xuIFx0XHRzay1cdTAwM2Vza19zdGF0ZSA9IFRDUF9DTE9TRTtcbiBcdFx0c29jay1cdTAwM2VzdGF0ZSA9IFNTX1VOQ09OTkVDVEVEO1xuLVx0fSBlbHNlIHtcbi1cdFx0ZXJyID0gMDtcbiBcdH1cbiBcbiBvdXRfd2FpdDpcbkBAIC0xODkzLDcgJiM0MzsxODkxLDcgQEAgc3RhdGljIGludCB2c29ja19hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jayxcbiBcdHRpbWVvdXQgPSBzb2NrX3JjdnRpbWVvKGxpc3RlbmVyLCBhcmctXHUwMDNlZmxhZ3MgXHUwMDI2IE9fTk9OQkxPQ0spO1xuIFxuIFx0d2hpbGUgKChjb25uZWN0ZWQgPSB2c29ja19kZXF1ZXVlX2FjY2VwdChsaXN0ZW5lcikpID09IE5VTEwgXHUwMDI2XHUwMDI2XG4tXHQgICAgICAgbGlzdGVuZXItXHUwMDNlc2tfZXJyID09IDAgXHUwMDI2XHUwMDI2IHRpbWVvdXQgIT0gMCkge1xuJiM0MztcdCAgICAgICB0aW1lb3V0ICE9IDApIHtcbiBcdFx0cHJlcGFyZV90b193YWl0KHNrX3NsZWVwKGxpc3RlbmVyKSwgXHUwMDI2d2FpdCwgVEFTS19JTlRFUlJVUFRJQkxFKTtcbiBcdFx0cmVsZWFzZV9zb2NrKGxpc3RlbmVyKTtcbiBcdFx0dGltZW91dCA9IHNjaGVkdWxlX3RpbWVvdXQodGltZW91dCk7XG5AQCAtMTkwNiwxMSAmIzQzOzE5MDQsOCBAQCBzdGF0aWMgaW50IHZzb2NrX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLFxuIFx0XHR9XG4gXHR9XG4gXG4tXHRpZiAobGlzdGVuZXItXHUwMDNlc2tfZXJyKSB7XG4tXHRcdGVyciA9IC1saXN0ZW5lci1cdTAwM2Vza19lcnI7XG4tXHR9IGVsc2UgaWYgKCFjb25uZWN0ZWQpIHtcbiYjNDM7XHRpZiAoIWNvbm5lY3RlZClcbiBcdFx0ZXJyID0gLUVBR0FJTjtcbi1cdH1cbiBcbiBcdGlmIChjb25uZWN0ZWQpIHtcbiBcdFx0c2tfYWNjZXB0cV9yZW1vdmVkKGxpc3RlbmVyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNDoyMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT41bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VlNPQ0tFVFMmIzM0OywKICAgICYjMzQ7VlNPQ0tFVFNfTE9PUEJBQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2c29ja19jb25uZWN0JiMzNDssCiAgICAmIzM0O3Zzb2NrX2FjY2VwdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgbG9naWMgaW4gYHZzb2NrX2Nvbm5lY3RgIGFuZCBgdnNvY2tfYWNjZXB0YCBmb3IgQUZfVlNPQ0sgc29ja2V0cy4gSXQgY2hhbmdlcyBob3cgYHNrX2VycmAgaXMgY2hlY2tlZCBhbmQgY2xlYXJlZCwgd2hpY2ggZGlyZWN0bHkgYWZmZWN0cyB0aGUgY29udHJvbCBmbG93IGFuZCByZXR1cm4gdmFsdWVzIG9mIHRoZXNlIGNvcmUgc29ja2V0IG9wZXJhdGlvbnMuIEZ1enppbmcgdGhlc2UgZnVuY3Rpb25zIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhlIG5ldyBlcnJvciBoYW5kbGluZyBiZWhhdmVzIGNvcnJlY3RseSB1bmRlciB2YXJpb3VzIHNvY2tldCBzdGF0ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0MmI1OGQxZDgwYmYwZmU5Y2NhYmY4ZDdjNWNhN2MzYzMyMGZmYTY5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgNCAxNDoyMToxMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC92bXdfdnNvY2svYWZfdnNvY2suYyBiL25ldC92bXdfdnNvY2svYWZfdnNvY2suYwppbmRleCA2MjJkYmQwNDY3OTk0Li41OTRmZTI3ZDJlYmU2IDEwMDY0NAotLS0gYS9uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3Ztd192c29jay9hZl92c29jay5jCkBAIC0xODQ3LDEyICYjNDM7MTg0NywxMCBAQCBzdGF0aWMgaW50IHZzb2NrX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKmFkZHIsCiAJCXByZXBhcmVfdG9fd2FpdChza19zbGVlcChzayksICZhbXA7d2FpdCwgVEFTS19JTlRFUlJVUFRJQkxFKTsKIAl9CiAKLQlpZiAoc2stJmd0O3NrX2VycikgewotCQllcnIgPSAtc2stJmd0O3NrX2VycjsKJiM0MzsJZXJyID0gc29ja19lcnJvcihzayk7CiYjNDM7CWlmIChlcnIpIHsKIAkJc2stJmd0O3NrX3N0YXRlID0gVENQX0NMT1NFOwogCQlzb2NrLSZndDtzdGF0ZSA9IFNTX1VOQ09OTkVDVEVEOwotCX0gZWxzZSB7Ci0JCWVyciA9IDA7CiAJfQogCiBvdXRfd2FpdDoKQEAgLTE4OTMsNyAmIzQzOzE4OTEsNyBAQCBzdGF0aWMgaW50IHZzb2NrX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLAogCXRpbWVvdXQgPSBzb2NrX3JjdnRpbWVvKGxpc3RlbmVyLCBhcmctJmd0O2ZsYWdzICZhbXA7IE9fTk9OQkxPQ0spOwogCiAJd2hpbGUgKChjb25uZWN0ZWQgPSB2c29ja19kZXF1ZXVlX2FjY2VwdChsaXN0ZW5lcikpID09IE5VTEwgJmFtcDsmYW1wOwotCSAgICAgICBsaXN0ZW5lci0mZ3Q7c2tfZXJyID09IDAgJmFtcDsmYW1wOyB0aW1lb3V0ICE9IDApIHsKJiM0MzsJICAgICAgIHRpbWVvdXQgIT0gMCkgewogCQlwcmVwYXJlX3RvX3dhaXQoc2tfc2xlZXAobGlzdGVuZXIpLCAmYW1wO3dhaXQsIFRBU0tfSU5URVJSVVBUSUJMRSk7CiAJCXJlbGVhc2Vfc29jayhsaXN0ZW5lcik7CiAJCXRpbWVvdXQgPSBzY2hlZHVsZV90aW1lb3V0KHRpbWVvdXQpOwpAQCAtMTkwNiwxMSAmIzQzOzE5MDQsOCBAQCBzdGF0aWMgaW50IHZzb2NrX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLAogCQl9CiAJfQogCi0JaWYgKGxpc3RlbmVyLSZndDtza19lcnIpIHsKLQkJZXJyID0gLWxpc3RlbmVyLSZndDtza19lcnI7Ci0JfSBlbHNlIGlmICghY29ubmVjdGVkKSB7CiYjNDM7CWlmICghY29ubmVjdGVkKQogCQllcnIgPSAtRUFHQUlOOwotCX0KIAogCWlmIChjb25uZWN0ZWQpIHsKIAkJc2tfYWNjZXB0cV9yZW1vdmVkKGxpc3RlbmVyKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTQ6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM4NgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDM0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHZzb2NrIENvbm5lY3Rpb24gYW5kIEFjY2VwdGFuY2UgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmNgLiBJdCBzZWVtcyB0byBiZSB0b3VjaGluZyBgdnNvY2tfY29ubmVjdGAgYW5kIGB2c29ja19hY2NlcHRgLCB3aGljaCBhcmUga2V5IGZvciBlc3RhYmxpc2hpbmcgYW5kIGhhbmRsaW5nIFZTT0NLIGNvbm5lY3Rpb25zLiBMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKSW4gYHZzb2NrX2Nvbm5lY3RgLCB0aGUgY2hhbmdlIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZXkmIzM5O3JlIHJlcGxhY2luZyB0aGUgZGlyZWN0IGNoZWNrIGZvciBgc2stJmd0O3NrX2VycmAgd2l0aCBhIGNhbGwgdG8gYHNvY2tfZXJyb3Ioc2spYC4gQmVmb3JlLCBpdCB3YXMgZXhwbGljaXRseSBjaGVja2luZyB0aGUgc29ja2V0JiMzOTtzIGVycm9yIHN0YXRlLiBOb3csIGl0IGFwcGVhcnMgYHNvY2tfZXJyb3JgIGlzIHJlc3BvbnNpYmxlIGZvciByZXRyaWV2aW5nIGFuZCBoYW5kbGluZyB0aGF0IGVycm9yLiBJJiMzOTtkIG5lZWQgdG8gbG9vayBhdCB0aGUgYHNvY2tfZXJyb3JgIGRlZmluaXRpb24gaXRzZWxmIHRvIGJlIHN1cmUuIFdoYXQmIzM5O3MgdGhlIGNvbnRleHQ/IEhtbS4KCkluIGB2c29ja19hY2NlcHRgLCB0aGV5JiMzOTt2ZSByZW1vdmVkIGEgY29uZGl0aW9uIGZyb20gdGhlIGFjY2VwdGFuY2UgbG9vcC4gU3BlY2lmaWNhbGx5LCB0aGV5JiMzOTt2ZSBkcm9wcGVkIHRoZSBgbGlzdGVuZXItJmd0O3NrX2VyciA9PSAwYCBjaGVjay4gTm93LCBpdCYjMzk7cyBqdXN0IGB3aGlsZSAoKGNvbm5lY3RlZCA9IHZzb2NrX2RlcXVldWVfYWNjZXB0KGxpc3RlbmVyKSkgPT0gTlVMTCAmYW1wOyZhbXA7IHRpbWVvdXQgIT0gMClgLiBUaGUgb2xkIHZlcnNpb24gd2FzIGd1YXJkaW5nIGFnYWluc3QgYWNjZXB0aW5nIGNvbm5lY3Rpb25zIGlmIHRoZSBsaXN0ZW5lciBzb2NrZXQgaGFkIGFuIGVycm9yLiBUaGV5JiMzOTt2ZSBhbHNvIHJlbW92ZWQgdGhlIGZpbmFsIGBsaXN0ZW5lci0mZ3Q7c2tfZXJyYCBjaGVjayBhZnRlciB0aGUgbG9vcC4KClRoYXQmIzM5O3MgYSBiaXQgY29uY2VybmluZy4gSWYgeW91IHJlbW92ZSBhbiBlcnJvciBjaGVjaywgaG93IGlzIHRoZSBhY2NlcHRhbmNlIGxvb3AgZ29pbmcgdG8gcmVhY3QgdG8gYW4gZXJyb3I/IEFoLCB3YWl0IGEgbWludXRlLCBJIHRoaW5rIEkgc2VlIGl0LiBUaGUgaW1wbGljYXRpb24gaXMgdGhhdCBgc29ja19lcnJvcmAgaXMgY2xlYXJpbmcgdGhlIGBza19lcnJgIGZpZWxkLiBMb29raW5nIGF0IHRoZSBjaGFuZ2VzIGluIGB2c29ja19jb25uZWN0YCBhZ2FpbiwgeWVzLCBpdCYjMzk7cyBjYWxsaW5nIGBzb2NrX2Vycm9yYC4KClJpZ2h0LCBgc29ja19lcnJvcmAgaXMgbGlrZWx5IGF0b21pY2FsbHkgZXhjaGFuZ2luZyB0aGUgZXJyb3IgY29kZSB3aXRoIHplcm8sIHVzaW5nIGB4Y2hnKCZhbXA7c2stJmd0O3NrX2VyciwgMClgLiBTbyB0aGUgZXJyb3IgaXMgY2xlYXJlZCB3aGVuIGl0IGlzIHJldHJpZXZlZCwgc28gd2UgZG9uJiMzOTt0IG5lZWQgdG8gY2hlY2suIENsZXZlci4gVGhleSBhcmUgcHJvYmFibHkgZG9pbmcgaXQgdGhpcyB3YXkgZm9yIHRoaXMgcmVhc29uIQoKSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgYHZzb2NrX2FjY2VwdGAgdG8gY29uZmlybSB0aGlzIGJlaGF2aW9yLiBJdCBzZWVtcyBsaWtlIGl0JiMzOTtzIGEgc2ltcGxpZmljYXRpb24sIHJlbHlpbmcgb24gYHNvY2tfZXJyb3JgIHRvIGhhbmRsZSBlcnJvciBwcm9wYWdhdGlvbiwgc28gdGhlcmUgaXNuJiMzOTt0IGEgZG91YmxlLWNoZWNrLiBPa2F5LCBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgc29ja19lcnJvcmAgaXMgaGFuZGxpbmcgdGhlIGVycm9yIGNsZWFyaW5nIGFzIEkgc3VzcGVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svYWZfdnNvY2suYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTg4MDpcdFx0XHRnb3RvIG91dDtcbjE4ODE6XHRcdH1cbjE4ODI6XHRcbjE4ODM6XHRcdGlmIChsaXN0ZW5lci1cdTAwM2Vza19zdGF0ZSAhPSBUQ1BfTElTVEVOKSB7XG4xODg0Olx0XHRcdGVyciA9IC1FSU5WQUw7XG4xODg1Olx0XHRcdGdvdG8gb3V0O1xuMTg4NjpcdFx0fVxuMTg4NzpcdFxuMTg4ODpcdFx0LyogV2FpdCBmb3IgY2hpbGRyZW4gc29ja2V0cyB0byBhcHBlYXI7IHRoZXNlIGFyZSB0aGUgbmV3IHNvY2tldHNcbjE4ODk6XHRcdCAqIGNyZWF0ZWQgdXBvbiBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQuXG4xODkwOlx0XHQgKi9cbjE4OTE6XHRcdHRpbWVvdXQgPSBzb2NrX3JjdnRpbWVvKGxpc3RlbmVyLCBhcmctXHUwMDNlZmxhZ3MgXHUwMDI2IE9fTk9OQkxPQ0spO1xuMTg5MjpcdFxuMTg5MzpcdFx0d2hpbGUgKChjb25uZWN0ZWQgPSB2c29ja19kZXF1ZXVlX2FjY2VwdChsaXN0ZW5lcikpID09IE5VTEwgXHUwMDI2XHUwMDI2XG4xODk0Olx0XHQgICAgICAgdGltZW91dCAhPSAwKSB7XG4xODk1Olx0XHRcdHByZXBhcmVfdG9fd2FpdChza19zbGVlcChsaXN0ZW5lciksIFx1MDAyNndhaXQsIFRBU0tfSU5URVJSVVBUSUJMRSk7XG4xODk2Olx0XHRcdHJlbGVhc2Vfc29jayhsaXN0ZW5lcik7XG4xODk3Olx0XHRcdHRpbWVvdXQgPSBzY2hlZHVsZV90aW1lb3V0KHRpbWVvdXQpO1xuMTg5ODpcdFx0XHRmaW5pc2hfd2FpdChza19zbGVlcChsaXN0ZW5lciksIFx1MDAyNndhaXQpO1xuMTg5OTpcdFx0XHRsb2NrX3NvY2sobGlzdGVuZXIpO1xuMTkwMDpcdFxuMTkwMTpcdFx0XHRpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpIHtcbjE5MDI6XHRcdFx0XHRlcnIgPSBzb2NrX2ludHJfZXJybm8odGltZW91dCk7XG4xOTAzOlx0XHRcdFx0Z290byBvdXQ7XG4xOTA0Olx0XHRcdH1cbjE5MDU6XHRcdH1cbjE5MDY6XHRcbjE5MDc6XHRcdGlmICghY29ubmVjdGVkKVxuMTkwODpcdFx0XHRlcnIgPSAtRUFHQUlOO1xuMTkwOTpcdFxuMTkxMDpcdFx0aWYgKGNvbm5lY3RlZCkge1xuMTkxMTpcdFx0XHRza19hY2NlcHRxX3JlbW92ZWQobGlzdGVuZXIpO1xuMTkxMjpcdFxuMTkxMzpcdFx0XHRsb2NrX3NvY2tfbmVzdGVkKGNvbm5lY3RlZCwgU0lOR0xFX0RFUFRIX05FU1RJTkcpO1xuMTkxNDpcdFx0XHR2Y29ubmVjdGVkID0gdnNvY2tfc2soY29ubmVjdGVkKTtcbjE5MTU6XHRcbjE5MTY6XHRcdFx0LyogSWYgdGhlIGxpc3RlbmVyIHNvY2tldCBoYXMgcmVjZWl2ZWQgYW4gZXJyb3IsIHRoZW4gd2Ugc2hvdWxkXG4xOTE3Olx0XHRcdCAqIHJlamVjdCB0aGlzIHNvY2tldCBhbmQgcmV0dXJuLiAgTm90ZSB0aGF0IHdlIHNpbXBseSBtYXJrIHRoZVxuMTkxODpcdFx0XHQgKiBzb2NrZXQgcmVqZWN0ZWQsIGRyb3Agb3VyIHJlZmVyZW5jZSwgYW5kIGxldCB0aGUgY2xlYW51cFxuMTkxOTpcdFx0XHQgKiBmdW5jdGlvbiBoYW5kbGUgdGhlIGNsZWFudXA7IHRoZSBmYWN0IHRoYXQgd2UgZm91bmQgaXQgaW5cbjE5MjA6XHRcdFx0ICogdGhlIGxpc3RlbmVyJiMzOTtzIGFjY2VwdCBxdWV1ZSBndWFyYW50ZWVzIHRoYXQgdGhlIGNsZWFudXBcbjE5MjE6XHRcdFx0ICogZnVuY3Rpb24gaGFzbiYjMzk7dCBydW4geWV0LlxuMTkyMjpcdFx0XHQgKi9cbjE5MjM6XHRcdFx0aWYgKGVycikge1xuMTkyNDpcdFx0XHRcdHZjb25uZWN0ZWQtXHUwMDNlcmVqZWN0ZWQgPSB0cnVlO1xuMTkyNTpcdFx0XHR9IGVsc2Uge1xuMTkyNjpcdFx0XHRcdG5ld3NvY2stXHUwMDNlc3RhdGUgPSBTU19DT05ORUNURUQ7XG4xOTI3Olx0XHRcdFx0c29ja19ncmFmdChjb25uZWN0ZWQsIG5ld3NvY2spO1xuMTkyODpcdFxuMTkyOTpcdFx0XHRcdHNldF9iaXQoU09DS19DVVNUT01fU09DS09QVCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTY4CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYHZzb2NrX2FjY2VwdGAgRnVuY3Rpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgcmVtZW1iZXIgdGhhdCBgZXJyYCBpcyBpbml0aWFsaXplZCB0byAwIGF0IHRoZSBzdGFydCBvZiBgdnNvY2tfYWNjZXB0YC4gSWYgYSBjb25uZWN0aW9uIGlzbiYjMzk7dCBlc3RhYmxpc2hlZCAoYCFjb25uZWN0ZWRgKSwgYGVycmAgaXMgc2V0IHRvIGAtRUFHQUlOYC4gVGhlbiwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgbG9naWMgd2hlcmUgYGxpc3RlbmVyLSZndDtza19lcnJgIHdhcyBiZWluZyBjaGVja2VkLiBUaGUgc3RydWN0dXJlIGJlZm9yZSB0aGUgY2hhbmdlIHdhczoKYGBgYwoJaWYgKGxpc3RlbmVyLSZndDtza19lcnIpIHsKCQllcnIgPSAtbGlzdGVuZXItJmd0O3NrX2VycjsKCX0gZWxzZSBpZiAoIWNvbm5lY3RlZCkgewoJCWVyciA9IC1FQUdBSU47Cgl9CmBgYApIb3dldmVyLCB3YWl0LCB0aGUgb3JpZ2luYWwgY29kZSBoYWQgYSBkaWZmZXJlbnQgc3RydWN0dXJlLiBMZXQgbWUgcmVjYWxsIGl0OgpgYGBjCgllcnIgPSAwOwoKCWxvY2tfc29jayhsaXN0ZW5lcik7CgoJaWYgKHNvY2stJmd0O3R5cGUgIT0gU09DS19TVFJFQU0gJmFtcDsmYW1wOyBzb2NrLSZndDt0eXBlICE9IFNPQ0tfU0VRUEFDS0VUKSB7CgkJZXJyID0gLUVPUE5PVFNVUFA7CgkJZ290byBvdXQ7Cgl9CgoJaWYgKGxpc3RlbmVyLSZndDtza19zdGF0ZSAhPSBUQ1BfTElTVEVOKSB7CgkJZXJyID0gLUVJTlZBTDsKCQlnb3RvIG91dDsKCX0KCgkvKiBXYWl0IGZvciBjaGlsZHJlbiBzb2NrZXRzIHRvIGFwcGVhcjsgdGhlc2UgYXJlIHRoZSBuZXcgc29ja2V0cwoJICogY3JlYXRlZCB1cG9uIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudC4KCSAqLwoJdGltZW91dCA9IHNvY2tfcmN2dGltZW8obGlzdGVuZXIsIGFyZy0mZ3Q7ZmxhZ3MgJmFtcDsgT19OT05CTE9DSyk7CgoJd2hpbGUgKChjb25uZWN0ZWQgPSB2c29ja19kZXF1ZXVlX2FjY2VwdChsaXN0ZW5lcikpID09IE5VTEwgJmFtcDsmYW1wOwoJICAgICAgIGxpc3RlbmVyLSZndDtza19lcnIgPT0gMCAmYW1wOyZhbXA7IHRpbWVvdXQgIT0gMCkgewoJCXByZXBhcmVfdG9fd2FpdChza19zbGVlcChsaXN0ZW5lciksICZhbXA7d2FpdCwgVEFTS19JTlRFUlJVUFRJQkxFKTsKCQlyZWxlYXNlX3NvY2sobGlzdGVuZXIpOwoJCXRpbWVvdXQgPSBzY2hlZHVsZV90aW1lb3V0KHRpbWVvdXQpOwoJCWZpbmlzaF93YWl0KHNrX3NsZWVwKGxpc3RlbmVyKSwgJmFtcDt3YWl0KTsKCQlsb2NrX3NvY2sobGlzdGVuZXIpOwoKCQlpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpIHsKCQkJZXJyID0gc29ja19pbnRyX2Vycm5vKHRpbWVvdXQpOwoJCQlnb3RvIG91dDsKCQl9Cgl9CgoJaWYgKGxpc3RlbmVyLSZndDtza19lcnIpIHsKCQllcnIgPSAtbGlzdGVuZXItJmd0O3NrX2VycjsKCX0gZWxzZSBpZiAoIWNvbm5lY3RlZCkgewoJCWVyciA9IC1FQUdBSU47Cgl9CmBgYApOb3cgSSBzZWUgaXQhIFRoZSBwYXRjaCBjb21wbGV0ZWx5IHJlbW92ZXMgdGhlIGBsaXN0ZW5lci0mZ3Q7c2tfZXJyYCBjaGVjayB3aXRoaW4gdGhlIGB2c29ja19hY2NlcHRgIGZ1bmN0aW9uLiBUaGlzIGlzIHNpZ25pZmljYW50LiBJdCBtZWFucyB0aGUgb3JpZ2luYWwgZXJyb3IgaGFuZGxpbmcgbWVjaGFuaXNtLCB3aGljaCBjaGVja2VkIGlmIHRoZSBsaXN0ZW5lciBzb2NrZXQgaGFkIGFuIGVycm9yIGJlZm9yZSBjaGVja2luZyBmb3IgYSBjb25uZWN0aW9uLCBpcyBubyBsb25nZXIgcHJlc2VudC4gSSYjMzk7ZCBiZXR0ZXIgY29uZmlybSB0aGlzIGJ5IGNoZWNraW5nIHRoZSBvcmlnaW5hbCBjb2RlIG9mIGB2c29ja19hY2NlcHRgIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dnNvY2tfYWNjZXB0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3Ztd192c29jay9hZl92c29jay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svYWZfdnNvY2suYz0xNjc3PXN0YXRpYyBpbnQgdnNvY2tfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqYWRkcixcbi0tXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtMTg2Mi1cbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYzoxODYzOnN0YXRpYyBpbnQgdnNvY2tfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtMTg2NC1cdFx0XHRzdHJ1Y3QgcHJvdG9fYWNjZXB0X2FyZyAqYXJnKVxuLS1cbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYz0yNjM5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHZzb2NrX3N0cmVhbV9vcHMgPSB7XG4tLVxubmV0L3Ztd192c29jay9hZl92c29jay5jLTI2NDUtXHQuc29ja2V0cGFpciA9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYzoyNjQ2Olx0LmFjY2VwdCA9IHZzb2NrX2FjY2VwdCxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYy0yNjQ3LVx0LmdldG5hbWUgPSB2c29ja19nZXRuYW1lLFxuLS1cbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYz0yNjYxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHZzb2NrX3NlcXBhY2tldF9vcHMgPSB7XG4tLVxubmV0L3Ztd192c29jay9hZl92c29jay5jLTI2NjctXHQuc29ja2V0cGFpciA9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYzoyNjY4Olx0LmFjY2VwdCA9IHZzb2NrX2FjY2VwdCxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYy0yNjY5LVx0LmdldG5hbWUgPSB2c29ja19nZXRuYW1lLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE0OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0NjEKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGl2aW5nIEJhY2sgaW50byBgdnNvY2tfYWNjZXB0YCoqCgpSaWdodCwgbGV0JiMzOTtzIGNpcmNsZSBiYWNrIHRvIGB2c29ja19hY2NlcHRgIGluIGBuZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmNgLiBJJiMzOTttIGdvaW5nIHRvIHJlLWV4YW1pbmUgdGhhdCBmdW5jdGlvbi4gSXQgZmVlbHMgbGlrZSB3ZSYjMzk7dmUgYmVlbiBydW5uaW5nIGludG8gc29tZSBpc3N1ZXMgb24gdGhlIGNvbm5lY3Rpb24gZnJvbnQsIGFuZCBgdnNvY2tfYWNjZXB0YCBpcyBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoYXQgcHV6emxlLiBUaW1lIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyBpdCBoYW5kbGVzIGluY29taW5nIGNvbm5lY3Rpb24gcmVxdWVzdHMsIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyB0cmFuc3BvcnQsIGFuZCB3aGVyZSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIGxvY2tpbmcgaXNzdWVzIG1pZ2h0IGJlIGx1cmtpbmcuIEkmIzM5O2xsIGZvY3VzIG9uIGhvdyBpdCBtYW5hZ2VzIHRoZSBhY2NlcHQgcXVldWUsIGhvdyB0aGUgaGFuZHNoYWtlIGlzIGluaXRpYXRlZCwgYW5kIHdoYXQgZXJyb3IgaGFuZGxpbmcgaXMgaW4gcGxhY2UuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgc3VidGxlLiBVbmRlcnN0YW5kaW5nIHRoZSBmbG93IG9mIGNvbnRyb2wgaGVyZSBpcyBwYXJhbW91bnQuIFRoaXMgd2lsbCBiZSBhIHN1cmdpY2FsIGFuYWx5c2lzOyBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGFyZWEgdGhhdCBuZWVkcyBmdXJ0aGVyIGluc3BlY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE4NjA6XHRcdHJldHVybiBlcnI7XG4xODYxOlx0fVxuMTg2MjpcdFxuMTg2MzpcdHN0YXRpYyBpbnQgdnNvY2tfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssXG4xODY0Olx0XHRcdFx0c3RydWN0IHByb3RvX2FjY2VwdF9hcmcgKmFyZylcbjE4NjU6XHR7XG4xODY2Olx0XHRzdHJ1Y3Qgc29jayAqbGlzdGVuZXI7XG4xODY3Olx0XHRpbnQgZXJyO1xuMTg2ODpcdFx0c3RydWN0IHNvY2sgKmNvbm5lY3RlZDtcbjE4Njk6XHRcdHN0cnVjdCB2c29ja19zb2NrICp2Y29ubmVjdGVkO1xuMTg3MDpcdFx0bG9uZyB0aW1lb3V0O1xuMTg3MTpcdFx0REVGSU5FX1dBSVQod2FpdCk7XG4xODcyOlx0XG4xODczOlx0XHRlcnIgPSAwO1xuMTg3NDpcdFx0bGlzdGVuZXIgPSBzb2NrLVx1MDAzZXNrO1xuMTg3NTpcdFxuMTg3NjpcdFx0bG9ja19zb2NrKGxpc3RlbmVyKTtcbjE4Nzc6XHRcbjE4Nzg6XHRcdGlmICghc29ja190eXBlX2Nvbm5lY3RpYmxlKHNvY2stXHUwMDNldHlwZSkpIHtcbjE4Nzk6XHRcdFx0ZXJyID0gLUVPUE5PVFNVUFA7XG4xODgwOlx0XHRcdGdvdG8gb3V0O1xuMTg4MTpcdFx0fVxuMTg4MjpcdFxuMTg4MzpcdFx0aWYgKGxpc3RlbmVyLVx1MDAzZXNrX3N0YXRlICE9IFRDUF9MSVNURU4pIHtcbjE4ODQ6XHRcdFx0ZXJyID0gLUVJTlZBTDtcbjE4ODU6XHRcdFx0Z290byBvdXQ7XG4xODg2Olx0XHR9XG4xODg3Olx0XG4xODg4Olx0XHQvKiBXYWl0IGZvciBjaGlsZHJlbiBzb2NrZXRzIHRvIGFwcGVhcjsgdGhlc2UgYXJlIHRoZSBuZXcgc29ja2V0c1xuMTg4OTpcdFx0ICogY3JlYXRlZCB1cG9uIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudC5cbjE4OTA6XHRcdCAqL1xuMTg5MTpcdFx0dGltZW91dCA9IHNvY2tfcmN2dGltZW8obGlzdGVuZXIsIGFyZy1cdTAwM2VmbGFncyBcdTAwMjYgT19OT05CTE9DSyk7XG4xODkyOlx0XG4xODkzOlx0XHR3aGlsZSAoKGNvbm5lY3RlZCA9IHZzb2NrX2RlcXVldWVfYWNjZXB0KGxpc3RlbmVyKSkgPT0gTlVMTCBcdTAwMjZcdTAwMjZcbjE4OTQ6XHRcdCAgICAgICB0aW1lb3V0ICE9IDApIHtcbjE4OTU6XHRcdFx0cHJlcGFyZV90b193YWl0KHNrX3NsZWVwKGxpc3RlbmVyKSwgXHUwMDI2d2FpdCwgVEFTS19JTlRFUlJVUFRJQkxFKTtcbjE4OTY6XHRcdFx0cmVsZWFzZV9zb2NrKGxpc3RlbmVyKTtcbjE4OTc6XHRcdFx0dGltZW91dCA9IHNjaGVkdWxlX3RpbWVvdXQodGltZW91dCk7XG4xODk4Olx0XHRcdGZpbmlzaF93YWl0KHNrX3NsZWVwKGxpc3RlbmVyKSwgXHUwMDI2d2FpdCk7XG4xODk5Olx0XHRcdGxvY2tfc29jayhsaXN0ZW5lcik7XG4xOTAwOlx0XG4xOTAxOlx0XHRcdGlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkge1xuMTkwMjpcdFx0XHRcdGVyciA9IHNvY2tfaW50cl9lcnJubyh0aW1lb3V0KTtcbjE5MDM6XHRcdFx0XHRnb3RvIG91dDtcbjE5MDQ6XHRcdFx0fVxuMTkwNTpcdFx0fVxuMTkwNjpcdFxuMTkwNzpcdFx0aWYgKCFjb25uZWN0ZWQpXG4xOTA4Olx0XHRcdGVyciA9IC1FQUdBSU47XG4xOTA5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTQ6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM4NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZTT0NLRVRTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3Ztd192c29jay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svS2NvbmZpZy01LVxubmV0L3Ztd192c29jay9LY29uZmlnOjY6Y29uZmlnIFZTT0NLRVRTXG5uZXQvdm13X3Zzb2NrL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgU29ja2V0IHByb3RvY29sXCYjMzQ7XG4tLVxubmV0L3Ztd192c29jay9LY29uZmlnLTE4LVxubmV0L3Ztd192c29jay9LY29uZmlnOjE5OmNvbmZpZyBWU09DS0VUU19ESUFHXG5uZXQvdm13X3Zzb2NrL0tjb25maWctMjAtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIFNvY2tldHMgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQvdm13X3Zzb2NrL0tjb25maWctMjgtXG5uZXQvdm13X3Zzb2NrL0tjb25maWc6Mjk6Y29uZmlnIFZTT0NLRVRTX0xPT1BCQUNLXG5uZXQvdm13X3Zzb2NrL0tjb25maWctMzAtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIFNvY2tldHMgbG9vcGJhY2sgdHJhbnNwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE0OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5NDUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipWU09DS0VUUyBEZXBlbmRlbmN5IENoZWNrKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBgVlNPQ0tFVFNgIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBjb21wbGV0ZSBkZXBlbmRlbmN5IHRyZWUsIGFuZCBJIG5lZWQgdG8gZG8gaXQgd2l0aCBhIGZvY3VzIG9uIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBhbmQgYW55IGFyZWFzIHdoZXJlIG91dGRhdGVkIG9yIGluY29tcGF0aWJsZSB2ZXJzaW9ucyBtaWdodCBiZSBsdXJraW5nLiBBcmUgd2UgdGFsa2luZyBqdXN0IHRoZSBvYnZpb3VzIGBsaWJ2c29ja2V0YCBhbmQgaXRzIGltbWVkaWF0ZSByZXF1aXJlbWVudHMsIG9yIGRvIHdlIGhhdmUgaW5kaXJlY3QgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIGdvaW5nIHRvIGJpdGUgdXMgZG93biB0aGUgbGluZT8gVGhpcyBpc24mIzM5O3QganVzdCBhYm91dCBtYWtpbmcgc3VyZSBldmVyeXRoaW5nICp3b3Jrcyo7IGl0JiMzOTtzIGFib3V0IGFudGljaXBhdGluZyBpc3N1ZXMgYmVmb3JlIHRoZXkgbWFuaWZlc3QgYXMgY3JpdGljYWwgYnVncyBvciBzZWN1cml0eSByaXNrcy4gSSBuZWVkIHRvIGNyb3NzLXJlZmVyZW5jZSB3aXRoIHRoZSBsYXRlc3Qgc2VjdXJpdHkgYWR2aXNvcmllcywgYW5kIHRoZSB2ZXJzaW9uIGNvbXBhdGliaWxpdHkgbWF0cml4LCBmb3IgdGhlIHVuZGVybHlpbmcga2VybmVsIGFuZCBoeXBlcnZpc29yLCBlc3BlY2lhbGx5IGlmIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBjb21wbGV4IHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBBbHNvLCBhcmUgd2UgdXNpbmcgYW55IGN1c3RvbSBvciBwYXRjaGVkIHZlcnNpb25zIGFueXdoZXJlPyBUaW1lIHRvIHB1bGwgdXAgdGhlIGRlcGVuZGVuY3kgZ3JhcGhzIGFuZCB2ZXJzaW9uIG1hbmlmZXN0cyBhbmQgZ2V0IGEgY2xlYXIgcGljdHVyZS4gR290dGEgbWFrZSBzdXJlIHdlJiMzOTtyZSBub3QgYnVpbGRpbmcgYSBob3VzZSBvZiBjYXJkcyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNDoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFZzb2NrIHByb3RvY29sXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBWU09DS0VUU1xuICAgNzpcdFx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBTb2NrZXQgcHJvdG9jb2xcJiMzNDtcbiAgIDg6XHRcdGhlbHBcbiAgIDk6XHRcdCAgVmlydHVhbCBTb2NrZXQgUHJvdG9jb2wgaXMgYSBzb2NrZXQgcHJvdG9jb2wgc2ltaWxhciB0byBUQ1AvSVBcbiAgMTA6XHRcdCAgYWxsb3dpbmcgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIFZpcnR1YWwgTWFjaGluZXMgYW5kIGh5cGVydmlzb3JcbiAgMTE6XHRcdCAgb3IgaG9zdC5cbiAgMTI6XHRcbiAgMTM6XHRcdCAgWW91IHNob3VsZCBhbHNvIHNlbGVjdCBvbmUgb3IgbW9yZSBoeXBlcnZpc29yLXNwZWNpZmljIHRyYW5zcG9ydHNcbiAgMTQ6XHRcdCAgYmVsb3cuXG4gIDE1Olx0XG4gIDE2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAgMTc6XHRcdCAgd2lsbCBiZSBjYWxsZWQgdnNvY2suIElmIHVuc3VyZSwgc2F5IE4uXG4gIDE4Olx0XG4gIDE5Olx0Y29uZmlnIFZTT0NLRVRTX0RJQUdcbiAgMjA6XHRcdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgU29ja2V0cyBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDY3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guCgoqKkFuYWx5emluZyB0aGUgVlNPQ0tFVFMgRGVwZW5kZW5jeSBTdHJ1Y3R1cmUqKgoKSG1tLCBzbyBgVlNPQ0tFVFNgIGl0c2VsZiwgYXMgSSB1bmRlcnN0YW5kIGl0LCBpZGVhbGx5ICpzaG91bGRuJiMzOTt0KiBoYXZlIGFueSBleHRlcm5hbCBkZXBlbmRlbmNpZXMgYmV5b25kIGBORVRgLiBBbmQgc2luY2UgYG5ldC9gIGlzIHdoZXJlIGl0IGxpdmVzLCB0aGF0IGRlcGVuZGVuY3kgaXMga2luZCBvZiBiYWtlZCBpbi4gVGhhdCBzZWVtcyBsb2dpY2FsLiBCdXQgdGhlIHJlYWwgcXVlc3Rpb24gaXMgaG93IHdlIGFjdHVhbGx5IHRlc3QgaXQuIFRvIHByb3Blcmx5IHZhbGlkYXRlIHRoZSBmdW5jdGlvbmFsaXR5IG9mIGBWU09DS0VUU2AsIHdlJiMzOTtyZSBsaWtlbHkgZ29pbmcgdG8gbmVlZCBzb21lIGtpbmQgb2YgdHJhbnNwb3J0IGxheWVyLiBUaGF0JiMzOTtzIHdoZXJlIHNvbWV0aGluZyBsaWtlIGBWU09DS0VUU19MT09QQkFDS2AgY29tZXMgaW50byB0aGUgcGljdHVyZS4gSXQmIzM5O3Mgbm90IGEgKmRpcmVjdCogZGVwZW5kZW5jeSBvZiBgVlNPQ0tFVFNgIGluIHRoZSBjb3JlIHNlbnNlIG9mIHRoZSBjb2RlLCBidXQgaXQgaXMgYSBkZXBlbmRlbmN5IGluIHByYWN0aWNlLCBmb3IgZWZmZWN0aXZlIHRlc3RpbmcgYW5kIGV2YWx1YXRpb24uIFRoZSBpbXBsaWNhdGlvbiBpcyB3ZSBuZWVkIGEgdGVzdCBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDIxOlx0XHRkZXBlbmRzIG9uIFZTT0NLRVRTXG4gIDIyOlx0XHRkZWZhdWx0IHlcbiAgMjM6XHRcdGhlbHBcbiAgMjQ6XHRcdCAgU3VwcG9ydCBmb3IgUEZfVlNPQ0sgc29ja2V0cyBtb25pdG9yaW5nIGludGVyZmFjZSB1c2VkIGJ5IHRoZSBzcyB0b29sLlxuICAyNTpcdFx0ICBJZiB1bnN1cmUsIHNheSBZLlxuICAyNjpcdFxuICAyNzpcdFx0ICBFbmFibGUgdGhpcyBtb2R1bGUgc28gdXNlcnNwYWNlIGFwcGxpY2F0aW9ucyBjYW4gcXVlcnkgb3BlbiBzb2NrZXRzLlxuICAyODpcdFxuICAyOTpcdGNvbmZpZyBWU09DS0VUU19MT09QQkFDS1xuICAzMDpcdFx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBTb2NrZXRzIGxvb3BiYWNrIHRyYW5zcG9ydFwmIzM0O1xuICAzMTpcdFx0ZGVwZW5kcyBvbiBWU09DS0VUU1xuICAzMjpcdFx0ZGVmYXVsdCB5XG4gIDMzOlx0XHRzZWxlY3QgVklSVElPX1ZTT0NLRVRTX0NPTU1PTlxuICAzNDpcdFx0aGVscFxuICAzNTpcdFx0ICBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGEgbG9vcGJhY2sgdHJhbnNwb3J0IGZvciBWaXJ0dWFsIFNvY2tldHMsXG4gIDM2Olx0XHQgIHVzaW5nIHZtd192c29ja192aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5cbiAgMzc6XHRcbiAgMzg6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuICAzOTpcdFx0ICB3aWxsIGJlIGNhbGxlZCB2c29ja19sb29wYmFjay4gSWYgdW5zdXJlLCBzYXkgTi5cbiAgNDA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzk5OQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgbGlrZSB5b3U6CgoqKkV4YW1pbmluZyBWaXJ0dWFsIFNvY2tldHMgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCBlbmFibGluZyBgVlNPQ0tFVFNgIGFuZCBgVlNPQ0tFVFNfTE9PUEJBQ0tgIHNlZW1zIGxpa2UgYSBzb2xpZCBpbml0aWFsIG1vdmUuIEhvbGQgb24gYSBzZWNvbmQsIHRoYXQgYFZTT0NLRVRTX0xPT1BCQUNLYCBpcyBzZXQgYXMgYGRlZmF1bHQgeWAsIHNvIHRoYXQmIzM5O3MgYWxyZWFkeSBpbiB0aGUgbWl4LCBubyBuZWVkIHRvIG92ZXJ0aGluayB0aGF0LiBIbW0sIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGF2YWlsYWJsZSB0cmFuc3BvcnRzIGJleW9uZCB0aGUgYmFzaWNzLiBMZXQgbWUgcXVpY2tseSBzY2FuIGZvciBgVklSVElPX1ZTT0NLRVRTYCwgc2VlIGlmIHRoYXQmIzM5O3MgYW4gb3B0aW9uIG9yIGlmIGl0JiMzOTtzIHRoZSBvbmx5IHJlYWwgY2hvaWNlIHdlIGhhdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWSVJUSU9fVlNPQ0tFVFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3Ztd192c29jay9LY29uZmlnPTQxPWNvbmZpZyBWTVdBUkVfVk1DSV9WU09DS0VUU1xuLS1cbm5ldC92bXdfdnNvY2svS2NvbmZpZy01Mi1cbm5ldC92bXdfdnNvY2svS2NvbmZpZzo1Mzpjb25maWcgVklSVElPX1ZTT0NLRVRTXG5uZXQvdm13X3Zzb2NrL0tjb25maWctNTQtXHR0cmlzdGF0ZSBcJiMzNDt2aXJ0aW8gdHJhbnNwb3J0IGZvciBWaXJ0dWFsIFNvY2tldHNcJiMzNDtcbi0tXG5uZXQvdm13X3Zzb2NrL0tjb25maWctNjUtXG5uZXQvdm13X3Zzb2NrL0tjb25maWc6NjY6Y29uZmlnIFZJUlRJT19WU09DS0VUU19DT01NT05cbm5ldC92bXdfdnNvY2svS2NvbmZpZy02Ny1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE0OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg0MDgKCQkJCQkJCW91dHB1dDogMTM0CgkJCQkJCQl0aG91Z2h0czogMjg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFZTT0NLIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBvdmVyIHRoaXMgcGF0Y2gsIGFuZCBJJiMzOTttIGZvY3VzaW5nIG9uIGEgY291cGxlIG9mIGtleSBhcmVhcy4gSSBuZWVkIHRvIGtlZXAgYFZTT0NLRVRTYCBhbmQgYFZTT0NLRVRTX0xPT1BCQUNLYCBpbiBtaW5kLCBhcyBJJiMzOTtsbCBwcm9iYWJseSBiZSBlbmFibGluZyB0aG9zZSBjb25maWdzIGR1cmluZyB0ZXN0aW5nLiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYHZzb2NrX2Nvbm5lY3RgIGFuZCBgdnNvY2tfYWNjZXB0YCwgd2hpY2ggYXJlIGZ1bmRhbWVudGFsIGZvciBgQUZfVlNPQ0tgIHNvY2tldHMuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSByZXNpZGVzLgoKVGhlIGNoYW5nZSBpdHNlbGYgaXMgZnVuY3Rpb25hbDsgaXQmIzM5O3MgYWxsIGFib3V0IGhvdyB0aGVzZSBmdW5jdGlvbnMgaGFuZGxlIGVycm9ycyBub3cuIEZvciBgY29ubmVjdGAsIHRoZXkmIzM5O3JlIHVzaW5nIGBzb2NrX2Vycm9yKHNrKWAsIHdoaWNoIGNsZWFycyB0aGUgZXJyb3IgZmxhZy4gVGhhdCBzb3VuZHMgcmVhc29uYWJsZS4gRm9yIGBhY2NlcHRgLCBpdCYjMzk7cyBpZ25vcmluZyBgc2tfZXJyYCBvbiB0aGUgbGlzdGVuZXIgc29ja2V0LiBJIHRoaW5rIHRoYXQmIzM5O3MgdGhlIGNvcnJlY3QgYXBwcm9hY2guIExpc3RlbmVyIHNvY2tldHMgc2hvdWxkbiYjMzk7dCBhYm9ydCBgYWNjZXB0YCBpZiBhIHNwZWNpZmljIGluY29taW5nIGNvbm5lY3Rpb24gZmFpbHMsIGxpa2UgaWYgdGhleSByZWNlaXZlIGEgUlNULiBUaG91Z2gsIGhtbSwgSSBzaG91bGQgaW52ZXN0aWdhdGUgZnVydGhlcjsgcGVyaGFwcyBhbiBhc3luY2hyb25vdXMgZXJyb3IgY291bGQgc2V0IGBza19lcnJgIGFuZCBzdGlsbCBuZWVkIHRvIGJlIG1hbmFnZWQsIGJ1dCBgYWNjZXB0YCBzaG91bGRuJiMzOTt0IGJlIGJsb2NrZWQuCgpUbyBzdW1tYXJpemUgbXkgYXBwcm9hY2ggdG8gdGhpcyBwYXRjaDogSSYjMzk7bSBjbGFzc2lmeWluZyB0aGlzIGFzICoqV29ydGhGdXp6aW5nOiB0cnVlKiouIFRoZSBgRm9jdXNTeW1ib2xzYCB3aWxsIGFic29sdXRlbHkgYmUgYHZzb2NrX2Nvbm5lY3RgIGFuZCBgdnNvY2tfYWNjZXB0YCwgdGhlc2UgYXJlIHRoZSBwb2ludHMgb2YgaW50ZXJlc3QuIE15IGBFbmFibGVDb25maWdzYCB3aWxsIGJlIGBWU09DS0VUU2AgYW5kIGBWU09DS0VUU19MT09QQkFDS2AuIFRoZSBjb3JlIG9mIG15IHJlYXNvbmluZyBpcyB0aGlzOiB0aGUgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgdGhlIGVycm9yIGhhbmRsaW5nIHdpdGhpbiBgdnNvY2tfY29ubmVjdGAgYW5kIGB2c29ja19hY2NlcHRgIGZvciBgQUZfVlNPQ0tgIHNvY2tldHMuIFRoZSBzcGVjaWZpYyBjaGFuZ2VzIHRvIGhvdyBgc2tfZXJyYCBpcyBjaGVja2VkIGFuZCBjbGVhcmVkIHdpbGwgaGF2ZSBhIGRpcmVjdCBpbXBhY3Qgb24gdGhlIGNvbnRyb2wgZmxvdyBhbmQgcmV0dXJuIHZhbHVlcyBvZiB0aGVzZSBjcml0aWNhbCBzb2NrZXQgb3BlcmF0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIG5ldyBlcnJvciBoYW5kbGluZyBiZWhhdmVzIGNvcnJlY3RseSB1bmRlciBhbGwgc29ydHMgb2Ygc29ja2V0IHN0YXRlcywgc28gSSYjMzk7bGwgZGVzaWduIHRlc3QgY2FzZXMgdG8gdGhhdCBlbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE0OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWU09DS0VUUyYjMzQ7LAogICAgJiMzNDtWU09DS0VUU19MT09QQkFDSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zzb2NrX2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7dnNvY2tfYWNjZXB0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBsb2dpYyBpbiBgdnNvY2tfY29ubmVjdGAgYW5kIGB2c29ja19hY2NlcHRgIGZvciBBRl9WU09DSyBzb2NrZXRzLiBJdCBjaGFuZ2VzIGhvdyBgc2tfZXJyYCBpcyBjaGVja2VkIGFuZCBjbGVhcmVkLCB3aGljaCBkaXJlY3RseSBhZmZlY3RzIHRoZSBjb250cm9sIGZsb3cgYW5kIHJldHVybiB2YWx1ZXMgb2YgdGhlc2UgY29yZSBzb2NrZXQgb3BlcmF0aW9ucy4gRnV6emluZyB0aGVzZSBmdW5jdGlvbnMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGUgbmV3IGVycm9yIGhhbmRsaW5nIGJlaGF2ZXMgY29ycmVjdGx5IHVuZGVyIHZhcmlvdXMgc29ja2V0IHN0YXRlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VlNPQ0tFVFMmIzM0OywKICAgICYjMzQ7VlNPQ0tFVFNfTE9PUEJBQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2c29ja19jb25uZWN0JiMzNDssCiAgICAmIzM0O3Zzb2NrX2FjY2VwdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgbG9naWMgaW4gYHZzb2NrX2Nvbm5lY3RgIGFuZCBgdnNvY2tfYWNjZXB0YCBmb3IgQUZfVlNPQ0sgc29ja2V0cy4gSXQgY2hhbmdlcyBob3cgYHNrX2VycmAgaXMgY2hlY2tlZCBhbmQgY2xlYXJlZCwgd2hpY2ggZGlyZWN0bHkgYWZmZWN0cyB0aGUgY29udHJvbCBmbG93IGFuZCByZXR1cm4gdmFsdWVzIG9mIHRoZXNlIGNvcmUgc29ja2V0IG9wZXJhdGlvbnMuIEZ1enppbmcgdGhlc2UgZnVuY3Rpb25zIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhlIG5ldyBlcnJvciBoYW5kbGluZyBiZWhhdmVzIGNvcnJlY3RseSB1bmRlciB2YXJpb3VzIHNvY2tldCBzdGF0ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNDoyMToxMS43NTI0NTY4ODhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjI5MzM4NzM0NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVlNPQ0tFVFNcIixcbiAgICBcIlZTT0NLRVRTX0xPT1BCQUNLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidnNvY2tfY29ubmVjdFwiLFxuICAgIFwidnNvY2tfYWNjZXB0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIGxvZ2ljIGluIGB2c29ja19jb25uZWN0YCBhbmQgYHZzb2NrX2FjY2VwdGAgZm9yIEFGX1ZTT0NLIHNvY2tldHMuIEl0IGNoYW5nZXMgaG93IGBza19lcnJgIGlzIGNoZWNrZWQgYW5kIGNsZWFyZWQsIHdoaWNoIGRpcmVjdGx5IGFmZmVjdHMgdGhlIGNvbnRyb2wgZmxvdyBhbmQgcmV0dXJuIHZhbHVlcyBvZiB0aGVzZSBjb3JlIHNvY2tldCBvcGVyYXRpb25zLiBGdXp6aW5nIHRoZXNlIGZ1bmN0aW9ucyBpcyBpbXBvcnRhbnQgdG8gZW5zdXJlIHRoZSBuZXcgZXJyb3IgaGFuZGxpbmcgYmVoYXZlcyBjb3JyZWN0bHkgdW5kZXIgdmFyaW91cyBzb2NrZXQgc3RhdGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNDoyMToxMS43NTI0NjI2NjhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxOTE4MTQ3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDQyYjU4ZDFkODBiZjBmZTljY2FiZjhkN2M1Y2E3YzNjMzIwZmZhNjlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgNCAxNDoyMToxMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMgYi9uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmNcXG5pbmRleCA2MjJkYmQwNDY3OTk0Li41OTRmZTI3ZDJlYmU2IDEwMDY0NFxcbi0tLSBhL25ldC92bXdfdnNvY2svYWZfdnNvY2suY1xcbisrKyBiL25ldC92bXdfdnNvY2svYWZfdnNvY2suY1xcbkBAIC0xODQ3LDEyICsxODQ3LDEwIEBAIHN0YXRpYyBpbnQgdnNvY2tfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqYWRkcixcXG4gXFx0XFx0cHJlcGFyZV90b193YWl0KHNrX3NsZWVwKHNrKSwgXFx1MDAyNndhaXQsIFRBU0tfSU5URVJSVVBUSUJMRSk7XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChzay1cXHUwMDNlc2tfZXJyKSB7XFxuLVxcdFxcdGVyciA9IC1zay1cXHUwMDNlc2tfZXJyO1xcbitcXHRlcnIgPSBzb2NrX2Vycm9yKHNrKTtcXG4rXFx0aWYgKGVycikge1xcbiBcXHRcXHRzay1cXHUwMDNlc2tfc3RhdGUgPSBUQ1BfQ0xPU0U7XFxuIFxcdFxcdHNvY2stXFx1MDAzZXN0YXRlID0gU1NfVU5DT05ORUNURUQ7XFxuLVxcdH0gZWxzZSB7XFxuLVxcdFxcdGVyciA9IDA7XFxuIFxcdH1cXG4gXFxuIG91dF93YWl0OlxcbkBAIC0xODkzLDcgKzE4OTEsNyBAQCBzdGF0aWMgaW50IHZzb2NrX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLFxcbiBcXHR0aW1lb3V0ID0gc29ja19yY3Z0aW1lbyhsaXN0ZW5lciwgYXJnLVxcdTAwM2VmbGFncyBcXHUwMDI2IE9fTk9OQkxPQ0spO1xcbiBcXG4gXFx0d2hpbGUgKChjb25uZWN0ZWQgPSB2c29ja19kZXF1ZXVlX2FjY2VwdChsaXN0ZW5lcikpID09IE5VTEwgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgICAgIGxpc3RlbmVyLVxcdTAwM2Vza19lcnIgPT0gMCBcXHUwMDI2XFx1MDAyNiB0aW1lb3V0ICE9IDApIHtcXG4rXFx0ICAgICAgIHRpbWVvdXQgIT0gMCkge1xcbiBcXHRcXHRwcmVwYXJlX3RvX3dhaXQoc2tfc2xlZXAobGlzdGVuZXIpLCBcXHUwMDI2d2FpdCwgVEFTS19JTlRFUlJVUFRJQkxFKTtcXG4gXFx0XFx0cmVsZWFzZV9zb2NrKGxpc3RlbmVyKTtcXG4gXFx0XFx0dGltZW91dCA9IHNjaGVkdWxlX3RpbWVvdXQodGltZW91dCk7XFxuQEAgLTE5MDYsMTEgKzE5MDQsOCBAQCBzdGF0aWMgaW50IHZzb2NrX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLFxcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChsaXN0ZW5lci1cXHUwMDNlc2tfZXJyKSB7XFxuLVxcdFxcdGVyciA9IC1saXN0ZW5lci1cXHUwMDNlc2tfZXJyO1xcbi1cXHR9IGVsc2UgaWYgKCFjb25uZWN0ZWQpIHtcXG4rXFx0aWYgKCFjb25uZWN0ZWQpXFxuIFxcdFxcdGVyciA9IC1FQUdBSU47XFxuLVxcdH1cXG4gXFxuIFxcdGlmIChjb25uZWN0ZWQpIHtcXG4gXFx0XFx0c2tfYWNjZXB0cV9yZW1vdmVkKGxpc3RlbmVyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTQ6MjE6MTIuMTcyMzMyNjY1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MzIyNTEzOTg2MDI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZTT0NLRVRTXCIsXG4gICAgXCJWU09DS0VUU19MT09QQkFDS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZzb2NrX2Nvbm5lY3RcIixcbiAgICBcInZzb2NrX2FjY2VwdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBsb2dpYyBpbiBgdnNvY2tfY29ubmVjdGAgYW5kIGB2c29ja19hY2NlcHRgIGZvciBBRl9WU09DSyBzb2NrZXRzLiBJdCBjaGFuZ2VzIGhvdyBgc2tfZXJyYCBpcyBjaGVja2VkIGFuZCBjbGVhcmVkLCB3aGljaCBkaXJlY3RseSBhZmZlY3RzIHRoZSBjb250cm9sIGZsb3cgYW5kIHJldHVybiB2YWx1ZXMgb2YgdGhlc2UgY29yZSBzb2NrZXQgb3BlcmF0aW9ucy4gRnV6emluZyB0aGVzZSBmdW5jdGlvbnMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGUgbmV3IGVycm9yIGhhbmRsaW5nIGJlaGF2ZXMgY29ycmVjdGx5IHVuZGVyIHZhcmlvdXMgc29ja2V0IHN0YXRlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDJiNThkMWQ4MGJmMGZlOWNjYWJmOGQ3YzVjYTdjM2MzMjBmZmE2OVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTQ6MjE6MTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMgYi9uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmNcbmluZGV4IDYyMmRiZDA0Njc5OTQuLjU5NGZlMjdkMmViZTYgMTAwNjQ0XG4tLS0gYS9uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmNcbisrKyBiL25ldC92bXdfdnNvY2svYWZfdnNvY2suY1xuQEAgLTE4NDcsMTIgKzE4NDcsMTAgQEAgc3RhdGljIGludCB2c29ja19jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICphZGRyLFxuIFx0XHRwcmVwYXJlX3RvX3dhaXQoc2tfc2xlZXAoc2spLCBcdTAwMjZ3YWl0LCBUQVNLX0lOVEVSUlVQVElCTEUpO1xuIFx0fVxuIFxuLVx0aWYgKHNrLVx1MDAzZXNrX2Vycikge1xuLVx0XHRlcnIgPSAtc2stXHUwMDNlc2tfZXJyO1xuK1x0ZXJyID0gc29ja19lcnJvcihzayk7XG4rXHRpZiAoZXJyKSB7XG4gXHRcdHNrLVx1MDAzZXNrX3N0YXRlID0gVENQX0NMT1NFO1xuIFx0XHRzb2NrLVx1MDAzZXN0YXRlID0gU1NfVU5DT05ORUNURUQ7XG4tXHR9IGVsc2Uge1xuLVx0XHRlcnIgPSAwO1xuIFx0fVxuIFxuIG91dF93YWl0OlxuQEAgLTE4OTMsNyArMTg5MSw3IEBAIHN0YXRpYyBpbnQgdnNvY2tfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssXG4gXHR0aW1lb3V0ID0gc29ja19yY3Z0aW1lbyhsaXN0ZW5lciwgYXJnLVx1MDAzZWZsYWdzIFx1MDAyNiBPX05PTkJMT0NLKTtcbiBcbiBcdHdoaWxlICgoY29ubmVjdGVkID0gdnNvY2tfZGVxdWV1ZV9hY2NlcHQobGlzdGVuZXIpKSA9PSBOVUxMIFx1MDAyNlx1MDAyNlxuLVx0ICAgICAgIGxpc3RlbmVyLVx1MDAzZXNrX2VyciA9PSAwIFx1MDAyNlx1MDAyNiB0aW1lb3V0ICE9IDApIHtcbitcdCAgICAgICB0aW1lb3V0ICE9IDApIHtcbiBcdFx0cHJlcGFyZV90b193YWl0KHNrX3NsZWVwKGxpc3RlbmVyKSwgXHUwMDI2d2FpdCwgVEFTS19JTlRFUlJVUFRJQkxFKTtcbiBcdFx0cmVsZWFzZV9zb2NrKGxpc3RlbmVyKTtcbiBcdFx0dGltZW91dCA9IHNjaGVkdWxlX3RpbWVvdXQodGltZW91dCk7XG5AQCAtMTkwNiwxMSArMTkwNCw4IEBAIHN0YXRpYyBpbnQgdnNvY2tfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssXG4gXHRcdH1cbiBcdH1cbiBcbi1cdGlmIChsaXN0ZW5lci1cdTAwM2Vza19lcnIpIHtcbi1cdFx0ZXJyID0gLWxpc3RlbmVyLVx1MDAzZXNrX2Vycjtcbi1cdH0gZWxzZSBpZiAoIWNvbm5lY3RlZCkge1xuK1x0aWYgKCFjb25uZWN0ZWQpXG4gXHRcdGVyciA9IC1FQUdBSU47XG4tXHR9XG4gXG4gXHRpZiAoY29ubmVjdGVkKSB7XG4gXHRcdHNrX2FjY2VwdHFfcmVtb3ZlZChsaXN0ZW5lcik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNDoyMToxMi4xNzIzMzM5NjVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQzNDYyMzQ3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHZzb2NrIENvbm5lY3Rpb24gYW5kIEFjY2VwdGFuY2UgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3Ztd192c29jay9hZl92c29jay5jYC4gSXQgc2VlbXMgdG8gYmUgdG91Y2hpbmcgYHZzb2NrX2Nvbm5lY3RgIGFuZCBgdnNvY2tfYWNjZXB0YCwgd2hpY2ggYXJlIGtleSBmb3IgZXN0YWJsaXNoaW5nIGFuZCBoYW5kbGluZyBWU09DSyBjb25uZWN0aW9ucy4gTGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG5JbiBgdnNvY2tfY29ubmVjdGAsIHRoZSBjaGFuZ2UgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhleSdyZSByZXBsYWNpbmcgdGhlIGRpcmVjdCBjaGVjayBmb3IgYHNrLVx1MDAzZXNrX2VycmAgd2l0aCBhIGNhbGwgdG8gYHNvY2tfZXJyb3Ioc2spYC4gQmVmb3JlLCBpdCB3YXMgZXhwbGljaXRseSBjaGVja2luZyB0aGUgc29ja2V0J3MgZXJyb3Igc3RhdGUuIE5vdywgaXQgYXBwZWFycyBgc29ja19lcnJvcmAgaXMgcmVzcG9uc2libGUgZm9yIHJldHJpZXZpbmcgYW5kIGhhbmRsaW5nIHRoYXQgZXJyb3IuIEknZCBuZWVkIHRvIGxvb2sgYXQgdGhlIGBzb2NrX2Vycm9yYCBkZWZpbml0aW9uIGl0c2VsZiB0byBiZSBzdXJlLiBXaGF0J3MgdGhlIGNvbnRleHQ/IEhtbS5cblxuSW4gYHZzb2NrX2FjY2VwdGAsIHRoZXkndmUgcmVtb3ZlZCBhIGNvbmRpdGlvbiBmcm9tIHRoZSBhY2NlcHRhbmNlIGxvb3AuIFNwZWNpZmljYWxseSwgdGhleSd2ZSBkcm9wcGVkIHRoZSBgbGlzdGVuZXItXHUwMDNlc2tfZXJyID09IDBgIGNoZWNrLiBOb3csIGl0J3MganVzdCBgd2hpbGUgKChjb25uZWN0ZWQgPSB2c29ja19kZXF1ZXVlX2FjY2VwdChsaXN0ZW5lcikpID09IE5VTEwgXHUwMDI2XHUwMDI2IHRpbWVvdXQgIT0gMClgLiBUaGUgb2xkIHZlcnNpb24gd2FzIGd1YXJkaW5nIGFnYWluc3QgYWNjZXB0aW5nIGNvbm5lY3Rpb25zIGlmIHRoZSBsaXN0ZW5lciBzb2NrZXQgaGFkIGFuIGVycm9yLiBUaGV5J3ZlIGFsc28gcmVtb3ZlZCB0aGUgZmluYWwgYGxpc3RlbmVyLVx1MDAzZXNrX2VycmAgY2hlY2sgYWZ0ZXIgdGhlIGxvb3AuXG5cblRoYXQncyBhIGJpdCBjb25jZXJuaW5nLiBJZiB5b3UgcmVtb3ZlIGFuIGVycm9yIGNoZWNrLCBob3cgaXMgdGhlIGFjY2VwdGFuY2UgbG9vcCBnb2luZyB0byByZWFjdCB0byBhbiBlcnJvcj8gQWgsIHdhaXQgYSBtaW51dGUsIEkgdGhpbmsgSSBzZWUgaXQuIFRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0IGBzb2NrX2Vycm9yYCBpcyBjbGVhcmluZyB0aGUgYHNrX2VycmAgZmllbGQuIExvb2tpbmcgYXQgdGhlIGNoYW5nZXMgaW4gYHZzb2NrX2Nvbm5lY3RgIGFnYWluLCB5ZXMsIGl0J3MgY2FsbGluZyBgc29ja19lcnJvcmAuXG5cblJpZ2h0LCBgc29ja19lcnJvcmAgaXMgbGlrZWx5IGF0b21pY2FsbHkgZXhjaGFuZ2luZyB0aGUgZXJyb3IgY29kZSB3aXRoIHplcm8sIHVzaW5nIGB4Y2hnKFx1MDAyNnNrLVx1MDAzZXNrX2VyciwgMClgLiBTbyB0aGUgZXJyb3IgaXMgY2xlYXJlZCB3aGVuIGl0IGlzIHJldHJpZXZlZCwgc28gd2UgZG9uJ3QgbmVlZCB0byBjaGVjay4gQ2xldmVyLiBUaGV5IGFyZSBwcm9iYWJseSBkb2luZyBpdCB0aGlzIHdheSBmb3IgdGhpcyByZWFzb24hXG5cbkknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgYHZzb2NrX2FjY2VwdGAgdG8gY29uZmlybSB0aGlzIGJlaGF2aW9yLiBJdCBzZWVtcyBsaWtlIGl0J3MgYSBzaW1wbGlmaWNhdGlvbiwgcmVseWluZyBvbiBgc29ja19lcnJvcmAgdG8gaGFuZGxlIGVycm9yIHByb3BhZ2F0aW9uLCBzbyB0aGVyZSBpc24ndCBhIGRvdWJsZS1jaGVjay4gT2theSwgSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgc29ja19lcnJvcmAgaXMgaGFuZGxpbmcgdGhlIGVycm9yIGNsZWFyaW5nIGFzIEkgc3VzcGVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM4NiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE0OjIxOjQxLjYwNjk1OTU3NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NDQwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTg4MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTg4MDpcXHRcXHRcXHRnb3RvIG91dDtcXG4xODgxOlxcdFxcdH1cXG4xODgyOlxcdFxcbjE4ODM6XFx0XFx0aWYgKGxpc3RlbmVyLVxcdTAwM2Vza19zdGF0ZSAhPSBUQ1BfTElTVEVOKSB7XFxuMTg4NDpcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbjE4ODU6XFx0XFx0XFx0Z290byBvdXQ7XFxuMTg4NjpcXHRcXHR9XFxuMTg4NzpcXHRcXG4xODg4OlxcdFxcdC8qIFdhaXQgZm9yIGNoaWxkcmVuIHNvY2tldHMgdG8gYXBwZWFyOyB0aGVzZSBhcmUgdGhlIG5ldyBzb2NrZXRzXFxuMTg4OTpcXHRcXHQgKiBjcmVhdGVkIHVwb24gY29ubmVjdGlvbiBlc3RhYmxpc2htZW50LlxcbjE4OTA6XFx0XFx0ICovXFxuMTg5MTpcXHRcXHR0aW1lb3V0ID0gc29ja19yY3Z0aW1lbyhsaXN0ZW5lciwgYXJnLVxcdTAwM2VmbGFncyBcXHUwMDI2IE9fTk9OQkxPQ0spO1xcbjE4OTI6XFx0XFxuMTg5MzpcXHRcXHR3aGlsZSAoKGNvbm5lY3RlZCA9IHZzb2NrX2RlcXVldWVfYWNjZXB0KGxpc3RlbmVyKSkgPT0gTlVMTCBcXHUwMDI2XFx1MDAyNlxcbjE4OTQ6XFx0XFx0ICAgICAgIHRpbWVvdXQgIT0gMCkge1xcbjE4OTU6XFx0XFx0XFx0cHJlcGFyZV90b193YWl0KHNrX3NsZWVwKGxpc3RlbmVyKSwgXFx1MDAyNndhaXQsIFRBU0tfSU5URVJSVVBUSUJMRSk7XFxuMTg5NjpcXHRcXHRcXHRyZWxlYXNlX3NvY2sobGlzdGVuZXIpO1xcbjE4OTc6XFx0XFx0XFx0dGltZW91dCA9IHNjaGVkdWxlX3RpbWVvdXQodGltZW91dCk7XFxuMTg5ODpcXHRcXHRcXHRmaW5pc2hfd2FpdChza19zbGVlcChsaXN0ZW5lciksIFxcdTAwMjZ3YWl0KTtcXG4xODk5OlxcdFxcdFxcdGxvY2tfc29jayhsaXN0ZW5lcik7XFxuMTkwMDpcXHRcXG4xOTAxOlxcdFxcdFxcdGlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkge1xcbjE5MDI6XFx0XFx0XFx0XFx0ZXJyID0gc29ja19pbnRyX2Vycm5vKHRpbWVvdXQpO1xcbjE5MDM6XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuMTkwNDpcXHRcXHRcXHR9XFxuMTkwNTpcXHRcXHR9XFxuMTkwNjpcXHRcXG4xOTA3OlxcdFxcdGlmICghY29ubmVjdGVkKVxcbjE5MDg6XFx0XFx0XFx0ZXJyID0gLUVBR0FJTjtcXG4xOTA5OlxcdFxcbjE5MTA6XFx0XFx0aWYgKGNvbm5lY3RlZCkge1xcbjE5MTE6XFx0XFx0XFx0c2tfYWNjZXB0cV9yZW1vdmVkKGxpc3RlbmVyKTtcXG4xOTEyOlxcdFxcbjE5MTM6XFx0XFx0XFx0bG9ja19zb2NrX25lc3RlZChjb25uZWN0ZWQsIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTtcXG4xOTE0OlxcdFxcdFxcdHZjb25uZWN0ZWQgPSB2c29ja19zayhjb25uZWN0ZWQpO1xcbjE5MTU6XFx0XFxuMTkxNjpcXHRcXHRcXHQvKiBJZiB0aGUgbGlzdGVuZXIgc29ja2V0IGhhcyByZWNlaXZlZCBhbiBlcnJvciwgdGhlbiB3ZSBzaG91bGRcXG4xOTE3OlxcdFxcdFxcdCAqIHJlamVjdCB0aGlzIHNvY2tldCBhbmQgcmV0dXJuLiAgTm90ZSB0aGF0IHdlIHNpbXBseSBtYXJrIHRoZVxcbjE5MTg6XFx0XFx0XFx0ICogc29ja2V0IHJlamVjdGVkLCBkcm9wIG91ciByZWZlcmVuY2UsIGFuZCBsZXQgdGhlIGNsZWFudXBcXG4xOTE5OlxcdFxcdFxcdCAqIGZ1bmN0aW9uIGhhbmRsZSB0aGUgY2xlYW51cDsgdGhlIGZhY3QgdGhhdCB3ZSBmb3VuZCBpdCBpblxcbjE5MjA6XFx0XFx0XFx0ICogdGhlIGxpc3RlbmVyJ3MgYWNjZXB0IHF1ZXVlIGd1YXJhbnRlZXMgdGhhdCB0aGUgY2xlYW51cFxcbjE5MjE6XFx0XFx0XFx0ICogZnVuY3Rpb24gaGFzbid0IHJ1biB5ZXQuXFxuMTkyMjpcXHRcXHRcXHQgKi9cXG4xOTIzOlxcdFxcdFxcdGlmIChlcnIpIHtcXG4xOTI0OlxcdFxcdFxcdFxcdHZjb25uZWN0ZWQtXFx1MDAzZXJlamVjdGVkID0gdHJ1ZTtcXG4xOTI1OlxcdFxcdFxcdH0gZWxzZSB7XFxuMTkyNjpcXHRcXHRcXHRcXHRuZXdzb2NrLVxcdTAwM2VzdGF0ZSA9IFNTX0NPTk5FQ1RFRDtcXG4xOTI3OlxcdFxcdFxcdFxcdHNvY2tfZ3JhZnQoY29ubmVjdGVkLCBuZXdzb2NrKTtcXG4xOTI4OlxcdFxcbjE5Mjk6XFx0XFx0XFx0XFx0c2V0X2JpdChTT0NLX0NVU1RPTV9TT0NLT1BULFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNDoyMTo0MS42MDczMDg3NTVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQ1MDU3NTA2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGB2c29ja19hY2NlcHRgIEZ1bmN0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSByZW1lbWJlciB0aGF0IGBlcnJgIGlzIGluaXRpYWxpemVkIHRvIDAgYXQgdGhlIHN0YXJ0IG9mIGB2c29ja19hY2NlcHRgLiBJZiBhIGNvbm5lY3Rpb24gaXNuJ3QgZXN0YWJsaXNoZWQgKGAhY29ubmVjdGVkYCksIGBlcnJgIGlzIHNldCB0byBgLUVBR0FJTmAuIFRoZW4sIEknbSB0aGlua2luZyBhYm91dCB0aGUgbG9naWMgd2hlcmUgYGxpc3RlbmVyLVx1MDAzZXNrX2VycmAgd2FzIGJlaW5nIGNoZWNrZWQuIFRoZSBzdHJ1Y3R1cmUgYmVmb3JlIHRoZSBjaGFuZ2Ugd2FzOlxuYGBgY1xuXHRpZiAobGlzdGVuZXItXHUwMDNlc2tfZXJyKSB7XG5cdFx0ZXJyID0gLWxpc3RlbmVyLVx1MDAzZXNrX2Vycjtcblx0fSBlbHNlIGlmICghY29ubmVjdGVkKSB7XG5cdFx0ZXJyID0gLUVBR0FJTjtcblx0fVxuYGBgXG5Ib3dldmVyLCB3YWl0LCB0aGUgb3JpZ2luYWwgY29kZSBoYWQgYSBkaWZmZXJlbnQgc3RydWN0dXJlLiBMZXQgbWUgcmVjYWxsIGl0OlxuYGBgY1xuXHRlcnIgPSAwO1xuXG5cdGxvY2tfc29jayhsaXN0ZW5lcik7XG5cblx0aWYgKHNvY2stXHUwMDNldHlwZSAhPSBTT0NLX1NUUkVBTSBcdTAwMjZcdTAwMjYgc29jay1cdTAwM2V0eXBlICE9IFNPQ0tfU0VRUEFDS0VUKSB7XG5cdFx0ZXJyID0gLUVPUE5PVFNVUFA7XG5cdFx0Z290byBvdXQ7XG5cdH1cblxuXHRpZiAobGlzdGVuZXItXHUwMDNlc2tfc3RhdGUgIT0gVENQX0xJU1RFTikge1xuXHRcdGVyciA9IC1FSU5WQUw7XG5cdFx0Z290byBvdXQ7XG5cdH1cblxuXHQvKiBXYWl0IGZvciBjaGlsZHJlbiBzb2NrZXRzIHRvIGFwcGVhcjsgdGhlc2UgYXJlIHRoZSBuZXcgc29ja2V0c1xuXHQgKiBjcmVhdGVkIHVwb24gY29ubmVjdGlvbiBlc3RhYmxpc2htZW50LlxuXHQgKi9cblx0dGltZW91dCA9IHNvY2tfcmN2dGltZW8obGlzdGVuZXIsIGFyZy1cdTAwM2VmbGFncyBcdTAwMjYgT19OT05CTE9DSyk7XG5cblx0d2hpbGUgKChjb25uZWN0ZWQgPSB2c29ja19kZXF1ZXVlX2FjY2VwdChsaXN0ZW5lcikpID09IE5VTEwgXHUwMDI2XHUwMDI2XG5cdCAgICAgICBsaXN0ZW5lci1cdTAwM2Vza19lcnIgPT0gMCBcdTAwMjZcdTAwMjYgdGltZW91dCAhPSAwKSB7XG5cdFx0cHJlcGFyZV90b193YWl0KHNrX3NsZWVwKGxpc3RlbmVyKSwgXHUwMDI2d2FpdCwgVEFTS19JTlRFUlJVUFRJQkxFKTtcblx0XHRyZWxlYXNlX3NvY2sobGlzdGVuZXIpO1xuXHRcdHRpbWVvdXQgPSBzY2hlZHVsZV90aW1lb3V0KHRpbWVvdXQpO1xuXHRcdGZpbmlzaF93YWl0KHNrX3NsZWVwKGxpc3RlbmVyKSwgXHUwMDI2d2FpdCk7XG5cdFx0bG9ja19zb2NrKGxpc3RlbmVyKTtcblxuXHRcdGlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkge1xuXHRcdFx0ZXJyID0gc29ja19pbnRyX2Vycm5vKHRpbWVvdXQpO1xuXHRcdFx0Z290byBvdXQ7XG5cdFx0fVxuXHR9XG5cblx0aWYgKGxpc3RlbmVyLVx1MDAzZXNrX2Vycikge1xuXHRcdGVyciA9IC1saXN0ZW5lci1cdTAwM2Vza19lcnI7XG5cdH0gZWxzZSBpZiAoIWNvbm5lY3RlZCkge1xuXHRcdGVyciA9IC1FQUdBSU47XG5cdH1cbmBgYFxuTm93IEkgc2VlIGl0ISBUaGUgcGF0Y2ggY29tcGxldGVseSByZW1vdmVzIHRoZSBgbGlzdGVuZXItXHUwMDNlc2tfZXJyYCBjaGVjayB3aXRoaW4gdGhlIGB2c29ja19hY2NlcHRgIGZ1bmN0aW9uLiBUaGlzIGlzIHNpZ25pZmljYW50LiBJdCBtZWFucyB0aGUgb3JpZ2luYWwgZXJyb3IgaGFuZGxpbmcgbWVjaGFuaXNtLCB3aGljaCBjaGVja2VkIGlmIHRoZSBsaXN0ZW5lciBzb2NrZXQgaGFkIGFuIGVycm9yIGJlZm9yZSBjaGVja2luZyBmb3IgYSBjb25uZWN0aW9uLCBpcyBubyBsb25nZXIgcHJlc2VudC4gSSdkIGJldHRlciBjb25maXJtIHRoaXMgYnkgY2hlY2tpbmcgdGhlIG9yaWdpbmFsIGNvZGUgb2YgYHZzb2NrX2FjY2VwdGAgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk2OCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE0OjIyOjExLjA1Nzg4Nzg4M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzgyNTc1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2c29ja19hY2NlcHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Ztd192c29jay9hZl92c29jay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC92bXdfdnNvY2svYWZfdnNvY2suYz0xNjc3PXN0YXRpYyBpbnQgdnNvY2tfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqYWRkcixcXG4tLVxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYy0xODYyLVxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYzoxODYzOnN0YXRpYyBpbnQgdnNvY2tfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssXFxubmV0L3Ztd192c29jay9hZl92c29jay5jLTE4NjQtXFx0XFx0XFx0c3RydWN0IHByb3RvX2FjY2VwdF9hcmcgKmFyZylcXG4tLVxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYz0yNjM5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHZzb2NrX3N0cmVhbV9vcHMgPSB7XFxuLS1cXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtMjY0NS1cXHQuc29ja2V0cGFpciA9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmM6MjY0NjpcXHQuYWNjZXB0ID0gdnNvY2tfYWNjZXB0LFxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYy0yNjQ3LVxcdC5nZXRuYW1lID0gdnNvY2tfZ2V0bmFtZSxcXG4tLVxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYz0yNjYxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHZzb2NrX3NlcXBhY2tldF9vcHMgPSB7XFxuLS1cXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtMjY2Ny1cXHQuc29ja2V0cGFpciA9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmM6MjY2ODpcXHQuYWNjZXB0ID0gdnNvY2tfYWNjZXB0LFxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYy0yNjY5LVxcdC5nZXRuYW1lID0gdnNvY2tfZ2V0bmFtZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTQ6MjI6MTEuMTI1NzE4OTM1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTk3OTA3ODcwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGl2aW5nIEJhY2sgaW50byBgdnNvY2tfYWNjZXB0YCoqXG5cblJpZ2h0LCBsZXQncyBjaXJjbGUgYmFjayB0byBgdnNvY2tfYWNjZXB0YCBpbiBgbmV0L3Ztd192c29jay9hZl92c29jay5jYC4gSSdtIGdvaW5nIHRvIHJlLWV4YW1pbmUgdGhhdCBmdW5jdGlvbi4gSXQgZmVlbHMgbGlrZSB3ZSd2ZSBiZWVuIHJ1bm5pbmcgaW50byBzb21lIGlzc3VlcyBvbiB0aGUgY29ubmVjdGlvbiBmcm9udCwgYW5kIGB2c29ja19hY2NlcHRgIGlzIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhhdCBwdXp6bGUuIFRpbWUgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IGl0IGhhbmRsZXMgaW5jb21pbmcgY29ubmVjdGlvbiByZXF1ZXN0cywgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIHRyYW5zcG9ydCwgYW5kIHdoZXJlIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgbG9ja2luZyBpc3N1ZXMgbWlnaHQgYmUgbHVya2luZy4gSSdsbCBmb2N1cyBvbiBob3cgaXQgbWFuYWdlcyB0aGUgYWNjZXB0IHF1ZXVlLCBob3cgdGhlIGhhbmRzaGFrZSBpcyBpbml0aWF0ZWQsIGFuZCB3aGF0IGVycm9yIGhhbmRsaW5nIGlzIGluIHBsYWNlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgc3VidGxlLiBVbmRlcnN0YW5kaW5nIHRoZSBmbG93IG9mIGNvbnRyb2wgaGVyZSBpcyBwYXJhbW91bnQuIFRoaXMgd2lsbCBiZSBhIHN1cmdpY2FsIGFuYWx5c2lzOyBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGFyZWEgdGhhdCBuZWVkcyBmdXJ0aGVyIGluc3BlY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NjEsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNDoyMjoyMS4xMDQ4MDAyMjVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTkzNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3Ztd192c29jay9hZl92c29jay5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4NjAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE4NjA6XFx0XFx0cmV0dXJuIGVycjtcXG4xODYxOlxcdH1cXG4xODYyOlxcdFxcbjE4NjM6XFx0c3RhdGljIGludCB2c29ja19hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jayxcXG4xODY0OlxcdFxcdFxcdFxcdHN0cnVjdCBwcm90b19hY2NlcHRfYXJnICphcmcpXFxuMTg2NTpcXHR7XFxuMTg2NjpcXHRcXHRzdHJ1Y3Qgc29jayAqbGlzdGVuZXI7XFxuMTg2NzpcXHRcXHRpbnQgZXJyO1xcbjE4Njg6XFx0XFx0c3RydWN0IHNvY2sgKmNvbm5lY3RlZDtcXG4xODY5OlxcdFxcdHN0cnVjdCB2c29ja19zb2NrICp2Y29ubmVjdGVkO1xcbjE4NzA6XFx0XFx0bG9uZyB0aW1lb3V0O1xcbjE4NzE6XFx0XFx0REVGSU5FX1dBSVQod2FpdCk7XFxuMTg3MjpcXHRcXG4xODczOlxcdFxcdGVyciA9IDA7XFxuMTg3NDpcXHRcXHRsaXN0ZW5lciA9IHNvY2stXFx1MDAzZXNrO1xcbjE4NzU6XFx0XFxuMTg3NjpcXHRcXHRsb2NrX3NvY2sobGlzdGVuZXIpO1xcbjE4Nzc6XFx0XFxuMTg3ODpcXHRcXHRpZiAoIXNvY2tfdHlwZV9jb25uZWN0aWJsZShzb2NrLVxcdTAwM2V0eXBlKSkge1xcbjE4Nzk6XFx0XFx0XFx0ZXJyID0gLUVPUE5PVFNVUFA7XFxuMTg4MDpcXHRcXHRcXHRnb3RvIG91dDtcXG4xODgxOlxcdFxcdH1cXG4xODgyOlxcdFxcbjE4ODM6XFx0XFx0aWYgKGxpc3RlbmVyLVxcdTAwM2Vza19zdGF0ZSAhPSBUQ1BfTElTVEVOKSB7XFxuMTg4NDpcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbjE4ODU6XFx0XFx0XFx0Z290byBvdXQ7XFxuMTg4NjpcXHRcXHR9XFxuMTg4NzpcXHRcXG4xODg4OlxcdFxcdC8qIFdhaXQgZm9yIGNoaWxkcmVuIHNvY2tldHMgdG8gYXBwZWFyOyB0aGVzZSBhcmUgdGhlIG5ldyBzb2NrZXRzXFxuMTg4OTpcXHRcXHQgKiBjcmVhdGVkIHVwb24gY29ubmVjdGlvbiBlc3RhYmxpc2htZW50LlxcbjE4OTA6XFx0XFx0ICovXFxuMTg5MTpcXHRcXHR0aW1lb3V0ID0gc29ja19yY3Z0aW1lbyhsaXN0ZW5lciwgYXJnLVxcdTAwM2VmbGFncyBcXHUwMDI2IE9fTk9OQkxPQ0spO1xcbjE4OTI6XFx0XFxuMTg5MzpcXHRcXHR3aGlsZSAoKGNvbm5lY3RlZCA9IHZzb2NrX2RlcXVldWVfYWNjZXB0KGxpc3RlbmVyKSkgPT0gTlVMTCBcXHUwMDI2XFx1MDAyNlxcbjE4OTQ6XFx0XFx0ICAgICAgIHRpbWVvdXQgIT0gMCkge1xcbjE4OTU6XFx0XFx0XFx0cHJlcGFyZV90b193YWl0KHNrX3NsZWVwKGxpc3RlbmVyKSwgXFx1MDAyNndhaXQsIFRBU0tfSU5URVJSVVBUSUJMRSk7XFxuMTg5NjpcXHRcXHRcXHRyZWxlYXNlX3NvY2sobGlzdGVuZXIpO1xcbjE4OTc6XFx0XFx0XFx0dGltZW91dCA9IHNjaGVkdWxlX3RpbWVvdXQodGltZW91dCk7XFxuMTg5ODpcXHRcXHRcXHRmaW5pc2hfd2FpdChza19zbGVlcChsaXN0ZW5lciksIFxcdTAwMjZ3YWl0KTtcXG4xODk5OlxcdFxcdFxcdGxvY2tfc29jayhsaXN0ZW5lcik7XFxuMTkwMDpcXHRcXG4xOTAxOlxcdFxcdFxcdGlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkge1xcbjE5MDI6XFx0XFx0XFx0XFx0ZXJyID0gc29ja19pbnRyX2Vycm5vKHRpbWVvdXQpO1xcbjE5MDM6XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuMTkwNDpcXHRcXHRcXHR9XFxuMTkwNTpcXHRcXHR9XFxuMTkwNjpcXHRcXG4xOTA3OlxcdFxcdGlmICghY29ubmVjdGVkKVxcbjE5MDg6XFx0XFx0XFx0ZXJyID0gLUVBR0FJTjtcXG4xOTA5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNDoyMjoyMS4xMDUwMDIxMjVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDc5Mjk2MDY1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjYzODcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNDoyMzowNS44OTc5NjcxNTVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MTU4NDEyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVlNPQ0tFVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Ztd192c29jay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC92bXdfdnNvY2svS2NvbmZpZy01LVxcbm5ldC92bXdfdnNvY2svS2NvbmZpZzo2OmNvbmZpZyBWU09DS0VUU1xcbm5ldC92bXdfdnNvY2svS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIFNvY2tldCBwcm90b2NvbFxcXCJcXG4tLVxcbm5ldC92bXdfdnNvY2svS2NvbmZpZy0xOC1cXG5uZXQvdm13X3Zzb2NrL0tjb25maWc6MTk6Y29uZmlnIFZTT0NLRVRTX0RJQUdcXG5uZXQvdm13X3Zzb2NrL0tjb25maWctMjAtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgU29ja2V0cyBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC92bXdfdnNvY2svS2NvbmZpZy0yOC1cXG5uZXQvdm13X3Zzb2NrL0tjb25maWc6Mjk6Y29uZmlnIFZTT0NLRVRTX0xPT1BCQUNLXFxubmV0L3Ztd192c29jay9LY29uZmlnLTMwLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIFNvY2tldHMgbG9vcGJhY2sgdHJhbnNwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNDoyMzowNi4zNDk1NTgxMzhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI0Mjk3NDA4NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlZTT0NLRVRTIERlcGVuZGVuY3kgQ2hlY2sqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBgVlNPQ0tFVFNgIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBjb21wbGV0ZSBkZXBlbmRlbmN5IHRyZWUsIGFuZCBJIG5lZWQgdG8gZG8gaXQgd2l0aCBhIGZvY3VzIG9uIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBhbmQgYW55IGFyZWFzIHdoZXJlIG91dGRhdGVkIG9yIGluY29tcGF0aWJsZSB2ZXJzaW9ucyBtaWdodCBiZSBsdXJraW5nLiBBcmUgd2UgdGFsa2luZyBqdXN0IHRoZSBvYnZpb3VzIGBsaWJ2c29ja2V0YCBhbmQgaXRzIGltbWVkaWF0ZSByZXF1aXJlbWVudHMsIG9yIGRvIHdlIGhhdmUgaW5kaXJlY3QgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIGdvaW5nIHRvIGJpdGUgdXMgZG93biB0aGUgbGluZT8gVGhpcyBpc24ndCBqdXN0IGFib3V0IG1ha2luZyBzdXJlIGV2ZXJ5dGhpbmcgKndvcmtzKjsgaXQncyBhYm91dCBhbnRpY2lwYXRpbmcgaXNzdWVzIGJlZm9yZSB0aGV5IG1hbmlmZXN0IGFzIGNyaXRpY2FsIGJ1Z3Mgb3Igc2VjdXJpdHkgcmlza3MuIEkgbmVlZCB0byBjcm9zcy1yZWZlcmVuY2Ugd2l0aCB0aGUgbGF0ZXN0IHNlY3VyaXR5IGFkdmlzb3JpZXMsIGFuZCB0aGUgdmVyc2lvbiBjb21wYXRpYmlsaXR5IG1hdHJpeCwgZm9yIHRoZSB1bmRlcmx5aW5nIGtlcm5lbCBhbmQgaHlwZXJ2aXNvciwgZXNwZWNpYWxseSBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBjb21wbGV4IHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBBbHNvLCBhcmUgd2UgdXNpbmcgYW55IGN1c3RvbSBvciBwYXRjaGVkIHZlcnNpb25zIGFueXdoZXJlPyBUaW1lIHRvIHB1bGwgdXAgdGhlIGRlcGVuZGVuY3kgZ3JhcGhzIGFuZCB2ZXJzaW9uIG1hbmlmZXN0cyBhbmQgZ2V0IGEgY2xlYXIgcGljdHVyZS4gR290dGEgbWFrZSBzdXJlIHdlJ3JlIG5vdCBidWlsZGluZyBhIGhvdXNlIG9mIGNhcmRzIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5NDUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNDoyMzoxOC43NzkzMDE5MzNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3Ztd192c29jay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFZzb2NrIHByb3RvY29sXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBWU09DS0VUU1xcbiAgIDc6XFx0XFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgU29ja2V0IHByb3RvY29sXFxcIlxcbiAgIDg6XFx0XFx0aGVscFxcbiAgIDk6XFx0XFx0ICBWaXJ0dWFsIFNvY2tldCBQcm90b2NvbCBpcyBhIHNvY2tldCBwcm90b2NvbCBzaW1pbGFyIHRvIFRDUC9JUFxcbiAgMTA6XFx0XFx0ICBhbGxvd2luZyBjb21tdW5pY2F0aW9uIGJldHdlZW4gVmlydHVhbCBNYWNoaW5lcyBhbmQgaHlwZXJ2aXNvclxcbiAgMTE6XFx0XFx0ICBvciBob3N0LlxcbiAgMTI6XFx0XFxuICAxMzpcXHRcXHQgIFlvdSBzaG91bGQgYWxzbyBzZWxlY3Qgb25lIG9yIG1vcmUgaHlwZXJ2aXNvci1zcGVjaWZpYyB0cmFuc3BvcnRzXFxuICAxNDpcXHRcXHQgIGJlbG93LlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gIDE3OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgdnNvY2suIElmIHVuc3VyZSwgc2F5IE4uXFxuICAxODpcXHRcXG4gIDE5OlxcdGNvbmZpZyBWU09DS0VUU19ESUFHXFxuICAyMDpcXHRcXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBTb2NrZXRzIG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNDoyMzoxOC43NzkzODcyNTNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTcxNjQwMDc5MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guXG5cbioqQW5hbHl6aW5nIHRoZSBWU09DS0VUUyBEZXBlbmRlbmN5IFN0cnVjdHVyZSoqXG5cbkhtbSwgc28gYFZTT0NLRVRTYCBpdHNlbGYsIGFzIEkgdW5kZXJzdGFuZCBpdCwgaWRlYWxseSAqc2hvdWxkbid0KiBoYXZlIGFueSBleHRlcm5hbCBkZXBlbmRlbmNpZXMgYmV5b25kIGBORVRgLiBBbmQgc2luY2UgYG5ldC9gIGlzIHdoZXJlIGl0IGxpdmVzLCB0aGF0IGRlcGVuZGVuY3kgaXMga2luZCBvZiBiYWtlZCBpbi4gVGhhdCBzZWVtcyBsb2dpY2FsLiBCdXQgdGhlIHJlYWwgcXVlc3Rpb24gaXMgaG93IHdlIGFjdHVhbGx5IHRlc3QgaXQuIFRvIHByb3Blcmx5IHZhbGlkYXRlIHRoZSBmdW5jdGlvbmFsaXR5IG9mIGBWU09DS0VUU2AsIHdlJ3JlIGxpa2VseSBnb2luZyB0byBuZWVkIHNvbWUga2luZCBvZiB0cmFuc3BvcnQgbGF5ZXIuIFRoYXQncyB3aGVyZSBzb21ldGhpbmcgbGlrZSBgVlNPQ0tFVFNfTE9PUEJBQ0tgIGNvbWVzIGludG8gdGhlIHBpY3R1cmUuIEl0J3Mgbm90IGEgKmRpcmVjdCogZGVwZW5kZW5jeSBvZiBgVlNPQ0tFVFNgIGluIHRoZSBjb3JlIHNlbnNlIG9mIHRoZSBjb2RlLCBidXQgaXQgaXMgYSBkZXBlbmRlbmN5IGluIHByYWN0aWNlLCBmb3IgZWZmZWN0aXZlIHRlc3RpbmcgYW5kIGV2YWx1YXRpb24uIFRoZSBpbXBsaWNhdGlvbiBpcyB3ZSBuZWVkIGEgdGVzdCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQ2NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTQ6MjM6MzUuOTQzMzk5NTY4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNzY5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvdm13X3Zzb2NrL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjE6XFx0XFx0ZGVwZW5kcyBvbiBWU09DS0VUU1xcbiAgMjI6XFx0XFx0ZGVmYXVsdCB5XFxuICAyMzpcXHRcXHRoZWxwXFxuICAyNDpcXHRcXHQgIFN1cHBvcnQgZm9yIFBGX1ZTT0NLIHNvY2tldHMgbW9uaXRvcmluZyBpbnRlcmZhY2UgdXNlZCBieSB0aGUgc3MgdG9vbC5cXG4gIDI1OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWS5cXG4gIDI2OlxcdFxcbiAgMjc6XFx0XFx0ICBFbmFibGUgdGhpcyBtb2R1bGUgc28gdXNlcnNwYWNlIGFwcGxpY2F0aW9ucyBjYW4gcXVlcnkgb3BlbiBzb2NrZXRzLlxcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWcgVlNPQ0tFVFNfTE9PUEJBQ0tcXG4gIDMwOlxcdFxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIFNvY2tldHMgbG9vcGJhY2sgdHJhbnNwb3J0XFxcIlxcbiAgMzE6XFx0XFx0ZGVwZW5kcyBvbiBWU09DS0VUU1xcbiAgMzI6XFx0XFx0ZGVmYXVsdCB5XFxuICAzMzpcXHRcXHRzZWxlY3QgVklSVElPX1ZTT0NLRVRTX0NPTU1PTlxcbiAgMzQ6XFx0XFx0aGVscFxcbiAgMzU6XFx0XFx0ICBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGEgbG9vcGJhY2sgdHJhbnNwb3J0IGZvciBWaXJ0dWFsIFNvY2tldHMsXFxuICAzNjpcXHRcXHQgIHVzaW5nIHZtd192c29ja192aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5cXG4gIDM3OlxcdFxcbiAgMzg6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuICAzOTpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHZzb2NrX2xvb3BiYWNrLiBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNDA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE0OjIzOjM1Ljk0MzUyOTIyOFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjU0NTI2ODk3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgbGlrZSB5b3U6XG5cbioqRXhhbWluaW5nIFZpcnR1YWwgU29ja2V0cyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCBlbmFibGluZyBgVlNPQ0tFVFNgIGFuZCBgVlNPQ0tFVFNfTE9PUEJBQ0tgIHNlZW1zIGxpa2UgYSBzb2xpZCBpbml0aWFsIG1vdmUuIEhvbGQgb24gYSBzZWNvbmQsIHRoYXQgYFZTT0NLRVRTX0xPT1BCQUNLYCBpcyBzZXQgYXMgYGRlZmF1bHQgeWAsIHNvIHRoYXQncyBhbHJlYWR5IGluIHRoZSBtaXgsIG5vIG5lZWQgdG8gb3ZlcnRoaW5rIHRoYXQuIEhtbSwgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgYXZhaWxhYmxlIHRyYW5zcG9ydHMgYmV5b25kIHRoZSBiYXNpY3MuIExldCBtZSBxdWlja2x5IHNjYW4gZm9yIGBWSVJUSU9fVlNPQ0tFVFNgLCBzZWUgaWYgdGhhdCdzIGFuIG9wdGlvbiBvciBpZiBpdCdzIHRoZSBvbmx5IHJlYWwgY2hvaWNlIHdlIGhhdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5OTksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE0OjI0OjI4LjQ4ODgwMTc3NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI4NTI3OTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWSVJUSU9fVlNPQ0tFVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Ztd192c29jay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC92bXdfdnNvY2svS2NvbmZpZz00MT1jb25maWcgVk1XQVJFX1ZNQ0lfVlNPQ0tFVFNcXG4tLVxcbm5ldC92bXdfdnNvY2svS2NvbmZpZy01Mi1cXG5uZXQvdm13X3Zzb2NrL0tjb25maWc6NTM6Y29uZmlnIFZJUlRJT19WU09DS0VUU1xcbm5ldC92bXdfdnNvY2svS2NvbmZpZy01NC1cXHR0cmlzdGF0ZSBcXFwidmlydGlvIHRyYW5zcG9ydCBmb3IgVmlydHVhbCBTb2NrZXRzXFxcIlxcbi0tXFxubmV0L3Ztd192c29jay9LY29uZmlnLTY1LVxcbm5ldC92bXdfdnNvY2svS2NvbmZpZzo2Njpjb25maWcgVklSVElPX1ZTT0NLRVRTX0NPTU1PTlxcbm5ldC92bXdfdnNvY2svS2NvbmZpZy02Ny1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNDoyNDoyOS4wMTczMzgxNzFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI1NTI5ODE2MzczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFZTT0NLIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgb3ZlciB0aGlzIHBhdGNoLCBhbmQgSSdtIGZvY3VzaW5nIG9uIGEgY291cGxlIG9mIGtleSBhcmVhcy4gSSBuZWVkIHRvIGtlZXAgYFZTT0NLRVRTYCBhbmQgYFZTT0NLRVRTX0xPT1BCQUNLYCBpbiBtaW5kLCBhcyBJJ2xsIHByb2JhYmx5IGJlIGVuYWJsaW5nIHRob3NlIGNvbmZpZ3MgZHVyaW5nIHRlc3RpbmcuIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBgdnNvY2tfY29ubmVjdGAgYW5kIGB2c29ja19hY2NlcHRgLCB3aGljaCBhcmUgZnVuZGFtZW50YWwgZm9yIGBBRl9WU09DS2Agc29ja2V0cy4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IHJlc2lkZXMuXG5cblRoZSBjaGFuZ2UgaXRzZWxmIGlzIGZ1bmN0aW9uYWw7IGl0J3MgYWxsIGFib3V0IGhvdyB0aGVzZSBmdW5jdGlvbnMgaGFuZGxlIGVycm9ycyBub3cuIEZvciBgY29ubmVjdGAsIHRoZXkncmUgdXNpbmcgYHNvY2tfZXJyb3Ioc2spYCwgd2hpY2ggY2xlYXJzIHRoZSBlcnJvciBmbGFnLiBUaGF0IHNvdW5kcyByZWFzb25hYmxlLiBGb3IgYGFjY2VwdGAsIGl0J3MgaWdub3JpbmcgYHNrX2VycmAgb24gdGhlIGxpc3RlbmVyIHNvY2tldC4gSSB0aGluayB0aGF0J3MgdGhlIGNvcnJlY3QgYXBwcm9hY2guIExpc3RlbmVyIHNvY2tldHMgc2hvdWxkbid0IGFib3J0IGBhY2NlcHRgIGlmIGEgc3BlY2lmaWMgaW5jb21pbmcgY29ubmVjdGlvbiBmYWlscywgbGlrZSBpZiB0aGV5IHJlY2VpdmUgYSBSU1QuIFRob3VnaCwgaG1tLCBJIHNob3VsZCBpbnZlc3RpZ2F0ZSBmdXJ0aGVyOyBwZXJoYXBzIGFuIGFzeW5jaHJvbm91cyBlcnJvciBjb3VsZCBzZXQgYHNrX2VycmAgYW5kIHN0aWxsIG5lZWQgdG8gYmUgbWFuYWdlZCwgYnV0IGBhY2NlcHRgIHNob3VsZG4ndCBiZSBibG9ja2VkLlxuXG5UbyBzdW1tYXJpemUgbXkgYXBwcm9hY2ggdG8gdGhpcyBwYXRjaDogSSdtIGNsYXNzaWZ5aW5nIHRoaXMgYXMgKipXb3J0aEZ1enppbmc6IHRydWUqKi4gVGhlIGBGb2N1c1N5bWJvbHNgIHdpbGwgYWJzb2x1dGVseSBiZSBgdnNvY2tfY29ubmVjdGAgYW5kIGB2c29ja19hY2NlcHRgLCB0aGVzZSBhcmUgdGhlIHBvaW50cyBvZiBpbnRlcmVzdC4gTXkgYEVuYWJsZUNvbmZpZ3NgIHdpbGwgYmUgYFZTT0NLRVRTYCBhbmQgYFZTT0NLRVRTX0xPT1BCQUNLYC4gVGhlIGNvcmUgb2YgbXkgcmVhc29uaW5nIGlzIHRoaXM6IHRoZSBwYXRjaCBmdW5kYW1lbnRhbGx5IGFsdGVycyB0aGUgZXJyb3IgaGFuZGxpbmcgd2l0aGluIGB2c29ja19jb25uZWN0YCBhbmQgYHZzb2NrX2FjY2VwdGAgZm9yIGBBRl9WU09DS2Agc29ja2V0cy4gVGhlIHNwZWNpZmljIGNoYW5nZXMgdG8gaG93IGBza19lcnJgIGlzIGNoZWNrZWQgYW5kIGNsZWFyZWQgd2lsbCBoYXZlIGEgZGlyZWN0IGltcGFjdCBvbiB0aGUgY29udHJvbCBmbG93IGFuZCByZXR1cm4gdmFsdWVzIG9mIHRoZXNlIGNyaXRpY2FsIHNvY2tldCBvcGVyYXRpb25zLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgbmV3IGVycm9yIGhhbmRsaW5nIGJlaGF2ZXMgY29ycmVjdGx5IHVuZGVyIGFsbCBzb3J0cyBvZiBzb2NrZXQgc3RhdGVzLCBzbyBJJ2xsIGRlc2lnbiB0ZXN0IGNhc2VzIHRvIHRoYXQgZW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDA4LCJPdXRwdXRUb2tlbnMiOjEzNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNDoyNjozNC41NDcxNTgyNzNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzkxNDUxMTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZTT0NLRVRTXCIsXG4gICAgXCJWU09DS0VUU19MT09QQkFDS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZzb2NrX2Nvbm5lY3RcIixcbiAgICBcInZzb2NrX2FjY2VwdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBsb2dpYyBpbiBgdnNvY2tfY29ubmVjdGAgYW5kIGB2c29ja19hY2NlcHRgIGZvciBBRl9WU09DSyBzb2NrZXRzLiBJdCBjaGFuZ2VzIGhvdyBgc2tfZXJyYCBpcyBjaGVja2VkIGFuZCBjbGVhcmVkLCB3aGljaCBkaXJlY3RseSBhZmZlY3RzIHRoZSBjb250cm9sIGZsb3cgYW5kIHJldHVybiB2YWx1ZXMgb2YgdGhlc2UgY29yZSBzb2NrZXQgb3BlcmF0aW9ucy4gRnV6emluZyB0aGVzZSBmdW5jdGlvbnMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGUgbmV3IGVycm9yIGhhbmRsaW5nIGJlaGF2ZXMgY29ycmVjdGx5IHVuZGVyIHZhcmlvdXMgc29ja2V0IHN0YXRlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWU09DS0VUU1wiLFxuICAgIFwiVlNPQ0tFVFNfTE9PUEJBQ0tcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2c29ja19jb25uZWN0XCIsXG4gICAgXCJ2c29ja19hY2NlcHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgbG9naWMgaW4gYHZzb2NrX2Nvbm5lY3RgIGFuZCBgdnNvY2tfYWNjZXB0YCBmb3IgQUZfVlNPQ0sgc29ja2V0cy4gSXQgY2hhbmdlcyBob3cgYHNrX2VycmAgaXMgY2hlY2tlZCBhbmQgY2xlYXJlZCwgd2hpY2ggZGlyZWN0bHkgYWZmZWN0cyB0aGUgY29udHJvbCBmbG93IGFuZCByZXR1cm4gdmFsdWVzIG9mIHRoZXNlIGNvcmUgc29ja2V0IG9wZXJhdGlvbnMuIEZ1enppbmcgdGhlc2UgZnVuY3Rpb25zIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhlIG5ldyBlcnJvciBoYW5kbGluZyBiZWhhdmVzIGNvcnJlY3RseSB1bmRlciB2YXJpb3VzIHNvY2tldCBzdGF0ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowc82ch[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-04 13:57:43 +0000 UTC FinishedAt: 2026-08-04 14:26:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "5b4f243f78a533abf414bfd96325aa2c96e711a3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VSOCKETS", "VSOCKETS_LOOPBACK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "5b4f243f78a533abf414bfd96325aa2c96e711a3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VSOCKETS", "VSOCKETS_LOOPBACK" ], "series_id": "853a5dff-ad53-49b2-9763-35493eb96fed" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "vsock_connect", "vsock_accept" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA0IDE0OjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZTT0NLRVRTJiMzNDssCiAgICAmIzM0O1ZTT0NLRVRTX0xPT1BCQUNLJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dnNvY2tfY29ubmVjdCYjMzQ7LAogICAgJiMzNDt2c29ja19hY2NlcHQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIGxvZ2ljIGluIGB2c29ja19jb25uZWN0YCBhbmQgYHZzb2NrX2FjY2VwdGAgZm9yIEFGX1ZTT0NLIHNvY2tldHMuIEl0IGNoYW5nZXMgaG93IGBza19lcnJgIGlzIGNoZWNrZWQgYW5kIGNsZWFyZWQsIHdoaWNoIGRpcmVjdGx5IGFmZmVjdHMgdGhlIGNvbnRyb2wgZmxvdyBhbmQgcmV0dXJuIHZhbHVlcyBvZiB0aGVzZSBjb3JlIHNvY2tldCBvcGVyYXRpb25zLiBGdXp6aW5nIHRoZXNlIGZ1bmN0aW9ucyBpcyBpbXBvcnRhbnQgdG8gZW5zdXJlIHRoZSBuZXcgZXJyb3IgaGFuZGxpbmcgYmVoYXZlcyBjb3JyZWN0bHkgdW5kZXIgdmFyaW91cyBzb2NrZXQgc3RhdGVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE0OjIxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNDJiNThkMWQ4MGJmMGZlOWNjYWJmOGQ3YzVjYTdjM2MzMjBmZmE2OVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTQ6MjE6MTAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3Ztd192c29jay9hZl92c29jay5jIGIvbmV0L3Ztd192c29jay9hZl92c29jay5jXG5pbmRleCA2MjJkYmQwNDY3OTk0Li41OTRmZTI3ZDJlYmU2IDEwMDY0NFxuLS0tIGEvbmV0L3Ztd192c29jay9hZl92c29jay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmNcbkBAIC0xODQ3LDEyICYjNDM7MTg0NywxMCBAQCBzdGF0aWMgaW50IHZzb2NrX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKmFkZHIsXG4gXHRcdHByZXBhcmVfdG9fd2FpdChza19zbGVlcChzayksIFx1MDAyNndhaXQsIFRBU0tfSU5URVJSVVBUSUJMRSk7XG4gXHR9XG4gXG4tXHRpZiAoc2stXHUwMDNlc2tfZXJyKSB7XG4tXHRcdGVyciA9IC1zay1cdTAwM2Vza19lcnI7XG4mIzQzO1x0ZXJyID0gc29ja19lcnJvcihzayk7XG4mIzQzO1x0aWYgKGVycikge1xuIFx0XHRzay1cdTAwM2Vza19zdGF0ZSA9IFRDUF9DTE9TRTtcbiBcdFx0c29jay1cdTAwM2VzdGF0ZSA9IFNTX1VOQ09OTkVDVEVEO1xuLVx0fSBlbHNlIHtcbi1cdFx0ZXJyID0gMDtcbiBcdH1cbiBcbiBvdXRfd2FpdDpcbkBAIC0xODkzLDcgJiM0MzsxODkxLDcgQEAgc3RhdGljIGludCB2c29ja19hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jayxcbiBcdHRpbWVvdXQgPSBzb2NrX3JjdnRpbWVvKGxpc3RlbmVyLCBhcmctXHUwMDNlZmxhZ3MgXHUwMDI2IE9fTk9OQkxPQ0spO1xuIFxuIFx0d2hpbGUgKChjb25uZWN0ZWQgPSB2c29ja19kZXF1ZXVlX2FjY2VwdChsaXN0ZW5lcikpID09IE5VTEwgXHUwMDI2XHUwMDI2XG4tXHQgICAgICAgbGlzdGVuZXItXHUwMDNlc2tfZXJyID09IDAgXHUwMDI2XHUwMDI2IHRpbWVvdXQgIT0gMCkge1xuJiM0MztcdCAgICAgICB0aW1lb3V0ICE9IDApIHtcbiBcdFx0cHJlcGFyZV90b193YWl0KHNrX3NsZWVwKGxpc3RlbmVyKSwgXHUwMDI2d2FpdCwgVEFTS19JTlRFUlJVUFRJQkxFKTtcbiBcdFx0cmVsZWFzZV9zb2NrKGxpc3RlbmVyKTtcbiBcdFx0dGltZW91dCA9IHNjaGVkdWxlX3RpbWVvdXQodGltZW91dCk7XG5AQCAtMTkwNiwxMSAmIzQzOzE5MDQsOCBAQCBzdGF0aWMgaW50IHZzb2NrX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLFxuIFx0XHR9XG4gXHR9XG4gXG4tXHRpZiAobGlzdGVuZXItXHUwMDNlc2tfZXJyKSB7XG4tXHRcdGVyciA9IC1saXN0ZW5lci1cdTAwM2Vza19lcnI7XG4tXHR9IGVsc2UgaWYgKCFjb25uZWN0ZWQpIHtcbiYjNDM7XHRpZiAoIWNvbm5lY3RlZClcbiBcdFx0ZXJyID0gLUVBR0FJTjtcbi1cdH1cbiBcbiBcdGlmIChjb25uZWN0ZWQpIHtcbiBcdFx0c2tfYWNjZXB0cV9yZW1vdmVkKGxpc3RlbmVyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNDoyMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT41bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VlNPQ0tFVFMmIzM0OywKICAgICYjMzQ7VlNPQ0tFVFNfTE9PUEJBQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2c29ja19jb25uZWN0JiMzNDssCiAgICAmIzM0O3Zzb2NrX2FjY2VwdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgbG9naWMgaW4gYHZzb2NrX2Nvbm5lY3RgIGFuZCBgdnNvY2tfYWNjZXB0YCBmb3IgQUZfVlNPQ0sgc29ja2V0cy4gSXQgY2hhbmdlcyBob3cgYHNrX2VycmAgaXMgY2hlY2tlZCBhbmQgY2xlYXJlZCwgd2hpY2ggZGlyZWN0bHkgYWZmZWN0cyB0aGUgY29udHJvbCBmbG93IGFuZCByZXR1cm4gdmFsdWVzIG9mIHRoZXNlIGNvcmUgc29ja2V0IG9wZXJhdGlvbnMuIEZ1enppbmcgdGhlc2UgZnVuY3Rpb25zIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhlIG5ldyBlcnJvciBoYW5kbGluZyBiZWhhdmVzIGNvcnJlY3RseSB1bmRlciB2YXJpb3VzIHNvY2tldCBzdGF0ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA0MmI1OGQxZDgwYmYwZmU5Y2NhYmY4ZDdjNWNhN2MzYzMyMGZmYTY5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgNCAxNDoyMToxMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC92bXdfdnNvY2svYWZfdnNvY2suYyBiL25ldC92bXdfdnNvY2svYWZfdnNvY2suYwppbmRleCA2MjJkYmQwNDY3OTk0Li41OTRmZTI3ZDJlYmU2IDEwMDY0NAotLS0gYS9uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3Ztd192c29jay9hZl92c29jay5jCkBAIC0xODQ3LDEyICYjNDM7MTg0NywxMCBAQCBzdGF0aWMgaW50IHZzb2NrX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKmFkZHIsCiAJCXByZXBhcmVfdG9fd2FpdChza19zbGVlcChzayksICZhbXA7d2FpdCwgVEFTS19JTlRFUlJVUFRJQkxFKTsKIAl9CiAKLQlpZiAoc2stJmd0O3NrX2VycikgewotCQllcnIgPSAtc2stJmd0O3NrX2VycjsKJiM0MzsJZXJyID0gc29ja19lcnJvcihzayk7CiYjNDM7CWlmIChlcnIpIHsKIAkJc2stJmd0O3NrX3N0YXRlID0gVENQX0NMT1NFOwogCQlzb2NrLSZndDtzdGF0ZSA9IFNTX1VOQ09OTkVDVEVEOwotCX0gZWxzZSB7Ci0JCWVyciA9IDA7CiAJfQogCiBvdXRfd2FpdDoKQEAgLTE4OTMsNyAmIzQzOzE4OTEsNyBAQCBzdGF0aWMgaW50IHZzb2NrX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLAogCXRpbWVvdXQgPSBzb2NrX3JjdnRpbWVvKGxpc3RlbmVyLCBhcmctJmd0O2ZsYWdzICZhbXA7IE9fTk9OQkxPQ0spOwogCiAJd2hpbGUgKChjb25uZWN0ZWQgPSB2c29ja19kZXF1ZXVlX2FjY2VwdChsaXN0ZW5lcikpID09IE5VTEwgJmFtcDsmYW1wOwotCSAgICAgICBsaXN0ZW5lci0mZ3Q7c2tfZXJyID09IDAgJmFtcDsmYW1wOyB0aW1lb3V0ICE9IDApIHsKJiM0MzsJICAgICAgIHRpbWVvdXQgIT0gMCkgewogCQlwcmVwYXJlX3RvX3dhaXQoc2tfc2xlZXAobGlzdGVuZXIpLCAmYW1wO3dhaXQsIFRBU0tfSU5URVJSVVBUSUJMRSk7CiAJCXJlbGVhc2Vfc29jayhsaXN0ZW5lcik7CiAJCXRpbWVvdXQgPSBzY2hlZHVsZV90aW1lb3V0KHRpbWVvdXQpOwpAQCAtMTkwNiwxMSAmIzQzOzE5MDQsOCBAQCBzdGF0aWMgaW50IHZzb2NrX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLAogCQl9CiAJfQogCi0JaWYgKGxpc3RlbmVyLSZndDtza19lcnIpIHsKLQkJZXJyID0gLWxpc3RlbmVyLSZndDtza19lcnI7Ci0JfSBlbHNlIGlmICghY29ubmVjdGVkKSB7CiYjNDM7CWlmICghY29ubmVjdGVkKQogCQllcnIgPSAtRUFHQUlOOwotCX0KIAogCWlmIChjb25uZWN0ZWQpIHsKIAkJc2tfYWNjZXB0cV9yZW1vdmVkKGxpc3RlbmVyKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTQ6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM4NgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDM0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHZzb2NrIENvbm5lY3Rpb24gYW5kIEFjY2VwdGFuY2UgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmNgLiBJdCBzZWVtcyB0byBiZSB0b3VjaGluZyBgdnNvY2tfY29ubmVjdGAgYW5kIGB2c29ja19hY2NlcHRgLCB3aGljaCBhcmUga2V5IGZvciBlc3RhYmxpc2hpbmcgYW5kIGhhbmRsaW5nIFZTT0NLIGNvbm5lY3Rpb25zLiBMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKSW4gYHZzb2NrX2Nvbm5lY3RgLCB0aGUgY2hhbmdlIGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZXkmIzM5O3JlIHJlcGxhY2luZyB0aGUgZGlyZWN0IGNoZWNrIGZvciBgc2stJmd0O3NrX2VycmAgd2l0aCBhIGNhbGwgdG8gYHNvY2tfZXJyb3Ioc2spYC4gQmVmb3JlLCBpdCB3YXMgZXhwbGljaXRseSBjaGVja2luZyB0aGUgc29ja2V0JiMzOTtzIGVycm9yIHN0YXRlLiBOb3csIGl0IGFwcGVhcnMgYHNvY2tfZXJyb3JgIGlzIHJlc3BvbnNpYmxlIGZvciByZXRyaWV2aW5nIGFuZCBoYW5kbGluZyB0aGF0IGVycm9yLiBJJiMzOTtkIG5lZWQgdG8gbG9vayBhdCB0aGUgYHNvY2tfZXJyb3JgIGRlZmluaXRpb24gaXRzZWxmIHRvIGJlIHN1cmUuIFdoYXQmIzM5O3MgdGhlIGNvbnRleHQ/IEhtbS4KCkluIGB2c29ja19hY2NlcHRgLCB0aGV5JiMzOTt2ZSByZW1vdmVkIGEgY29uZGl0aW9uIGZyb20gdGhlIGFjY2VwdGFuY2UgbG9vcC4gU3BlY2lmaWNhbGx5LCB0aGV5JiMzOTt2ZSBkcm9wcGVkIHRoZSBgbGlzdGVuZXItJmd0O3NrX2VyciA9PSAwYCBjaGVjay4gTm93LCBpdCYjMzk7cyBqdXN0IGB3aGlsZSAoKGNvbm5lY3RlZCA9IHZzb2NrX2RlcXVldWVfYWNjZXB0KGxpc3RlbmVyKSkgPT0gTlVMTCAmYW1wOyZhbXA7IHRpbWVvdXQgIT0gMClgLiBUaGUgb2xkIHZlcnNpb24gd2FzIGd1YXJkaW5nIGFnYWluc3QgYWNjZXB0aW5nIGNvbm5lY3Rpb25zIGlmIHRoZSBsaXN0ZW5lciBzb2NrZXQgaGFkIGFuIGVycm9yLiBUaGV5JiMzOTt2ZSBhbHNvIHJlbW92ZWQgdGhlIGZpbmFsIGBsaXN0ZW5lci0mZ3Q7c2tfZXJyYCBjaGVjayBhZnRlciB0aGUgbG9vcC4KClRoYXQmIzM5O3MgYSBiaXQgY29uY2VybmluZy4gSWYgeW91IHJlbW92ZSBhbiBlcnJvciBjaGVjaywgaG93IGlzIHRoZSBhY2NlcHRhbmNlIGxvb3AgZ29pbmcgdG8gcmVhY3QgdG8gYW4gZXJyb3I/IEFoLCB3YWl0IGEgbWludXRlLCBJIHRoaW5rIEkgc2VlIGl0LiBUaGUgaW1wbGljYXRpb24gaXMgdGhhdCBgc29ja19lcnJvcmAgaXMgY2xlYXJpbmcgdGhlIGBza19lcnJgIGZpZWxkLiBMb29raW5nIGF0IHRoZSBjaGFuZ2VzIGluIGB2c29ja19jb25uZWN0YCBhZ2FpbiwgeWVzLCBpdCYjMzk7cyBjYWxsaW5nIGBzb2NrX2Vycm9yYC4KClJpZ2h0LCBgc29ja19lcnJvcmAgaXMgbGlrZWx5IGF0b21pY2FsbHkgZXhjaGFuZ2luZyB0aGUgZXJyb3IgY29kZSB3aXRoIHplcm8sIHVzaW5nIGB4Y2hnKCZhbXA7c2stJmd0O3NrX2VyciwgMClgLiBTbyB0aGUgZXJyb3IgaXMgY2xlYXJlZCB3aGVuIGl0IGlzIHJldHJpZXZlZCwgc28gd2UgZG9uJiMzOTt0IG5lZWQgdG8gY2hlY2suIENsZXZlci4gVGhleSBhcmUgcHJvYmFibHkgZG9pbmcgaXQgdGhpcyB3YXkgZm9yIHRoaXMgcmVhc29uIQoKSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgYHZzb2NrX2FjY2VwdGAgdG8gY29uZmlybSB0aGlzIGJlaGF2aW9yLiBJdCBzZWVtcyBsaWtlIGl0JiMzOTtzIGEgc2ltcGxpZmljYXRpb24sIHJlbHlpbmcgb24gYHNvY2tfZXJyb3JgIHRvIGhhbmRsZSBlcnJvciBwcm9wYWdhdGlvbiwgc28gdGhlcmUgaXNuJiMzOTt0IGEgZG91YmxlLWNoZWNrLiBPa2F5LCBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgc29ja19lcnJvcmAgaXMgaGFuZGxpbmcgdGhlIGVycm9yIGNsZWFyaW5nIGFzIEkgc3VzcGVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNDoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svYWZfdnNvY2suYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4ODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTg4MDpcdFx0XHRnb3RvIG91dDtcbjE4ODE6XHRcdH1cbjE4ODI6XHRcbjE4ODM6XHRcdGlmIChsaXN0ZW5lci1cdTAwM2Vza19zdGF0ZSAhPSBUQ1BfTElTVEVOKSB7XG4xODg0Olx0XHRcdGVyciA9IC1FSU5WQUw7XG4xODg1Olx0XHRcdGdvdG8gb3V0O1xuMTg4NjpcdFx0fVxuMTg4NzpcdFxuMTg4ODpcdFx0LyogV2FpdCBmb3IgY2hpbGRyZW4gc29ja2V0cyB0byBhcHBlYXI7IHRoZXNlIGFyZSB0aGUgbmV3IHNvY2tldHNcbjE4ODk6XHRcdCAqIGNyZWF0ZWQgdXBvbiBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQuXG4xODkwOlx0XHQgKi9cbjE4OTE6XHRcdHRpbWVvdXQgPSBzb2NrX3JjdnRpbWVvKGxpc3RlbmVyLCBhcmctXHUwMDNlZmxhZ3MgXHUwMDI2IE9fTk9OQkxPQ0spO1xuMTg5MjpcdFxuMTg5MzpcdFx0d2hpbGUgKChjb25uZWN0ZWQgPSB2c29ja19kZXF1ZXVlX2FjY2VwdChsaXN0ZW5lcikpID09IE5VTEwgXHUwMDI2XHUwMDI2XG4xODk0Olx0XHQgICAgICAgdGltZW91dCAhPSAwKSB7XG4xODk1Olx0XHRcdHByZXBhcmVfdG9fd2FpdChza19zbGVlcChsaXN0ZW5lciksIFx1MDAyNndhaXQsIFRBU0tfSU5URVJSVVBUSUJMRSk7XG4xODk2Olx0XHRcdHJlbGVhc2Vfc29jayhsaXN0ZW5lcik7XG4xODk3Olx0XHRcdHRpbWVvdXQgPSBzY2hlZHVsZV90aW1lb3V0KHRpbWVvdXQpO1xuMTg5ODpcdFx0XHRmaW5pc2hfd2FpdChza19zbGVlcChsaXN0ZW5lciksIFx1MDAyNndhaXQpO1xuMTg5OTpcdFx0XHRsb2NrX3NvY2sobGlzdGVuZXIpO1xuMTkwMDpcdFxuMTkwMTpcdFx0XHRpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpIHtcbjE5MDI6XHRcdFx0XHRlcnIgPSBzb2NrX2ludHJfZXJybm8odGltZW91dCk7XG4xOTAzOlx0XHRcdFx0Z290byBvdXQ7XG4xOTA0Olx0XHRcdH1cbjE5MDU6XHRcdH1cbjE5MDY6XHRcbjE5MDc6XHRcdGlmICghY29ubmVjdGVkKVxuMTkwODpcdFx0XHRlcnIgPSAtRUFHQUlOO1xuMTkwOTpcdFxuMTkxMDpcdFx0aWYgKGNvbm5lY3RlZCkge1xuMTkxMTpcdFx0XHRza19hY2NlcHRxX3JlbW92ZWQobGlzdGVuZXIpO1xuMTkxMjpcdFxuMTkxMzpcdFx0XHRsb2NrX3NvY2tfbmVzdGVkKGNvbm5lY3RlZCwgU0lOR0xFX0RFUFRIX05FU1RJTkcpO1xuMTkxNDpcdFx0XHR2Y29ubmVjdGVkID0gdnNvY2tfc2soY29ubmVjdGVkKTtcbjE5MTU6XHRcbjE5MTY6XHRcdFx0LyogSWYgdGhlIGxpc3RlbmVyIHNvY2tldCBoYXMgcmVjZWl2ZWQgYW4gZXJyb3IsIHRoZW4gd2Ugc2hvdWxkXG4xOTE3Olx0XHRcdCAqIHJlamVjdCB0aGlzIHNvY2tldCBhbmQgcmV0dXJuLiAgTm90ZSB0aGF0IHdlIHNpbXBseSBtYXJrIHRoZVxuMTkxODpcdFx0XHQgKiBzb2NrZXQgcmVqZWN0ZWQsIGRyb3Agb3VyIHJlZmVyZW5jZSwgYW5kIGxldCB0aGUgY2xlYW51cFxuMTkxOTpcdFx0XHQgKiBmdW5jdGlvbiBoYW5kbGUgdGhlIGNsZWFudXA7IHRoZSBmYWN0IHRoYXQgd2UgZm91bmQgaXQgaW5cbjE5MjA6XHRcdFx0ICogdGhlIGxpc3RlbmVyJiMzOTtzIGFjY2VwdCBxdWV1ZSBndWFyYW50ZWVzIHRoYXQgdGhlIGNsZWFudXBcbjE5MjE6XHRcdFx0ICogZnVuY3Rpb24gaGFzbiYjMzk7dCBydW4geWV0LlxuMTkyMjpcdFx0XHQgKi9cbjE5MjM6XHRcdFx0aWYgKGVycikge1xuMTkyNDpcdFx0XHRcdHZjb25uZWN0ZWQtXHUwMDNlcmVqZWN0ZWQgPSB0cnVlO1xuMTkyNTpcdFx0XHR9IGVsc2Uge1xuMTkyNjpcdFx0XHRcdG5ld3NvY2stXHUwMDNlc3RhdGUgPSBTU19DT05ORUNURUQ7XG4xOTI3Olx0XHRcdFx0c29ja19ncmFmdChjb25uZWN0ZWQsIG5ld3NvY2spO1xuMTkyODpcdFxuMTkyOTpcdFx0XHRcdHNldF9iaXQoU09DS19DVVNUT01fU09DS09QVCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNDoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTY4CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogNDc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYHZzb2NrX2FjY2VwdGAgRnVuY3Rpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgcmVtZW1iZXIgdGhhdCBgZXJyYCBpcyBpbml0aWFsaXplZCB0byAwIGF0IHRoZSBzdGFydCBvZiBgdnNvY2tfYWNjZXB0YC4gSWYgYSBjb25uZWN0aW9uIGlzbiYjMzk7dCBlc3RhYmxpc2hlZCAoYCFjb25uZWN0ZWRgKSwgYGVycmAgaXMgc2V0IHRvIGAtRUFHQUlOYC4gVGhlbiwgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgbG9naWMgd2hlcmUgYGxpc3RlbmVyLSZndDtza19lcnJgIHdhcyBiZWluZyBjaGVja2VkLiBUaGUgc3RydWN0dXJlIGJlZm9yZSB0aGUgY2hhbmdlIHdhczoKYGBgYwoJaWYgKGxpc3RlbmVyLSZndDtza19lcnIpIHsKCQllcnIgPSAtbGlzdGVuZXItJmd0O3NrX2VycjsKCX0gZWxzZSBpZiAoIWNvbm5lY3RlZCkgewoJCWVyciA9IC1FQUdBSU47Cgl9CmBgYApIb3dldmVyLCB3YWl0LCB0aGUgb3JpZ2luYWwgY29kZSBoYWQgYSBkaWZmZXJlbnQgc3RydWN0dXJlLiBMZXQgbWUgcmVjYWxsIGl0OgpgYGBjCgllcnIgPSAwOwoKCWxvY2tfc29jayhsaXN0ZW5lcik7CgoJaWYgKHNvY2stJmd0O3R5cGUgIT0gU09DS19TVFJFQU0gJmFtcDsmYW1wOyBzb2NrLSZndDt0eXBlICE9IFNPQ0tfU0VRUEFDS0VUKSB7CgkJZXJyID0gLUVPUE5PVFNVUFA7CgkJZ290byBvdXQ7Cgl9CgoJaWYgKGxpc3RlbmVyLSZndDtza19zdGF0ZSAhPSBUQ1BfTElTVEVOKSB7CgkJZXJyID0gLUVJTlZBTDsKCQlnb3RvIG91dDsKCX0KCgkvKiBXYWl0IGZvciBjaGlsZHJlbiBzb2NrZXRzIHRvIGFwcGVhcjsgdGhlc2UgYXJlIHRoZSBuZXcgc29ja2V0cwoJICogY3JlYXRlZCB1cG9uIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudC4KCSAqLwoJdGltZW91dCA9IHNvY2tfcmN2dGltZW8obGlzdGVuZXIsIGFyZy0mZ3Q7ZmxhZ3MgJmFtcDsgT19OT05CTE9DSyk7CgoJd2hpbGUgKChjb25uZWN0ZWQgPSB2c29ja19kZXF1ZXVlX2FjY2VwdChsaXN0ZW5lcikpID09IE5VTEwgJmFtcDsmYW1wOwoJICAgICAgIGxpc3RlbmVyLSZndDtza19lcnIgPT0gMCAmYW1wOyZhbXA7IHRpbWVvdXQgIT0gMCkgewoJCXByZXBhcmVfdG9fd2FpdChza19zbGVlcChsaXN0ZW5lciksICZhbXA7d2FpdCwgVEFTS19JTlRFUlJVUFRJQkxFKTsKCQlyZWxlYXNlX3NvY2sobGlzdGVuZXIpOwoJCXRpbWVvdXQgPSBzY2hlZHVsZV90aW1lb3V0KHRpbWVvdXQpOwoJCWZpbmlzaF93YWl0KHNrX3NsZWVwKGxpc3RlbmVyKSwgJmFtcDt3YWl0KTsKCQlsb2NrX3NvY2sobGlzdGVuZXIpOwoKCQlpZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpIHsKCQkJZXJyID0gc29ja19pbnRyX2Vycm5vKHRpbWVvdXQpOwoJCQlnb3RvIG91dDsKCQl9Cgl9CgoJaWYgKGxpc3RlbmVyLSZndDtza19lcnIpIHsKCQllcnIgPSAtbGlzdGVuZXItJmd0O3NrX2VycjsKCX0gZWxzZSBpZiAoIWNvbm5lY3RlZCkgewoJCWVyciA9IC1FQUdBSU47Cgl9CmBgYApOb3cgSSBzZWUgaXQhIFRoZSBwYXRjaCBjb21wbGV0ZWx5IHJlbW92ZXMgdGhlIGBsaXN0ZW5lci0mZ3Q7c2tfZXJyYCBjaGVjayB3aXRoaW4gdGhlIGB2c29ja19hY2NlcHRgIGZ1bmN0aW9uLiBUaGlzIGlzIHNpZ25pZmljYW50LiBJdCBtZWFucyB0aGUgb3JpZ2luYWwgZXJyb3IgaGFuZGxpbmcgbWVjaGFuaXNtLCB3aGljaCBjaGVja2VkIGlmIHRoZSBsaXN0ZW5lciBzb2NrZXQgaGFkIGFuIGVycm9yIGJlZm9yZSBjaGVja2luZyBmb3IgYSBjb25uZWN0aW9uLCBpcyBubyBsb25nZXIgcHJlc2VudC4gSSYjMzk7ZCBiZXR0ZXIgY29uZmlybSB0aGlzIGJ5IGNoZWNraW5nIHRoZSBvcmlnaW5hbCBjb2RlIG9mIGB2c29ja19hY2NlcHRgIHRvIGJlIHN1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dnNvY2tfYWNjZXB0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3Ztd192c29jay9hZl92c29jay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svYWZfdnNvY2suYz0xNjc3PXN0YXRpYyBpbnQgdnNvY2tfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqYWRkcixcbi0tXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtMTg2Mi1cbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYzoxODYzOnN0YXRpYyBpbnQgdnNvY2tfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtMTg2NC1cdFx0XHRzdHJ1Y3QgcHJvdG9fYWNjZXB0X2FyZyAqYXJnKVxuLS1cbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYz0yNjM5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHZzb2NrX3N0cmVhbV9vcHMgPSB7XG4tLVxubmV0L3Ztd192c29jay9hZl92c29jay5jLTI2NDUtXHQuc29ja2V0cGFpciA9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYzoyNjQ2Olx0LmFjY2VwdCA9IHZzb2NrX2FjY2VwdCxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYy0yNjQ3LVx0LmdldG5hbWUgPSB2c29ja19nZXRuYW1lLFxuLS1cbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYz0yNjYxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHZzb2NrX3NlcXBhY2tldF9vcHMgPSB7XG4tLVxubmV0L3Ztd192c29jay9hZl92c29jay5jLTI2NjctXHQuc29ja2V0cGFpciA9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYzoyNjY4Olx0LmFjY2VwdCA9IHZzb2NrX2FjY2VwdCxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYy0yNjY5LVx0LmdldG5hbWUgPSB2c29ja19nZXRuYW1lLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE0OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0NjEKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGl2aW5nIEJhY2sgaW50byBgdnNvY2tfYWNjZXB0YCoqCgpSaWdodCwgbGV0JiMzOTtzIGNpcmNsZSBiYWNrIHRvIGB2c29ja19hY2NlcHRgIGluIGBuZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmNgLiBJJiMzOTttIGdvaW5nIHRvIHJlLWV4YW1pbmUgdGhhdCBmdW5jdGlvbi4gSXQgZmVlbHMgbGlrZSB3ZSYjMzk7dmUgYmVlbiBydW5uaW5nIGludG8gc29tZSBpc3N1ZXMgb24gdGhlIGNvbm5lY3Rpb24gZnJvbnQsIGFuZCBgdnNvY2tfYWNjZXB0YCBpcyBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoYXQgcHV6emxlLiBUaW1lIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyBpdCBoYW5kbGVzIGluY29taW5nIGNvbm5lY3Rpb24gcmVxdWVzdHMsIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyB0cmFuc3BvcnQsIGFuZCB3aGVyZSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIG9yIGxvY2tpbmcgaXNzdWVzIG1pZ2h0IGJlIGx1cmtpbmcuIEkmIzM5O2xsIGZvY3VzIG9uIGhvdyBpdCBtYW5hZ2VzIHRoZSBhY2NlcHQgcXVldWUsIGhvdyB0aGUgaGFuZHNoYWtlIGlzIGluaXRpYXRlZCwgYW5kIHdoYXQgZXJyb3IgaGFuZGxpbmcgaXMgaW4gcGxhY2UuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgc3VidGxlLiBVbmRlcnN0YW5kaW5nIHRoZSBmbG93IG9mIGNvbnRyb2wgaGVyZSBpcyBwYXJhbW91bnQuIFRoaXMgd2lsbCBiZSBhIHN1cmdpY2FsIGFuYWx5c2lzOyBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGFyZWEgdGhhdCBuZWVkcyBmdXJ0aGVyIGluc3BlY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTQ6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODYwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE4NjA6XHRcdHJldHVybiBlcnI7XG4xODYxOlx0fVxuMTg2MjpcdFxuMTg2MzpcdHN0YXRpYyBpbnQgdnNvY2tfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssXG4xODY0Olx0XHRcdFx0c3RydWN0IHByb3RvX2FjY2VwdF9hcmcgKmFyZylcbjE4NjU6XHR7XG4xODY2Olx0XHRzdHJ1Y3Qgc29jayAqbGlzdGVuZXI7XG4xODY3Olx0XHRpbnQgZXJyO1xuMTg2ODpcdFx0c3RydWN0IHNvY2sgKmNvbm5lY3RlZDtcbjE4Njk6XHRcdHN0cnVjdCB2c29ja19zb2NrICp2Y29ubmVjdGVkO1xuMTg3MDpcdFx0bG9uZyB0aW1lb3V0O1xuMTg3MTpcdFx0REVGSU5FX1dBSVQod2FpdCk7XG4xODcyOlx0XG4xODczOlx0XHRlcnIgPSAwO1xuMTg3NDpcdFx0bGlzdGVuZXIgPSBzb2NrLVx1MDAzZXNrO1xuMTg3NTpcdFxuMTg3NjpcdFx0bG9ja19zb2NrKGxpc3RlbmVyKTtcbjE4Nzc6XHRcbjE4Nzg6XHRcdGlmICghc29ja190eXBlX2Nvbm5lY3RpYmxlKHNvY2stXHUwMDNldHlwZSkpIHtcbjE4Nzk6XHRcdFx0ZXJyID0gLUVPUE5PVFNVUFA7XG4xODgwOlx0XHRcdGdvdG8gb3V0O1xuMTg4MTpcdFx0fVxuMTg4MjpcdFxuMTg4MzpcdFx0aWYgKGxpc3RlbmVyLVx1MDAzZXNrX3N0YXRlICE9IFRDUF9MSVNURU4pIHtcbjE4ODQ6XHRcdFx0ZXJyID0gLUVJTlZBTDtcbjE4ODU6XHRcdFx0Z290byBvdXQ7XG4xODg2Olx0XHR9XG4xODg3Olx0XG4xODg4Olx0XHQvKiBXYWl0IGZvciBjaGlsZHJlbiBzb2NrZXRzIHRvIGFwcGVhcjsgdGhlc2UgYXJlIHRoZSBuZXcgc29ja2V0c1xuMTg4OTpcdFx0ICogY3JlYXRlZCB1cG9uIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudC5cbjE4OTA6XHRcdCAqL1xuMTg5MTpcdFx0dGltZW91dCA9IHNvY2tfcmN2dGltZW8obGlzdGVuZXIsIGFyZy1cdTAwM2VmbGFncyBcdTAwMjYgT19OT05CTE9DSyk7XG4xODkyOlx0XG4xODkzOlx0XHR3aGlsZSAoKGNvbm5lY3RlZCA9IHZzb2NrX2RlcXVldWVfYWNjZXB0KGxpc3RlbmVyKSkgPT0gTlVMTCBcdTAwMjZcdTAwMjZcbjE4OTQ6XHRcdCAgICAgICB0aW1lb3V0ICE9IDApIHtcbjE4OTU6XHRcdFx0cHJlcGFyZV90b193YWl0KHNrX3NsZWVwKGxpc3RlbmVyKSwgXHUwMDI2d2FpdCwgVEFTS19JTlRFUlJVUFRJQkxFKTtcbjE4OTY6XHRcdFx0cmVsZWFzZV9zb2NrKGxpc3RlbmVyKTtcbjE4OTc6XHRcdFx0dGltZW91dCA9IHNjaGVkdWxlX3RpbWVvdXQodGltZW91dCk7XG4xODk4Olx0XHRcdGZpbmlzaF93YWl0KHNrX3NsZWVwKGxpc3RlbmVyKSwgXHUwMDI2d2FpdCk7XG4xODk5Olx0XHRcdGxvY2tfc29jayhsaXN0ZW5lcik7XG4xOTAwOlx0XG4xOTAxOlx0XHRcdGlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkge1xuMTkwMjpcdFx0XHRcdGVyciA9IHNvY2tfaW50cl9lcnJubyh0aW1lb3V0KTtcbjE5MDM6XHRcdFx0XHRnb3RvIG91dDtcbjE5MDQ6XHRcdFx0fVxuMTkwNTpcdFx0fVxuMTkwNjpcdFxuMTkwNzpcdFx0aWYgKCFjb25uZWN0ZWQpXG4xOTA4Olx0XHRcdGVyciA9IC1FQUdBSU47XG4xOTA5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTQ6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM4NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZTT0NLRVRTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3Ztd192c29jay9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svS2NvbmZpZy01LVxubmV0L3Ztd192c29jay9LY29uZmlnOjY6Y29uZmlnIFZTT0NLRVRTXG5uZXQvdm13X3Zzb2NrL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgU29ja2V0IHByb3RvY29sXCYjMzQ7XG4tLVxubmV0L3Ztd192c29jay9LY29uZmlnLTE4LVxubmV0L3Ztd192c29jay9LY29uZmlnOjE5OmNvbmZpZyBWU09DS0VUU19ESUFHXG5uZXQvdm13X3Zzb2NrL0tjb25maWctMjAtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIFNvY2tldHMgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQvdm13X3Zzb2NrL0tjb25maWctMjgtXG5uZXQvdm13X3Zzb2NrL0tjb25maWc6Mjk6Y29uZmlnIFZTT0NLRVRTX0xPT1BCQUNLXG5uZXQvdm13X3Zzb2NrL0tjb25maWctMzAtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIFNvY2tldHMgbG9vcGJhY2sgdHJhbnNwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE0OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5NDUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipWU09DS0VUUyBEZXBlbmRlbmN5IENoZWNrKioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBgVlNPQ0tFVFNgIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBjb21wbGV0ZSBkZXBlbmRlbmN5IHRyZWUsIGFuZCBJIG5lZWQgdG8gZG8gaXQgd2l0aCBhIGZvY3VzIG9uIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBhbmQgYW55IGFyZWFzIHdoZXJlIG91dGRhdGVkIG9yIGluY29tcGF0aWJsZSB2ZXJzaW9ucyBtaWdodCBiZSBsdXJraW5nLiBBcmUgd2UgdGFsa2luZyBqdXN0IHRoZSBvYnZpb3VzIGBsaWJ2c29ja2V0YCBhbmQgaXRzIGltbWVkaWF0ZSByZXF1aXJlbWVudHMsIG9yIGRvIHdlIGhhdmUgaW5kaXJlY3QgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIGdvaW5nIHRvIGJpdGUgdXMgZG93biB0aGUgbGluZT8gVGhpcyBpc24mIzM5O3QganVzdCBhYm91dCBtYWtpbmcgc3VyZSBldmVyeXRoaW5nICp3b3Jrcyo7IGl0JiMzOTtzIGFib3V0IGFudGljaXBhdGluZyBpc3N1ZXMgYmVmb3JlIHRoZXkgbWFuaWZlc3QgYXMgY3JpdGljYWwgYnVncyBvciBzZWN1cml0eSByaXNrcy4gSSBuZWVkIHRvIGNyb3NzLXJlZmVyZW5jZSB3aXRoIHRoZSBsYXRlc3Qgc2VjdXJpdHkgYWR2aXNvcmllcywgYW5kIHRoZSB2ZXJzaW9uIGNvbXBhdGliaWxpdHkgbWF0cml4LCBmb3IgdGhlIHVuZGVybHlpbmcga2VybmVsIGFuZCBoeXBlcnZpc29yLCBlc3BlY2lhbGx5IGlmIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBjb21wbGV4IHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBBbHNvLCBhcmUgd2UgdXNpbmcgYW55IGN1c3RvbSBvciBwYXRjaGVkIHZlcnNpb25zIGFueXdoZXJlPyBUaW1lIHRvIHB1bGwgdXAgdGhlIGRlcGVuZGVuY3kgZ3JhcGhzIGFuZCB2ZXJzaW9uIG1hbmlmZXN0cyBhbmQgZ2V0IGEgY2xlYXIgcGljdHVyZS4gR290dGEgbWFrZSBzdXJlIHdlJiMzOTtyZSBub3QgYnVpbGRpbmcgYSBob3VzZSBvZiBjYXJkcyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNDoyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC92bXdfdnNvY2svS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFZzb2NrIHByb3RvY29sXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBWU09DS0VUU1xuICAgNzpcdFx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBTb2NrZXQgcHJvdG9jb2xcJiMzNDtcbiAgIDg6XHRcdGhlbHBcbiAgIDk6XHRcdCAgVmlydHVhbCBTb2NrZXQgUHJvdG9jb2wgaXMgYSBzb2NrZXQgcHJvdG9jb2wgc2ltaWxhciB0byBUQ1AvSVBcbiAgMTA6XHRcdCAgYWxsb3dpbmcgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIFZpcnR1YWwgTWFjaGluZXMgYW5kIGh5cGVydmlzb3JcbiAgMTE6XHRcdCAgb3IgaG9zdC5cbiAgMTI6XHRcbiAgMTM6XHRcdCAgWW91IHNob3VsZCBhbHNvIHNlbGVjdCBvbmUgb3IgbW9yZSBoeXBlcnZpc29yLXNwZWNpZmljIHRyYW5zcG9ydHNcbiAgMTQ6XHRcdCAgYmVsb3cuXG4gIDE1Olx0XG4gIDE2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAgMTc6XHRcdCAgd2lsbCBiZSBjYWxsZWQgdnNvY2suIElmIHVuc3VyZSwgc2F5IE4uXG4gIDE4Olx0XG4gIDE5Olx0Y29uZmlnIFZTT0NLRVRTX0RJQUdcbiAgMjA6XHRcdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgU29ja2V0cyBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNDoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDY3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guCgoqKkFuYWx5emluZyB0aGUgVlNPQ0tFVFMgRGVwZW5kZW5jeSBTdHJ1Y3R1cmUqKgoKSG1tLCBzbyBgVlNPQ0tFVFNgIGl0c2VsZiwgYXMgSSB1bmRlcnN0YW5kIGl0LCBpZGVhbGx5ICpzaG91bGRuJiMzOTt0KiBoYXZlIGFueSBleHRlcm5hbCBkZXBlbmRlbmNpZXMgYmV5b25kIGBORVRgLiBBbmQgc2luY2UgYG5ldC9gIGlzIHdoZXJlIGl0IGxpdmVzLCB0aGF0IGRlcGVuZGVuY3kgaXMga2luZCBvZiBiYWtlZCBpbi4gVGhhdCBzZWVtcyBsb2dpY2FsLiBCdXQgdGhlIHJlYWwgcXVlc3Rpb24gaXMgaG93IHdlIGFjdHVhbGx5IHRlc3QgaXQuIFRvIHByb3Blcmx5IHZhbGlkYXRlIHRoZSBmdW5jdGlvbmFsaXR5IG9mIGBWU09DS0VUU2AsIHdlJiMzOTtyZSBsaWtlbHkgZ29pbmcgdG8gbmVlZCBzb21lIGtpbmQgb2YgdHJhbnNwb3J0IGxheWVyLiBUaGF0JiMzOTtzIHdoZXJlIHNvbWV0aGluZyBsaWtlIGBWU09DS0VUU19MT09QQkFDS2AgY29tZXMgaW50byB0aGUgcGljdHVyZS4gSXQmIzM5O3Mgbm90IGEgKmRpcmVjdCogZGVwZW5kZW5jeSBvZiBgVlNPQ0tFVFNgIGluIHRoZSBjb3JlIHNlbnNlIG9mIHRoZSBjb2RlLCBidXQgaXQgaXMgYSBkZXBlbmRlbmN5IGluIHByYWN0aWNlLCBmb3IgZWZmZWN0aXZlIHRlc3RpbmcgYW5kIGV2YWx1YXRpb24uIFRoZSBpbXBsaWNhdGlvbiBpcyB3ZSBuZWVkIGEgdGVzdCBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTQ6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDIxOlx0XHRkZXBlbmRzIG9uIFZTT0NLRVRTXG4gIDIyOlx0XHRkZWZhdWx0IHlcbiAgMjM6XHRcdGhlbHBcbiAgMjQ6XHRcdCAgU3VwcG9ydCBmb3IgUEZfVlNPQ0sgc29ja2V0cyBtb25pdG9yaW5nIGludGVyZmFjZSB1c2VkIGJ5IHRoZSBzcyB0b29sLlxuICAyNTpcdFx0ICBJZiB1bnN1cmUsIHNheSBZLlxuICAyNjpcdFxuICAyNzpcdFx0ICBFbmFibGUgdGhpcyBtb2R1bGUgc28gdXNlcnNwYWNlIGFwcGxpY2F0aW9ucyBjYW4gcXVlcnkgb3BlbiBzb2NrZXRzLlxuICAyODpcdFxuICAyOTpcdGNvbmZpZyBWU09DS0VUU19MT09QQkFDS1xuICAzMDpcdFx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBTb2NrZXRzIGxvb3BiYWNrIHRyYW5zcG9ydFwmIzM0O1xuICAzMTpcdFx0ZGVwZW5kcyBvbiBWU09DS0VUU1xuICAzMjpcdFx0ZGVmYXVsdCB5XG4gIDMzOlx0XHRzZWxlY3QgVklSVElPX1ZTT0NLRVRTX0NPTU1PTlxuICAzNDpcdFx0aGVscFxuICAzNTpcdFx0ICBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGEgbG9vcGJhY2sgdHJhbnNwb3J0IGZvciBWaXJ0dWFsIFNvY2tldHMsXG4gIDM2Olx0XHQgIHVzaW5nIHZtd192c29ja192aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5cbiAgMzc6XHRcbiAgMzg6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuICAzOTpcdFx0ICB3aWxsIGJlIGNhbGxlZCB2c29ja19sb29wYmFjay4gSWYgdW5zdXJlLCBzYXkgTi5cbiAgNDA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTQ6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzk5OQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgbGlrZSB5b3U6CgoqKkV4YW1pbmluZyBWaXJ0dWFsIFNvY2tldHMgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCBlbmFibGluZyBgVlNPQ0tFVFNgIGFuZCBgVlNPQ0tFVFNfTE9PUEJBQ0tgIHNlZW1zIGxpa2UgYSBzb2xpZCBpbml0aWFsIG1vdmUuIEhvbGQgb24gYSBzZWNvbmQsIHRoYXQgYFZTT0NLRVRTX0xPT1BCQUNLYCBpcyBzZXQgYXMgYGRlZmF1bHQgeWAsIHNvIHRoYXQmIzM5O3MgYWxyZWFkeSBpbiB0aGUgbWl4LCBubyBuZWVkIHRvIG92ZXJ0aGluayB0aGF0LiBIbW0sIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGF2YWlsYWJsZSB0cmFuc3BvcnRzIGJleW9uZCB0aGUgYmFzaWNzLiBMZXQgbWUgcXVpY2tseSBzY2FuIGZvciBgVklSVElPX1ZTT0NLRVRTYCwgc2VlIGlmIHRoYXQmIzM5O3MgYW4gb3B0aW9uIG9yIGlmIGl0JiMzOTtzIHRoZSBvbmx5IHJlYWwgY2hvaWNlIHdlIGhhdmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE0OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWSVJUSU9fVlNPQ0tFVFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdm13X3Zzb2NrL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3Ztd192c29jay9LY29uZmlnPTQxPWNvbmZpZyBWTVdBUkVfVk1DSV9WU09DS0VUU1xuLS1cbm5ldC92bXdfdnNvY2svS2NvbmZpZy01Mi1cbm5ldC92bXdfdnNvY2svS2NvbmZpZzo1Mzpjb25maWcgVklSVElPX1ZTT0NLRVRTXG5uZXQvdm13X3Zzb2NrL0tjb25maWctNTQtXHR0cmlzdGF0ZSBcJiMzNDt2aXJ0aW8gdHJhbnNwb3J0IGZvciBWaXJ0dWFsIFNvY2tldHNcJiMzNDtcbi0tXG5uZXQvdm13X3Zzb2NrL0tjb25maWctNjUtXG5uZXQvdm13X3Zzb2NrL0tjb25maWc6NjY6Y29uZmlnIFZJUlRJT19WU09DS0VUU19DT01NT05cbm5ldC92bXdfdnNvY2svS2NvbmZpZy02Ny1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE0OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg0MDgKCQkJCQkJCW91dHB1dDogMTM0CgkJCQkJCQl0aG91Z2h0czogMjg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFZTT0NLIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBvdmVyIHRoaXMgcGF0Y2gsIGFuZCBJJiMzOTttIGZvY3VzaW5nIG9uIGEgY291cGxlIG9mIGtleSBhcmVhcy4gSSBuZWVkIHRvIGtlZXAgYFZTT0NLRVRTYCBhbmQgYFZTT0NLRVRTX0xPT1BCQUNLYCBpbiBtaW5kLCBhcyBJJiMzOTtsbCBwcm9iYWJseSBiZSBlbmFibGluZyB0aG9zZSBjb25maWdzIGR1cmluZyB0ZXN0aW5nLiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYHZzb2NrX2Nvbm5lY3RgIGFuZCBgdnNvY2tfYWNjZXB0YCwgd2hpY2ggYXJlIGZ1bmRhbWVudGFsIGZvciBgQUZfVlNPQ0tgIHNvY2tldHMuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSByZXNpZGVzLgoKVGhlIGNoYW5nZSBpdHNlbGYgaXMgZnVuY3Rpb25hbDsgaXQmIzM5O3MgYWxsIGFib3V0IGhvdyB0aGVzZSBmdW5jdGlvbnMgaGFuZGxlIGVycm9ycyBub3cuIEZvciBgY29ubmVjdGAsIHRoZXkmIzM5O3JlIHVzaW5nIGBzb2NrX2Vycm9yKHNrKWAsIHdoaWNoIGNsZWFycyB0aGUgZXJyb3IgZmxhZy4gVGhhdCBzb3VuZHMgcmVhc29uYWJsZS4gRm9yIGBhY2NlcHRgLCBpdCYjMzk7cyBpZ25vcmluZyBgc2tfZXJyYCBvbiB0aGUgbGlzdGVuZXIgc29ja2V0LiBJIHRoaW5rIHRoYXQmIzM5O3MgdGhlIGNvcnJlY3QgYXBwcm9hY2guIExpc3RlbmVyIHNvY2tldHMgc2hvdWxkbiYjMzk7dCBhYm9ydCBgYWNjZXB0YCBpZiBhIHNwZWNpZmljIGluY29taW5nIGNvbm5lY3Rpb24gZmFpbHMsIGxpa2UgaWYgdGhleSByZWNlaXZlIGEgUlNULiBUaG91Z2gsIGhtbSwgSSBzaG91bGQgaW52ZXN0aWdhdGUgZnVydGhlcjsgcGVyaGFwcyBhbiBhc3luY2hyb25vdXMgZXJyb3IgY291bGQgc2V0IGBza19lcnJgIGFuZCBzdGlsbCBuZWVkIHRvIGJlIG1hbmFnZWQsIGJ1dCBgYWNjZXB0YCBzaG91bGRuJiMzOTt0IGJlIGJsb2NrZWQuCgpUbyBzdW1tYXJpemUgbXkgYXBwcm9hY2ggdG8gdGhpcyBwYXRjaDogSSYjMzk7bSBjbGFzc2lmeWluZyB0aGlzIGFzICoqV29ydGhGdXp6aW5nOiB0cnVlKiouIFRoZSBgRm9jdXNTeW1ib2xzYCB3aWxsIGFic29sdXRlbHkgYmUgYHZzb2NrX2Nvbm5lY3RgIGFuZCBgdnNvY2tfYWNjZXB0YCwgdGhlc2UgYXJlIHRoZSBwb2ludHMgb2YgaW50ZXJlc3QuIE15IGBFbmFibGVDb25maWdzYCB3aWxsIGJlIGBWU09DS0VUU2AgYW5kIGBWU09DS0VUU19MT09QQkFDS2AuIFRoZSBjb3JlIG9mIG15IHJlYXNvbmluZyBpcyB0aGlzOiB0aGUgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgdGhlIGVycm9yIGhhbmRsaW5nIHdpdGhpbiBgdnNvY2tfY29ubmVjdGAgYW5kIGB2c29ja19hY2NlcHRgIGZvciBgQUZfVlNPQ0tgIHNvY2tldHMuIFRoZSBzcGVjaWZpYyBjaGFuZ2VzIHRvIGhvdyBgc2tfZXJyYCBpcyBjaGVja2VkIGFuZCBjbGVhcmVkIHdpbGwgaGF2ZSBhIGRpcmVjdCBpbXBhY3Qgb24gdGhlIGNvbnRyb2wgZmxvdyBhbmQgcmV0dXJuIHZhbHVlcyBvZiB0aGVzZSBjcml0aWNhbCBzb2NrZXQgb3BlcmF0aW9ucy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIG5ldyBlcnJvciBoYW5kbGluZyBiZWhhdmVzIGNvcnJlY3RseSB1bmRlciBhbGwgc29ydHMgb2Ygc29ja2V0IHN0YXRlcywgc28gSSYjMzk7bGwgZGVzaWduIHRlc3QgY2FzZXMgdG8gdGhhdCBlbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE0OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWU09DS0VUUyYjMzQ7LAogICAgJiMzNDtWU09DS0VUU19MT09QQkFDSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Zzb2NrX2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7dnNvY2tfYWNjZXB0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBsb2dpYyBpbiBgdnNvY2tfY29ubmVjdGAgYW5kIGB2c29ja19hY2NlcHRgIGZvciBBRl9WU09DSyBzb2NrZXRzLiBJdCBjaGFuZ2VzIGhvdyBgc2tfZXJyYCBpcyBjaGVja2VkIGFuZCBjbGVhcmVkLCB3aGljaCBkaXJlY3RseSBhZmZlY3RzIHRoZSBjb250cm9sIGZsb3cgYW5kIHJldHVybiB2YWx1ZXMgb2YgdGhlc2UgY29yZSBzb2NrZXQgb3BlcmF0aW9ucy4gRnV6emluZyB0aGVzZSBmdW5jdGlvbnMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGUgbmV3IGVycm9yIGhhbmRsaW5nIGJlaGF2ZXMgY29ycmVjdGx5IHVuZGVyIHZhcmlvdXMgc29ja2V0IHN0YXRlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VlNPQ0tFVFMmIzM0OywKICAgICYjMzQ7VlNPQ0tFVFNfTE9PUEJBQ0smIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2c29ja19jb25uZWN0JiMzNDssCiAgICAmIzM0O3Zzb2NrX2FjY2VwdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgbG9naWMgaW4gYHZzb2NrX2Nvbm5lY3RgIGFuZCBgdnNvY2tfYWNjZXB0YCBmb3IgQUZfVlNPQ0sgc29ja2V0cy4gSXQgY2hhbmdlcyBob3cgYHNrX2VycmAgaXMgY2hlY2tlZCBhbmQgY2xlYXJlZCwgd2hpY2ggZGlyZWN0bHkgYWZmZWN0cyB0aGUgY29udHJvbCBmbG93IGFuZCByZXR1cm4gdmFsdWVzIG9mIHRoZXNlIGNvcmUgc29ja2V0IG9wZXJhdGlvbnMuIEZ1enppbmcgdGhlc2UgZnVuY3Rpb25zIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhlIG5ldyBlcnJvciBoYW5kbGluZyBiZWhhdmVzIGNvcnJlY3RseSB1bmRlciB2YXJpb3VzIHNvY2tldCBzdGF0ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNDoyMToxMS43NTI0NTY4ODhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjI5MzM4NzM0NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVlNPQ0tFVFNcIixcbiAgICBcIlZTT0NLRVRTX0xPT1BCQUNLXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidnNvY2tfY29ubmVjdFwiLFxuICAgIFwidnNvY2tfYWNjZXB0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIGxvZ2ljIGluIGB2c29ja19jb25uZWN0YCBhbmQgYHZzb2NrX2FjY2VwdGAgZm9yIEFGX1ZTT0NLIHNvY2tldHMuIEl0IGNoYW5nZXMgaG93IGBza19lcnJgIGlzIGNoZWNrZWQgYW5kIGNsZWFyZWQsIHdoaWNoIGRpcmVjdGx5IGFmZmVjdHMgdGhlIGNvbnRyb2wgZmxvdyBhbmQgcmV0dXJuIHZhbHVlcyBvZiB0aGVzZSBjb3JlIHNvY2tldCBvcGVyYXRpb25zLiBGdXp6aW5nIHRoZXNlIGZ1bmN0aW9ucyBpcyBpbXBvcnRhbnQgdG8gZW5zdXJlIHRoZSBuZXcgZXJyb3IgaGFuZGxpbmcgYmVoYXZlcyBjb3JyZWN0bHkgdW5kZXIgdmFyaW91cyBzb2NrZXQgc3RhdGVzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNDoyMToxMS43NTI0NjI2NjhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxOTE4MTQ3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDQyYjU4ZDFkODBiZjBmZTljY2FiZjhkN2M1Y2E3YzNjMzIwZmZhNjlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgNCAxNDoyMToxMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMgYi9uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmNcXG5pbmRleCA2MjJkYmQwNDY3OTk0Li41OTRmZTI3ZDJlYmU2IDEwMDY0NFxcbi0tLSBhL25ldC92bXdfdnNvY2svYWZfdnNvY2suY1xcbisrKyBiL25ldC92bXdfdnNvY2svYWZfdnNvY2suY1xcbkBAIC0xODQ3LDEyICsxODQ3LDEwIEBAIHN0YXRpYyBpbnQgdnNvY2tfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqYWRkcixcXG4gXFx0XFx0cHJlcGFyZV90b193YWl0KHNrX3NsZWVwKHNrKSwgXFx1MDAyNndhaXQsIFRBU0tfSU5URVJSVVBUSUJMRSk7XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChzay1cXHUwMDNlc2tfZXJyKSB7XFxuLVxcdFxcdGVyciA9IC1zay1cXHUwMDNlc2tfZXJyO1xcbitcXHRlcnIgPSBzb2NrX2Vycm9yKHNrKTtcXG4rXFx0aWYgKGVycikge1xcbiBcXHRcXHRzay1cXHUwMDNlc2tfc3RhdGUgPSBUQ1BfQ0xPU0U7XFxuIFxcdFxcdHNvY2stXFx1MDAzZXN0YXRlID0gU1NfVU5DT05ORUNURUQ7XFxuLVxcdH0gZWxzZSB7XFxuLVxcdFxcdGVyciA9IDA7XFxuIFxcdH1cXG4gXFxuIG91dF93YWl0OlxcbkBAIC0xODkzLDcgKzE4OTEsNyBAQCBzdGF0aWMgaW50IHZzb2NrX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLFxcbiBcXHR0aW1lb3V0ID0gc29ja19yY3Z0aW1lbyhsaXN0ZW5lciwgYXJnLVxcdTAwM2VmbGFncyBcXHUwMDI2IE9fTk9OQkxPQ0spO1xcbiBcXG4gXFx0d2hpbGUgKChjb25uZWN0ZWQgPSB2c29ja19kZXF1ZXVlX2FjY2VwdChsaXN0ZW5lcikpID09IE5VTEwgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgICAgIGxpc3RlbmVyLVxcdTAwM2Vza19lcnIgPT0gMCBcXHUwMDI2XFx1MDAyNiB0aW1lb3V0ICE9IDApIHtcXG4rXFx0ICAgICAgIHRpbWVvdXQgIT0gMCkge1xcbiBcXHRcXHRwcmVwYXJlX3RvX3dhaXQoc2tfc2xlZXAobGlzdGVuZXIpLCBcXHUwMDI2d2FpdCwgVEFTS19JTlRFUlJVUFRJQkxFKTtcXG4gXFx0XFx0cmVsZWFzZV9zb2NrKGxpc3RlbmVyKTtcXG4gXFx0XFx0dGltZW91dCA9IHNjaGVkdWxlX3RpbWVvdXQodGltZW91dCk7XFxuQEAgLTE5MDYsMTEgKzE5MDQsOCBAQCBzdGF0aWMgaW50IHZzb2NrX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLFxcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChsaXN0ZW5lci1cXHUwMDNlc2tfZXJyKSB7XFxuLVxcdFxcdGVyciA9IC1saXN0ZW5lci1cXHUwMDNlc2tfZXJyO1xcbi1cXHR9IGVsc2UgaWYgKCFjb25uZWN0ZWQpIHtcXG4rXFx0aWYgKCFjb25uZWN0ZWQpXFxuIFxcdFxcdGVyciA9IC1FQUdBSU47XFxuLVxcdH1cXG4gXFxuIFxcdGlmIChjb25uZWN0ZWQpIHtcXG4gXFx0XFx0c2tfYWNjZXB0cV9yZW1vdmVkKGxpc3RlbmVyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTQ6MjE6MTIuMTcyMzMyNjY1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MzIyNTEzOTg2MDI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZTT0NLRVRTXCIsXG4gICAgXCJWU09DS0VUU19MT09QQkFDS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZzb2NrX2Nvbm5lY3RcIixcbiAgICBcInZzb2NrX2FjY2VwdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBsb2dpYyBpbiBgdnNvY2tfY29ubmVjdGAgYW5kIGB2c29ja19hY2NlcHRgIGZvciBBRl9WU09DSyBzb2NrZXRzLiBJdCBjaGFuZ2VzIGhvdyBgc2tfZXJyYCBpcyBjaGVja2VkIGFuZCBjbGVhcmVkLCB3aGljaCBkaXJlY3RseSBhZmZlY3RzIHRoZSBjb250cm9sIGZsb3cgYW5kIHJldHVybiB2YWx1ZXMgb2YgdGhlc2UgY29yZSBzb2NrZXQgb3BlcmF0aW9ucy4gRnV6emluZyB0aGVzZSBmdW5jdGlvbnMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGUgbmV3IGVycm9yIGhhbmRsaW5nIGJlaGF2ZXMgY29ycmVjdGx5IHVuZGVyIHZhcmlvdXMgc29ja2V0IHN0YXRlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNDJiNThkMWQ4MGJmMGZlOWNjYWJmOGQ3YzVjYTdjM2MzMjBmZmE2OVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTQ6MjE6MTAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMgYi9uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmNcbmluZGV4IDYyMmRiZDA0Njc5OTQuLjU5NGZlMjdkMmViZTYgMTAwNjQ0XG4tLS0gYS9uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmNcbisrKyBiL25ldC92bXdfdnNvY2svYWZfdnNvY2suY1xuQEAgLTE4NDcsMTIgKzE4NDcsMTAgQEAgc3RhdGljIGludCB2c29ja19jb25uZWN0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl91bnNpemVkICphZGRyLFxuIFx0XHRwcmVwYXJlX3RvX3dhaXQoc2tfc2xlZXAoc2spLCBcdTAwMjZ3YWl0LCBUQVNLX0lOVEVSUlVQVElCTEUpO1xuIFx0fVxuIFxuLVx0aWYgKHNrLVx1MDAzZXNrX2Vycikge1xuLVx0XHRlcnIgPSAtc2stXHUwMDNlc2tfZXJyO1xuK1x0ZXJyID0gc29ja19lcnJvcihzayk7XG4rXHRpZiAoZXJyKSB7XG4gXHRcdHNrLVx1MDAzZXNrX3N0YXRlID0gVENQX0NMT1NFO1xuIFx0XHRzb2NrLVx1MDAzZXN0YXRlID0gU1NfVU5DT05ORUNURUQ7XG4tXHR9IGVsc2Uge1xuLVx0XHRlcnIgPSAwO1xuIFx0fVxuIFxuIG91dF93YWl0OlxuQEAgLTE4OTMsNyArMTg5MSw3IEBAIHN0YXRpYyBpbnQgdnNvY2tfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssXG4gXHR0aW1lb3V0ID0gc29ja19yY3Z0aW1lbyhsaXN0ZW5lciwgYXJnLVx1MDAzZWZsYWdzIFx1MDAyNiBPX05PTkJMT0NLKTtcbiBcbiBcdHdoaWxlICgoY29ubmVjdGVkID0gdnNvY2tfZGVxdWV1ZV9hY2NlcHQobGlzdGVuZXIpKSA9PSBOVUxMIFx1MDAyNlx1MDAyNlxuLVx0ICAgICAgIGxpc3RlbmVyLVx1MDAzZXNrX2VyciA9PSAwIFx1MDAyNlx1MDAyNiB0aW1lb3V0ICE9IDApIHtcbitcdCAgICAgICB0aW1lb3V0ICE9IDApIHtcbiBcdFx0cHJlcGFyZV90b193YWl0KHNrX3NsZWVwKGxpc3RlbmVyKSwgXHUwMDI2d2FpdCwgVEFTS19JTlRFUlJVUFRJQkxFKTtcbiBcdFx0cmVsZWFzZV9zb2NrKGxpc3RlbmVyKTtcbiBcdFx0dGltZW91dCA9IHNjaGVkdWxlX3RpbWVvdXQodGltZW91dCk7XG5AQCAtMTkwNiwxMSArMTkwNCw4IEBAIHN0YXRpYyBpbnQgdnNvY2tfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssXG4gXHRcdH1cbiBcdH1cbiBcbi1cdGlmIChsaXN0ZW5lci1cdTAwM2Vza19lcnIpIHtcbi1cdFx0ZXJyID0gLWxpc3RlbmVyLVx1MDAzZXNrX2Vycjtcbi1cdH0gZWxzZSBpZiAoIWNvbm5lY3RlZCkge1xuK1x0aWYgKCFjb25uZWN0ZWQpXG4gXHRcdGVyciA9IC1FQUdBSU47XG4tXHR9XG4gXG4gXHRpZiAoY29ubmVjdGVkKSB7XG4gXHRcdHNrX2FjY2VwdHFfcmVtb3ZlZChsaXN0ZW5lcik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNDoyMToxMi4xNzIzMzM5NjVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQzNDYyMzQ3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHZzb2NrIENvbm5lY3Rpb24gYW5kIEFjY2VwdGFuY2UgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3Ztd192c29jay9hZl92c29jay5jYC4gSXQgc2VlbXMgdG8gYmUgdG91Y2hpbmcgYHZzb2NrX2Nvbm5lY3RgIGFuZCBgdnNvY2tfYWNjZXB0YCwgd2hpY2ggYXJlIGtleSBmb3IgZXN0YWJsaXNoaW5nIGFuZCBoYW5kbGluZyBWU09DSyBjb25uZWN0aW9ucy4gTGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG5JbiBgdnNvY2tfY29ubmVjdGAsIHRoZSBjaGFuZ2UgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4gVGhleSdyZSByZXBsYWNpbmcgdGhlIGRpcmVjdCBjaGVjayBmb3IgYHNrLVx1MDAzZXNrX2VycmAgd2l0aCBhIGNhbGwgdG8gYHNvY2tfZXJyb3Ioc2spYC4gQmVmb3JlLCBpdCB3YXMgZXhwbGljaXRseSBjaGVja2luZyB0aGUgc29ja2V0J3MgZXJyb3Igc3RhdGUuIE5vdywgaXQgYXBwZWFycyBgc29ja19lcnJvcmAgaXMgcmVzcG9uc2libGUgZm9yIHJldHJpZXZpbmcgYW5kIGhhbmRsaW5nIHRoYXQgZXJyb3IuIEknZCBuZWVkIHRvIGxvb2sgYXQgdGhlIGBzb2NrX2Vycm9yYCBkZWZpbml0aW9uIGl0c2VsZiB0byBiZSBzdXJlLiBXaGF0J3MgdGhlIGNvbnRleHQ/IEhtbS5cblxuSW4gYHZzb2NrX2FjY2VwdGAsIHRoZXkndmUgcmVtb3ZlZCBhIGNvbmRpdGlvbiBmcm9tIHRoZSBhY2NlcHRhbmNlIGxvb3AuIFNwZWNpZmljYWxseSwgdGhleSd2ZSBkcm9wcGVkIHRoZSBgbGlzdGVuZXItXHUwMDNlc2tfZXJyID09IDBgIGNoZWNrLiBOb3csIGl0J3MganVzdCBgd2hpbGUgKChjb25uZWN0ZWQgPSB2c29ja19kZXF1ZXVlX2FjY2VwdChsaXN0ZW5lcikpID09IE5VTEwgXHUwMDI2XHUwMDI2IHRpbWVvdXQgIT0gMClgLiBUaGUgb2xkIHZlcnNpb24gd2FzIGd1YXJkaW5nIGFnYWluc3QgYWNjZXB0aW5nIGNvbm5lY3Rpb25zIGlmIHRoZSBsaXN0ZW5lciBzb2NrZXQgaGFkIGFuIGVycm9yLiBUaGV5J3ZlIGFsc28gcmVtb3ZlZCB0aGUgZmluYWwgYGxpc3RlbmVyLVx1MDAzZXNrX2VycmAgY2hlY2sgYWZ0ZXIgdGhlIGxvb3AuXG5cblRoYXQncyBhIGJpdCBjb25jZXJuaW5nLiBJZiB5b3UgcmVtb3ZlIGFuIGVycm9yIGNoZWNrLCBob3cgaXMgdGhlIGFjY2VwdGFuY2UgbG9vcCBnb2luZyB0byByZWFjdCB0byBhbiBlcnJvcj8gQWgsIHdhaXQgYSBtaW51dGUsIEkgdGhpbmsgSSBzZWUgaXQuIFRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0IGBzb2NrX2Vycm9yYCBpcyBjbGVhcmluZyB0aGUgYHNrX2VycmAgZmllbGQuIExvb2tpbmcgYXQgdGhlIGNoYW5nZXMgaW4gYHZzb2NrX2Nvbm5lY3RgIGFnYWluLCB5ZXMsIGl0J3MgY2FsbGluZyBgc29ja19lcnJvcmAuXG5cblJpZ2h0LCBgc29ja19lcnJvcmAgaXMgbGlrZWx5IGF0b21pY2FsbHkgZXhjaGFuZ2luZyB0aGUgZXJyb3IgY29kZSB3aXRoIHplcm8sIHVzaW5nIGB4Y2hnKFx1MDAyNnNrLVx1MDAzZXNrX2VyciwgMClgLiBTbyB0aGUgZXJyb3IgaXMgY2xlYXJlZCB3aGVuIGl0IGlzIHJldHJpZXZlZCwgc28gd2UgZG9uJ3QgbmVlZCB0byBjaGVjay4gQ2xldmVyLiBUaGV5IGFyZSBwcm9iYWJseSBkb2luZyBpdCB0aGlzIHdheSBmb3IgdGhpcyByZWFzb24hXG5cbkknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgYHZzb2NrX2FjY2VwdGAgdG8gY29uZmlybSB0aGlzIGJlaGF2aW9yLiBJdCBzZWVtcyBsaWtlIGl0J3MgYSBzaW1wbGlmaWNhdGlvbiwgcmVseWluZyBvbiBgc29ja19lcnJvcmAgdG8gaGFuZGxlIGVycm9yIHByb3BhZ2F0aW9uLCBzbyB0aGVyZSBpc24ndCBhIGRvdWJsZS1jaGVjay4gT2theSwgSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgc29ja19lcnJvcmAgaXMgaGFuZGxpbmcgdGhlIGVycm9yIGNsZWFyaW5nIGFzIEkgc3VzcGVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM4NiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE0OjIxOjQxLjYwNjk1OTU3NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NDQwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTg4MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTg4MDpcXHRcXHRcXHRnb3RvIG91dDtcXG4xODgxOlxcdFxcdH1cXG4xODgyOlxcdFxcbjE4ODM6XFx0XFx0aWYgKGxpc3RlbmVyLVxcdTAwM2Vza19zdGF0ZSAhPSBUQ1BfTElTVEVOKSB7XFxuMTg4NDpcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbjE4ODU6XFx0XFx0XFx0Z290byBvdXQ7XFxuMTg4NjpcXHRcXHR9XFxuMTg4NzpcXHRcXG4xODg4OlxcdFxcdC8qIFdhaXQgZm9yIGNoaWxkcmVuIHNvY2tldHMgdG8gYXBwZWFyOyB0aGVzZSBhcmUgdGhlIG5ldyBzb2NrZXRzXFxuMTg4OTpcXHRcXHQgKiBjcmVhdGVkIHVwb24gY29ubmVjdGlvbiBlc3RhYmxpc2htZW50LlxcbjE4OTA6XFx0XFx0ICovXFxuMTg5MTpcXHRcXHR0aW1lb3V0ID0gc29ja19yY3Z0aW1lbyhsaXN0ZW5lciwgYXJnLVxcdTAwM2VmbGFncyBcXHUwMDI2IE9fTk9OQkxPQ0spO1xcbjE4OTI6XFx0XFxuMTg5MzpcXHRcXHR3aGlsZSAoKGNvbm5lY3RlZCA9IHZzb2NrX2RlcXVldWVfYWNjZXB0KGxpc3RlbmVyKSkgPT0gTlVMTCBcXHUwMDI2XFx1MDAyNlxcbjE4OTQ6XFx0XFx0ICAgICAgIHRpbWVvdXQgIT0gMCkge1xcbjE4OTU6XFx0XFx0XFx0cHJlcGFyZV90b193YWl0KHNrX3NsZWVwKGxpc3RlbmVyKSwgXFx1MDAyNndhaXQsIFRBU0tfSU5URVJSVVBUSUJMRSk7XFxuMTg5NjpcXHRcXHRcXHRyZWxlYXNlX3NvY2sobGlzdGVuZXIpO1xcbjE4OTc6XFx0XFx0XFx0dGltZW91dCA9IHNjaGVkdWxlX3RpbWVvdXQodGltZW91dCk7XFxuMTg5ODpcXHRcXHRcXHRmaW5pc2hfd2FpdChza19zbGVlcChsaXN0ZW5lciksIFxcdTAwMjZ3YWl0KTtcXG4xODk5OlxcdFxcdFxcdGxvY2tfc29jayhsaXN0ZW5lcik7XFxuMTkwMDpcXHRcXG4xOTAxOlxcdFxcdFxcdGlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkge1xcbjE5MDI6XFx0XFx0XFx0XFx0ZXJyID0gc29ja19pbnRyX2Vycm5vKHRpbWVvdXQpO1xcbjE5MDM6XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuMTkwNDpcXHRcXHRcXHR9XFxuMTkwNTpcXHRcXHR9XFxuMTkwNjpcXHRcXG4xOTA3OlxcdFxcdGlmICghY29ubmVjdGVkKVxcbjE5MDg6XFx0XFx0XFx0ZXJyID0gLUVBR0FJTjtcXG4xOTA5OlxcdFxcbjE5MTA6XFx0XFx0aWYgKGNvbm5lY3RlZCkge1xcbjE5MTE6XFx0XFx0XFx0c2tfYWNjZXB0cV9yZW1vdmVkKGxpc3RlbmVyKTtcXG4xOTEyOlxcdFxcbjE5MTM6XFx0XFx0XFx0bG9ja19zb2NrX25lc3RlZChjb25uZWN0ZWQsIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTtcXG4xOTE0OlxcdFxcdFxcdHZjb25uZWN0ZWQgPSB2c29ja19zayhjb25uZWN0ZWQpO1xcbjE5MTU6XFx0XFxuMTkxNjpcXHRcXHRcXHQvKiBJZiB0aGUgbGlzdGVuZXIgc29ja2V0IGhhcyByZWNlaXZlZCBhbiBlcnJvciwgdGhlbiB3ZSBzaG91bGRcXG4xOTE3OlxcdFxcdFxcdCAqIHJlamVjdCB0aGlzIHNvY2tldCBhbmQgcmV0dXJuLiAgTm90ZSB0aGF0IHdlIHNpbXBseSBtYXJrIHRoZVxcbjE5MTg6XFx0XFx0XFx0ICogc29ja2V0IHJlamVjdGVkLCBkcm9wIG91ciByZWZlcmVuY2UsIGFuZCBsZXQgdGhlIGNsZWFudXBcXG4xOTE5OlxcdFxcdFxcdCAqIGZ1bmN0aW9uIGhhbmRsZSB0aGUgY2xlYW51cDsgdGhlIGZhY3QgdGhhdCB3ZSBmb3VuZCBpdCBpblxcbjE5MjA6XFx0XFx0XFx0ICogdGhlIGxpc3RlbmVyJ3MgYWNjZXB0IHF1ZXVlIGd1YXJhbnRlZXMgdGhhdCB0aGUgY2xlYW51cFxcbjE5MjE6XFx0XFx0XFx0ICogZnVuY3Rpb24gaGFzbid0IHJ1biB5ZXQuXFxuMTkyMjpcXHRcXHRcXHQgKi9cXG4xOTIzOlxcdFxcdFxcdGlmIChlcnIpIHtcXG4xOTI0OlxcdFxcdFxcdFxcdHZjb25uZWN0ZWQtXFx1MDAzZXJlamVjdGVkID0gdHJ1ZTtcXG4xOTI1OlxcdFxcdFxcdH0gZWxzZSB7XFxuMTkyNjpcXHRcXHRcXHRcXHRuZXdzb2NrLVxcdTAwM2VzdGF0ZSA9IFNTX0NPTk5FQ1RFRDtcXG4xOTI3OlxcdFxcdFxcdFxcdHNvY2tfZ3JhZnQoY29ubmVjdGVkLCBuZXdzb2NrKTtcXG4xOTI4OlxcdFxcbjE5Mjk6XFx0XFx0XFx0XFx0c2V0X2JpdChTT0NLX0NVU1RPTV9TT0NLT1BULFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNDoyMTo0MS42MDczMDg3NTVaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTQ1MDU3NTA2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGB2c29ja19hY2NlcHRgIEZ1bmN0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSByZW1lbWJlciB0aGF0IGBlcnJgIGlzIGluaXRpYWxpemVkIHRvIDAgYXQgdGhlIHN0YXJ0IG9mIGB2c29ja19hY2NlcHRgLiBJZiBhIGNvbm5lY3Rpb24gaXNuJ3QgZXN0YWJsaXNoZWQgKGAhY29ubmVjdGVkYCksIGBlcnJgIGlzIHNldCB0byBgLUVBR0FJTmAuIFRoZW4sIEknbSB0aGlua2luZyBhYm91dCB0aGUgbG9naWMgd2hlcmUgYGxpc3RlbmVyLVx1MDAzZXNrX2VycmAgd2FzIGJlaW5nIGNoZWNrZWQuIFRoZSBzdHJ1Y3R1cmUgYmVmb3JlIHRoZSBjaGFuZ2Ugd2FzOlxuYGBgY1xuXHRpZiAobGlzdGVuZXItXHUwMDNlc2tfZXJyKSB7XG5cdFx0ZXJyID0gLWxpc3RlbmVyLVx1MDAzZXNrX2Vycjtcblx0fSBlbHNlIGlmICghY29ubmVjdGVkKSB7XG5cdFx0ZXJyID0gLUVBR0FJTjtcblx0fVxuYGBgXG5Ib3dldmVyLCB3YWl0LCB0aGUgb3JpZ2luYWwgY29kZSBoYWQgYSBkaWZmZXJlbnQgc3RydWN0dXJlLiBMZXQgbWUgcmVjYWxsIGl0OlxuYGBgY1xuXHRlcnIgPSAwO1xuXG5cdGxvY2tfc29jayhsaXN0ZW5lcik7XG5cblx0aWYgKHNvY2stXHUwMDNldHlwZSAhPSBTT0NLX1NUUkVBTSBcdTAwMjZcdTAwMjYgc29jay1cdTAwM2V0eXBlICE9IFNPQ0tfU0VRUEFDS0VUKSB7XG5cdFx0ZXJyID0gLUVPUE5PVFNVUFA7XG5cdFx0Z290byBvdXQ7XG5cdH1cblxuXHRpZiAobGlzdGVuZXItXHUwMDNlc2tfc3RhdGUgIT0gVENQX0xJU1RFTikge1xuXHRcdGVyciA9IC1FSU5WQUw7XG5cdFx0Z290byBvdXQ7XG5cdH1cblxuXHQvKiBXYWl0IGZvciBjaGlsZHJlbiBzb2NrZXRzIHRvIGFwcGVhcjsgdGhlc2UgYXJlIHRoZSBuZXcgc29ja2V0c1xuXHQgKiBjcmVhdGVkIHVwb24gY29ubmVjdGlvbiBlc3RhYmxpc2htZW50LlxuXHQgKi9cblx0dGltZW91dCA9IHNvY2tfcmN2dGltZW8obGlzdGVuZXIsIGFyZy1cdTAwM2VmbGFncyBcdTAwMjYgT19OT05CTE9DSyk7XG5cblx0d2hpbGUgKChjb25uZWN0ZWQgPSB2c29ja19kZXF1ZXVlX2FjY2VwdChsaXN0ZW5lcikpID09IE5VTEwgXHUwMDI2XHUwMDI2XG5cdCAgICAgICBsaXN0ZW5lci1cdTAwM2Vza19lcnIgPT0gMCBcdTAwMjZcdTAwMjYgdGltZW91dCAhPSAwKSB7XG5cdFx0cHJlcGFyZV90b193YWl0KHNrX3NsZWVwKGxpc3RlbmVyKSwgXHUwMDI2d2FpdCwgVEFTS19JTlRFUlJVUFRJQkxFKTtcblx0XHRyZWxlYXNlX3NvY2sobGlzdGVuZXIpO1xuXHRcdHRpbWVvdXQgPSBzY2hlZHVsZV90aW1lb3V0KHRpbWVvdXQpO1xuXHRcdGZpbmlzaF93YWl0KHNrX3NsZWVwKGxpc3RlbmVyKSwgXHUwMDI2d2FpdCk7XG5cdFx0bG9ja19zb2NrKGxpc3RlbmVyKTtcblxuXHRcdGlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkge1xuXHRcdFx0ZXJyID0gc29ja19pbnRyX2Vycm5vKHRpbWVvdXQpO1xuXHRcdFx0Z290byBvdXQ7XG5cdFx0fVxuXHR9XG5cblx0aWYgKGxpc3RlbmVyLVx1MDAzZXNrX2Vycikge1xuXHRcdGVyciA9IC1saXN0ZW5lci1cdTAwM2Vza19lcnI7XG5cdH0gZWxzZSBpZiAoIWNvbm5lY3RlZCkge1xuXHRcdGVyciA9IC1FQUdBSU47XG5cdH1cbmBgYFxuTm93IEkgc2VlIGl0ISBUaGUgcGF0Y2ggY29tcGxldGVseSByZW1vdmVzIHRoZSBgbGlzdGVuZXItXHUwMDNlc2tfZXJyYCBjaGVjayB3aXRoaW4gdGhlIGB2c29ja19hY2NlcHRgIGZ1bmN0aW9uLiBUaGlzIGlzIHNpZ25pZmljYW50LiBJdCBtZWFucyB0aGUgb3JpZ2luYWwgZXJyb3IgaGFuZGxpbmcgbWVjaGFuaXNtLCB3aGljaCBjaGVja2VkIGlmIHRoZSBsaXN0ZW5lciBzb2NrZXQgaGFkIGFuIGVycm9yIGJlZm9yZSBjaGVja2luZyBmb3IgYSBjb25uZWN0aW9uLCBpcyBubyBsb25nZXIgcHJlc2VudC4gSSdkIGJldHRlciBjb25maXJtIHRoaXMgYnkgY2hlY2tpbmcgdGhlIG9yaWdpbmFsIGNvZGUgb2YgYHZzb2NrX2FjY2VwdGAgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk2OCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE0OjIyOjExLjA1Nzg4Nzg4M1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzgyNTc1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2c29ja19hY2NlcHRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Ztd192c29jay9hZl92c29jay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC92bXdfdnNvY2svYWZfdnNvY2suYz0xNjc3PXN0YXRpYyBpbnQgdnNvY2tfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqYWRkcixcXG4tLVxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYy0xODYyLVxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYzoxODYzOnN0YXRpYyBpbnQgdnNvY2tfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssXFxubmV0L3Ztd192c29jay9hZl92c29jay5jLTE4NjQtXFx0XFx0XFx0c3RydWN0IHByb3RvX2FjY2VwdF9hcmcgKmFyZylcXG4tLVxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYz0yNjM5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHZzb2NrX3N0cmVhbV9vcHMgPSB7XFxuLS1cXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtMjY0NS1cXHQuc29ja2V0cGFpciA9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmM6MjY0NjpcXHQuYWNjZXB0ID0gdnNvY2tfYWNjZXB0LFxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYy0yNjQ3LVxcdC5nZXRuYW1lID0gdnNvY2tfZ2V0bmFtZSxcXG4tLVxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYz0yNjYxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHZzb2NrX3NlcXBhY2tldF9vcHMgPSB7XFxuLS1cXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtMjY2Ny1cXHQuc29ja2V0cGFpciA9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmM6MjY2ODpcXHQuYWNjZXB0ID0gdnNvY2tfYWNjZXB0LFxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYy0yNjY5LVxcdC5nZXRuYW1lID0gdnNvY2tfZ2V0bmFtZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTQ6MjI6MTEuMTI1NzE4OTM1WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTk3OTA3ODcwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqRGl2aW5nIEJhY2sgaW50byBgdnNvY2tfYWNjZXB0YCoqXG5cblJpZ2h0LCBsZXQncyBjaXJjbGUgYmFjayB0byBgdnNvY2tfYWNjZXB0YCBpbiBgbmV0L3Ztd192c29jay9hZl92c29jay5jYC4gSSdtIGdvaW5nIHRvIHJlLWV4YW1pbmUgdGhhdCBmdW5jdGlvbi4gSXQgZmVlbHMgbGlrZSB3ZSd2ZSBiZWVuIHJ1bm5pbmcgaW50byBzb21lIGlzc3VlcyBvbiB0aGUgY29ubmVjdGlvbiBmcm9udCwgYW5kIGB2c29ja19hY2NlcHRgIGlzIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhhdCBwdXp6bGUuIFRpbWUgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IGl0IGhhbmRsZXMgaW5jb21pbmcgY29ubmVjdGlvbiByZXF1ZXN0cywgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSB1bmRlcmx5aW5nIHRyYW5zcG9ydCwgYW5kIHdoZXJlIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgb3IgbG9ja2luZyBpc3N1ZXMgbWlnaHQgYmUgbHVya2luZy4gSSdsbCBmb2N1cyBvbiBob3cgaXQgbWFuYWdlcyB0aGUgYWNjZXB0IHF1ZXVlLCBob3cgdGhlIGhhbmRzaGFrZSBpcyBpbml0aWF0ZWQsIGFuZCB3aGF0IGVycm9yIGhhbmRsaW5nIGlzIGluIHBsYWNlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgc3VidGxlLiBVbmRlcnN0YW5kaW5nIHRoZSBmbG93IG9mIGNvbnRyb2wgaGVyZSBpcyBwYXJhbW91bnQuIFRoaXMgd2lsbCBiZSBhIHN1cmdpY2FsIGFuYWx5c2lzOyBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGFyZWEgdGhhdCBuZWVkcyBmdXJ0aGVyIGluc3BlY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NjEsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNDoyMjoyMS4xMDQ4MDAyMjVaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTkzNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3Ztd192c29jay9hZl92c29jay5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4NjAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE4NjA6XFx0XFx0cmV0dXJuIGVycjtcXG4xODYxOlxcdH1cXG4xODYyOlxcdFxcbjE4NjM6XFx0c3RhdGljIGludCB2c29ja19hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jayxcXG4xODY0OlxcdFxcdFxcdFxcdHN0cnVjdCBwcm90b19hY2NlcHRfYXJnICphcmcpXFxuMTg2NTpcXHR7XFxuMTg2NjpcXHRcXHRzdHJ1Y3Qgc29jayAqbGlzdGVuZXI7XFxuMTg2NzpcXHRcXHRpbnQgZXJyO1xcbjE4Njg6XFx0XFx0c3RydWN0IHNvY2sgKmNvbm5lY3RlZDtcXG4xODY5OlxcdFxcdHN0cnVjdCB2c29ja19zb2NrICp2Y29ubmVjdGVkO1xcbjE4NzA6XFx0XFx0bG9uZyB0aW1lb3V0O1xcbjE4NzE6XFx0XFx0REVGSU5FX1dBSVQod2FpdCk7XFxuMTg3MjpcXHRcXG4xODczOlxcdFxcdGVyciA9IDA7XFxuMTg3NDpcXHRcXHRsaXN0ZW5lciA9IHNvY2stXFx1MDAzZXNrO1xcbjE4NzU6XFx0XFxuMTg3NjpcXHRcXHRsb2NrX3NvY2sobGlzdGVuZXIpO1xcbjE4Nzc6XFx0XFxuMTg3ODpcXHRcXHRpZiAoIXNvY2tfdHlwZV9jb25uZWN0aWJsZShzb2NrLVxcdTAwM2V0eXBlKSkge1xcbjE4Nzk6XFx0XFx0XFx0ZXJyID0gLUVPUE5PVFNVUFA7XFxuMTg4MDpcXHRcXHRcXHRnb3RvIG91dDtcXG4xODgxOlxcdFxcdH1cXG4xODgyOlxcdFxcbjE4ODM6XFx0XFx0aWYgKGxpc3RlbmVyLVxcdTAwM2Vza19zdGF0ZSAhPSBUQ1BfTElTVEVOKSB7XFxuMTg4NDpcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbjE4ODU6XFx0XFx0XFx0Z290byBvdXQ7XFxuMTg4NjpcXHRcXHR9XFxuMTg4NzpcXHRcXG4xODg4OlxcdFxcdC8qIFdhaXQgZm9yIGNoaWxkcmVuIHNvY2tldHMgdG8gYXBwZWFyOyB0aGVzZSBhcmUgdGhlIG5ldyBzb2NrZXRzXFxuMTg4OTpcXHRcXHQgKiBjcmVhdGVkIHVwb24gY29ubmVjdGlvbiBlc3RhYmxpc2htZW50LlxcbjE4OTA6XFx0XFx0ICovXFxuMTg5MTpcXHRcXHR0aW1lb3V0ID0gc29ja19yY3Z0aW1lbyhsaXN0ZW5lciwgYXJnLVxcdTAwM2VmbGFncyBcXHUwMDI2IE9fTk9OQkxPQ0spO1xcbjE4OTI6XFx0XFxuMTg5MzpcXHRcXHR3aGlsZSAoKGNvbm5lY3RlZCA9IHZzb2NrX2RlcXVldWVfYWNjZXB0KGxpc3RlbmVyKSkgPT0gTlVMTCBcXHUwMDI2XFx1MDAyNlxcbjE4OTQ6XFx0XFx0ICAgICAgIHRpbWVvdXQgIT0gMCkge1xcbjE4OTU6XFx0XFx0XFx0cHJlcGFyZV90b193YWl0KHNrX3NsZWVwKGxpc3RlbmVyKSwgXFx1MDAyNndhaXQsIFRBU0tfSU5URVJSVVBUSUJMRSk7XFxuMTg5NjpcXHRcXHRcXHRyZWxlYXNlX3NvY2sobGlzdGVuZXIpO1xcbjE4OTc6XFx0XFx0XFx0dGltZW91dCA9IHNjaGVkdWxlX3RpbWVvdXQodGltZW91dCk7XFxuMTg5ODpcXHRcXHRcXHRmaW5pc2hfd2FpdChza19zbGVlcChsaXN0ZW5lciksIFxcdTAwMjZ3YWl0KTtcXG4xODk5OlxcdFxcdFxcdGxvY2tfc29jayhsaXN0ZW5lcik7XFxuMTkwMDpcXHRcXG4xOTAxOlxcdFxcdFxcdGlmIChzaWduYWxfcGVuZGluZyhjdXJyZW50KSkge1xcbjE5MDI6XFx0XFx0XFx0XFx0ZXJyID0gc29ja19pbnRyX2Vycm5vKHRpbWVvdXQpO1xcbjE5MDM6XFx0XFx0XFx0XFx0Z290byBvdXQ7XFxuMTkwNDpcXHRcXHRcXHR9XFxuMTkwNTpcXHRcXHR9XFxuMTkwNjpcXHRcXG4xOTA3OlxcdFxcdGlmICghY29ubmVjdGVkKVxcbjE5MDg6XFx0XFx0XFx0ZXJyID0gLUVBR0FJTjtcXG4xOTA5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNDoyMjoyMS4xMDUwMDIxMjVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDc5Mjk2MDY1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjYzODcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNDoyMzowNS44OTc5NjcxNTVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MTU4NDEyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVlNPQ0tFVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Ztd192c29jay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC92bXdfdnNvY2svS2NvbmZpZy01LVxcbm5ldC92bXdfdnNvY2svS2NvbmZpZzo2OmNvbmZpZyBWU09DS0VUU1xcbm5ldC92bXdfdnNvY2svS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIFNvY2tldCBwcm90b2NvbFxcXCJcXG4tLVxcbm5ldC92bXdfdnNvY2svS2NvbmZpZy0xOC1cXG5uZXQvdm13X3Zzb2NrL0tjb25maWc6MTk6Y29uZmlnIFZTT0NLRVRTX0RJQUdcXG5uZXQvdm13X3Zzb2NrL0tjb25maWctMjAtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgU29ja2V0cyBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC92bXdfdnNvY2svS2NvbmZpZy0yOC1cXG5uZXQvdm13X3Zzb2NrL0tjb25maWc6Mjk6Y29uZmlnIFZTT0NLRVRTX0xPT1BCQUNLXFxubmV0L3Ztd192c29jay9LY29uZmlnLTMwLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIFNvY2tldHMgbG9vcGJhY2sgdHJhbnNwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNDoyMzowNi4zNDk1NTgxMzhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI0Mjk3NDA4NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlZTT0NLRVRTIERlcGVuZGVuY3kgQ2hlY2sqKlxuXG5SaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBgVlNPQ0tFVFNgIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHRoZSBjb21wbGV0ZSBkZXBlbmRlbmN5IHRyZWUsIGFuZCBJIG5lZWQgdG8gZG8gaXQgd2l0aCBhIGZvY3VzIG9uIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMsIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzLCBhbmQgYW55IGFyZWFzIHdoZXJlIG91dGRhdGVkIG9yIGluY29tcGF0aWJsZSB2ZXJzaW9ucyBtaWdodCBiZSBsdXJraW5nLiBBcmUgd2UgdGFsa2luZyBqdXN0IHRoZSBvYnZpb3VzIGBsaWJ2c29ja2V0YCBhbmQgaXRzIGltbWVkaWF0ZSByZXF1aXJlbWVudHMsIG9yIGRvIHdlIGhhdmUgaW5kaXJlY3QgZGVwZW5kZW5jaWVzIHRoYXQgYXJlIGdvaW5nIHRvIGJpdGUgdXMgZG93biB0aGUgbGluZT8gVGhpcyBpc24ndCBqdXN0IGFib3V0IG1ha2luZyBzdXJlIGV2ZXJ5dGhpbmcgKndvcmtzKjsgaXQncyBhYm91dCBhbnRpY2lwYXRpbmcgaXNzdWVzIGJlZm9yZSB0aGV5IG1hbmlmZXN0IGFzIGNyaXRpY2FsIGJ1Z3Mgb3Igc2VjdXJpdHkgcmlza3MuIEkgbmVlZCB0byBjcm9zcy1yZWZlcmVuY2Ugd2l0aCB0aGUgbGF0ZXN0IHNlY3VyaXR5IGFkdmlzb3JpZXMsIGFuZCB0aGUgdmVyc2lvbiBjb21wYXRpYmlsaXR5IG1hdHJpeCwgZm9yIHRoZSB1bmRlcmx5aW5nIGtlcm5lbCBhbmQgaHlwZXJ2aXNvciwgZXNwZWNpYWxseSBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBjb21wbGV4IHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBBbHNvLCBhcmUgd2UgdXNpbmcgYW55IGN1c3RvbSBvciBwYXRjaGVkIHZlcnNpb25zIGFueXdoZXJlPyBUaW1lIHRvIHB1bGwgdXAgdGhlIGRlcGVuZGVuY3kgZ3JhcGhzIGFuZCB2ZXJzaW9uIG1hbmlmZXN0cyBhbmQgZ2V0IGEgY2xlYXIgcGljdHVyZS4gR290dGEgbWFrZSBzdXJlIHdlJ3JlIG5vdCBidWlsZGluZyBhIGhvdXNlIG9mIGNhcmRzIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5NDUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNDoyMzoxOC43NzkzMDE5MzNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3Ztd192c29jay9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFZzb2NrIHByb3RvY29sXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBWU09DS0VUU1xcbiAgIDc6XFx0XFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgU29ja2V0IHByb3RvY29sXFxcIlxcbiAgIDg6XFx0XFx0aGVscFxcbiAgIDk6XFx0XFx0ICBWaXJ0dWFsIFNvY2tldCBQcm90b2NvbCBpcyBhIHNvY2tldCBwcm90b2NvbCBzaW1pbGFyIHRvIFRDUC9JUFxcbiAgMTA6XFx0XFx0ICBhbGxvd2luZyBjb21tdW5pY2F0aW9uIGJldHdlZW4gVmlydHVhbCBNYWNoaW5lcyBhbmQgaHlwZXJ2aXNvclxcbiAgMTE6XFx0XFx0ICBvciBob3N0LlxcbiAgMTI6XFx0XFxuICAxMzpcXHRcXHQgIFlvdSBzaG91bGQgYWxzbyBzZWxlY3Qgb25lIG9yIG1vcmUgaHlwZXJ2aXNvci1zcGVjaWZpYyB0cmFuc3BvcnRzXFxuICAxNDpcXHRcXHQgIGJlbG93LlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gIDE3OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgdnNvY2suIElmIHVuc3VyZSwgc2F5IE4uXFxuICAxODpcXHRcXG4gIDE5OlxcdGNvbmZpZyBWU09DS0VUU19ESUFHXFxuICAyMDpcXHRcXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBTb2NrZXRzIG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNDoyMzoxOC43NzkzODcyNTNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTcxNjQwMDc5MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guXG5cbioqQW5hbHl6aW5nIHRoZSBWU09DS0VUUyBEZXBlbmRlbmN5IFN0cnVjdHVyZSoqXG5cbkhtbSwgc28gYFZTT0NLRVRTYCBpdHNlbGYsIGFzIEkgdW5kZXJzdGFuZCBpdCwgaWRlYWxseSAqc2hvdWxkbid0KiBoYXZlIGFueSBleHRlcm5hbCBkZXBlbmRlbmNpZXMgYmV5b25kIGBORVRgLiBBbmQgc2luY2UgYG5ldC9gIGlzIHdoZXJlIGl0IGxpdmVzLCB0aGF0IGRlcGVuZGVuY3kgaXMga2luZCBvZiBiYWtlZCBpbi4gVGhhdCBzZWVtcyBsb2dpY2FsLiBCdXQgdGhlIHJlYWwgcXVlc3Rpb24gaXMgaG93IHdlIGFjdHVhbGx5IHRlc3QgaXQuIFRvIHByb3Blcmx5IHZhbGlkYXRlIHRoZSBmdW5jdGlvbmFsaXR5IG9mIGBWU09DS0VUU2AsIHdlJ3JlIGxpa2VseSBnb2luZyB0byBuZWVkIHNvbWUga2luZCBvZiB0cmFuc3BvcnQgbGF5ZXIuIFRoYXQncyB3aGVyZSBzb21ldGhpbmcgbGlrZSBgVlNPQ0tFVFNfTE9PUEJBQ0tgIGNvbWVzIGludG8gdGhlIHBpY3R1cmUuIEl0J3Mgbm90IGEgKmRpcmVjdCogZGVwZW5kZW5jeSBvZiBgVlNPQ0tFVFNgIGluIHRoZSBjb3JlIHNlbnNlIG9mIHRoZSBjb2RlLCBidXQgaXQgaXMgYSBkZXBlbmRlbmN5IGluIHByYWN0aWNlLCBmb3IgZWZmZWN0aXZlIHRlc3RpbmcgYW5kIGV2YWx1YXRpb24uIFRoZSBpbXBsaWNhdGlvbiBpcyB3ZSBuZWVkIGEgdGVzdCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQ2NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTQ6MjM6MzUuOTQzMzk5NTY4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNzY5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvdm13X3Zzb2NrL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMjEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMjE6XFx0XFx0ZGVwZW5kcyBvbiBWU09DS0VUU1xcbiAgMjI6XFx0XFx0ZGVmYXVsdCB5XFxuICAyMzpcXHRcXHRoZWxwXFxuICAyNDpcXHRcXHQgIFN1cHBvcnQgZm9yIFBGX1ZTT0NLIHNvY2tldHMgbW9uaXRvcmluZyBpbnRlcmZhY2UgdXNlZCBieSB0aGUgc3MgdG9vbC5cXG4gIDI1OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWS5cXG4gIDI2OlxcdFxcbiAgMjc6XFx0XFx0ICBFbmFibGUgdGhpcyBtb2R1bGUgc28gdXNlcnNwYWNlIGFwcGxpY2F0aW9ucyBjYW4gcXVlcnkgb3BlbiBzb2NrZXRzLlxcbiAgMjg6XFx0XFxuICAyOTpcXHRjb25maWcgVlNPQ0tFVFNfTE9PUEJBQ0tcXG4gIDMwOlxcdFxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIFNvY2tldHMgbG9vcGJhY2sgdHJhbnNwb3J0XFxcIlxcbiAgMzE6XFx0XFx0ZGVwZW5kcyBvbiBWU09DS0VUU1xcbiAgMzI6XFx0XFx0ZGVmYXVsdCB5XFxuICAzMzpcXHRcXHRzZWxlY3QgVklSVElPX1ZTT0NLRVRTX0NPTU1PTlxcbiAgMzQ6XFx0XFx0aGVscFxcbiAgMzU6XFx0XFx0ICBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGEgbG9vcGJhY2sgdHJhbnNwb3J0IGZvciBWaXJ0dWFsIFNvY2tldHMsXFxuICAzNjpcXHRcXHQgIHVzaW5nIHZtd192c29ja192aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5cXG4gIDM3OlxcdFxcbiAgMzg6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuICAzOTpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHZzb2NrX2xvb3BiYWNrLiBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNDA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE0OjIzOjM1Ljk0MzUyOTIyOFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjU0NTI2ODk3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgbGlrZSB5b3U6XG5cbioqRXhhbWluaW5nIFZpcnR1YWwgU29ja2V0cyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCBlbmFibGluZyBgVlNPQ0tFVFNgIGFuZCBgVlNPQ0tFVFNfTE9PUEJBQ0tgIHNlZW1zIGxpa2UgYSBzb2xpZCBpbml0aWFsIG1vdmUuIEhvbGQgb24gYSBzZWNvbmQsIHRoYXQgYFZTT0NLRVRTX0xPT1BCQUNLYCBpcyBzZXQgYXMgYGRlZmF1bHQgeWAsIHNvIHRoYXQncyBhbHJlYWR5IGluIHRoZSBtaXgsIG5vIG5lZWQgdG8gb3ZlcnRoaW5rIHRoYXQuIEhtbSwgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgYXZhaWxhYmxlIHRyYW5zcG9ydHMgYmV5b25kIHRoZSBiYXNpY3MuIExldCBtZSBxdWlja2x5IHNjYW4gZm9yIGBWSVJUSU9fVlNPQ0tFVFNgLCBzZWUgaWYgdGhhdCdzIGFuIG9wdGlvbiBvciBpZiBpdCdzIHRoZSBvbmx5IHJlYWwgY2hvaWNlIHdlIGhhdmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5OTksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE0OjI0OjI4LjQ4ODgwMTc3NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI4NTI3OTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWSVJUSU9fVlNPQ0tFVFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Ztd192c29jay9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC92bXdfdnNvY2svS2NvbmZpZz00MT1jb25maWcgVk1XQVJFX1ZNQ0lfVlNPQ0tFVFNcXG4tLVxcbm5ldC92bXdfdnNvY2svS2NvbmZpZy01Mi1cXG5uZXQvdm13X3Zzb2NrL0tjb25maWc6NTM6Y29uZmlnIFZJUlRJT19WU09DS0VUU1xcbm5ldC92bXdfdnNvY2svS2NvbmZpZy01NC1cXHR0cmlzdGF0ZSBcXFwidmlydGlvIHRyYW5zcG9ydCBmb3IgVmlydHVhbCBTb2NrZXRzXFxcIlxcbi0tXFxubmV0L3Ztd192c29jay9LY29uZmlnLTY1LVxcbm5ldC92bXdfdnNvY2svS2NvbmZpZzo2Njpjb25maWcgVklSVElPX1ZTT0NLRVRTX0NPTU1PTlxcbm5ldC92bXdfdnNvY2svS2NvbmZpZy02Ny1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNDoyNDoyOS4wMTczMzgxNzFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTI1NTI5ODE2MzczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFZTT0NLIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgb3ZlciB0aGlzIHBhdGNoLCBhbmQgSSdtIGZvY3VzaW5nIG9uIGEgY291cGxlIG9mIGtleSBhcmVhcy4gSSBuZWVkIHRvIGtlZXAgYFZTT0NLRVRTYCBhbmQgYFZTT0NLRVRTX0xPT1BCQUNLYCBpbiBtaW5kLCBhcyBJJ2xsIHByb2JhYmx5IGJlIGVuYWJsaW5nIHRob3NlIGNvbmZpZ3MgZHVyaW5nIHRlc3RpbmcuIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBgdnNvY2tfY29ubmVjdGAgYW5kIGB2c29ja19hY2NlcHRgLCB3aGljaCBhcmUgZnVuZGFtZW50YWwgZm9yIGBBRl9WU09DS2Agc29ja2V0cy4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IHJlc2lkZXMuXG5cblRoZSBjaGFuZ2UgaXRzZWxmIGlzIGZ1bmN0aW9uYWw7IGl0J3MgYWxsIGFib3V0IGhvdyB0aGVzZSBmdW5jdGlvbnMgaGFuZGxlIGVycm9ycyBub3cuIEZvciBgY29ubmVjdGAsIHRoZXkncmUgdXNpbmcgYHNvY2tfZXJyb3Ioc2spYCwgd2hpY2ggY2xlYXJzIHRoZSBlcnJvciBmbGFnLiBUaGF0IHNvdW5kcyByZWFzb25hYmxlLiBGb3IgYGFjY2VwdGAsIGl0J3MgaWdub3JpbmcgYHNrX2VycmAgb24gdGhlIGxpc3RlbmVyIHNvY2tldC4gSSB0aGluayB0aGF0J3MgdGhlIGNvcnJlY3QgYXBwcm9hY2guIExpc3RlbmVyIHNvY2tldHMgc2hvdWxkbid0IGFib3J0IGBhY2NlcHRgIGlmIGEgc3BlY2lmaWMgaW5jb21pbmcgY29ubmVjdGlvbiBmYWlscywgbGlrZSBpZiB0aGV5IHJlY2VpdmUgYSBSU1QuIFRob3VnaCwgaG1tLCBJIHNob3VsZCBpbnZlc3RpZ2F0ZSBmdXJ0aGVyOyBwZXJoYXBzIGFuIGFzeW5jaHJvbm91cyBlcnJvciBjb3VsZCBzZXQgYHNrX2VycmAgYW5kIHN0aWxsIG5lZWQgdG8gYmUgbWFuYWdlZCwgYnV0IGBhY2NlcHRgIHNob3VsZG4ndCBiZSBibG9ja2VkLlxuXG5UbyBzdW1tYXJpemUgbXkgYXBwcm9hY2ggdG8gdGhpcyBwYXRjaDogSSdtIGNsYXNzaWZ5aW5nIHRoaXMgYXMgKipXb3J0aEZ1enppbmc6IHRydWUqKi4gVGhlIGBGb2N1c1N5bWJvbHNgIHdpbGwgYWJzb2x1dGVseSBiZSBgdnNvY2tfY29ubmVjdGAgYW5kIGB2c29ja19hY2NlcHRgLCB0aGVzZSBhcmUgdGhlIHBvaW50cyBvZiBpbnRlcmVzdC4gTXkgYEVuYWJsZUNvbmZpZ3NgIHdpbGwgYmUgYFZTT0NLRVRTYCBhbmQgYFZTT0NLRVRTX0xPT1BCQUNLYC4gVGhlIGNvcmUgb2YgbXkgcmVhc29uaW5nIGlzIHRoaXM6IHRoZSBwYXRjaCBmdW5kYW1lbnRhbGx5IGFsdGVycyB0aGUgZXJyb3IgaGFuZGxpbmcgd2l0aGluIGB2c29ja19jb25uZWN0YCBhbmQgYHZzb2NrX2FjY2VwdGAgZm9yIGBBRl9WU09DS2Agc29ja2V0cy4gVGhlIHNwZWNpZmljIGNoYW5nZXMgdG8gaG93IGBza19lcnJgIGlzIGNoZWNrZWQgYW5kIGNsZWFyZWQgd2lsbCBoYXZlIGEgZGlyZWN0IGltcGFjdCBvbiB0aGUgY29udHJvbCBmbG93IGFuZCByZXR1cm4gdmFsdWVzIG9mIHRoZXNlIGNyaXRpY2FsIHNvY2tldCBvcGVyYXRpb25zLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgbmV3IGVycm9yIGhhbmRsaW5nIGJlaGF2ZXMgY29ycmVjdGx5IHVuZGVyIGFsbCBzb3J0cyBvZiBzb2NrZXQgc3RhdGVzLCBzbyBJJ2xsIGRlc2lnbiB0ZXN0IGNhc2VzIHRvIHRoYXQgZW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDA4LCJPdXRwdXRUb2tlbnMiOjEzNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNDoyNjozNC41NDcxNTgyNzNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzkxNDUxMTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZTT0NLRVRTXCIsXG4gICAgXCJWU09DS0VUU19MT09QQkFDS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZzb2NrX2Nvbm5lY3RcIixcbiAgICBcInZzb2NrX2FjY2VwdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBsb2dpYyBpbiBgdnNvY2tfY29ubmVjdGAgYW5kIGB2c29ja19hY2NlcHRgIGZvciBBRl9WU09DSyBzb2NrZXRzLiBJdCBjaGFuZ2VzIGhvdyBgc2tfZXJyYCBpcyBjaGVja2VkIGFuZCBjbGVhcmVkLCB3aGljaCBkaXJlY3RseSBhZmZlY3RzIHRoZSBjb250cm9sIGZsb3cgYW5kIHJldHVybiB2YWx1ZXMgb2YgdGhlc2UgY29yZSBzb2NrZXQgb3BlcmF0aW9ucy4gRnV6emluZyB0aGVzZSBmdW5jdGlvbnMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSB0aGUgbmV3IGVycm9yIGhhbmRsaW5nIGJlaGF2ZXMgY29ycmVjdGx5IHVuZGVyIHZhcmlvdXMgc29ja2V0IHN0YXRlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWU09DS0VUU1wiLFxuICAgIFwiVlNPQ0tFVFNfTE9PUEJBQ0tcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2c29ja19jb25uZWN0XCIsXG4gICAgXCJ2c29ja19hY2NlcHRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgbG9naWMgaW4gYHZzb2NrX2Nvbm5lY3RgIGFuZCBgdnNvY2tfYWNjZXB0YCBmb3IgQUZfVlNPQ0sgc29ja2V0cy4gSXQgY2hhbmdlcyBob3cgYHNrX2VycmAgaXMgY2hlY2tlZCBhbmQgY2xlYXJlZCwgd2hpY2ggZGlyZWN0bHkgYWZmZWN0cyB0aGUgY29udHJvbCBmbG93IGFuZCByZXR1cm4gdmFsdWVzIG9mIHRoZXNlIGNvcmUgc29ja2V0IG9wZXJhdGlvbnMuIEZ1enppbmcgdGhlc2UgZnVuY3Rpb25zIGlzIGltcG9ydGFudCB0byBlbnN1cmUgdGhlIG5ldyBlcnJvciBoYW5kbGluZyBiZWhhdmVzIGNvcnJlY3RseSB1bmRlciB2YXJpb3VzIHNvY2tldCBzdGF0ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowc82ch[1] Phase: Succeeded StartedAt: 2026-08-04 14:26:46 +0000 UTC FinishedAt: 2026-08-04 14:26:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc82ch[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-04 14:26:46 +0000 UTC FinishedAt: 2026-08-04 14:26:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc82ch[2] Phase: Succeeded StartedAt: 2026-08-04 14:26:46 +0000 UTC FinishedAt: 2026-08-04 18:04:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-04 14:26:46 +0000 UTC FinishedAt: 2026-08-04 18:04:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-04 14:26:46 +0000 UTC FinishedAt: 2026-08-04 14:26:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-04 14:26:46 +0000 UTC FinishedAt: 2026-08-04 14:26:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowc82ch/series-workflowc82ch-convert-artifact-2524092669/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-04 14:26:56 +0000 UTC FinishedAt: 2026-08-04 14:43:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-04 14:26:56 +0000 UTC FinishedAt: 2026-08-04 14:43:21 +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:*5668ed15-c9f2-414f-92c6-eea168e889ab,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-workflowc82ch/series-workflowc82ch-convert-artifact-2524092669/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": "9a857f7a-7933-4b8a-88a2-5a621c0c92a8", "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-workflowc82ch/series-workflowc82ch-build-action-3245834803/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-04 14:26:56 +0000 UTC FinishedAt: 2026-08-04 14:43:11 +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:*5668ed15-c9f2-414f-92c6-eea168e889ab,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-workflowc82ch/series-workflowc82ch-convert-artifact-2524092669/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": "9a857f7a-7933-4b8a-88a2-5a621c0c92a8", "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-workflowc82ch/series-workflowc82ch-build-action-3245834803/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-04 14:43:21 +0000 UTC FinishedAt: 2026-08-04 14:43:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-04 14:43:21 +0000 UTC FinishedAt: 2026-08-04 14:43:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-04 14:43:21 +0000 UTC FinishedAt: 2026-08-04 14:43:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-04 14:43:21 +0000 UTC FinishedAt: 2026-08-04 14:43:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowc82ch/series-workflowc82ch-convert-artifact-85150040/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-04 14:43:31 +0000 UTC FinishedAt: 2026-08-04 14:45:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-04 14:43:31 +0000 UTC FinishedAt: 2026-08-04 14:45:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9a857f7a-7933-4b8a-88a2-5a621c0c92a8,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-workflowc82ch/series-workflowc82ch-build-action-3245834803/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-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-04 14:45:36 +0000 UTC FinishedAt: 2026-08-04 14:45:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-04 14:45:36 +0000 UTC FinishedAt: 2026-08-04 14:45:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-04 14:45:36 +0000 UTC FinishedAt: 2026-08-04 15:01:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-04 14:45:36 +0000 UTC FinishedAt: 2026-08-04 15:01:22 +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:*5668ed15-c9f2-414f-92c6-eea168e889ab,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-workflowc82ch/series-workflowc82ch-convert-artifact-85150040/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": "17899ab7-322d-4dc3-874a-c8dd160fcdf4", "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-workflowc82ch/series-workflowc82ch-build-action-1841230532/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-04 14:45:36 +0000 UTC FinishedAt: 2026-08-04 15:01:12 +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:*5668ed15-c9f2-414f-92c6-eea168e889ab,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-workflowc82ch/series-workflowc82ch-convert-artifact-85150040/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": "17899ab7-322d-4dc3-874a-c8dd160fcdf4", "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-workflowc82ch/series-workflowc82ch-build-action-1841230532/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-04 15:01:22 +0000 UTC FinishedAt: 2026-08-04 15:01:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-04 15:01:22 +0000 UTC FinishedAt: 2026-08-04 15:01:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-04 15:01:22 +0000 UTC FinishedAt: 2026-08-04 15:03:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-04 15:01:22 +0000 UTC FinishedAt: 2026-08-04 15:03:00 +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:*17899ab7-322d-4dc3-874a-c8dd160fcdf4,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-workflowc82ch/series-workflowc82ch-build-action-1841230532/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-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-04 15:03:10 +0000 UTC FinishedAt: 2026-08-04 18:04:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-04 15:03:10 +0000 UTC FinishedAt: 2026-08-04 18:04:30 +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":["vsock_connect","vsock_accept"],"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:*9a857f7a-7933-4b8a-88a2-5a621c0c92a8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*17899ab7-322d-4dc3-874a-c8dd160fcdf4,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-workflowc82ch/series-workflowc82ch-build-action-3245834803/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-workflowc82ch/series-workflowc82ch-build-action-1841230532/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-04 15:03:10 +0000 UTC FinishedAt: 2026-08-04 15:03:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-04 15:03:10 +0000 UTC FinishedAt: 2026-08-04 15:03:14 +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":["vsock_connect","vsock_accept"],"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-workflowc82ch/series-workflowc82ch-convert-artifact-755567921/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-04 15:03:10 +0000 UTC FinishedAt: 2026-08-04 15:03:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-04 15:03:10 +0000 UTC FinishedAt: 2026-08-04 15:03:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-04 15:03:10 +0000 UTC FinishedAt: 2026-08-04 15:03:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-04 15:03:20 +0000 UTC FinishedAt: 2026-08-04 18:04:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc82ch[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["vsock_connect","vsock_accept"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VSOCKETS","VSOCKETS_LOOPBACK"],"series_id":"853a5dff-ad53-49b2-9763-35493eb96fed","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-04 15:03:20 +0000 UTC FinishedAt: 2026-08-04 18:04:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9a857f7a-7933-4b8a-88a2-5a621c0c92a8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*17899ab7-322d-4dc3-874a-c8dd160fcdf4,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-workflowc82ch/series-workflowc82ch-build-action-3245834803/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-workflowc82ch/series-workflowc82ch-build-action-1841230532/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-workflowc82ch/series-workflowc82ch-convert-artifact-755567921/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,}