Name: series-workflowjhw6r Phase: Succeeded StartedAt: 2026-08-06 07:37:07 +0000 UTC FinishedAt: 2026-08-06 12:02:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjhw6r[0] Phase: Succeeded StartedAt: 2026-08-06 07:37:07 +0000 UTC FinishedAt: 2026-08-06 08:14:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjhw6r[0].run-triage Phase: Succeeded StartedAt: 2026-08-06 07:37:07 +0000 UTC FinishedAt: 2026-08-06 08:14:32 +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": "cb59bfd419d0c560b9f7273522f9a4799062aad5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RDS", "RDS_TCP" ], "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": "cb59bfd419d0c560b9f7273522f9a4799062aad5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RDS", "RDS_TCP" ], "series_id": "9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rds_conn_shutdown", "rds_tcp_reset_callbacks", "rds_send_xmit", "rds_inc_init" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA2IDA4OjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JEUyYjMzQ7LAogICAgJiMzNDtSRFNfVENQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cmRzX2Nvbm5fc2h1dGRvd24mIzM0OywKICAgICYjMzQ7cmRzX3RjcF9yZXNldF9jYWxsYmFja3MmIzM0OywKICAgICYjMzQ7cmRzX3NlbmRfeG1pdCYjMzQ7LAogICAgJiMzNDtyZHNfaW5jX2luaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBSRFMgY29ubmVjdGlvbiB0ZWFyZG93biwgcmVzZXQsIGFuZCB0cmFuc21pdCBsb2dpYyB0byBmaXggcmFjZSBjb25kaXRpb25zIGJ5IHVzaW5nIGJpdCBsb2NrcyBpbnN0ZWFkIG9mIHBsYWluIGJpdCB0ZXN0cy4gSXQgYWxzbyBpbml0aWFsaXplcyBhIGxpc3QgaW4gYHJkc19zZW5kX3htaXRgIGFuZCBhIHBvaW50ZXIgaW4gYHJkc19pbmNfaW5pdGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIFJEUyBzdWJzeXN0ZW0gdGhhdCBhcmUgcmVhY2hhYmxlIHZpYSBSRFMgc29ja2V0cyBvdmVyIFRDUC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwODoxMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDgwYjczMjcyMGIzYmQ0ZDJkOWQzYWQwYTM2NjhmYWQwNWQwMGYzZjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyA2IDA4OjEzOjI4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9yZHMvY29ubmVjdGlvbi5jIGIvbmV0L3Jkcy9jb25uZWN0aW9uLmNcbmluZGV4IDdjOGFiOGU5NzNlMWIuLjQwNmEwNzFlZmRkM2IgMTAwNjQ0XG4tLS0gYS9uZXQvcmRzL2Nvbm5lY3Rpb24uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3Jkcy9jb25uZWN0aW9uLmNcbkBAIC00MDYsMTQgJiM0Mzs0MDYsMzIgQEAgdm9pZCByZHNfY29ubl9zaHV0ZG93bihzdHJ1Y3QgcmRzX2Nvbm5fcGF0aCAqY3ApXG4gXHRcdH1cbiBcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNwLVx1MDAzZWNwX2NtX2xvY2spO1xuIFxuJiM0MztcdFx0LyogUXVpZXNjZSB0aGUgdHJhbnNtaXQgYW5kIHJlY2VpdmUtcmVmaWxsIHBhdGhzIGJ5XG4mIzQzO1x0XHQgKiBhY3F1aXJpbmcgdGhlaXIgYml0IGxvY2tzLCBub3QgbWVyZWx5IHdhaXRpbmcgZm9yXG4mIzQzO1x0XHQgKiB0aGVtIHRvIGJlIHJlbGVhc2VkOiB3aXRoIGEgcGxhaW4gd2FpdCwgZWl0aGVyIHBhdGhcbiYjNDM7XHRcdCAqIGNhbiByZS10YWtlIGl0cyBsb2NrIHRoZSBpbnN0YW50IGFmdGVyIHdlIHNhbXBsZSBpdFxuJiM0MztcdFx0ICogY2xlYXIgYW5kIHRoZW4gcnVuIGNvbmN1cnJlbnRseSB3aXRoIHRoZSB0cmFuc3BvcnRcbiYjNDM7XHRcdCAqIHNodXRkb3duIGFuZCB0aGUgcGF0aCByZXNldCBiZWxvdy4gIEhvbGRpbmcgYm90aFxuJiM0MztcdFx0ICogbG9ja3MgYWNyb3NzIHRoZSB0ZWFyZG93biBtYWtlcyB0aGF0IHN0cnVjdHVyYWxseVxuJiM0MztcdFx0ICogaW1wb3NzaWJsZS5cbiYjNDM7XHRcdCAqL1xuIFx0XHR3YWl0X2V2ZW50KGNwLVx1MDAzZWNwX3dhaXRxLFxuLVx0XHRcdCAgICF0ZXN0X2JpdChSRFNfSU5fWE1JVCwgXHUwMDI2Y3AtXHUwMDNlY3BfZmxhZ3MpKTtcbiYjNDM7XHRcdFx0ICAgIXRlc3RfYW5kX3NldF9iaXRfbG9jayhSRFNfSU5fWE1JVCwgXHUwMDI2Y3AtXHUwMDNlY3BfZmxhZ3MpKTtcbiBcdFx0d2FpdF9ldmVudChjcC1cdTAwM2VjcF93YWl0cSxcbi1cdFx0XHQgICAhdGVzdF9iaXQoUkRTX1JFQ1ZfUkVGSUxMLCBcdTAwMjZjcC1cdTAwM2VjcF9mbGFncykpO1xuJiM0MztcdFx0XHQgICAhdGVzdF9hbmRfc2V0X2JpdChSRFNfUkVDVl9SRUZJTEwsIFx1MDAyNmNwLVx1MDAzZWNwX2ZsYWdzKSk7XG4gXG4gXHRcdGNvbm4tXHUwMDNlY190cmFucy1cdTAwM2Vjb25uX3BhdGhfc2h1dGRvd24oY3ApO1xuIFx0XHRyZHNfY29ubl9wYXRoX3Jlc2V0KGNwKTtcbiBcbiYjNDM7XHRcdC8qIHJkc19jb25uX3BhdGhfcmVzZXQoKSBhbHJlYWR5IGNsZWFyZWQgY3BfZmxhZ3MsIGJ1dFxuJiM0MztcdFx0ICogcmVsZWFzZSB0aGUgdHdvIGxvY2tzIGV4cGxpY2l0bHkgYW5kIHdha2UgYW55IHdhaXRlclxuJiM0MztcdFx0ICogKGUuZy4gcmRzX3RjcF9yZXNldF9jYWxsYmFja3MoKSkgdGhhdCBzYW1wbGVkIHRoZVxuJiM0MztcdFx0ICogbG9ja3Mgd2hpbGUgd2UgaGVsZCB0aGVtLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRjbGVhcl9iaXRfdW5sb2NrKFJEU19JTl9YTUlULCBcdTAwMjZjcC1cdTAwM2VjcF9mbGFncyk7XG4mIzQzO1x0XHRjbGVhcl9iaXQoUkRTX1JFQ1ZfUkVGSUxMLCBcdTAwMjZjcC1cdTAwM2VjcF9mbGFncyk7XG4mIzQzO1x0XHR3YWtlX3VwX2FsbChcdTAwMjZjcC1cdTAwM2VjcF93YWl0cSk7XG4mIzQzO1xuIFx0XHRpZiAoIXJkc19jb25uX3BhdGhfdHJhbnNpdGlvbihjcCwgUkRTX0NPTk5fRElTQ09OTkVDVElORyxcbiBcdFx0XHRcdFx0ICAgICAgUkRTX0NPTk5fRE9XTikgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICAhcmRzX2Nvbm5fcGF0aF90cmFuc2l0aW9uKGNwLCBSRFNfQ09OTl9FUlJPUixcbmRpZmYgLS1naXQgYS9uZXQvcmRzL3JlY3YuYyBiL25ldC9yZHMvcmVjdi5jXG5pbmRleCBjZjM4ODRkODc5MzE5Li5mMTUxM2RmYjI3MTY1IDEwMDY0NFxuLS0tIGEvbmV0L3Jkcy9yZWN2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yZHMvcmVjdi5jXG5AQCAtNDcsNiAmIzQzOzQ3LDcgQEAgdm9pZCByZHNfaW5jX2luaXQoc3RydWN0IHJkc19pbmNvbWluZyAqaW5jLCBzdHJ1Y3QgcmRzX2Nvbm5lY3Rpb24gKmNvbm4sXG4gXHRyZWZjb3VudF9zZXQoXHUwMDI2aW5jLVx1MDAzZWlfcmVmY291bnQsIDEpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2aW5jLVx1MDAzZWlfaXRlbSk7XG4gXHRpbmMtXHUwMDNlaV9jb25uID0gY29ubjtcbiYjNDM7XHRpbmMtXHUwMDNlaV9jb25uX3BhdGggPSBOVUxMO1xuIFx0aW5jLVx1MDAzZWlfc2FkZHIgPSAqc2FkZHI7XG4gXHRpbmMtXHUwMDNlaV91c2VyY29weS5yZG1hX2Nvb2tpZSA9IDA7XG4gXHRpbmMtXHUwMDNlaV91c2VyY29weS5yeF90c3RhbXAgPSBrdGltZV9zZXQoMCwgMCk7XG5kaWZmIC0tZ2l0IGEvbmV0L3Jkcy9zZW5kLmMgYi9uZXQvcmRzL3NlbmQuY1xuaW5kZXggMzA5MDIxZTBjYzliYy4uYzI4ZGM5ZjgyMGFmMCAxMDA2NDRcbi0tLSBhL25ldC9yZHMvc2VuZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvcmRzL3NlbmQuY1xuQEAgLTIwMCw2ICYjNDM7MjAwLDEyIEBAIGludCByZHNfc2VuZF94bWl0KHN0cnVjdCByZHNfY29ubl9wYXRoICpjcClcbiByZXN0YXJ0OlxuIFx0YmF0Y2hfY291bnQgPSAwO1xuIFxuJiM0MztcdC8qIFRoZSBkcm9wIHByb2Nlc3NpbmcgYWZ0ZXIgb3Zlcl9iYXRjaCByZWxpZXMgb24gdGhlIGNhbGxlZXNcbiYjNDM7XHQgKiBlbXB0eWluZyB0b19iZV9kcm9wcGVkIGVudHJ5IGJ5IGVudHJ5OyByZS1pbml0aWFsaXplIGl0IGhlcmVcbiYjNDM7XHQgKiByYXRoZXIgdGhhbiBkZXBlbmRpbmcgb24gdGhhdCBpbXBsaWNpdCBiZWhhdmlvci5cbiYjNDM7XHQgKi9cbiYjNDM7XHRJTklUX0xJU1RfSEVBRChcdTAwMjZ0b19iZV9kcm9wcGVkKTtcbiYjNDM7XG4gXHQvKlxuIFx0ICogc2VuZG1zZyBjYWxscyBoZXJlIGFmdGVyIGhhdmluZyBxdWV1ZWQgaXRzIG1lc3NhZ2Ugb24gdGhlIHNlbmRcbiBcdCAqIHF1ZXVlLiAgV2Ugb25seSBoYXZlIG9uZSB0YXNrIGZlZWRpbmcgdGhlIGNvbm5lY3Rpb24gYXQgYSB0aW1lLiAgSWZcbmRpZmYgLS1naXQgYS9uZXQvcmRzL3RjcC5jIGIvbmV0L3Jkcy90Y3AuY1xuaW5kZXggYjI2MzYzNGFjNzUwZC4uMDQyZDNmZGJkZjdmZSAxMDA2NDRcbi0tLSBhL25ldC9yZHMvdGNwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yZHMvdGNwLmNcbkBAIC0xMjgsNiAmIzQzOzEyOCw3IEBAIHZvaWQgcmRzX3RjcF9yZXNldF9jYWxsYmFja3Moc3RydWN0IHNvY2tldCAqc29jayxcbiB7XG4gXHRzdHJ1Y3QgcmRzX3RjcF9jb25uZWN0aW9uICp0YyA9IGNwLVx1MDAzZWNwX3RyYW5zcG9ydF9kYXRhO1xuIFx0c3RydWN0IHNvY2tldCAqb3NvY2sgPSB0Yy1cdTAwM2V0X3NvY2s7XG4mIzQzO1x0Ym9vbCBpbl94bWl0X2hlbGQgPSBmYWxzZTtcbiBcbiBcdGlmICghb3NvY2spXG4gXHRcdGdvdG8gbmV3c29jaztcbkBAIC0xNTMsNyAmIzQzOzE1NCwxNCBAQCB2b2lkIHJkc190Y3BfcmVzZXRfY2FsbGJhY2tzKHN0cnVjdCBzb2NrZXQgKnNvY2ssXG4gXHQgKiBjYW5ub3QgbWFyayByZHNfY29ubl9wYXRoX3VwKCkgaW4gdGhlIHdpbmRvdyBiZWZvcmUgbG9ja19zb2NrKClcbiBcdCAqL1xuIFx0YXRvbWljX3NldChcdTAwMjZjcC1cdTAwM2VjcF9zdGF0ZSwgUkRTX0NPTk5fUkVTRVRUSU5HKTtcbi1cdHdhaXRfZXZlbnQoY3AtXHUwMDNlY3Bfd2FpdHEsICF0ZXN0X2JpdChSRFNfSU5fWE1JVCwgXHUwMDI2Y3AtXHUwMDNlY3BfZmxhZ3MpKTtcbiYjNDM7XHQvKiBBY3F1aXJlIHRoZSBzZW5kLXBhdGggbG9jayByYXRoZXIgdGhhbiB3YWl0aW5nIGZvciBpdCB0byBiZVxuJiM0MztcdCAqIHJlbGVhc2VkOiBhIG1lcmUgd2FpdCBpcyByYWN5LCBzaW5jZSByZHNfc2VuZF94bWl0KCkgbWF5IHRha2VcbiYjNDM7XHQgKiB0aGUgbG9jayBhZ2FpbiByaWdodCBhZnRlciB3ZSBzYW1wbGUgaXQgY2xlYXIgYW5kIHRoZW4gcnVuXG4mIzQzO1x0ICogY29uY3VycmVudGx5IHdpdGggcmRzX3NlbmRfcGF0aF9yZXNldCgpIGJlbG93LlxuJiM0MztcdCAqL1xuJiM0MztcdHdhaXRfZXZlbnQoY3AtXHUwMDNlY3Bfd2FpdHEsXG4mIzQzO1x0XHQgICAhdGVzdF9hbmRfc2V0X2JpdF9sb2NrKFJEU19JTl9YTUlULCBcdTAwMjZjcC1cdTAwM2VjcF9mbGFncykpO1xuJiM0MztcdGluX3htaXRfaGVsZCA9IHRydWU7XG4gXHQvKiByZXNldCByZWNlaXZlIHNpZGUgc3RhdGUgZm9yIHJkc190Y3BfZGF0YV9yZWN2KCkgZm9yIG9zb2NrICAqL1xuIFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmNwLVx1MDAzZWNwX3NlbmRfdyk7XG4gXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2Y3AtXHUwMDNlY3BfcmVjdl93KTtcbkBAIC0xNzIsNiAmIzQzOzE4MCwxMSBAQCB2b2lkIHJkc190Y3BfcmVzZXRfY2FsbGJhY2tzKHN0cnVjdCBzb2NrZXQgKnNvY2ssXG4gXHRsb2NrX3NvY2soc29jay1cdTAwM2Vzayk7XG4gXHRyZHNfdGNwX3NldF9jYWxsYmFja3Moc29jaywgY3ApO1xuIFx0cmVsZWFzZV9zb2NrKHNvY2stXHUwMDNlc2spO1xuJiM0MztcbiYjNDM7XHRpZiAoaW5feG1pdF9oZWxkKSB7XG4mIzQzO1x0XHRjbGVhcl9iaXRfdW5sb2NrKFJEU19JTl9YTUlULCBcdTAwMjZjcC1cdTAwM2VjcF9mbGFncyk7XG4mIzQzO1x0XHR3YWtlX3VwX2FsbChcdTAwMjZjcC1cdTAwM2VjcF93YWl0cSk7XG4mIzQzO1x0fVxuIH1cbiBcbiAvKiBBZGQgdGMgdG8gcmRzX3RjcF90Y19saXN0IGFuZCBzZXQgdGMtXHUwMDNldF9zb2NrLiBTZWUgY29tbWVudHNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwODoxMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UkRTJiMzNDssCiAgICAmIzM0O1JEU19UQ1AmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZHNfY29ubl9zaHV0ZG93biYjMzQ7LAogICAgJiMzNDtyZHNfdGNwX3Jlc2V0X2NhbGxiYWNrcyYjMzQ7LAogICAgJiMzNDtyZHNfc2VuZF94bWl0JiMzNDssCiAgICAmIzM0O3Jkc19pbmNfaW5pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFJEUyBjb25uZWN0aW9uIHRlYXJkb3duLCByZXNldCwgYW5kIHRyYW5zbWl0IGxvZ2ljIHRvIGZpeCByYWNlIGNvbmRpdGlvbnMgYnkgdXNpbmcgYml0IGxvY2tzIGluc3RlYWQgb2YgcGxhaW4gYml0IHRlc3RzLiBJdCBhbHNvIGluaXRpYWxpemVzIGEgbGlzdCBpbiBgcmRzX3NlbmRfeG1pdGAgYW5kIGEgcG9pbnRlciBpbiBgcmRzX2luY19pbml0YC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgUkRTIHN1YnN5c3RlbSB0aGF0IGFyZSByZWFjaGFibGUgdmlhIFJEUyBzb2NrZXRzIG92ZXIgVENQLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODBiNzMyNzIwYjNiZDRkMmQ5ZDNhZDBhMzY2OGZhZDA1ZDAwZjNmMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDYgMDg6MTM6MjggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvcmRzL2Nvbm5lY3Rpb24uYyBiL25ldC9yZHMvY29ubmVjdGlvbi5jCmluZGV4IDdjOGFiOGU5NzNlMWIuLjQwNmEwNzFlZmRkM2IgMTAwNjQ0Ci0tLSBhL25ldC9yZHMvY29ubmVjdGlvbi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yZHMvY29ubmVjdGlvbi5jCkBAIC00MDYsMTQgJiM0Mzs0MDYsMzIgQEAgdm9pZCByZHNfY29ubl9zaHV0ZG93bihzdHJ1Y3QgcmRzX2Nvbm5fcGF0aCAqY3ApCiAJCX0KIAkJbXV0ZXhfdW5sb2NrKCZhbXA7Y3AtJmd0O2NwX2NtX2xvY2spOwogCiYjNDM7CQkvKiBRdWllc2NlIHRoZSB0cmFuc21pdCBhbmQgcmVjZWl2ZS1yZWZpbGwgcGF0aHMgYnkKJiM0MzsJCSAqIGFjcXVpcmluZyB0aGVpciBiaXQgbG9ja3MsIG5vdCBtZXJlbHkgd2FpdGluZyBmb3IKJiM0MzsJCSAqIHRoZW0gdG8gYmUgcmVsZWFzZWQ6IHdpdGggYSBwbGFpbiB3YWl0LCBlaXRoZXIgcGF0aAomIzQzOwkJICogY2FuIHJlLXRha2UgaXRzIGxvY2sgdGhlIGluc3RhbnQgYWZ0ZXIgd2Ugc2FtcGxlIGl0CiYjNDM7CQkgKiBjbGVhciBhbmQgdGhlbiBydW4gY29uY3VycmVudGx5IHdpdGggdGhlIHRyYW5zcG9ydAomIzQzOwkJICogc2h1dGRvd24gYW5kIHRoZSBwYXRoIHJlc2V0IGJlbG93LiAgSG9sZGluZyBib3RoCiYjNDM7CQkgKiBsb2NrcyBhY3Jvc3MgdGhlIHRlYXJkb3duIG1ha2VzIHRoYXQgc3RydWN0dXJhbGx5CiYjNDM7CQkgKiBpbXBvc3NpYmxlLgomIzQzOwkJICovCiAJCXdhaXRfZXZlbnQoY3AtJmd0O2NwX3dhaXRxLAotCQkJICAgIXRlc3RfYml0KFJEU19JTl9YTUlULCAmYW1wO2NwLSZndDtjcF9mbGFncykpOwomIzQzOwkJCSAgICF0ZXN0X2FuZF9zZXRfYml0X2xvY2soUkRTX0lOX1hNSVQsICZhbXA7Y3AtJmd0O2NwX2ZsYWdzKSk7CiAJCXdhaXRfZXZlbnQoY3AtJmd0O2NwX3dhaXRxLAotCQkJICAgIXRlc3RfYml0KFJEU19SRUNWX1JFRklMTCwgJmFtcDtjcC0mZ3Q7Y3BfZmxhZ3MpKTsKJiM0MzsJCQkgICAhdGVzdF9hbmRfc2V0X2JpdChSRFNfUkVDVl9SRUZJTEwsICZhbXA7Y3AtJmd0O2NwX2ZsYWdzKSk7CiAKIAkJY29ubi0mZ3Q7Y190cmFucy0mZ3Q7Y29ubl9wYXRoX3NodXRkb3duKGNwKTsKIAkJcmRzX2Nvbm5fcGF0aF9yZXNldChjcCk7CiAKJiM0MzsJCS8qIHJkc19jb25uX3BhdGhfcmVzZXQoKSBhbHJlYWR5IGNsZWFyZWQgY3BfZmxhZ3MsIGJ1dAomIzQzOwkJICogcmVsZWFzZSB0aGUgdHdvIGxvY2tzIGV4cGxpY2l0bHkgYW5kIHdha2UgYW55IHdhaXRlcgomIzQzOwkJICogKGUuZy4gcmRzX3RjcF9yZXNldF9jYWxsYmFja3MoKSkgdGhhdCBzYW1wbGVkIHRoZQomIzQzOwkJICogbG9ja3Mgd2hpbGUgd2UgaGVsZCB0aGVtLgomIzQzOwkJICovCiYjNDM7CQljbGVhcl9iaXRfdW5sb2NrKFJEU19JTl9YTUlULCAmYW1wO2NwLSZndDtjcF9mbGFncyk7CiYjNDM7CQljbGVhcl9iaXQoUkRTX1JFQ1ZfUkVGSUxMLCAmYW1wO2NwLSZndDtjcF9mbGFncyk7CiYjNDM7CQl3YWtlX3VwX2FsbCgmYW1wO2NwLSZndDtjcF93YWl0cSk7CiYjNDM7CiAJCWlmICghcmRzX2Nvbm5fcGF0aF90cmFuc2l0aW9uKGNwLCBSRFNfQ09OTl9ESVNDT05ORUNUSU5HLAogCQkJCQkgICAgICBSRFNfQ09OTl9ET1dOKSAmYW1wOyZhbXA7CiAJCSAgICAhcmRzX2Nvbm5fcGF0aF90cmFuc2l0aW9uKGNwLCBSRFNfQ09OTl9FUlJPUiwKZGlmZiAtLWdpdCBhL25ldC9yZHMvcmVjdi5jIGIvbmV0L3Jkcy9yZWN2LmMKaW5kZXggY2YzODg0ZDg3OTMxOS4uZjE1MTNkZmIyNzE2NSAxMDA2NDQKLS0tIGEvbmV0L3Jkcy9yZWN2LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3Jkcy9yZWN2LmMKQEAgLTQ3LDYgJiM0Mzs0Nyw3IEBAIHZvaWQgcmRzX2luY19pbml0KHN0cnVjdCByZHNfaW5jb21pbmcgKmluYywgc3RydWN0IHJkc19jb25uZWN0aW9uICpjb25uLAogCXJlZmNvdW50X3NldCgmYW1wO2luYy0mZ3Q7aV9yZWZjb3VudCwgMSk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtpbmMtJmd0O2lfaXRlbSk7CiAJaW5jLSZndDtpX2Nvbm4gPSBjb25uOwomIzQzOwlpbmMtJmd0O2lfY29ubl9wYXRoID0gTlVMTDsKIAlpbmMtJmd0O2lfc2FkZHIgPSAqc2FkZHI7CiAJaW5jLSZndDtpX3VzZXJjb3B5LnJkbWFfY29va2llID0gMDsKIAlpbmMtJmd0O2lfdXNlcmNvcHkucnhfdHN0YW1wID0ga3RpbWVfc2V0KDAsIDApOwpkaWZmIC0tZ2l0IGEvbmV0L3Jkcy9zZW5kLmMgYi9uZXQvcmRzL3NlbmQuYwppbmRleCAzMDkwMjFlMGNjOWJjLi5jMjhkYzlmODIwYWYwIDEwMDY0NAotLS0gYS9uZXQvcmRzL3NlbmQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvcmRzL3NlbmQuYwpAQCAtMjAwLDYgJiM0MzsyMDAsMTIgQEAgaW50IHJkc19zZW5kX3htaXQoc3RydWN0IHJkc19jb25uX3BhdGggKmNwKQogcmVzdGFydDoKIAliYXRjaF9jb3VudCA9IDA7CiAKJiM0MzsJLyogVGhlIGRyb3AgcHJvY2Vzc2luZyBhZnRlciBvdmVyX2JhdGNoIHJlbGllcyBvbiB0aGUgY2FsbGVlcwomIzQzOwkgKiBlbXB0eWluZyB0b19iZV9kcm9wcGVkIGVudHJ5IGJ5IGVudHJ5OyByZS1pbml0aWFsaXplIGl0IGhlcmUKJiM0MzsJICogcmF0aGVyIHRoYW4gZGVwZW5kaW5nIG9uIHRoYXQgaW1wbGljaXQgYmVoYXZpb3IuCiYjNDM7CSAqLwomIzQzOwlJTklUX0xJU1RfSEVBRCgmYW1wO3RvX2JlX2Ryb3BwZWQpOwomIzQzOwogCS8qCiAJICogc2VuZG1zZyBjYWxscyBoZXJlIGFmdGVyIGhhdmluZyBxdWV1ZWQgaXRzIG1lc3NhZ2Ugb24gdGhlIHNlbmQKIAkgKiBxdWV1ZS4gIFdlIG9ubHkgaGF2ZSBvbmUgdGFzayBmZWVkaW5nIHRoZSBjb25uZWN0aW9uIGF0IGEgdGltZS4gIElmCmRpZmYgLS1naXQgYS9uZXQvcmRzL3RjcC5jIGIvbmV0L3Jkcy90Y3AuYwppbmRleCBiMjYzNjM0YWM3NTBkLi4wNDJkM2ZkYmRmN2ZlIDEwMDY0NAotLS0gYS9uZXQvcmRzL3RjcC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yZHMvdGNwLmMKQEAgLTEyOCw2ICYjNDM7MTI4LDcgQEAgdm9pZCByZHNfdGNwX3Jlc2V0X2NhbGxiYWNrcyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLAogewogCXN0cnVjdCByZHNfdGNwX2Nvbm5lY3Rpb24gKnRjID0gY3AtJmd0O2NwX3RyYW5zcG9ydF9kYXRhOwogCXN0cnVjdCBzb2NrZXQgKm9zb2NrID0gdGMtJmd0O3Rfc29jazsKJiM0MzsJYm9vbCBpbl94bWl0X2hlbGQgPSBmYWxzZTsKIAogCWlmICghb3NvY2spCiAJCWdvdG8gbmV3c29jazsKQEAgLTE1Myw3ICYjNDM7MTU0LDE0IEBAIHZvaWQgcmRzX3RjcF9yZXNldF9jYWxsYmFja3Moc3RydWN0IHNvY2tldCAqc29jaywKIAkgKiBjYW5ub3QgbWFyayByZHNfY29ubl9wYXRoX3VwKCkgaW4gdGhlIHdpbmRvdyBiZWZvcmUgbG9ja19zb2NrKCkKIAkgKi8KIAlhdG9taWNfc2V0KCZhbXA7Y3AtJmd0O2NwX3N0YXRlLCBSRFNfQ09OTl9SRVNFVFRJTkcpOwotCXdhaXRfZXZlbnQoY3AtJmd0O2NwX3dhaXRxLCAhdGVzdF9iaXQoUkRTX0lOX1hNSVQsICZhbXA7Y3AtJmd0O2NwX2ZsYWdzKSk7CiYjNDM7CS8qIEFjcXVpcmUgdGhlIHNlbmQtcGF0aCBsb2NrIHJhdGhlciB0aGFuIHdhaXRpbmcgZm9yIGl0IHRvIGJlCiYjNDM7CSAqIHJlbGVhc2VkOiBhIG1lcmUgd2FpdCBpcyByYWN5LCBzaW5jZSByZHNfc2VuZF94bWl0KCkgbWF5IHRha2UKJiM0MzsJICogdGhlIGxvY2sgYWdhaW4gcmlnaHQgYWZ0ZXIgd2Ugc2FtcGxlIGl0IGNsZWFyIGFuZCB0aGVuIHJ1bgomIzQzOwkgKiBjb25jdXJyZW50bHkgd2l0aCByZHNfc2VuZF9wYXRoX3Jlc2V0KCkgYmVsb3cuCiYjNDM7CSAqLwomIzQzOwl3YWl0X2V2ZW50KGNwLSZndDtjcF93YWl0cSwKJiM0MzsJCSAgICF0ZXN0X2FuZF9zZXRfYml0X2xvY2soUkRTX0lOX1hNSVQsICZhbXA7Y3AtJmd0O2NwX2ZsYWdzKSk7CiYjNDM7CWluX3htaXRfaGVsZCA9IHRydWU7CiAJLyogcmVzZXQgcmVjZWl2ZSBzaWRlIHN0YXRlIGZvciByZHNfdGNwX2RhdGFfcmVjdigpIGZvciBvc29jayAgKi8KIAljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmFtcDtjcC0mZ3Q7Y3Bfc2VuZF93KTsKIAljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmFtcDtjcC0mZ3Q7Y3BfcmVjdl93KTsKQEAgLTE3Miw2ICYjNDM7MTgwLDExIEBAIHZvaWQgcmRzX3RjcF9yZXNldF9jYWxsYmFja3Moc3RydWN0IHNvY2tldCAqc29jaywKIAlsb2NrX3NvY2soc29jay0mZ3Q7c2spOwogCXJkc190Y3Bfc2V0X2NhbGxiYWNrcyhzb2NrLCBjcCk7CiAJcmVsZWFzZV9zb2NrKHNvY2stJmd0O3NrKTsKJiM0MzsKJiM0MzsJaWYgKGluX3htaXRfaGVsZCkgewomIzQzOwkJY2xlYXJfYml0X3VubG9jayhSRFNfSU5fWE1JVCwgJmFtcDtjcC0mZ3Q7Y3BfZmxhZ3MpOwomIzQzOwkJd2FrZV91cF9hbGwoJmFtcDtjcC0mZ3Q7Y3Bfd2FpdHEpOwomIzQzOwl9CiB9CiAKIC8qIEFkZCB0YyB0byByZHNfdGNwX3RjX2xpc3QgYW5kIHNldCB0Yy0mZ3Q7dF9zb2NrLiBTZWUgY29tbWVudHMKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDg6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUzNwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBOZXR3b3JrIFN0YWNrIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgYXR0ZW50aW9uIGlzIGRyYXduIHRvIHRoZSBtb2RpZmljYXRpb25zIGFjcm9zcyB0aGUgUkRTIHN1YnN5c3RlbSDigJMgYGNvbm5lY3Rpb24uY2AsIGByZWN2LmNgLCBgc2VuZC5jYCwgYW5kIGB0Y3AuY2AuIEl0IHNlZW1zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBjcml0aWNhbCB0aHJlYWRpbmcgaXNzdWUgc3Vycm91bmRpbmcgdGhlIGhhbmRsaW5nIG9mIHRoZSBgUkRTX0lOX1hNSVRgIGFuZCBgUkRTX1JFQ1ZfUkVGSUxMYCBmbGFncyB3aXRoaW4gYHJkc19jb25uX3NodXRkb3duYCBhbmQgYHJkc190Y3BfcmVzZXRfY2FsbGJhY2tzYC4gVGhlIHVzZSBvZiBgdGVzdF9hbmRfc2V0X2JpdF9sb2NrYCBhbmQgYHRlc3RfYW5kX3NldF9iaXRgIGluc3RlYWQgb2YgdGhlIG1vcmUgY29tbW9uIGB0ZXN0X2JpdGAgaW4gdGhlc2UgZnVuY3Rpb25zIGlzIGEgY2xlYXIgaW5kaWNhdGlvbiB0aGF0IHJhY2UgY29uZGl0aW9ucyB3ZXJlIHByZXNlbnQsIGFuZCB0aGlzIHBhdGNoIGFpbXMgdG8gZWxpbWluYXRlIHRoZW0uIEdvb2QsIHRoYXQmIzM5O3MgdGhlIHJpZ2h0IGFwcHJvYWNoLgoKSSBhbHNvIG5vdGljZSBjaGFuZ2VzIGluIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgYHRvX2JlX2Ryb3BwZWRgIGxpc3Qgd2l0aGluIGByZHNfc2VuZF94bWl0YCBhbmQgdGhlIHNldHRpbmcgb2YgYGluYy0mZ3Q7aV9jb25uX3BhdGggPSBOVUxMYCBpbiBgcmRzX2luY19pbml0YC4gVGhlc2UgYXJlIGxpa2VseSByZWxhdGVkIHRvIGNvbm5lY3Rpb24gdGVhcmRvd24gYW5kIGNsZWFudXAsIHdoaWNoIG1ha2VzIHNlbnNlIGdpdmVuIHRoZSBmb2N1cyBvbiBzaHV0ZG93bi4KCkJlZm9yZSBJIGRpZyBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIGNvZGUsIEkmIzM5O20gZ29pbmcgdG8gcnVuIGEgcXVpY2sgYGdyZXBgIHRvIHZlcmlmeSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFzc29jaWF0ZWQgd2l0aCBSRFMuIEl0JiMzOTtzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBzeXN0ZW0gaXMgY29uZmlndXJlZCB0byBwcm9wZXJseSBpbnRlcnByZXQgdGhlIGNoYW5nZXMuIFRoaXMgd2lsbCBhbHNvIGdpdmUgbWUgdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHdoZXJlIFJEUyBpcyB1c2VkIGFuZCBpZiB0aGVyZSBhcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMgdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQuIEFscmlnaHQsIGxldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29uZmlndXJhdGlvbiByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA4OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSRFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcmRzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3Jkcy9LY29uZmlnLTItXG5uZXQvcmRzL0tjb25maWc6Mzpjb25maWcgUkRTXG5uZXQvcmRzL0tjb25maWctNC1cdHRyaXN0YXRlIFwmIzM0O1RoZSBSZWxpYWJsZSBEYXRhZ3JhbSBTb2NrZXRzIFByb3RvY29sXCYjMzQ7XG4tLVxubmV0L3Jkcy9LY29uZmlnLTktXG5uZXQvcmRzL0tjb25maWc6MTA6Y29uZmlnIFJEU19SRE1BXG5uZXQvcmRzL0tjb25maWctMTEtXHR0cmlzdGF0ZSBcJiMzNDtSRFMgb3ZlciBJbmZpbmliYW5kXCYjMzQ7XG4tLVxubmV0L3Jkcy9LY29uZmlnLTE2LVxubmV0L3Jkcy9LY29uZmlnOjE3OmNvbmZpZyBSRFNfVENQXG5uZXQvcmRzL0tjb25maWctMTgtXHR0cmlzdGF0ZSBcJiMzNDtSRFMgb3ZlciBUQ1BcJiMzNDtcbi0tXG5uZXQvcmRzL0tjb25maWctMjQtXG5uZXQvcmRzL0tjb25maWc6MjU6Y29uZmlnIFJEU19ERUJVR1xubmV0L3Jkcy9LY29uZmlnLTI2LVx0Ym9vbCBcJiMzNDtSRFMgZGVidWdnaW5nIG1lc3NhZ2VzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDg6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI4MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFJEUyBGdXp6aW5nIFN0cmF0ZWd5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBSRFNgIGFuZCBgUkRTX1RDUGAgY29uZmlndXJhdGlvbiwgYW5kIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGlkZW50aWZ5IHRoZSBrZXkgbW9kaWZpZWQgZnVuY3Rpb25zIGZvciBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXRzLiBNeSBleWVzIGFyZSBkcmF3biB0byBgcmRzX2Nvbm5fc2h1dGRvd25gLCBgcmRzX2luY19pbml0YCwgYHJkc19zZW5kX3htaXRgLCBhbmQgYHJkc190Y3BfcmVzZXRfY2FsbGJhY2tzYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgY2FsbCBwYXRocy4KCmByZHNfY29ubl9zaHV0ZG93bmAgaXMgY2xlYXJseSB0aWVkIHRvIGNvbm5lY3Rpb24gZGVzdHJ1Y3Rpb24gYW5kIGRyb3BwaW5nLCBhcHBlYXJpbmcgd2l0aGluIGByZHNfY29ubl9kZXN0cm95YCBhbmQgYHJkc19jb25uX2Ryb3BgLiBUaGF04oCZcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgY29ubmVjdGlvbiBsaWZlY3ljbGUgdnVsbmVyYWJpbGl0aWVzLiBgcmRzX3NlbmRfeG1pdGAgbG9va3MgaW50ZXJlc3Rpbmc7IGl04oCZcyBpbnZva2VkIGJ5IGByZHNfc2VuZG1zZ2AgYW5kIHdvcmtlciB0aHJlYWRzIOKAkyBpbmRpY2F0aW5nIGl04oCZcyBpbnZvbHZlZCBpbiBkYXRhIHRyYW5zbWlzc2lvbiwgc28gSSBkZWZpbml0ZWx5IG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IuIFRoZW4gYHJkc190Y3BfcmVzZXRfY2FsbGJhY2tzYCBpcyBjYWxsZWQgZHVyaW5nIFRDUCBjb25uZWN0aW9uIGFjY2VwdGFuY2UgKGByZHNfdGNwX2FjY2VwdF9vbmVgKSBvciBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgKGByZHNfdGNwX2Nvbm5fcGF0aF9jb25uZWN0YCksIGhpZ2hsaWdodGluZyBwb3NzaWJsZSB2dWxuZXJhYmlsaXRpZXMgaW4gVENQL1JEUyBpbnRlcmFjdGlvbi4KCk5vdywgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludHMgZm9yIGZ1enppbmcuIGByZHNfc2VuZG1zZ2AgYW5kIGByZHNfcmVjdm1zZ2AganVtcCBvdXQgYXMgb2J2aW91cyBjYW5kaWRhdGVzOyB0aGV5IGhhbmRsZSBzZW5kIGFuZCByZWNlaXZlIG9wZXJhdGlvbnMsIG1ha2luZyB0aGVtIHByaW1lIHRhcmdldHMuIGByZHNfYmluZGAgYW5kIGByZHNfY29ubmVjdGAgYXJlIHRoZSBzb2NrZXQgc2V0dXAgZnVuY3Rpb25zLCBhbmQgc2hvdWxkIGRlZmluaXRlbHkgYmUgZXhhbWluZWQuIFdoaWxlIGByZHNfdGNwX2FjY2VwdF9vbmVgIGlzIGludGVybmFsLCBpdCYjMzk7cyB0cmlnZ2VyZWQgYnkgaW5jb21pbmcgVENQIGNvbm5lY3Rpb25zIHRvIHRoZSBSRFMgcG9ydCwgc28gaXQmIzM5O3MgYSBjcml0aWNhbCBwb2ludCB0byBjb25zaWRlciwgZXNwZWNpYWxseSBnaXZlbiB0aGUgZHVhbCBuYXR1cmUgb2YgUkRTL1RDUC4KCkZpbmFsbHksIEkgbmVlZCB0byBjaGVjayBgbmV0L3Jkcy9hZl9yZHMuY2AgdG8gbG9vayBhdCBzb2NrZXQgb3BlcmF0aW9ucy4gVGhpcyB3aWxsIGdpdmUgbWUgdGhlIGJlc3QgaW5zaWdodCBpbnRvIFJEUyBzb2NrZXQgYmVoYXZpb3IuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gUkRTIGFuZCBUQ1AgdG8gYmUgc3VyZSBJIGZpbmQgdGhlIG1vcmUgaW50ZXJlc3RpbmcgZmxhd3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDg6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RydWN0IHByb3RvX29wcyByZHNfcHJvdG9fb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3Jkcy9hZl9yZHMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcmRzL2FmX3Jkcy5jPTY0MD1zdGF0aWMgc3RydWN0IHByb3RvIHJkc19wcm90byA9IHtcbi0tXG5uZXQvcmRzL2FmX3Jkcy5jLTY0NS1cbm5ldC9yZHMvYWZfcmRzLmM6NjQ2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHJkc19wcm90b19vcHMgPSB7XG5uZXQvcmRzL2FmX3Jkcy5jLTY0Ny1cdC5mYW1pbHkgPVx0QUZfUkRTLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA4OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNzcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqQW5hbHl6aW5nIGByZHNfcHJvdG9fb3BzYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB0YWtlIGEgcGVlayBhdCB0aGUgY29udGVudHMgb2YgYHJkc19wcm90b19vcHNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVuZGFtZW50YWwgb3BlcmF0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhpcyBzdHJ1Y3R1cmUuIFRoaXMgaXMgbGlrZWx5IHRoZSBoZWFydCBvZiBob3cgdGhpcyBuZXR3b3JrIHByb3RvY29sLCB3aGF0ZXZlciBpdCBpcywgaW50ZXJhY3RzIGF0IGEgbG93IGxldmVsLiBHaXZlbiBteSBleHBlcnRpc2UsIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgdGhhdCB0aGlzIHdpbGwgZGVmaW5lIHRoZSBjcnVjaWFsIGZ1bmN0aW9ucyBsaWtlIGBjb25uZWN0YCwgYHNlbmRgLCBgcmVjZWl2ZWAsIGBkaXNjb25uZWN0YCwgYW5kIHBvc3NpYmx5IGVycm9yIGhhbmRsaW5nIHJvdXRpbmVzLiBJJiMzOTttIGtlZW4gdG8gc2VlIHRoZSBzcGVjaWZpYyBkYXRhIHN0cnVjdHVyZXMgYW5kIGZ1bmN0aW9uIHNpZ25hdHVyZXMgaW52b2x2ZWQ7IGl0IHdpbGwgYmUgYSBnb29kIGluZGljYXRvciBvZiBpdHMgZGVzaWduIGFuZCBwZXJmb3JtYW5jZSBnb2Fscy4gSXMgaXQgb3B0aW1pemVkIGZvciBsb3cgbGF0ZW5jeSwgaGlnaCB0aHJvdWdocHV0LCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gQSBxdWljayBnbGFuY2Ugd2lsbCBnaXZlIG1lIGNsdWVzIGFib3V0IHRoZSBleHBlY3RlZCB3b3JrIGZsb3cgYW5kIHN0YXRlIG1hbmFnZW1lbnQuIEkmIzM5O20gaG9waW5nIGl0JiMzOTtzIHdlbGwtZG9jdW1lbnRlZCBvciBhdCBsZWFzdCB1c2VzIGRlc2NyaXB0aXZlIG5hbWVzISBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDg6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmRzX3Byb3RvX29wcyA9IFxceyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9yZHMvYWZfcmRzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3Jkcy9hZl9yZHMuYz02NDA9c3RhdGljIHN0cnVjdCBwcm90byByZHNfcHJvdG8gPSB7XG4tLVxubmV0L3Jkcy9hZl9yZHMuYy02NDUtXG5uZXQvcmRzL2FmX3Jkcy5jOjY0NjpzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyByZHNfcHJvdG9fb3BzID0ge1xubmV0L3Jkcy9hZl9yZHMuYy02NDctXHQuZmFtaWx5ID1cdEFGX1JEUyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwODoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDU3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBgYWZfcmRzLmNgKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSYjMzk7bSBnb2luZyB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGBuZXQvcmRzL2FmX3Jkcy5jYCBmaWxlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZm9jdXNpbmcgbXkgYXR0ZW50aW9uIGFyb3VuZCBsaW5lIDY0Ni4gSSBrbm93IHRoaXMgY29kZSBiYXNlIHByZXR0eSB3ZWxsLCBzbyBteSBpbnR1aXRpb24gdGVsbHMgbWUgc29tZXRoaW5nIGludGVyZXN0aW5nIGlzIGhhcHBlbmluZyB0aGVyZSwgcHJvYmFibHkgcmVsYXRlZCB0b+KApiB3ZWxsLCB0aGF0JiMzOTtzIHdoYXQgSSBuZWVkIHRvIGZpbmQgb3V0LCBpc24mIzM5O3QgaXQ/IExldCBtZSBqdXN0IHB1bGwgdGhhdCBmaWxlIHVwIGFuZCBnZXQgc2l0dWF0ZWQuIEkgZXhwZWN0IHRoaXMgc2VjdGlvbiB0byBiZSBhYm91dC4uLiBbSSBtZW50YWxseSBzdGFydCBoeXBvdGhlc2l6aW5nIGJhc2VkIG9uIG15IGV4aXN0aW5nIGtub3dsZWRnZSBvZiB0aGUgUkRTIHByb3RvY29sIGFuZCBnZW5lcmFsIG5ldHdvcmtpbmcgc3RhY2ssIGFudGljaXBhdGluZyB3aGF0IEkmIzM5O20gbGlrZWx5IHRvIGVuY291bnRlciBvbiBvciBhcm91bmQgdGhhdCBsaW5lXS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDg6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvcmRzL2FmX3Jkcy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2NDA6XHRzdGF0aWMgc3RydWN0IHByb3RvIHJkc19wcm90byA9IHtcbiA2NDE6XHRcdC5uYW1lXHQgID0gXCYjMzQ7UkRTXCYjMzQ7LFxuIDY0MjpcdFx0Lm93bmVyXHQgID0gVEhJU19NT0RVTEUsXG4gNjQzOlx0XHQub2JqX3NpemUgPSBzaXplb2Yoc3RydWN0IHJkc19zb2NrKSxcbiA2NDQ6XHR9O1xuIDY0NTpcdFxuIDY0NjpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHJkc19wcm90b19vcHMgPSB7XG4gNjQ3Olx0XHQuZmFtaWx5ID1cdEFGX1JEUyxcbiA2NDg6XHRcdC5vd25lciA9XHRUSElTX01PRFVMRSxcbiA2NDk6XHRcdC5yZWxlYXNlID1cdHJkc19yZWxlYXNlLFxuIDY1MDpcdFx0LmJpbmQgPVx0XHRyZHNfYmluZCxcbiA2NTE6XHRcdC5jb25uZWN0ID1cdHJkc19jb25uZWN0LFxuIDY1MjpcdFx0LnNvY2tldHBhaXIgPVx0c29ja19ub19zb2NrZXRwYWlyLFxuIDY1MzpcdFx0LmFjY2VwdCA9XHRzb2NrX25vX2FjY2VwdCxcbiA2NTQ6XHRcdC5nZXRuYW1lID1cdHJkc19nZXRuYW1lLFxuIDY1NTpcdFx0LnBvbGwgPVx0XHRyZHNfcG9sbCxcbiA2NTY6XHRcdC5pb2N0bCA9XHRyZHNfaW9jdGwsXG4gNjU3Olx0XHQubGlzdGVuID1cdHNvY2tfbm9fbGlzdGVuLFxuIDY1ODpcdFx0LnNodXRkb3duID1cdHNvY2tfbm9fc2h1dGRvd24sXG4gNjU5Olx0XHQuc2V0c29ja29wdCA9XHRyZHNfc2V0c29ja29wdCxcbiA2NjA6XHRcdC5nZXRzb2Nrb3B0X2l0ZXIgPVx0cmRzX2dldHNvY2tvcHQsXG4gNjYxOlx0XHQuc2VuZG1zZyA9XHRyZHNfc2VuZG1zZyxcbiA2NjI6XHRcdC5yZWN2bXNnID1cdHJkc19yZWN2bXNnLFxuIDY2MzpcdFx0Lm1tYXAgPVx0XHRzb2NrX25vX21tYXAsXG4gNjY0Olx0fTtcbiA2NjU6XHRcbiA2NjY6XHRzdGF0aWMgdm9pZCByZHNfc29ja19kZXN0cnVjdChzdHJ1Y3Qgc29jayAqc2spXG4gNjY3Olx0e1xuIDY2ODpcdFx0c3RydWN0IHJkc19zb2NrICpycyA9IHJkc19za190b19ycyhzayk7XG4gNjY5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA4OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxNjcKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBmdW5jdGlvbnMsIHB1dHRpbmcgbXlzZWxmIGluIHRoZSBleHBlcnQmIzM5O3Mgc2hvZXM6CgoqKkFuYWx5emluZyBSRFMgRnVuY3Rpb24gQ2FsbCBQYXRocyoqCgpSaWdodCwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gTXkgcHJpbWFyeSBjb25jZXJuIGhlcmUgaXMgdW5kZXJzdGFuZGluZyB0aGUga2V5IGNvbm5lY3Rpb24gYW5kIHNlbmQvcmVjZWl2ZSBwYXRocywgYW5kIGhvdyB0aGV5IGludGVyYWN0LiBUaGUgbGlzdCBvZiBtb2RpZmllZCBmdW5jdGlvbnMgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBMZXQmIzM5O3Mgc2VlLi4uCgpgcmRzX2Nvbm5fc2h1dGRvd25gIGlzIGRlZmluaXRlbHkgaW50ZXJlc3RpbmcuIFRoZSB0ZXh0IHNheXMgaXQmIzM5O3MgY2FsbGVkIGZyb20gYm90aCBgcmRzX2Nvbm5fZGVzdHJveWAgYW5kIGByZHNfY29ubl9kcm9wYC4gVGhhdCBpbW1lZGlhdGVseSBzdWdnZXN0cyBpdCBoYW5kbGVzIGEgZ3JhY2VmdWwgb3IgZm9yY2VkIHRlcm1pbmF0aW9uIG9mIGFuIFJEUyBjb25uZWN0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRob3NlIGNhbGxpbmcgZnVuY3Rpb25zIHRvIGRldGVybWluZSB0aGUgZXhhY3Qgc2NlbmFyaW9zIHRyaWdnZXJpbmcgc2h1dGRvd24uIGByZHNfY29ubl9kZXN0cm95YCBpbXBsaWVzIGEgc3RhbmRhcmQgY2xlYW51cCwgd2hpbGUgYHJkc19jb25uX2Ryb3BgIGxpa2VseSBzdWdnZXN0cyBhbiBlcnJvciBvciBleHBsaWNpdCBkaXNjb25uZWN0LiBJJiMzOTtsbCBiZXQgaXQgaGFuZGxlcyByZWxlYXNpbmcgcmVzb3VyY2VzIGFuZCBzZW5kaW5nIGFwcHJvcHJpYXRlIHNpZ25hbGluZywgcG90ZW50aWFsbHkgY2xvc2luZyBzb2NrZXRzLCBldGMuCgpOb3csIGByZHNfc2VuZF94bWl0YCBpbW1lZGlhdGVseSBjYXRjaGVzIG15IGV5ZSBhcyBhIHBvdGVudGlhbCBib3R0bGVuZWNrIG9yIGNyaXRpY2FsIHBhdGggZm9yIGRhdGEgdHJhbnNtaXNzaW9uLiBUaGUgdGV4dCBub3RlcyBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgcmRzX3NlbmRtc2dgLiBPa2F5LCBJIGV4cGVjdGVkIHRoYXQuIEJ1dCB0aGUgYWRkaXRpb24gb2YgJiMzNDt2aWEgYHJkc19zZW5kX3htaXRgIGRpcmVjdGx5PyBMZXQmIzM5O3MgY2hlY2smIzM0OyBpcyBjcnVjaWFsLiBUaGlzIG1lYW5zIEkgbmVlZCB0byAqY29uZmlybSogdGhlIGV4YWN0IGNhbGwgY2hhaW4uIFdoaWxlIHRoZSB0ZXh0IGltcGxpZXMgaXQgaXMsIEkgY2FuJiMzOTt0IHRha2UgYW55dGhpbmcgZm9yIGdyYW50ZWQuIFRoZXJlIG1pZ2h0IGJlIGFuIGluZGlyZWN0IHBhdGggb3IgYWRkaXRpb25hbCBsYXllcnMgb2YgYWJzdHJhY3Rpb24gdG8gY29uc2lkZXIuIFVuZGVyc3RhbmRpbmcgaWYgYHJkc19zZW5kbXNnYCBkaXJlY3RseSBjYWxscyBpdCwgb3IgaWYgdGhlcmUmIzM5O3MgYSB3cmFwcGVyLCBpcyBlc3NlbnRpYWwgZm9yIHBlcmZvcm1hbmNlIGFuYWx5c2lzIGFuZCBkZWJ1Z2dpbmcgc2VuZC1wYXRoIGlzc3Vlcy4gQXJlIHRoZXJlIGFueSBxdWV1ZWluZyBvciBmbG93IGNvbnRyb2wgc3RlcHMgaW4gYmV0d2Vlbj8gSSYjMzk7bGwgbmVlZCB0byBjYXJlZnVsbHkgZXhhbWluZSB0aGUgY29kZS4KClRoZSBpbmNsdXNpb24gb2YgYHJkc190Y3BfcmVzZXRfY2FsbGJhY2tzYCBpcyBhbHNvIHdvcnRoIGEgbG9vay4gVGhlIHByZXNlbmNlIG9mIFRDUCBzdWdnZXN0cyBzb21lIHR5cGUgb2Ygc29ja2V0IGludGVyYWN0aW9uIGlzIGludm9sdmVkLiBJJiMzOTtsbCBiZSBpbnRlcmVzdGVkIGluIHdoYXQgdGhlIGBjYWxsYmFja3NgIGRvLCBhbmQgd2hhdCB0eXBlIG9mIGV2ZW50cyB0aGV5IGFyZSBoYW5kbGluZy4KCk92ZXJhbGwsIHRoaXMgb3V0bGluZXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJJiMzOTtsbCBub3cgZGlnIGludG8gZWFjaCBvZiB0aGVzZSBmdW5jdGlvbnMgdG8gdW5kZXJzdGFuZCB0aGUgbWVjaGFuaWNzLCB0aGUgcmVzb3VyY2UgdXNhZ2UsIGFuZCB0aGUgdGhyZWFkIHNhZmV0eSBjb25zaWRlcmF0aW9ucy4gVGhlIGNhbGwgZ3JhcGggZm9yIHRoaXMgbW9kdWxlIGlzIGNsZWFybHkgZ29pbmcgdG8gYmUgaW1wb3J0YW50IGluIHVuZGVyc3RhbmRpbmcgdGhlIGRhdGEgZmxvd3MgYW5kIHBvdGVudGlhbCBjb250ZW50aW9uIHBvaW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDg6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmRzX3NlbmRfeG1pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9yZHMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9yZHMvY29uZy5jPTIxNz12b2lkIHJkc19jb25nX3F1ZXVlX3VwZGF0ZXMoc3RydWN0IHJkc19jb25nX21hcCAqbWFwKVxuLS1cbm5ldC9yZHMvY29uZy5jLTIzMC1cdFx0XHRyZHNfc3RhdHNfaW5jKHNfY29uZ191cGRhdGVfcXVldWVkKTtcbm5ldC9yZHMvY29uZy5jOjIzMTpcdFx0XHQvKiBXZSBjYW5ub3QgaW5saW5lIHRoZSBjYWxsIHRvIHJkc19zZW5kX3htaXQoKSBoZXJlXG5uZXQvcmRzL2NvbmcuYy0yMzItXHRcdFx0ICogZm9yIHR3byByZWFzb25zIChib3RoIHBlcnRhaW5pbmcgdG8gYSBUQ1AgdHJhbnNwb3J0KTpcbi0tXG5uZXQvcmRzL2liX2NtLmM9MjgyPXN0YXRpYyB2b2lkIHJkc19pYl90YXNrbGV0X2ZuX3NlbmQodW5zaWduZWQgbG9uZyBkYXRhKVxuLS1cbm5ldC9yZHMvaWJfY20uYy0yOTktXHQgICAgdGVzdF9iaXQoMCwgXHUwMDI2Y29ubi1cdTAwM2VjX21hcF9xdWV1ZWQpKSlcbm5ldC9yZHMvaWJfY20uYzozMDA6XHRcdHJkc19zZW5kX3htaXQoXHUwMDI2aWMtXHUwMDNlY29ubi1cdTAwM2VjX3BhdGhbMF0pO1xubmV0L3Jkcy9pYl9jbS5jLTMwMS19XG4tLVxubmV0L3Jkcy9pYl9zZW5kLmM9MjQ1PXZvaWQgcmRzX2liX3NlbmRfY3FlX2hhbmRsZXIoc3RydWN0IHJkc19pYl9jb25uZWN0aW9uICppYywgc3RydWN0IGliX3djICp3Yylcbi0tXG5uZXQvcmRzL2liX3NlbmQuYy0zMzUtICpcbm5ldC9yZHMvaWJfc2VuZC5jOjMzNjogKiBUaGUgUkRTIHNlbmQgY29kZSBpcyBlc3NlbnRpYWxseSBzaW5nbGUtdGhyZWFkZWQ7IHJkc19zZW5kX3htaXRcbm5ldC9yZHMvaWJfc2VuZC5jLTMzNy0gKiBzZXRzIFJEU19JTl9YTUlUIHRvIGVuc3VyZSBleGNsdXNpdmUgYWNjZXNzIHRvIHRoZSBzZW5kIHJpbmcuXG4tLVxubmV0L3Jkcy9sb29wLmM9MjMxPXZvaWQgcmRzX2xvb3BfbmV0X2V4aXQodm9pZClcbi0tXG5uZXQvcmRzL2xvb3AuYy0yMzctICogVGhpcyBpcyBtaXNzaW5nIC54bWl0XyogYmVjYXVzZSBsb29wIGRvZXNuJiMzOTt0IGdvIHRocm91Z2ggZ2VuZXJpY1xubmV0L3Jkcy9sb29wLmM6MjM4OiAqIHJkc19zZW5kX3htaXQoKSBhbmQgZG9lc24mIzM5O3QgY2FsbCByZHNfcmVjdl9pbmNvbWluZygpLiAgLmxpc3Rlbl9zdG9wIGFuZFxubmV0L3Jkcy9sb29wLmMtMjM5LSAqIC5sYWRkcl9jaGVjayBhcmUgbWlzc2luZyBiZWNhdXNlIHRyYW5zcG9ydC5jIGRvZXNuJiMzOTt0IGl0ZXJhdGUgb3ZlclxuLS1cbm5ldC9yZHMvcmRzLmg9NTQwPXN0cnVjdCByZHNfdHJhbnNwb3J0IHtcbi0tXG5uZXQvcmRzL3Jkcy5oLTU4MC1cdC8qXG5uZXQvcmRzL3Jkcy5oOjU4MTpcdCAqIC54bWl0IGlzIGNhbGxlZCBieSByZHNfc2VuZF94bWl0KCkgdG8gdGVsbCB0aGUgdHJhbnNwb3J0IHRvIHNlbmRcbm5ldC9yZHMvcmRzLmgtNTgyLVx0ICogcGFydCBvZiBhIG1lc3NhZ2UuICBUaGUgY2FsbGVyIHNlcmlhbGl6ZXMgb24gdGhlIHNlbmRfc2VtIHNvIHRoaXNcbi0tXG5uZXQvcmRzL3Jkcy5oPTk1Nz12b2lkIHJkc19zZW5kX3BhdGhfcmVzZXQoc3RydWN0IHJkc19jb25uX3BhdGggKmNvbm4pO1xubmV0L3Jkcy9yZHMuaDo5NTg6aW50IHJkc19zZW5kX3htaXQoc3RydWN0IHJkc19jb25uX3BhdGggKmNwKTtcbm5ldC9yZHMvcmRzLmgtOTU5LXN0cnVjdCBzb2NrYWRkcl9pbjtcbi0tXG5uZXQvcmRzL3NlbmQuYy00NC1cbm5ldC9yZHMvc2VuZC5jOjQ1Oi8qIFdoZW4gdHJhbnNtaXR0aW5nIG1lc3NhZ2VzIGluIHJkc19zZW5kX3htaXQsIHdlIG5lZWQgdG8gZW1lcmdlIGZyb21cbm5ldC9yZHMvc2VuZC5jLTQ2LSAqIHRpbWUgdG8gdGltZSBhbmQgYnJpZWZseSByZWxlYXNlIHRoZSBDUFUuIE90aGVyd2lzZSB0aGUgc29mdGxvY2sgd2F0Y2hkb2dcbi0tXG5uZXQvcmRzL3NlbmQuYz01OT1zdGF0aWMgdm9pZCByZHNfc2VuZF9yZW1vdmVfZnJvbV9zb2NrKHN0cnVjdCBsaXN0X2hlYWQgKm1lc3NhZ2VzLCBpbnQgc3RhdHVzKTtcbi0tXG5uZXQvcmRzL3NlbmQuYy02Mi0gKiBSZXNldCB0aGUgc2VuZCBzdGF0ZS4gIENhbGxlcnMgbXVzdCBlbnN1cmUgdGhhdCB0aGlzIGRvZXNuJiMzOTt0IHJhY2Ugd2l0aFxubmV0L3Jkcy9zZW5kLmM6NjM6ICogcmRzX3NlbmRfeG1pdCgpLlxubmV0L3Jkcy9zZW5kLmMtNjQtICovXG4tLVxubmV0L3Jkcy9zZW5kLmM9MTI4PXN0YXRpYyBib29sIHJkc19tcHJkc19jcDBfY2F0Y2h1cChzdHJ1Y3QgcmRzX2Nvbm5lY3Rpb24gKmNvbm4pXG4tLVxubmV0L3Jkcy9zZW5kLmMtMTg2LSAqL1xubmV0L3Jkcy9zZW5kLmM6MTg3OmludCByZHNfc2VuZF94bWl0KHN0cnVjdCByZHNfY29ubl9wYXRoICpjcClcbm5ldC9yZHMvc2VuZC5jLTE4OC17XG4tLVxubmV0L3Jkcy9zZW5kLmMtNTQ3LX1cbm5ldC9yZHMvc2VuZC5jOjU0ODpFWFBPUlRfU1lNQk9MX0dQTChyZHNfc2VuZF94bWl0KTtcbm5ldC9yZHMvc2VuZC5jLTU0OS1cbi0tXG5uZXQvcmRzL3NlbmQuYz02ODI9c3RhdGljIHZvaWQgcmRzX3NlbmRfcmVtb3ZlX2Zyb21fc29jayhzdHJ1Y3QgbGlzdF9oZWFkICptZXNzYWdlcywgaW50IHN0YXR1cylcbi0tXG5uZXQvcmRzL3NlbmQuYy03NTctICogbWVzc2FnZXMgdXAgdG8sIGFuZCBpbmNsdWRpbmcsIHRoZSBnaXZlbiBzZXF1ZW5jZSBudW1iZXIuICBNZXNzYWdlcyBhcmVcbm5ldC9yZHMvc2VuZC5jOjc1ODogKiBtb3ZlZCB0byB0aGUgcmV0cmFucyBxdWV1ZSB3aGVuIHJkc19zZW5kX3htaXQgcGlja3MgdGhlbSBvZmYgdGhlIHNlbmRcbm5ldC9yZHMvc2VuZC5jLTc1OS0gKiBxdWV1ZS4gVGhpcyBtZWFucyB0aGF0IGluIHRoZSBUQ1AgY2FzZSwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBoYXZlIGJlZW5cbi0tXG5uZXQvcmRzL3NlbmQuYz0xMTQ0PWludCByZHNfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBwYXlsb2FkX2xlbilcbi0tXG5uZXQvcmRzL3NlbmQuYy0xNDQxLVxubmV0L3Jkcy9zZW5kLmM6MTQ0MjpcdHJldCA9IHJkc19zZW5kX3htaXQoY3BhdGgpO1xubmV0L3Jkcy9zZW5kLmMtMTQ0My1cdGlmIChyZXQgPT0gLUVOT01FTSB8fCByZXQgPT0gLUVBR0FJTikge1xuLS1cbm5ldC9yZHMvdGNwLmM9MTI2PXZvaWQgcmRzX3RjcF9yZXNldF9jYWxsYmFja3Moc3RydWN0IHNvY2tldCAqc29jayxcbi0tXG5uZXQvcmRzL3RjcC5jLTE0MS1cdCAqIGNwX3N0YXRlIHRvIHNvbWV0aGluZyBvdGhlciB0aGFuIFJEU19DT05OX1VQLCBhbmQgdGhlblxubmV0L3Jkcy90Y3AuYzoxNDI6XHQgKiB3YWl0aW5nIGZvciBhbnkgZXhpc3RpbmcgdGhyZWFkcyBpbiByZHNfc2VuZF94bWl0IHRvXG5uZXQvcmRzL3RjcC5jLTE0My1cdCAqIGNvbXBsZXRlIHJlbGVhc2VfaW5feG1pdCgpLiAoU3Vic2VxdWVudCB0aHJlYWRzIGVudGVyaW5nXG5uZXQvcmRzL3RjcC5jOjE0NDpcdCAqIHJkc19zZW5kX3htaXQoKSB3aWxsIGJhaWwgb24gIXJkc19jb25uX3VwKCkuXG5uZXQvcmRzL3RjcC5jLTE0NS1cdCAqXG4tLVxubmV0L3Jkcy90Y3AuYy0xNTctXHQvKiBBY3F1aXJlIHRoZSBzZW5kLXBhdGggbG9jayByYXRoZXIgdGhhbiB3YWl0aW5nIGZvciBpdCB0byBiZVxubmV0L3Jkcy90Y3AuYzoxNTg6XHQgKiByZWxlYXNlZDogYSBtZXJlIHdhaXQgaXMgcmFjeSwgc2luY2UgcmRzX3NlbmRfeG1pdCgpIG1heSB0YWtlXG5uZXQvcmRzL3RjcC5jLTE1OS1cdCAqIHRoZSBsb2NrIGFnYWluIHJpZ2h0IGFmdGVyIHdlIHNhbXBsZSBpdCBjbGVhciBhbmQgdGhlbiBydW5cbi0tXG5uZXQvcmRzL3RocmVhZHMuYz0xOTE9dm9pZCByZHNfc2VuZF93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9yZHMvdGhyZWFkcy5jLTE5OS1cdFx0Y2xlYXJfYml0KFJEU19MTF9TRU5EX0ZVTEwsIFx1MDAyNmNwLVx1MDAzZWNwX2ZsYWdzKTtcbm5ldC9yZHMvdGhyZWFkcy5jOjIwMDpcdFx0cmV0ID0gcmRzX3NlbmRfeG1pdChjcCk7XG5uZXQvcmRzL3RocmVhZHMuYy0yMDEtXHRcdGNvbmRfcmVzY2hlZCgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwODoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDA5CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBSRFMgS2VybmVsIENvZGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9uIGNhbGwgcmVsYXRpb25zaGlwcyB3aXRoaW4gdGhlIFJEUyBrZXJuZWwgY29kZS4gSXQmIzM5O3MgY2xlYXIgdGhpcyBpcyBhbGwgYWJvdXQgbWFuYWdpbmcgcmVsaWFibGUgZGF0YWdyYW0gc29ja2V0cy4gSSBzZWUgYHJkc19zZW5kX3htaXRgIGJlaW5nIGNhbGxlZCBmcm9tIGByZHNfc2VuZG1zZ2AgYW5kIGByZHNfc2VuZF93b3JrZXJgIOKAkyB0aGF0JiMzOTtzIHRoZSB0cmFuc21pc3Npb24gcGF0aCBmb3Igc2VuZGluZyBkYXRhLiBgcmRzX2Nvbm5fc2h1dGRvd25gIGlzIGNhbGxlZCBmcm9tIGByZHNfY29ubl9kZXN0cm95YCBhbmQgYHJkc19jb25uX2Ryb3BgLCB3aGljaCBpcyBob3cgY29ubmVjdGlvbnMgYXJlIGhhbmRsZWQgd2hlbiB0aGV5IG5lZWQgdG8gc2h1dCBkb3duLiBgcmRzX3RjcF9yZXNldF9jYWxsYmFja3NgIGlzIGNhbGxlZCBmcm9tIGByZHNfdGNwX2FjY2VwdF9vbmVgIGFuZCBgcmRzX3RjcF9jb25uX3BhdGhfY29ubmVjdGAsIHN1Z2dlc3RpbmcgY29ubmVjdGlvbiByZXNldCBvbiB0aGUgVENQIHBhdGguIEFuZCBmaW5hbGx5LCBgcmRzX2luY19pbml0YCBpcyBpbnZva2VkIGZyb20gYHJkc190Y3BfZGF0YV9yZWN2YCBhbmQgYHJkc19pYl9yZWN2X2luaXRfcmluZ2AsIHNob3dpbmcgaW5pdGlhbGl6YXRpb24gZm9yIHJlY2VpdmluZyBkYXRhLgoKVGhpcyByZWFsbHkgbG9va3MgbGlrZSB0aGUgY29kZSBpcyBoYW5kbGluZyBzb21lIGNydWNpYWwgcmFjZSBjb25kaXRpb25zLCBwcm9iYWJseSBhcm91bmQgY29ubmVjdGlvbiB0ZWFyZG93biBhbmQgcmVzZXR0aW5nLCBhbmQgaXQgbG9va3MgbGlrZSBpdCBkb2VzIHNvbWUgaW5pdGlhbGl6YXRpb24uIFNwZWNpZmljYWxseSBgcmRzX3NlbmRfeG1pdGAgaW5pdGlhbGl6ZXMgYSBsaXN0LiBUaGlzIHNlZW1zIHRvIGJlIGF0IHRoZSBoZWFydCBvZiB0aGUgUkRTIHNvY2tldCBpbXBsZW1lbnRhdGlvbiwgcmlnaHQ/IEkgY2FuIHRlbGwgdGhhdCB0aGUgY29kZSBpcyByZWFjaGFibGUgdmlhIFJEUyBzb2NrZXRzLiBUaGUgY29uZmlndXJhdGlvbnMgbmVlZGVkIGFyZSBgUkRTYCBhbmQgYFJEU19UQ1BgLiAKCk5vdywgYmVmb3JlIEkgZGlnIGRlZXBlciwgSSBzaG91bGQgY2hlY2sgd2hldGhlciBlaXRoZXIgYFJEU2Agb3IgYFJEU19UQ1BgIGhhdmUgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgZmVhdHVyZXMgb3IgbW9kdWxlcy4gR290dGEgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBjb250ZXh0IGJlZm9yZSBJIHN0YXJ0IHRyeWluZyB0byBtb2RpZnkgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA4OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcmRzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3Jkcy9LY29uZmlnPTM9Y29uZmlnIFJEU1xubmV0L3Jkcy9LY29uZmlnLTQtXHR0cmlzdGF0ZSBcJiMzNDtUaGUgUmVsaWFibGUgRGF0YWdyYW0gU29ja2V0cyBQcm90b2NvbFwmIzM0O1xubmV0L3Jkcy9LY29uZmlnOjU6XHRkZXBlbmRzIG9uIElORVRcbm5ldC9yZHMvS2NvbmZpZy02LVx0aGVscFxuLS1cbm5ldC9yZHMvS2NvbmZpZz0xMD1jb25maWcgUkRTX1JETUFcbm5ldC9yZHMvS2NvbmZpZy0xMS1cdHRyaXN0YXRlIFwmIzM0O1JEUyBvdmVyIEluZmluaWJhbmRcJiMzNDtcbm5ldC9yZHMvS2NvbmZpZzoxMjpcdGRlcGVuZHMgb24gUkRTIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EX0FERFJfVFJBTlNcbm5ldC9yZHMvS2NvbmZpZy0xMy1cdGhlbHBcbi0tXG5uZXQvcmRzL0tjb25maWc9MTc9Y29uZmlnIFJEU19UQ1Bcbm5ldC9yZHMvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O1JEUyBvdmVyIFRDUFwmIzM0O1xubmV0L3Jkcy9LY29uZmlnOjE5Olx0ZGVwZW5kcyBvbiBSRFNcbm5ldC9yZHMvS2NvbmZpZzoyMDpcdGRlcGVuZHMgb24gSVBWNiB8fCAhSVBWNlxubmV0L3Jkcy9LY29uZmlnLTIxLVx0aGVscFxuLS1cbm5ldC9yZHMvS2NvbmZpZz0yNT1jb25maWcgUkRTX0RFQlVHXG5uZXQvcmRzL0tjb25maWctMjYtXHRib29sIFwmIzM0O1JEUyBkZWJ1Z2dpbmcgbWVzc2FnZXNcJiMzNDtcbm5ldC9yZHMvS2NvbmZpZzoyNzpcdGRlcGVuZHMgb24gUkRTXG5uZXQvcmRzL0tjb25maWctMjgtXHRkZWZhdWx0IG5cbi0tXG5uZXQvcmRzL0tjb25maWc9MzA9Y29uZmlnIEdDT1ZfUFJPRklMRV9SRFNcbm5ldC9yZHMvS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7RW5hYmxlIEdDT1YgcHJvZmlsaW5nIG9uIFJEU1wmIzM0O1xubmV0L3Jkcy9LY29uZmlnOjMyOlx0ZGVwZW5kcyBvbiBHQ09WX0tFUk5FTFxubmV0L3Jkcy9LY29uZmlnLTMzLVx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwODoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MzM1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBSRFMgYW5kIGl0cyBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYFJEU2Agc2V0dXAgYW5kIGl0JiMzOTtzIGltbWVkaWF0ZWx5IGNsZWFyIHRoYXQgaXQmIzM5O3MgZnVuZGFtZW50YWxseSByZWxpYW50IG9uIGBJTkVUYC4gIEZ1cnRoZXIsIGBSRFNfVENQYCBoaW5nZXMgb24gYFJEU2AgYW5kIGVpdGhlciBgSVBWNmAgb3IgdGhlIGFic2VuY2Ugb2YgYElQVjZgLiBHaXZlbiB0aGlzIHN0cnVjdHVyYWwgZGVwZW5kZW5jeSwgZW5hYmxpbmcgYm90aCBgUkRTYCBhbmQgYFJEU19UQ1BgIHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUga2V5IGZ1bmN0aW9ucyBpbnZvbHZlZCwgc28gSSYjMzk7dmUgZmxhZ2dlZCBhIGZldyBmb3IgY2xvc2VyIGluc3BlY3Rpb246IGByZHNfY29ubl9zaHV0ZG93bmAsIGByZHNfdGNwX3Jlc2V0X2NhbGxiYWNrc2AsIGByZHNfc2VuZF94bWl0YCwgYW5kIGByZHNfaW5jX2luaXRgLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZXNlIGFyZSBzdGF0aWMsIGlubGluZSwgb3IgZXhwb3J0ZWQgc3ltYm9scywgYXMgdGhpcyBpbXBhY3RzIGhvdyB0aGV5IGFyZSB1c2VkIGFuZCBjYWxsZWQuCgpBbHJpZ2h0LCBhIHF1aWNrIGNoZWNrIGNvbmZpcm1zIHRoYXQgYHJkc19jb25uX3NodXRkb3duYCwgYHJkc190Y3BfcmVzZXRfY2FsbGJhY2tzYCwgYHJkc19zZW5kX3htaXRgLCBhbmQgYHJkc19pbmNfaW5pdGAgYXJlIGFsbCBleHBvcnRlZC9nbG9iYWwgc3ltYm9scy4gVGhpcyB0ZWxscyBtZSB0aGV5JiMzOTtyZSBpbnRlbmRlZCBmb3IgdXNlIG91dHNpZGUgdGhlaXIgZGVmaW5pbmcgbW9kdWxlcy4gV2FpdCwgYHJkc19pbmNfaW5pdGAgaXMgc3BlY2lmaWNhbGx5IGxvY2F0ZWQgaW4gYG5ldC9yZHMvcmVjdi5jYC4gVGhpcyBpcyBpbXBvcnRhbnQsIGFzIGl0IGNsYXJpZmllcyB3aGVyZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgaW5jb21pbmcgdHJhZmZpYyBpcyBoYW5kbGVkLCBhbmQgaW5kaWNhdGVzIHdoZXJlIHRoYXQgZnVuY3Rpb24gc2hvdWxkIHJlc2lkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dm9pZCByZHNfaW5jX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcmRzL3JlY3YuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcmRzL3JlY3YuYy00My1cbm5ldC9yZHMvcmVjdi5jOjQ0OnZvaWQgcmRzX2luY19pbml0KHN0cnVjdCByZHNfaW5jb21pbmcgKmluYywgc3RydWN0IHJkc19jb25uZWN0aW9uICpjb25uLFxubmV0L3Jkcy9yZWN2LmMtNDUtXHRcdCBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTkxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkdsb2JhbCBTY29wZSBDaGVjayoqCgpSaWdodCwgdGhpcyBkZWZpbml0ZWx5IHNlZW1zIGxpa2UgaXQmIzM5O3MgYSBnbG9iYWwgaXNzdWUgYWZmZWN0aW5nIGV2ZXJ5dGhpbmcuIEJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byBkZWJ1Z2dpbmcsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgY2hhc2luZyBhIGxvY2FsIHByb2JsZW0uIExldCYjMzk7cyBzdGFydCB3aXRoIGEgY3J1Y2lhbCBjaGVjay4gTXkgaW5zdGluY3QgdGVsbHMgbWUgdGhpcyBpcyBnbG9iYWwsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGUgc2NvcGUgb2YgdGhpcyBgcmRzX2Nvbm5fc2h1dGRvd25gIGZ1bmN0aW9uLCBvciB3aGF0ZXZlciBmdW5jdGlvbiBpcyBjYXVzaW5nIHRoZSBpc3N1ZS4gSSBuZWVkIHRvIGtub3cgaWYgaXQmIzM5O3MgZGVjbGFyZWQgZ2xvYmFsbHkgZmlyc3QuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLCB0aGUgbW9zdCBmdW5kYW1lbnRhbCB0aGluZyB0byBjaGVjayByaWdodCBub3cuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSBpZiBpdCBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dm9pZCByZHNfY29ubl9zaHV0ZG93biYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9yZHMvY29ubmVjdGlvbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9yZHMvY29ubmVjdGlvbi5jPTM3OT1FWFBPUlRfU1lNQk9MX0dQTChyZHNfY29ubl9jcmVhdGVfb3V0Z29pbmcpO1xubmV0L3Jkcy9jb25uZWN0aW9uLmMtMzgwLVxubmV0L3Jkcy9jb25uZWN0aW9uLmM6MzgxOnZvaWQgcmRzX2Nvbm5fc2h1dGRvd24oc3RydWN0IHJkc19jb25uX3BhdGggKmNwKVxubmV0L3Jkcy9jb25uZWN0aW9uLmMtMzgyLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyODUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBmcmFtZWQgYXMgbXkgaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzOgoKKipJbnRlcm5hbCBSZXZpZXcgb2YgUG90ZW50aWFsIFJlc2V0IENhbGxiYWNrcyoqCgpZZXMsIHRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gZm9sbG93aW5nIHRoZSByaWdodCB0cmFjayBoZXJlLiBOb3csIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCBgcmRzX3RjcF9yZXNldF9jYWxsYmFja3NgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgc3BlY2lmaWNhbGx5IGVudGFpbHMuIEl0JiMzOTtzIHRpbWUgdG8gZnVsbHkgYW5hbHlzZSB0aGUgaW5mb3JtYXRpb24gcHJlc2VudGVkLCBlbnN1cmluZyBJIGNvbXByZWhlbmQgdGhlIHNwZWNpZmljIGFjdGlvbnMgYW5kIGRlcGVuZGVuY2llcyB0aGF0IHRoaXMgZW5jb21wYXNzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZvaWQgcmRzX3RjcF9yZXNldF9jYWxsYmFja3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcmRzL3RjcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9yZHMvdGNwLmM9OTY9dm9pZCByZHNfdGNwX3Jlc3RvcmVfY2FsbGJhY2tzKHN0cnVjdCBzb2NrZXQgKnNvY2ssXG4tLVxubmV0L3Jkcy90Y3AuYy0xMjUtICovXG5uZXQvcmRzL3RjcC5jOjEyNjp2b2lkIHJkc190Y3BfcmVzZXRfY2FsbGJhY2tzKHN0cnVjdCBzb2NrZXQgKnNvY2ssXG5uZXQvcmRzL3RjcC5jLTEyNy1cdFx0XHQgICAgIHN0cnVjdCByZHNfY29ubl9wYXRoICpjcClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1NDUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFzc2Vzc21lbnQgb2YgVGFzayBhbmQgRm9jdXMqKgoKWWVzLiAqVGhhdCYjMzk7cyB0aGUgaW5pdGlhbCBhY2tub3dsZWRnZW1lbnQgb2YgdGhlIHRhc2sgb3IgcXVlc3Rpb24uIEkmIzM5O20gcmVhZHkgdG8gbW92ZSBmb3J3YXJkLiBUaGUgc2ltcGxpY2l0eSBzdWdnZXN0cyBhIGNvbmZpcm1hdGlvbiwgYSBzdGFydGluZyBwb2ludC4qCgpMZXQmIzM5O3MgY2hlY2sgYHJkc19zZW5kX3htaXRgLiAqUmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gJiMzNDtMZXQmIzM5O3MgY2hlY2sgYHJkc19zZW5kX3htaXRgJiMzNDsgc2lnbmlmaWVzIGEgZGl2ZSBpbnRvIGEgc3BlY2lmaWMgZnVuY3Rpb24gb3IgbW9kdWxlIHdpdGhpbiB0aGUgUkRTIChSZWxpYWJsZSBEYXRhZ3JhbSBTb2NrZXRzKSBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yLiogSSYjMzk7bSBpbW1lZGlhdGVseSBob21pbmcgaW4gb24gdGhlIHNlbmQgdHJhbnNtaXQgZnVuY3Rpb24sIGFuZCBob3cgaXQgaGFuZGxlcyBwYWNrZXRzLiBUaGlzIHN1Z2dlc3RzIHRoZSBjb3JlIGFyZWEgb2YgY29uY2VybiBpcyBsaWtlbHkgcmVsYXRlZCB0byBkYXRhIHRyYW5zbWlzc2lvbiwgcG9zc2libHkgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MsIGVycm9yIGhhbmRsaW5nLCBvciBzcGVjaWZpYyBwcm90b2NvbCBpbnRyaWNhY2llcyByZWxhdGVkIHRvIHJlbGlhYmxlIGRhdGEgdHJhbnNmZXIuIFRoaXMgY291bGQgYmUgYSBkZWJ1Z2dpbmcgc3RlcCBvciBhbiBpbnZlc3RpZ2F0b3J5IGFjdGlvbi4gSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGF0IHRoZSBzb3VyY2UgY29kZSBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ludCByZHNfc2VuZF94bWl0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3Jkcy9zZW5kLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3Jkcy9zZW5kLmM9MTI4PXN0YXRpYyBib29sIHJkc19tcHJkc19jcDBfY2F0Y2h1cChzdHJ1Y3QgcmRzX2Nvbm5lY3Rpb24gKmNvbm4pXG4tLVxubmV0L3Jkcy9zZW5kLmMtMTg2LSAqL1xubmV0L3Jkcy9zZW5kLmM6MTg3OmludCByZHNfc2VuZF94bWl0KHN0cnVjdCByZHNfY29ubl9wYXRoICpjcClcbm5ldC9yZHMvc2VuZC5jLTE4OC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwOTEzCgkJCQkJCQlvdXRwdXQ6IDE0NAoJCQkJCQkJdGhvdWdodHM6IDIwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqCgpPa2F5LCB0aGlzIHBhdGNoIGxvb2tzIHNvbGlkLiBJIGNhbiBjb25maXJtIGl0IGFkZHJlc3NlcyByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIHRoZSBSRFMgY29ubmVjdGlvbiB0ZWFyZG93biBhbmQgcmVzZXQsIGFuZCBhbHNvIGNvcnJlY3RseSBpbml0aWFsaXplcyBhIGxpc3Qgd2l0aGluIGByZHNfc2VuZF94bWl0YC4gRnVuY3Rpb25hbGx5LCBpdCBzZWVtcyBzb3VuZCBhbmQgYWJzb2x1dGVseSB3YXJyYW50cyB0aG9yb3VnaCBmdXp6aW5nLgoKSSYjMzk7dmUgY2hlY2tlZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnM6IGBSRFNgIGFuZCBgUkRTX1RDUGAuIEp1c3QgdG8gYmUgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSB2ZXJpZnkgaWYgdGhvc2UgYXJlIHN1ZmZpY2llbnQuIFllcCwgYFJEU2AgaXMgdGhlIGZ1bmRhbWVudGFsIGNvbXBvbmVudCwgYW5kIGBSRFNfVENQYCByZXByZXNlbnRzIHRoZSBUQ1AgdHJhbnNwb3J0LCBzcGVjaWZpY2FsbHkgdXNlZCBpbiBgbmV0L3Jkcy90Y3AuY2AuIFRoZSBwYXRjaCAqZG9lcyogbW9kaWZ5IGBuZXQvcmRzL3RjcC5jYCwgd2hpY2ggaXMgb25seSBjb21waWxlZCB3aXRoIGBSRFNfVENQYCBlbmFibGVkLCBzbyB0aGF0JiMzOTtzIGdvb2QuIEFuZCB0aGUgY29yZSBSRFMgbW9kdWxlcywgYG5ldC9yZHMvY29ubmVjdGlvbi5jYCwgYG5ldC9yZHMvcmVjdi5jYCwgYW5kIGBuZXQvcmRzL3NlbmQuY2AsIGFyZSBwcm9wZXJseSBjb3ZlcmVkIGJ5IGBSRFNgIGJlaW5nIGVuYWJsZWQuCgpOb3cgSSBjYW4gcHV0IHRvZ2V0aGVyIGEgY29tcGxldGUgcmVzcG9uc2UgYmFzZWQgb24gdGhpcyByZXZpZXcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSRFMmIzM0OywKICAgICYjMzQ7UkRTX1RDUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Jkc19jb25uX3NodXRkb3duJiMzNDssCiAgICAmIzM0O3Jkc190Y3BfcmVzZXRfY2FsbGJhY2tzJiMzNDssCiAgICAmIzM0O3Jkc19zZW5kX3htaXQmIzM0OywKICAgICYjMzQ7cmRzX2luY19pbml0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgUkRTIGNvbm5lY3Rpb24gdGVhcmRvd24sIHJlc2V0LCBhbmQgdHJhbnNtaXQgbG9naWMgdG8gZml4IHJhY2UgY29uZGl0aW9ucyBieSB1c2luZyBiaXQgbG9ja3MgaW5zdGVhZCBvZiBwbGFpbiBiaXQgdGVzdHMuIEl0IGFsc28gaW5pdGlhbGl6ZXMgYSBsaXN0IGluIGByZHNfc2VuZF94bWl0YCBhbmQgYSBwb2ludGVyIGluIGByZHNfaW5jX2luaXRgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBSRFMgc3Vic3lzdGVtIHRoYXQgYXJlIHJlYWNoYWJsZSB2aWEgUkRTIHNvY2tldHMgb3ZlciBUQ1AuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JEUyYjMzQ7LAogICAgJiMzNDtSRFNfVENQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cmRzX2Nvbm5fc2h1dGRvd24mIzM0OywKICAgICYjMzQ7cmRzX3RjcF9yZXNldF9jYWxsYmFja3MmIzM0OywKICAgICYjMzQ7cmRzX3NlbmRfeG1pdCYjMzQ7LAogICAgJiMzNDtyZHNfaW5jX2luaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBSRFMgY29ubmVjdGlvbiB0ZWFyZG93biwgcmVzZXQsIGFuZCB0cmFuc21pdCBsb2dpYyB0byBmaXggcmFjZSBjb25kaXRpb25zIGJ5IHVzaW5nIGJpdCBsb2NrcyBpbnN0ZWFkIG9mIHBsYWluIGJpdCB0ZXN0cy4gSXQgYWxzbyBpbml0aWFsaXplcyBhIGxpc3QgaW4gYHJkc19zZW5kX3htaXRgIGFuZCBhIHBvaW50ZXIgaW4gYHJkc19pbmNfaW5pdGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIFJEUyBzdWJzeXN0ZW0gdGhhdCBhcmUgcmVhY2hhYmxlIHZpYSBSRFMgc29ja2V0cyBvdmVyIFRDUC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA4OjEzOjMwLjU2MDYzNTgwMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NjQ4MzQyMzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJEU1wiLFxuICAgIFwiUkRTX1RDUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJkc19jb25uX3NodXRkb3duXCIsXG4gICAgXCJyZHNfdGNwX3Jlc2V0X2NhbGxiYWNrc1wiLFxuICAgIFwicmRzX3NlbmRfeG1pdFwiLFxuICAgIFwicmRzX2luY19pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBSRFMgY29ubmVjdGlvbiB0ZWFyZG93biwgcmVzZXQsIGFuZCB0cmFuc21pdCBsb2dpYyB0byBmaXggcmFjZSBjb25kaXRpb25zIGJ5IHVzaW5nIGJpdCBsb2NrcyBpbnN0ZWFkIG9mIHBsYWluIGJpdCB0ZXN0cy4gSXQgYWxzbyBpbml0aWFsaXplcyBhIGxpc3QgaW4gYHJkc19zZW5kX3htaXRgIGFuZCBhIHBvaW50ZXIgaW4gYHJkc19pbmNfaW5pdGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIFJEUyBzdWJzeXN0ZW0gdGhhdCBhcmUgcmVhY2hhYmxlIHZpYSBSRFMgc29ja2V0cyBvdmVyIFRDUC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDg6MTM6MzAuNTYwNjQxNjMyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjA2NTA5MDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODBiNzMyNzIwYjNiZDRkMmQ5ZDNhZDBhMzY2OGZhZDA1ZDAwZjNmMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyA2IDA4OjEzOjI4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9yZHMvY29ubmVjdGlvbi5jIGIvbmV0L3Jkcy9jb25uZWN0aW9uLmNcXG5pbmRleCA3YzhhYjhlOTczZTFiLi40MDZhMDcxZWZkZDNiIDEwMDY0NFxcbi0tLSBhL25ldC9yZHMvY29ubmVjdGlvbi5jXFxuKysrIGIvbmV0L3Jkcy9jb25uZWN0aW9uLmNcXG5AQCAtNDA2LDE0ICs0MDYsMzIgQEAgdm9pZCByZHNfY29ubl9zaHV0ZG93bihzdHJ1Y3QgcmRzX2Nvbm5fcGF0aCAqY3ApXFxuIFxcdFxcdH1cXG4gXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjcC1cXHUwMDNlY3BfY21fbG9jayk7XFxuIFxcbitcXHRcXHQvKiBRdWllc2NlIHRoZSB0cmFuc21pdCBhbmQgcmVjZWl2ZS1yZWZpbGwgcGF0aHMgYnlcXG4rXFx0XFx0ICogYWNxdWlyaW5nIHRoZWlyIGJpdCBsb2Nrcywgbm90IG1lcmVseSB3YWl0aW5nIGZvclxcbitcXHRcXHQgKiB0aGVtIHRvIGJlIHJlbGVhc2VkOiB3aXRoIGEgcGxhaW4gd2FpdCwgZWl0aGVyIHBhdGhcXG4rXFx0XFx0ICogY2FuIHJlLXRha2UgaXRzIGxvY2sgdGhlIGluc3RhbnQgYWZ0ZXIgd2Ugc2FtcGxlIGl0XFxuK1xcdFxcdCAqIGNsZWFyIGFuZCB0aGVuIHJ1biBjb25jdXJyZW50bHkgd2l0aCB0aGUgdHJhbnNwb3J0XFxuK1xcdFxcdCAqIHNodXRkb3duIGFuZCB0aGUgcGF0aCByZXNldCBiZWxvdy4gIEhvbGRpbmcgYm90aFxcbitcXHRcXHQgKiBsb2NrcyBhY3Jvc3MgdGhlIHRlYXJkb3duIG1ha2VzIHRoYXQgc3RydWN0dXJhbGx5XFxuK1xcdFxcdCAqIGltcG9zc2libGUuXFxuK1xcdFxcdCAqL1xcbiBcXHRcXHR3YWl0X2V2ZW50KGNwLVxcdTAwM2VjcF93YWl0cSxcXG4tXFx0XFx0XFx0ICAgIXRlc3RfYml0KFJEU19JTl9YTUlULCBcXHUwMDI2Y3AtXFx1MDAzZWNwX2ZsYWdzKSk7XFxuK1xcdFxcdFxcdCAgICF0ZXN0X2FuZF9zZXRfYml0X2xvY2soUkRTX0lOX1hNSVQsIFxcdTAwMjZjcC1cXHUwMDNlY3BfZmxhZ3MpKTtcXG4gXFx0XFx0d2FpdF9ldmVudChjcC1cXHUwMDNlY3Bfd2FpdHEsXFxuLVxcdFxcdFxcdCAgICF0ZXN0X2JpdChSRFNfUkVDVl9SRUZJTEwsIFxcdTAwMjZjcC1cXHUwMDNlY3BfZmxhZ3MpKTtcXG4rXFx0XFx0XFx0ICAgIXRlc3RfYW5kX3NldF9iaXQoUkRTX1JFQ1ZfUkVGSUxMLCBcXHUwMDI2Y3AtXFx1MDAzZWNwX2ZsYWdzKSk7XFxuIFxcbiBcXHRcXHRjb25uLVxcdTAwM2VjX3RyYW5zLVxcdTAwM2Vjb25uX3BhdGhfc2h1dGRvd24oY3ApO1xcbiBcXHRcXHRyZHNfY29ubl9wYXRoX3Jlc2V0KGNwKTtcXG4gXFxuK1xcdFxcdC8qIHJkc19jb25uX3BhdGhfcmVzZXQoKSBhbHJlYWR5IGNsZWFyZWQgY3BfZmxhZ3MsIGJ1dFxcbitcXHRcXHQgKiByZWxlYXNlIHRoZSB0d28gbG9ja3MgZXhwbGljaXRseSBhbmQgd2FrZSBhbnkgd2FpdGVyXFxuK1xcdFxcdCAqIChlLmcuIHJkc190Y3BfcmVzZXRfY2FsbGJhY2tzKCkpIHRoYXQgc2FtcGxlZCB0aGVcXG4rXFx0XFx0ICogbG9ja3Mgd2hpbGUgd2UgaGVsZCB0aGVtLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0Y2xlYXJfYml0X3VubG9jayhSRFNfSU5fWE1JVCwgXFx1MDAyNmNwLVxcdTAwM2VjcF9mbGFncyk7XFxuK1xcdFxcdGNsZWFyX2JpdChSRFNfUkVDVl9SRUZJTEwsIFxcdTAwMjZjcC1cXHUwMDNlY3BfZmxhZ3MpO1xcbitcXHRcXHR3YWtlX3VwX2FsbChcXHUwMDI2Y3AtXFx1MDAzZWNwX3dhaXRxKTtcXG4rXFxuIFxcdFxcdGlmICghcmRzX2Nvbm5fcGF0aF90cmFuc2l0aW9uKGNwLCBSRFNfQ09OTl9ESVNDT05ORUNUSU5HLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICBSRFNfQ09OTl9ET1dOKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgIXJkc19jb25uX3BhdGhfdHJhbnNpdGlvbihjcCwgUkRTX0NPTk5fRVJST1IsXFxuZGlmZiAtLWdpdCBhL25ldC9yZHMvcmVjdi5jIGIvbmV0L3Jkcy9yZWN2LmNcXG5pbmRleCBjZjM4ODRkODc5MzE5Li5mMTUxM2RmYjI3MTY1IDEwMDY0NFxcbi0tLSBhL25ldC9yZHMvcmVjdi5jXFxuKysrIGIvbmV0L3Jkcy9yZWN2LmNcXG5AQCAtNDcsNiArNDcsNyBAQCB2b2lkIHJkc19pbmNfaW5pdChzdHJ1Y3QgcmRzX2luY29taW5nICppbmMsIHN0cnVjdCByZHNfY29ubmVjdGlvbiAqY29ubixcXG4gXFx0cmVmY291bnRfc2V0KFxcdTAwMjZpbmMtXFx1MDAzZWlfcmVmY291bnQsIDEpO1xcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2aW5jLVxcdTAwM2VpX2l0ZW0pO1xcbiBcXHRpbmMtXFx1MDAzZWlfY29ubiA9IGNvbm47XFxuK1xcdGluYy1cXHUwMDNlaV9jb25uX3BhdGggPSBOVUxMO1xcbiBcXHRpbmMtXFx1MDAzZWlfc2FkZHIgPSAqc2FkZHI7XFxuIFxcdGluYy1cXHUwMDNlaV91c2VyY29weS5yZG1hX2Nvb2tpZSA9IDA7XFxuIFxcdGluYy1cXHUwMDNlaV91c2VyY29weS5yeF90c3RhbXAgPSBrdGltZV9zZXQoMCwgMCk7XFxuZGlmZiAtLWdpdCBhL25ldC9yZHMvc2VuZC5jIGIvbmV0L3Jkcy9zZW5kLmNcXG5pbmRleCAzMDkwMjFlMGNjOWJjLi5jMjhkYzlmODIwYWYwIDEwMDY0NFxcbi0tLSBhL25ldC9yZHMvc2VuZC5jXFxuKysrIGIvbmV0L3Jkcy9zZW5kLmNcXG5AQCAtMjAwLDYgKzIwMCwxMiBAQCBpbnQgcmRzX3NlbmRfeG1pdChzdHJ1Y3QgcmRzX2Nvbm5fcGF0aCAqY3ApXFxuIHJlc3RhcnQ6XFxuIFxcdGJhdGNoX2NvdW50ID0gMDtcXG4gXFxuK1xcdC8qIFRoZSBkcm9wIHByb2Nlc3NpbmcgYWZ0ZXIgb3Zlcl9iYXRjaCByZWxpZXMgb24gdGhlIGNhbGxlZXNcXG4rXFx0ICogZW1wdHlpbmcgdG9fYmVfZHJvcHBlZCBlbnRyeSBieSBlbnRyeTsgcmUtaW5pdGlhbGl6ZSBpdCBoZXJlXFxuK1xcdCAqIHJhdGhlciB0aGFuIGRlcGVuZGluZyBvbiB0aGF0IGltcGxpY2l0IGJlaGF2aW9yLlxcbitcXHQgKi9cXG4rXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNnRvX2JlX2Ryb3BwZWQpO1xcbitcXG4gXFx0LypcXG4gXFx0ICogc2VuZG1zZyBjYWxscyBoZXJlIGFmdGVyIGhhdmluZyBxdWV1ZWQgaXRzIG1lc3NhZ2Ugb24gdGhlIHNlbmRcXG4gXFx0ICogcXVldWUuICBXZSBvbmx5IGhhdmUgb25lIHRhc2sgZmVlZGluZyB0aGUgY29ubmVjdGlvbiBhdCBhIHRpbWUuICBJZlxcbmRpZmYgLS1naXQgYS9uZXQvcmRzL3RjcC5jIGIvbmV0L3Jkcy90Y3AuY1xcbmluZGV4IGIyNjM2MzRhYzc1MGQuLjA0MmQzZmRiZGY3ZmUgMTAwNjQ0XFxuLS0tIGEvbmV0L3Jkcy90Y3AuY1xcbisrKyBiL25ldC9yZHMvdGNwLmNcXG5AQCAtMTI4LDYgKzEyOCw3IEBAIHZvaWQgcmRzX3RjcF9yZXNldF9jYWxsYmFja3Moc3RydWN0IHNvY2tldCAqc29jayxcXG4ge1xcbiBcXHRzdHJ1Y3QgcmRzX3RjcF9jb25uZWN0aW9uICp0YyA9IGNwLVxcdTAwM2VjcF90cmFuc3BvcnRfZGF0YTtcXG4gXFx0c3RydWN0IHNvY2tldCAqb3NvY2sgPSB0Yy1cXHUwMDNldF9zb2NrO1xcbitcXHRib29sIGluX3htaXRfaGVsZCA9IGZhbHNlO1xcbiBcXG4gXFx0aWYgKCFvc29jaylcXG4gXFx0XFx0Z290byBuZXdzb2NrO1xcbkBAIC0xNTMsNyArMTU0LDE0IEBAIHZvaWQgcmRzX3RjcF9yZXNldF9jYWxsYmFja3Moc3RydWN0IHNvY2tldCAqc29jayxcXG4gXFx0ICogY2Fubm90IG1hcmsgcmRzX2Nvbm5fcGF0aF91cCgpIGluIHRoZSB3aW5kb3cgYmVmb3JlIGxvY2tfc29jaygpXFxuIFxcdCAqL1xcbiBcXHRhdG9taWNfc2V0KFxcdTAwMjZjcC1cXHUwMDNlY3Bfc3RhdGUsIFJEU19DT05OX1JFU0VUVElORyk7XFxuLVxcdHdhaXRfZXZlbnQoY3AtXFx1MDAzZWNwX3dhaXRxLCAhdGVzdF9iaXQoUkRTX0lOX1hNSVQsIFxcdTAwMjZjcC1cXHUwMDNlY3BfZmxhZ3MpKTtcXG4rXFx0LyogQWNxdWlyZSB0aGUgc2VuZC1wYXRoIGxvY2sgcmF0aGVyIHRoYW4gd2FpdGluZyBmb3IgaXQgdG8gYmVcXG4rXFx0ICogcmVsZWFzZWQ6IGEgbWVyZSB3YWl0IGlzIHJhY3ksIHNpbmNlIHJkc19zZW5kX3htaXQoKSBtYXkgdGFrZVxcbitcXHQgKiB0aGUgbG9jayBhZ2FpbiByaWdodCBhZnRlciB3ZSBzYW1wbGUgaXQgY2xlYXIgYW5kIHRoZW4gcnVuXFxuK1xcdCAqIGNvbmN1cnJlbnRseSB3aXRoIHJkc19zZW5kX3BhdGhfcmVzZXQoKSBiZWxvdy5cXG4rXFx0ICovXFxuK1xcdHdhaXRfZXZlbnQoY3AtXFx1MDAzZWNwX3dhaXRxLFxcbitcXHRcXHQgICAhdGVzdF9hbmRfc2V0X2JpdF9sb2NrKFJEU19JTl9YTUlULCBcXHUwMDI2Y3AtXFx1MDAzZWNwX2ZsYWdzKSk7XFxuK1xcdGluX3htaXRfaGVsZCA9IHRydWU7XFxuIFxcdC8qIHJlc2V0IHJlY2VpdmUgc2lkZSBzdGF0ZSBmb3IgcmRzX3RjcF9kYXRhX3JlY3YoKSBmb3Igb3NvY2sgICovXFxuIFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2Y3AtXFx1MDAzZWNwX3NlbmRfdyk7XFxuIFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2Y3AtXFx1MDAzZWNwX3JlY3Zfdyk7XFxuQEAgLTE3Miw2ICsxODAsMTEgQEAgdm9pZCByZHNfdGNwX3Jlc2V0X2NhbGxiYWNrcyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxcbiBcXHRsb2NrX3NvY2soc29jay1cXHUwMDNlc2spO1xcbiBcXHRyZHNfdGNwX3NldF9jYWxsYmFja3Moc29jaywgY3ApO1xcbiBcXHRyZWxlYXNlX3NvY2soc29jay1cXHUwMDNlc2spO1xcbitcXG4rXFx0aWYgKGluX3htaXRfaGVsZCkge1xcbitcXHRcXHRjbGVhcl9iaXRfdW5sb2NrKFJEU19JTl9YTUlULCBcXHUwMDI2Y3AtXFx1MDAzZWNwX2ZsYWdzKTtcXG4rXFx0XFx0d2FrZV91cF9hbGwoXFx1MDAyNmNwLVxcdTAwM2VjcF93YWl0cSk7XFxuK1xcdH1cXG4gfVxcbiBcXG4gLyogQWRkIHRjIHRvIHJkc190Y3BfdGNfbGlzdCBhbmQgc2V0IHRjLVxcdTAwM2V0X3NvY2suIFNlZSBjb21tZW50c1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwODoxMzozMS43Njc3OTQxNzFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0ODQ0MTE3NTY4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSRFNcIixcbiAgICBcIlJEU19UQ1BcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJyZHNfY29ubl9zaHV0ZG93blwiLFxuICAgIFwicmRzX3RjcF9yZXNldF9jYWxsYmFja3NcIixcbiAgICBcInJkc19zZW5kX3htaXRcIixcbiAgICBcInJkc19pbmNfaW5pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgUkRTIGNvbm5lY3Rpb24gdGVhcmRvd24sIHJlc2V0LCBhbmQgdHJhbnNtaXQgbG9naWMgdG8gZml4IHJhY2UgY29uZGl0aW9ucyBieSB1c2luZyBiaXQgbG9ja3MgaW5zdGVhZCBvZiBwbGFpbiBiaXQgdGVzdHMuIEl0IGFsc28gaW5pdGlhbGl6ZXMgYSBsaXN0IGluIGByZHNfc2VuZF94bWl0YCBhbmQgYSBwb2ludGVyIGluIGByZHNfaW5jX2luaXRgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBSRFMgc3Vic3lzdGVtIHRoYXQgYXJlIHJlYWNoYWJsZSB2aWEgUkRTIHNvY2tldHMgb3ZlciBUQ1AuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDgwYjczMjcyMGIzYmQ0ZDJkOWQzYWQwYTM2NjhmYWQwNWQwMGYzZjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyA2IDA4OjEzOjI4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3Jkcy9jb25uZWN0aW9uLmMgYi9uZXQvcmRzL2Nvbm5lY3Rpb24uY1xuaW5kZXggN2M4YWI4ZTk3M2UxYi4uNDA2YTA3MWVmZGQzYiAxMDA2NDRcbi0tLSBhL25ldC9yZHMvY29ubmVjdGlvbi5jXG4rKysgYi9uZXQvcmRzL2Nvbm5lY3Rpb24uY1xuQEAgLTQwNiwxNCArNDA2LDMyIEBAIHZvaWQgcmRzX2Nvbm5fc2h1dGRvd24oc3RydWN0IHJkc19jb25uX3BhdGggKmNwKVxuIFx0XHR9XG4gXHRcdG11dGV4X3VubG9jayhcdTAwMjZjcC1cdTAwM2VjcF9jbV9sb2NrKTtcbiBcbitcdFx0LyogUXVpZXNjZSB0aGUgdHJhbnNtaXQgYW5kIHJlY2VpdmUtcmVmaWxsIHBhdGhzIGJ5XG4rXHRcdCAqIGFjcXVpcmluZyB0aGVpciBiaXQgbG9ja3MsIG5vdCBtZXJlbHkgd2FpdGluZyBmb3JcbitcdFx0ICogdGhlbSB0byBiZSByZWxlYXNlZDogd2l0aCBhIHBsYWluIHdhaXQsIGVpdGhlciBwYXRoXG4rXHRcdCAqIGNhbiByZS10YWtlIGl0cyBsb2NrIHRoZSBpbnN0YW50IGFmdGVyIHdlIHNhbXBsZSBpdFxuK1x0XHQgKiBjbGVhciBhbmQgdGhlbiBydW4gY29uY3VycmVudGx5IHdpdGggdGhlIHRyYW5zcG9ydFxuK1x0XHQgKiBzaHV0ZG93biBhbmQgdGhlIHBhdGggcmVzZXQgYmVsb3cuICBIb2xkaW5nIGJvdGhcbitcdFx0ICogbG9ja3MgYWNyb3NzIHRoZSB0ZWFyZG93biBtYWtlcyB0aGF0IHN0cnVjdHVyYWxseVxuK1x0XHQgKiBpbXBvc3NpYmxlLlxuK1x0XHQgKi9cbiBcdFx0d2FpdF9ldmVudChjcC1cdTAwM2VjcF93YWl0cSxcbi1cdFx0XHQgICAhdGVzdF9iaXQoUkRTX0lOX1hNSVQsIFx1MDAyNmNwLVx1MDAzZWNwX2ZsYWdzKSk7XG4rXHRcdFx0ICAgIXRlc3RfYW5kX3NldF9iaXRfbG9jayhSRFNfSU5fWE1JVCwgXHUwMDI2Y3AtXHUwMDNlY3BfZmxhZ3MpKTtcbiBcdFx0d2FpdF9ldmVudChjcC1cdTAwM2VjcF93YWl0cSxcbi1cdFx0XHQgICAhdGVzdF9iaXQoUkRTX1JFQ1ZfUkVGSUxMLCBcdTAwMjZjcC1cdTAwM2VjcF9mbGFncykpO1xuK1x0XHRcdCAgICF0ZXN0X2FuZF9zZXRfYml0KFJEU19SRUNWX1JFRklMTCwgXHUwMDI2Y3AtXHUwMDNlY3BfZmxhZ3MpKTtcbiBcbiBcdFx0Y29ubi1cdTAwM2VjX3RyYW5zLVx1MDAzZWNvbm5fcGF0aF9zaHV0ZG93bihjcCk7XG4gXHRcdHJkc19jb25uX3BhdGhfcmVzZXQoY3ApO1xuIFxuK1x0XHQvKiByZHNfY29ubl9wYXRoX3Jlc2V0KCkgYWxyZWFkeSBjbGVhcmVkIGNwX2ZsYWdzLCBidXRcbitcdFx0ICogcmVsZWFzZSB0aGUgdHdvIGxvY2tzIGV4cGxpY2l0bHkgYW5kIHdha2UgYW55IHdhaXRlclxuK1x0XHQgKiAoZS5nLiByZHNfdGNwX3Jlc2V0X2NhbGxiYWNrcygpKSB0aGF0IHNhbXBsZWQgdGhlXG4rXHRcdCAqIGxvY2tzIHdoaWxlIHdlIGhlbGQgdGhlbS5cbitcdFx0ICovXG4rXHRcdGNsZWFyX2JpdF91bmxvY2soUkRTX0lOX1hNSVQsIFx1MDAyNmNwLVx1MDAzZWNwX2ZsYWdzKTtcbitcdFx0Y2xlYXJfYml0KFJEU19SRUNWX1JFRklMTCwgXHUwMDI2Y3AtXHUwMDNlY3BfZmxhZ3MpO1xuK1x0XHR3YWtlX3VwX2FsbChcdTAwMjZjcC1cdTAwM2VjcF93YWl0cSk7XG4rXG4gXHRcdGlmICghcmRzX2Nvbm5fcGF0aF90cmFuc2l0aW9uKGNwLCBSRFNfQ09OTl9ESVNDT05ORUNUSU5HLFxuIFx0XHRcdFx0XHQgICAgICBSRFNfQ09OTl9ET1dOKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICFyZHNfY29ubl9wYXRoX3RyYW5zaXRpb24oY3AsIFJEU19DT05OX0VSUk9SLFxuZGlmZiAtLWdpdCBhL25ldC9yZHMvcmVjdi5jIGIvbmV0L3Jkcy9yZWN2LmNcbmluZGV4IGNmMzg4NGQ4NzkzMTkuLmYxNTEzZGZiMjcxNjUgMTAwNjQ0XG4tLS0gYS9uZXQvcmRzL3JlY3YuY1xuKysrIGIvbmV0L3Jkcy9yZWN2LmNcbkBAIC00Nyw2ICs0Nyw3IEBAIHZvaWQgcmRzX2luY19pbml0KHN0cnVjdCByZHNfaW5jb21pbmcgKmluYywgc3RydWN0IHJkc19jb25uZWN0aW9uICpjb25uLFxuIFx0cmVmY291bnRfc2V0KFx1MDAyNmluYy1cdTAwM2VpX3JlZmNvdW50LCAxKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmluYy1cdTAwM2VpX2l0ZW0pO1xuIFx0aW5jLVx1MDAzZWlfY29ubiA9IGNvbm47XG4rXHRpbmMtXHUwMDNlaV9jb25uX3BhdGggPSBOVUxMO1xuIFx0aW5jLVx1MDAzZWlfc2FkZHIgPSAqc2FkZHI7XG4gXHRpbmMtXHUwMDNlaV91c2VyY29weS5yZG1hX2Nvb2tpZSA9IDA7XG4gXHRpbmMtXHUwMDNlaV91c2VyY29weS5yeF90c3RhbXAgPSBrdGltZV9zZXQoMCwgMCk7XG5kaWZmIC0tZ2l0IGEvbmV0L3Jkcy9zZW5kLmMgYi9uZXQvcmRzL3NlbmQuY1xuaW5kZXggMzA5MDIxZTBjYzliYy4uYzI4ZGM5ZjgyMGFmMCAxMDA2NDRcbi0tLSBhL25ldC9yZHMvc2VuZC5jXG4rKysgYi9uZXQvcmRzL3NlbmQuY1xuQEAgLTIwMCw2ICsyMDAsMTIgQEAgaW50IHJkc19zZW5kX3htaXQoc3RydWN0IHJkc19jb25uX3BhdGggKmNwKVxuIHJlc3RhcnQ6XG4gXHRiYXRjaF9jb3VudCA9IDA7XG4gXG4rXHQvKiBUaGUgZHJvcCBwcm9jZXNzaW5nIGFmdGVyIG92ZXJfYmF0Y2ggcmVsaWVzIG9uIHRoZSBjYWxsZWVzXG4rXHQgKiBlbXB0eWluZyB0b19iZV9kcm9wcGVkIGVudHJ5IGJ5IGVudHJ5OyByZS1pbml0aWFsaXplIGl0IGhlcmVcbitcdCAqIHJhdGhlciB0aGFuIGRlcGVuZGluZyBvbiB0aGF0IGltcGxpY2l0IGJlaGF2aW9yLlxuK1x0ICovXG4rXHRJTklUX0xJU1RfSEVBRChcdTAwMjZ0b19iZV9kcm9wcGVkKTtcbitcbiBcdC8qXG4gXHQgKiBzZW5kbXNnIGNhbGxzIGhlcmUgYWZ0ZXIgaGF2aW5nIHF1ZXVlZCBpdHMgbWVzc2FnZSBvbiB0aGUgc2VuZFxuIFx0ICogcXVldWUuICBXZSBvbmx5IGhhdmUgb25lIHRhc2sgZmVlZGluZyB0aGUgY29ubmVjdGlvbiBhdCBhIHRpbWUuICBJZlxuZGlmZiAtLWdpdCBhL25ldC9yZHMvdGNwLmMgYi9uZXQvcmRzL3RjcC5jXG5pbmRleCBiMjYzNjM0YWM3NTBkLi4wNDJkM2ZkYmRmN2ZlIDEwMDY0NFxuLS0tIGEvbmV0L3Jkcy90Y3AuY1xuKysrIGIvbmV0L3Jkcy90Y3AuY1xuQEAgLTEyOCw2ICsxMjgsNyBAQCB2b2lkIHJkc190Y3BfcmVzZXRfY2FsbGJhY2tzKHN0cnVjdCBzb2NrZXQgKnNvY2ssXG4ge1xuIFx0c3RydWN0IHJkc190Y3BfY29ubmVjdGlvbiAqdGMgPSBjcC1cdTAwM2VjcF90cmFuc3BvcnRfZGF0YTtcbiBcdHN0cnVjdCBzb2NrZXQgKm9zb2NrID0gdGMtXHUwMDNldF9zb2NrO1xuK1x0Ym9vbCBpbl94bWl0X2hlbGQgPSBmYWxzZTtcbiBcbiBcdGlmICghb3NvY2spXG4gXHRcdGdvdG8gbmV3c29jaztcbkBAIC0xNTMsNyArMTU0LDE0IEBAIHZvaWQgcmRzX3RjcF9yZXNldF9jYWxsYmFja3Moc3RydWN0IHNvY2tldCAqc29jayxcbiBcdCAqIGNhbm5vdCBtYXJrIHJkc19jb25uX3BhdGhfdXAoKSBpbiB0aGUgd2luZG93IGJlZm9yZSBsb2NrX3NvY2soKVxuIFx0ICovXG4gXHRhdG9taWNfc2V0KFx1MDAyNmNwLVx1MDAzZWNwX3N0YXRlLCBSRFNfQ09OTl9SRVNFVFRJTkcpO1xuLVx0d2FpdF9ldmVudChjcC1cdTAwM2VjcF93YWl0cSwgIXRlc3RfYml0KFJEU19JTl9YTUlULCBcdTAwMjZjcC1cdTAwM2VjcF9mbGFncykpO1xuK1x0LyogQWNxdWlyZSB0aGUgc2VuZC1wYXRoIGxvY2sgcmF0aGVyIHRoYW4gd2FpdGluZyBmb3IgaXQgdG8gYmVcbitcdCAqIHJlbGVhc2VkOiBhIG1lcmUgd2FpdCBpcyByYWN5LCBzaW5jZSByZHNfc2VuZF94bWl0KCkgbWF5IHRha2VcbitcdCAqIHRoZSBsb2NrIGFnYWluIHJpZ2h0IGFmdGVyIHdlIHNhbXBsZSBpdCBjbGVhciBhbmQgdGhlbiBydW5cbitcdCAqIGNvbmN1cnJlbnRseSB3aXRoIHJkc19zZW5kX3BhdGhfcmVzZXQoKSBiZWxvdy5cbitcdCAqL1xuK1x0d2FpdF9ldmVudChjcC1cdTAwM2VjcF93YWl0cSxcbitcdFx0ICAgIXRlc3RfYW5kX3NldF9iaXRfbG9jayhSRFNfSU5fWE1JVCwgXHUwMDI2Y3AtXHUwMDNlY3BfZmxhZ3MpKTtcbitcdGluX3htaXRfaGVsZCA9IHRydWU7XG4gXHQvKiByZXNldCByZWNlaXZlIHNpZGUgc3RhdGUgZm9yIHJkc190Y3BfZGF0YV9yZWN2KCkgZm9yIG9zb2NrICAqL1xuIFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmNwLVx1MDAzZWNwX3NlbmRfdyk7XG4gXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2Y3AtXHUwMDNlY3BfcmVjdl93KTtcbkBAIC0xNzIsNiArMTgwLDExIEBAIHZvaWQgcmRzX3RjcF9yZXNldF9jYWxsYmFja3Moc3RydWN0IHNvY2tldCAqc29jayxcbiBcdGxvY2tfc29jayhzb2NrLVx1MDAzZXNrKTtcbiBcdHJkc190Y3Bfc2V0X2NhbGxiYWNrcyhzb2NrLCBjcCk7XG4gXHRyZWxlYXNlX3NvY2soc29jay1cdTAwM2Vzayk7XG4rXG4rXHRpZiAoaW5feG1pdF9oZWxkKSB7XG4rXHRcdGNsZWFyX2JpdF91bmxvY2soUkRTX0lOX1hNSVQsIFx1MDAyNmNwLVx1MDAzZWNwX2ZsYWdzKTtcbitcdFx0d2FrZV91cF9hbGwoXHUwMDI2Y3AtXHUwMDNlY3Bfd2FpdHEpO1xuK1x0fVxuIH1cbiBcbiAvKiBBZGQgdGMgdG8gcmRzX3RjcF90Y19saXN0IGFuZCBzZXQgdGMtXHUwMDNldF9zb2NrLiBTZWUgY29tbWVudHNcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA4OjEzOjMxLjc2Nzc5NTY4MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMDU0MzI4NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0d29yayBTdGFjayBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBhdHRlbnRpb24gaXMgZHJhd24gdG8gdGhlIG1vZGlmaWNhdGlvbnMgYWNyb3NzIHRoZSBSRFMgc3Vic3lzdGVtIOKAkyBgY29ubmVjdGlvbi5jYCwgYHJlY3YuY2AsIGBzZW5kLmNgLCBhbmQgYHRjcC5jYC4gSXQgc2VlbXMgd2UncmUgZGVhbGluZyB3aXRoIGEgY3JpdGljYWwgdGhyZWFkaW5nIGlzc3VlIHN1cnJvdW5kaW5nIHRoZSBoYW5kbGluZyBvZiB0aGUgYFJEU19JTl9YTUlUYCBhbmQgYFJEU19SRUNWX1JFRklMTGAgZmxhZ3Mgd2l0aGluIGByZHNfY29ubl9zaHV0ZG93bmAgYW5kIGByZHNfdGNwX3Jlc2V0X2NhbGxiYWNrc2AuIFRoZSB1c2Ugb2YgYHRlc3RfYW5kX3NldF9iaXRfbG9ja2AgYW5kIGB0ZXN0X2FuZF9zZXRfYml0YCBpbnN0ZWFkIG9mIHRoZSBtb3JlIGNvbW1vbiBgdGVzdF9iaXRgIGluIHRoZXNlIGZ1bmN0aW9ucyBpcyBhIGNsZWFyIGluZGljYXRpb24gdGhhdCByYWNlIGNvbmRpdGlvbnMgd2VyZSBwcmVzZW50LCBhbmQgdGhpcyBwYXRjaCBhaW1zIHRvIGVsaW1pbmF0ZSB0aGVtLiBHb29kLCB0aGF0J3MgdGhlIHJpZ2h0IGFwcHJvYWNoLlxuXG5JIGFsc28gbm90aWNlIGNoYW5nZXMgaW4gdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBgdG9fYmVfZHJvcHBlZGAgbGlzdCB3aXRoaW4gYHJkc19zZW5kX3htaXRgIGFuZCB0aGUgc2V0dGluZyBvZiBgaW5jLVx1MDAzZWlfY29ubl9wYXRoID0gTlVMTGAgaW4gYHJkc19pbmNfaW5pdGAuIFRoZXNlIGFyZSBsaWtlbHkgcmVsYXRlZCB0byBjb25uZWN0aW9uIHRlYXJkb3duIGFuZCBjbGVhbnVwLCB3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgZm9jdXMgb24gc2h1dGRvd24uXG5cbkJlZm9yZSBJIGRpZyBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIGNvZGUsIEknbSBnb2luZyB0byBydW4gYSBxdWljayBgZ3JlcGAgdG8gdmVyaWZ5IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXNzb2NpYXRlZCB3aXRoIFJEUy4gSXQncyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgc3lzdGVtIGlzIGNvbmZpZ3VyZWQgdG8gcHJvcGVybHkgaW50ZXJwcmV0IHRoZSBjaGFuZ2VzLiBUaGlzIHdpbGwgYWxzbyBnaXZlIG1lIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB3aGVyZSBSRFMgaXMgdXNlZCBhbmQgaWYgdGhlcmUgYXJlIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzIHRoYXQgbmVlZCB0byBiZSBjb25zaWRlcmVkLiBBbHJpZ2h0LCBsZXQncyBzZWUgd2hhdCB0aGUgY29uZmlndXJhdGlvbiByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTM3LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDg6MTM6MzYuODczMjMwNzU1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0Mjg4MDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSRFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Jkcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9yZHMvS2NvbmZpZy0yLVxcbm5ldC9yZHMvS2NvbmZpZzozOmNvbmZpZyBSRFNcXG5uZXQvcmRzL0tjb25maWctNC1cXHR0cmlzdGF0ZSBcXFwiVGhlIFJlbGlhYmxlIERhdGFncmFtIFNvY2tldHMgUHJvdG9jb2xcXFwiXFxuLS1cXG5uZXQvcmRzL0tjb25maWctOS1cXG5uZXQvcmRzL0tjb25maWc6MTA6Y29uZmlnIFJEU19SRE1BXFxubmV0L3Jkcy9LY29uZmlnLTExLVxcdHRyaXN0YXRlIFxcXCJSRFMgb3ZlciBJbmZpbmliYW5kXFxcIlxcbi0tXFxubmV0L3Jkcy9LY29uZmlnLTE2LVxcbm5ldC9yZHMvS2NvbmZpZzoxNzpjb25maWcgUkRTX1RDUFxcbm5ldC9yZHMvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiUkRTIG92ZXIgVENQXFxcIlxcbi0tXFxubmV0L3Jkcy9LY29uZmlnLTI0LVxcbm5ldC9yZHMvS2NvbmZpZzoyNTpjb25maWcgUkRTX0RFQlVHXFxubmV0L3Jkcy9LY29uZmlnLTI2LVxcdGJvb2wgXFxcIlJEUyBkZWJ1Z2dpbmcgbWVzc2FnZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA4OjEzOjM2LjkxNzUyNTQ3MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzMDkzNzMzNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBSRFMgRnV6emluZyBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYFJEU2AgYW5kIGBSRFNfVENQYCBjb25maWd1cmF0aW9uLCBhbmQgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgdGhlIGtleSBtb2RpZmllZCBmdW5jdGlvbnMgZm9yIHBvdGVudGlhbCBmdXp6aW5nIHRhcmdldHMuIE15IGV5ZXMgYXJlIGRyYXduIHRvIGByZHNfY29ubl9zaHV0ZG93bmAsIGByZHNfaW5jX2luaXRgLCBgcmRzX3NlbmRfeG1pdGAsIGFuZCBgcmRzX3RjcF9yZXNldF9jYWxsYmFja3NgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciBjYWxsIHBhdGhzLlxuXG5gcmRzX2Nvbm5fc2h1dGRvd25gIGlzIGNsZWFybHkgdGllZCB0byBjb25uZWN0aW9uIGRlc3RydWN0aW9uIGFuZCBkcm9wcGluZywgYXBwZWFyaW5nIHdpdGhpbiBgcmRzX2Nvbm5fZGVzdHJveWAgYW5kIGByZHNfY29ubl9kcm9wYC4gVGhhdOKAmXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGNvbm5lY3Rpb24gbGlmZWN5Y2xlIHZ1bG5lcmFiaWxpdGllcy4gYHJkc19zZW5kX3htaXRgIGxvb2tzIGludGVyZXN0aW5nOyBpdOKAmXMgaW52b2tlZCBieSBgcmRzX3NlbmRtc2dgIGFuZCB3b3JrZXIgdGhyZWFkcyDigJMgaW5kaWNhdGluZyBpdOKAmXMgaW52b2x2ZWQgaW4gZGF0YSB0cmFuc21pc3Npb24sIHNvIEkgZGVmaW5pdGVseSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yLiBUaGVuIGByZHNfdGNwX3Jlc2V0X2NhbGxiYWNrc2AgaXMgY2FsbGVkIGR1cmluZyBUQ1AgY29ubmVjdGlvbiBhY2NlcHRhbmNlIChgcmRzX3RjcF9hY2NlcHRfb25lYCkgb3IgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IChgcmRzX3RjcF9jb25uX3BhdGhfY29ubmVjdGApLCBoaWdobGlnaHRpbmcgcG9zc2libGUgdnVsbmVyYWJpbGl0aWVzIGluIFRDUC9SRFMgaW50ZXJhY3Rpb24uXG5cbk5vdywgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyBmb3IgZnV6emluZy4gYHJkc19zZW5kbXNnYCBhbmQgYHJkc19yZWN2bXNnYCBqdW1wIG91dCBhcyBvYnZpb3VzIGNhbmRpZGF0ZXM7IHRoZXkgaGFuZGxlIHNlbmQgYW5kIHJlY2VpdmUgb3BlcmF0aW9ucywgbWFraW5nIHRoZW0gcHJpbWUgdGFyZ2V0cy4gYHJkc19iaW5kYCBhbmQgYHJkc19jb25uZWN0YCBhcmUgdGhlIHNvY2tldCBzZXR1cCBmdW5jdGlvbnMsIGFuZCBzaG91bGQgZGVmaW5pdGVseSBiZSBleGFtaW5lZC4gV2hpbGUgYHJkc190Y3BfYWNjZXB0X29uZWAgaXMgaW50ZXJuYWwsIGl0J3MgdHJpZ2dlcmVkIGJ5IGluY29taW5nIFRDUCBjb25uZWN0aW9ucyB0byB0aGUgUkRTIHBvcnQsIHNvIGl0J3MgYSBjcml0aWNhbCBwb2ludCB0byBjb25zaWRlciwgZXNwZWNpYWxseSBnaXZlbiB0aGUgZHVhbCBuYXR1cmUgb2YgUkRTL1RDUC5cblxuRmluYWxseSwgSSBuZWVkIHRvIGNoZWNrIGBuZXQvcmRzL2FmX3Jkcy5jYCB0byBsb29rIGF0IHNvY2tldCBvcGVyYXRpb25zLiBUaGlzIHdpbGwgZ2l2ZSBtZSB0aGUgYmVzdCBpbnNpZ2h0IGludG8gUkRTIHNvY2tldCBiZWhhdmlvci4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIFJEUyBhbmQgVENQIHRvIGJlIHN1cmUgSSBmaW5kIHRoZSBtb3JlIGludGVyZXN0aW5nIGZsYXdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjgzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA4OjEzOjQyLjIyNjkwMTE5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNzcxNjg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCBwcm90b19vcHMgcmRzX3Byb3RvX29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvcmRzL2FmX3Jkcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9yZHMvYWZfcmRzLmM9NjQwPXN0YXRpYyBzdHJ1Y3QgcHJvdG8gcmRzX3Byb3RvID0ge1xcbi0tXFxubmV0L3Jkcy9hZl9yZHMuYy02NDUtXFxubmV0L3Jkcy9hZl9yZHMuYzo2NDY6c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcmRzX3Byb3RvX29wcyA9IHtcXG5uZXQvcmRzL2FmX3Jkcy5jLTY0Ny1cXHQuZmFtaWx5ID1cXHRBRl9SRFMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA4OjEzOjQyLjI3MDY3NzM3N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDE0NDY4NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIGByZHNfcHJvdG9fb3BzYCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdGFrZSBhIHBlZWsgYXQgdGhlIGNvbnRlbnRzIG9mIGByZHNfcHJvdG9fb3BzYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmRhbWVudGFsIG9wZXJhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgc3RydWN0dXJlLiBUaGlzIGlzIGxpa2VseSB0aGUgaGVhcnQgb2YgaG93IHRoaXMgbmV0d29yayBwcm90b2NvbCwgd2hhdGV2ZXIgaXQgaXMsIGludGVyYWN0cyBhdCBhIGxvdyBsZXZlbC4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgdGhhdCB0aGlzIHdpbGwgZGVmaW5lIHRoZSBjcnVjaWFsIGZ1bmN0aW9ucyBsaWtlIGBjb25uZWN0YCwgYHNlbmRgLCBgcmVjZWl2ZWAsIGBkaXNjb25uZWN0YCwgYW5kIHBvc3NpYmx5IGVycm9yIGhhbmRsaW5nIHJvdXRpbmVzLiBJJ20ga2VlbiB0byBzZWUgdGhlIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb24gc2lnbmF0dXJlcyBpbnZvbHZlZDsgaXQgd2lsbCBiZSBhIGdvb2QgaW5kaWNhdG9yIG9mIGl0cyBkZXNpZ24gYW5kIHBlcmZvcm1hbmNlIGdvYWxzLiBJcyBpdCBvcHRpbWl6ZWQgZm9yIGxvdyBsYXRlbmN5LCBoaWdoIHRocm91Z2hwdXQsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBBIHF1aWNrIGdsYW5jZSB3aWxsIGdpdmUgbWUgY2x1ZXMgYWJvdXQgdGhlIGV4cGVjdGVkIHdvcmsgZmxvdyBhbmQgc3RhdGUgbWFuYWdlbWVudC4gSSdtIGhvcGluZyBpdCdzIHdlbGwtZG9jdW1lbnRlZCBvciBhdCBsZWFzdCB1c2VzIGRlc2NyaXB0aXZlIG5hbWVzISBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDc3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDg6MTM6NDYuMDEyMTI2MDY0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MTU5MTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJkc19wcm90b19vcHMgPSBcXFxce1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvcmRzL2FmX3Jkcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9yZHMvYWZfcmRzLmM9NjQwPXN0YXRpYyBzdHJ1Y3QgcHJvdG8gcmRzX3Byb3RvID0ge1xcbi0tXFxubmV0L3Jkcy9hZl9yZHMuYy02NDUtXFxubmV0L3Jkcy9hZl9yZHMuYzo2NDY6c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcmRzX3Byb3RvX29wcyA9IHtcXG5uZXQvcmRzL2FmX3Jkcy5jLTY0Ny1cXHQuZmFtaWx5ID1cXHRBRl9SRFMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA4OjEzOjQ2LjA2MDI4OTU0MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4ODI3Mzk5NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gYGFmX3Jkcy5jYCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJ20gZ29pbmcgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBgbmV0L3Jkcy9hZl9yZHMuY2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJJ20gZm9jdXNpbmcgbXkgYXR0ZW50aW9uIGFyb3VuZCBsaW5lIDY0Ni4gSSBrbm93IHRoaXMgY29kZSBiYXNlIHByZXR0eSB3ZWxsLCBzbyBteSBpbnR1aXRpb24gdGVsbHMgbWUgc29tZXRoaW5nIGludGVyZXN0aW5nIGlzIGhhcHBlbmluZyB0aGVyZSwgcHJvYmFibHkgcmVsYXRlZCB0b+KApiB3ZWxsLCB0aGF0J3Mgd2hhdCBJIG5lZWQgdG8gZmluZCBvdXQsIGlzbid0IGl0PyBMZXQgbWUganVzdCBwdWxsIHRoYXQgZmlsZSB1cCBhbmQgZ2V0IHNpdHVhdGVkLiBJIGV4cGVjdCB0aGlzIHNlY3Rpb24gdG8gYmUgYWJvdXQuLi4gW0kgbWVudGFsbHkgc3RhcnQgaHlwb3RoZXNpemluZyBiYXNlZCBvbiBteSBleGlzdGluZyBrbm93bGVkZ2Ugb2YgdGhlIFJEUyBwcm90b2NvbCBhbmQgZ2VuZXJhbCBuZXR3b3JraW5nIHN0YWNrLCBhbnRpY2lwYXRpbmcgd2hhdCBJJ20gbGlrZWx5IHRvIGVuY291bnRlciBvbiBvciBhcm91bmQgdGhhdCBsaW5lXS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ1NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA4OjEzOjQ4Ljk0MzAzMTk3M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTgwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvcmRzL2FmX3Jkcy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY0MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY0MDpcXHRzdGF0aWMgc3RydWN0IHByb3RvIHJkc19wcm90byA9IHtcXG4gNjQxOlxcdFxcdC5uYW1lXFx0ICA9IFxcXCJSRFNcXFwiLFxcbiA2NDI6XFx0XFx0Lm93bmVyXFx0ICA9IFRISVNfTU9EVUxFLFxcbiA2NDM6XFx0XFx0Lm9ial9zaXplID0gc2l6ZW9mKHN0cnVjdCByZHNfc29jayksXFxuIDY0NDpcXHR9O1xcbiA2NDU6XFx0XFxuIDY0NjpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyByZHNfcHJvdG9fb3BzID0ge1xcbiA2NDc6XFx0XFx0LmZhbWlseSA9XFx0QUZfUkRTLFxcbiA2NDg6XFx0XFx0Lm93bmVyID1cXHRUSElTX01PRFVMRSxcXG4gNjQ5OlxcdFxcdC5yZWxlYXNlID1cXHRyZHNfcmVsZWFzZSxcXG4gNjUwOlxcdFxcdC5iaW5kID1cXHRcXHRyZHNfYmluZCxcXG4gNjUxOlxcdFxcdC5jb25uZWN0ID1cXHRyZHNfY29ubmVjdCxcXG4gNjUyOlxcdFxcdC5zb2NrZXRwYWlyID1cXHRzb2NrX25vX3NvY2tldHBhaXIsXFxuIDY1MzpcXHRcXHQuYWNjZXB0ID1cXHRzb2NrX25vX2FjY2VwdCxcXG4gNjU0OlxcdFxcdC5nZXRuYW1lID1cXHRyZHNfZ2V0bmFtZSxcXG4gNjU1OlxcdFxcdC5wb2xsID1cXHRcXHRyZHNfcG9sbCxcXG4gNjU2OlxcdFxcdC5pb2N0bCA9XFx0cmRzX2lvY3RsLFxcbiA2NTc6XFx0XFx0Lmxpc3RlbiA9XFx0c29ja19ub19saXN0ZW4sXFxuIDY1ODpcXHRcXHQuc2h1dGRvd24gPVxcdHNvY2tfbm9fc2h1dGRvd24sXFxuIDY1OTpcXHRcXHQuc2V0c29ja29wdCA9XFx0cmRzX3NldHNvY2tvcHQsXFxuIDY2MDpcXHRcXHQuZ2V0c29ja29wdF9pdGVyID1cXHRyZHNfZ2V0c29ja29wdCxcXG4gNjYxOlxcdFxcdC5zZW5kbXNnID1cXHRyZHNfc2VuZG1zZyxcXG4gNjYyOlxcdFxcdC5yZWN2bXNnID1cXHRyZHNfcmVjdm1zZyxcXG4gNjYzOlxcdFxcdC5tbWFwID1cXHRcXHRzb2NrX25vX21tYXAsXFxuIDY2NDpcXHR9O1xcbiA2NjU6XFx0XFxuIDY2NjpcXHRzdGF0aWMgdm9pZCByZHNfc29ja19kZXN0cnVjdChzdHJ1Y3Qgc29jayAqc2spXFxuIDY2NzpcXHR7XFxuIDY2ODpcXHRcXHRzdHJ1Y3QgcmRzX3NvY2sgKnJzID0gcmRzX3NrX3RvX3JzKHNrKTtcXG4gNjY5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwODoxMzo0OC45NDMxMTQ4MDNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMwNTgxMTQwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgZnVuY3Rpb25zLCBwdXR0aW5nIG15c2VsZiBpbiB0aGUgZXhwZXJ0J3Mgc2hvZXM6XG5cbioqQW5hbHl6aW5nIFJEUyBGdW5jdGlvbiBDYWxsIFBhdGhzKipcblxuUmlnaHQsIGxldCBtZSBicmVhayB0aGlzIGRvd24uIE15IHByaW1hcnkgY29uY2VybiBoZXJlIGlzIHVuZGVyc3RhbmRpbmcgdGhlIGtleSBjb25uZWN0aW9uIGFuZCBzZW5kL3JlY2VpdmUgcGF0aHMsIGFuZCBob3cgdGhleSBpbnRlcmFjdC4gVGhlIGxpc3Qgb2YgbW9kaWZpZWQgZnVuY3Rpb25zIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTGV0J3Mgc2VlLi4uXG5cbmByZHNfY29ubl9zaHV0ZG93bmAgaXMgZGVmaW5pdGVseSBpbnRlcmVzdGluZy4gVGhlIHRleHQgc2F5cyBpdCdzIGNhbGxlZCBmcm9tIGJvdGggYHJkc19jb25uX2Rlc3Ryb3lgIGFuZCBgcmRzX2Nvbm5fZHJvcGAuIFRoYXQgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgaXQgaGFuZGxlcyBhIGdyYWNlZnVsIG9yIGZvcmNlZCB0ZXJtaW5hdGlvbiBvZiBhbiBSRFMgY29ubmVjdGlvbi4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRob3NlIGNhbGxpbmcgZnVuY3Rpb25zIHRvIGRldGVybWluZSB0aGUgZXhhY3Qgc2NlbmFyaW9zIHRyaWdnZXJpbmcgc2h1dGRvd24uIGByZHNfY29ubl9kZXN0cm95YCBpbXBsaWVzIGEgc3RhbmRhcmQgY2xlYW51cCwgd2hpbGUgYHJkc19jb25uX2Ryb3BgIGxpa2VseSBzdWdnZXN0cyBhbiBlcnJvciBvciBleHBsaWNpdCBkaXNjb25uZWN0LiBJJ2xsIGJldCBpdCBoYW5kbGVzIHJlbGVhc2luZyByZXNvdXJjZXMgYW5kIHNlbmRpbmcgYXBwcm9wcmlhdGUgc2lnbmFsaW5nLCBwb3RlbnRpYWxseSBjbG9zaW5nIHNvY2tldHMsIGV0Yy5cblxuTm93LCBgcmRzX3NlbmRfeG1pdGAgaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBleWUgYXMgYSBwb3RlbnRpYWwgYm90dGxlbmVjayBvciBjcml0aWNhbCBwYXRoIGZvciBkYXRhIHRyYW5zbWlzc2lvbi4gVGhlIHRleHQgbm90ZXMgaXQncyBjYWxsZWQgZnJvbSBgcmRzX3NlbmRtc2dgLiBPa2F5LCBJIGV4cGVjdGVkIHRoYXQuIEJ1dCB0aGUgYWRkaXRpb24gb2YgXCJ2aWEgYHJkc19zZW5kX3htaXRgIGRpcmVjdGx5PyBMZXQncyBjaGVja1wiIGlzIGNydWNpYWwuIFRoaXMgbWVhbnMgSSBuZWVkIHRvICpjb25maXJtKiB0aGUgZXhhY3QgY2FsbCBjaGFpbi4gV2hpbGUgdGhlIHRleHQgaW1wbGllcyBpdCBpcywgSSBjYW4ndCB0YWtlIGFueXRoaW5nIGZvciBncmFudGVkLiBUaGVyZSBtaWdodCBiZSBhbiBpbmRpcmVjdCBwYXRoIG9yIGFkZGl0aW9uYWwgbGF5ZXJzIG9mIGFic3RyYWN0aW9uIHRvIGNvbnNpZGVyLiBVbmRlcnN0YW5kaW5nIGlmIGByZHNfc2VuZG1zZ2AgZGlyZWN0bHkgY2FsbHMgaXQsIG9yIGlmIHRoZXJlJ3MgYSB3cmFwcGVyLCBpcyBlc3NlbnRpYWwgZm9yIHBlcmZvcm1hbmNlIGFuYWx5c2lzIGFuZCBkZWJ1Z2dpbmcgc2VuZC1wYXRoIGlzc3Vlcy4gQXJlIHRoZXJlIGFueSBxdWV1ZWluZyBvciBmbG93IGNvbnRyb2wgc3RlcHMgaW4gYmV0d2Vlbj8gSSdsbCBuZWVkIHRvIGNhcmVmdWxseSBleGFtaW5lIHRoZSBjb2RlLlxuXG5UaGUgaW5jbHVzaW9uIG9mIGByZHNfdGNwX3Jlc2V0X2NhbGxiYWNrc2AgaXMgYWxzbyB3b3J0aCBhIGxvb2suIFRoZSBwcmVzZW5jZSBvZiBUQ1Agc3VnZ2VzdHMgc29tZSB0eXBlIG9mIHNvY2tldCBpbnRlcmFjdGlvbiBpcyBpbnZvbHZlZC4gSSdsbCBiZSBpbnRlcmVzdGVkIGluIHdoYXQgdGhlIGBjYWxsYmFja3NgIGRvLCBhbmQgd2hhdCB0eXBlIG9mIGV2ZW50cyB0aGV5IGFyZSBoYW5kbGluZy5cblxuT3ZlcmFsbCwgdGhpcyBvdXRsaW5lcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEknbGwgbm93IGRpZyBpbnRvIGVhY2ggb2YgdGhlc2UgZnVuY3Rpb25zIHRvIHVuZGVyc3RhbmQgdGhlIG1lY2hhbmljcywgdGhlIHJlc291cmNlIHVzYWdlLCBhbmQgdGhlIHRocmVhZCBzYWZldHkgY29uc2lkZXJhdGlvbnMuIFRoZSBjYWxsIGdyYXBoIGZvciB0aGlzIG1vZHVsZSBpcyBjbGVhcmx5IGdvaW5nIHRvIGJlIGltcG9ydGFudCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBkYXRhIGZsb3dzIGFuZCBwb3RlbnRpYWwgY29udGVudGlvbiBwb2ludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNjcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwODoxMzo1NC4yNDg5Mjg5NzJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNjEyMTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJkc19zZW5kX3htaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Jkcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3Jkcy9jb25nLmM9MjE3PXZvaWQgcmRzX2NvbmdfcXVldWVfdXBkYXRlcyhzdHJ1Y3QgcmRzX2NvbmdfbWFwICptYXApXFxuLS1cXG5uZXQvcmRzL2NvbmcuYy0yMzAtXFx0XFx0XFx0cmRzX3N0YXRzX2luYyhzX2NvbmdfdXBkYXRlX3F1ZXVlZCk7XFxubmV0L3Jkcy9jb25nLmM6MjMxOlxcdFxcdFxcdC8qIFdlIGNhbm5vdCBpbmxpbmUgdGhlIGNhbGwgdG8gcmRzX3NlbmRfeG1pdCgpIGhlcmVcXG5uZXQvcmRzL2NvbmcuYy0yMzItXFx0XFx0XFx0ICogZm9yIHR3byByZWFzb25zIChib3RoIHBlcnRhaW5pbmcgdG8gYSBUQ1AgdHJhbnNwb3J0KTpcXG4tLVxcbm5ldC9yZHMvaWJfY20uYz0yODI9c3RhdGljIHZvaWQgcmRzX2liX3Rhc2tsZXRfZm5fc2VuZCh1bnNpZ25lZCBsb25nIGRhdGEpXFxuLS1cXG5uZXQvcmRzL2liX2NtLmMtMjk5LVxcdCAgICB0ZXN0X2JpdCgwLCBcXHUwMDI2Y29ubi1cXHUwMDNlY19tYXBfcXVldWVkKSkpXFxubmV0L3Jkcy9pYl9jbS5jOjMwMDpcXHRcXHRyZHNfc2VuZF94bWl0KFxcdTAwMjZpYy1cXHUwMDNlY29ubi1cXHUwMDNlY19wYXRoWzBdKTtcXG5uZXQvcmRzL2liX2NtLmMtMzAxLX1cXG4tLVxcbm5ldC9yZHMvaWJfc2VuZC5jPTI0NT12b2lkIHJkc19pYl9zZW5kX2NxZV9oYW5kbGVyKHN0cnVjdCByZHNfaWJfY29ubmVjdGlvbiAqaWMsIHN0cnVjdCBpYl93YyAqd2MpXFxuLS1cXG5uZXQvcmRzL2liX3NlbmQuYy0zMzUtICpcXG5uZXQvcmRzL2liX3NlbmQuYzozMzY6ICogVGhlIFJEUyBzZW5kIGNvZGUgaXMgZXNzZW50aWFsbHkgc2luZ2xlLXRocmVhZGVkOyByZHNfc2VuZF94bWl0XFxubmV0L3Jkcy9pYl9zZW5kLmMtMzM3LSAqIHNldHMgUkRTX0lOX1hNSVQgdG8gZW5zdXJlIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gdGhlIHNlbmQgcmluZy5cXG4tLVxcbm5ldC9yZHMvbG9vcC5jPTIzMT12b2lkIHJkc19sb29wX25ldF9leGl0KHZvaWQpXFxuLS1cXG5uZXQvcmRzL2xvb3AuYy0yMzctICogVGhpcyBpcyBtaXNzaW5nIC54bWl0XyogYmVjYXVzZSBsb29wIGRvZXNuJ3QgZ28gdGhyb3VnaCBnZW5lcmljXFxubmV0L3Jkcy9sb29wLmM6MjM4OiAqIHJkc19zZW5kX3htaXQoKSBhbmQgZG9lc24ndCBjYWxsIHJkc19yZWN2X2luY29taW5nKCkuICAubGlzdGVuX3N0b3AgYW5kXFxubmV0L3Jkcy9sb29wLmMtMjM5LSAqIC5sYWRkcl9jaGVjayBhcmUgbWlzc2luZyBiZWNhdXNlIHRyYW5zcG9ydC5jIGRvZXNuJ3QgaXRlcmF0ZSBvdmVyXFxuLS1cXG5uZXQvcmRzL3Jkcy5oPTU0MD1zdHJ1Y3QgcmRzX3RyYW5zcG9ydCB7XFxuLS1cXG5uZXQvcmRzL3Jkcy5oLTU4MC1cXHQvKlxcbm5ldC9yZHMvcmRzLmg6NTgxOlxcdCAqIC54bWl0IGlzIGNhbGxlZCBieSByZHNfc2VuZF94bWl0KCkgdG8gdGVsbCB0aGUgdHJhbnNwb3J0IHRvIHNlbmRcXG5uZXQvcmRzL3Jkcy5oLTU4Mi1cXHQgKiBwYXJ0IG9mIGEgbWVzc2FnZS4gIFRoZSBjYWxsZXIgc2VyaWFsaXplcyBvbiB0aGUgc2VuZF9zZW0gc28gdGhpc1xcbi0tXFxubmV0L3Jkcy9yZHMuaD05NTc9dm9pZCByZHNfc2VuZF9wYXRoX3Jlc2V0KHN0cnVjdCByZHNfY29ubl9wYXRoICpjb25uKTtcXG5uZXQvcmRzL3Jkcy5oOjk1ODppbnQgcmRzX3NlbmRfeG1pdChzdHJ1Y3QgcmRzX2Nvbm5fcGF0aCAqY3ApO1xcbm5ldC9yZHMvcmRzLmgtOTU5LXN0cnVjdCBzb2NrYWRkcl9pbjtcXG4tLVxcbm5ldC9yZHMvc2VuZC5jLTQ0LVxcbm5ldC9yZHMvc2VuZC5jOjQ1Oi8qIFdoZW4gdHJhbnNtaXR0aW5nIG1lc3NhZ2VzIGluIHJkc19zZW5kX3htaXQsIHdlIG5lZWQgdG8gZW1lcmdlIGZyb21cXG5uZXQvcmRzL3NlbmQuYy00Ni0gKiB0aW1lIHRvIHRpbWUgYW5kIGJyaWVmbHkgcmVsZWFzZSB0aGUgQ1BVLiBPdGhlcndpc2UgdGhlIHNvZnRsb2NrIHdhdGNoZG9nXFxuLS1cXG5uZXQvcmRzL3NlbmQuYz01OT1zdGF0aWMgdm9pZCByZHNfc2VuZF9yZW1vdmVfZnJvbV9zb2NrKHN0cnVjdCBsaXN0X2hlYWQgKm1lc3NhZ2VzLCBpbnQgc3RhdHVzKTtcXG4tLVxcbm5ldC9yZHMvc2VuZC5jLTYyLSAqIFJlc2V0IHRoZSBzZW5kIHN0YXRlLiAgQ2FsbGVycyBtdXN0IGVuc3VyZSB0aGF0IHRoaXMgZG9lc24ndCByYWNlIHdpdGhcXG5uZXQvcmRzL3NlbmQuYzo2MzogKiByZHNfc2VuZF94bWl0KCkuXFxubmV0L3Jkcy9zZW5kLmMtNjQtICovXFxuLS1cXG5uZXQvcmRzL3NlbmQuYz0xMjg9c3RhdGljIGJvb2wgcmRzX21wcmRzX2NwMF9jYXRjaHVwKHN0cnVjdCByZHNfY29ubmVjdGlvbiAqY29ubilcXG4tLVxcbm5ldC9yZHMvc2VuZC5jLTE4Ni0gKi9cXG5uZXQvcmRzL3NlbmQuYzoxODc6aW50IHJkc19zZW5kX3htaXQoc3RydWN0IHJkc19jb25uX3BhdGggKmNwKVxcbm5ldC9yZHMvc2VuZC5jLTE4OC17XFxuLS1cXG5uZXQvcmRzL3NlbmQuYy01NDctfVxcbm5ldC9yZHMvc2VuZC5jOjU0ODpFWFBPUlRfU1lNQk9MX0dQTChyZHNfc2VuZF94bWl0KTtcXG5uZXQvcmRzL3NlbmQuYy01NDktXFxuLS1cXG5uZXQvcmRzL3NlbmQuYz02ODI9c3RhdGljIHZvaWQgcmRzX3NlbmRfcmVtb3ZlX2Zyb21fc29jayhzdHJ1Y3QgbGlzdF9oZWFkICptZXNzYWdlcywgaW50IHN0YXR1cylcXG4tLVxcbm5ldC9yZHMvc2VuZC5jLTc1Ny0gKiBtZXNzYWdlcyB1cCB0bywgYW5kIGluY2x1ZGluZywgdGhlIGdpdmVuIHNlcXVlbmNlIG51bWJlci4gIE1lc3NhZ2VzIGFyZVxcbm5ldC9yZHMvc2VuZC5jOjc1ODogKiBtb3ZlZCB0byB0aGUgcmV0cmFucyBxdWV1ZSB3aGVuIHJkc19zZW5kX3htaXQgcGlja3MgdGhlbSBvZmYgdGhlIHNlbmRcXG5uZXQvcmRzL3NlbmQuYy03NTktICogcXVldWUuIFRoaXMgbWVhbnMgdGhhdCBpbiB0aGUgVENQIGNhc2UsIHRoZSBtZXNzYWdlIG1heSBub3QgaGF2ZSBiZWVuXFxuLS1cXG5uZXQvcmRzL3NlbmQuYz0xMTQ0PWludCByZHNfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBwYXlsb2FkX2xlbilcXG4tLVxcbm5ldC9yZHMvc2VuZC5jLTE0NDEtXFxubmV0L3Jkcy9zZW5kLmM6MTQ0MjpcXHRyZXQgPSByZHNfc2VuZF94bWl0KGNwYXRoKTtcXG5uZXQvcmRzL3NlbmQuYy0xNDQzLVxcdGlmIChyZXQgPT0gLUVOT01FTSB8fCByZXQgPT0gLUVBR0FJTikge1xcbi0tXFxubmV0L3Jkcy90Y3AuYz0xMjY9dm9pZCByZHNfdGNwX3Jlc2V0X2NhbGxiYWNrcyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxcbi0tXFxubmV0L3Jkcy90Y3AuYy0xNDEtXFx0ICogY3Bfc3RhdGUgdG8gc29tZXRoaW5nIG90aGVyIHRoYW4gUkRTX0NPTk5fVVAsIGFuZCB0aGVuXFxubmV0L3Jkcy90Y3AuYzoxNDI6XFx0ICogd2FpdGluZyBmb3IgYW55IGV4aXN0aW5nIHRocmVhZHMgaW4gcmRzX3NlbmRfeG1pdCB0b1xcbm5ldC9yZHMvdGNwLmMtMTQzLVxcdCAqIGNvbXBsZXRlIHJlbGVhc2VfaW5feG1pdCgpLiAoU3Vic2VxdWVudCB0aHJlYWRzIGVudGVyaW5nXFxubmV0L3Jkcy90Y3AuYzoxNDQ6XFx0ICogcmRzX3NlbmRfeG1pdCgpIHdpbGwgYmFpbCBvbiAhcmRzX2Nvbm5fdXAoKS5cXG5uZXQvcmRzL3RjcC5jLTE0NS1cXHQgKlxcbi0tXFxubmV0L3Jkcy90Y3AuYy0xNTctXFx0LyogQWNxdWlyZSB0aGUgc2VuZC1wYXRoIGxvY2sgcmF0aGVyIHRoYW4gd2FpdGluZyBmb3IgaXQgdG8gYmVcXG5uZXQvcmRzL3RjcC5jOjE1ODpcXHQgKiByZWxlYXNlZDogYSBtZXJlIHdhaXQgaXMgcmFjeSwgc2luY2UgcmRzX3NlbmRfeG1pdCgpIG1heSB0YWtlXFxubmV0L3Jkcy90Y3AuYy0xNTktXFx0ICogdGhlIGxvY2sgYWdhaW4gcmlnaHQgYWZ0ZXIgd2Ugc2FtcGxlIGl0IGNsZWFyIGFuZCB0aGVuIHJ1blxcbi0tXFxubmV0L3Jkcy90aHJlYWRzLmM9MTkxPXZvaWQgcmRzX3NlbmRfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9yZHMvdGhyZWFkcy5jLTE5OS1cXHRcXHRjbGVhcl9iaXQoUkRTX0xMX1NFTkRfRlVMTCwgXFx1MDAyNmNwLVxcdTAwM2VjcF9mbGFncyk7XFxubmV0L3Jkcy90aHJlYWRzLmM6MjAwOlxcdFxcdHJldCA9IHJkc19zZW5kX3htaXQoY3ApO1xcbm5ldC9yZHMvdGhyZWFkcy5jLTIwMS1cXHRcXHRjb25kX3Jlc2NoZWQoKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDg6MTM6NTQuMjkyNTQ0NjE5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMjEyNTY2NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFJEUyBLZXJuZWwgQ29kZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9uIGNhbGwgcmVsYXRpb25zaGlwcyB3aXRoaW4gdGhlIFJEUyBrZXJuZWwgY29kZS4gSXQncyBjbGVhciB0aGlzIGlzIGFsbCBhYm91dCBtYW5hZ2luZyByZWxpYWJsZSBkYXRhZ3JhbSBzb2NrZXRzLiBJIHNlZSBgcmRzX3NlbmRfeG1pdGAgYmVpbmcgY2FsbGVkIGZyb20gYHJkc19zZW5kbXNnYCBhbmQgYHJkc19zZW5kX3dvcmtlcmAg4oCTIHRoYXQncyB0aGUgdHJhbnNtaXNzaW9uIHBhdGggZm9yIHNlbmRpbmcgZGF0YS4gYHJkc19jb25uX3NodXRkb3duYCBpcyBjYWxsZWQgZnJvbSBgcmRzX2Nvbm5fZGVzdHJveWAgYW5kIGByZHNfY29ubl9kcm9wYCwgd2hpY2ggaXMgaG93IGNvbm5lY3Rpb25zIGFyZSBoYW5kbGVkIHdoZW4gdGhleSBuZWVkIHRvIHNodXQgZG93bi4gYHJkc190Y3BfcmVzZXRfY2FsbGJhY2tzYCBpcyBjYWxsZWQgZnJvbSBgcmRzX3RjcF9hY2NlcHRfb25lYCBhbmQgYHJkc190Y3BfY29ubl9wYXRoX2Nvbm5lY3RgLCBzdWdnZXN0aW5nIGNvbm5lY3Rpb24gcmVzZXQgb24gdGhlIFRDUCBwYXRoLiBBbmQgZmluYWxseSwgYHJkc19pbmNfaW5pdGAgaXMgaW52b2tlZCBmcm9tIGByZHNfdGNwX2RhdGFfcmVjdmAgYW5kIGByZHNfaWJfcmVjdl9pbml0X3JpbmdgLCBzaG93aW5nIGluaXRpYWxpemF0aW9uIGZvciByZWNlaXZpbmcgZGF0YS5cblxuVGhpcyByZWFsbHkgbG9va3MgbGlrZSB0aGUgY29kZSBpcyBoYW5kbGluZyBzb21lIGNydWNpYWwgcmFjZSBjb25kaXRpb25zLCBwcm9iYWJseSBhcm91bmQgY29ubmVjdGlvbiB0ZWFyZG93biBhbmQgcmVzZXR0aW5nLCBhbmQgaXQgbG9va3MgbGlrZSBpdCBkb2VzIHNvbWUgaW5pdGlhbGl6YXRpb24uIFNwZWNpZmljYWxseSBgcmRzX3NlbmRfeG1pdGAgaW5pdGlhbGl6ZXMgYSBsaXN0LiBUaGlzIHNlZW1zIHRvIGJlIGF0IHRoZSBoZWFydCBvZiB0aGUgUkRTIHNvY2tldCBpbXBsZW1lbnRhdGlvbiwgcmlnaHQ/IEkgY2FuIHRlbGwgdGhhdCB0aGUgY29kZSBpcyByZWFjaGFibGUgdmlhIFJEUyBzb2NrZXRzLiBUaGUgY29uZmlndXJhdGlvbnMgbmVlZGVkIGFyZSBgUkRTYCBhbmQgYFJEU19UQ1BgLiBcblxuTm93LCBiZWZvcmUgSSBkaWcgZGVlcGVyLCBJIHNob3VsZCBjaGVjayB3aGV0aGVyIGVpdGhlciBgUkRTYCBvciBgUkRTX1RDUGAgaGF2ZSBhbnkgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBmZWF0dXJlcyBvciBtb2R1bGVzLiBHb3R0YSBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBmdWxsIGNvbnRleHQgYmVmb3JlIEkgc3RhcnQgdHJ5aW5nIHRvIG1vZGlmeSBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQwOSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwODoxMzo1OS41MTM4MDMxNzRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzODAzMjU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Jkcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9yZHMvS2NvbmZpZz0zPWNvbmZpZyBSRFNcXG5uZXQvcmRzL0tjb25maWctNC1cXHR0cmlzdGF0ZSBcXFwiVGhlIFJlbGlhYmxlIERhdGFncmFtIFNvY2tldHMgUHJvdG9jb2xcXFwiXFxubmV0L3Jkcy9LY29uZmlnOjU6XFx0ZGVwZW5kcyBvbiBJTkVUXFxubmV0L3Jkcy9LY29uZmlnLTYtXFx0aGVscFxcbi0tXFxubmV0L3Jkcy9LY29uZmlnPTEwPWNvbmZpZyBSRFNfUkRNQVxcbm5ldC9yZHMvS2NvbmZpZy0xMS1cXHR0cmlzdGF0ZSBcXFwiUkRTIG92ZXIgSW5maW5pYmFuZFxcXCJcXG5uZXQvcmRzL0tjb25maWc6MTI6XFx0ZGVwZW5kcyBvbiBSRFMgXFx1MDAyNlxcdTAwMjYgSU5GSU5JQkFORCBcXHUwMDI2XFx1MDAyNiBJTkZJTklCQU5EX0FERFJfVFJBTlNcXG5uZXQvcmRzL0tjb25maWctMTMtXFx0aGVscFxcbi0tXFxubmV0L3Jkcy9LY29uZmlnPTE3PWNvbmZpZyBSRFNfVENQXFxubmV0L3Jkcy9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJSRFMgb3ZlciBUQ1BcXFwiXFxubmV0L3Jkcy9LY29uZmlnOjE5OlxcdGRlcGVuZHMgb24gUkRTXFxubmV0L3Jkcy9LY29uZmlnOjIwOlxcdGRlcGVuZHMgb24gSVBWNiB8fCAhSVBWNlxcbm5ldC9yZHMvS2NvbmZpZy0yMS1cXHRoZWxwXFxuLS1cXG5uZXQvcmRzL0tjb25maWc9MjU9Y29uZmlnIFJEU19ERUJVR1xcbm5ldC9yZHMvS2NvbmZpZy0yNi1cXHRib29sIFxcXCJSRFMgZGVidWdnaW5nIG1lc3NhZ2VzXFxcIlxcbm5ldC9yZHMvS2NvbmZpZzoyNzpcXHRkZXBlbmRzIG9uIFJEU1xcbm5ldC9yZHMvS2NvbmZpZy0yOC1cXHRkZWZhdWx0IG5cXG4tLVxcbm5ldC9yZHMvS2NvbmZpZz0zMD1jb25maWcgR0NPVl9QUk9GSUxFX1JEU1xcbm5ldC9yZHMvS2NvbmZpZy0zMS1cXHRib29sIFxcXCJFbmFibGUgR0NPViBwcm9maWxpbmcgb24gUkRTXFxcIlxcbm5ldC9yZHMvS2NvbmZpZzozMjpcXHRkZXBlbmRzIG9uIEdDT1ZfS0VSTkVMXFxubmV0L3Jkcy9LY29uZmlnLTMzLVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDg6MTM6NTkuNTU3NjA4OTYxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxODI1MDc2MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFJEUyBhbmQgaXRzIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYFJEU2Agc2V0dXAgYW5kIGl0J3MgaW1tZWRpYXRlbHkgY2xlYXIgdGhhdCBpdCdzIGZ1bmRhbWVudGFsbHkgcmVsaWFudCBvbiBgSU5FVGAuICBGdXJ0aGVyLCBgUkRTX1RDUGAgaGluZ2VzIG9uIGBSRFNgIGFuZCBlaXRoZXIgYElQVjZgIG9yIHRoZSBhYnNlbmNlIG9mIGBJUFY2YC4gR2l2ZW4gdGhpcyBzdHJ1Y3R1cmFsIGRlcGVuZGVuY3ksIGVuYWJsaW5nIGJvdGggYFJEU2AgYW5kIGBSRFNfVENQYCBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIG5leHQgc3RlcC5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUga2V5IGZ1bmN0aW9ucyBpbnZvbHZlZCwgc28gSSd2ZSBmbGFnZ2VkIGEgZmV3IGZvciBjbG9zZXIgaW5zcGVjdGlvbjogYHJkc19jb25uX3NodXRkb3duYCwgYHJkc190Y3BfcmVzZXRfY2FsbGJhY2tzYCwgYHJkc19zZW5kX3htaXRgLCBhbmQgYHJkc19pbmNfaW5pdGAuIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgdGhlc2UgYXJlIHN0YXRpYywgaW5saW5lLCBvciBleHBvcnRlZCBzeW1ib2xzLCBhcyB0aGlzIGltcGFjdHMgaG93IHRoZXkgYXJlIHVzZWQgYW5kIGNhbGxlZC5cblxuQWxyaWdodCwgYSBxdWljayBjaGVjayBjb25maXJtcyB0aGF0IGByZHNfY29ubl9zaHV0ZG93bmAsIGByZHNfdGNwX3Jlc2V0X2NhbGxiYWNrc2AsIGByZHNfc2VuZF94bWl0YCwgYW5kIGByZHNfaW5jX2luaXRgIGFyZSBhbGwgZXhwb3J0ZWQvZ2xvYmFsIHN5bWJvbHMuIFRoaXMgdGVsbHMgbWUgdGhleSdyZSBpbnRlbmRlZCBmb3IgdXNlIG91dHNpZGUgdGhlaXIgZGVmaW5pbmcgbW9kdWxlcy4gV2FpdCwgYHJkc19pbmNfaW5pdGAgaXMgc3BlY2lmaWNhbGx5IGxvY2F0ZWQgaW4gYG5ldC9yZHMvcmVjdi5jYC4gVGhpcyBpcyBpbXBvcnRhbnQsIGFzIGl0IGNsYXJpZmllcyB3aGVyZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgaW5jb21pbmcgdHJhZmZpYyBpcyBoYW5kbGVkLCBhbmQgaW5kaWNhdGVzIHdoZXJlIHRoYXQgZnVuY3Rpb24gc2hvdWxkIHJlc2lkZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTMzNSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwODoxNDowNC43NDAxMTg2NTlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzOTc4MTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZvaWQgcmRzX2luY19pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9yZHMvcmVjdi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9yZHMvcmVjdi5jLTQzLVxcbm5ldC9yZHMvcmVjdi5jOjQ0OnZvaWQgcmRzX2luY19pbml0KHN0cnVjdCByZHNfaW5jb21pbmcgKmluYywgc3RydWN0IHJkc19jb25uZWN0aW9uICpjb25uLFxcbm5ldC9yZHMvcmVjdi5jLTQ1LVxcdFxcdCBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwODoxNDowNC43ODQxMDA5NzZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE0Mzc2NTc4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OlxuXG4qKkdsb2JhbCBTY29wZSBDaGVjayoqXG5cblJpZ2h0LCB0aGlzIGRlZmluaXRlbHkgc2VlbXMgbGlrZSBpdCdzIGEgZ2xvYmFsIGlzc3VlIGFmZmVjdGluZyBldmVyeXRoaW5nLiBCZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gZGVidWdnaW5nLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgY2hhc2luZyBhIGxvY2FsIHByb2JsZW0uIExldCdzIHN0YXJ0IHdpdGggYSBjcnVjaWFsIGNoZWNrLiBNeSBpbnN0aW5jdCB0ZWxscyBtZSB0aGlzIGlzIGdsb2JhbCwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoZSBzY29wZSBvZiB0aGlzIGByZHNfY29ubl9zaHV0ZG93bmAgZnVuY3Rpb24sIG9yIHdoYXRldmVyIGZ1bmN0aW9uIGlzIGNhdXNpbmcgdGhlIGlzc3VlLiBJIG5lZWQgdG8ga25vdyBpZiBpdCdzIGRlY2xhcmVkIGdsb2JhbGx5IGZpcnN0LiBUaGF0J3MgdGhlIGJhc2VsaW5lLCB0aGUgbW9zdCBmdW5kYW1lbnRhbCB0aGluZyB0byBjaGVjayByaWdodCBub3cuIEknbGwgbmVlZCB0byBjb25maXJtIGlmIGl0IGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5OTkxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDg6MTQ6MDcuOTI3ODY5NjU5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzAxMTI2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2b2lkIHJkc19jb25uX3NodXRkb3duXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9yZHMvY29ubmVjdGlvbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9yZHMvY29ubmVjdGlvbi5jPTM3OT1FWFBPUlRfU1lNQk9MX0dQTChyZHNfY29ubl9jcmVhdGVfb3V0Z29pbmcpO1xcbm5ldC9yZHMvY29ubmVjdGlvbi5jLTM4MC1cXG5uZXQvcmRzL2Nvbm5lY3Rpb24uYzozODE6dm9pZCByZHNfY29ubl9zaHV0ZG93bihzdHJ1Y3QgcmRzX2Nvbm5fcGF0aCAqY3ApXFxubmV0L3Jkcy9jb25uZWN0aW9uLmMtMzgyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDg6MTQ6MDcuOTcwODg3NTE1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MTY0MjM5MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBmcmFtZWQgYXMgbXkgaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkludGVybmFsIFJldmlldyBvZiBQb3RlbnRpYWwgUmVzZXQgQ2FsbGJhY2tzKipcblxuWWVzLCB0aGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBmb2xsb3dpbmcgdGhlIHJpZ2h0IHRyYWNrIGhlcmUuIE5vdywgbGV0J3MgdGFrZSBhIGxvb2sgYXQgYHJkc190Y3BfcmVzZXRfY2FsbGJhY2tzYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHNwZWNpZmljYWxseSBlbnRhaWxzLiBJdCdzIHRpbWUgdG8gZnVsbHkgYW5hbHlzZSB0aGUgaW5mb3JtYXRpb24gcHJlc2VudGVkLCBlbnN1cmluZyBJIGNvbXByZWhlbmQgdGhlIHNwZWNpZmljIGFjdGlvbnMgYW5kIGRlcGVuZGVuY2llcyB0aGF0IHRoaXMgZW5jb21wYXNzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMjg1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDg6MTQ6MTAuNjg3MzEzODNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MzQ2MTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZvaWQgcmRzX3RjcF9yZXNldF9jYWxsYmFja3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Jkcy90Y3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvcmRzL3RjcC5jPTk2PXZvaWQgcmRzX3RjcF9yZXN0b3JlX2NhbGxiYWNrcyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxcbi0tXFxubmV0L3Jkcy90Y3AuYy0xMjUtICovXFxubmV0L3Jkcy90Y3AuYzoxMjY6dm9pZCByZHNfdGNwX3Jlc2V0X2NhbGxiYWNrcyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxcbm5ldC9yZHMvdGNwLmMtMTI3LVxcdFxcdFxcdCAgICAgc3RydWN0IHJkc19jb25uX3BhdGggKmNwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwODoxNDoxMC43MzQ2NjQ4NzZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4NjkzMjIzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBc3Nlc3NtZW50IG9mIFRhc2sgYW5kIEZvY3VzKipcblxuWWVzLiAqVGhhdCdzIHRoZSBpbml0aWFsIGFja25vd2xlZGdlbWVudCBvZiB0aGUgdGFzayBvciBxdWVzdGlvbi4gSSdtIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC4gVGhlIHNpbXBsaWNpdHkgc3VnZ2VzdHMgYSBjb25maXJtYXRpb24sIGEgc3RhcnRpbmcgcG9pbnQuKlxuXG5MZXQncyBjaGVjayBgcmRzX3NlbmRfeG1pdGAuICpSaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFwiTGV0J3MgY2hlY2sgYHJkc19zZW5kX3htaXRgXCIgc2lnbmlmaWVzIGEgZGl2ZSBpbnRvIGEgc3BlY2lmaWMgZnVuY3Rpb24gb3IgbW9kdWxlIHdpdGhpbiB0aGUgUkRTIChSZWxpYWJsZSBEYXRhZ3JhbSBTb2NrZXRzKSBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yLiogSSdtIGltbWVkaWF0ZWx5IGhvbWluZyBpbiBvbiB0aGUgc2VuZCB0cmFuc21pdCBmdW5jdGlvbiwgYW5kIGhvdyBpdCBoYW5kbGVzIHBhY2tldHMuIFRoaXMgc3VnZ2VzdHMgdGhlIGNvcmUgYXJlYSBvZiBjb25jZXJuIGlzIGxpa2VseSByZWxhdGVkIHRvIGRhdGEgdHJhbnNtaXNzaW9uLCBwb3NzaWJseSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcywgZXJyb3IgaGFuZGxpbmcsIG9yIHNwZWNpZmljIHByb3RvY29sIGludHJpY2FjaWVzIHJlbGF0ZWQgdG8gcmVsaWFibGUgZGF0YSB0cmFuc2Zlci4gVGhpcyBjb3VsZCBiZSBhIGRlYnVnZ2luZyBzdGVwIG9yIGFuIGludmVzdGlnYXRvcnkgYWN0aW9uLiBJJ20gcHJvYmFibHkgbG9va2luZyBhdCB0aGUgc291cmNlIGNvZGUgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDU0NSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA4OjE0OjE0LjEyMTU5OTQxMVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY5Njg5MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW50IHJkc19zZW5kX3htaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Jkcy9zZW5kLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3Jkcy9zZW5kLmM9MTI4PXN0YXRpYyBib29sIHJkc19tcHJkc19jcDBfY2F0Y2h1cChzdHJ1Y3QgcmRzX2Nvbm5lY3Rpb24gKmNvbm4pXFxuLS1cXG5uZXQvcmRzL3NlbmQuYy0xODYtICovXFxubmV0L3Jkcy9zZW5kLmM6MTg3OmludCByZHNfc2VuZF94bWl0KHN0cnVjdCByZHNfY29ubl9wYXRoICpjcClcXG5uZXQvcmRzL3NlbmQuYy0xODgte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwODoxNDoxNC4xNjg1NzI2NjdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk2MzU2NDQ4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHRoaXMgcGF0Y2ggbG9va3Mgc29saWQuIEkgY2FuIGNvbmZpcm0gaXQgYWRkcmVzc2VzIHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgdGhlIFJEUyBjb25uZWN0aW9uIHRlYXJkb3duIGFuZCByZXNldCwgYW5kIGFsc28gY29ycmVjdGx5IGluaXRpYWxpemVzIGEgbGlzdCB3aXRoaW4gYHJkc19zZW5kX3htaXRgLiBGdW5jdGlvbmFsbHksIGl0IHNlZW1zIHNvdW5kIGFuZCBhYnNvbHV0ZWx5IHdhcnJhbnRzIHRob3JvdWdoIGZ1enppbmcuXG5cbkkndmUgY2hlY2tlZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnM6IGBSRFNgIGFuZCBgUkRTX1RDUGAuIEp1c3QgdG8gYmUgc3VyZSwgSSdsbCBxdWlja2x5IHZlcmlmeSBpZiB0aG9zZSBhcmUgc3VmZmljaWVudC4gWWVwLCBgUkRTYCBpcyB0aGUgZnVuZGFtZW50YWwgY29tcG9uZW50LCBhbmQgYFJEU19UQ1BgIHJlcHJlc2VudHMgdGhlIFRDUCB0cmFuc3BvcnQsIHNwZWNpZmljYWxseSB1c2VkIGluIGBuZXQvcmRzL3RjcC5jYC4gVGhlIHBhdGNoICpkb2VzKiBtb2RpZnkgYG5ldC9yZHMvdGNwLmNgLCB3aGljaCBpcyBvbmx5IGNvbXBpbGVkIHdpdGggYFJEU19UQ1BgIGVuYWJsZWQsIHNvIHRoYXQncyBnb29kLiBBbmQgdGhlIGNvcmUgUkRTIG1vZHVsZXMsIGBuZXQvcmRzL2Nvbm5lY3Rpb24uY2AsIGBuZXQvcmRzL3JlY3YuY2AsIGFuZCBgbmV0L3Jkcy9zZW5kLmNgLCBhcmUgcHJvcGVybHkgY292ZXJlZCBieSBgUkRTYCBiZWluZyBlbmFibGVkLlxuXG5Ob3cgSSBjYW4gcHV0IHRvZ2V0aGVyIGEgY29tcGxldGUgcmVzcG9uc2UgYmFzZWQgb24gdGhpcyByZXZpZXcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTEzLCJPdXRwdXRUb2tlbnMiOjE0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwODoxNDoyMC4xMzIxMzk5MjZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjgyNzUxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUkRTXCIsXG4gICAgXCJSRFNfVENQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicmRzX2Nvbm5fc2h1dGRvd25cIixcbiAgICBcInJkc190Y3BfcmVzZXRfY2FsbGJhY2tzXCIsXG4gICAgXCJyZHNfc2VuZF94bWl0XCIsXG4gICAgXCJyZHNfaW5jX2luaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFJEUyBjb25uZWN0aW9uIHRlYXJkb3duLCByZXNldCwgYW5kIHRyYW5zbWl0IGxvZ2ljIHRvIGZpeCByYWNlIGNvbmRpdGlvbnMgYnkgdXNpbmcgYml0IGxvY2tzIGluc3RlYWQgb2YgcGxhaW4gYml0IHRlc3RzLiBJdCBhbHNvIGluaXRpYWxpemVzIGEgbGlzdCBpbiBgcmRzX3NlbmRfeG1pdGAgYW5kIGEgcG9pbnRlciBpbiBgcmRzX2luY19pbml0YC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgUkRTIHN1YnN5c3RlbSB0aGF0IGFyZSByZWFjaGFibGUgdmlhIFJEUyBzb2NrZXRzIG92ZXIgVENQLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJEU1wiLFxuICAgIFwiUkRTX1RDUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJkc19jb25uX3NodXRkb3duXCIsXG4gICAgXCJyZHNfdGNwX3Jlc2V0X2NhbGxiYWNrc1wiLFxuICAgIFwicmRzX3NlbmRfeG1pdFwiLFxuICAgIFwicmRzX2luY19pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBSRFMgY29ubmVjdGlvbiB0ZWFyZG93biwgcmVzZXQsIGFuZCB0cmFuc21pdCBsb2dpYyB0byBmaXggcmFjZSBjb25kaXRpb25zIGJ5IHVzaW5nIGJpdCBsb2NrcyBpbnN0ZWFkIG9mIHBsYWluIGJpdCB0ZXN0cy4gSXQgYWxzbyBpbml0aWFsaXplcyBhIGxpc3QgaW4gYHJkc19zZW5kX3htaXRgIGFuZCBhIHBvaW50ZXIgaW4gYHJkc19pbmNfaW5pdGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIFJEUyBzdWJzeXN0ZW0gdGhhdCBhcmUgcmVhY2hhYmxlIHZpYSBSRFMgc29ja2V0cyBvdmVyIFRDUC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowjhw6r[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-06 07:37:07 +0000 UTC FinishedAt: 2026-08-06 08:14:21 +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": "cb59bfd419d0c560b9f7273522f9a4799062aad5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RDS", "RDS_TCP" ], "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": "cb59bfd419d0c560b9f7273522f9a4799062aad5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RDS", "RDS_TCP" ], "series_id": "9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rds_conn_shutdown", "rds_tcp_reset_callbacks", "rds_send_xmit", "rds_inc_init" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA2IDA4OjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JEUyYjMzQ7LAogICAgJiMzNDtSRFNfVENQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cmRzX2Nvbm5fc2h1dGRvd24mIzM0OywKICAgICYjMzQ7cmRzX3RjcF9yZXNldF9jYWxsYmFja3MmIzM0OywKICAgICYjMzQ7cmRzX3NlbmRfeG1pdCYjMzQ7LAogICAgJiMzNDtyZHNfaW5jX2luaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBSRFMgY29ubmVjdGlvbiB0ZWFyZG93biwgcmVzZXQsIGFuZCB0cmFuc21pdCBsb2dpYyB0byBmaXggcmFjZSBjb25kaXRpb25zIGJ5IHVzaW5nIGJpdCBsb2NrcyBpbnN0ZWFkIG9mIHBsYWluIGJpdCB0ZXN0cy4gSXQgYWxzbyBpbml0aWFsaXplcyBhIGxpc3QgaW4gYHJkc19zZW5kX3htaXRgIGFuZCBhIHBvaW50ZXIgaW4gYHJkc19pbmNfaW5pdGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIFJEUyBzdWJzeXN0ZW0gdGhhdCBhcmUgcmVhY2hhYmxlIHZpYSBSRFMgc29ja2V0cyBvdmVyIFRDUC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwODoxMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDgwYjczMjcyMGIzYmQ0ZDJkOWQzYWQwYTM2NjhmYWQwNWQwMGYzZjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyA2IDA4OjEzOjI4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9yZHMvY29ubmVjdGlvbi5jIGIvbmV0L3Jkcy9jb25uZWN0aW9uLmNcbmluZGV4IDdjOGFiOGU5NzNlMWIuLjQwNmEwNzFlZmRkM2IgMTAwNjQ0XG4tLS0gYS9uZXQvcmRzL2Nvbm5lY3Rpb24uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3Jkcy9jb25uZWN0aW9uLmNcbkBAIC00MDYsMTQgJiM0Mzs0MDYsMzIgQEAgdm9pZCByZHNfY29ubl9zaHV0ZG93bihzdHJ1Y3QgcmRzX2Nvbm5fcGF0aCAqY3ApXG4gXHRcdH1cbiBcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmNwLVx1MDAzZWNwX2NtX2xvY2spO1xuIFxuJiM0MztcdFx0LyogUXVpZXNjZSB0aGUgdHJhbnNtaXQgYW5kIHJlY2VpdmUtcmVmaWxsIHBhdGhzIGJ5XG4mIzQzO1x0XHQgKiBhY3F1aXJpbmcgdGhlaXIgYml0IGxvY2tzLCBub3QgbWVyZWx5IHdhaXRpbmcgZm9yXG4mIzQzO1x0XHQgKiB0aGVtIHRvIGJlIHJlbGVhc2VkOiB3aXRoIGEgcGxhaW4gd2FpdCwgZWl0aGVyIHBhdGhcbiYjNDM7XHRcdCAqIGNhbiByZS10YWtlIGl0cyBsb2NrIHRoZSBpbnN0YW50IGFmdGVyIHdlIHNhbXBsZSBpdFxuJiM0MztcdFx0ICogY2xlYXIgYW5kIHRoZW4gcnVuIGNvbmN1cnJlbnRseSB3aXRoIHRoZSB0cmFuc3BvcnRcbiYjNDM7XHRcdCAqIHNodXRkb3duIGFuZCB0aGUgcGF0aCByZXNldCBiZWxvdy4gIEhvbGRpbmcgYm90aFxuJiM0MztcdFx0ICogbG9ja3MgYWNyb3NzIHRoZSB0ZWFyZG93biBtYWtlcyB0aGF0IHN0cnVjdHVyYWxseVxuJiM0MztcdFx0ICogaW1wb3NzaWJsZS5cbiYjNDM7XHRcdCAqL1xuIFx0XHR3YWl0X2V2ZW50KGNwLVx1MDAzZWNwX3dhaXRxLFxuLVx0XHRcdCAgICF0ZXN0X2JpdChSRFNfSU5fWE1JVCwgXHUwMDI2Y3AtXHUwMDNlY3BfZmxhZ3MpKTtcbiYjNDM7XHRcdFx0ICAgIXRlc3RfYW5kX3NldF9iaXRfbG9jayhSRFNfSU5fWE1JVCwgXHUwMDI2Y3AtXHUwMDNlY3BfZmxhZ3MpKTtcbiBcdFx0d2FpdF9ldmVudChjcC1cdTAwM2VjcF93YWl0cSxcbi1cdFx0XHQgICAhdGVzdF9iaXQoUkRTX1JFQ1ZfUkVGSUxMLCBcdTAwMjZjcC1cdTAwM2VjcF9mbGFncykpO1xuJiM0MztcdFx0XHQgICAhdGVzdF9hbmRfc2V0X2JpdChSRFNfUkVDVl9SRUZJTEwsIFx1MDAyNmNwLVx1MDAzZWNwX2ZsYWdzKSk7XG4gXG4gXHRcdGNvbm4tXHUwMDNlY190cmFucy1cdTAwM2Vjb25uX3BhdGhfc2h1dGRvd24oY3ApO1xuIFx0XHRyZHNfY29ubl9wYXRoX3Jlc2V0KGNwKTtcbiBcbiYjNDM7XHRcdC8qIHJkc19jb25uX3BhdGhfcmVzZXQoKSBhbHJlYWR5IGNsZWFyZWQgY3BfZmxhZ3MsIGJ1dFxuJiM0MztcdFx0ICogcmVsZWFzZSB0aGUgdHdvIGxvY2tzIGV4cGxpY2l0bHkgYW5kIHdha2UgYW55IHdhaXRlclxuJiM0MztcdFx0ICogKGUuZy4gcmRzX3RjcF9yZXNldF9jYWxsYmFja3MoKSkgdGhhdCBzYW1wbGVkIHRoZVxuJiM0MztcdFx0ICogbG9ja3Mgd2hpbGUgd2UgaGVsZCB0aGVtLlxuJiM0MztcdFx0ICovXG4mIzQzO1x0XHRjbGVhcl9iaXRfdW5sb2NrKFJEU19JTl9YTUlULCBcdTAwMjZjcC1cdTAwM2VjcF9mbGFncyk7XG4mIzQzO1x0XHRjbGVhcl9iaXQoUkRTX1JFQ1ZfUkVGSUxMLCBcdTAwMjZjcC1cdTAwM2VjcF9mbGFncyk7XG4mIzQzO1x0XHR3YWtlX3VwX2FsbChcdTAwMjZjcC1cdTAwM2VjcF93YWl0cSk7XG4mIzQzO1xuIFx0XHRpZiAoIXJkc19jb25uX3BhdGhfdHJhbnNpdGlvbihjcCwgUkRTX0NPTk5fRElTQ09OTkVDVElORyxcbiBcdFx0XHRcdFx0ICAgICAgUkRTX0NPTk5fRE9XTikgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICAhcmRzX2Nvbm5fcGF0aF90cmFuc2l0aW9uKGNwLCBSRFNfQ09OTl9FUlJPUixcbmRpZmYgLS1naXQgYS9uZXQvcmRzL3JlY3YuYyBiL25ldC9yZHMvcmVjdi5jXG5pbmRleCBjZjM4ODRkODc5MzE5Li5mMTUxM2RmYjI3MTY1IDEwMDY0NFxuLS0tIGEvbmV0L3Jkcy9yZWN2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yZHMvcmVjdi5jXG5AQCAtNDcsNiAmIzQzOzQ3LDcgQEAgdm9pZCByZHNfaW5jX2luaXQoc3RydWN0IHJkc19pbmNvbWluZyAqaW5jLCBzdHJ1Y3QgcmRzX2Nvbm5lY3Rpb24gKmNvbm4sXG4gXHRyZWZjb3VudF9zZXQoXHUwMDI2aW5jLVx1MDAzZWlfcmVmY291bnQsIDEpO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2aW5jLVx1MDAzZWlfaXRlbSk7XG4gXHRpbmMtXHUwMDNlaV9jb25uID0gY29ubjtcbiYjNDM7XHRpbmMtXHUwMDNlaV9jb25uX3BhdGggPSBOVUxMO1xuIFx0aW5jLVx1MDAzZWlfc2FkZHIgPSAqc2FkZHI7XG4gXHRpbmMtXHUwMDNlaV91c2VyY29weS5yZG1hX2Nvb2tpZSA9IDA7XG4gXHRpbmMtXHUwMDNlaV91c2VyY29weS5yeF90c3RhbXAgPSBrdGltZV9zZXQoMCwgMCk7XG5kaWZmIC0tZ2l0IGEvbmV0L3Jkcy9zZW5kLmMgYi9uZXQvcmRzL3NlbmQuY1xuaW5kZXggMzA5MDIxZTBjYzliYy4uYzI4ZGM5ZjgyMGFmMCAxMDA2NDRcbi0tLSBhL25ldC9yZHMvc2VuZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvcmRzL3NlbmQuY1xuQEAgLTIwMCw2ICYjNDM7MjAwLDEyIEBAIGludCByZHNfc2VuZF94bWl0KHN0cnVjdCByZHNfY29ubl9wYXRoICpjcClcbiByZXN0YXJ0OlxuIFx0YmF0Y2hfY291bnQgPSAwO1xuIFxuJiM0MztcdC8qIFRoZSBkcm9wIHByb2Nlc3NpbmcgYWZ0ZXIgb3Zlcl9iYXRjaCByZWxpZXMgb24gdGhlIGNhbGxlZXNcbiYjNDM7XHQgKiBlbXB0eWluZyB0b19iZV9kcm9wcGVkIGVudHJ5IGJ5IGVudHJ5OyByZS1pbml0aWFsaXplIGl0IGhlcmVcbiYjNDM7XHQgKiByYXRoZXIgdGhhbiBkZXBlbmRpbmcgb24gdGhhdCBpbXBsaWNpdCBiZWhhdmlvci5cbiYjNDM7XHQgKi9cbiYjNDM7XHRJTklUX0xJU1RfSEVBRChcdTAwMjZ0b19iZV9kcm9wcGVkKTtcbiYjNDM7XG4gXHQvKlxuIFx0ICogc2VuZG1zZyBjYWxscyBoZXJlIGFmdGVyIGhhdmluZyBxdWV1ZWQgaXRzIG1lc3NhZ2Ugb24gdGhlIHNlbmRcbiBcdCAqIHF1ZXVlLiAgV2Ugb25seSBoYXZlIG9uZSB0YXNrIGZlZWRpbmcgdGhlIGNvbm5lY3Rpb24gYXQgYSB0aW1lLiAgSWZcbmRpZmYgLS1naXQgYS9uZXQvcmRzL3RjcC5jIGIvbmV0L3Jkcy90Y3AuY1xuaW5kZXggYjI2MzYzNGFjNzUwZC4uMDQyZDNmZGJkZjdmZSAxMDA2NDRcbi0tLSBhL25ldC9yZHMvdGNwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yZHMvdGNwLmNcbkBAIC0xMjgsNiAmIzQzOzEyOCw3IEBAIHZvaWQgcmRzX3RjcF9yZXNldF9jYWxsYmFja3Moc3RydWN0IHNvY2tldCAqc29jayxcbiB7XG4gXHRzdHJ1Y3QgcmRzX3RjcF9jb25uZWN0aW9uICp0YyA9IGNwLVx1MDAzZWNwX3RyYW5zcG9ydF9kYXRhO1xuIFx0c3RydWN0IHNvY2tldCAqb3NvY2sgPSB0Yy1cdTAwM2V0X3NvY2s7XG4mIzQzO1x0Ym9vbCBpbl94bWl0X2hlbGQgPSBmYWxzZTtcbiBcbiBcdGlmICghb3NvY2spXG4gXHRcdGdvdG8gbmV3c29jaztcbkBAIC0xNTMsNyAmIzQzOzE1NCwxNCBAQCB2b2lkIHJkc190Y3BfcmVzZXRfY2FsbGJhY2tzKHN0cnVjdCBzb2NrZXQgKnNvY2ssXG4gXHQgKiBjYW5ub3QgbWFyayByZHNfY29ubl9wYXRoX3VwKCkgaW4gdGhlIHdpbmRvdyBiZWZvcmUgbG9ja19zb2NrKClcbiBcdCAqL1xuIFx0YXRvbWljX3NldChcdTAwMjZjcC1cdTAwM2VjcF9zdGF0ZSwgUkRTX0NPTk5fUkVTRVRUSU5HKTtcbi1cdHdhaXRfZXZlbnQoY3AtXHUwMDNlY3Bfd2FpdHEsICF0ZXN0X2JpdChSRFNfSU5fWE1JVCwgXHUwMDI2Y3AtXHUwMDNlY3BfZmxhZ3MpKTtcbiYjNDM7XHQvKiBBY3F1aXJlIHRoZSBzZW5kLXBhdGggbG9jayByYXRoZXIgdGhhbiB3YWl0aW5nIGZvciBpdCB0byBiZVxuJiM0MztcdCAqIHJlbGVhc2VkOiBhIG1lcmUgd2FpdCBpcyByYWN5LCBzaW5jZSByZHNfc2VuZF94bWl0KCkgbWF5IHRha2VcbiYjNDM7XHQgKiB0aGUgbG9jayBhZ2FpbiByaWdodCBhZnRlciB3ZSBzYW1wbGUgaXQgY2xlYXIgYW5kIHRoZW4gcnVuXG4mIzQzO1x0ICogY29uY3VycmVudGx5IHdpdGggcmRzX3NlbmRfcGF0aF9yZXNldCgpIGJlbG93LlxuJiM0MztcdCAqL1xuJiM0MztcdHdhaXRfZXZlbnQoY3AtXHUwMDNlY3Bfd2FpdHEsXG4mIzQzO1x0XHQgICAhdGVzdF9hbmRfc2V0X2JpdF9sb2NrKFJEU19JTl9YTUlULCBcdTAwMjZjcC1cdTAwM2VjcF9mbGFncykpO1xuJiM0MztcdGluX3htaXRfaGVsZCA9IHRydWU7XG4gXHQvKiByZXNldCByZWNlaXZlIHNpZGUgc3RhdGUgZm9yIHJkc190Y3BfZGF0YV9yZWN2KCkgZm9yIG9zb2NrICAqL1xuIFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmNwLVx1MDAzZWNwX3NlbmRfdyk7XG4gXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2Y3AtXHUwMDNlY3BfcmVjdl93KTtcbkBAIC0xNzIsNiAmIzQzOzE4MCwxMSBAQCB2b2lkIHJkc190Y3BfcmVzZXRfY2FsbGJhY2tzKHN0cnVjdCBzb2NrZXQgKnNvY2ssXG4gXHRsb2NrX3NvY2soc29jay1cdTAwM2Vzayk7XG4gXHRyZHNfdGNwX3NldF9jYWxsYmFja3Moc29jaywgY3ApO1xuIFx0cmVsZWFzZV9zb2NrKHNvY2stXHUwMDNlc2spO1xuJiM0MztcbiYjNDM7XHRpZiAoaW5feG1pdF9oZWxkKSB7XG4mIzQzO1x0XHRjbGVhcl9iaXRfdW5sb2NrKFJEU19JTl9YTUlULCBcdTAwMjZjcC1cdTAwM2VjcF9mbGFncyk7XG4mIzQzO1x0XHR3YWtlX3VwX2FsbChcdTAwMjZjcC1cdTAwM2VjcF93YWl0cSk7XG4mIzQzO1x0fVxuIH1cbiBcbiAvKiBBZGQgdGMgdG8gcmRzX3RjcF90Y19saXN0IGFuZCBzZXQgdGMtXHUwMDNldF9zb2NrLiBTZWUgY29tbWVudHNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwODoxMzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UkRTJiMzNDssCiAgICAmIzM0O1JEU19UQ1AmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtyZHNfY29ubl9zaHV0ZG93biYjMzQ7LAogICAgJiMzNDtyZHNfdGNwX3Jlc2V0X2NhbGxiYWNrcyYjMzQ7LAogICAgJiMzNDtyZHNfc2VuZF94bWl0JiMzNDssCiAgICAmIzM0O3Jkc19pbmNfaW5pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFJEUyBjb25uZWN0aW9uIHRlYXJkb3duLCByZXNldCwgYW5kIHRyYW5zbWl0IGxvZ2ljIHRvIGZpeCByYWNlIGNvbmRpdGlvbnMgYnkgdXNpbmcgYml0IGxvY2tzIGluc3RlYWQgb2YgcGxhaW4gYml0IHRlc3RzLiBJdCBhbHNvIGluaXRpYWxpemVzIGEgbGlzdCBpbiBgcmRzX3NlbmRfeG1pdGAgYW5kIGEgcG9pbnRlciBpbiBgcmRzX2luY19pbml0YC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgUkRTIHN1YnN5c3RlbSB0aGF0IGFyZSByZWFjaGFibGUgdmlhIFJEUyBzb2NrZXRzIG92ZXIgVENQLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgODBiNzMyNzIwYjNiZDRkMmQ5ZDNhZDBhMzY2OGZhZDA1ZDAwZjNmMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDYgMDg6MTM6MjggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvcmRzL2Nvbm5lY3Rpb24uYyBiL25ldC9yZHMvY29ubmVjdGlvbi5jCmluZGV4IDdjOGFiOGU5NzNlMWIuLjQwNmEwNzFlZmRkM2IgMTAwNjQ0Ci0tLSBhL25ldC9yZHMvY29ubmVjdGlvbi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yZHMvY29ubmVjdGlvbi5jCkBAIC00MDYsMTQgJiM0Mzs0MDYsMzIgQEAgdm9pZCByZHNfY29ubl9zaHV0ZG93bihzdHJ1Y3QgcmRzX2Nvbm5fcGF0aCAqY3ApCiAJCX0KIAkJbXV0ZXhfdW5sb2NrKCZhbXA7Y3AtJmd0O2NwX2NtX2xvY2spOwogCiYjNDM7CQkvKiBRdWllc2NlIHRoZSB0cmFuc21pdCBhbmQgcmVjZWl2ZS1yZWZpbGwgcGF0aHMgYnkKJiM0MzsJCSAqIGFjcXVpcmluZyB0aGVpciBiaXQgbG9ja3MsIG5vdCBtZXJlbHkgd2FpdGluZyBmb3IKJiM0MzsJCSAqIHRoZW0gdG8gYmUgcmVsZWFzZWQ6IHdpdGggYSBwbGFpbiB3YWl0LCBlaXRoZXIgcGF0aAomIzQzOwkJICogY2FuIHJlLXRha2UgaXRzIGxvY2sgdGhlIGluc3RhbnQgYWZ0ZXIgd2Ugc2FtcGxlIGl0CiYjNDM7CQkgKiBjbGVhciBhbmQgdGhlbiBydW4gY29uY3VycmVudGx5IHdpdGggdGhlIHRyYW5zcG9ydAomIzQzOwkJICogc2h1dGRvd24gYW5kIHRoZSBwYXRoIHJlc2V0IGJlbG93LiAgSG9sZGluZyBib3RoCiYjNDM7CQkgKiBsb2NrcyBhY3Jvc3MgdGhlIHRlYXJkb3duIG1ha2VzIHRoYXQgc3RydWN0dXJhbGx5CiYjNDM7CQkgKiBpbXBvc3NpYmxlLgomIzQzOwkJICovCiAJCXdhaXRfZXZlbnQoY3AtJmd0O2NwX3dhaXRxLAotCQkJICAgIXRlc3RfYml0KFJEU19JTl9YTUlULCAmYW1wO2NwLSZndDtjcF9mbGFncykpOwomIzQzOwkJCSAgICF0ZXN0X2FuZF9zZXRfYml0X2xvY2soUkRTX0lOX1hNSVQsICZhbXA7Y3AtJmd0O2NwX2ZsYWdzKSk7CiAJCXdhaXRfZXZlbnQoY3AtJmd0O2NwX3dhaXRxLAotCQkJICAgIXRlc3RfYml0KFJEU19SRUNWX1JFRklMTCwgJmFtcDtjcC0mZ3Q7Y3BfZmxhZ3MpKTsKJiM0MzsJCQkgICAhdGVzdF9hbmRfc2V0X2JpdChSRFNfUkVDVl9SRUZJTEwsICZhbXA7Y3AtJmd0O2NwX2ZsYWdzKSk7CiAKIAkJY29ubi0mZ3Q7Y190cmFucy0mZ3Q7Y29ubl9wYXRoX3NodXRkb3duKGNwKTsKIAkJcmRzX2Nvbm5fcGF0aF9yZXNldChjcCk7CiAKJiM0MzsJCS8qIHJkc19jb25uX3BhdGhfcmVzZXQoKSBhbHJlYWR5IGNsZWFyZWQgY3BfZmxhZ3MsIGJ1dAomIzQzOwkJICogcmVsZWFzZSB0aGUgdHdvIGxvY2tzIGV4cGxpY2l0bHkgYW5kIHdha2UgYW55IHdhaXRlcgomIzQzOwkJICogKGUuZy4gcmRzX3RjcF9yZXNldF9jYWxsYmFja3MoKSkgdGhhdCBzYW1wbGVkIHRoZQomIzQzOwkJICogbG9ja3Mgd2hpbGUgd2UgaGVsZCB0aGVtLgomIzQzOwkJICovCiYjNDM7CQljbGVhcl9iaXRfdW5sb2NrKFJEU19JTl9YTUlULCAmYW1wO2NwLSZndDtjcF9mbGFncyk7CiYjNDM7CQljbGVhcl9iaXQoUkRTX1JFQ1ZfUkVGSUxMLCAmYW1wO2NwLSZndDtjcF9mbGFncyk7CiYjNDM7CQl3YWtlX3VwX2FsbCgmYW1wO2NwLSZndDtjcF93YWl0cSk7CiYjNDM7CiAJCWlmICghcmRzX2Nvbm5fcGF0aF90cmFuc2l0aW9uKGNwLCBSRFNfQ09OTl9ESVNDT05ORUNUSU5HLAogCQkJCQkgICAgICBSRFNfQ09OTl9ET1dOKSAmYW1wOyZhbXA7CiAJCSAgICAhcmRzX2Nvbm5fcGF0aF90cmFuc2l0aW9uKGNwLCBSRFNfQ09OTl9FUlJPUiwKZGlmZiAtLWdpdCBhL25ldC9yZHMvcmVjdi5jIGIvbmV0L3Jkcy9yZWN2LmMKaW5kZXggY2YzODg0ZDg3OTMxOS4uZjE1MTNkZmIyNzE2NSAxMDA2NDQKLS0tIGEvbmV0L3Jkcy9yZWN2LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3Jkcy9yZWN2LmMKQEAgLTQ3LDYgJiM0Mzs0Nyw3IEBAIHZvaWQgcmRzX2luY19pbml0KHN0cnVjdCByZHNfaW5jb21pbmcgKmluYywgc3RydWN0IHJkc19jb25uZWN0aW9uICpjb25uLAogCXJlZmNvdW50X3NldCgmYW1wO2luYy0mZ3Q7aV9yZWZjb3VudCwgMSk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtpbmMtJmd0O2lfaXRlbSk7CiAJaW5jLSZndDtpX2Nvbm4gPSBjb25uOwomIzQzOwlpbmMtJmd0O2lfY29ubl9wYXRoID0gTlVMTDsKIAlpbmMtJmd0O2lfc2FkZHIgPSAqc2FkZHI7CiAJaW5jLSZndDtpX3VzZXJjb3B5LnJkbWFfY29va2llID0gMDsKIAlpbmMtJmd0O2lfdXNlcmNvcHkucnhfdHN0YW1wID0ga3RpbWVfc2V0KDAsIDApOwpkaWZmIC0tZ2l0IGEvbmV0L3Jkcy9zZW5kLmMgYi9uZXQvcmRzL3NlbmQuYwppbmRleCAzMDkwMjFlMGNjOWJjLi5jMjhkYzlmODIwYWYwIDEwMDY0NAotLS0gYS9uZXQvcmRzL3NlbmQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvcmRzL3NlbmQuYwpAQCAtMjAwLDYgJiM0MzsyMDAsMTIgQEAgaW50IHJkc19zZW5kX3htaXQoc3RydWN0IHJkc19jb25uX3BhdGggKmNwKQogcmVzdGFydDoKIAliYXRjaF9jb3VudCA9IDA7CiAKJiM0MzsJLyogVGhlIGRyb3AgcHJvY2Vzc2luZyBhZnRlciBvdmVyX2JhdGNoIHJlbGllcyBvbiB0aGUgY2FsbGVlcwomIzQzOwkgKiBlbXB0eWluZyB0b19iZV9kcm9wcGVkIGVudHJ5IGJ5IGVudHJ5OyByZS1pbml0aWFsaXplIGl0IGhlcmUKJiM0MzsJICogcmF0aGVyIHRoYW4gZGVwZW5kaW5nIG9uIHRoYXQgaW1wbGljaXQgYmVoYXZpb3IuCiYjNDM7CSAqLwomIzQzOwlJTklUX0xJU1RfSEVBRCgmYW1wO3RvX2JlX2Ryb3BwZWQpOwomIzQzOwogCS8qCiAJICogc2VuZG1zZyBjYWxscyBoZXJlIGFmdGVyIGhhdmluZyBxdWV1ZWQgaXRzIG1lc3NhZ2Ugb24gdGhlIHNlbmQKIAkgKiBxdWV1ZS4gIFdlIG9ubHkgaGF2ZSBvbmUgdGFzayBmZWVkaW5nIHRoZSBjb25uZWN0aW9uIGF0IGEgdGltZS4gIElmCmRpZmYgLS1naXQgYS9uZXQvcmRzL3RjcC5jIGIvbmV0L3Jkcy90Y3AuYwppbmRleCBiMjYzNjM0YWM3NTBkLi4wNDJkM2ZkYmRmN2ZlIDEwMDY0NAotLS0gYS9uZXQvcmRzL3RjcC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yZHMvdGNwLmMKQEAgLTEyOCw2ICYjNDM7MTI4LDcgQEAgdm9pZCByZHNfdGNwX3Jlc2V0X2NhbGxiYWNrcyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLAogewogCXN0cnVjdCByZHNfdGNwX2Nvbm5lY3Rpb24gKnRjID0gY3AtJmd0O2NwX3RyYW5zcG9ydF9kYXRhOwogCXN0cnVjdCBzb2NrZXQgKm9zb2NrID0gdGMtJmd0O3Rfc29jazsKJiM0MzsJYm9vbCBpbl94bWl0X2hlbGQgPSBmYWxzZTsKIAogCWlmICghb3NvY2spCiAJCWdvdG8gbmV3c29jazsKQEAgLTE1Myw3ICYjNDM7MTU0LDE0IEBAIHZvaWQgcmRzX3RjcF9yZXNldF9jYWxsYmFja3Moc3RydWN0IHNvY2tldCAqc29jaywKIAkgKiBjYW5ub3QgbWFyayByZHNfY29ubl9wYXRoX3VwKCkgaW4gdGhlIHdpbmRvdyBiZWZvcmUgbG9ja19zb2NrKCkKIAkgKi8KIAlhdG9taWNfc2V0KCZhbXA7Y3AtJmd0O2NwX3N0YXRlLCBSRFNfQ09OTl9SRVNFVFRJTkcpOwotCXdhaXRfZXZlbnQoY3AtJmd0O2NwX3dhaXRxLCAhdGVzdF9iaXQoUkRTX0lOX1hNSVQsICZhbXA7Y3AtJmd0O2NwX2ZsYWdzKSk7CiYjNDM7CS8qIEFjcXVpcmUgdGhlIHNlbmQtcGF0aCBsb2NrIHJhdGhlciB0aGFuIHdhaXRpbmcgZm9yIGl0IHRvIGJlCiYjNDM7CSAqIHJlbGVhc2VkOiBhIG1lcmUgd2FpdCBpcyByYWN5LCBzaW5jZSByZHNfc2VuZF94bWl0KCkgbWF5IHRha2UKJiM0MzsJICogdGhlIGxvY2sgYWdhaW4gcmlnaHQgYWZ0ZXIgd2Ugc2FtcGxlIGl0IGNsZWFyIGFuZCB0aGVuIHJ1bgomIzQzOwkgKiBjb25jdXJyZW50bHkgd2l0aCByZHNfc2VuZF9wYXRoX3Jlc2V0KCkgYmVsb3cuCiYjNDM7CSAqLwomIzQzOwl3YWl0X2V2ZW50KGNwLSZndDtjcF93YWl0cSwKJiM0MzsJCSAgICF0ZXN0X2FuZF9zZXRfYml0X2xvY2soUkRTX0lOX1hNSVQsICZhbXA7Y3AtJmd0O2NwX2ZsYWdzKSk7CiYjNDM7CWluX3htaXRfaGVsZCA9IHRydWU7CiAJLyogcmVzZXQgcmVjZWl2ZSBzaWRlIHN0YXRlIGZvciByZHNfdGNwX2RhdGFfcmVjdigpIGZvciBvc29jayAgKi8KIAljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmFtcDtjcC0mZ3Q7Y3Bfc2VuZF93KTsKIAljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmFtcDtjcC0mZ3Q7Y3BfcmVjdl93KTsKQEAgLTE3Miw2ICYjNDM7MTgwLDExIEBAIHZvaWQgcmRzX3RjcF9yZXNldF9jYWxsYmFja3Moc3RydWN0IHNvY2tldCAqc29jaywKIAlsb2NrX3NvY2soc29jay0mZ3Q7c2spOwogCXJkc190Y3Bfc2V0X2NhbGxiYWNrcyhzb2NrLCBjcCk7CiAJcmVsZWFzZV9zb2NrKHNvY2stJmd0O3NrKTsKJiM0MzsKJiM0MzsJaWYgKGluX3htaXRfaGVsZCkgewomIzQzOwkJY2xlYXJfYml0X3VubG9jayhSRFNfSU5fWE1JVCwgJmFtcDtjcC0mZ3Q7Y3BfZmxhZ3MpOwomIzQzOwkJd2FrZV91cF9hbGwoJmFtcDtjcC0mZ3Q7Y3Bfd2FpdHEpOwomIzQzOwl9CiB9CiAKIC8qIEFkZCB0YyB0byByZHNfdGNwX3RjX2xpc3QgYW5kIHNldCB0Yy0mZ3Q7dF9zb2NrLiBTZWUgY29tbWVudHMKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDg6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUzNwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBOZXR3b3JrIFN0YWNrIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgYXR0ZW50aW9uIGlzIGRyYXduIHRvIHRoZSBtb2RpZmljYXRpb25zIGFjcm9zcyB0aGUgUkRTIHN1YnN5c3RlbSDigJMgYGNvbm5lY3Rpb24uY2AsIGByZWN2LmNgLCBgc2VuZC5jYCwgYW5kIGB0Y3AuY2AuIEl0IHNlZW1zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBjcml0aWNhbCB0aHJlYWRpbmcgaXNzdWUgc3Vycm91bmRpbmcgdGhlIGhhbmRsaW5nIG9mIHRoZSBgUkRTX0lOX1hNSVRgIGFuZCBgUkRTX1JFQ1ZfUkVGSUxMYCBmbGFncyB3aXRoaW4gYHJkc19jb25uX3NodXRkb3duYCBhbmQgYHJkc190Y3BfcmVzZXRfY2FsbGJhY2tzYC4gVGhlIHVzZSBvZiBgdGVzdF9hbmRfc2V0X2JpdF9sb2NrYCBhbmQgYHRlc3RfYW5kX3NldF9iaXRgIGluc3RlYWQgb2YgdGhlIG1vcmUgY29tbW9uIGB0ZXN0X2JpdGAgaW4gdGhlc2UgZnVuY3Rpb25zIGlzIGEgY2xlYXIgaW5kaWNhdGlvbiB0aGF0IHJhY2UgY29uZGl0aW9ucyB3ZXJlIHByZXNlbnQsIGFuZCB0aGlzIHBhdGNoIGFpbXMgdG8gZWxpbWluYXRlIHRoZW0uIEdvb2QsIHRoYXQmIzM5O3MgdGhlIHJpZ2h0IGFwcHJvYWNoLgoKSSBhbHNvIG5vdGljZSBjaGFuZ2VzIGluIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgYHRvX2JlX2Ryb3BwZWRgIGxpc3Qgd2l0aGluIGByZHNfc2VuZF94bWl0YCBhbmQgdGhlIHNldHRpbmcgb2YgYGluYy0mZ3Q7aV9jb25uX3BhdGggPSBOVUxMYCBpbiBgcmRzX2luY19pbml0YC4gVGhlc2UgYXJlIGxpa2VseSByZWxhdGVkIHRvIGNvbm5lY3Rpb24gdGVhcmRvd24gYW5kIGNsZWFudXAsIHdoaWNoIG1ha2VzIHNlbnNlIGdpdmVuIHRoZSBmb2N1cyBvbiBzaHV0ZG93bi4KCkJlZm9yZSBJIGRpZyBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIGNvZGUsIEkmIzM5O20gZ29pbmcgdG8gcnVuIGEgcXVpY2sgYGdyZXBgIHRvIHZlcmlmeSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFzc29jaWF0ZWQgd2l0aCBSRFMuIEl0JiMzOTtzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBzeXN0ZW0gaXMgY29uZmlndXJlZCB0byBwcm9wZXJseSBpbnRlcnByZXQgdGhlIGNoYW5nZXMuIFRoaXMgd2lsbCBhbHNvIGdpdmUgbWUgdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHdoZXJlIFJEUyBpcyB1c2VkIGFuZCBpZiB0aGVyZSBhcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMgdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQuIEFscmlnaHQsIGxldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29uZmlndXJhdGlvbiByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA4OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSRFMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcmRzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3Jkcy9LY29uZmlnLTItXG5uZXQvcmRzL0tjb25maWc6Mzpjb25maWcgUkRTXG5uZXQvcmRzL0tjb25maWctNC1cdHRyaXN0YXRlIFwmIzM0O1RoZSBSZWxpYWJsZSBEYXRhZ3JhbSBTb2NrZXRzIFByb3RvY29sXCYjMzQ7XG4tLVxubmV0L3Jkcy9LY29uZmlnLTktXG5uZXQvcmRzL0tjb25maWc6MTA6Y29uZmlnIFJEU19SRE1BXG5uZXQvcmRzL0tjb25maWctMTEtXHR0cmlzdGF0ZSBcJiMzNDtSRFMgb3ZlciBJbmZpbmliYW5kXCYjMzQ7XG4tLVxubmV0L3Jkcy9LY29uZmlnLTE2LVxubmV0L3Jkcy9LY29uZmlnOjE3OmNvbmZpZyBSRFNfVENQXG5uZXQvcmRzL0tjb25maWctMTgtXHR0cmlzdGF0ZSBcJiMzNDtSRFMgb3ZlciBUQ1BcJiMzNDtcbi0tXG5uZXQvcmRzL0tjb25maWctMjQtXG5uZXQvcmRzL0tjb25maWc6MjU6Y29uZmlnIFJEU19ERUJVR1xubmV0L3Jkcy9LY29uZmlnLTI2LVx0Ym9vbCBcJiMzNDtSRFMgZGVidWdnaW5nIG1lc3NhZ2VzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDg6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI4MwoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFJEUyBGdXp6aW5nIFN0cmF0ZWd5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBSRFNgIGFuZCBgUkRTX1RDUGAgY29uZmlndXJhdGlvbiwgYW5kIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGlkZW50aWZ5IHRoZSBrZXkgbW9kaWZpZWQgZnVuY3Rpb25zIGZvciBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXRzLiBNeSBleWVzIGFyZSBkcmF3biB0byBgcmRzX2Nvbm5fc2h1dGRvd25gLCBgcmRzX2luY19pbml0YCwgYHJkc19zZW5kX3htaXRgLCBhbmQgYHJkc190Y3BfcmVzZXRfY2FsbGJhY2tzYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlaXIgY2FsbCBwYXRocy4KCmByZHNfY29ubl9zaHV0ZG93bmAgaXMgY2xlYXJseSB0aWVkIHRvIGNvbm5lY3Rpb24gZGVzdHJ1Y3Rpb24gYW5kIGRyb3BwaW5nLCBhcHBlYXJpbmcgd2l0aGluIGByZHNfY29ubl9kZXN0cm95YCBhbmQgYHJkc19jb25uX2Ryb3BgLiBUaGF04oCZcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgY29ubmVjdGlvbiBsaWZlY3ljbGUgdnVsbmVyYWJpbGl0aWVzLiBgcmRzX3NlbmRfeG1pdGAgbG9va3MgaW50ZXJlc3Rpbmc7IGl04oCZcyBpbnZva2VkIGJ5IGByZHNfc2VuZG1zZ2AgYW5kIHdvcmtlciB0aHJlYWRzIOKAkyBpbmRpY2F0aW5nIGl04oCZcyBpbnZvbHZlZCBpbiBkYXRhIHRyYW5zbWlzc2lvbiwgc28gSSBkZWZpbml0ZWx5IG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IuIFRoZW4gYHJkc190Y3BfcmVzZXRfY2FsbGJhY2tzYCBpcyBjYWxsZWQgZHVyaW5nIFRDUCBjb25uZWN0aW9uIGFjY2VwdGFuY2UgKGByZHNfdGNwX2FjY2VwdF9vbmVgKSBvciBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgKGByZHNfdGNwX2Nvbm5fcGF0aF9jb25uZWN0YCksIGhpZ2hsaWdodGluZyBwb3NzaWJsZSB2dWxuZXJhYmlsaXRpZXMgaW4gVENQL1JEUyBpbnRlcmFjdGlvbi4KCk5vdywgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludHMgZm9yIGZ1enppbmcuIGByZHNfc2VuZG1zZ2AgYW5kIGByZHNfcmVjdm1zZ2AganVtcCBvdXQgYXMgb2J2aW91cyBjYW5kaWRhdGVzOyB0aGV5IGhhbmRsZSBzZW5kIGFuZCByZWNlaXZlIG9wZXJhdGlvbnMsIG1ha2luZyB0aGVtIHByaW1lIHRhcmdldHMuIGByZHNfYmluZGAgYW5kIGByZHNfY29ubmVjdGAgYXJlIHRoZSBzb2NrZXQgc2V0dXAgZnVuY3Rpb25zLCBhbmQgc2hvdWxkIGRlZmluaXRlbHkgYmUgZXhhbWluZWQuIFdoaWxlIGByZHNfdGNwX2FjY2VwdF9vbmVgIGlzIGludGVybmFsLCBpdCYjMzk7cyB0cmlnZ2VyZWQgYnkgaW5jb21pbmcgVENQIGNvbm5lY3Rpb25zIHRvIHRoZSBSRFMgcG9ydCwgc28gaXQmIzM5O3MgYSBjcml0aWNhbCBwb2ludCB0byBjb25zaWRlciwgZXNwZWNpYWxseSBnaXZlbiB0aGUgZHVhbCBuYXR1cmUgb2YgUkRTL1RDUC4KCkZpbmFsbHksIEkgbmVlZCB0byBjaGVjayBgbmV0L3Jkcy9hZl9yZHMuY2AgdG8gbG9vayBhdCBzb2NrZXQgb3BlcmF0aW9ucy4gVGhpcyB3aWxsIGdpdmUgbWUgdGhlIGJlc3QgaW5zaWdodCBpbnRvIFJEUyBzb2NrZXQgYmVoYXZpb3IuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gUkRTIGFuZCBUQ1AgdG8gYmUgc3VyZSBJIGZpbmQgdGhlIG1vcmUgaW50ZXJlc3RpbmcgZmxhd3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDg6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RydWN0IHByb3RvX29wcyByZHNfcHJvdG9fb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3Jkcy9hZl9yZHMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcmRzL2FmX3Jkcy5jPTY0MD1zdGF0aWMgc3RydWN0IHByb3RvIHJkc19wcm90byA9IHtcbi0tXG5uZXQvcmRzL2FmX3Jkcy5jLTY0NS1cbm5ldC9yZHMvYWZfcmRzLmM6NjQ2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHJkc19wcm90b19vcHMgPSB7XG5uZXQvcmRzL2FmX3Jkcy5jLTY0Ny1cdC5mYW1pbHkgPVx0QUZfUkRTLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA4OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNzcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGFzIGlmIHRoZXkmIzM5O3JlIG15IG93bjoKCioqQW5hbHl6aW5nIGByZHNfcHJvdG9fb3BzYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB0YWtlIGEgcGVlayBhdCB0aGUgY29udGVudHMgb2YgYHJkc19wcm90b19vcHNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVuZGFtZW50YWwgb3BlcmF0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhpcyBzdHJ1Y3R1cmUuIFRoaXMgaXMgbGlrZWx5IHRoZSBoZWFydCBvZiBob3cgdGhpcyBuZXR3b3JrIHByb3RvY29sLCB3aGF0ZXZlciBpdCBpcywgaW50ZXJhY3RzIGF0IGEgbG93IGxldmVsLiBHaXZlbiBteSBleHBlcnRpc2UsIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgdGhhdCB0aGlzIHdpbGwgZGVmaW5lIHRoZSBjcnVjaWFsIGZ1bmN0aW9ucyBsaWtlIGBjb25uZWN0YCwgYHNlbmRgLCBgcmVjZWl2ZWAsIGBkaXNjb25uZWN0YCwgYW5kIHBvc3NpYmx5IGVycm9yIGhhbmRsaW5nIHJvdXRpbmVzLiBJJiMzOTttIGtlZW4gdG8gc2VlIHRoZSBzcGVjaWZpYyBkYXRhIHN0cnVjdHVyZXMgYW5kIGZ1bmN0aW9uIHNpZ25hdHVyZXMgaW52b2x2ZWQ7IGl0IHdpbGwgYmUgYSBnb29kIGluZGljYXRvciBvZiBpdHMgZGVzaWduIGFuZCBwZXJmb3JtYW5jZSBnb2Fscy4gSXMgaXQgb3B0aW1pemVkIGZvciBsb3cgbGF0ZW5jeSwgaGlnaCB0aHJvdWdocHV0LCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gQSBxdWljayBnbGFuY2Ugd2lsbCBnaXZlIG1lIGNsdWVzIGFib3V0IHRoZSBleHBlY3RlZCB3b3JrIGZsb3cgYW5kIHN0YXRlIG1hbmFnZW1lbnQuIEkmIzM5O20gaG9waW5nIGl0JiMzOTtzIHdlbGwtZG9jdW1lbnRlZCBvciBhdCBsZWFzdCB1c2VzIGRlc2NyaXB0aXZlIG5hbWVzISBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDg6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmRzX3Byb3RvX29wcyA9IFxceyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9yZHMvYWZfcmRzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3Jkcy9hZl9yZHMuYz02NDA9c3RhdGljIHN0cnVjdCBwcm90byByZHNfcHJvdG8gPSB7XG4tLVxubmV0L3Jkcy9hZl9yZHMuYy02NDUtXG5uZXQvcmRzL2FmX3Jkcy5jOjY0NjpzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyByZHNfcHJvdG9fb3BzID0ge1xubmV0L3Jkcy9hZl9yZHMuYy02NDctXHQuZmFtaWx5ID1cdEFGX1JEUyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwODoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NDU3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBgYWZfcmRzLmNgKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSYjMzk7bSBnb2luZyB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGBuZXQvcmRzL2FmX3Jkcy5jYCBmaWxlLiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZm9jdXNpbmcgbXkgYXR0ZW50aW9uIGFyb3VuZCBsaW5lIDY0Ni4gSSBrbm93IHRoaXMgY29kZSBiYXNlIHByZXR0eSB3ZWxsLCBzbyBteSBpbnR1aXRpb24gdGVsbHMgbWUgc29tZXRoaW5nIGludGVyZXN0aW5nIGlzIGhhcHBlbmluZyB0aGVyZSwgcHJvYmFibHkgcmVsYXRlZCB0b+KApiB3ZWxsLCB0aGF0JiMzOTtzIHdoYXQgSSBuZWVkIHRvIGZpbmQgb3V0LCBpc24mIzM5O3QgaXQ/IExldCBtZSBqdXN0IHB1bGwgdGhhdCBmaWxlIHVwIGFuZCBnZXQgc2l0dWF0ZWQuIEkgZXhwZWN0IHRoaXMgc2VjdGlvbiB0byBiZSBhYm91dC4uLiBbSSBtZW50YWxseSBzdGFydCBoeXBvdGhlc2l6aW5nIGJhc2VkIG9uIG15IGV4aXN0aW5nIGtub3dsZWRnZSBvZiB0aGUgUkRTIHByb3RvY29sIGFuZCBnZW5lcmFsIG5ldHdvcmtpbmcgc3RhY2ssIGFudGljaXBhdGluZyB3aGF0IEkmIzM5O20gbGlrZWx5IHRvIGVuY291bnRlciBvbiBvciBhcm91bmQgdGhhdCBsaW5lXS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDg6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvcmRzL2FmX3Jkcy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2NDA6XHRzdGF0aWMgc3RydWN0IHByb3RvIHJkc19wcm90byA9IHtcbiA2NDE6XHRcdC5uYW1lXHQgID0gXCYjMzQ7UkRTXCYjMzQ7LFxuIDY0MjpcdFx0Lm93bmVyXHQgID0gVEhJU19NT0RVTEUsXG4gNjQzOlx0XHQub2JqX3NpemUgPSBzaXplb2Yoc3RydWN0IHJkc19zb2NrKSxcbiA2NDQ6XHR9O1xuIDY0NTpcdFxuIDY0NjpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHJkc19wcm90b19vcHMgPSB7XG4gNjQ3Olx0XHQuZmFtaWx5ID1cdEFGX1JEUyxcbiA2NDg6XHRcdC5vd25lciA9XHRUSElTX01PRFVMRSxcbiA2NDk6XHRcdC5yZWxlYXNlID1cdHJkc19yZWxlYXNlLFxuIDY1MDpcdFx0LmJpbmQgPVx0XHRyZHNfYmluZCxcbiA2NTE6XHRcdC5jb25uZWN0ID1cdHJkc19jb25uZWN0LFxuIDY1MjpcdFx0LnNvY2tldHBhaXIgPVx0c29ja19ub19zb2NrZXRwYWlyLFxuIDY1MzpcdFx0LmFjY2VwdCA9XHRzb2NrX25vX2FjY2VwdCxcbiA2NTQ6XHRcdC5nZXRuYW1lID1cdHJkc19nZXRuYW1lLFxuIDY1NTpcdFx0LnBvbGwgPVx0XHRyZHNfcG9sbCxcbiA2NTY6XHRcdC5pb2N0bCA9XHRyZHNfaW9jdGwsXG4gNjU3Olx0XHQubGlzdGVuID1cdHNvY2tfbm9fbGlzdGVuLFxuIDY1ODpcdFx0LnNodXRkb3duID1cdHNvY2tfbm9fc2h1dGRvd24sXG4gNjU5Olx0XHQuc2V0c29ja29wdCA9XHRyZHNfc2V0c29ja29wdCxcbiA2NjA6XHRcdC5nZXRzb2Nrb3B0X2l0ZXIgPVx0cmRzX2dldHNvY2tvcHQsXG4gNjYxOlx0XHQuc2VuZG1zZyA9XHRyZHNfc2VuZG1zZyxcbiA2NjI6XHRcdC5yZWN2bXNnID1cdHJkc19yZWN2bXNnLFxuIDY2MzpcdFx0Lm1tYXAgPVx0XHRzb2NrX25vX21tYXAsXG4gNjY0Olx0fTtcbiA2NjU6XHRcbiA2NjY6XHRzdGF0aWMgdm9pZCByZHNfc29ja19kZXN0cnVjdChzdHJ1Y3Qgc29jayAqc2spXG4gNjY3Olx0e1xuIDY2ODpcdFx0c3RydWN0IHJkc19zb2NrICpycyA9IHJkc19za190b19ycyhzayk7XG4gNjY5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA4OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxNjcKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBmdW5jdGlvbnMsIHB1dHRpbmcgbXlzZWxmIGluIHRoZSBleHBlcnQmIzM5O3Mgc2hvZXM6CgoqKkFuYWx5emluZyBSRFMgRnVuY3Rpb24gQ2FsbCBQYXRocyoqCgpSaWdodCwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi4gTXkgcHJpbWFyeSBjb25jZXJuIGhlcmUgaXMgdW5kZXJzdGFuZGluZyB0aGUga2V5IGNvbm5lY3Rpb24gYW5kIHNlbmQvcmVjZWl2ZSBwYXRocywgYW5kIGhvdyB0aGV5IGludGVyYWN0LiBUaGUgbGlzdCBvZiBtb2RpZmllZCBmdW5jdGlvbnMgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBMZXQmIzM5O3Mgc2VlLi4uCgpgcmRzX2Nvbm5fc2h1dGRvd25gIGlzIGRlZmluaXRlbHkgaW50ZXJlc3RpbmcuIFRoZSB0ZXh0IHNheXMgaXQmIzM5O3MgY2FsbGVkIGZyb20gYm90aCBgcmRzX2Nvbm5fZGVzdHJveWAgYW5kIGByZHNfY29ubl9kcm9wYC4gVGhhdCBpbW1lZGlhdGVseSBzdWdnZXN0cyBpdCBoYW5kbGVzIGEgZ3JhY2VmdWwgb3IgZm9yY2VkIHRlcm1pbmF0aW9uIG9mIGFuIFJEUyBjb25uZWN0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRob3NlIGNhbGxpbmcgZnVuY3Rpb25zIHRvIGRldGVybWluZSB0aGUgZXhhY3Qgc2NlbmFyaW9zIHRyaWdnZXJpbmcgc2h1dGRvd24uIGByZHNfY29ubl9kZXN0cm95YCBpbXBsaWVzIGEgc3RhbmRhcmQgY2xlYW51cCwgd2hpbGUgYHJkc19jb25uX2Ryb3BgIGxpa2VseSBzdWdnZXN0cyBhbiBlcnJvciBvciBleHBsaWNpdCBkaXNjb25uZWN0LiBJJiMzOTtsbCBiZXQgaXQgaGFuZGxlcyByZWxlYXNpbmcgcmVzb3VyY2VzIGFuZCBzZW5kaW5nIGFwcHJvcHJpYXRlIHNpZ25hbGluZywgcG90ZW50aWFsbHkgY2xvc2luZyBzb2NrZXRzLCBldGMuCgpOb3csIGByZHNfc2VuZF94bWl0YCBpbW1lZGlhdGVseSBjYXRjaGVzIG15IGV5ZSBhcyBhIHBvdGVudGlhbCBib3R0bGVuZWNrIG9yIGNyaXRpY2FsIHBhdGggZm9yIGRhdGEgdHJhbnNtaXNzaW9uLiBUaGUgdGV4dCBub3RlcyBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgcmRzX3NlbmRtc2dgLiBPa2F5LCBJIGV4cGVjdGVkIHRoYXQuIEJ1dCB0aGUgYWRkaXRpb24gb2YgJiMzNDt2aWEgYHJkc19zZW5kX3htaXRgIGRpcmVjdGx5PyBMZXQmIzM5O3MgY2hlY2smIzM0OyBpcyBjcnVjaWFsLiBUaGlzIG1lYW5zIEkgbmVlZCB0byAqY29uZmlybSogdGhlIGV4YWN0IGNhbGwgY2hhaW4uIFdoaWxlIHRoZSB0ZXh0IGltcGxpZXMgaXQgaXMsIEkgY2FuJiMzOTt0IHRha2UgYW55dGhpbmcgZm9yIGdyYW50ZWQuIFRoZXJlIG1pZ2h0IGJlIGFuIGluZGlyZWN0IHBhdGggb3IgYWRkaXRpb25hbCBsYXllcnMgb2YgYWJzdHJhY3Rpb24gdG8gY29uc2lkZXIuIFVuZGVyc3RhbmRpbmcgaWYgYHJkc19zZW5kbXNnYCBkaXJlY3RseSBjYWxscyBpdCwgb3IgaWYgdGhlcmUmIzM5O3MgYSB3cmFwcGVyLCBpcyBlc3NlbnRpYWwgZm9yIHBlcmZvcm1hbmNlIGFuYWx5c2lzIGFuZCBkZWJ1Z2dpbmcgc2VuZC1wYXRoIGlzc3Vlcy4gQXJlIHRoZXJlIGFueSBxdWV1ZWluZyBvciBmbG93IGNvbnRyb2wgc3RlcHMgaW4gYmV0d2Vlbj8gSSYjMzk7bGwgbmVlZCB0byBjYXJlZnVsbHkgZXhhbWluZSB0aGUgY29kZS4KClRoZSBpbmNsdXNpb24gb2YgYHJkc190Y3BfcmVzZXRfY2FsbGJhY2tzYCBpcyBhbHNvIHdvcnRoIGEgbG9vay4gVGhlIHByZXNlbmNlIG9mIFRDUCBzdWdnZXN0cyBzb21lIHR5cGUgb2Ygc29ja2V0IGludGVyYWN0aW9uIGlzIGludm9sdmVkLiBJJiMzOTtsbCBiZSBpbnRlcmVzdGVkIGluIHdoYXQgdGhlIGBjYWxsYmFja3NgIGRvLCBhbmQgd2hhdCB0eXBlIG9mIGV2ZW50cyB0aGV5IGFyZSBoYW5kbGluZy4KCk92ZXJhbGwsIHRoaXMgb3V0bGluZXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJJiMzOTtsbCBub3cgZGlnIGludG8gZWFjaCBvZiB0aGVzZSBmdW5jdGlvbnMgdG8gdW5kZXJzdGFuZCB0aGUgbWVjaGFuaWNzLCB0aGUgcmVzb3VyY2UgdXNhZ2UsIGFuZCB0aGUgdGhyZWFkIHNhZmV0eSBjb25zaWRlcmF0aW9ucy4gVGhlIGNhbGwgZ3JhcGggZm9yIHRoaXMgbW9kdWxlIGlzIGNsZWFybHkgZ29pbmcgdG8gYmUgaW1wb3J0YW50IGluIHVuZGVyc3RhbmRpbmcgdGhlIGRhdGEgZmxvd3MgYW5kIHBvdGVudGlhbCBjb250ZW50aW9uIHBvaW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDg6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmRzX3NlbmRfeG1pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9yZHMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9yZHMvY29uZy5jPTIxNz12b2lkIHJkc19jb25nX3F1ZXVlX3VwZGF0ZXMoc3RydWN0IHJkc19jb25nX21hcCAqbWFwKVxuLS1cbm5ldC9yZHMvY29uZy5jLTIzMC1cdFx0XHRyZHNfc3RhdHNfaW5jKHNfY29uZ191cGRhdGVfcXVldWVkKTtcbm5ldC9yZHMvY29uZy5jOjIzMTpcdFx0XHQvKiBXZSBjYW5ub3QgaW5saW5lIHRoZSBjYWxsIHRvIHJkc19zZW5kX3htaXQoKSBoZXJlXG5uZXQvcmRzL2NvbmcuYy0yMzItXHRcdFx0ICogZm9yIHR3byByZWFzb25zIChib3RoIHBlcnRhaW5pbmcgdG8gYSBUQ1AgdHJhbnNwb3J0KTpcbi0tXG5uZXQvcmRzL2liX2NtLmM9MjgyPXN0YXRpYyB2b2lkIHJkc19pYl90YXNrbGV0X2ZuX3NlbmQodW5zaWduZWQgbG9uZyBkYXRhKVxuLS1cbm5ldC9yZHMvaWJfY20uYy0yOTktXHQgICAgdGVzdF9iaXQoMCwgXHUwMDI2Y29ubi1cdTAwM2VjX21hcF9xdWV1ZWQpKSlcbm5ldC9yZHMvaWJfY20uYzozMDA6XHRcdHJkc19zZW5kX3htaXQoXHUwMDI2aWMtXHUwMDNlY29ubi1cdTAwM2VjX3BhdGhbMF0pO1xubmV0L3Jkcy9pYl9jbS5jLTMwMS19XG4tLVxubmV0L3Jkcy9pYl9zZW5kLmM9MjQ1PXZvaWQgcmRzX2liX3NlbmRfY3FlX2hhbmRsZXIoc3RydWN0IHJkc19pYl9jb25uZWN0aW9uICppYywgc3RydWN0IGliX3djICp3Yylcbi0tXG5uZXQvcmRzL2liX3NlbmQuYy0zMzUtICpcbm5ldC9yZHMvaWJfc2VuZC5jOjMzNjogKiBUaGUgUkRTIHNlbmQgY29kZSBpcyBlc3NlbnRpYWxseSBzaW5nbGUtdGhyZWFkZWQ7IHJkc19zZW5kX3htaXRcbm5ldC9yZHMvaWJfc2VuZC5jLTMzNy0gKiBzZXRzIFJEU19JTl9YTUlUIHRvIGVuc3VyZSBleGNsdXNpdmUgYWNjZXNzIHRvIHRoZSBzZW5kIHJpbmcuXG4tLVxubmV0L3Jkcy9sb29wLmM9MjMxPXZvaWQgcmRzX2xvb3BfbmV0X2V4aXQodm9pZClcbi0tXG5uZXQvcmRzL2xvb3AuYy0yMzctICogVGhpcyBpcyBtaXNzaW5nIC54bWl0XyogYmVjYXVzZSBsb29wIGRvZXNuJiMzOTt0IGdvIHRocm91Z2ggZ2VuZXJpY1xubmV0L3Jkcy9sb29wLmM6MjM4OiAqIHJkc19zZW5kX3htaXQoKSBhbmQgZG9lc24mIzM5O3QgY2FsbCByZHNfcmVjdl9pbmNvbWluZygpLiAgLmxpc3Rlbl9zdG9wIGFuZFxubmV0L3Jkcy9sb29wLmMtMjM5LSAqIC5sYWRkcl9jaGVjayBhcmUgbWlzc2luZyBiZWNhdXNlIHRyYW5zcG9ydC5jIGRvZXNuJiMzOTt0IGl0ZXJhdGUgb3ZlclxuLS1cbm5ldC9yZHMvcmRzLmg9NTQwPXN0cnVjdCByZHNfdHJhbnNwb3J0IHtcbi0tXG5uZXQvcmRzL3Jkcy5oLTU4MC1cdC8qXG5uZXQvcmRzL3Jkcy5oOjU4MTpcdCAqIC54bWl0IGlzIGNhbGxlZCBieSByZHNfc2VuZF94bWl0KCkgdG8gdGVsbCB0aGUgdHJhbnNwb3J0IHRvIHNlbmRcbm5ldC9yZHMvcmRzLmgtNTgyLVx0ICogcGFydCBvZiBhIG1lc3NhZ2UuICBUaGUgY2FsbGVyIHNlcmlhbGl6ZXMgb24gdGhlIHNlbmRfc2VtIHNvIHRoaXNcbi0tXG5uZXQvcmRzL3Jkcy5oPTk1Nz12b2lkIHJkc19zZW5kX3BhdGhfcmVzZXQoc3RydWN0IHJkc19jb25uX3BhdGggKmNvbm4pO1xubmV0L3Jkcy9yZHMuaDo5NTg6aW50IHJkc19zZW5kX3htaXQoc3RydWN0IHJkc19jb25uX3BhdGggKmNwKTtcbm5ldC9yZHMvcmRzLmgtOTU5LXN0cnVjdCBzb2NrYWRkcl9pbjtcbi0tXG5uZXQvcmRzL3NlbmQuYy00NC1cbm5ldC9yZHMvc2VuZC5jOjQ1Oi8qIFdoZW4gdHJhbnNtaXR0aW5nIG1lc3NhZ2VzIGluIHJkc19zZW5kX3htaXQsIHdlIG5lZWQgdG8gZW1lcmdlIGZyb21cbm5ldC9yZHMvc2VuZC5jLTQ2LSAqIHRpbWUgdG8gdGltZSBhbmQgYnJpZWZseSByZWxlYXNlIHRoZSBDUFUuIE90aGVyd2lzZSB0aGUgc29mdGxvY2sgd2F0Y2hkb2dcbi0tXG5uZXQvcmRzL3NlbmQuYz01OT1zdGF0aWMgdm9pZCByZHNfc2VuZF9yZW1vdmVfZnJvbV9zb2NrKHN0cnVjdCBsaXN0X2hlYWQgKm1lc3NhZ2VzLCBpbnQgc3RhdHVzKTtcbi0tXG5uZXQvcmRzL3NlbmQuYy02Mi0gKiBSZXNldCB0aGUgc2VuZCBzdGF0ZS4gIENhbGxlcnMgbXVzdCBlbnN1cmUgdGhhdCB0aGlzIGRvZXNuJiMzOTt0IHJhY2Ugd2l0aFxubmV0L3Jkcy9zZW5kLmM6NjM6ICogcmRzX3NlbmRfeG1pdCgpLlxubmV0L3Jkcy9zZW5kLmMtNjQtICovXG4tLVxubmV0L3Jkcy9zZW5kLmM9MTI4PXN0YXRpYyBib29sIHJkc19tcHJkc19jcDBfY2F0Y2h1cChzdHJ1Y3QgcmRzX2Nvbm5lY3Rpb24gKmNvbm4pXG4tLVxubmV0L3Jkcy9zZW5kLmMtMTg2LSAqL1xubmV0L3Jkcy9zZW5kLmM6MTg3OmludCByZHNfc2VuZF94bWl0KHN0cnVjdCByZHNfY29ubl9wYXRoICpjcClcbm5ldC9yZHMvc2VuZC5jLTE4OC17XG4tLVxubmV0L3Jkcy9zZW5kLmMtNTQ3LX1cbm5ldC9yZHMvc2VuZC5jOjU0ODpFWFBPUlRfU1lNQk9MX0dQTChyZHNfc2VuZF94bWl0KTtcbm5ldC9yZHMvc2VuZC5jLTU0OS1cbi0tXG5uZXQvcmRzL3NlbmQuYz02ODI9c3RhdGljIHZvaWQgcmRzX3NlbmRfcmVtb3ZlX2Zyb21fc29jayhzdHJ1Y3QgbGlzdF9oZWFkICptZXNzYWdlcywgaW50IHN0YXR1cylcbi0tXG5uZXQvcmRzL3NlbmQuYy03NTctICogbWVzc2FnZXMgdXAgdG8sIGFuZCBpbmNsdWRpbmcsIHRoZSBnaXZlbiBzZXF1ZW5jZSBudW1iZXIuICBNZXNzYWdlcyBhcmVcbm5ldC9yZHMvc2VuZC5jOjc1ODogKiBtb3ZlZCB0byB0aGUgcmV0cmFucyBxdWV1ZSB3aGVuIHJkc19zZW5kX3htaXQgcGlja3MgdGhlbSBvZmYgdGhlIHNlbmRcbm5ldC9yZHMvc2VuZC5jLTc1OS0gKiBxdWV1ZS4gVGhpcyBtZWFucyB0aGF0IGluIHRoZSBUQ1AgY2FzZSwgdGhlIG1lc3NhZ2UgbWF5IG5vdCBoYXZlIGJlZW5cbi0tXG5uZXQvcmRzL3NlbmQuYz0xMTQ0PWludCByZHNfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBwYXlsb2FkX2xlbilcbi0tXG5uZXQvcmRzL3NlbmQuYy0xNDQxLVxubmV0L3Jkcy9zZW5kLmM6MTQ0MjpcdHJldCA9IHJkc19zZW5kX3htaXQoY3BhdGgpO1xubmV0L3Jkcy9zZW5kLmMtMTQ0My1cdGlmIChyZXQgPT0gLUVOT01FTSB8fCByZXQgPT0gLUVBR0FJTikge1xuLS1cbm5ldC9yZHMvdGNwLmM9MTI2PXZvaWQgcmRzX3RjcF9yZXNldF9jYWxsYmFja3Moc3RydWN0IHNvY2tldCAqc29jayxcbi0tXG5uZXQvcmRzL3RjcC5jLTE0MS1cdCAqIGNwX3N0YXRlIHRvIHNvbWV0aGluZyBvdGhlciB0aGFuIFJEU19DT05OX1VQLCBhbmQgdGhlblxubmV0L3Jkcy90Y3AuYzoxNDI6XHQgKiB3YWl0aW5nIGZvciBhbnkgZXhpc3RpbmcgdGhyZWFkcyBpbiByZHNfc2VuZF94bWl0IHRvXG5uZXQvcmRzL3RjcC5jLTE0My1cdCAqIGNvbXBsZXRlIHJlbGVhc2VfaW5feG1pdCgpLiAoU3Vic2VxdWVudCB0aHJlYWRzIGVudGVyaW5nXG5uZXQvcmRzL3RjcC5jOjE0NDpcdCAqIHJkc19zZW5kX3htaXQoKSB3aWxsIGJhaWwgb24gIXJkc19jb25uX3VwKCkuXG5uZXQvcmRzL3RjcC5jLTE0NS1cdCAqXG4tLVxubmV0L3Jkcy90Y3AuYy0xNTctXHQvKiBBY3F1aXJlIHRoZSBzZW5kLXBhdGggbG9jayByYXRoZXIgdGhhbiB3YWl0aW5nIGZvciBpdCB0byBiZVxubmV0L3Jkcy90Y3AuYzoxNTg6XHQgKiByZWxlYXNlZDogYSBtZXJlIHdhaXQgaXMgcmFjeSwgc2luY2UgcmRzX3NlbmRfeG1pdCgpIG1heSB0YWtlXG5uZXQvcmRzL3RjcC5jLTE1OS1cdCAqIHRoZSBsb2NrIGFnYWluIHJpZ2h0IGFmdGVyIHdlIHNhbXBsZSBpdCBjbGVhciBhbmQgdGhlbiBydW5cbi0tXG5uZXQvcmRzL3RocmVhZHMuYz0xOTE9dm9pZCByZHNfc2VuZF93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbm5ldC9yZHMvdGhyZWFkcy5jLTE5OS1cdFx0Y2xlYXJfYml0KFJEU19MTF9TRU5EX0ZVTEwsIFx1MDAyNmNwLVx1MDAzZWNwX2ZsYWdzKTtcbm5ldC9yZHMvdGhyZWFkcy5jOjIwMDpcdFx0cmV0ID0gcmRzX3NlbmRfeG1pdChjcCk7XG5uZXQvcmRzL3RocmVhZHMuYy0yMDEtXHRcdGNvbmRfcmVzY2hlZCgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwODoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDA5CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBSRFMgS2VybmVsIENvZGUqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9uIGNhbGwgcmVsYXRpb25zaGlwcyB3aXRoaW4gdGhlIFJEUyBrZXJuZWwgY29kZS4gSXQmIzM5O3MgY2xlYXIgdGhpcyBpcyBhbGwgYWJvdXQgbWFuYWdpbmcgcmVsaWFibGUgZGF0YWdyYW0gc29ja2V0cy4gSSBzZWUgYHJkc19zZW5kX3htaXRgIGJlaW5nIGNhbGxlZCBmcm9tIGByZHNfc2VuZG1zZ2AgYW5kIGByZHNfc2VuZF93b3JrZXJgIOKAkyB0aGF0JiMzOTtzIHRoZSB0cmFuc21pc3Npb24gcGF0aCBmb3Igc2VuZGluZyBkYXRhLiBgcmRzX2Nvbm5fc2h1dGRvd25gIGlzIGNhbGxlZCBmcm9tIGByZHNfY29ubl9kZXN0cm95YCBhbmQgYHJkc19jb25uX2Ryb3BgLCB3aGljaCBpcyBob3cgY29ubmVjdGlvbnMgYXJlIGhhbmRsZWQgd2hlbiB0aGV5IG5lZWQgdG8gc2h1dCBkb3duLiBgcmRzX3RjcF9yZXNldF9jYWxsYmFja3NgIGlzIGNhbGxlZCBmcm9tIGByZHNfdGNwX2FjY2VwdF9vbmVgIGFuZCBgcmRzX3RjcF9jb25uX3BhdGhfY29ubmVjdGAsIHN1Z2dlc3RpbmcgY29ubmVjdGlvbiByZXNldCBvbiB0aGUgVENQIHBhdGguIEFuZCBmaW5hbGx5LCBgcmRzX2luY19pbml0YCBpcyBpbnZva2VkIGZyb20gYHJkc190Y3BfZGF0YV9yZWN2YCBhbmQgYHJkc19pYl9yZWN2X2luaXRfcmluZ2AsIHNob3dpbmcgaW5pdGlhbGl6YXRpb24gZm9yIHJlY2VpdmluZyBkYXRhLgoKVGhpcyByZWFsbHkgbG9va3MgbGlrZSB0aGUgY29kZSBpcyBoYW5kbGluZyBzb21lIGNydWNpYWwgcmFjZSBjb25kaXRpb25zLCBwcm9iYWJseSBhcm91bmQgY29ubmVjdGlvbiB0ZWFyZG93biBhbmQgcmVzZXR0aW5nLCBhbmQgaXQgbG9va3MgbGlrZSBpdCBkb2VzIHNvbWUgaW5pdGlhbGl6YXRpb24uIFNwZWNpZmljYWxseSBgcmRzX3NlbmRfeG1pdGAgaW5pdGlhbGl6ZXMgYSBsaXN0LiBUaGlzIHNlZW1zIHRvIGJlIGF0IHRoZSBoZWFydCBvZiB0aGUgUkRTIHNvY2tldCBpbXBsZW1lbnRhdGlvbiwgcmlnaHQ/IEkgY2FuIHRlbGwgdGhhdCB0aGUgY29kZSBpcyByZWFjaGFibGUgdmlhIFJEUyBzb2NrZXRzLiBUaGUgY29uZmlndXJhdGlvbnMgbmVlZGVkIGFyZSBgUkRTYCBhbmQgYFJEU19UQ1BgLiAKCk5vdywgYmVmb3JlIEkgZGlnIGRlZXBlciwgSSBzaG91bGQgY2hlY2sgd2hldGhlciBlaXRoZXIgYFJEU2Agb3IgYFJEU19UQ1BgIGhhdmUgYW55IGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgZmVhdHVyZXMgb3IgbW9kdWxlcy4gR290dGEgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBjb250ZXh0IGJlZm9yZSBJIHN0YXJ0IHRyeWluZyB0byBtb2RpZnkgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA4OjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcmRzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3Jkcy9LY29uZmlnPTM9Y29uZmlnIFJEU1xubmV0L3Jkcy9LY29uZmlnLTQtXHR0cmlzdGF0ZSBcJiMzNDtUaGUgUmVsaWFibGUgRGF0YWdyYW0gU29ja2V0cyBQcm90b2NvbFwmIzM0O1xubmV0L3Jkcy9LY29uZmlnOjU6XHRkZXBlbmRzIG9uIElORVRcbm5ldC9yZHMvS2NvbmZpZy02LVx0aGVscFxuLS1cbm5ldC9yZHMvS2NvbmZpZz0xMD1jb25maWcgUkRTX1JETUFcbm5ldC9yZHMvS2NvbmZpZy0xMS1cdHRyaXN0YXRlIFwmIzM0O1JEUyBvdmVyIEluZmluaWJhbmRcJiMzNDtcbm5ldC9yZHMvS2NvbmZpZzoxMjpcdGRlcGVuZHMgb24gUkRTIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EIFx1MDAyNlx1MDAyNiBJTkZJTklCQU5EX0FERFJfVFJBTlNcbm5ldC9yZHMvS2NvbmZpZy0xMy1cdGhlbHBcbi0tXG5uZXQvcmRzL0tjb25maWc9MTc9Y29uZmlnIFJEU19UQ1Bcbm5ldC9yZHMvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O1JEUyBvdmVyIFRDUFwmIzM0O1xubmV0L3Jkcy9LY29uZmlnOjE5Olx0ZGVwZW5kcyBvbiBSRFNcbm5ldC9yZHMvS2NvbmZpZzoyMDpcdGRlcGVuZHMgb24gSVBWNiB8fCAhSVBWNlxubmV0L3Jkcy9LY29uZmlnLTIxLVx0aGVscFxuLS1cbm5ldC9yZHMvS2NvbmZpZz0yNT1jb25maWcgUkRTX0RFQlVHXG5uZXQvcmRzL0tjb25maWctMjYtXHRib29sIFwmIzM0O1JEUyBkZWJ1Z2dpbmcgbWVzc2FnZXNcJiMzNDtcbm5ldC9yZHMvS2NvbmZpZzoyNzpcdGRlcGVuZHMgb24gUkRTXG5uZXQvcmRzL0tjb25maWctMjgtXHRkZWZhdWx0IG5cbi0tXG5uZXQvcmRzL0tjb25maWc9MzA9Y29uZmlnIEdDT1ZfUFJPRklMRV9SRFNcbm5ldC9yZHMvS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7RW5hYmxlIEdDT1YgcHJvZmlsaW5nIG9uIFJEU1wmIzM0O1xubmV0L3Jkcy9LY29uZmlnOjMyOlx0ZGVwZW5kcyBvbiBHQ09WX0tFUk5FTFxubmV0L3Jkcy9LY29uZmlnLTMzLVx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwODoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MzM1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBSRFMgYW5kIGl0cyBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYFJEU2Agc2V0dXAgYW5kIGl0JiMzOTtzIGltbWVkaWF0ZWx5IGNsZWFyIHRoYXQgaXQmIzM5O3MgZnVuZGFtZW50YWxseSByZWxpYW50IG9uIGBJTkVUYC4gIEZ1cnRoZXIsIGBSRFNfVENQYCBoaW5nZXMgb24gYFJEU2AgYW5kIGVpdGhlciBgSVBWNmAgb3IgdGhlIGFic2VuY2Ugb2YgYElQVjZgLiBHaXZlbiB0aGlzIHN0cnVjdHVyYWwgZGVwZW5kZW5jeSwgZW5hYmxpbmcgYm90aCBgUkRTYCBhbmQgYFJEU19UQ1BgIHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwLgoKTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUga2V5IGZ1bmN0aW9ucyBpbnZvbHZlZCwgc28gSSYjMzk7dmUgZmxhZ2dlZCBhIGZldyBmb3IgY2xvc2VyIGluc3BlY3Rpb246IGByZHNfY29ubl9zaHV0ZG93bmAsIGByZHNfdGNwX3Jlc2V0X2NhbGxiYWNrc2AsIGByZHNfc2VuZF94bWl0YCwgYW5kIGByZHNfaW5jX2luaXRgLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIHRoZXNlIGFyZSBzdGF0aWMsIGlubGluZSwgb3IgZXhwb3J0ZWQgc3ltYm9scywgYXMgdGhpcyBpbXBhY3RzIGhvdyB0aGV5IGFyZSB1c2VkIGFuZCBjYWxsZWQuCgpBbHJpZ2h0LCBhIHF1aWNrIGNoZWNrIGNvbmZpcm1zIHRoYXQgYHJkc19jb25uX3NodXRkb3duYCwgYHJkc190Y3BfcmVzZXRfY2FsbGJhY2tzYCwgYHJkc19zZW5kX3htaXRgLCBhbmQgYHJkc19pbmNfaW5pdGAgYXJlIGFsbCBleHBvcnRlZC9nbG9iYWwgc3ltYm9scy4gVGhpcyB0ZWxscyBtZSB0aGV5JiMzOTtyZSBpbnRlbmRlZCBmb3IgdXNlIG91dHNpZGUgdGhlaXIgZGVmaW5pbmcgbW9kdWxlcy4gV2FpdCwgYHJkc19pbmNfaW5pdGAgaXMgc3BlY2lmaWNhbGx5IGxvY2F0ZWQgaW4gYG5ldC9yZHMvcmVjdi5jYC4gVGhpcyBpcyBpbXBvcnRhbnQsIGFzIGl0IGNsYXJpZmllcyB3aGVyZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgaW5jb21pbmcgdHJhZmZpYyBpcyBoYW5kbGVkLCBhbmQgaW5kaWNhdGVzIHdoZXJlIHRoYXQgZnVuY3Rpb24gc2hvdWxkIHJlc2lkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dm9pZCByZHNfaW5jX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcmRzL3JlY3YuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcmRzL3JlY3YuYy00My1cbm5ldC9yZHMvcmVjdi5jOjQ0OnZvaWQgcmRzX2luY19pbml0KHN0cnVjdCByZHNfaW5jb21pbmcgKmluYywgc3RydWN0IHJkc19jb25uZWN0aW9uICpjb25uLFxubmV0L3Jkcy9yZWN2LmMtNDUtXHRcdCBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAwODoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5OTkxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkdsb2JhbCBTY29wZSBDaGVjayoqCgpSaWdodCwgdGhpcyBkZWZpbml0ZWx5IHNlZW1zIGxpa2UgaXQmIzM5O3MgYSBnbG9iYWwgaXNzdWUgYWZmZWN0aW5nIGV2ZXJ5dGhpbmcuIEJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byBkZWJ1Z2dpbmcsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgY2hhc2luZyBhIGxvY2FsIHByb2JsZW0uIExldCYjMzk7cyBzdGFydCB3aXRoIGEgY3J1Y2lhbCBjaGVjay4gTXkgaW5zdGluY3QgdGVsbHMgbWUgdGhpcyBpcyBnbG9iYWwsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSB0aGUgc2NvcGUgb2YgdGhpcyBgcmRzX2Nvbm5fc2h1dGRvd25gIGZ1bmN0aW9uLCBvciB3aGF0ZXZlciBmdW5jdGlvbiBpcyBjYXVzaW5nIHRoZSBpc3N1ZS4gSSBuZWVkIHRvIGtub3cgaWYgaXQmIzM5O3MgZGVjbGFyZWQgZ2xvYmFsbHkgZmlyc3QuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLCB0aGUgbW9zdCBmdW5kYW1lbnRhbCB0aGluZyB0byBjaGVjayByaWdodCBub3cuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSBpZiBpdCBpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDg6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dm9pZCByZHNfY29ubl9zaHV0ZG93biYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9yZHMvY29ubmVjdGlvbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9yZHMvY29ubmVjdGlvbi5jPTM3OT1FWFBPUlRfU1lNQk9MX0dQTChyZHNfY29ubl9jcmVhdGVfb3V0Z29pbmcpO1xubmV0L3Jkcy9jb25uZWN0aW9uLmMtMzgwLVxubmV0L3Jkcy9jb25uZWN0aW9uLmM6MzgxOnZvaWQgcmRzX2Nvbm5fc2h1dGRvd24oc3RydWN0IHJkc19jb25uX3BhdGggKmNwKVxubmV0L3Jkcy9jb25uZWN0aW9uLmMtMzgyLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyODUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBmcmFtZWQgYXMgbXkgaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzOgoKKipJbnRlcm5hbCBSZXZpZXcgb2YgUG90ZW50aWFsIFJlc2V0IENhbGxiYWNrcyoqCgpZZXMsIHRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gZm9sbG93aW5nIHRoZSByaWdodCB0cmFjayBoZXJlLiBOb3csIGxldCYjMzk7cyB0YWtlIGEgbG9vayBhdCBgcmRzX3RjcF9yZXNldF9jYWxsYmFja3NgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgc3BlY2lmaWNhbGx5IGVudGFpbHMuIEl0JiMzOTtzIHRpbWUgdG8gZnVsbHkgYW5hbHlzZSB0aGUgaW5mb3JtYXRpb24gcHJlc2VudGVkLCBlbnN1cmluZyBJIGNvbXByZWhlbmQgdGhlIHNwZWNpZmljIGFjdGlvbnMgYW5kIGRlcGVuZGVuY2llcyB0aGF0IHRoaXMgZW5jb21wYXNzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZvaWQgcmRzX3RjcF9yZXNldF9jYWxsYmFja3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvcmRzL3RjcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9yZHMvdGNwLmM9OTY9dm9pZCByZHNfdGNwX3Jlc3RvcmVfY2FsbGJhY2tzKHN0cnVjdCBzb2NrZXQgKnNvY2ssXG4tLVxubmV0L3Jkcy90Y3AuYy0xMjUtICovXG5uZXQvcmRzL3RjcC5jOjEyNjp2b2lkIHJkc190Y3BfcmVzZXRfY2FsbGJhY2tzKHN0cnVjdCBzb2NrZXQgKnNvY2ssXG5uZXQvcmRzL3RjcC5jLTEyNy1cdFx0XHQgICAgIHN0cnVjdCByZHNfY29ubl9wYXRoICpjcClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMDg6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1NDUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkFzc2Vzc21lbnQgb2YgVGFzayBhbmQgRm9jdXMqKgoKWWVzLiAqVGhhdCYjMzk7cyB0aGUgaW5pdGlhbCBhY2tub3dsZWRnZW1lbnQgb2YgdGhlIHRhc2sgb3IgcXVlc3Rpb24uIEkmIzM5O20gcmVhZHkgdG8gbW92ZSBmb3J3YXJkLiBUaGUgc2ltcGxpY2l0eSBzdWdnZXN0cyBhIGNvbmZpcm1hdGlvbiwgYSBzdGFydGluZyBwb2ludC4qCgpMZXQmIzM5O3MgY2hlY2sgYHJkc19zZW5kX3htaXRgLiAqUmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gJiMzNDtMZXQmIzM5O3MgY2hlY2sgYHJkc19zZW5kX3htaXRgJiMzNDsgc2lnbmlmaWVzIGEgZGl2ZSBpbnRvIGEgc3BlY2lmaWMgZnVuY3Rpb24gb3IgbW9kdWxlIHdpdGhpbiB0aGUgUkRTIChSZWxpYWJsZSBEYXRhZ3JhbSBTb2NrZXRzKSBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yLiogSSYjMzk7bSBpbW1lZGlhdGVseSBob21pbmcgaW4gb24gdGhlIHNlbmQgdHJhbnNtaXQgZnVuY3Rpb24sIGFuZCBob3cgaXQgaGFuZGxlcyBwYWNrZXRzLiBUaGlzIHN1Z2dlc3RzIHRoZSBjb3JlIGFyZWEgb2YgY29uY2VybiBpcyBsaWtlbHkgcmVsYXRlZCB0byBkYXRhIHRyYW5zbWlzc2lvbiwgcG9zc2libHkgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MsIGVycm9yIGhhbmRsaW5nLCBvciBzcGVjaWZpYyBwcm90b2NvbCBpbnRyaWNhY2llcyByZWxhdGVkIHRvIHJlbGlhYmxlIGRhdGEgdHJhbnNmZXIuIFRoaXMgY291bGQgYmUgYSBkZWJ1Z2dpbmcgc3RlcCBvciBhbiBpbnZlc3RpZ2F0b3J5IGFjdGlvbi4gSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGF0IHRoZSBzb3VyY2UgY29kZSBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ludCByZHNfc2VuZF94bWl0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3Jkcy9zZW5kLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3Jkcy9zZW5kLmM9MTI4PXN0YXRpYyBib29sIHJkc19tcHJkc19jcDBfY2F0Y2h1cChzdHJ1Y3QgcmRzX2Nvbm5lY3Rpb24gKmNvbm4pXG4tLVxubmV0L3Jkcy9zZW5kLmMtMTg2LSAqL1xubmV0L3Jkcy9zZW5kLmM6MTg3OmludCByZHNfc2VuZF94bWl0KHN0cnVjdCByZHNfY29ubl9wYXRoICpjcClcbm5ldC9yZHMvc2VuZC5jLTE4OC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA4OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwOTEzCgkJCQkJCQlvdXRwdXQ6IDE0NAoJCQkJCQkJdGhvdWdodHM6IDIwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqCgpPa2F5LCB0aGlzIHBhdGNoIGxvb2tzIHNvbGlkLiBJIGNhbiBjb25maXJtIGl0IGFkZHJlc3NlcyByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIHRoZSBSRFMgY29ubmVjdGlvbiB0ZWFyZG93biBhbmQgcmVzZXQsIGFuZCBhbHNvIGNvcnJlY3RseSBpbml0aWFsaXplcyBhIGxpc3Qgd2l0aGluIGByZHNfc2VuZF94bWl0YC4gRnVuY3Rpb25hbGx5LCBpdCBzZWVtcyBzb3VuZCBhbmQgYWJzb2x1dGVseSB3YXJyYW50cyB0aG9yb3VnaCBmdXp6aW5nLgoKSSYjMzk7dmUgY2hlY2tlZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnM6IGBSRFNgIGFuZCBgUkRTX1RDUGAuIEp1c3QgdG8gYmUgc3VyZSwgSSYjMzk7bGwgcXVpY2tseSB2ZXJpZnkgaWYgdGhvc2UgYXJlIHN1ZmZpY2llbnQuIFllcCwgYFJEU2AgaXMgdGhlIGZ1bmRhbWVudGFsIGNvbXBvbmVudCwgYW5kIGBSRFNfVENQYCByZXByZXNlbnRzIHRoZSBUQ1AgdHJhbnNwb3J0LCBzcGVjaWZpY2FsbHkgdXNlZCBpbiBgbmV0L3Jkcy90Y3AuY2AuIFRoZSBwYXRjaCAqZG9lcyogbW9kaWZ5IGBuZXQvcmRzL3RjcC5jYCwgd2hpY2ggaXMgb25seSBjb21waWxlZCB3aXRoIGBSRFNfVENQYCBlbmFibGVkLCBzbyB0aGF0JiMzOTtzIGdvb2QuIEFuZCB0aGUgY29yZSBSRFMgbW9kdWxlcywgYG5ldC9yZHMvY29ubmVjdGlvbi5jYCwgYG5ldC9yZHMvcmVjdi5jYCwgYW5kIGBuZXQvcmRzL3NlbmQuY2AsIGFyZSBwcm9wZXJseSBjb3ZlcmVkIGJ5IGBSRFNgIGJlaW5nIGVuYWJsZWQuCgpOb3cgSSBjYW4gcHV0IHRvZ2V0aGVyIGEgY29tcGxldGUgcmVzcG9uc2UgYmFzZWQgb24gdGhpcyByZXZpZXcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDA4OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSRFMmIzM0OywKICAgICYjMzQ7UkRTX1RDUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3Jkc19jb25uX3NodXRkb3duJiMzNDssCiAgICAmIzM0O3Jkc190Y3BfcmVzZXRfY2FsbGJhY2tzJiMzNDssCiAgICAmIzM0O3Jkc19zZW5kX3htaXQmIzM0OywKICAgICYjMzQ7cmRzX2luY19pbml0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgUkRTIGNvbm5lY3Rpb24gdGVhcmRvd24sIHJlc2V0LCBhbmQgdHJhbnNtaXQgbG9naWMgdG8gZml4IHJhY2UgY29uZGl0aW9ucyBieSB1c2luZyBiaXQgbG9ja3MgaW5zdGVhZCBvZiBwbGFpbiBiaXQgdGVzdHMuIEl0IGFsc28gaW5pdGlhbGl6ZXMgYSBsaXN0IGluIGByZHNfc2VuZF94bWl0YCBhbmQgYSBwb2ludGVyIGluIGByZHNfaW5jX2luaXRgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBSRFMgc3Vic3lzdGVtIHRoYXQgYXJlIHJlYWNoYWJsZSB2aWEgUkRTIHNvY2tldHMgb3ZlciBUQ1AuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JEUyYjMzQ7LAogICAgJiMzNDtSRFNfVENQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cmRzX2Nvbm5fc2h1dGRvd24mIzM0OywKICAgICYjMzQ7cmRzX3RjcF9yZXNldF9jYWxsYmFja3MmIzM0OywKICAgICYjMzQ7cmRzX3NlbmRfeG1pdCYjMzQ7LAogICAgJiMzNDtyZHNfaW5jX2luaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBSRFMgY29ubmVjdGlvbiB0ZWFyZG93biwgcmVzZXQsIGFuZCB0cmFuc21pdCBsb2dpYyB0byBmaXggcmFjZSBjb25kaXRpb25zIGJ5IHVzaW5nIGJpdCBsb2NrcyBpbnN0ZWFkIG9mIHBsYWluIGJpdCB0ZXN0cy4gSXQgYWxzbyBpbml0aWFsaXplcyBhIGxpc3QgaW4gYHJkc19zZW5kX3htaXRgIGFuZCBhIHBvaW50ZXIgaW4gYHJkc19pbmNfaW5pdGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIFJEUyBzdWJzeXN0ZW0gdGhhdCBhcmUgcmVhY2hhYmxlIHZpYSBSRFMgc29ja2V0cyBvdmVyIFRDUC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA4OjEzOjMwLjU2MDYzNTgwMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NjQ4MzQyMzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJEU1wiLFxuICAgIFwiUkRTX1RDUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJkc19jb25uX3NodXRkb3duXCIsXG4gICAgXCJyZHNfdGNwX3Jlc2V0X2NhbGxiYWNrc1wiLFxuICAgIFwicmRzX3NlbmRfeG1pdFwiLFxuICAgIFwicmRzX2luY19pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBSRFMgY29ubmVjdGlvbiB0ZWFyZG93biwgcmVzZXQsIGFuZCB0cmFuc21pdCBsb2dpYyB0byBmaXggcmFjZSBjb25kaXRpb25zIGJ5IHVzaW5nIGJpdCBsb2NrcyBpbnN0ZWFkIG9mIHBsYWluIGJpdCB0ZXN0cy4gSXQgYWxzbyBpbml0aWFsaXplcyBhIGxpc3QgaW4gYHJkc19zZW5kX3htaXRgIGFuZCBhIHBvaW50ZXIgaW4gYHJkc19pbmNfaW5pdGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIFJEUyBzdWJzeXN0ZW0gdGhhdCBhcmUgcmVhY2hhYmxlIHZpYSBSRFMgc29ja2V0cyBvdmVyIFRDUC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDg6MTM6MzAuNTYwNjQxNjMyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjA2NTA5MDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgODBiNzMyNzIwYjNiZDRkMmQ5ZDNhZDBhMzY2OGZhZDA1ZDAwZjNmMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyA2IDA4OjEzOjI4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9yZHMvY29ubmVjdGlvbi5jIGIvbmV0L3Jkcy9jb25uZWN0aW9uLmNcXG5pbmRleCA3YzhhYjhlOTczZTFiLi40MDZhMDcxZWZkZDNiIDEwMDY0NFxcbi0tLSBhL25ldC9yZHMvY29ubmVjdGlvbi5jXFxuKysrIGIvbmV0L3Jkcy9jb25uZWN0aW9uLmNcXG5AQCAtNDA2LDE0ICs0MDYsMzIgQEAgdm9pZCByZHNfY29ubl9zaHV0ZG93bihzdHJ1Y3QgcmRzX2Nvbm5fcGF0aCAqY3ApXFxuIFxcdFxcdH1cXG4gXFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZjcC1cXHUwMDNlY3BfY21fbG9jayk7XFxuIFxcbitcXHRcXHQvKiBRdWllc2NlIHRoZSB0cmFuc21pdCBhbmQgcmVjZWl2ZS1yZWZpbGwgcGF0aHMgYnlcXG4rXFx0XFx0ICogYWNxdWlyaW5nIHRoZWlyIGJpdCBsb2Nrcywgbm90IG1lcmVseSB3YWl0aW5nIGZvclxcbitcXHRcXHQgKiB0aGVtIHRvIGJlIHJlbGVhc2VkOiB3aXRoIGEgcGxhaW4gd2FpdCwgZWl0aGVyIHBhdGhcXG4rXFx0XFx0ICogY2FuIHJlLXRha2UgaXRzIGxvY2sgdGhlIGluc3RhbnQgYWZ0ZXIgd2Ugc2FtcGxlIGl0XFxuK1xcdFxcdCAqIGNsZWFyIGFuZCB0aGVuIHJ1biBjb25jdXJyZW50bHkgd2l0aCB0aGUgdHJhbnNwb3J0XFxuK1xcdFxcdCAqIHNodXRkb3duIGFuZCB0aGUgcGF0aCByZXNldCBiZWxvdy4gIEhvbGRpbmcgYm90aFxcbitcXHRcXHQgKiBsb2NrcyBhY3Jvc3MgdGhlIHRlYXJkb3duIG1ha2VzIHRoYXQgc3RydWN0dXJhbGx5XFxuK1xcdFxcdCAqIGltcG9zc2libGUuXFxuK1xcdFxcdCAqL1xcbiBcXHRcXHR3YWl0X2V2ZW50KGNwLVxcdTAwM2VjcF93YWl0cSxcXG4tXFx0XFx0XFx0ICAgIXRlc3RfYml0KFJEU19JTl9YTUlULCBcXHUwMDI2Y3AtXFx1MDAzZWNwX2ZsYWdzKSk7XFxuK1xcdFxcdFxcdCAgICF0ZXN0X2FuZF9zZXRfYml0X2xvY2soUkRTX0lOX1hNSVQsIFxcdTAwMjZjcC1cXHUwMDNlY3BfZmxhZ3MpKTtcXG4gXFx0XFx0d2FpdF9ldmVudChjcC1cXHUwMDNlY3Bfd2FpdHEsXFxuLVxcdFxcdFxcdCAgICF0ZXN0X2JpdChSRFNfUkVDVl9SRUZJTEwsIFxcdTAwMjZjcC1cXHUwMDNlY3BfZmxhZ3MpKTtcXG4rXFx0XFx0XFx0ICAgIXRlc3RfYW5kX3NldF9iaXQoUkRTX1JFQ1ZfUkVGSUxMLCBcXHUwMDI2Y3AtXFx1MDAzZWNwX2ZsYWdzKSk7XFxuIFxcbiBcXHRcXHRjb25uLVxcdTAwM2VjX3RyYW5zLVxcdTAwM2Vjb25uX3BhdGhfc2h1dGRvd24oY3ApO1xcbiBcXHRcXHRyZHNfY29ubl9wYXRoX3Jlc2V0KGNwKTtcXG4gXFxuK1xcdFxcdC8qIHJkc19jb25uX3BhdGhfcmVzZXQoKSBhbHJlYWR5IGNsZWFyZWQgY3BfZmxhZ3MsIGJ1dFxcbitcXHRcXHQgKiByZWxlYXNlIHRoZSB0d28gbG9ja3MgZXhwbGljaXRseSBhbmQgd2FrZSBhbnkgd2FpdGVyXFxuK1xcdFxcdCAqIChlLmcuIHJkc190Y3BfcmVzZXRfY2FsbGJhY2tzKCkpIHRoYXQgc2FtcGxlZCB0aGVcXG4rXFx0XFx0ICogbG9ja3Mgd2hpbGUgd2UgaGVsZCB0aGVtLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0Y2xlYXJfYml0X3VubG9jayhSRFNfSU5fWE1JVCwgXFx1MDAyNmNwLVxcdTAwM2VjcF9mbGFncyk7XFxuK1xcdFxcdGNsZWFyX2JpdChSRFNfUkVDVl9SRUZJTEwsIFxcdTAwMjZjcC1cXHUwMDNlY3BfZmxhZ3MpO1xcbitcXHRcXHR3YWtlX3VwX2FsbChcXHUwMDI2Y3AtXFx1MDAzZWNwX3dhaXRxKTtcXG4rXFxuIFxcdFxcdGlmICghcmRzX2Nvbm5fcGF0aF90cmFuc2l0aW9uKGNwLCBSRFNfQ09OTl9ESVNDT05ORUNUSU5HLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICBSRFNfQ09OTl9ET1dOKSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgIXJkc19jb25uX3BhdGhfdHJhbnNpdGlvbihjcCwgUkRTX0NPTk5fRVJST1IsXFxuZGlmZiAtLWdpdCBhL25ldC9yZHMvcmVjdi5jIGIvbmV0L3Jkcy9yZWN2LmNcXG5pbmRleCBjZjM4ODRkODc5MzE5Li5mMTUxM2RmYjI3MTY1IDEwMDY0NFxcbi0tLSBhL25ldC9yZHMvcmVjdi5jXFxuKysrIGIvbmV0L3Jkcy9yZWN2LmNcXG5AQCAtNDcsNiArNDcsNyBAQCB2b2lkIHJkc19pbmNfaW5pdChzdHJ1Y3QgcmRzX2luY29taW5nICppbmMsIHN0cnVjdCByZHNfY29ubmVjdGlvbiAqY29ubixcXG4gXFx0cmVmY291bnRfc2V0KFxcdTAwMjZpbmMtXFx1MDAzZWlfcmVmY291bnQsIDEpO1xcbiBcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2aW5jLVxcdTAwM2VpX2l0ZW0pO1xcbiBcXHRpbmMtXFx1MDAzZWlfY29ubiA9IGNvbm47XFxuK1xcdGluYy1cXHUwMDNlaV9jb25uX3BhdGggPSBOVUxMO1xcbiBcXHRpbmMtXFx1MDAzZWlfc2FkZHIgPSAqc2FkZHI7XFxuIFxcdGluYy1cXHUwMDNlaV91c2VyY29weS5yZG1hX2Nvb2tpZSA9IDA7XFxuIFxcdGluYy1cXHUwMDNlaV91c2VyY29weS5yeF90c3RhbXAgPSBrdGltZV9zZXQoMCwgMCk7XFxuZGlmZiAtLWdpdCBhL25ldC9yZHMvc2VuZC5jIGIvbmV0L3Jkcy9zZW5kLmNcXG5pbmRleCAzMDkwMjFlMGNjOWJjLi5jMjhkYzlmODIwYWYwIDEwMDY0NFxcbi0tLSBhL25ldC9yZHMvc2VuZC5jXFxuKysrIGIvbmV0L3Jkcy9zZW5kLmNcXG5AQCAtMjAwLDYgKzIwMCwxMiBAQCBpbnQgcmRzX3NlbmRfeG1pdChzdHJ1Y3QgcmRzX2Nvbm5fcGF0aCAqY3ApXFxuIHJlc3RhcnQ6XFxuIFxcdGJhdGNoX2NvdW50ID0gMDtcXG4gXFxuK1xcdC8qIFRoZSBkcm9wIHByb2Nlc3NpbmcgYWZ0ZXIgb3Zlcl9iYXRjaCByZWxpZXMgb24gdGhlIGNhbGxlZXNcXG4rXFx0ICogZW1wdHlpbmcgdG9fYmVfZHJvcHBlZCBlbnRyeSBieSBlbnRyeTsgcmUtaW5pdGlhbGl6ZSBpdCBoZXJlXFxuK1xcdCAqIHJhdGhlciB0aGFuIGRlcGVuZGluZyBvbiB0aGF0IGltcGxpY2l0IGJlaGF2aW9yLlxcbitcXHQgKi9cXG4rXFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNnRvX2JlX2Ryb3BwZWQpO1xcbitcXG4gXFx0LypcXG4gXFx0ICogc2VuZG1zZyBjYWxscyBoZXJlIGFmdGVyIGhhdmluZyBxdWV1ZWQgaXRzIG1lc3NhZ2Ugb24gdGhlIHNlbmRcXG4gXFx0ICogcXVldWUuICBXZSBvbmx5IGhhdmUgb25lIHRhc2sgZmVlZGluZyB0aGUgY29ubmVjdGlvbiBhdCBhIHRpbWUuICBJZlxcbmRpZmYgLS1naXQgYS9uZXQvcmRzL3RjcC5jIGIvbmV0L3Jkcy90Y3AuY1xcbmluZGV4IGIyNjM2MzRhYzc1MGQuLjA0MmQzZmRiZGY3ZmUgMTAwNjQ0XFxuLS0tIGEvbmV0L3Jkcy90Y3AuY1xcbisrKyBiL25ldC9yZHMvdGNwLmNcXG5AQCAtMTI4LDYgKzEyOCw3IEBAIHZvaWQgcmRzX3RjcF9yZXNldF9jYWxsYmFja3Moc3RydWN0IHNvY2tldCAqc29jayxcXG4ge1xcbiBcXHRzdHJ1Y3QgcmRzX3RjcF9jb25uZWN0aW9uICp0YyA9IGNwLVxcdTAwM2VjcF90cmFuc3BvcnRfZGF0YTtcXG4gXFx0c3RydWN0IHNvY2tldCAqb3NvY2sgPSB0Yy1cXHUwMDNldF9zb2NrO1xcbitcXHRib29sIGluX3htaXRfaGVsZCA9IGZhbHNlO1xcbiBcXG4gXFx0aWYgKCFvc29jaylcXG4gXFx0XFx0Z290byBuZXdzb2NrO1xcbkBAIC0xNTMsNyArMTU0LDE0IEBAIHZvaWQgcmRzX3RjcF9yZXNldF9jYWxsYmFja3Moc3RydWN0IHNvY2tldCAqc29jayxcXG4gXFx0ICogY2Fubm90IG1hcmsgcmRzX2Nvbm5fcGF0aF91cCgpIGluIHRoZSB3aW5kb3cgYmVmb3JlIGxvY2tfc29jaygpXFxuIFxcdCAqL1xcbiBcXHRhdG9taWNfc2V0KFxcdTAwMjZjcC1cXHUwMDNlY3Bfc3RhdGUsIFJEU19DT05OX1JFU0VUVElORyk7XFxuLVxcdHdhaXRfZXZlbnQoY3AtXFx1MDAzZWNwX3dhaXRxLCAhdGVzdF9iaXQoUkRTX0lOX1hNSVQsIFxcdTAwMjZjcC1cXHUwMDNlY3BfZmxhZ3MpKTtcXG4rXFx0LyogQWNxdWlyZSB0aGUgc2VuZC1wYXRoIGxvY2sgcmF0aGVyIHRoYW4gd2FpdGluZyBmb3IgaXQgdG8gYmVcXG4rXFx0ICogcmVsZWFzZWQ6IGEgbWVyZSB3YWl0IGlzIHJhY3ksIHNpbmNlIHJkc19zZW5kX3htaXQoKSBtYXkgdGFrZVxcbitcXHQgKiB0aGUgbG9jayBhZ2FpbiByaWdodCBhZnRlciB3ZSBzYW1wbGUgaXQgY2xlYXIgYW5kIHRoZW4gcnVuXFxuK1xcdCAqIGNvbmN1cnJlbnRseSB3aXRoIHJkc19zZW5kX3BhdGhfcmVzZXQoKSBiZWxvdy5cXG4rXFx0ICovXFxuK1xcdHdhaXRfZXZlbnQoY3AtXFx1MDAzZWNwX3dhaXRxLFxcbitcXHRcXHQgICAhdGVzdF9hbmRfc2V0X2JpdF9sb2NrKFJEU19JTl9YTUlULCBcXHUwMDI2Y3AtXFx1MDAzZWNwX2ZsYWdzKSk7XFxuK1xcdGluX3htaXRfaGVsZCA9IHRydWU7XFxuIFxcdC8qIHJlc2V0IHJlY2VpdmUgc2lkZSBzdGF0ZSBmb3IgcmRzX3RjcF9kYXRhX3JlY3YoKSBmb3Igb3NvY2sgICovXFxuIFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2Y3AtXFx1MDAzZWNwX3NlbmRfdyk7XFxuIFxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2Y3AtXFx1MDAzZWNwX3JlY3Zfdyk7XFxuQEAgLTE3Miw2ICsxODAsMTEgQEAgdm9pZCByZHNfdGNwX3Jlc2V0X2NhbGxiYWNrcyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxcbiBcXHRsb2NrX3NvY2soc29jay1cXHUwMDNlc2spO1xcbiBcXHRyZHNfdGNwX3NldF9jYWxsYmFja3Moc29jaywgY3ApO1xcbiBcXHRyZWxlYXNlX3NvY2soc29jay1cXHUwMDNlc2spO1xcbitcXG4rXFx0aWYgKGluX3htaXRfaGVsZCkge1xcbitcXHRcXHRjbGVhcl9iaXRfdW5sb2NrKFJEU19JTl9YTUlULCBcXHUwMDI2Y3AtXFx1MDAzZWNwX2ZsYWdzKTtcXG4rXFx0XFx0d2FrZV91cF9hbGwoXFx1MDAyNmNwLVxcdTAwM2VjcF93YWl0cSk7XFxuK1xcdH1cXG4gfVxcbiBcXG4gLyogQWRkIHRjIHRvIHJkc190Y3BfdGNfbGlzdCBhbmQgc2V0IHRjLVxcdTAwM2V0X3NvY2suIFNlZSBjb21tZW50c1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwODoxMzozMS43Njc3OTQxNzFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo0ODQ0MTE3NTY4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSRFNcIixcbiAgICBcIlJEU19UQ1BcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJyZHNfY29ubl9zaHV0ZG93blwiLFxuICAgIFwicmRzX3RjcF9yZXNldF9jYWxsYmFja3NcIixcbiAgICBcInJkc19zZW5kX3htaXRcIixcbiAgICBcInJkc19pbmNfaW5pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgUkRTIGNvbm5lY3Rpb24gdGVhcmRvd24sIHJlc2V0LCBhbmQgdHJhbnNtaXQgbG9naWMgdG8gZml4IHJhY2UgY29uZGl0aW9ucyBieSB1c2luZyBiaXQgbG9ja3MgaW5zdGVhZCBvZiBwbGFpbiBiaXQgdGVzdHMuIEl0IGFsc28gaW5pdGlhbGl6ZXMgYSBsaXN0IGluIGByZHNfc2VuZF94bWl0YCBhbmQgYSBwb2ludGVyIGluIGByZHNfaW5jX2luaXRgLiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBSRFMgc3Vic3lzdGVtIHRoYXQgYXJlIHJlYWNoYWJsZSB2aWEgUkRTIHNvY2tldHMgb3ZlciBUQ1AuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDgwYjczMjcyMGIzYmQ0ZDJkOWQzYWQwYTM2NjhmYWQwNWQwMGYzZjBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyA2IDA4OjEzOjI4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3Jkcy9jb25uZWN0aW9uLmMgYi9uZXQvcmRzL2Nvbm5lY3Rpb24uY1xuaW5kZXggN2M4YWI4ZTk3M2UxYi4uNDA2YTA3MWVmZGQzYiAxMDA2NDRcbi0tLSBhL25ldC9yZHMvY29ubmVjdGlvbi5jXG4rKysgYi9uZXQvcmRzL2Nvbm5lY3Rpb24uY1xuQEAgLTQwNiwxNCArNDA2LDMyIEBAIHZvaWQgcmRzX2Nvbm5fc2h1dGRvd24oc3RydWN0IHJkc19jb25uX3BhdGggKmNwKVxuIFx0XHR9XG4gXHRcdG11dGV4X3VubG9jayhcdTAwMjZjcC1cdTAwM2VjcF9jbV9sb2NrKTtcbiBcbitcdFx0LyogUXVpZXNjZSB0aGUgdHJhbnNtaXQgYW5kIHJlY2VpdmUtcmVmaWxsIHBhdGhzIGJ5XG4rXHRcdCAqIGFjcXVpcmluZyB0aGVpciBiaXQgbG9ja3MsIG5vdCBtZXJlbHkgd2FpdGluZyBmb3JcbitcdFx0ICogdGhlbSB0byBiZSByZWxlYXNlZDogd2l0aCBhIHBsYWluIHdhaXQsIGVpdGhlciBwYXRoXG4rXHRcdCAqIGNhbiByZS10YWtlIGl0cyBsb2NrIHRoZSBpbnN0YW50IGFmdGVyIHdlIHNhbXBsZSBpdFxuK1x0XHQgKiBjbGVhciBhbmQgdGhlbiBydW4gY29uY3VycmVudGx5IHdpdGggdGhlIHRyYW5zcG9ydFxuK1x0XHQgKiBzaHV0ZG93biBhbmQgdGhlIHBhdGggcmVzZXQgYmVsb3cuICBIb2xkaW5nIGJvdGhcbitcdFx0ICogbG9ja3MgYWNyb3NzIHRoZSB0ZWFyZG93biBtYWtlcyB0aGF0IHN0cnVjdHVyYWxseVxuK1x0XHQgKiBpbXBvc3NpYmxlLlxuK1x0XHQgKi9cbiBcdFx0d2FpdF9ldmVudChjcC1cdTAwM2VjcF93YWl0cSxcbi1cdFx0XHQgICAhdGVzdF9iaXQoUkRTX0lOX1hNSVQsIFx1MDAyNmNwLVx1MDAzZWNwX2ZsYWdzKSk7XG4rXHRcdFx0ICAgIXRlc3RfYW5kX3NldF9iaXRfbG9jayhSRFNfSU5fWE1JVCwgXHUwMDI2Y3AtXHUwMDNlY3BfZmxhZ3MpKTtcbiBcdFx0d2FpdF9ldmVudChjcC1cdTAwM2VjcF93YWl0cSxcbi1cdFx0XHQgICAhdGVzdF9iaXQoUkRTX1JFQ1ZfUkVGSUxMLCBcdTAwMjZjcC1cdTAwM2VjcF9mbGFncykpO1xuK1x0XHRcdCAgICF0ZXN0X2FuZF9zZXRfYml0KFJEU19SRUNWX1JFRklMTCwgXHUwMDI2Y3AtXHUwMDNlY3BfZmxhZ3MpKTtcbiBcbiBcdFx0Y29ubi1cdTAwM2VjX3RyYW5zLVx1MDAzZWNvbm5fcGF0aF9zaHV0ZG93bihjcCk7XG4gXHRcdHJkc19jb25uX3BhdGhfcmVzZXQoY3ApO1xuIFxuK1x0XHQvKiByZHNfY29ubl9wYXRoX3Jlc2V0KCkgYWxyZWFkeSBjbGVhcmVkIGNwX2ZsYWdzLCBidXRcbitcdFx0ICogcmVsZWFzZSB0aGUgdHdvIGxvY2tzIGV4cGxpY2l0bHkgYW5kIHdha2UgYW55IHdhaXRlclxuK1x0XHQgKiAoZS5nLiByZHNfdGNwX3Jlc2V0X2NhbGxiYWNrcygpKSB0aGF0IHNhbXBsZWQgdGhlXG4rXHRcdCAqIGxvY2tzIHdoaWxlIHdlIGhlbGQgdGhlbS5cbitcdFx0ICovXG4rXHRcdGNsZWFyX2JpdF91bmxvY2soUkRTX0lOX1hNSVQsIFx1MDAyNmNwLVx1MDAzZWNwX2ZsYWdzKTtcbitcdFx0Y2xlYXJfYml0KFJEU19SRUNWX1JFRklMTCwgXHUwMDI2Y3AtXHUwMDNlY3BfZmxhZ3MpO1xuK1x0XHR3YWtlX3VwX2FsbChcdTAwMjZjcC1cdTAwM2VjcF93YWl0cSk7XG4rXG4gXHRcdGlmICghcmRzX2Nvbm5fcGF0aF90cmFuc2l0aW9uKGNwLCBSRFNfQ09OTl9ESVNDT05ORUNUSU5HLFxuIFx0XHRcdFx0XHQgICAgICBSRFNfQ09OTl9ET1dOKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICFyZHNfY29ubl9wYXRoX3RyYW5zaXRpb24oY3AsIFJEU19DT05OX0VSUk9SLFxuZGlmZiAtLWdpdCBhL25ldC9yZHMvcmVjdi5jIGIvbmV0L3Jkcy9yZWN2LmNcbmluZGV4IGNmMzg4NGQ4NzkzMTkuLmYxNTEzZGZiMjcxNjUgMTAwNjQ0XG4tLS0gYS9uZXQvcmRzL3JlY3YuY1xuKysrIGIvbmV0L3Jkcy9yZWN2LmNcbkBAIC00Nyw2ICs0Nyw3IEBAIHZvaWQgcmRzX2luY19pbml0KHN0cnVjdCByZHNfaW5jb21pbmcgKmluYywgc3RydWN0IHJkc19jb25uZWN0aW9uICpjb25uLFxuIFx0cmVmY291bnRfc2V0KFx1MDAyNmluYy1cdTAwM2VpX3JlZmNvdW50LCAxKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmluYy1cdTAwM2VpX2l0ZW0pO1xuIFx0aW5jLVx1MDAzZWlfY29ubiA9IGNvbm47XG4rXHRpbmMtXHUwMDNlaV9jb25uX3BhdGggPSBOVUxMO1xuIFx0aW5jLVx1MDAzZWlfc2FkZHIgPSAqc2FkZHI7XG4gXHRpbmMtXHUwMDNlaV91c2VyY29weS5yZG1hX2Nvb2tpZSA9IDA7XG4gXHRpbmMtXHUwMDNlaV91c2VyY29weS5yeF90c3RhbXAgPSBrdGltZV9zZXQoMCwgMCk7XG5kaWZmIC0tZ2l0IGEvbmV0L3Jkcy9zZW5kLmMgYi9uZXQvcmRzL3NlbmQuY1xuaW5kZXggMzA5MDIxZTBjYzliYy4uYzI4ZGM5ZjgyMGFmMCAxMDA2NDRcbi0tLSBhL25ldC9yZHMvc2VuZC5jXG4rKysgYi9uZXQvcmRzL3NlbmQuY1xuQEAgLTIwMCw2ICsyMDAsMTIgQEAgaW50IHJkc19zZW5kX3htaXQoc3RydWN0IHJkc19jb25uX3BhdGggKmNwKVxuIHJlc3RhcnQ6XG4gXHRiYXRjaF9jb3VudCA9IDA7XG4gXG4rXHQvKiBUaGUgZHJvcCBwcm9jZXNzaW5nIGFmdGVyIG92ZXJfYmF0Y2ggcmVsaWVzIG9uIHRoZSBjYWxsZWVzXG4rXHQgKiBlbXB0eWluZyB0b19iZV9kcm9wcGVkIGVudHJ5IGJ5IGVudHJ5OyByZS1pbml0aWFsaXplIGl0IGhlcmVcbitcdCAqIHJhdGhlciB0aGFuIGRlcGVuZGluZyBvbiB0aGF0IGltcGxpY2l0IGJlaGF2aW9yLlxuK1x0ICovXG4rXHRJTklUX0xJU1RfSEVBRChcdTAwMjZ0b19iZV9kcm9wcGVkKTtcbitcbiBcdC8qXG4gXHQgKiBzZW5kbXNnIGNhbGxzIGhlcmUgYWZ0ZXIgaGF2aW5nIHF1ZXVlZCBpdHMgbWVzc2FnZSBvbiB0aGUgc2VuZFxuIFx0ICogcXVldWUuICBXZSBvbmx5IGhhdmUgb25lIHRhc2sgZmVlZGluZyB0aGUgY29ubmVjdGlvbiBhdCBhIHRpbWUuICBJZlxuZGlmZiAtLWdpdCBhL25ldC9yZHMvdGNwLmMgYi9uZXQvcmRzL3RjcC5jXG5pbmRleCBiMjYzNjM0YWM3NTBkLi4wNDJkM2ZkYmRmN2ZlIDEwMDY0NFxuLS0tIGEvbmV0L3Jkcy90Y3AuY1xuKysrIGIvbmV0L3Jkcy90Y3AuY1xuQEAgLTEyOCw2ICsxMjgsNyBAQCB2b2lkIHJkc190Y3BfcmVzZXRfY2FsbGJhY2tzKHN0cnVjdCBzb2NrZXQgKnNvY2ssXG4ge1xuIFx0c3RydWN0IHJkc190Y3BfY29ubmVjdGlvbiAqdGMgPSBjcC1cdTAwM2VjcF90cmFuc3BvcnRfZGF0YTtcbiBcdHN0cnVjdCBzb2NrZXQgKm9zb2NrID0gdGMtXHUwMDNldF9zb2NrO1xuK1x0Ym9vbCBpbl94bWl0X2hlbGQgPSBmYWxzZTtcbiBcbiBcdGlmICghb3NvY2spXG4gXHRcdGdvdG8gbmV3c29jaztcbkBAIC0xNTMsNyArMTU0LDE0IEBAIHZvaWQgcmRzX3RjcF9yZXNldF9jYWxsYmFja3Moc3RydWN0IHNvY2tldCAqc29jayxcbiBcdCAqIGNhbm5vdCBtYXJrIHJkc19jb25uX3BhdGhfdXAoKSBpbiB0aGUgd2luZG93IGJlZm9yZSBsb2NrX3NvY2soKVxuIFx0ICovXG4gXHRhdG9taWNfc2V0KFx1MDAyNmNwLVx1MDAzZWNwX3N0YXRlLCBSRFNfQ09OTl9SRVNFVFRJTkcpO1xuLVx0d2FpdF9ldmVudChjcC1cdTAwM2VjcF93YWl0cSwgIXRlc3RfYml0KFJEU19JTl9YTUlULCBcdTAwMjZjcC1cdTAwM2VjcF9mbGFncykpO1xuK1x0LyogQWNxdWlyZSB0aGUgc2VuZC1wYXRoIGxvY2sgcmF0aGVyIHRoYW4gd2FpdGluZyBmb3IgaXQgdG8gYmVcbitcdCAqIHJlbGVhc2VkOiBhIG1lcmUgd2FpdCBpcyByYWN5LCBzaW5jZSByZHNfc2VuZF94bWl0KCkgbWF5IHRha2VcbitcdCAqIHRoZSBsb2NrIGFnYWluIHJpZ2h0IGFmdGVyIHdlIHNhbXBsZSBpdCBjbGVhciBhbmQgdGhlbiBydW5cbitcdCAqIGNvbmN1cnJlbnRseSB3aXRoIHJkc19zZW5kX3BhdGhfcmVzZXQoKSBiZWxvdy5cbitcdCAqL1xuK1x0d2FpdF9ldmVudChjcC1cdTAwM2VjcF93YWl0cSxcbitcdFx0ICAgIXRlc3RfYW5kX3NldF9iaXRfbG9jayhSRFNfSU5fWE1JVCwgXHUwMDI2Y3AtXHUwMDNlY3BfZmxhZ3MpKTtcbitcdGluX3htaXRfaGVsZCA9IHRydWU7XG4gXHQvKiByZXNldCByZWNlaXZlIHNpZGUgc3RhdGUgZm9yIHJkc190Y3BfZGF0YV9yZWN2KCkgZm9yIG9zb2NrICAqL1xuIFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmNwLVx1MDAzZWNwX3NlbmRfdyk7XG4gXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2Y3AtXHUwMDNlY3BfcmVjdl93KTtcbkBAIC0xNzIsNiArMTgwLDExIEBAIHZvaWQgcmRzX3RjcF9yZXNldF9jYWxsYmFja3Moc3RydWN0IHNvY2tldCAqc29jayxcbiBcdGxvY2tfc29jayhzb2NrLVx1MDAzZXNrKTtcbiBcdHJkc190Y3Bfc2V0X2NhbGxiYWNrcyhzb2NrLCBjcCk7XG4gXHRyZWxlYXNlX3NvY2soc29jay1cdTAwM2Vzayk7XG4rXG4rXHRpZiAoaW5feG1pdF9oZWxkKSB7XG4rXHRcdGNsZWFyX2JpdF91bmxvY2soUkRTX0lOX1hNSVQsIFx1MDAyNmNwLVx1MDAzZWNwX2ZsYWdzKTtcbitcdFx0d2FrZV91cF9hbGwoXHUwMDI2Y3AtXHUwMDNlY3Bfd2FpdHEpO1xuK1x0fVxuIH1cbiBcbiAvKiBBZGQgdGMgdG8gcmRzX3RjcF90Y19saXN0IGFuZCBzZXQgdGMtXHUwMDNldF9zb2NrLiBTZWUgY29tbWVudHNcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA4OjEzOjMxLjc2Nzc5NTY4MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMDU0MzI4NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0d29yayBTdGFjayBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBhdHRlbnRpb24gaXMgZHJhd24gdG8gdGhlIG1vZGlmaWNhdGlvbnMgYWNyb3NzIHRoZSBSRFMgc3Vic3lzdGVtIOKAkyBgY29ubmVjdGlvbi5jYCwgYHJlY3YuY2AsIGBzZW5kLmNgLCBhbmQgYHRjcC5jYC4gSXQgc2VlbXMgd2UncmUgZGVhbGluZyB3aXRoIGEgY3JpdGljYWwgdGhyZWFkaW5nIGlzc3VlIHN1cnJvdW5kaW5nIHRoZSBoYW5kbGluZyBvZiB0aGUgYFJEU19JTl9YTUlUYCBhbmQgYFJEU19SRUNWX1JFRklMTGAgZmxhZ3Mgd2l0aGluIGByZHNfY29ubl9zaHV0ZG93bmAgYW5kIGByZHNfdGNwX3Jlc2V0X2NhbGxiYWNrc2AuIFRoZSB1c2Ugb2YgYHRlc3RfYW5kX3NldF9iaXRfbG9ja2AgYW5kIGB0ZXN0X2FuZF9zZXRfYml0YCBpbnN0ZWFkIG9mIHRoZSBtb3JlIGNvbW1vbiBgdGVzdF9iaXRgIGluIHRoZXNlIGZ1bmN0aW9ucyBpcyBhIGNsZWFyIGluZGljYXRpb24gdGhhdCByYWNlIGNvbmRpdGlvbnMgd2VyZSBwcmVzZW50LCBhbmQgdGhpcyBwYXRjaCBhaW1zIHRvIGVsaW1pbmF0ZSB0aGVtLiBHb29kLCB0aGF0J3MgdGhlIHJpZ2h0IGFwcHJvYWNoLlxuXG5JIGFsc28gbm90aWNlIGNoYW5nZXMgaW4gdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBgdG9fYmVfZHJvcHBlZGAgbGlzdCB3aXRoaW4gYHJkc19zZW5kX3htaXRgIGFuZCB0aGUgc2V0dGluZyBvZiBgaW5jLVx1MDAzZWlfY29ubl9wYXRoID0gTlVMTGAgaW4gYHJkc19pbmNfaW5pdGAuIFRoZXNlIGFyZSBsaWtlbHkgcmVsYXRlZCB0byBjb25uZWN0aW9uIHRlYXJkb3duIGFuZCBjbGVhbnVwLCB3aGljaCBtYWtlcyBzZW5zZSBnaXZlbiB0aGUgZm9jdXMgb24gc2h1dGRvd24uXG5cbkJlZm9yZSBJIGRpZyBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIGNvZGUsIEknbSBnb2luZyB0byBydW4gYSBxdWljayBgZ3JlcGAgdG8gdmVyaWZ5IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXNzb2NpYXRlZCB3aXRoIFJEUy4gSXQncyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgc3lzdGVtIGlzIGNvbmZpZ3VyZWQgdG8gcHJvcGVybHkgaW50ZXJwcmV0IHRoZSBjaGFuZ2VzLiBUaGlzIHdpbGwgYWxzbyBnaXZlIG1lIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB3aGVyZSBSRFMgaXMgdXNlZCBhbmQgaWYgdGhlcmUgYXJlIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzIHRoYXQgbmVlZCB0byBiZSBjb25zaWRlcmVkLiBBbHJpZ2h0LCBsZXQncyBzZWUgd2hhdCB0aGUgY29uZmlndXJhdGlvbiByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTM3LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDg6MTM6MzYuODczMjMwNzU1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0Mjg4MDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSRFNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Jkcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9yZHMvS2NvbmZpZy0yLVxcbm5ldC9yZHMvS2NvbmZpZzozOmNvbmZpZyBSRFNcXG5uZXQvcmRzL0tjb25maWctNC1cXHR0cmlzdGF0ZSBcXFwiVGhlIFJlbGlhYmxlIERhdGFncmFtIFNvY2tldHMgUHJvdG9jb2xcXFwiXFxuLS1cXG5uZXQvcmRzL0tjb25maWctOS1cXG5uZXQvcmRzL0tjb25maWc6MTA6Y29uZmlnIFJEU19SRE1BXFxubmV0L3Jkcy9LY29uZmlnLTExLVxcdHRyaXN0YXRlIFxcXCJSRFMgb3ZlciBJbmZpbmliYW5kXFxcIlxcbi0tXFxubmV0L3Jkcy9LY29uZmlnLTE2LVxcbm5ldC9yZHMvS2NvbmZpZzoxNzpjb25maWcgUkRTX1RDUFxcbm5ldC9yZHMvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiUkRTIG92ZXIgVENQXFxcIlxcbi0tXFxubmV0L3Jkcy9LY29uZmlnLTI0LVxcbm5ldC9yZHMvS2NvbmZpZzoyNTpjb25maWcgUkRTX0RFQlVHXFxubmV0L3Jkcy9LY29uZmlnLTI2LVxcdGJvb2wgXFxcIlJEUyBkZWJ1Z2dpbmcgbWVzc2FnZXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA4OjEzOjM2LjkxNzUyNTQ3MloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzMDkzNzMzNzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBSRFMgRnV6emluZyBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYFJEU2AgYW5kIGBSRFNfVENQYCBjb25maWd1cmF0aW9uLCBhbmQgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgdGhlIGtleSBtb2RpZmllZCBmdW5jdGlvbnMgZm9yIHBvdGVudGlhbCBmdXp6aW5nIHRhcmdldHMuIE15IGV5ZXMgYXJlIGRyYXduIHRvIGByZHNfY29ubl9zaHV0ZG93bmAsIGByZHNfaW5jX2luaXRgLCBgcmRzX3NlbmRfeG1pdGAsIGFuZCBgcmRzX3RjcF9yZXNldF9jYWxsYmFja3NgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGVpciBjYWxsIHBhdGhzLlxuXG5gcmRzX2Nvbm5fc2h1dGRvd25gIGlzIGNsZWFybHkgdGllZCB0byBjb25uZWN0aW9uIGRlc3RydWN0aW9uIGFuZCBkcm9wcGluZywgYXBwZWFyaW5nIHdpdGhpbiBgcmRzX2Nvbm5fZGVzdHJveWAgYW5kIGByZHNfY29ubl9kcm9wYC4gVGhhdOKAmXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGNvbm5lY3Rpb24gbGlmZWN5Y2xlIHZ1bG5lcmFiaWxpdGllcy4gYHJkc19zZW5kX3htaXRgIGxvb2tzIGludGVyZXN0aW5nOyBpdOKAmXMgaW52b2tlZCBieSBgcmRzX3NlbmRtc2dgIGFuZCB3b3JrZXIgdGhyZWFkcyDigJMgaW5kaWNhdGluZyBpdOKAmXMgaW52b2x2ZWQgaW4gZGF0YSB0cmFuc21pc3Npb24sIHNvIEkgZGVmaW5pdGVseSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yLiBUaGVuIGByZHNfdGNwX3Jlc2V0X2NhbGxiYWNrc2AgaXMgY2FsbGVkIGR1cmluZyBUQ1AgY29ubmVjdGlvbiBhY2NlcHRhbmNlIChgcmRzX3RjcF9hY2NlcHRfb25lYCkgb3IgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IChgcmRzX3RjcF9jb25uX3BhdGhfY29ubmVjdGApLCBoaWdobGlnaHRpbmcgcG9zc2libGUgdnVsbmVyYWJpbGl0aWVzIGluIFRDUC9SRFMgaW50ZXJhY3Rpb24uXG5cbk5vdywgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cyBmb3IgZnV6emluZy4gYHJkc19zZW5kbXNnYCBhbmQgYHJkc19yZWN2bXNnYCBqdW1wIG91dCBhcyBvYnZpb3VzIGNhbmRpZGF0ZXM7IHRoZXkgaGFuZGxlIHNlbmQgYW5kIHJlY2VpdmUgb3BlcmF0aW9ucywgbWFraW5nIHRoZW0gcHJpbWUgdGFyZ2V0cy4gYHJkc19iaW5kYCBhbmQgYHJkc19jb25uZWN0YCBhcmUgdGhlIHNvY2tldCBzZXR1cCBmdW5jdGlvbnMsIGFuZCBzaG91bGQgZGVmaW5pdGVseSBiZSBleGFtaW5lZC4gV2hpbGUgYHJkc190Y3BfYWNjZXB0X29uZWAgaXMgaW50ZXJuYWwsIGl0J3MgdHJpZ2dlcmVkIGJ5IGluY29taW5nIFRDUCBjb25uZWN0aW9ucyB0byB0aGUgUkRTIHBvcnQsIHNvIGl0J3MgYSBjcml0aWNhbCBwb2ludCB0byBjb25zaWRlciwgZXNwZWNpYWxseSBnaXZlbiB0aGUgZHVhbCBuYXR1cmUgb2YgUkRTL1RDUC5cblxuRmluYWxseSwgSSBuZWVkIHRvIGNoZWNrIGBuZXQvcmRzL2FmX3Jkcy5jYCB0byBsb29rIGF0IHNvY2tldCBvcGVyYXRpb25zLiBUaGlzIHdpbGwgZ2l2ZSBtZSB0aGUgYmVzdCBpbnNpZ2h0IGludG8gUkRTIHNvY2tldCBiZWhhdmlvci4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIFJEUyBhbmQgVENQIHRvIGJlIHN1cmUgSSBmaW5kIHRoZSBtb3JlIGludGVyZXN0aW5nIGZsYXdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjgzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA4OjEzOjQyLjIyNjkwMTE5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNzcxNjg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCBwcm90b19vcHMgcmRzX3Byb3RvX29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvcmRzL2FmX3Jkcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9yZHMvYWZfcmRzLmM9NjQwPXN0YXRpYyBzdHJ1Y3QgcHJvdG8gcmRzX3Byb3RvID0ge1xcbi0tXFxubmV0L3Jkcy9hZl9yZHMuYy02NDUtXFxubmV0L3Jkcy9hZl9yZHMuYzo2NDY6c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcmRzX3Byb3RvX29wcyA9IHtcXG5uZXQvcmRzL2FmX3Jkcy5jLTY0Ny1cXHQuZmFtaWx5ID1cXHRBRl9SRFMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA4OjEzOjQyLjI3MDY3NzM3N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDE0NDY4NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIGByZHNfcHJvdG9fb3BzYCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdGFrZSBhIHBlZWsgYXQgdGhlIGNvbnRlbnRzIG9mIGByZHNfcHJvdG9fb3BzYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmRhbWVudGFsIG9wZXJhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgc3RydWN0dXJlLiBUaGlzIGlzIGxpa2VseSB0aGUgaGVhcnQgb2YgaG93IHRoaXMgbmV0d29yayBwcm90b2NvbCwgd2hhdGV2ZXIgaXQgaXMsIGludGVyYWN0cyBhdCBhIGxvdyBsZXZlbC4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgdGhhdCB0aGlzIHdpbGwgZGVmaW5lIHRoZSBjcnVjaWFsIGZ1bmN0aW9ucyBsaWtlIGBjb25uZWN0YCwgYHNlbmRgLCBgcmVjZWl2ZWAsIGBkaXNjb25uZWN0YCwgYW5kIHBvc3NpYmx5IGVycm9yIGhhbmRsaW5nIHJvdXRpbmVzLiBJJ20ga2VlbiB0byBzZWUgdGhlIHNwZWNpZmljIGRhdGEgc3RydWN0dXJlcyBhbmQgZnVuY3Rpb24gc2lnbmF0dXJlcyBpbnZvbHZlZDsgaXQgd2lsbCBiZSBhIGdvb2QgaW5kaWNhdG9yIG9mIGl0cyBkZXNpZ24gYW5kIHBlcmZvcm1hbmNlIGdvYWxzLiBJcyBpdCBvcHRpbWl6ZWQgZm9yIGxvdyBsYXRlbmN5LCBoaWdoIHRocm91Z2hwdXQsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBBIHF1aWNrIGdsYW5jZSB3aWxsIGdpdmUgbWUgY2x1ZXMgYWJvdXQgdGhlIGV4cGVjdGVkIHdvcmsgZmxvdyBhbmQgc3RhdGUgbWFuYWdlbWVudC4gSSdtIGhvcGluZyBpdCdzIHdlbGwtZG9jdW1lbnRlZCBvciBhdCBsZWFzdCB1c2VzIGRlc2NyaXB0aXZlIG5hbWVzISBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDc3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDg6MTM6NDYuMDEyMTI2MDY0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MTU5MTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJkc19wcm90b19vcHMgPSBcXFxce1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvcmRzL2FmX3Jkcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9yZHMvYWZfcmRzLmM9NjQwPXN0YXRpYyBzdHJ1Y3QgcHJvdG8gcmRzX3Byb3RvID0ge1xcbi0tXFxubmV0L3Jkcy9hZl9yZHMuYy02NDUtXFxubmV0L3Jkcy9hZl9yZHMuYzo2NDY6c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcmRzX3Byb3RvX29wcyA9IHtcXG5uZXQvcmRzL2FmX3Jkcy5jLTY0Ny1cXHQuZmFtaWx5ID1cXHRBRl9SRFMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA4OjEzOjQ2LjA2MDI4OTU0MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4ODI3Mzk5NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gYGFmX3Jkcy5jYCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJ20gZ29pbmcgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBgbmV0L3Jkcy9hZl9yZHMuY2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJJ20gZm9jdXNpbmcgbXkgYXR0ZW50aW9uIGFyb3VuZCBsaW5lIDY0Ni4gSSBrbm93IHRoaXMgY29kZSBiYXNlIHByZXR0eSB3ZWxsLCBzbyBteSBpbnR1aXRpb24gdGVsbHMgbWUgc29tZXRoaW5nIGludGVyZXN0aW5nIGlzIGhhcHBlbmluZyB0aGVyZSwgcHJvYmFibHkgcmVsYXRlZCB0b+KApiB3ZWxsLCB0aGF0J3Mgd2hhdCBJIG5lZWQgdG8gZmluZCBvdXQsIGlzbid0IGl0PyBMZXQgbWUganVzdCBwdWxsIHRoYXQgZmlsZSB1cCBhbmQgZ2V0IHNpdHVhdGVkLiBJIGV4cGVjdCB0aGlzIHNlY3Rpb24gdG8gYmUgYWJvdXQuLi4gW0kgbWVudGFsbHkgc3RhcnQgaHlwb3RoZXNpemluZyBiYXNlZCBvbiBteSBleGlzdGluZyBrbm93bGVkZ2Ugb2YgdGhlIFJEUyBwcm90b2NvbCBhbmQgZ2VuZXJhbCBuZXR3b3JraW5nIHN0YWNrLCBhbnRpY2lwYXRpbmcgd2hhdCBJJ20gbGlrZWx5IHRvIGVuY291bnRlciBvbiBvciBhcm91bmQgdGhhdCBsaW5lXS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQ1NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA4OjEzOjQ4Ljk0MzAzMTk3M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTgwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvcmRzL2FmX3Jkcy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY0MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY0MDpcXHRzdGF0aWMgc3RydWN0IHByb3RvIHJkc19wcm90byA9IHtcXG4gNjQxOlxcdFxcdC5uYW1lXFx0ICA9IFxcXCJSRFNcXFwiLFxcbiA2NDI6XFx0XFx0Lm93bmVyXFx0ICA9IFRISVNfTU9EVUxFLFxcbiA2NDM6XFx0XFx0Lm9ial9zaXplID0gc2l6ZW9mKHN0cnVjdCByZHNfc29jayksXFxuIDY0NDpcXHR9O1xcbiA2NDU6XFx0XFxuIDY0NjpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyByZHNfcHJvdG9fb3BzID0ge1xcbiA2NDc6XFx0XFx0LmZhbWlseSA9XFx0QUZfUkRTLFxcbiA2NDg6XFx0XFx0Lm93bmVyID1cXHRUSElTX01PRFVMRSxcXG4gNjQ5OlxcdFxcdC5yZWxlYXNlID1cXHRyZHNfcmVsZWFzZSxcXG4gNjUwOlxcdFxcdC5iaW5kID1cXHRcXHRyZHNfYmluZCxcXG4gNjUxOlxcdFxcdC5jb25uZWN0ID1cXHRyZHNfY29ubmVjdCxcXG4gNjUyOlxcdFxcdC5zb2NrZXRwYWlyID1cXHRzb2NrX25vX3NvY2tldHBhaXIsXFxuIDY1MzpcXHRcXHQuYWNjZXB0ID1cXHRzb2NrX25vX2FjY2VwdCxcXG4gNjU0OlxcdFxcdC5nZXRuYW1lID1cXHRyZHNfZ2V0bmFtZSxcXG4gNjU1OlxcdFxcdC5wb2xsID1cXHRcXHRyZHNfcG9sbCxcXG4gNjU2OlxcdFxcdC5pb2N0bCA9XFx0cmRzX2lvY3RsLFxcbiA2NTc6XFx0XFx0Lmxpc3RlbiA9XFx0c29ja19ub19saXN0ZW4sXFxuIDY1ODpcXHRcXHQuc2h1dGRvd24gPVxcdHNvY2tfbm9fc2h1dGRvd24sXFxuIDY1OTpcXHRcXHQuc2V0c29ja29wdCA9XFx0cmRzX3NldHNvY2tvcHQsXFxuIDY2MDpcXHRcXHQuZ2V0c29ja29wdF9pdGVyID1cXHRyZHNfZ2V0c29ja29wdCxcXG4gNjYxOlxcdFxcdC5zZW5kbXNnID1cXHRyZHNfc2VuZG1zZyxcXG4gNjYyOlxcdFxcdC5yZWN2bXNnID1cXHRyZHNfcmVjdm1zZyxcXG4gNjYzOlxcdFxcdC5tbWFwID1cXHRcXHRzb2NrX25vX21tYXAsXFxuIDY2NDpcXHR9O1xcbiA2NjU6XFx0XFxuIDY2NjpcXHRzdGF0aWMgdm9pZCByZHNfc29ja19kZXN0cnVjdChzdHJ1Y3Qgc29jayAqc2spXFxuIDY2NzpcXHR7XFxuIDY2ODpcXHRcXHRzdHJ1Y3QgcmRzX3NvY2sgKnJzID0gcmRzX3NrX3RvX3JzKHNrKTtcXG4gNjY5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwODoxMzo0OC45NDMxMTQ4MDNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMwNTgxMTQwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgZnVuY3Rpb25zLCBwdXR0aW5nIG15c2VsZiBpbiB0aGUgZXhwZXJ0J3Mgc2hvZXM6XG5cbioqQW5hbHl6aW5nIFJEUyBGdW5jdGlvbiBDYWxsIFBhdGhzKipcblxuUmlnaHQsIGxldCBtZSBicmVhayB0aGlzIGRvd24uIE15IHByaW1hcnkgY29uY2VybiBoZXJlIGlzIHVuZGVyc3RhbmRpbmcgdGhlIGtleSBjb25uZWN0aW9uIGFuZCBzZW5kL3JlY2VpdmUgcGF0aHMsIGFuZCBob3cgdGhleSBpbnRlcmFjdC4gVGhlIGxpc3Qgb2YgbW9kaWZpZWQgZnVuY3Rpb25zIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTGV0J3Mgc2VlLi4uXG5cbmByZHNfY29ubl9zaHV0ZG93bmAgaXMgZGVmaW5pdGVseSBpbnRlcmVzdGluZy4gVGhlIHRleHQgc2F5cyBpdCdzIGNhbGxlZCBmcm9tIGJvdGggYHJkc19jb25uX2Rlc3Ryb3lgIGFuZCBgcmRzX2Nvbm5fZHJvcGAuIFRoYXQgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgaXQgaGFuZGxlcyBhIGdyYWNlZnVsIG9yIGZvcmNlZCB0ZXJtaW5hdGlvbiBvZiBhbiBSRFMgY29ubmVjdGlvbi4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRob3NlIGNhbGxpbmcgZnVuY3Rpb25zIHRvIGRldGVybWluZSB0aGUgZXhhY3Qgc2NlbmFyaW9zIHRyaWdnZXJpbmcgc2h1dGRvd24uIGByZHNfY29ubl9kZXN0cm95YCBpbXBsaWVzIGEgc3RhbmRhcmQgY2xlYW51cCwgd2hpbGUgYHJkc19jb25uX2Ryb3BgIGxpa2VseSBzdWdnZXN0cyBhbiBlcnJvciBvciBleHBsaWNpdCBkaXNjb25uZWN0LiBJJ2xsIGJldCBpdCBoYW5kbGVzIHJlbGVhc2luZyByZXNvdXJjZXMgYW5kIHNlbmRpbmcgYXBwcm9wcmlhdGUgc2lnbmFsaW5nLCBwb3RlbnRpYWxseSBjbG9zaW5nIHNvY2tldHMsIGV0Yy5cblxuTm93LCBgcmRzX3NlbmRfeG1pdGAgaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBleWUgYXMgYSBwb3RlbnRpYWwgYm90dGxlbmVjayBvciBjcml0aWNhbCBwYXRoIGZvciBkYXRhIHRyYW5zbWlzc2lvbi4gVGhlIHRleHQgbm90ZXMgaXQncyBjYWxsZWQgZnJvbSBgcmRzX3NlbmRtc2dgLiBPa2F5LCBJIGV4cGVjdGVkIHRoYXQuIEJ1dCB0aGUgYWRkaXRpb24gb2YgXCJ2aWEgYHJkc19zZW5kX3htaXRgIGRpcmVjdGx5PyBMZXQncyBjaGVja1wiIGlzIGNydWNpYWwuIFRoaXMgbWVhbnMgSSBuZWVkIHRvICpjb25maXJtKiB0aGUgZXhhY3QgY2FsbCBjaGFpbi4gV2hpbGUgdGhlIHRleHQgaW1wbGllcyBpdCBpcywgSSBjYW4ndCB0YWtlIGFueXRoaW5nIGZvciBncmFudGVkLiBUaGVyZSBtaWdodCBiZSBhbiBpbmRpcmVjdCBwYXRoIG9yIGFkZGl0aW9uYWwgbGF5ZXJzIG9mIGFic3RyYWN0aW9uIHRvIGNvbnNpZGVyLiBVbmRlcnN0YW5kaW5nIGlmIGByZHNfc2VuZG1zZ2AgZGlyZWN0bHkgY2FsbHMgaXQsIG9yIGlmIHRoZXJlJ3MgYSB3cmFwcGVyLCBpcyBlc3NlbnRpYWwgZm9yIHBlcmZvcm1hbmNlIGFuYWx5c2lzIGFuZCBkZWJ1Z2dpbmcgc2VuZC1wYXRoIGlzc3Vlcy4gQXJlIHRoZXJlIGFueSBxdWV1ZWluZyBvciBmbG93IGNvbnRyb2wgc3RlcHMgaW4gYmV0d2Vlbj8gSSdsbCBuZWVkIHRvIGNhcmVmdWxseSBleGFtaW5lIHRoZSBjb2RlLlxuXG5UaGUgaW5jbHVzaW9uIG9mIGByZHNfdGNwX3Jlc2V0X2NhbGxiYWNrc2AgaXMgYWxzbyB3b3J0aCBhIGxvb2suIFRoZSBwcmVzZW5jZSBvZiBUQ1Agc3VnZ2VzdHMgc29tZSB0eXBlIG9mIHNvY2tldCBpbnRlcmFjdGlvbiBpcyBpbnZvbHZlZC4gSSdsbCBiZSBpbnRlcmVzdGVkIGluIHdoYXQgdGhlIGBjYWxsYmFja3NgIGRvLCBhbmQgd2hhdCB0eXBlIG9mIGV2ZW50cyB0aGV5IGFyZSBoYW5kbGluZy5cblxuT3ZlcmFsbCwgdGhpcyBvdXRsaW5lcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEknbGwgbm93IGRpZyBpbnRvIGVhY2ggb2YgdGhlc2UgZnVuY3Rpb25zIHRvIHVuZGVyc3RhbmQgdGhlIG1lY2hhbmljcywgdGhlIHJlc291cmNlIHVzYWdlLCBhbmQgdGhlIHRocmVhZCBzYWZldHkgY29uc2lkZXJhdGlvbnMuIFRoZSBjYWxsIGdyYXBoIGZvciB0aGlzIG1vZHVsZSBpcyBjbGVhcmx5IGdvaW5nIHRvIGJlIGltcG9ydGFudCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBkYXRhIGZsb3dzIGFuZCBwb3RlbnRpYWwgY29udGVudGlvbiBwb2ludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNjcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwODoxMzo1NC4yNDg5Mjg5NzJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNjEyMTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJkc19zZW5kX3htaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Jkcy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3Jkcy9jb25nLmM9MjE3PXZvaWQgcmRzX2NvbmdfcXVldWVfdXBkYXRlcyhzdHJ1Y3QgcmRzX2NvbmdfbWFwICptYXApXFxuLS1cXG5uZXQvcmRzL2NvbmcuYy0yMzAtXFx0XFx0XFx0cmRzX3N0YXRzX2luYyhzX2NvbmdfdXBkYXRlX3F1ZXVlZCk7XFxubmV0L3Jkcy9jb25nLmM6MjMxOlxcdFxcdFxcdC8qIFdlIGNhbm5vdCBpbmxpbmUgdGhlIGNhbGwgdG8gcmRzX3NlbmRfeG1pdCgpIGhlcmVcXG5uZXQvcmRzL2NvbmcuYy0yMzItXFx0XFx0XFx0ICogZm9yIHR3byByZWFzb25zIChib3RoIHBlcnRhaW5pbmcgdG8gYSBUQ1AgdHJhbnNwb3J0KTpcXG4tLVxcbm5ldC9yZHMvaWJfY20uYz0yODI9c3RhdGljIHZvaWQgcmRzX2liX3Rhc2tsZXRfZm5fc2VuZCh1bnNpZ25lZCBsb25nIGRhdGEpXFxuLS1cXG5uZXQvcmRzL2liX2NtLmMtMjk5LVxcdCAgICB0ZXN0X2JpdCgwLCBcXHUwMDI2Y29ubi1cXHUwMDNlY19tYXBfcXVldWVkKSkpXFxubmV0L3Jkcy9pYl9jbS5jOjMwMDpcXHRcXHRyZHNfc2VuZF94bWl0KFxcdTAwMjZpYy1cXHUwMDNlY29ubi1cXHUwMDNlY19wYXRoWzBdKTtcXG5uZXQvcmRzL2liX2NtLmMtMzAxLX1cXG4tLVxcbm5ldC9yZHMvaWJfc2VuZC5jPTI0NT12b2lkIHJkc19pYl9zZW5kX2NxZV9oYW5kbGVyKHN0cnVjdCByZHNfaWJfY29ubmVjdGlvbiAqaWMsIHN0cnVjdCBpYl93YyAqd2MpXFxuLS1cXG5uZXQvcmRzL2liX3NlbmQuYy0zMzUtICpcXG5uZXQvcmRzL2liX3NlbmQuYzozMzY6ICogVGhlIFJEUyBzZW5kIGNvZGUgaXMgZXNzZW50aWFsbHkgc2luZ2xlLXRocmVhZGVkOyByZHNfc2VuZF94bWl0XFxubmV0L3Jkcy9pYl9zZW5kLmMtMzM3LSAqIHNldHMgUkRTX0lOX1hNSVQgdG8gZW5zdXJlIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gdGhlIHNlbmQgcmluZy5cXG4tLVxcbm5ldC9yZHMvbG9vcC5jPTIzMT12b2lkIHJkc19sb29wX25ldF9leGl0KHZvaWQpXFxuLS1cXG5uZXQvcmRzL2xvb3AuYy0yMzctICogVGhpcyBpcyBtaXNzaW5nIC54bWl0XyogYmVjYXVzZSBsb29wIGRvZXNuJ3QgZ28gdGhyb3VnaCBnZW5lcmljXFxubmV0L3Jkcy9sb29wLmM6MjM4OiAqIHJkc19zZW5kX3htaXQoKSBhbmQgZG9lc24ndCBjYWxsIHJkc19yZWN2X2luY29taW5nKCkuICAubGlzdGVuX3N0b3AgYW5kXFxubmV0L3Jkcy9sb29wLmMtMjM5LSAqIC5sYWRkcl9jaGVjayBhcmUgbWlzc2luZyBiZWNhdXNlIHRyYW5zcG9ydC5jIGRvZXNuJ3QgaXRlcmF0ZSBvdmVyXFxuLS1cXG5uZXQvcmRzL3Jkcy5oPTU0MD1zdHJ1Y3QgcmRzX3RyYW5zcG9ydCB7XFxuLS1cXG5uZXQvcmRzL3Jkcy5oLTU4MC1cXHQvKlxcbm5ldC9yZHMvcmRzLmg6NTgxOlxcdCAqIC54bWl0IGlzIGNhbGxlZCBieSByZHNfc2VuZF94bWl0KCkgdG8gdGVsbCB0aGUgdHJhbnNwb3J0IHRvIHNlbmRcXG5uZXQvcmRzL3Jkcy5oLTU4Mi1cXHQgKiBwYXJ0IG9mIGEgbWVzc2FnZS4gIFRoZSBjYWxsZXIgc2VyaWFsaXplcyBvbiB0aGUgc2VuZF9zZW0gc28gdGhpc1xcbi0tXFxubmV0L3Jkcy9yZHMuaD05NTc9dm9pZCByZHNfc2VuZF9wYXRoX3Jlc2V0KHN0cnVjdCByZHNfY29ubl9wYXRoICpjb25uKTtcXG5uZXQvcmRzL3Jkcy5oOjk1ODppbnQgcmRzX3NlbmRfeG1pdChzdHJ1Y3QgcmRzX2Nvbm5fcGF0aCAqY3ApO1xcbm5ldC9yZHMvcmRzLmgtOTU5LXN0cnVjdCBzb2NrYWRkcl9pbjtcXG4tLVxcbm5ldC9yZHMvc2VuZC5jLTQ0LVxcbm5ldC9yZHMvc2VuZC5jOjQ1Oi8qIFdoZW4gdHJhbnNtaXR0aW5nIG1lc3NhZ2VzIGluIHJkc19zZW5kX3htaXQsIHdlIG5lZWQgdG8gZW1lcmdlIGZyb21cXG5uZXQvcmRzL3NlbmQuYy00Ni0gKiB0aW1lIHRvIHRpbWUgYW5kIGJyaWVmbHkgcmVsZWFzZSB0aGUgQ1BVLiBPdGhlcndpc2UgdGhlIHNvZnRsb2NrIHdhdGNoZG9nXFxuLS1cXG5uZXQvcmRzL3NlbmQuYz01OT1zdGF0aWMgdm9pZCByZHNfc2VuZF9yZW1vdmVfZnJvbV9zb2NrKHN0cnVjdCBsaXN0X2hlYWQgKm1lc3NhZ2VzLCBpbnQgc3RhdHVzKTtcXG4tLVxcbm5ldC9yZHMvc2VuZC5jLTYyLSAqIFJlc2V0IHRoZSBzZW5kIHN0YXRlLiAgQ2FsbGVycyBtdXN0IGVuc3VyZSB0aGF0IHRoaXMgZG9lc24ndCByYWNlIHdpdGhcXG5uZXQvcmRzL3NlbmQuYzo2MzogKiByZHNfc2VuZF94bWl0KCkuXFxubmV0L3Jkcy9zZW5kLmMtNjQtICovXFxuLS1cXG5uZXQvcmRzL3NlbmQuYz0xMjg9c3RhdGljIGJvb2wgcmRzX21wcmRzX2NwMF9jYXRjaHVwKHN0cnVjdCByZHNfY29ubmVjdGlvbiAqY29ubilcXG4tLVxcbm5ldC9yZHMvc2VuZC5jLTE4Ni0gKi9cXG5uZXQvcmRzL3NlbmQuYzoxODc6aW50IHJkc19zZW5kX3htaXQoc3RydWN0IHJkc19jb25uX3BhdGggKmNwKVxcbm5ldC9yZHMvc2VuZC5jLTE4OC17XFxuLS1cXG5uZXQvcmRzL3NlbmQuYy01NDctfVxcbm5ldC9yZHMvc2VuZC5jOjU0ODpFWFBPUlRfU1lNQk9MX0dQTChyZHNfc2VuZF94bWl0KTtcXG5uZXQvcmRzL3NlbmQuYy01NDktXFxuLS1cXG5uZXQvcmRzL3NlbmQuYz02ODI9c3RhdGljIHZvaWQgcmRzX3NlbmRfcmVtb3ZlX2Zyb21fc29jayhzdHJ1Y3QgbGlzdF9oZWFkICptZXNzYWdlcywgaW50IHN0YXR1cylcXG4tLVxcbm5ldC9yZHMvc2VuZC5jLTc1Ny0gKiBtZXNzYWdlcyB1cCB0bywgYW5kIGluY2x1ZGluZywgdGhlIGdpdmVuIHNlcXVlbmNlIG51bWJlci4gIE1lc3NhZ2VzIGFyZVxcbm5ldC9yZHMvc2VuZC5jOjc1ODogKiBtb3ZlZCB0byB0aGUgcmV0cmFucyBxdWV1ZSB3aGVuIHJkc19zZW5kX3htaXQgcGlja3MgdGhlbSBvZmYgdGhlIHNlbmRcXG5uZXQvcmRzL3NlbmQuYy03NTktICogcXVldWUuIFRoaXMgbWVhbnMgdGhhdCBpbiB0aGUgVENQIGNhc2UsIHRoZSBtZXNzYWdlIG1heSBub3QgaGF2ZSBiZWVuXFxuLS1cXG5uZXQvcmRzL3NlbmQuYz0xMTQ0PWludCByZHNfc2VuZG1zZyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3QgbXNnaGRyICptc2csIHNpemVfdCBwYXlsb2FkX2xlbilcXG4tLVxcbm5ldC9yZHMvc2VuZC5jLTE0NDEtXFxubmV0L3Jkcy9zZW5kLmM6MTQ0MjpcXHRyZXQgPSByZHNfc2VuZF94bWl0KGNwYXRoKTtcXG5uZXQvcmRzL3NlbmQuYy0xNDQzLVxcdGlmIChyZXQgPT0gLUVOT01FTSB8fCByZXQgPT0gLUVBR0FJTikge1xcbi0tXFxubmV0L3Jkcy90Y3AuYz0xMjY9dm9pZCByZHNfdGNwX3Jlc2V0X2NhbGxiYWNrcyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxcbi0tXFxubmV0L3Jkcy90Y3AuYy0xNDEtXFx0ICogY3Bfc3RhdGUgdG8gc29tZXRoaW5nIG90aGVyIHRoYW4gUkRTX0NPTk5fVVAsIGFuZCB0aGVuXFxubmV0L3Jkcy90Y3AuYzoxNDI6XFx0ICogd2FpdGluZyBmb3IgYW55IGV4aXN0aW5nIHRocmVhZHMgaW4gcmRzX3NlbmRfeG1pdCB0b1xcbm5ldC9yZHMvdGNwLmMtMTQzLVxcdCAqIGNvbXBsZXRlIHJlbGVhc2VfaW5feG1pdCgpLiAoU3Vic2VxdWVudCB0aHJlYWRzIGVudGVyaW5nXFxubmV0L3Jkcy90Y3AuYzoxNDQ6XFx0ICogcmRzX3NlbmRfeG1pdCgpIHdpbGwgYmFpbCBvbiAhcmRzX2Nvbm5fdXAoKS5cXG5uZXQvcmRzL3RjcC5jLTE0NS1cXHQgKlxcbi0tXFxubmV0L3Jkcy90Y3AuYy0xNTctXFx0LyogQWNxdWlyZSB0aGUgc2VuZC1wYXRoIGxvY2sgcmF0aGVyIHRoYW4gd2FpdGluZyBmb3IgaXQgdG8gYmVcXG5uZXQvcmRzL3RjcC5jOjE1ODpcXHQgKiByZWxlYXNlZDogYSBtZXJlIHdhaXQgaXMgcmFjeSwgc2luY2UgcmRzX3NlbmRfeG1pdCgpIG1heSB0YWtlXFxubmV0L3Jkcy90Y3AuYy0xNTktXFx0ICogdGhlIGxvY2sgYWdhaW4gcmlnaHQgYWZ0ZXIgd2Ugc2FtcGxlIGl0IGNsZWFyIGFuZCB0aGVuIHJ1blxcbi0tXFxubmV0L3Jkcy90aHJlYWRzLmM9MTkxPXZvaWQgcmRzX3NlbmRfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbm5ldC9yZHMvdGhyZWFkcy5jLTE5OS1cXHRcXHRjbGVhcl9iaXQoUkRTX0xMX1NFTkRfRlVMTCwgXFx1MDAyNmNwLVxcdTAwM2VjcF9mbGFncyk7XFxubmV0L3Jkcy90aHJlYWRzLmM6MjAwOlxcdFxcdHJldCA9IHJkc19zZW5kX3htaXQoY3ApO1xcbm5ldC9yZHMvdGhyZWFkcy5jLTIwMS1cXHRcXHRjb25kX3Jlc2NoZWQoKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDg6MTM6NTQuMjkyNTQ0NjE5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMjEyNTY2NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFJEUyBLZXJuZWwgQ29kZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9uIGNhbGwgcmVsYXRpb25zaGlwcyB3aXRoaW4gdGhlIFJEUyBrZXJuZWwgY29kZS4gSXQncyBjbGVhciB0aGlzIGlzIGFsbCBhYm91dCBtYW5hZ2luZyByZWxpYWJsZSBkYXRhZ3JhbSBzb2NrZXRzLiBJIHNlZSBgcmRzX3NlbmRfeG1pdGAgYmVpbmcgY2FsbGVkIGZyb20gYHJkc19zZW5kbXNnYCBhbmQgYHJkc19zZW5kX3dvcmtlcmAg4oCTIHRoYXQncyB0aGUgdHJhbnNtaXNzaW9uIHBhdGggZm9yIHNlbmRpbmcgZGF0YS4gYHJkc19jb25uX3NodXRkb3duYCBpcyBjYWxsZWQgZnJvbSBgcmRzX2Nvbm5fZGVzdHJveWAgYW5kIGByZHNfY29ubl9kcm9wYCwgd2hpY2ggaXMgaG93IGNvbm5lY3Rpb25zIGFyZSBoYW5kbGVkIHdoZW4gdGhleSBuZWVkIHRvIHNodXQgZG93bi4gYHJkc190Y3BfcmVzZXRfY2FsbGJhY2tzYCBpcyBjYWxsZWQgZnJvbSBgcmRzX3RjcF9hY2NlcHRfb25lYCBhbmQgYHJkc190Y3BfY29ubl9wYXRoX2Nvbm5lY3RgLCBzdWdnZXN0aW5nIGNvbm5lY3Rpb24gcmVzZXQgb24gdGhlIFRDUCBwYXRoLiBBbmQgZmluYWxseSwgYHJkc19pbmNfaW5pdGAgaXMgaW52b2tlZCBmcm9tIGByZHNfdGNwX2RhdGFfcmVjdmAgYW5kIGByZHNfaWJfcmVjdl9pbml0X3JpbmdgLCBzaG93aW5nIGluaXRpYWxpemF0aW9uIGZvciByZWNlaXZpbmcgZGF0YS5cblxuVGhpcyByZWFsbHkgbG9va3MgbGlrZSB0aGUgY29kZSBpcyBoYW5kbGluZyBzb21lIGNydWNpYWwgcmFjZSBjb25kaXRpb25zLCBwcm9iYWJseSBhcm91bmQgY29ubmVjdGlvbiB0ZWFyZG93biBhbmQgcmVzZXR0aW5nLCBhbmQgaXQgbG9va3MgbGlrZSBpdCBkb2VzIHNvbWUgaW5pdGlhbGl6YXRpb24uIFNwZWNpZmljYWxseSBgcmRzX3NlbmRfeG1pdGAgaW5pdGlhbGl6ZXMgYSBsaXN0LiBUaGlzIHNlZW1zIHRvIGJlIGF0IHRoZSBoZWFydCBvZiB0aGUgUkRTIHNvY2tldCBpbXBsZW1lbnRhdGlvbiwgcmlnaHQ/IEkgY2FuIHRlbGwgdGhhdCB0aGUgY29kZSBpcyByZWFjaGFibGUgdmlhIFJEUyBzb2NrZXRzLiBUaGUgY29uZmlndXJhdGlvbnMgbmVlZGVkIGFyZSBgUkRTYCBhbmQgYFJEU19UQ1BgLiBcblxuTm93LCBiZWZvcmUgSSBkaWcgZGVlcGVyLCBJIHNob3VsZCBjaGVjayB3aGV0aGVyIGVpdGhlciBgUkRTYCBvciBgUkRTX1RDUGAgaGF2ZSBhbnkgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBmZWF0dXJlcyBvciBtb2R1bGVzLiBHb3R0YSBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBmdWxsIGNvbnRleHQgYmVmb3JlIEkgc3RhcnQgdHJ5aW5nIHRvIG1vZGlmeSBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODQwOSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwODoxMzo1OS41MTM4MDMxNzRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzODAzMjU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Jkcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9yZHMvS2NvbmZpZz0zPWNvbmZpZyBSRFNcXG5uZXQvcmRzL0tjb25maWctNC1cXHR0cmlzdGF0ZSBcXFwiVGhlIFJlbGlhYmxlIERhdGFncmFtIFNvY2tldHMgUHJvdG9jb2xcXFwiXFxubmV0L3Jkcy9LY29uZmlnOjU6XFx0ZGVwZW5kcyBvbiBJTkVUXFxubmV0L3Jkcy9LY29uZmlnLTYtXFx0aGVscFxcbi0tXFxubmV0L3Jkcy9LY29uZmlnPTEwPWNvbmZpZyBSRFNfUkRNQVxcbm5ldC9yZHMvS2NvbmZpZy0xMS1cXHR0cmlzdGF0ZSBcXFwiUkRTIG92ZXIgSW5maW5pYmFuZFxcXCJcXG5uZXQvcmRzL0tjb25maWc6MTI6XFx0ZGVwZW5kcyBvbiBSRFMgXFx1MDAyNlxcdTAwMjYgSU5GSU5JQkFORCBcXHUwMDI2XFx1MDAyNiBJTkZJTklCQU5EX0FERFJfVFJBTlNcXG5uZXQvcmRzL0tjb25maWctMTMtXFx0aGVscFxcbi0tXFxubmV0L3Jkcy9LY29uZmlnPTE3PWNvbmZpZyBSRFNfVENQXFxubmV0L3Jkcy9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJSRFMgb3ZlciBUQ1BcXFwiXFxubmV0L3Jkcy9LY29uZmlnOjE5OlxcdGRlcGVuZHMgb24gUkRTXFxubmV0L3Jkcy9LY29uZmlnOjIwOlxcdGRlcGVuZHMgb24gSVBWNiB8fCAhSVBWNlxcbm5ldC9yZHMvS2NvbmZpZy0yMS1cXHRoZWxwXFxuLS1cXG5uZXQvcmRzL0tjb25maWc9MjU9Y29uZmlnIFJEU19ERUJVR1xcbm5ldC9yZHMvS2NvbmZpZy0yNi1cXHRib29sIFxcXCJSRFMgZGVidWdnaW5nIG1lc3NhZ2VzXFxcIlxcbm5ldC9yZHMvS2NvbmZpZzoyNzpcXHRkZXBlbmRzIG9uIFJEU1xcbm5ldC9yZHMvS2NvbmZpZy0yOC1cXHRkZWZhdWx0IG5cXG4tLVxcbm5ldC9yZHMvS2NvbmZpZz0zMD1jb25maWcgR0NPVl9QUk9GSUxFX1JEU1xcbm5ldC9yZHMvS2NvbmZpZy0zMS1cXHRib29sIFxcXCJFbmFibGUgR0NPViBwcm9maWxpbmcgb24gUkRTXFxcIlxcbm5ldC9yZHMvS2NvbmZpZzozMjpcXHRkZXBlbmRzIG9uIEdDT1ZfS0VSTkVMXFxubmV0L3Jkcy9LY29uZmlnLTMzLVxcdGhlbHBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDg6MTM6NTkuNTU3NjA4OTYxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxODI1MDc2MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFJEUyBhbmQgaXRzIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYFJEU2Agc2V0dXAgYW5kIGl0J3MgaW1tZWRpYXRlbHkgY2xlYXIgdGhhdCBpdCdzIGZ1bmRhbWVudGFsbHkgcmVsaWFudCBvbiBgSU5FVGAuICBGdXJ0aGVyLCBgUkRTX1RDUGAgaGluZ2VzIG9uIGBSRFNgIGFuZCBlaXRoZXIgYElQVjZgIG9yIHRoZSBhYnNlbmNlIG9mIGBJUFY2YC4gR2l2ZW4gdGhpcyBzdHJ1Y3R1cmFsIGRlcGVuZGVuY3ksIGVuYWJsaW5nIGJvdGggYFJEU2AgYW5kIGBSRFNfVENQYCBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIG5leHQgc3RlcC5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUga2V5IGZ1bmN0aW9ucyBpbnZvbHZlZCwgc28gSSd2ZSBmbGFnZ2VkIGEgZmV3IGZvciBjbG9zZXIgaW5zcGVjdGlvbjogYHJkc19jb25uX3NodXRkb3duYCwgYHJkc190Y3BfcmVzZXRfY2FsbGJhY2tzYCwgYHJkc19zZW5kX3htaXRgLCBhbmQgYHJkc19pbmNfaW5pdGAuIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgdGhlc2UgYXJlIHN0YXRpYywgaW5saW5lLCBvciBleHBvcnRlZCBzeW1ib2xzLCBhcyB0aGlzIGltcGFjdHMgaG93IHRoZXkgYXJlIHVzZWQgYW5kIGNhbGxlZC5cblxuQWxyaWdodCwgYSBxdWljayBjaGVjayBjb25maXJtcyB0aGF0IGByZHNfY29ubl9zaHV0ZG93bmAsIGByZHNfdGNwX3Jlc2V0X2NhbGxiYWNrc2AsIGByZHNfc2VuZF94bWl0YCwgYW5kIGByZHNfaW5jX2luaXRgIGFyZSBhbGwgZXhwb3J0ZWQvZ2xvYmFsIHN5bWJvbHMuIFRoaXMgdGVsbHMgbWUgdGhleSdyZSBpbnRlbmRlZCBmb3IgdXNlIG91dHNpZGUgdGhlaXIgZGVmaW5pbmcgbW9kdWxlcy4gV2FpdCwgYHJkc19pbmNfaW5pdGAgaXMgc3BlY2lmaWNhbGx5IGxvY2F0ZWQgaW4gYG5ldC9yZHMvcmVjdi5jYC4gVGhpcyBpcyBpbXBvcnRhbnQsIGFzIGl0IGNsYXJpZmllcyB3aGVyZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgaW5jb21pbmcgdHJhZmZpYyBpcyBoYW5kbGVkLCBhbmQgaW5kaWNhdGVzIHdoZXJlIHRoYXQgZnVuY3Rpb24gc2hvdWxkIHJlc2lkZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTMzNSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwODoxNDowNC43NDAxMTg2NTlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzOTc4MTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZvaWQgcmRzX2luY19pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9yZHMvcmVjdi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9yZHMvcmVjdi5jLTQzLVxcbm5ldC9yZHMvcmVjdi5jOjQ0OnZvaWQgcmRzX2luY19pbml0KHN0cnVjdCByZHNfaW5jb21pbmcgKmluYywgc3RydWN0IHJkc19jb25uZWN0aW9uICpjb25uLFxcbm5ldC9yZHMvcmVjdi5jLTQ1LVxcdFxcdCBzdHJ1Y3QgaW42X2FkZHIgKnNhZGRyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwODoxNDowNC43ODQxMDA5NzZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE0Mzc2NTc4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OlxuXG4qKkdsb2JhbCBTY29wZSBDaGVjayoqXG5cblJpZ2h0LCB0aGlzIGRlZmluaXRlbHkgc2VlbXMgbGlrZSBpdCdzIGEgZ2xvYmFsIGlzc3VlIGFmZmVjdGluZyBldmVyeXRoaW5nLiBCZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gZGVidWdnaW5nLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgY2hhc2luZyBhIGxvY2FsIHByb2JsZW0uIExldCdzIHN0YXJ0IHdpdGggYSBjcnVjaWFsIGNoZWNrLiBNeSBpbnN0aW5jdCB0ZWxscyBtZSB0aGlzIGlzIGdsb2JhbCwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoZSBzY29wZSBvZiB0aGlzIGByZHNfY29ubl9zaHV0ZG93bmAgZnVuY3Rpb24sIG9yIHdoYXRldmVyIGZ1bmN0aW9uIGlzIGNhdXNpbmcgdGhlIGlzc3VlLiBJIG5lZWQgdG8ga25vdyBpZiBpdCdzIGRlY2xhcmVkIGdsb2JhbGx5IGZpcnN0LiBUaGF0J3MgdGhlIGJhc2VsaW5lLCB0aGUgbW9zdCBmdW5kYW1lbnRhbCB0aGluZyB0byBjaGVjayByaWdodCBub3cuIEknbGwgbmVlZCB0byBjb25maXJtIGlmIGl0IGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5OTkxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDg6MTQ6MDcuOTI3ODY5NjU5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzAxMTI2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2b2lkIHJkc19jb25uX3NodXRkb3duXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9yZHMvY29ubmVjdGlvbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9yZHMvY29ubmVjdGlvbi5jPTM3OT1FWFBPUlRfU1lNQk9MX0dQTChyZHNfY29ubl9jcmVhdGVfb3V0Z29pbmcpO1xcbm5ldC9yZHMvY29ubmVjdGlvbi5jLTM4MC1cXG5uZXQvcmRzL2Nvbm5lY3Rpb24uYzozODE6dm9pZCByZHNfY29ubl9zaHV0ZG93bihzdHJ1Y3QgcmRzX2Nvbm5fcGF0aCAqY3ApXFxubmV0L3Jkcy9jb25uZWN0aW9uLmMtMzgyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDg6MTQ6MDcuOTcwODg3NTE1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MTY0MjM5MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBmcmFtZWQgYXMgbXkgaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkludGVybmFsIFJldmlldyBvZiBQb3RlbnRpYWwgUmVzZXQgQ2FsbGJhY2tzKipcblxuWWVzLCB0aGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBmb2xsb3dpbmcgdGhlIHJpZ2h0IHRyYWNrIGhlcmUuIE5vdywgbGV0J3MgdGFrZSBhIGxvb2sgYXQgYHJkc190Y3BfcmVzZXRfY2FsbGJhY2tzYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHNwZWNpZmljYWxseSBlbnRhaWxzLiBJdCdzIHRpbWUgdG8gZnVsbHkgYW5hbHlzZSB0aGUgaW5mb3JtYXRpb24gcHJlc2VudGVkLCBlbnN1cmluZyBJIGNvbXByZWhlbmQgdGhlIHNwZWNpZmljIGFjdGlvbnMgYW5kIGRlcGVuZGVuY2llcyB0aGF0IHRoaXMgZW5jb21wYXNzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMjg1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMDg6MTQ6MTAuNjg3MzEzODNaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MzQ2MTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZvaWQgcmRzX3RjcF9yZXNldF9jYWxsYmFja3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Jkcy90Y3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvcmRzL3RjcC5jPTk2PXZvaWQgcmRzX3RjcF9yZXN0b3JlX2NhbGxiYWNrcyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxcbi0tXFxubmV0L3Jkcy90Y3AuYy0xMjUtICovXFxubmV0L3Jkcy90Y3AuYzoxMjY6dm9pZCByZHNfdGNwX3Jlc2V0X2NhbGxiYWNrcyhzdHJ1Y3Qgc29ja2V0ICpzb2NrLFxcbm5ldC9yZHMvdGNwLmMtMTI3LVxcdFxcdFxcdCAgICAgc3RydWN0IHJkc19jb25uX3BhdGggKmNwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwODoxNDoxMC43MzQ2NjQ4NzZaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4NjkzMjIzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBc3Nlc3NtZW50IG9mIFRhc2sgYW5kIEZvY3VzKipcblxuWWVzLiAqVGhhdCdzIHRoZSBpbml0aWFsIGFja25vd2xlZGdlbWVudCBvZiB0aGUgdGFzayBvciBxdWVzdGlvbi4gSSdtIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC4gVGhlIHNpbXBsaWNpdHkgc3VnZ2VzdHMgYSBjb25maXJtYXRpb24sIGEgc3RhcnRpbmcgcG9pbnQuKlxuXG5MZXQncyBjaGVjayBgcmRzX3NlbmRfeG1pdGAuICpSaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIFwiTGV0J3MgY2hlY2sgYHJkc19zZW5kX3htaXRgXCIgc2lnbmlmaWVzIGEgZGl2ZSBpbnRvIGEgc3BlY2lmaWMgZnVuY3Rpb24gb3IgbW9kdWxlIHdpdGhpbiB0aGUgUkRTIChSZWxpYWJsZSBEYXRhZ3JhbSBTb2NrZXRzKSBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yLiogSSdtIGltbWVkaWF0ZWx5IGhvbWluZyBpbiBvbiB0aGUgc2VuZCB0cmFuc21pdCBmdW5jdGlvbiwgYW5kIGhvdyBpdCBoYW5kbGVzIHBhY2tldHMuIFRoaXMgc3VnZ2VzdHMgdGhlIGNvcmUgYXJlYSBvZiBjb25jZXJuIGlzIGxpa2VseSByZWxhdGVkIHRvIGRhdGEgdHJhbnNtaXNzaW9uLCBwb3NzaWJseSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcywgZXJyb3IgaGFuZGxpbmcsIG9yIHNwZWNpZmljIHByb3RvY29sIGludHJpY2FjaWVzIHJlbGF0ZWQgdG8gcmVsaWFibGUgZGF0YSB0cmFuc2Zlci4gVGhpcyBjb3VsZCBiZSBhIGRlYnVnZ2luZyBzdGVwIG9yIGFuIGludmVzdGlnYXRvcnkgYWN0aW9uLiBJJ20gcHJvYmFibHkgbG9va2luZyBhdCB0aGUgc291cmNlIGNvZGUgbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDU0NSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDA4OjE0OjE0LjEyMTU5OTQxMVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY5Njg5MTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW50IHJkc19zZW5kX3htaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3Jkcy9zZW5kLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3Jkcy9zZW5kLmM9MTI4PXN0YXRpYyBib29sIHJkc19tcHJkc19jcDBfY2F0Y2h1cChzdHJ1Y3QgcmRzX2Nvbm5lY3Rpb24gKmNvbm4pXFxuLS1cXG5uZXQvcmRzL3NlbmQuYy0xODYtICovXFxubmV0L3Jkcy9zZW5kLmM6MTg3OmludCByZHNfc2VuZF94bWl0KHN0cnVjdCByZHNfY29ubl9wYXRoICpjcClcXG5uZXQvcmRzL3NlbmQuYy0xODgte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwODoxNDoxNC4xNjg1NzI2NjdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk2MzU2NDQ4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHRoaXMgcGF0Y2ggbG9va3Mgc29saWQuIEkgY2FuIGNvbmZpcm0gaXQgYWRkcmVzc2VzIHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgdGhlIFJEUyBjb25uZWN0aW9uIHRlYXJkb3duIGFuZCByZXNldCwgYW5kIGFsc28gY29ycmVjdGx5IGluaXRpYWxpemVzIGEgbGlzdCB3aXRoaW4gYHJkc19zZW5kX3htaXRgLiBGdW5jdGlvbmFsbHksIGl0IHNlZW1zIHNvdW5kIGFuZCBhYnNvbHV0ZWx5IHdhcnJhbnRzIHRob3JvdWdoIGZ1enppbmcuXG5cbkkndmUgY2hlY2tlZCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnM6IGBSRFNgIGFuZCBgUkRTX1RDUGAuIEp1c3QgdG8gYmUgc3VyZSwgSSdsbCBxdWlja2x5IHZlcmlmeSBpZiB0aG9zZSBhcmUgc3VmZmljaWVudC4gWWVwLCBgUkRTYCBpcyB0aGUgZnVuZGFtZW50YWwgY29tcG9uZW50LCBhbmQgYFJEU19UQ1BgIHJlcHJlc2VudHMgdGhlIFRDUCB0cmFuc3BvcnQsIHNwZWNpZmljYWxseSB1c2VkIGluIGBuZXQvcmRzL3RjcC5jYC4gVGhlIHBhdGNoICpkb2VzKiBtb2RpZnkgYG5ldC9yZHMvdGNwLmNgLCB3aGljaCBpcyBvbmx5IGNvbXBpbGVkIHdpdGggYFJEU19UQ1BgIGVuYWJsZWQsIHNvIHRoYXQncyBnb29kLiBBbmQgdGhlIGNvcmUgUkRTIG1vZHVsZXMsIGBuZXQvcmRzL2Nvbm5lY3Rpb24uY2AsIGBuZXQvcmRzL3JlY3YuY2AsIGFuZCBgbmV0L3Jkcy9zZW5kLmNgLCBhcmUgcHJvcGVybHkgY292ZXJlZCBieSBgUkRTYCBiZWluZyBlbmFibGVkLlxuXG5Ob3cgSSBjYW4gcHV0IHRvZ2V0aGVyIGEgY29tcGxldGUgcmVzcG9uc2UgYmFzZWQgb24gdGhpcyByZXZpZXcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwOTEzLCJPdXRwdXRUb2tlbnMiOjE0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQwODoxNDoyMC4xMzIxMzk5MjZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjgyNzUxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUkRTXCIsXG4gICAgXCJSRFNfVENQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicmRzX2Nvbm5fc2h1dGRvd25cIixcbiAgICBcInJkc190Y3BfcmVzZXRfY2FsbGJhY2tzXCIsXG4gICAgXCJyZHNfc2VuZF94bWl0XCIsXG4gICAgXCJyZHNfaW5jX2luaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFJEUyBjb25uZWN0aW9uIHRlYXJkb3duLCByZXNldCwgYW5kIHRyYW5zbWl0IGxvZ2ljIHRvIGZpeCByYWNlIGNvbmRpdGlvbnMgYnkgdXNpbmcgYml0IGxvY2tzIGluc3RlYWQgb2YgcGxhaW4gYml0IHRlc3RzLiBJdCBhbHNvIGluaXRpYWxpemVzIGEgbGlzdCBpbiBgcmRzX3NlbmRfeG1pdGAgYW5kIGEgcG9pbnRlciBpbiBgcmRzX2luY19pbml0YC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgUkRTIHN1YnN5c3RlbSB0aGF0IGFyZSByZWFjaGFibGUgdmlhIFJEUyBzb2NrZXRzIG92ZXIgVENQLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJEU1wiLFxuICAgIFwiUkRTX1RDUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJkc19jb25uX3NodXRkb3duXCIsXG4gICAgXCJyZHNfdGNwX3Jlc2V0X2NhbGxiYWNrc1wiLFxuICAgIFwicmRzX3NlbmRfeG1pdFwiLFxuICAgIFwicmRzX2luY19pbml0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBSRFMgY29ubmVjdGlvbiB0ZWFyZG93biwgcmVzZXQsIGFuZCB0cmFuc21pdCBsb2dpYyB0byBmaXggcmFjZSBjb25kaXRpb25zIGJ5IHVzaW5nIGJpdCBsb2NrcyBpbnN0ZWFkIG9mIHBsYWluIGJpdCB0ZXN0cy4gSXQgYWxzbyBpbml0aWFsaXplcyBhIGxpc3QgaW4gYHJkc19zZW5kX3htaXRgIGFuZCBhIHBvaW50ZXIgaW4gYHJkc19pbmNfaW5pdGAuIFRoZXNlIGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhlIFJEUyBzdWJzeXN0ZW0gdGhhdCBhcmUgcmVhY2hhYmxlIHZpYSBSRFMgc29ja2V0cyBvdmVyIFRDUC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowjhw6r[1] Phase: Succeeded StartedAt: 2026-08-06 08:14:32 +0000 UTC FinishedAt: 2026-08-06 08:14:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjhw6r[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-06 08:14:32 +0000 UTC FinishedAt: 2026-08-06 08:14:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjhw6r[2] Phase: Succeeded StartedAt: 2026-08-06 08:14:32 +0000 UTC FinishedAt: 2026-08-06 12:02:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:14:32 +0000 UTC FinishedAt: 2026-08-06 12:02:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:14:32 +0000 UTC FinishedAt: 2026-08-06 08:14:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:14:32 +0000 UTC FinishedAt: 2026-08-06 08:14:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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-workflowjhw6r/series-workflowjhw6r-convert-artifact-2611578866/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:14:43 +0000 UTC FinishedAt: 2026-08-06 08:37:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:14:43 +0000 UTC FinishedAt: 2026-08-06 08:37:01 +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:*30a9fcc8-46eb-4e0c-8957-cf7b140a16ce,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-workflowjhw6r/series-workflowjhw6r-convert-artifact-2611578866/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": "a5330fbf-efab-4930-a8c5-b1f41783ecd6", "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-workflowjhw6r/series-workflowjhw6r-build-action-714805104/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:14:44 +0000 UTC FinishedAt: 2026-08-06 08:36:49 +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:*30a9fcc8-46eb-4e0c-8957-cf7b140a16ce,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-workflowjhw6r/series-workflowjhw6r-convert-artifact-2611578866/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": "a5330fbf-efab-4930-a8c5-b1f41783ecd6", "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-workflowjhw6r/series-workflowjhw6r-build-action-714805104/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:37:01 +0000 UTC FinishedAt: 2026-08-06 08:37:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:37:01 +0000 UTC FinishedAt: 2026-08-06 08:37:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:37:01 +0000 UTC FinishedAt: 2026-08-06 08:37:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:37:01 +0000 UTC FinishedAt: 2026-08-06 08:37:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-workflowjhw6r/series-workflowjhw6r-convert-artifact-1830213133/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:37:13 +0000 UTC FinishedAt: 2026-08-06 08:39:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:37:13 +0000 UTC FinishedAt: 2026-08-06 08:38:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a5330fbf-efab-4930-a8c5-b1f41783ecd6,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-workflowjhw6r/series-workflowjhw6r-build-action-714805104/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-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:39:41 +0000 UTC FinishedAt: 2026-08-06 08:39:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:39:42 +0000 UTC FinishedAt: 2026-08-06 08:39:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:39:42 +0000 UTC FinishedAt: 2026-08-06 08:57:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:39:43 +0000 UTC FinishedAt: 2026-08-06 08:57:38 +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:*30a9fcc8-46eb-4e0c-8957-cf7b140a16ce,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-workflowjhw6r/series-workflowjhw6r-convert-artifact-1830213133/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": "fb7cb9a6-eec8-4cf1-b075-f3b8a30041ea", "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-workflowjhw6r/series-workflowjhw6r-build-action-4282868713/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:39:44 +0000 UTC FinishedAt: 2026-08-06 08:57:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*30a9fcc8-46eb-4e0c-8957-cf7b140a16ce,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-workflowjhw6r/series-workflowjhw6r-convert-artifact-1830213133/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": "fb7cb9a6-eec8-4cf1-b075-f3b8a30041ea", "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-workflowjhw6r/series-workflowjhw6r-build-action-4282868713/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:57:38 +0000 UTC FinishedAt: 2026-08-06 08:57:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:57:38 +0000 UTC FinishedAt: 2026-08-06 08:57:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:57:38 +0000 UTC FinishedAt: 2026-08-06 08:59:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:57:38 +0000 UTC FinishedAt: 2026-08-06 08:59:35 +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:*fb7cb9a6-eec8-4cf1-b075-f3b8a30041ea,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-workflowjhw6r/series-workflowjhw6r-build-action-4282868713/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-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:59:45 +0000 UTC FinishedAt: 2026-08-06 12:02:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:59:45 +0000 UTC FinishedAt: 2026-08-06 12:02:47 +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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"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:*a5330fbf-efab-4930-a8c5-b1f41783ecd6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fb7cb9a6-eec8-4cf1-b075-f3b8a30041ea,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-workflowjhw6r/series-workflowjhw6r-build-action-714805104/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-workflowjhw6r/series-workflowjhw6r-build-action-4282868713/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:59:45 +0000 UTC FinishedAt: 2026-08-06 08:59:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:59:45 +0000 UTC FinishedAt: 2026-08-06 08:59:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"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-workflowjhw6r/series-workflowjhw6r-convert-artifact-1184737778/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:59:45 +0000 UTC FinishedAt: 2026-08-06 08:59:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:59:45 +0000 UTC FinishedAt: 2026-08-06 08:59:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:59:45 +0000 UTC FinishedAt: 2026-08-06 08:59:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:59:55 +0000 UTC FinishedAt: 2026-08-06 12:02:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjhw6r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"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":["rds_conn_shutdown","rds_tcp_reset_callbacks","rds_send_xmit","rds_inc_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"cb59bfd419d0c560b9f7273522f9a4799062aad5","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDS","RDS_TCP"],"series_id":"9f1cabcf-e56b-494f-9ef9-b399ed3a4ae4","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-06 08:59:55 +0000 UTC FinishedAt: 2026-08-06 12:02:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a5330fbf-efab-4930-a8c5-b1f41783ecd6,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fb7cb9a6-eec8-4cf1-b075-f3b8a30041ea,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-workflowjhw6r/series-workflowjhw6r-build-action-714805104/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-workflowjhw6r/series-workflowjhw6r-build-action-4282868713/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-workflowjhw6r/series-workflowjhw6r-convert-artifact-1184737778/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,}