Name: series-workflowmb4zv Phase: Succeeded StartedAt: 2026-08-25 10:12:28 +0000 UTC FinishedAt: 2026-08-25 14:44:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmb4zv[0] Phase: Succeeded StartedAt: 2026-08-25 10:12:28 +0000 UTC FinishedAt: 2026-08-25 10:58:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmb4zv[0].run-triage Phase: Succeeded StartedAt: 2026-08-25 10:12:28 +0000 UTC FinishedAt: 2026-08-25 10:58:00 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "b70b7b71561f2be1183b6046964d950c2b203bfc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "b70b7b71561f2be1183b6046964d950c2b203bfc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET" ], "series_id": "fc2c3ccd-2324-4128-999a-ee7998ab86b6" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__icmp_send", "icmp_ndo_send" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI1IDEwOjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2ljbXBfc2VuZCYjMzQ7LAogICAgJiMzNDtpY21wX25kb19zZW5kJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcm91dGluZyBsb2dpYyBpbiBgaWNtcF9yb3V0ZV9sb29rdXBgIHRvIHByZXZlbnQgdGhlIHVzZSBvZiBgUlROX1VOUkVBQ0hBQkxFYCByb3V0ZXMgZm9yIElDTVAgb3V0cHV0LCB3aGljaCBjb3VsZCBsZWFkIHRvIGNhbGxpbmcgYGlwX3J0X2J1Z2AuIFRoaXMgaXMgYSBsb2dpYyBidWcgZml4IHRoYXQgcHJldmVudHMgaW5jb3JyZWN0IHJvdXRpbmcgYmVoYXZpb3Igb3IgcG90ZW50aWFsIGNyYXNoZXMgKGUuZy4sIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBvciBCVUcoKSBpbiBgaXBfcnRfYnVnYCkuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSUNNUCByb3V0aW5nIGxvZ2ljIHRvIHByb3Blcmx5IGhhbmRsZSBSVE5fVU5SRUFDSEFCTEUgcm91dGVzIHJldHVybmVkIGJ5IGlwX3JvdXRlX2lucHV0KCksIHByZXZlbnRpbmcgdGhlIHVzZSBvZiBpbnZhbGlkIHJvdXRlcyB0aGF0IGNvdWxkIHRyaWdnZXIgaXBfcnRfYnVnLiBUaGlzIGlzIGEgY29yZSBJUHY0IG5ldHdvcmtpbmcgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEwOjU2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMmIzMGVlNjhkMGE2MjE2NjE0MDJmMDdmZjA2MTdhNDkxYzI4MjcwOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDI1IDEwOjU2OjQ3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2ljbXAuYyBiL25ldC9pcHY0L2ljbXAuY1xuaW5kZXggMGNhZWRmYzdjYTkyZi4uNzM1MGYwMzgwYmUxNyAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2ljbXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvaWNtcC5jXG5AQCAtNTgxLDE2ICYjNDM7NTgxLDE1IEBAIHN0YXRpYyBzdHJ1Y3QgcnRhYmxlICppY21wX3JvdXRlX2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmbG93aTQgKmZsNCxcbiBcdFx0c2tiX2RzdHJlZl9yZXN0b3JlKHNrYl9pbiwgb3JlZmRzdCk7XG4gXG4gXHRcdC8qXG4tXHRcdCAqIEF0IHRoaXMgcG9pbnQsIGZsNF9kZWMuZGFkZHIgc2hvdWxkIE5PVCBiZSBsb2NhbCAod2Vcbi1cdFx0ICogY2hlY2tlZCBmbDRfZGVjLnNhZGRyIGFib3ZlKS4gSG93ZXZlciwgYSByYWNlIGNvbmRpdGlvblxuLVx0XHQgKiBtYXkgb2NjdXIgaWYgdGhlIGFkZHJlc3MgaXMgYWRkZWQgdG8gdGhlIGludGVyZmFjZVxuLVx0XHQgKiBjb25jdXJyZW50bHkuIEluIHRoYXQgY2FzZSwgaXBfcm91dGVfaW5wdXQoKSByZXR1cm5zIGFcbi1cdFx0ICogTE9DQUwgcm91dGUgd2l0aCBkc3Qub3V0cHV0PWlwX3J0X2J1Zywgd2hpY2ggbXVzdCBub3Rcbi1cdFx0ICogYmUgdXNlZCBmb3Igb3V0cHV0LlxuJiM0MztcdFx0ICogQXQgdGhpcyBwb2ludCwgZmw0X2RlYy5kYWRkciBzaG91bGQgTk9UIGJlIGxvY2FsICh0aGVcbiYjNDM7XHRcdCAqIGFkZHJlc3MgY2FuIGJlIGFkZGVkIHRvIHRoZSBpbnRlcmZhY2UgY29uY3VycmVudGx5KSBvciB1bnJvdXRhYmxlLlxuJiM0MztcdFx0ICogSW4gdGhhdCBjYXNlLCBpcF9yb3V0ZV9pbnB1dCgpIHJldHVybnMgYSBMT0NBTCBvciBVTlJFQUNIQUJMRVxuJiM0MztcdFx0ICogcm91dGUgd2l0aCBkc3Qub3V0cHV0PWlwX3J0X2J1Zywgd2hpY2ggbXVzdCBub3QgYmUgdXNlZCBmb3Igb3V0cHV0LlxuIFx0XHQgKi9cbi1cdFx0aWYgKCFlcnIgXHUwMDI2XHUwMDI2IHJ0MiBcdTAwMjZcdTAwMjYgcnQyLVx1MDAzZXJ0X3R5cGUgPT0gUlROX0xPQ0FMKSB7XG4tXHRcdFx0bmV0X3dhcm5fcmF0ZWxpbWl0ZWQoXCYjMzQ7ZGV0ZWN0ZWQgbG9jYWwgcm91dGUgZm9yICVwSTQgZHVyaW5nIElDTVAgc2VuZGluZywgc3JjICVwSTRcXG5cJiMzNDssXG4tXHRcdFx0XHRcdCAgICAgXHUwMDI2Zmw0X2RlYy5kYWRkciwgXHUwMDI2Zmw0X2RlYy5zYWRkcik7XG4mIzQzO1x0XHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgcnQyIFx1MDAyNlx1MDAyNiAocnQyLVx1MDAzZXJ0X3R5cGUgPT0gUlROX0xPQ0FMIHx8IHJ0Mi1cdTAwM2VydF90eXBlID09IFJUTl9VTlJFQUNIQUJMRSkpIHtcbiYjNDM7XHRcdFx0aWYgKHJ0Mi1cdTAwM2VydF90eXBlID09IFJUTl9MT0NBTClcbiYjNDM7XHRcdFx0XHRuZXRfd2Fybl9yYXRlbGltaXRlZChcJiMzNDtkZXRlY3RlZCBsb2NhbCByb3V0ZSBmb3IgJXBJNCBkdXJpbmcgSUNNUCBzZW5kaW5nLCBzcmMgJXBJNFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICBcdTAwMjZmbDRfZGVjLmRhZGRyLCBcdTAwMjZmbDRfZGVjLnNhZGRyKTtcbiBcdFx0XHRkc3RfcmVsZWFzZShcdTAwMjZydDItXHUwMDNlZHN0KTtcbiBcdFx0XHRlcnIgPSAtRUlOVkFMO1xuIFx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTA6NTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2ljbXBfc2VuZCYjMzQ7LAogICAgJiMzNDtpY21wX25kb19zZW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJQ01QIHJvdXRpbmcgbG9naWMgdG8gcHJvcGVybHkgaGFuZGxlIFJUTl9VTlJFQUNIQUJMRSByb3V0ZXMgcmV0dXJuZWQgYnkgaXBfcm91dGVfaW5wdXQoKSwgcHJldmVudGluZyB0aGUgdXNlIG9mIGludmFsaWQgcm91dGVzIHRoYXQgY291bGQgdHJpZ2dlciBpcF9ydF9idWcuIFRoaXMgaXMgYSBjb3JlIElQdjQgbmV0d29ya2luZyBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyYjMwZWU2OGQwYTYyMTY2MTQwMmYwN2ZmMDYxN2E0OTFjMjgyNzA5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgMjUgMTA6NTY6NDcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pY21wLmMgYi9uZXQvaXB2NC9pY21wLmMKaW5kZXggMGNhZWRmYzdjYTkyZi4uNzM1MGYwMzgwYmUxNyAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaWNtcC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2ljbXAuYwpAQCAtNTgxLDE2ICYjNDM7NTgxLDE1IEBAIHN0YXRpYyBzdHJ1Y3QgcnRhYmxlICppY21wX3JvdXRlX2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmbG93aTQgKmZsNCwKIAkJc2tiX2RzdHJlZl9yZXN0b3JlKHNrYl9pbiwgb3JlZmRzdCk7CiAKIAkJLyoKLQkJICogQXQgdGhpcyBwb2ludCwgZmw0X2RlYy5kYWRkciBzaG91bGQgTk9UIGJlIGxvY2FsICh3ZQotCQkgKiBjaGVja2VkIGZsNF9kZWMuc2FkZHIgYWJvdmUpLiBIb3dldmVyLCBhIHJhY2UgY29uZGl0aW9uCi0JCSAqIG1heSBvY2N1ciBpZiB0aGUgYWRkcmVzcyBpcyBhZGRlZCB0byB0aGUgaW50ZXJmYWNlCi0JCSAqIGNvbmN1cnJlbnRseS4gSW4gdGhhdCBjYXNlLCBpcF9yb3V0ZV9pbnB1dCgpIHJldHVybnMgYQotCQkgKiBMT0NBTCByb3V0ZSB3aXRoIGRzdC5vdXRwdXQ9aXBfcnRfYnVnLCB3aGljaCBtdXN0IG5vdAotCQkgKiBiZSB1c2VkIGZvciBvdXRwdXQuCiYjNDM7CQkgKiBBdCB0aGlzIHBvaW50LCBmbDRfZGVjLmRhZGRyIHNob3VsZCBOT1QgYmUgbG9jYWwgKHRoZQomIzQzOwkJICogYWRkcmVzcyBjYW4gYmUgYWRkZWQgdG8gdGhlIGludGVyZmFjZSBjb25jdXJyZW50bHkpIG9yIHVucm91dGFibGUuCiYjNDM7CQkgKiBJbiB0aGF0IGNhc2UsIGlwX3JvdXRlX2lucHV0KCkgcmV0dXJucyBhIExPQ0FMIG9yIFVOUkVBQ0hBQkxFCiYjNDM7CQkgKiByb3V0ZSB3aXRoIGRzdC5vdXRwdXQ9aXBfcnRfYnVnLCB3aGljaCBtdXN0IG5vdCBiZSB1c2VkIGZvciBvdXRwdXQuCiAJCSAqLwotCQlpZiAoIWVyciAmYW1wOyZhbXA7IHJ0MiAmYW1wOyZhbXA7IHJ0Mi0mZ3Q7cnRfdHlwZSA9PSBSVE5fTE9DQUwpIHsKLQkJCW5ldF93YXJuX3JhdGVsaW1pdGVkKCYjMzQ7ZGV0ZWN0ZWQgbG9jYWwgcm91dGUgZm9yICVwSTQgZHVyaW5nIElDTVAgc2VuZGluZywgc3JjICVwSTRcbiYjMzQ7LAotCQkJCQkgICAgICZhbXA7Zmw0X2RlYy5kYWRkciwgJmFtcDtmbDRfZGVjLnNhZGRyKTsKJiM0MzsJCWlmICghZXJyICZhbXA7JmFtcDsgcnQyICZhbXA7JmFtcDsgKHJ0Mi0mZ3Q7cnRfdHlwZSA9PSBSVE5fTE9DQUwgfHwgcnQyLSZndDtydF90eXBlID09IFJUTl9VTlJFQUNIQUJMRSkpIHsKJiM0MzsJCQlpZiAocnQyLSZndDtydF90eXBlID09IFJUTl9MT0NBTCkKJiM0MzsJCQkJbmV0X3dhcm5fcmF0ZWxpbWl0ZWQoJiMzNDtkZXRlY3RlZCBsb2NhbCByb3V0ZSBmb3IgJXBJNCBkdXJpbmcgSUNNUCBzZW5kaW5nLCBzcmMgJXBJNFxuJiMzNDssCiYjNDM7CQkJCQkJICAgICAmYW1wO2ZsNF9kZWMuZGFkZHIsICZhbXA7Zmw0X2RlYy5zYWRkcik7CiAJCQlkc3RfcmVsZWFzZSgmYW1wO3J0Mi0mZ3Q7ZHN0KTsKIAkJCWVyciA9IC1FSU5WQUw7CiAJCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTA6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMzMQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDb3JlIElDTVAgUm91dGluZyBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIGBuZXQvaXB2NC9pY21wLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBpY21wX3JvdXRlX2xvb2t1cGAgZnVuY3Rpb24uIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gg4oCTIGEgbmV3IGNoZWNrIGlzIGJlaW5nIGFkZGVkLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBjb2RlIG5vdyBpbmNsdWRlcyBhIGNoZWNrIGZvciBgcnQyLSZndDtydF90eXBlID09IFJUTl9VTlJFQUNIQUJMRWAgaW4gYWRkaXRpb24gdG8gdGhlIGV4aXN0aW5nIGBydDItJmd0O3J0X3R5cGUgPT0gUlROX0xPQ0FMYCBjb25kaXRpb24uIElmIGl0IGhpdHMgdGhlIGBSVE5fVU5SRUFDSEFCTEVgIGNhc2UsIHRoZSBkZXN0aW5hdGlvbiBpcyByZWxlYXNlZCwgYW5kIGFuIGBlcnIgPSAtRUlOVkFMYCBpcyBzZXQuCgpSaWdodCwgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0IHRoZSBjaGFuZ2UgaXMgaW5kZWVkIGluIGBpY21wX3JvdXRlX2xvb2t1cGAgd2l0aGluIGBuZXQvaXB2NC9pY21wLmNgLiBZZXAsIHRoZXJlIGl0IGlzLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGlzIHdvcnRoIGZ1enppbmcuIEhtbSwgaXQmIzM5O3MgY29yZSBJUHY0IElDTVAgcm91dGluZyBsb2dpY+KApiBhYnNvbHV0ZWx5LCB0aGlzIGlzIGEgcHJpbWUgdGFyZ2V0ISBXZSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZnVuY3Rpb24gb3BlcmF0ZXMgaW4gb3JkZXIgdG8gaWRlbnRpZnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4KClRoZSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMsIG9idmlvdXNseSwgYGljbXBfcm91dGVfbG9va3VwYC4gQnV0LCB3YWl0LCBJIHNlZSBpdCYjMzk7cyBkZWNsYXJlZCBhcyBgc3RhdGljIHN0cnVjdCBydGFibGUgKmljbXBfcm91dGVfbG9va3VwKC4uLilgLiBUaGF0JiMzOTtzIGltcG9ydGFudC4gQmVpbmcgc3RhdGljIG1lYW5zIGl0JiMzOTtzIG5vdCBkaXJlY3RseSBleHBvc2VkIGFzIGEgc3ltYm9sIHdlIGNhbiBjYWxsIGZyb20gb3V0c2lkZSB0aGF0IGZpbGUuIE5vdywgdGhlIG5leHQgY3J1Y2lhbCBzdGVwIGlzIGZpZ3VyaW5nIG91dCB3aGF0IGNhbGxzIHRoaXMgYGljbXBfcm91dGVfbG9va3VwYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGggdG8gc2VlIHdoZXJlIHRoaXMgbmV3IGxvZ2ljIGdldHMgaW52b2tlZC4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIGRlc2lnbmluZyBlZmZlY3RpdmUgZnV6emluZyBjYW1wYWlnbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTA6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWNtcF9yb3V0ZV9sb29rdXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9pY21wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvaWNtcC5jPTQ4Mz1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKmljbXBfZ2V0X3JvdXRlX2xvb2t1cF9kZXYoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC9pY21wLmMtNDkzLVxubmV0L2lwdjQvaWNtcC5jOjQ5NDpzdGF0aWMgc3RydWN0IHJ0YWJsZSAqaWNtcF9yb3V0ZV9sb29rdXAoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmxvd2k0ICpmbDQsXG5uZXQvaXB2NC9pY21wLmMtNDk1LVx0XHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLFxuLS1cbm5ldC9pcHY0L2ljbXAuYz04MTM9dm9pZCBfX2ljbXBfc2VuZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgdHlwZSwgaW50IGNvZGUsIF9fYmUzMiBpbmZvLFxuLS1cbm5ldC9pcHY0L2ljbXAuYy05NjgtXG5uZXQvaXB2NC9pY21wLmM6OTY5Olx0cnQgPSBpY21wX3JvdXRlX2xvb2t1cChuZXQsIFx1MDAyNmZsNCwgc2tiX2luLCBpcGgsIHNhZGRyLFxubmV0L2lwdjQvaWNtcC5jLTk3MC1cdFx0XHQgICAgICAgaW5ldF9kc2ZpZWxkX3RvX2RzY3AodG9zKSwgbWFyaywgdHlwZSwgY29kZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMDo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTY3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBJQ01QIFNlbmQgUGF0aCoqCgpPa2F5LCBzbyBgX19pY21wX3NlbmRgIGlzIHRoZSBmdW5jdGlvbiB3ZSYjMzk7cmUgbG9va2luZyBhdC4gVGhlIGNvZGUgc3VnZ2VzdHMgdGhhdCBpdCBjYWxscyBgaWNtcF9yb3V0ZV9sb29rdXBgLCB3aGljaCBtYWtlcyBzZW5zZSBmb3IgaGFuZGxpbmcgcm91dGluZyBjb25zaWRlcmF0aW9ucyBiZWZvcmUgc2VuZGluZyBJQ01QIHBhY2tldHMuIEhtbSwgbm93IHRoYXQgSSB0aGluayBhYm91dCBpdCwgSSYjMzk7bSBwcmV0dHkgc3VyZSBgX19pY21wX3NlbmRgIGlzIG5vdCBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgYXZhaWxhYmxlIGZvciBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsIG9yIGV2ZW4gZXh0ZXJuYWwgbW9kdWxlcyB0byB1c2UuIEhvbGQgb24gYSBzZWNvbmQuLi4gaXMgdGhhdCByaWdodD8gTGV0JiMzOTtzIHZlcmlmeSB0aGF0IHF1aWNrbHkuIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYF9faWNtcF9zZW5kYCBpcyBhY3R1YWxseSBleHBvcnRlZC4gVGhhdCYjMzk7cyBhIGtleSBkZXRhaWwgdG8gdW5kZXJzdGFuZCBob3cgYnJvYWRseSB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBsZXZlcmFnZWQgYW5kIHdoYXQgaXRzIHBvdGVudGlhbCBzZWN1cml0eSBpbXBsaWNhdGlvbnMgbWlnaHQgYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTA6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19pY21wX3NlbmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9pY21wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvaWNtcC5jPTczOD1pY21wX2V4dF9hcHBlbmQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBzdHJ1Y3QgaWNtcGhkciAqaWNtcGgsXG4tLVxubmV0L2lwdjQvaWNtcC5jLTgxMi1cbm5ldC9pcHY0L2ljbXAuYzo4MTM6dm9pZCBfX2ljbXBfc2VuZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgdHlwZSwgaW50IGNvZGUsIF9fYmUzMiBpbmZvLFxubmV0L2lwdjQvaWNtcC5jLTgxNC1cdFx0IGNvbnN0IHN0cnVjdCBpbmV0X3NrYl9wYXJtICpwYXJtKVxuLS1cbm5ldC9pcHY0L2ljbXAuYy0xMDI2LX1cbm5ldC9pcHY0L2ljbXAuYzoxMDI3OkVYUE9SVF9TWU1CT0woX19pY21wX3NlbmQpO1xubmV0L2lwdjQvaWNtcC5jLTEwMjgtXG4tLVxubmV0L2lwdjQvaWNtcC5jPTEwMzE9dm9pZCBpY21wX25kb19zZW5kKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCB0eXBlLCBpbnQgY29kZSwgX19iZTMyIGluZm8pXG4tLVxubmV0L2lwdjQvaWNtcC5jLTEwNDItXHRpZiAoIWN0IHx8ICEoUkVBRF9PTkNFKGN0LVx1MDAzZXN0YXR1cykgXHUwMDI2IElQU19OQVRfTUFTSykpIHtcbm5ldC9pcHY0L2ljbXAuYzoxMDQzOlx0XHRfX2ljbXBfc2VuZChza2JfaW4sIHR5cGUsIGNvZGUsIGluZm8sIFx1MDAyNnBhcm0pO1xubmV0L2lwdjQvaWNtcC5jLTEwNDQtXHRcdHJldHVybjtcbi0tXG5uZXQvaXB2NC9pY21wLmMtMTA1OC1cdGlwX2hkcihza2JfaW4pLVx1MDAzZXNhZGRyID0gY3QtXHUwMDNldHVwbGVoYXNoW2Rpcl0udHVwbGUuc3JjLnUzLmlwO1xubmV0L2lwdjQvaWNtcC5jOjEwNTk6XHRfX2ljbXBfc2VuZChza2JfaW4sIHR5cGUsIGNvZGUsIGluZm8sIFx1MDAyNnBhcm0pO1xubmV0L2lwdjQvaWNtcC5jLTEwNjAtXHRpcF9oZHIoc2tiX2luKS1cdTAwM2VzYWRkciA9IG9yaWdfaXA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTA6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg1NgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkRpZ2dpbmcgaW50byB0aGUgSUNNUCBTZW5kIFBhdGgqKgoKQWxyaWdodCwgYF9faWNtcF9zZW5kYCBzZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgSUNNUCBwYWNrZXRzIGFyZSBiZWluZyBzZW50LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGF0LiBCdXQgYmVmb3JlIEkgZ28gdG9vIGRlZXAsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBzY29wZS4gSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBkaXJlY3QgY2FsbGVycyBvZiB0aGlzIGZ1bmN0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBgaWNtcF9zZW5kYCBpcyBqdXN0IGEgbWFjcm8sIG9yIGFuIGlubGluZSBmdW5jdGlvbiB0aGF0IGV4cGFuZHMgaW50byBzb21ldGhpbmcgZWxzZSwgb3IgaWYgaXQmIzM5O3MgYSAmIzM0O3JlYWwmIzM0OyBmdW5jdGlvbiB0aGF0JiMzOTtzIGJlaW5nIGNhbGxlZCBieSBvdGhlciBmdW5jdGlvbnMgaW4gdGhlIG5ldHdvcmtpbmcgc3RhY2suIEdyYXNwaW5nIHRoZSBjYWxsIGhpZXJhcmNoeSBhbmQgaW5saW5pbmcgYmVoYXZpb3IgaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSB3aG9sZSBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEwOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ljbXBfc2VuZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2ljbXAuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9pY21wLmg9Mzc9c3RydWN0IG5ldDtcbmluY2x1ZGUvbmV0L2ljbXAuaC0zOC1cbmluY2x1ZGUvbmV0L2ljbXAuaDozOTp2b2lkIF9faWNtcF9zZW5kKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCB0eXBlLCBpbnQgY29kZSwgX19iZTMyIGluZm8sXG5pbmNsdWRlL25ldC9pY21wLmgtNDAtXHRcdCBjb25zdCBzdHJ1Y3QgaW5ldF9za2JfcGFybSAqcGFybSk7XG5pbmNsdWRlL25ldC9pY21wLmg6NDE6c3RhdGljIGlubGluZSB2b2lkIGljbXBfc2VuZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgdHlwZSwgaW50IGNvZGUsIF9fYmUzMiBpbmZvKVxuaW5jbHVkZS9uZXQvaWNtcC5oLTQyLXtcbmluY2x1ZGUvbmV0L2ljbXAuaDo0MzpcdF9faWNtcF9zZW5kKHNrYl9pbiwgdHlwZSwgY29kZSwgaW5mbywgSVBDQihza2JfaW4pKTtcbmluY2x1ZGUvbmV0L2ljbXAuaC00NC19XG4tLVxuaW5jbHVkZS9uZXQvaWNtcC5oPTQ5PXN0YXRpYyBpbmxpbmUgdm9pZCBpY21wX25kb19zZW5kKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCB0eXBlLCBpbnQgY29kZSwgX19iZTMyIGluZm8pXG4tLVxuaW5jbHVkZS9uZXQvaWNtcC5oLTUzLVx0bWVtc2V0KFx1MDAyNnBhcm0sIDAsIHNpemVvZihwYXJtKSk7XG5pbmNsdWRlL25ldC9pY21wLmg6NTQ6XHRfX2ljbXBfc2VuZChza2JfaW4sIHR5cGUsIGNvZGUsIGluZm8sIFx1MDAyNnBhcm0pO1xuaW5jbHVkZS9uZXQvaWNtcC5oLTU1LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDAyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guCgoqKkFuYWx5emluZyBJQ01QIFNlbmQgRnVuY3Rpb25zKioKCkFscmlnaHQsIHNvIGBfX2ljbXBfc2VuZGAgaXMgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQsIHRoYXQgbXVjaCBJJiMzOTttIGZhaXJseSBjZXJ0YWluIG9mLiBOb3csIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuIFdoYXQmIzM5O3MgdGhlIGRlYWwgd2l0aCBgaWNtcF9uZG9fc2VuZGA/IEhtbW0sIGlzIHRoYXQgdGhlIG9uZSBkZWZpbmVkIGluIGBuZXQvaXB2NC9pY21wLmNgPyBBaCwgcmlnaHQsIHRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGxvb2suIENvcnJlY3QsIGBpY21wX25kb19zZW5kYCBpcyBpbmRlZWQgd2l0aGluIGBuZXQvaXB2NC9pY21wLmNgLiBHb3QgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEwOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ljbXBfbmRvX3NlbmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9pY21wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvaWNtcC5jPTEwMjc9RVhQT1JUX1NZTUJPTChfX2ljbXBfc2VuZCk7XG4tLVxubmV0L2lwdjQvaWNtcC5jLTEwMzAtI2luY2x1ZGUgXHUwMDNjbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2suaFx1MDAzZVxubmV0L2lwdjQvaWNtcC5jOjEwMzE6dm9pZCBpY21wX25kb19zZW5kKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCB0eXBlLCBpbnQgY29kZSwgX19iZTMyIGluZm8pXG5uZXQvaXB2NC9pY21wLmMtMTAzMi17XG4tLVxubmV0L2lwdjQvaWNtcC5jLTEwNjMtfVxubmV0L2lwdjQvaWNtcC5jOjEwNjQ6RVhQT1JUX1NZTUJPTChpY21wX25kb19zZW5kKTtcbm5ldC9pcHY0L2ljbXAuYy0xMDY1LSNlbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODEzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSVB2NCBSb3V0aW5nIEJ1ZyBGaXgqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgbmV3IHBhdGNoIHRvIHJldmlldy4gTXkgaW1tZWRpYXRlIGZvY3VzIHN5bWJvbHMgYXJlIGdvaW5nIHRvIGJlIGBfX2ljbXBfc2VuZGAgYW5kIGBpY21wX25kb19zZW5kYC4gVGhvc2UgYXJlIHVzdWFsbHkgZ29vZCBpbmRpY2F0b3JzIG9mIHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aCBJQ01QIGhhbmRsaW5nLCB3aGljaCBpcyByZWxldmFudCBoZXJlLiBUaGUgcGF0Y2ggZGVzY3JpcHRpb24gbWVudGlvbnMgYSBidWcgaW4gYGlwX3JvdXRlX2lucHV0KClgIHJldHVybmluZyBhbiBgVU5SRUFDSEFCTEVgIHJvdXRlIHdoZXJlIHRoZSBkZXN0aW5hdGlvbiYjMzk7cyBgb3V0cHV0YCBpcyBpbmNvcnJlY3RseSBzZXQgdG8gYGlwX3J0X2J1Z2AuIFRoYXQgc291bmRzIGxpa2UgYSBjbGFzc2ljIHJvdXRpbmcgcHJvYmxlbSwgYW5kIHRoZSBlZmZlY3QgaXMgc2VyaW91czogYSBjcmFzaCBvciB3YXJuaW5nIHdoZW4gdGhlIGZhdWx0eSByb3V0ZSBpcyBhY3R1YWxseSB1c2VkLgoKVGhpcyBpcyBhIHByZXR0eSBmdW5kYW1lbnRhbCBjaGFuZ2U7IGl0IHRvdWNoZXMgY29yZSBJUHY0IGxvZ2ljLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBpbXBsaWNhdGlvbnMuIEl0JiMzOTtzIG5vdCBjbGVhciBmcm9tIHRoZSBkZXNjcmlwdGlvbiB3aGF0IGNvbmZpZyBvcHRpb25zIGFyZSBpbnZvbHZlZC4gYENPTkZJR19JTkVUYCBpcyB0aGUgb2J2aW91cyBvbmUsIG9yIG1heWJlIGV2ZW4gYENPTkZJR19JUF9NVUxUSUNBU1RgPyBHb3R0YSBjaGVjayB0aGUgYG5ldC9pcHY0L0tjb25maWdgIGZpbGUgdG8gYmUgc3VyZS4gSXQmIzM5O3MgcHJvYmFibHkganVzdCBzdGFuZGFyZCBJUHY0IHN0dWZmLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU5FVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz0zMzA9Y29uZmlnIE5FVF9GT1VfSVBfVFVOTkVMU1xuLS1cbm5ldC9pcHY0L0tjb25maWctMzM4LVxubmV0L2lwdjQvS2NvbmZpZzozMzk6Y29uZmlnIElORVRfQUhcbm5ldC9pcHY0L0tjb25maWctMzQwLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEFIIHRyYW5zZm9ybWF0aW9uXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zNTMtXG5uZXQvaXB2NC9LY29uZmlnOjM1NDpjb25maWcgSU5FVF9FU1Bcbm5ldC9pcHY0L0tjb25maWctMzU1LVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEVTUCB0cmFuc2Zvcm1hdGlvblwmIzM0O1xuLS1cbm5ldC9pcHY0L0tjb25maWctMzY4LVxubmV0L2lwdjQvS2NvbmZpZzozNjk6Y29uZmlnIElORVRfRVNQX09GRkxPQURcbm5ldC9pcHY0L0tjb25maWctMzcwLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEVTUCB0cmFuc2Zvcm1hdGlvbiBvZmZsb2FkXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zODEtXG5uZXQvaXB2NC9LY29uZmlnOjM4Mjpjb25maWcgSU5FVF9FU1BJTlRDUFxubmV0L2lwdjQvS2NvbmZpZy0zODMtXHRib29sIFwmIzM0O0lQOiBFU1AgaW4gVENQIGVuY2Fwc3VsYXRpb24gKFJGQyA4MjI5KVwmIzM0O1xuLS1cbm5ldC9pcHY0L0tjb25maWctMzkzLVxubmV0L2lwdjQvS2NvbmZpZzozOTQ6Y29uZmlnIElORVRfSVBDT01QXG5uZXQvaXB2NC9LY29uZmlnLTM5NS1cdHRyaXN0YXRlIFwmIzM0O0lQOiBJUENvbXAgdHJhbnNmb3JtYXRpb25cJiMzNDtcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTQwMy1cbm5ldC9pcHY0L0tjb25maWc6NDA0OmNvbmZpZyBJTkVUX1RBQkxFX1BFUlRVUkJfT1JERVJcbm5ldC9pcHY0L0tjb25maWctNDA1LVx0aW50IFwmIzM0O0lORVQ6IFNvdXJjZSBwb3J0IHBlcnR1cmJhdGlvbiB0YWJsZSBzaXplIChhcyBwb3dlciBvZiAyKVwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTQxMy1cbm5ldC9pcHY0L0tjb25maWc6NDE0OmNvbmZpZyBJTkVUX1hGUk1fVFVOTkVMXG5uZXQvaXB2NC9LY29uZmlnLTQxNS1cdHRyaXN0YXRlXG4tLVxubmV0L2lwdjQvS2NvbmZpZy00MTgtXG5uZXQvaXB2NC9LY29uZmlnOjQxOTpjb25maWcgSU5FVF9UVU5ORUxcbm5ldC9pcHY0L0tjb25maWctNDIwLVx0dHJpc3RhdGVcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTQyMi1cbm5ldC9pcHY0L0tjb25maWc6NDIzOmNvbmZpZyBJTkVUX0RJQUdcbm5ldC9pcHY0L0tjb25maWctNDI0LVx0dHJpc3RhdGUgXCYjMzQ7SU5FVDogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZy00MzQtXG5uZXQvaXB2NC9LY29uZmlnOjQzNTpjb25maWcgSU5FVF9UQ1BfRElBR1xubmV0L2lwdjQvS2NvbmZpZy00MzYtXHRkZXBlbmRzIG9uIElORVRfRElBR1xuLS1cbm5ldC9pcHY0L0tjb25maWctNDM4LVxubmV0L2lwdjQvS2NvbmZpZzo0Mzk6Y29uZmlnIElORVRfVURQX0RJQUdcbm5ldC9pcHY0L0tjb25maWctNDQwLVx0dHJpc3RhdGUgXCYjMzQ7VURQOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTQ0Ni1cbm5ldC9pcHY0L0tjb25maWc6NDQ3OmNvbmZpZyBJTkVUX1JBV19ESUFHXG5uZXQvaXB2NC9LY29uZmlnLTQ0OC1cdHRyaXN0YXRlIFwmIzM0O1JBVzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZy00NTQtXG5uZXQvaXB2NC9LY29uZmlnOjQ1NTpjb25maWcgSU5FVF9ESUFHX0RFU1RST1lcbm5ldC9pcHY0L0tjb25maWctNDU2LVx0Ym9vbCBcJiMzNDtJTkVUOiBhbGxvdyBwcml2aWxlZ2VkIHByb2Nlc3MgdG8gYWRtaW5pc3RyYXRpdmVseSBjbG9zZSBzb2NrZXRzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEwOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwMDUKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipLY29uZmlnIExvY2F0aW9uIG9mIElORVQqKgoKT2theSwgc28gSSBzZWUgdGhhdCBgSU5FVGAgaXMgZGVmaW5lZCB3aXRoaW4gYG5ldC9LY29uZmlnYC4gVGhhdCYjMzk7cyBub3Qgc3VycHJpc2luZywgcmVhbGx5LiBJdCBjb25maXJtcyBteSB1bmRlcnN0YW5kaW5nIHRoYXQgdGhlIGNvcmUgbmV0d29yay1yZWxhdGVkIGNvbmZpZ3VyYXRpb25zLCBpbmNsdWRpbmcgdGhlIGJyb2FkZXIgSW50ZXJuZXQgUHJvdG9jb2wgc3VpdGUsIGFyZSBtYW5hZ2VkIHdpdGhpbiB0aGF0IHNlY3Rpb24gb2YgdGhlIEtjb25maWcgaGllcmFyY2h5LiBJdCYjMzk7cyBhIHN0YW5kYXJkIGFuZCBsb2dpY2FsIHBsYWNlIHRvIGZpbmQgaXQsIGdpdmVuIHRoZSBzY29wZSBhbmQgZGVwZW5kZW5jaWVzIGludm9sdmVkIHdpdGggbmV0d29yayBwcm90b2NvbCBzdXBwb3J0LiBUaGlzIGFsc28gdGVsbHMgbWUgdG8gbG9vayB0aGVyZSBmb3IgcmVsYXRlZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgaWYgSSBuZWVkIHRvIGFkanVzdCBvciBleHRlbmQgbmV0d29yayBzZXR0aW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTA6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElORVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvS2NvbmZpZz05OT1jb25maWcgTkVUX0hBTkRTSEFLRV9LVU5JVF9URVNUXG4tLVxubmV0L0tjb25maWctMTEzLVxubmV0L0tjb25maWc6MTE0OmNvbmZpZyBJTkVUXG5uZXQvS2NvbmZpZy0xMTUtXHRib29sIFwmIzM0O1RDUC9JUCBuZXR3b3JraW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEwOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyNDUKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBJTkVUYCBDb25maWd1cmF0aW9uIGZvciBJQ01QIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGUgYElORVRgIGNvbmZpZ3VyYXRpb24gaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGhlcmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgcGF0Y2ggbmVjZXNzaXRhdGVzIGFueSBvdGhlciBjb25maWd1cmF0aW9uIGFkanVzdG1lbnRzLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IHRvdWNoZXMgYG5ldC9pcHY0L2ljbXAuY2AsIGFuZCBJIGtub3cgdGhhdCB0aGlzIGZpbGUgaXMgb25seSBjb21waWxlZCB3aGVuIGBDT05GSUdfSU5FVGAgaXMgZW5hYmxlZC4gVGhhdCYjMzk7cyBhIGdvb2Qgc2lnbiwgYnV0IEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBkZXBlbmRlbmNpZXMgb3IgaGlkZGVuIGZsYWdzLiBUaW1lIHRvIGRpZyBpbnRvIGBuZXQvaXB2NC9NYWtlZmlsZWAgYW5kIHNlZSBpZiBhbnl0aGluZyBlbHNlIGlzIHJlbGV2YW50IGluIHRoYXQgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTA6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWNtcC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcbi0tXG5uZXQvaXB2NC9NYWtlZmlsZS0xMy1cdCAgICAgdGNwX29mZmxvYWQubyB0Y3BfcGxiLm8gZGF0YWdyYW0ubyByYXcubyB1ZHAubyBcXFxubmV0L2lwdjQvTWFrZWZpbGU6MTQ6XHQgICAgIHVkcF9vZmZsb2FkLm8gYXJwLm8gaWNtcC5vIGRldmluZXQubyBhZl9pbmV0Lm8gaWdtcC5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xNS1cdCAgICAgZmliX2Zyb250ZW5kLm8gZmliX3NlbWFudGljcy5vIGZpYl90cmllLm8gZmliX25vdGlmaWVyLm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTA6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYxMgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBJQ01QIFJvdXRpbmcgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgSUNNUCBpbXBsZW1lbnRhdGlvbi4gTXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhpcyBjb2RlIGlzIHVuY29uZGl0aW9uYWxseSBjb21waWxlZCBhcyBwYXJ0IG9mIHRoZSBgbmV0L2lwdjQvYCBtb2R1bGUuIFRoYXQmIzM5O3MgYSBrZXkgc3RhcnRpbmcgcG9pbnQuIEFuZCBvZiBjb3Vyc2UsIGBuZXQvaXB2NC9gIGl0c2VsZiBpcyBvbmx5IGJ1aWx0IHdoZW4gYENPTkZJR19JTkVUYCBpcyBlbmFibGVkLiBUaGVyZWZvcmUsIGZvciB0aGlzIHNwZWNpZmljIHBpZWNlIHRvIGJlIGluY2x1ZGVkLCBgQ09ORklHX0lORVRgIGlzIHRoZSBvbmx5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIEkgbmVlZCB0byBiZSBjb25jZXJuZWQgd2l0aC4gR29vZCwgdGhhdCBzaW1wbGlmaWVzIHRoaW5ncy4KCk5vdywgbXkgZm9jdXMgbmFycm93cyBkb3duIHRvIHRoZSBmdW5jdGlvbnMgYF9faWNtcF9zZW5kYCBhbmQgYGljbXBfbmRvX3NlbmRgLiBUaGVzZSBhcmUgdGhlIHNwZWNpZmljIHN5bWJvbHMgdGhhdCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZW0gYW5kIGBpY21wX3JvdXRlX2xvb2t1cGAuCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrIGhvdyBgaWNtcF9yb3V0ZV9sb29rdXBgIGdldHMgY2FsbGVkLiBGcm9tIHdoYXQgSSByZWNhbGwsIGBfX2ljbXBfc2VuZGAgaXMgKmEqIGNhbGxlciBvZiBgaWNtcF9yb3V0ZV9sb29rdXBgLiBCdXQgaXMgaXQgdGhlICpvbmx5KiBvbmU/IEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgdGhhdCBJJiMzOTttIG5vdCBtaXNzaW5nIGFueSBvdGhlciBwb3RlbnRpYWwgZW50cnkgcG9pbnRzIGludG8gdGhlIHJvdXRpbmcgbG9va3VwIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIHRoZSBjcml0aWNhbCBxdWVzdGlvbiB0byBuYWlsIGRvd24gYmVmb3JlIEkgbW92ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTA6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWNtcF9yb3V0ZV9sb29rdXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9pY21wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvaWNtcC5jPTQ4Mz1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKmljbXBfZ2V0X3JvdXRlX2xvb2t1cF9kZXYoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC9pY21wLmMtNDkzLVxubmV0L2lwdjQvaWNtcC5jOjQ5NDpzdGF0aWMgc3RydWN0IHJ0YWJsZSAqaWNtcF9yb3V0ZV9sb29rdXAoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmxvd2k0ICpmbDQsXG5uZXQvaXB2NC9pY21wLmMtNDk1LVx0XHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLFxuLS1cbm5ldC9pcHY0L2ljbXAuYz04MTM9dm9pZCBfX2ljbXBfc2VuZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgdHlwZSwgaW50IGNvZGUsIF9fYmUzMiBpbmZvLFxuLS1cbm5ldC9pcHY0L2ljbXAuYy05NjgtXG5uZXQvaXB2NC9pY21wLmM6OTY5Olx0cnQgPSBpY21wX3JvdXRlX2xvb2t1cChuZXQsIFx1MDAyNmZsNCwgc2tiX2luLCBpcGgsIHNhZGRyLFxubmV0L2lwdjQvaWNtcC5jLTk3MC1cdFx0XHQgICAgICAgaW5ldF9kc2ZpZWxkX3RvX2RzY3AodG9zKSwgbWFyaywgdHlwZSwgY29kZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTA6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzI2OAoJCQkJCQkJb3V0cHV0OiAxMDYKCQkJCQkJCXRob3VnaHRzOiA0MTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIElDTVAgUm91dGluZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBwaW5uZWQgZG93biB0aGUga2V5IGVudHJ5IHBvaW50czogYF9faWNtcF9zZW5kYCBhbmQgYGljbXBfbmRvX3NlbmRgLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhvc2UgYXJlIG15IGZvY3VzIHN5bWJvbHMgYmVjYXVzZSBgX19pY21wX3NlbmRgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQgZGlyZWN0bHkgY2FsbHMgaXQuIEFuZCBgaWNtcF9uZG9fc2VuZGAgYWxzbyBjYWxscyBpdCwgc28gdGhvc2UgYXJlIG15IGhvb2tzLgoKTm93LCByZXZpc2l0aW5nIHRoZSBwYXRjaCBpdHNlbGYsIEkgc2VlIGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjb3JyZWN0aW9uLiBUaGUgb3JpZ2luYWwgY29kZSBoYWQgYSBmbGF3IOKAkyBpdCB3YXNuJiMzOTt0IGNvcnJlY3RseSBoYW5kbGluZyBgUlROX1VOUkVBQ0hBQkxFYCByb3V0ZXMgaW4gSUNNUCBvdXRwdXQsIGFuZCB0aGF0IHdhcyBsZWFkaW5nIHRvIHBvdGVudGlhbGx5IGludmFsaWQgcm91dGVzIGJlaW5nIHVzZWQuIFRoaXMgY291bGQgdHJpZ2dlciBgaXBfcnRfYnVnYCwgd2hpY2ggd2UgKmRvbiYjMzk7dCogd2FudC4KClRoZSBwYXRjaCYjMzk7cyBtb2RpZmljYXRpb24gbm93IGNvcnJlY3RseSBjaGVja3MgZm9yICpib3RoKiBgUlROX0xPQ0FMYCBhbmQgYFJUTl9VTlJFQUNIQUJMRWAgcm91dGUgdHlwZXMuIFRoZSBvcmlnaW5hbCBidWcgb25seSBjb25zaWRlcmVkIExPQ0FMIHJvdXRlcy4gVGhpcyBpcyBjcnVjaWFsIGZvciByb2J1c3Qgcm91dGluZyBiZWhhdmlvciwgYW5kIHRoaXMgKmRlZmluaXRlbHkqIHdhcnJhbnRzIGZ1enppbmcuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgY2hhbmdlIGluIGhvdyB0aGUgSVB2NCBuZXR3b3JraW5nIHN0YWNrICpzaG91bGQqIGhhbmRsZSBjZXJ0YWluIHJvdXRpbmcgZWRnZSBjYXNlcy4gV2UmIzM5O3JlIHByZXZlbnRpbmcgYSBmdW5jdGlvbmFsIGVycm9yIHRoYXQgY291bGQgY2F1c2Ugc3lzdGVtIGluc3RhYmlsaXR5LiBJIHNlZSB2YWx1ZSBpbiBmdXp6aW5nIHRoZSBkaWZmZXJlbmNlIHRvIGNoZWNrIGZvciByZWdyZXNzaW9ucy4KCkdpdmVuIGl0cyBjb3JlIG5hdHVyZSwgSSYjMzk7bGwgbmVlZCBgSU5FVGAgZW5hYmxlZCBmb3IgdGhlIGZ1enppbmcuCgpBbHJpZ2h0LCBJJiMzOTttIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTA6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2ljbXBfc2VuZCYjMzQ7LAogICAgJiMzNDtpY21wX25kb19zZW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJQ01QIHJvdXRpbmcgbG9naWMgdG8gcHJvcGVybHkgaGFuZGxlIFJUTl9VTlJFQUNIQUJMRSByb3V0ZXMgcmV0dXJuZWQgYnkgaXBfcm91dGVfaW5wdXQoKSwgcHJldmVudGluZyB0aGUgdXNlIG9mIGludmFsaWQgcm91dGVzIHRoYXQgY291bGQgdHJpZ2dlciBpcF9ydF9idWcuIFRoaXMgaXMgYSBjb3JlIElQdjQgbmV0d29ya2luZyBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2ljbXBfc2VuZCYjMzQ7LAogICAgJiMzNDtpY21wX25kb19zZW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJQ01QIHJvdXRpbmcgbG9naWMgdG8gcHJvcGVybHkgaGFuZGxlIFJUTl9VTlJFQUNIQUJMRSByb3V0ZXMgcmV0dXJuZWQgYnkgaXBfcm91dGVfaW5wdXQoKSwgcHJldmVudGluZyB0aGUgdXNlIG9mIGludmFsaWQgcm91dGVzIHRoYXQgY291bGQgdHJpZ2dlciBpcF9ydF9idWcuIFRoaXMgaXMgYSBjb3JlIElQdjQgbmV0d29ya2luZyBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEwOjU3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTA6NTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcm91dGluZyBsb2dpYyBpbiBgaWNtcF9yb3V0ZV9sb29rdXBgIHRvIHByZXZlbnQgdGhlIHVzZSBvZiBgUlROX1VOUkVBQ0hBQkxFYCByb3V0ZXMgZm9yIElDTVAgb3V0cHV0LCB3aGljaCBjb3VsZCBsZWFkIHRvIGNhbGxpbmcgYGlwX3J0X2J1Z2AuIFRoaXMgaXMgYSBsb2dpYyBidWcgZml4IHRoYXQgcHJldmVudHMgaW5jb3JyZWN0IHJvdXRpbmcgYmVoYXZpb3Igb3IgcG90ZW50aWFsIGNyYXNoZXMgKGUuZy4sIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBvciBCVUcoKSBpbiBgaXBfcnRfYnVnYCkuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyYjMwZWU2OGQwYTYyMTY2MTQwMmYwN2ZmMDYxN2E0OTFjMjgyNzA5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgMjUgMTA6NTY6NDcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pY21wLmMgYi9uZXQvaXB2NC9pY21wLmMKaW5kZXggMGNhZWRmYzdjYTkyZi4uNzM1MGYwMzgwYmUxNyAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaWNtcC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2ljbXAuYwpAQCAtNTgxLDE2ICYjNDM7NTgxLDE1IEBAIHN0YXRpYyBzdHJ1Y3QgcnRhYmxlICppY21wX3JvdXRlX2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmbG93aTQgKmZsNCwKIAkJc2tiX2RzdHJlZl9yZXN0b3JlKHNrYl9pbiwgb3JlZmRzdCk7CiAKIAkJLyoKLQkJICogQXQgdGhpcyBwb2ludCwgZmw0X2RlYy5kYWRkciBzaG91bGQgTk9UIGJlIGxvY2FsICh3ZQotCQkgKiBjaGVja2VkIGZsNF9kZWMuc2FkZHIgYWJvdmUpLiBIb3dldmVyLCBhIHJhY2UgY29uZGl0aW9uCi0JCSAqIG1heSBvY2N1ciBpZiB0aGUgYWRkcmVzcyBpcyBhZGRlZCB0byB0aGUgaW50ZXJmYWNlCi0JCSAqIGNvbmN1cnJlbnRseS4gSW4gdGhhdCBjYXNlLCBpcF9yb3V0ZV9pbnB1dCgpIHJldHVybnMgYQotCQkgKiBMT0NBTCByb3V0ZSB3aXRoIGRzdC5vdXRwdXQ9aXBfcnRfYnVnLCB3aGljaCBtdXN0IG5vdAotCQkgKiBiZSB1c2VkIGZvciBvdXRwdXQuCiYjNDM7CQkgKiBBdCB0aGlzIHBvaW50LCBmbDRfZGVjLmRhZGRyIHNob3VsZCBOT1QgYmUgbG9jYWwgKHRoZQomIzQzOwkJICogYWRkcmVzcyBjYW4gYmUgYWRkZWQgdG8gdGhlIGludGVyZmFjZSBjb25jdXJyZW50bHkpIG9yIHVucm91dGFibGUuCiYjNDM7CQkgKiBJbiB0aGF0IGNhc2UsIGlwX3JvdXRlX2lucHV0KCkgcmV0dXJucyBhIExPQ0FMIG9yIFVOUkVBQ0hBQkxFCiYjNDM7CQkgKiByb3V0ZSB3aXRoIGRzdC5vdXRwdXQ9aXBfcnRfYnVnLCB3aGljaCBtdXN0IG5vdCBiZSB1c2VkIGZvciBvdXRwdXQuCiAJCSAqLwotCQlpZiAoIWVyciAmYW1wOyZhbXA7IHJ0MiAmYW1wOyZhbXA7IHJ0Mi0mZ3Q7cnRfdHlwZSA9PSBSVE5fTE9DQUwpIHsKLQkJCW5ldF93YXJuX3JhdGVsaW1pdGVkKCYjMzQ7ZGV0ZWN0ZWQgbG9jYWwgcm91dGUgZm9yICVwSTQgZHVyaW5nIElDTVAgc2VuZGluZywgc3JjICVwSTRcbiYjMzQ7LAotCQkJCQkgICAgICZhbXA7Zmw0X2RlYy5kYWRkciwgJmFtcDtmbDRfZGVjLnNhZGRyKTsKJiM0MzsJCWlmICghZXJyICZhbXA7JmFtcDsgcnQyICZhbXA7JmFtcDsgKHJ0Mi0mZ3Q7cnRfdHlwZSA9PSBSVE5fTE9DQUwgfHwgcnQyLSZndDtydF90eXBlID09IFJUTl9VTlJFQUNIQUJMRSkpIHsKJiM0MzsJCQlpZiAocnQyLSZndDtydF90eXBlID09IFJUTl9MT0NBTCkKJiM0MzsJCQkJbmV0X3dhcm5fcmF0ZWxpbWl0ZWQoJiMzNDtkZXRlY3RlZCBsb2NhbCByb3V0ZSBmb3IgJXBJNCBkdXJpbmcgSUNNUCBzZW5kaW5nLCBzcmMgJXBJNFxuJiMzNDssCiYjNDM7CQkJCQkJICAgICAmYW1wO2ZsNF9kZWMuZGFkZHIsICZhbXA7Zmw0X2RlYy5zYWRkcik7CiAJCQlkc3RfcmVsZWFzZSgmYW1wO3J0Mi0mZ3Q7ZHN0KTsKIAkJCWVyciA9IC1FSU5WQUw7CiAJCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEwOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMjgKCQkJCQkJCW91dHB1dDogMTM4CgkJCQkJCQl0aG91Z2h0czogMjY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIElDTVAgUm91dGUgTG9va3VwIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIHJldmlld2VkIHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIGBpY21wX3JvdXRlX2xvb2t1cGAgaW4gYG5ldC9pcHY0L2ljbXAuY2AuIEl0JiMzOTtzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBmaXguIFRoZXkmIzM5O3JlIGNoYW5naW5nIGEgY29uZGl0aW9uYWwgc3RhdGVtZW50OiB0aGUgb3JpZ2luYWwgY29kZSBjaGVja2VkIGZvciBgUlROX0xPQ0FMYCByb3V0ZXMsIGFuZCBub3cgaXQgYWxzbyBpbmNsdWRlcyBgUlROX1VOUkVBQ0hBQkxFYC4gU2VlbXMgbGlrZSBhIGNsZWFyIGxvZ2ljIGJ1ZyBmaXgg4oCTIHByZXZlbnRpbmcgdGhlIHVzZSBvZiBgUlROX1VOUkVBQ0hBQkxFYCByb3V0ZXMgZm9yIElDTVAgb3V0cHV0LCB3aGljaCBjb3VsZCBsZWFkIHRvIHByb2JsZW1zLCBwb3RlbnRpYWxseSB3aXRoIHRoZSBgZHN0Lm91dHB1dD1pcF9ydF9idWdgIHNpdHVhdGlvbi4KCk15IGltbWVkaWF0ZSBjb25jZXJuLCBhcyBhbHdheXMsIGlzIG1lbW9yeSBzYWZldHkuIEhvd2V2ZXIsIGFmdGVyIHRha2luZyBhIGNsb3NlIGxvb2ssIEkmIzM5O20gY29uZmlkZW50IHRoYXQgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3Vlcy4gVGhlIHZhcmlhYmxlcyBpbnZvbHZlZCwgc3BlY2lmaWNhbGx5IGBydDJgIChhIHBvaW50ZXIgdG8gYSBgc3RydWN0IHJ0YWJsZWApIGFuZCBgcnQyLSZndDtydF90eXBlYCwgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGJ5IGBpcF9yb3V0ZV9pbnB1dCgpYC4gVGhlIHBhdGNoICpvbmx5KiBhZGRzIGEgY2hlY2sgZm9yIGBSVE5fVU5SRUFDSEFCTEVgOyBpdCYjMzk7cyBub3QgaW50cm9kdWNpbmcgYW55IG5ldyBtZW1vcnkgYWNjZXNzIHBhdHRlcm5zLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBiZWluZyByZWFkIG9yIGxlYWtlZCBhcyBhIHJlc3VsdCBvZiB0aGlzIGNoYW5nZS4KCkkmIzM5O20gY29tZm9ydGFibGUgc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAgZm9yIHRoaXMuIEp1c3QgdG8gZG91YmxlLWNoZWNrLCBJIHdlbnQgdGhyb3VnaCBpdCBhZ2FpbiwgYW5kIGNvbmZpcm1lZCB0aGF0IHRoZSBhZGRlZCBjaGVjayBkb2VzbiYjMzk7dCBjcmVhdGUgYW55IG5ldyBvcHBvcnR1bml0aWVzIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSB0byBiZSByZWFkLiBJIGNhbiBjb25maXJtLCBiYXNlZCBvbiBteSBhbmFseXNpcywgdGhhdCBpdCBpcyBzYWZlLgoKSSYjMzk7bGwgY2FsbCBgc2V0LXJlc3VsdHNgIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTA6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcm91dGluZyBsb2dpYyBpbiBgaWNtcF9yb3V0ZV9sb29rdXBgIHRvIHByZXZlbnQgdGhlIHVzZSBvZiBgUlROX1VOUkVBQ0hBQkxFYCByb3V0ZXMgZm9yIElDTVAgb3V0cHV0LCB3aGljaCBjb3VsZCBsZWFkIHRvIGNhbGxpbmcgYGlwX3J0X2J1Z2AuIFRoaXMgaXMgYSBsb2dpYyBidWcgZml4IHRoYXQgcHJldmVudHMgaW5jb3JyZWN0IHJvdXRpbmcgYmVoYXZpb3Igb3IgcG90ZW50aWFsIGNyYXNoZXMgKGUuZy4sIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBvciBCVUcoKSBpbiBgaXBfcnRfYnVnYCkuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcm91dGluZyBsb2dpYyBpbiBgaWNtcF9yb3V0ZV9sb29rdXBgIHRvIHByZXZlbnQgdGhlIHVzZSBvZiBgUlROX1VOUkVBQ0hBQkxFYCByb3V0ZXMgZm9yIElDTVAgb3V0cHV0LCB3aGljaCBjb3VsZCBsZWFkIHRvIGNhbGxpbmcgYGlwX3J0X2J1Z2AuIFRoaXMgaXMgYSBsb2dpYyBidWcgZml4IHRoYXQgcHJldmVudHMgaW5jb3JyZWN0IHJvdXRpbmcgYmVoYXZpb3Igb3IgcG90ZW50aWFsIGNyYXNoZXMgKGUuZy4sIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBvciBCVUcoKSBpbiBgaXBfcnRfYnVnYCkuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMDo1Njo0OS42NTk3MjE4MzhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTExMDAzMjc1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19pY21wX3NlbmRcIixcbiAgICBcImljbXBfbmRvX3NlbmRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHJvdXRpbmcgbG9naWMgaW4gYGljbXBfcm91dGVfbG9va3VwYCB0byBwcmV2ZW50IHRoZSB1c2Ugb2YgYFJUTl9VTlJFQUNIQUJMRWAgcm91dGVzIGZvciBJQ01QIG91dHB1dCwgd2hpY2ggY291bGQgbGVhZCB0byBjYWxsaW5nIGBpcF9ydF9idWdgLiBUaGlzIGlzIGEgbG9naWMgYnVnIGZpeCB0aGF0IHByZXZlbnRzIGluY29ycmVjdCByb3V0aW5nIGJlaGF2aW9yIG9yIHBvdGVudGlhbCBjcmFzaGVzIChlLmcuLCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugb3IgQlVHKCkgaW4gYGlwX3J0X2J1Z2ApLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSUNNUCByb3V0aW5nIGxvZ2ljIHRvIHByb3Blcmx5IGhhbmRsZSBSVE5fVU5SRUFDSEFCTEUgcm91dGVzIHJldHVybmVkIGJ5IGlwX3JvdXRlX2lucHV0KCksIHByZXZlbnRpbmcgdGhlIHVzZSBvZiBpbnZhbGlkIHJvdXRlcyB0aGF0IGNvdWxkIHRyaWdnZXIgaXBfcnRfYnVnLiBUaGlzIGlzIGEgY29yZSBJUHY0IG5ldHdvcmtpbmcgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMDo1Njo0OS42NTk3MjU2MjhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNjg5Njg3NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyYjMwZWU2OGQwYTYyMTY2MTQwMmYwN2ZmMDYxN2E0OTFjMjgyNzA5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDI1IDEwOjU2OjQ3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2ljbXAuYyBiL25ldC9pcHY0L2ljbXAuY1xcbmluZGV4IDBjYWVkZmM3Y2E5MmYuLjczNTBmMDM4MGJlMTcgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvaWNtcC5jXFxuKysrIGIvbmV0L2lwdjQvaWNtcC5jXFxuQEAgLTU4MSwxNiArNTgxLDE1IEBAIHN0YXRpYyBzdHJ1Y3QgcnRhYmxlICppY21wX3JvdXRlX2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmbG93aTQgKmZsNCxcXG4gXFx0XFx0c2tiX2RzdHJlZl9yZXN0b3JlKHNrYl9pbiwgb3JlZmRzdCk7XFxuIFxcbiBcXHRcXHQvKlxcbi1cXHRcXHQgKiBBdCB0aGlzIHBvaW50LCBmbDRfZGVjLmRhZGRyIHNob3VsZCBOT1QgYmUgbG9jYWwgKHdlXFxuLVxcdFxcdCAqIGNoZWNrZWQgZmw0X2RlYy5zYWRkciBhYm92ZSkuIEhvd2V2ZXIsIGEgcmFjZSBjb25kaXRpb25cXG4tXFx0XFx0ICogbWF5IG9jY3VyIGlmIHRoZSBhZGRyZXNzIGlzIGFkZGVkIHRvIHRoZSBpbnRlcmZhY2VcXG4tXFx0XFx0ICogY29uY3VycmVudGx5LiBJbiB0aGF0IGNhc2UsIGlwX3JvdXRlX2lucHV0KCkgcmV0dXJucyBhXFxuLVxcdFxcdCAqIExPQ0FMIHJvdXRlIHdpdGggZHN0Lm91dHB1dD1pcF9ydF9idWcsIHdoaWNoIG11c3Qgbm90XFxuLVxcdFxcdCAqIGJlIHVzZWQgZm9yIG91dHB1dC5cXG4rXFx0XFx0ICogQXQgdGhpcyBwb2ludCwgZmw0X2RlYy5kYWRkciBzaG91bGQgTk9UIGJlIGxvY2FsICh0aGVcXG4rXFx0XFx0ICogYWRkcmVzcyBjYW4gYmUgYWRkZWQgdG8gdGhlIGludGVyZmFjZSBjb25jdXJyZW50bHkpIG9yIHVucm91dGFibGUuXFxuK1xcdFxcdCAqIEluIHRoYXQgY2FzZSwgaXBfcm91dGVfaW5wdXQoKSByZXR1cm5zIGEgTE9DQUwgb3IgVU5SRUFDSEFCTEVcXG4rXFx0XFx0ICogcm91dGUgd2l0aCBkc3Qub3V0cHV0PWlwX3J0X2J1Zywgd2hpY2ggbXVzdCBub3QgYmUgdXNlZCBmb3Igb3V0cHV0LlxcbiBcXHRcXHQgKi9cXG4tXFx0XFx0aWYgKCFlcnIgXFx1MDAyNlxcdTAwMjYgcnQyIFxcdTAwMjZcXHUwMDI2IHJ0Mi1cXHUwMDNlcnRfdHlwZSA9PSBSVE5fTE9DQUwpIHtcXG4tXFx0XFx0XFx0bmV0X3dhcm5fcmF0ZWxpbWl0ZWQoXFxcImRldGVjdGVkIGxvY2FsIHJvdXRlIGZvciAlcEk0IGR1cmluZyBJQ01QIHNlbmRpbmcsIHNyYyAlcEk0XFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZmbDRfZGVjLmRhZGRyLCBcXHUwMDI2Zmw0X2RlYy5zYWRkcik7XFxuK1xcdFxcdGlmICghZXJyIFxcdTAwMjZcXHUwMDI2IHJ0MiBcXHUwMDI2XFx1MDAyNiAocnQyLVxcdTAwM2VydF90eXBlID09IFJUTl9MT0NBTCB8fCBydDItXFx1MDAzZXJ0X3R5cGUgPT0gUlROX1VOUkVBQ0hBQkxFKSkge1xcbitcXHRcXHRcXHRpZiAocnQyLVxcdTAwM2VydF90eXBlID09IFJUTl9MT0NBTClcXG4rXFx0XFx0XFx0XFx0bmV0X3dhcm5fcmF0ZWxpbWl0ZWQoXFxcImRldGVjdGVkIGxvY2FsIHJvdXRlIGZvciAlcEk0IGR1cmluZyBJQ01QIHNlbmRpbmcsIHNyYyAlcEk0XFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZmbDRfZGVjLmRhZGRyLCBcXHUwMDI2Zmw0X2RlYy5zYWRkcik7XFxuIFxcdFxcdFxcdGRzdF9yZWxlYXNlKFxcdTAwMjZydDItXFx1MDAzZWRzdCk7XFxuIFxcdFxcdFxcdGVyciA9IC1FSU5WQUw7XFxuIFxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTY6NTEuMDI5NDA1NjQ1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTA3NzAzNTQ3MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9faWNtcF9zZW5kXCIsXG4gICAgXCJpY21wX25kb19zZW5kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElDTVAgcm91dGluZyBsb2dpYyB0byBwcm9wZXJseSBoYW5kbGUgUlROX1VOUkVBQ0hBQkxFIHJvdXRlcyByZXR1cm5lZCBieSBpcF9yb3V0ZV9pbnB1dCgpLCBwcmV2ZW50aW5nIHRoZSB1c2Ugb2YgaW52YWxpZCByb3V0ZXMgdGhhdCBjb3VsZCB0cmlnZ2VyIGlwX3J0X2J1Zy4gVGhpcyBpcyBhIGNvcmUgSVB2NCBuZXR3b3JraW5nIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmIzMGVlNjhkMGE2MjE2NjE0MDJmMDdmZjA2MTdhNDkxYzI4MjcwOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDI1IDEwOjU2OjQ3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaWNtcC5jIGIvbmV0L2lwdjQvaWNtcC5jXG5pbmRleCAwY2FlZGZjN2NhOTJmLi43MzUwZjAzODBiZTE3IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaWNtcC5jXG4rKysgYi9uZXQvaXB2NC9pY21wLmNcbkBAIC01ODEsMTYgKzU4MSwxNSBAQCBzdGF0aWMgc3RydWN0IHJ0YWJsZSAqaWNtcF9yb3V0ZV9sb29rdXAoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmxvd2k0ICpmbDQsXG4gXHRcdHNrYl9kc3RyZWZfcmVzdG9yZShza2JfaW4sIG9yZWZkc3QpO1xuIFxuIFx0XHQvKlxuLVx0XHQgKiBBdCB0aGlzIHBvaW50LCBmbDRfZGVjLmRhZGRyIHNob3VsZCBOT1QgYmUgbG9jYWwgKHdlXG4tXHRcdCAqIGNoZWNrZWQgZmw0X2RlYy5zYWRkciBhYm92ZSkuIEhvd2V2ZXIsIGEgcmFjZSBjb25kaXRpb25cbi1cdFx0ICogbWF5IG9jY3VyIGlmIHRoZSBhZGRyZXNzIGlzIGFkZGVkIHRvIHRoZSBpbnRlcmZhY2Vcbi1cdFx0ICogY29uY3VycmVudGx5LiBJbiB0aGF0IGNhc2UsIGlwX3JvdXRlX2lucHV0KCkgcmV0dXJucyBhXG4tXHRcdCAqIExPQ0FMIHJvdXRlIHdpdGggZHN0Lm91dHB1dD1pcF9ydF9idWcsIHdoaWNoIG11c3Qgbm90XG4tXHRcdCAqIGJlIHVzZWQgZm9yIG91dHB1dC5cbitcdFx0ICogQXQgdGhpcyBwb2ludCwgZmw0X2RlYy5kYWRkciBzaG91bGQgTk9UIGJlIGxvY2FsICh0aGVcbitcdFx0ICogYWRkcmVzcyBjYW4gYmUgYWRkZWQgdG8gdGhlIGludGVyZmFjZSBjb25jdXJyZW50bHkpIG9yIHVucm91dGFibGUuXG4rXHRcdCAqIEluIHRoYXQgY2FzZSwgaXBfcm91dGVfaW5wdXQoKSByZXR1cm5zIGEgTE9DQUwgb3IgVU5SRUFDSEFCTEVcbitcdFx0ICogcm91dGUgd2l0aCBkc3Qub3V0cHV0PWlwX3J0X2J1Zywgd2hpY2ggbXVzdCBub3QgYmUgdXNlZCBmb3Igb3V0cHV0LlxuIFx0XHQgKi9cbi1cdFx0aWYgKCFlcnIgXHUwMDI2XHUwMDI2IHJ0MiBcdTAwMjZcdTAwMjYgcnQyLVx1MDAzZXJ0X3R5cGUgPT0gUlROX0xPQ0FMKSB7XG4tXHRcdFx0bmV0X3dhcm5fcmF0ZWxpbWl0ZWQoXCJkZXRlY3RlZCBsb2NhbCByb3V0ZSBmb3IgJXBJNCBkdXJpbmcgSUNNUCBzZW5kaW5nLCBzcmMgJXBJNFxcblwiLFxuLVx0XHRcdFx0XHQgICAgIFx1MDAyNmZsNF9kZWMuZGFkZHIsIFx1MDAyNmZsNF9kZWMuc2FkZHIpO1xuK1x0XHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgcnQyIFx1MDAyNlx1MDAyNiAocnQyLVx1MDAzZXJ0X3R5cGUgPT0gUlROX0xPQ0FMIHx8IHJ0Mi1cdTAwM2VydF90eXBlID09IFJUTl9VTlJFQUNIQUJMRSkpIHtcbitcdFx0XHRpZiAocnQyLVx1MDAzZXJ0X3R5cGUgPT0gUlROX0xPQ0FMKVxuK1x0XHRcdFx0bmV0X3dhcm5fcmF0ZWxpbWl0ZWQoXCJkZXRlY3RlZCBsb2NhbCByb3V0ZSBmb3IgJXBJNCBkdXJpbmcgSUNNUCBzZW5kaW5nLCBzcmMgJXBJNFxcblwiLFxuK1x0XHRcdFx0XHRcdCAgICAgXHUwMDI2Zmw0X2RlYy5kYWRkciwgXHUwMDI2Zmw0X2RlYy5zYWRkcik7XG4gXHRcdFx0ZHN0X3JlbGVhc2UoXHUwMDI2cnQyLVx1MDAzZWRzdCk7XG4gXHRcdFx0ZXJyID0gLUVJTlZBTDtcbiBcdFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTY6NTEuMDI5NDA2ODE1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTIwNzA0OTYzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDb3JlIElDTVAgUm91dGluZyBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBgbmV0L2lwdjQvaWNtcC5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgaWNtcF9yb3V0ZV9sb29rdXBgIGZ1bmN0aW9uLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoIOKAkyBhIG5ldyBjaGVjayBpcyBiZWluZyBhZGRlZC4gTGV0J3Mgc2VlLi4uIHRoZSBjb2RlIG5vdyBpbmNsdWRlcyBhIGNoZWNrIGZvciBgcnQyLVx1MDAzZXJ0X3R5cGUgPT0gUlROX1VOUkVBQ0hBQkxFYCBpbiBhZGRpdGlvbiB0byB0aGUgZXhpc3RpbmcgYHJ0Mi1cdTAwM2VydF90eXBlID09IFJUTl9MT0NBTGAgY29uZGl0aW9uLiBJZiBpdCBoaXRzIHRoZSBgUlROX1VOUkVBQ0hBQkxFYCBjYXNlLCB0aGUgZGVzdGluYXRpb24gaXMgcmVsZWFzZWQsIGFuZCBhbiBgZXJyID0gLUVJTlZBTGAgaXMgc2V0LlxuXG5SaWdodCwgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0IHRoZSBjaGFuZ2UgaXMgaW5kZWVkIGluIGBpY21wX3JvdXRlX2xvb2t1cGAgd2l0aGluIGBuZXQvaXB2NC9pY21wLmNgLiBZZXAsIHRoZXJlIGl0IGlzLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGlzIHdvcnRoIGZ1enppbmcuIEhtbSwgaXQncyBjb3JlIElQdjQgSUNNUCByb3V0aW5nIGxvZ2lj4oCmIGFic29sdXRlbHksIHRoaXMgaXMgYSBwcmltZSB0YXJnZXQhIFdlIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBmdW5jdGlvbiBvcGVyYXRlcyBpbiBvcmRlciB0byBpZGVudGlmeSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLlxuXG5UaGUgcHJpbWFyeSBmb2N1cyBoZXJlIGlzLCBvYnZpb3VzbHksIGBpY21wX3JvdXRlX2xvb2t1cGAuIEJ1dCwgd2FpdCwgSSBzZWUgaXQncyBkZWNsYXJlZCBhcyBgc3RhdGljIHN0cnVjdCBydGFibGUgKmljbXBfcm91dGVfbG9va3VwKC4uLilgLiBUaGF0J3MgaW1wb3J0YW50LiBCZWluZyBzdGF0aWMgbWVhbnMgaXQncyBub3QgZGlyZWN0bHkgZXhwb3NlZCBhcyBhIHN5bWJvbCB3ZSBjYW4gY2FsbCBmcm9tIG91dHNpZGUgdGhhdCBmaWxlLiBOb3csIHRoZSBuZXh0IGNydWNpYWwgc3RlcCBpcyBmaWd1cmluZyBvdXQgd2hhdCBjYWxscyB0aGlzIGBpY21wX3JvdXRlX2xvb2t1cGAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGdyYXBoIHRvIHNlZSB3aGVyZSB0aGlzIG5ldyBsb2dpYyBnZXRzIGludm9rZWQuIFRoYXQncyB0aGUga2V5IHRvIGRlc2lnbmluZyBlZmZlY3RpdmUgZnV6emluZyBjYW1wYWlnbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMzEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMDo1Njo1Ni4yMzY0NTg2MThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgzNjEzODQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImljbXBfcm91dGVfbG9va3VwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L2ljbXAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9pY21wLmM9NDgzPXN0YXRpYyBzdHJ1Y3QgbmV0X2RldmljZSAqaWNtcF9nZXRfcm91dGVfbG9va3VwX2RldihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjQvaWNtcC5jLTQ5My1cXG5uZXQvaXB2NC9pY21wLmM6NDk0OnN0YXRpYyBzdHJ1Y3QgcnRhYmxlICppY21wX3JvdXRlX2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmbG93aTQgKmZsNCxcXG5uZXQvaXB2NC9pY21wLmMtNDk1LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBza19idWZmICpza2JfaW4sXFxuLS1cXG5uZXQvaXB2NC9pY21wLmM9ODEzPXZvaWQgX19pY21wX3NlbmQoc3RydWN0IHNrX2J1ZmYgKnNrYl9pbiwgaW50IHR5cGUsIGludCBjb2RlLCBfX2JlMzIgaW5mbyxcXG4tLVxcbm5ldC9pcHY0L2ljbXAuYy05NjgtXFxubmV0L2lwdjQvaWNtcC5jOjk2OTpcXHRydCA9IGljbXBfcm91dGVfbG9va3VwKG5ldCwgXFx1MDAyNmZsNCwgc2tiX2luLCBpcGgsIHNhZGRyLFxcbm5ldC9pcHY0L2ljbXAuYy05NzAtXFx0XFx0XFx0ICAgICAgIGluZXRfZHNmaWVsZF90b19kc2NwKHRvcyksIG1hcmssIHR5cGUsIGNvZGUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEwOjU2OjU2LjkyMDA3NjY2NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMjYxNTU3MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgSUNNUCBTZW5kIFBhdGgqKlxuXG5Pa2F5LCBzbyBgX19pY21wX3NlbmRgIGlzIHRoZSBmdW5jdGlvbiB3ZSdyZSBsb29raW5nIGF0LiBUaGUgY29kZSBzdWdnZXN0cyB0aGF0IGl0IGNhbGxzIGBpY21wX3JvdXRlX2xvb2t1cGAsIHdoaWNoIG1ha2VzIHNlbnNlIGZvciBoYW5kbGluZyByb3V0aW5nIGNvbnNpZGVyYXRpb25zIGJlZm9yZSBzZW5kaW5nIElDTVAgcGFja2V0cy4gSG1tLCBub3cgdGhhdCBJIHRoaW5rIGFib3V0IGl0LCBJJ20gcHJldHR5IHN1cmUgYF9faWNtcF9zZW5kYCBpcyBub3QgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIG1lYW5zIGl0J3MgYXZhaWxhYmxlIGZvciBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsIG9yIGV2ZW4gZXh0ZXJuYWwgbW9kdWxlcyB0byB1c2UuIEhvbGQgb24gYSBzZWNvbmQuLi4gaXMgdGhhdCByaWdodD8gTGV0J3MgdmVyaWZ5IHRoYXQgcXVpY2tseS4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgX19pY21wX3NlbmRgIGlzIGFjdHVhbGx5IGV4cG9ydGVkLiBUaGF0J3MgYSBrZXkgZGV0YWlsIHRvIHVuZGVyc3RhbmQgaG93IGJyb2FkbHkgdGhpcyBmdW5jdGlvbiBjYW4gYmUgbGV2ZXJhZ2VkIGFuZCB3aGF0IGl0cyBwb3RlbnRpYWwgc2VjdXJpdHkgaW1wbGljYXRpb25zIG1pZ2h0IGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTY3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTc6MDAuMjQ2MjM0OTIxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2ODY4NzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9faWNtcF9zZW5kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L2ljbXAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9pY21wLmM9NzM4PWljbXBfZXh0X2FwcGVuZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2JfaW4sIHN0cnVjdCBpY21waGRyICppY21waCxcXG4tLVxcbm5ldC9pcHY0L2ljbXAuYy04MTItXFxubmV0L2lwdjQvaWNtcC5jOjgxMzp2b2lkIF9faWNtcF9zZW5kKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCB0eXBlLCBpbnQgY29kZSwgX19iZTMyIGluZm8sXFxubmV0L2lwdjQvaWNtcC5jLTgxNC1cXHRcXHQgY29uc3Qgc3RydWN0IGluZXRfc2tiX3Bhcm0gKnBhcm0pXFxuLS1cXG5uZXQvaXB2NC9pY21wLmMtMTAyNi19XFxubmV0L2lwdjQvaWNtcC5jOjEwMjc6RVhQT1JUX1NZTUJPTChfX2ljbXBfc2VuZCk7XFxubmV0L2lwdjQvaWNtcC5jLTEwMjgtXFxuLS1cXG5uZXQvaXB2NC9pY21wLmM9MTAzMT12b2lkIGljbXBfbmRvX3NlbmQoc3RydWN0IHNrX2J1ZmYgKnNrYl9pbiwgaW50IHR5cGUsIGludCBjb2RlLCBfX2JlMzIgaW5mbylcXG4tLVxcbm5ldC9pcHY0L2ljbXAuYy0xMDQyLVxcdGlmICghY3QgfHwgIShSRUFEX09OQ0UoY3QtXFx1MDAzZXN0YXR1cykgXFx1MDAyNiBJUFNfTkFUX01BU0spKSB7XFxubmV0L2lwdjQvaWNtcC5jOjEwNDM6XFx0XFx0X19pY21wX3NlbmQoc2tiX2luLCB0eXBlLCBjb2RlLCBpbmZvLCBcXHUwMDI2cGFybSk7XFxubmV0L2lwdjQvaWNtcC5jLTEwNDQtXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L2lwdjQvaWNtcC5jLTEwNTgtXFx0aXBfaGRyKHNrYl9pbiktXFx1MDAzZXNhZGRyID0gY3QtXFx1MDAzZXR1cGxlaGFzaFtkaXJdLnR1cGxlLnNyYy51My5pcDtcXG5uZXQvaXB2NC9pY21wLmM6MTA1OTpcXHRfX2ljbXBfc2VuZChza2JfaW4sIHR5cGUsIGNvZGUsIGluZm8sIFxcdTAwMjZwYXJtKTtcXG5uZXQvaXB2NC9pY21wLmMtMTA2MC1cXHRpcF9oZHIoc2tiX2luKS1cXHUwMDNlc2FkZHIgPSBvcmlnX2lwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMDo1NzowMC4yOTMxMTA0OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MDg5OTc3MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgSUNNUCBTZW5kIFBhdGgqKlxuXG5BbHJpZ2h0LCBgX19pY21wX3NlbmRgIHNlZW1zIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyBJQ01QIHBhY2tldHMgYXJlIGJlaW5nIHNlbnQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoYXQuIEJ1dCBiZWZvcmUgSSBnbyB0b28gZGVlcCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHNjb3BlLiBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGRpcmVjdCBjYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGBpY21wX3NlbmRgIGlzIGp1c3QgYSBtYWNybywgb3IgYW4gaW5saW5lIGZ1bmN0aW9uIHRoYXQgZXhwYW5kcyBpbnRvIHNvbWV0aGluZyBlbHNlLCBvciBpZiBpdCdzIGEgXCJyZWFsXCIgZnVuY3Rpb24gdGhhdCdzIGJlaW5nIGNhbGxlZCBieSBvdGhlciBmdW5jdGlvbnMgaW4gdGhlIG5ldHdvcmtpbmcgc3RhY2suIEdyYXNwaW5nIHRoZSBjYWxsIGhpZXJhcmNoeSBhbmQgaW5saW5pbmcgYmVoYXZpb3IgaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSB3aG9sZSBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjozODU2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTc6MDQuMTAyMTExMDc2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczNjg2MjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImljbXBfc2VuZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL25ldC9pY21wLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvaWNtcC5oPTM3PXN0cnVjdCBuZXQ7XFxuaW5jbHVkZS9uZXQvaWNtcC5oLTM4LVxcbmluY2x1ZGUvbmV0L2ljbXAuaDozOTp2b2lkIF9faWNtcF9zZW5kKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCB0eXBlLCBpbnQgY29kZSwgX19iZTMyIGluZm8sXFxuaW5jbHVkZS9uZXQvaWNtcC5oLTQwLVxcdFxcdCBjb25zdCBzdHJ1Y3QgaW5ldF9za2JfcGFybSAqcGFybSk7XFxuaW5jbHVkZS9uZXQvaWNtcC5oOjQxOnN0YXRpYyBpbmxpbmUgdm9pZCBpY21wX3NlbmQoc3RydWN0IHNrX2J1ZmYgKnNrYl9pbiwgaW50IHR5cGUsIGludCBjb2RlLCBfX2JlMzIgaW5mbylcXG5pbmNsdWRlL25ldC9pY21wLmgtNDIte1xcbmluY2x1ZGUvbmV0L2ljbXAuaDo0MzpcXHRfX2ljbXBfc2VuZChza2JfaW4sIHR5cGUsIGNvZGUsIGluZm8sIElQQ0Ioc2tiX2luKSk7XFxuaW5jbHVkZS9uZXQvaWNtcC5oLTQ0LX1cXG4tLVxcbmluY2x1ZGUvbmV0L2ljbXAuaD00OT1zdGF0aWMgaW5saW5lIHZvaWQgaWNtcF9uZG9fc2VuZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgdHlwZSwgaW50IGNvZGUsIF9fYmUzMiBpbmZvKVxcbi0tXFxuaW5jbHVkZS9uZXQvaWNtcC5oLTUzLVxcdG1lbXNldChcXHUwMDI2cGFybSwgMCwgc2l6ZW9mKHBhcm0pKTtcXG5pbmNsdWRlL25ldC9pY21wLmg6NTQ6XFx0X19pY21wX3NlbmQoc2tiX2luLCB0eXBlLCBjb2RlLCBpbmZvLCBcXHUwMDI2cGFybSk7XFxuaW5jbHVkZS9uZXQvaWNtcC5oLTU1LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTc6MDQuMTc1ODAxMzA1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUxMjI1ODMxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC5cblxuKipBbmFseXppbmcgSUNNUCBTZW5kIEZ1bmN0aW9ucyoqXG5cbkFscmlnaHQsIHNvIGBfX2ljbXBfc2VuZGAgaXMgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQsIHRoYXQgbXVjaCBJJ20gZmFpcmx5IGNlcnRhaW4gb2YuIE5vdywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLiBXaGF0J3MgdGhlIGRlYWwgd2l0aCBgaWNtcF9uZG9fc2VuZGA/IEhtbW0sIGlzIHRoYXQgdGhlIG9uZSBkZWZpbmVkIGluIGBuZXQvaXB2NC9pY21wLmNgPyBBaCwgcmlnaHQsIHRoYXQncyB3aGVyZSBJIG5lZWQgdG8gbG9vay4gQ29ycmVjdCwgYGljbXBfbmRvX3NlbmRgIGlzIGluZGVlZCB3aXRoaW4gYG5ldC9pcHY0L2ljbXAuY2AuIEdvdCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQwMiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEwOjU3OjA4LjY4ODA2MTkyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDI1MDE2MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWNtcF9uZG9fc2VuZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9pY21wLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvaWNtcC5jPTEwMjc9RVhQT1JUX1NZTUJPTChfX2ljbXBfc2VuZCk7XFxuLS1cXG5uZXQvaXB2NC9pY21wLmMtMTAzMC0jaW5jbHVkZSBcXHUwMDNjbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2suaFxcdTAwM2VcXG5uZXQvaXB2NC9pY21wLmM6MTAzMTp2b2lkIGljbXBfbmRvX3NlbmQoc3RydWN0IHNrX2J1ZmYgKnNrYl9pbiwgaW50IHR5cGUsIGludCBjb2RlLCBfX2JlMzIgaW5mbylcXG5uZXQvaXB2NC9pY21wLmMtMTAzMi17XFxuLS1cXG5uZXQvaXB2NC9pY21wLmMtMTA2My19XFxubmV0L2lwdjQvaWNtcC5jOjEwNjQ6RVhQT1JUX1NZTUJPTChpY21wX25kb19zZW5kKTtcXG5uZXQvaXB2NC9pY21wLmMtMTA2NS0jZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTc6MDguNzkwNTY4MzA4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4Mjc0Mjk3MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJUHY0IFJvdXRpbmcgQnVnIEZpeCoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgbmV3IHBhdGNoIHRvIHJldmlldy4gTXkgaW1tZWRpYXRlIGZvY3VzIHN5bWJvbHMgYXJlIGdvaW5nIHRvIGJlIGBfX2ljbXBfc2VuZGAgYW5kIGBpY21wX25kb19zZW5kYC4gVGhvc2UgYXJlIHVzdWFsbHkgZ29vZCBpbmRpY2F0b3JzIG9mIHdoYXQncyBnb2luZyBvbiB3aXRoIElDTVAgaGFuZGxpbmcsIHdoaWNoIGlzIHJlbGV2YW50IGhlcmUuIFRoZSBwYXRjaCBkZXNjcmlwdGlvbiBtZW50aW9ucyBhIGJ1ZyBpbiBgaXBfcm91dGVfaW5wdXQoKWAgcmV0dXJuaW5nIGFuIGBVTlJFQUNIQUJMRWAgcm91dGUgd2hlcmUgdGhlIGRlc3RpbmF0aW9uJ3MgYG91dHB1dGAgaXMgaW5jb3JyZWN0bHkgc2V0IHRvIGBpcF9ydF9idWdgLiBUaGF0IHNvdW5kcyBsaWtlIGEgY2xhc3NpYyByb3V0aW5nIHByb2JsZW0sIGFuZCB0aGUgZWZmZWN0IGlzIHNlcmlvdXM6IGEgY3Jhc2ggb3Igd2FybmluZyB3aGVuIHRoZSBmYXVsdHkgcm91dGUgaXMgYWN0dWFsbHkgdXNlZC5cblxuVGhpcyBpcyBhIHByZXR0eSBmdW5kYW1lbnRhbCBjaGFuZ2U7IGl0IHRvdWNoZXMgY29yZSBJUHY0IGxvZ2ljLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGltcGxpY2F0aW9ucy4gSXQncyBub3QgY2xlYXIgZnJvbSB0aGUgZGVzY3JpcHRpb24gd2hhdCBjb25maWcgb3B0aW9ucyBhcmUgaW52b2x2ZWQuIGBDT05GSUdfSU5FVGAgaXMgdGhlIG9idmlvdXMgb25lLCBvciBtYXliZSBldmVuIGBDT05GSUdfSVBfTVVMVElDQVNUYD8gR290dGEgY2hlY2sgdGhlIGBuZXQvaXB2NC9LY29uZmlnYCBmaWxlIHRvIGJlIHN1cmUuIEl0J3MgcHJvYmFibHkganVzdCBzdGFuZGFyZCBJUHY0IHN0dWZmLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbid0IG1pc3MgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MTMsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTc6MTMuNjE4MDAxMjA3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDEwMjMwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSU5FVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9MzMwPWNvbmZpZyBORVRfRk9VX0lQX1RVTk5FTFNcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzM4LVxcbm5ldC9pcHY0L0tjb25maWc6MzM5OmNvbmZpZyBJTkVUX0FIXFxubmV0L2lwdjQvS2NvbmZpZy0zNDAtXFx0dHJpc3RhdGUgXFxcIklQOiBBSCB0cmFuc2Zvcm1hdGlvblxcXCJcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzUzLVxcbm5ldC9pcHY0L0tjb25maWc6MzU0OmNvbmZpZyBJTkVUX0VTUFxcbm5ldC9pcHY0L0tjb25maWctMzU1LVxcdHRyaXN0YXRlIFxcXCJJUDogRVNQIHRyYW5zZm9ybWF0aW9uXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zNjgtXFxubmV0L2lwdjQvS2NvbmZpZzozNjk6Y29uZmlnIElORVRfRVNQX09GRkxPQURcXG5uZXQvaXB2NC9LY29uZmlnLTM3MC1cXHR0cmlzdGF0ZSBcXFwiSVA6IEVTUCB0cmFuc2Zvcm1hdGlvbiBvZmZsb2FkXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zODEtXFxubmV0L2lwdjQvS2NvbmZpZzozODI6Y29uZmlnIElORVRfRVNQSU5UQ1BcXG5uZXQvaXB2NC9LY29uZmlnLTM4My1cXHRib29sIFxcXCJJUDogRVNQIGluIFRDUCBlbmNhcHN1bGF0aW9uIChSRkMgODIyOSlcXFwiXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTM5My1cXG5uZXQvaXB2NC9LY29uZmlnOjM5NDpjb25maWcgSU5FVF9JUENPTVBcXG5uZXQvaXB2NC9LY29uZmlnLTM5NS1cXHR0cmlzdGF0ZSBcXFwiSVA6IElQQ29tcCB0cmFuc2Zvcm1hdGlvblxcXCJcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctNDAzLVxcbm5ldC9pcHY0L0tjb25maWc6NDA0OmNvbmZpZyBJTkVUX1RBQkxFX1BFUlRVUkJfT1JERVJcXG5uZXQvaXB2NC9LY29uZmlnLTQwNS1cXHRpbnQgXFxcIklORVQ6IFNvdXJjZSBwb3J0IHBlcnR1cmJhdGlvbiB0YWJsZSBzaXplIChhcyBwb3dlciBvZiAyKVxcXCIgaWYgRVhQRVJUXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTQxMy1cXG5uZXQvaXB2NC9LY29uZmlnOjQxNDpjb25maWcgSU5FVF9YRlJNX1RVTk5FTFxcbm5ldC9pcHY0L0tjb25maWctNDE1LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTQxOC1cXG5uZXQvaXB2NC9LY29uZmlnOjQxOTpjb25maWcgSU5FVF9UVU5ORUxcXG5uZXQvaXB2NC9LY29uZmlnLTQyMC1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy00MjItXFxubmV0L2lwdjQvS2NvbmZpZzo0MjM6Y29uZmlnIElORVRfRElBR1xcbm5ldC9pcHY0L0tjb25maWctNDI0LVxcdHRyaXN0YXRlIFxcXCJJTkVUOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTQzNC1cXG5uZXQvaXB2NC9LY29uZmlnOjQzNTpjb25maWcgSU5FVF9UQ1BfRElBR1xcbm5ldC9pcHY0L0tjb25maWctNDM2LVxcdGRlcGVuZHMgb24gSU5FVF9ESUFHXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTQzOC1cXG5uZXQvaXB2NC9LY29uZmlnOjQzOTpjb25maWcgSU5FVF9VRFBfRElBR1xcbm5ldC9pcHY0L0tjb25maWctNDQwLVxcdHRyaXN0YXRlIFxcXCJVRFA6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctNDQ2LVxcbm5ldC9pcHY0L0tjb25maWc6NDQ3OmNvbmZpZyBJTkVUX1JBV19ESUFHXFxubmV0L2lwdjQvS2NvbmZpZy00NDgtXFx0dHJpc3RhdGUgXFxcIlJBVzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy00NTQtXFxubmV0L2lwdjQvS2NvbmZpZzo0NTU6Y29uZmlnIElORVRfRElBR19ERVNUUk9ZXFxubmV0L2lwdjQvS2NvbmZpZy00NTYtXFx0Ym9vbCBcXFwiSU5FVDogYWxsb3cgcHJpdmlsZWdlZCBwcm9jZXNzIHRvIGFkbWluaXN0cmF0aXZlbHkgY2xvc2Ugc29ja2V0c1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTc6MTMuNjgyMTA5MTQ2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk4OTIzNjQ5NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKktjb25maWcgTG9jYXRpb24gb2YgSU5FVCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYElORVRgIGlzIGRlZmluZWQgd2l0aGluIGBuZXQvS2NvbmZpZ2AuIFRoYXQncyBub3Qgc3VycHJpc2luZywgcmVhbGx5LiBJdCBjb25maXJtcyBteSB1bmRlcnN0YW5kaW5nIHRoYXQgdGhlIGNvcmUgbmV0d29yay1yZWxhdGVkIGNvbmZpZ3VyYXRpb25zLCBpbmNsdWRpbmcgdGhlIGJyb2FkZXIgSW50ZXJuZXQgUHJvdG9jb2wgc3VpdGUsIGFyZSBtYW5hZ2VkIHdpdGhpbiB0aGF0IHNlY3Rpb24gb2YgdGhlIEtjb25maWcgaGllcmFyY2h5LiBJdCdzIGEgc3RhbmRhcmQgYW5kIGxvZ2ljYWwgcGxhY2UgdG8gZmluZCBpdCwgZ2l2ZW4gdGhlIHNjb3BlIGFuZCBkZXBlbmRlbmNpZXMgaW52b2x2ZWQgd2l0aCBuZXR3b3JrIHByb3RvY29sIHN1cHBvcnQuIFRoaXMgYWxzbyB0ZWxscyBtZSB0byBsb29rIHRoZXJlIGZvciByZWxhdGVkIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBpZiBJIG5lZWQgdG8gYWRqdXN0IG9yIGV4dGVuZCBuZXR3b3JrIHNldHRpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDA1LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTc6MjMuNTc0NDc2MTQxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODczMjI3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSU5FVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvS2NvbmZpZz05OT1jb25maWcgTkVUX0hBTkRTSEFLRV9LVU5JVF9URVNUXFxuLS1cXG5uZXQvS2NvbmZpZy0xMTMtXFxubmV0L0tjb25maWc6MTE0OmNvbmZpZyBJTkVUXFxubmV0L0tjb25maWctMTE1LVxcdGJvb2wgXFxcIlRDUC9JUCBuZXR3b3JraW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMDo1NzoyMy42MzMyMTM3M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjM1NzE0ODM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYElORVRgIENvbmZpZ3VyYXRpb24gZm9yIElDTVAgTW9kaWZpY2F0aW9uKipcblxuT2theSwgc28gdGhlIGBJTkVUYCBjb25maWd1cmF0aW9uIGlzIHRoZSBzdGFydGluZyBwb2ludCBoZXJlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIHBhdGNoIG5lY2Vzc2l0YXRlcyBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBhZGp1c3RtZW50cy4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSB0b3VjaGVzIGBuZXQvaXB2NC9pY21wLmNgLCBhbmQgSSBrbm93IHRoYXQgdGhpcyBmaWxlIGlzIG9ubHkgY29tcGlsZWQgd2hlbiBgQ09ORklHX0lORVRgIGlzIGVuYWJsZWQuIFRoYXQncyBhIGdvb2Qgc2lnbiwgYnV0IEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGVyZSBhcmVuJ3QgYW55IGRlcGVuZGVuY2llcyBvciBoaWRkZW4gZmxhZ3MuIFRpbWUgdG8gZGlnIGludG8gYG5ldC9pcHY0L01ha2VmaWxlYCBhbmQgc2VlIGlmIGFueXRoaW5nIGVsc2UgaXMgcmVsZXZhbnQgaW4gdGhhdCBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjQ1LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTc6MjYuODY4OTMzODA2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzUwMTk3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpY21wLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcXFxcbi0tXFxubmV0L2lwdjQvTWFrZWZpbGUtMTMtXFx0ICAgICB0Y3Bfb2ZmbG9hZC5vIHRjcF9wbGIubyBkYXRhZ3JhbS5vIHJhdy5vIHVkcC5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZToxNDpcXHQgICAgIHVkcF9vZmZsb2FkLm8gYXJwLm8gaWNtcC5vIGRldmluZXQubyBhZl9pbmV0Lm8gaWdtcC5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xNS1cXHQgICAgIGZpYl9mcm9udGVuZC5vIGZpYl9zZW1hbnRpY3MubyBmaWJfdHJpZS5vIGZpYl9ub3RpZmllci5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTc6MjYuOTY2NDQxNTA0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MTU5OTg3MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgSUNNUCBSb3V0aW5nIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBJQ01QIGltcGxlbWVudGF0aW9uLiBNeSBpbml0aWFsIHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGlzIGNvZGUgaXMgdW5jb25kaXRpb25hbGx5IGNvbXBpbGVkIGFzIHBhcnQgb2YgdGhlIGBuZXQvaXB2NC9gIG1vZHVsZS4gVGhhdCdzIGEga2V5IHN0YXJ0aW5nIHBvaW50LiBBbmQgb2YgY291cnNlLCBgbmV0L2lwdjQvYCBpdHNlbGYgaXMgb25seSBidWlsdCB3aGVuIGBDT05GSUdfSU5FVGAgaXMgZW5hYmxlZC4gVGhlcmVmb3JlLCBmb3IgdGhpcyBzcGVjaWZpYyBwaWVjZSB0byBiZSBpbmNsdWRlZCwgYENPTkZJR19JTkVUYCBpcyB0aGUgb25seSBjb25maWd1cmF0aW9uIG9wdGlvbiBJIG5lZWQgdG8gYmUgY29uY2VybmVkIHdpdGguIEdvb2QsIHRoYXQgc2ltcGxpZmllcyB0aGluZ3MuXG5cbk5vdywgbXkgZm9jdXMgbmFycm93cyBkb3duIHRvIHRoZSBmdW5jdGlvbnMgYF9faWNtcF9zZW5kYCBhbmQgYGljbXBfbmRvX3NlbmRgLiBUaGVzZSBhcmUgdGhlIHNwZWNpZmljIHN5bWJvbHMgdGhhdCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZW0gYW5kIGBpY21wX3JvdXRlX2xvb2t1cGAuXG5cbkxldCdzIGRvdWJsZS1jaGVjayBob3cgYGljbXBfcm91dGVfbG9va3VwYCBnZXRzIGNhbGxlZC4gRnJvbSB3aGF0IEkgcmVjYWxsLCBgX19pY21wX3NlbmRgIGlzICphKiBjYWxsZXIgb2YgYGljbXBfcm91dGVfbG9va3VwYC4gQnV0IGlzIGl0IHRoZSAqb25seSogb25lPyBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHRoYXQgSSdtIG5vdCBtaXNzaW5nIGFueSBvdGhlciBwb3RlbnRpYWwgZW50cnkgcG9pbnRzIGludG8gdGhlIHJvdXRpbmcgbG9va3VwIGZ1bmN0aW9uLiBUaGF0J3MgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIHRvIG5haWwgZG93biBiZWZvcmUgSSBtb3ZlIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjEyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEwOjU3OjMzLjc4MjQ0MjQyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY4NTE0NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWNtcF9yb3V0ZV9sb29rdXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvaWNtcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L2ljbXAuYz00ODM9c3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlICppY21wX2dldF9yb3V0ZV9sb29rdXBfZGV2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC9pY21wLmMtNDkzLVxcbm5ldC9pcHY0L2ljbXAuYzo0OTQ6c3RhdGljIHN0cnVjdCBydGFibGUgKmljbXBfcm91dGVfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZsb3dpNCAqZmw0LFxcbm5ldC9pcHY0L2ljbXAuYy00OTUtXFx0XFx0XFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYl9pbixcXG4tLVxcbm5ldC9pcHY0L2ljbXAuYz04MTM9dm9pZCBfX2ljbXBfc2VuZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgdHlwZSwgaW50IGNvZGUsIF9fYmUzMiBpbmZvLFxcbi0tXFxubmV0L2lwdjQvaWNtcC5jLTk2OC1cXG5uZXQvaXB2NC9pY21wLmM6OTY5OlxcdHJ0ID0gaWNtcF9yb3V0ZV9sb29rdXAobmV0LCBcXHUwMDI2Zmw0LCBza2JfaW4sIGlwaCwgc2FkZHIsXFxubmV0L2lwdjQvaWNtcC5jLTk3MC1cXHRcXHRcXHQgICAgICAgaW5ldF9kc2ZpZWxkX3RvX2RzY3AodG9zKSwgbWFyaywgdHlwZSwgY29kZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTc6MzMuODg5Mjk5NDg4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3MjM0NDg2MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIElDTVAgUm91dGluZyBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgcGlubmVkIGRvd24gdGhlIGtleSBlbnRyeSBwb2ludHM6IGBfX2ljbXBfc2VuZGAgYW5kIGBpY21wX25kb19zZW5kYC4gSXQncyBwcmV0dHkgY2xlYXIgdGhvc2UgYXJlIG15IGZvY3VzIHN5bWJvbHMgYmVjYXVzZSBgX19pY21wX3NlbmRgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQgZGlyZWN0bHkgY2FsbHMgaXQuIEFuZCBgaWNtcF9uZG9fc2VuZGAgYWxzbyBjYWxscyBpdCwgc28gdGhvc2UgYXJlIG15IGhvb2tzLlxuXG5Ob3csIHJldmlzaXRpbmcgdGhlIHBhdGNoIGl0c2VsZiwgSSBzZWUgaXQncyBhIGZ1bmN0aW9uYWwgY29ycmVjdGlvbi4gVGhlIG9yaWdpbmFsIGNvZGUgaGFkIGEgZmxhdyDigJMgaXQgd2Fzbid0IGNvcnJlY3RseSBoYW5kbGluZyBgUlROX1VOUkVBQ0hBQkxFYCByb3V0ZXMgaW4gSUNNUCBvdXRwdXQsIGFuZCB0aGF0IHdhcyBsZWFkaW5nIHRvIHBvdGVudGlhbGx5IGludmFsaWQgcm91dGVzIGJlaW5nIHVzZWQuIFRoaXMgY291bGQgdHJpZ2dlciBgaXBfcnRfYnVnYCwgd2hpY2ggd2UgKmRvbid0KiB3YW50LlxuXG5UaGUgcGF0Y2gncyBtb2RpZmljYXRpb24gbm93IGNvcnJlY3RseSBjaGVja3MgZm9yICpib3RoKiBgUlROX0xPQ0FMYCBhbmQgYFJUTl9VTlJFQUNIQUJMRWAgcm91dGUgdHlwZXMuIFRoZSBvcmlnaW5hbCBidWcgb25seSBjb25zaWRlcmVkIExPQ0FMIHJvdXRlcy4gVGhpcyBpcyBjcnVjaWFsIGZvciByb2J1c3Qgcm91dGluZyBiZWhhdmlvciwgYW5kIHRoaXMgKmRlZmluaXRlbHkqIHdhcnJhbnRzIGZ1enppbmcuIEl0J3MgYSBmdW5kYW1lbnRhbCBjaGFuZ2UgaW4gaG93IHRoZSBJUHY0IG5ldHdvcmtpbmcgc3RhY2sgKnNob3VsZCogaGFuZGxlIGNlcnRhaW4gcm91dGluZyBlZGdlIGNhc2VzLiBXZSdyZSBwcmV2ZW50aW5nIGEgZnVuY3Rpb25hbCBlcnJvciB0aGF0IGNvdWxkIGNhdXNlIHN5c3RlbSBpbnN0YWJpbGl0eS4gSSBzZWUgdmFsdWUgaW4gZnV6emluZyB0aGUgZGlmZmVyZW5jZSB0byBjaGVjayBmb3IgcmVncmVzc2lvbnMuXG5cbkdpdmVuIGl0cyBjb3JlIG5hdHVyZSwgSSdsbCBuZWVkIGBJTkVUYCBlbmFibGVkIGZvciB0aGUgZnV6emluZy5cblxuQWxyaWdodCwgSSdtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI2OCwiT3V0cHV0VG9rZW5zIjoxMDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTc6NDEuNjEyNzUxNTc5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg3MDA2MDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19pY21wX3NlbmRcIixcbiAgICBcImljbXBfbmRvX3NlbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSUNNUCByb3V0aW5nIGxvZ2ljIHRvIHByb3Blcmx5IGhhbmRsZSBSVE5fVU5SRUFDSEFCTEUgcm91dGVzIHJldHVybmVkIGJ5IGlwX3JvdXRlX2lucHV0KCksIHByZXZlbnRpbmcgdGhlIHVzZSBvZiBpbnZhbGlkIHJvdXRlcyB0aGF0IGNvdWxkIHRyaWdnZXIgaXBfcnRfYnVnLiBUaGlzIGlzIGEgY29yZSBJUHY0IG5ldHdvcmtpbmcgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2ljbXBfc2VuZFwiLFxuICAgIFwiaWNtcF9uZG9fc2VuZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJQ01QIHJvdXRpbmcgbG9naWMgdG8gcHJvcGVybHkgaGFuZGxlIFJUTl9VTlJFQUNIQUJMRSByb3V0ZXMgcmV0dXJuZWQgYnkgaXBfcm91dGVfaW5wdXQoKSwgcHJldmVudGluZyB0aGUgdXNlIG9mIGludmFsaWQgcm91dGVzIHRoYXQgY291bGQgdHJpZ2dlciBpcF9ydF9idWcuIFRoaXMgaXMgYSBjb3JlIElQdjQgbmV0d29ya2luZyBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEwOjU3OjQxLjc5OTc2NDI5NloiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njk2OTk1ODY2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEwOjU3OjQxLjgwMDI1MDI4NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2OTY5NDY3NzIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyByb3V0aW5nIGxvZ2ljIGluIGBpY21wX3JvdXRlX2xvb2t1cGAgdG8gcHJldmVudCB0aGUgdXNlIG9mIGBSVE5fVU5SRUFDSEFCTEVgIHJvdXRlcyBmb3IgSUNNUCBvdXRwdXQsIHdoaWNoIGNvdWxkIGxlYWQgdG8gY2FsbGluZyBgaXBfcnRfYnVnYC4gVGhpcyBpcyBhIGxvZ2ljIGJ1ZyBmaXggdGhhdCBwcmV2ZW50cyBpbmNvcnJlY3Qgcm91dGluZyBiZWhhdmlvciBvciBwb3RlbnRpYWwgY3Jhc2hlcyAoZS5nLiwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIG9yIEJVRygpIGluIGBpcF9ydF9idWdgKS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmIzMGVlNjhkMGE2MjE2NjE0MDJmMDdmZjA2MTdhNDkxYzI4MjcwOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDI1IDEwOjU2OjQ3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaWNtcC5jIGIvbmV0L2lwdjQvaWNtcC5jXG5pbmRleCAwY2FlZGZjN2NhOTJmLi43MzUwZjAzODBiZTE3IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaWNtcC5jXG4rKysgYi9uZXQvaXB2NC9pY21wLmNcbkBAIC01ODEsMTYgKzU4MSwxNSBAQCBzdGF0aWMgc3RydWN0IHJ0YWJsZSAqaWNtcF9yb3V0ZV9sb29rdXAoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmxvd2k0ICpmbDQsXG4gXHRcdHNrYl9kc3RyZWZfcmVzdG9yZShza2JfaW4sIG9yZWZkc3QpO1xuIFxuIFx0XHQvKlxuLVx0XHQgKiBBdCB0aGlzIHBvaW50LCBmbDRfZGVjLmRhZGRyIHNob3VsZCBOT1QgYmUgbG9jYWwgKHdlXG4tXHRcdCAqIGNoZWNrZWQgZmw0X2RlYy5zYWRkciBhYm92ZSkuIEhvd2V2ZXIsIGEgcmFjZSBjb25kaXRpb25cbi1cdFx0ICogbWF5IG9jY3VyIGlmIHRoZSBhZGRyZXNzIGlzIGFkZGVkIHRvIHRoZSBpbnRlcmZhY2Vcbi1cdFx0ICogY29uY3VycmVudGx5LiBJbiB0aGF0IGNhc2UsIGlwX3JvdXRlX2lucHV0KCkgcmV0dXJucyBhXG4tXHRcdCAqIExPQ0FMIHJvdXRlIHdpdGggZHN0Lm91dHB1dD1pcF9ydF9idWcsIHdoaWNoIG11c3Qgbm90XG4tXHRcdCAqIGJlIHVzZWQgZm9yIG91dHB1dC5cbitcdFx0ICogQXQgdGhpcyBwb2ludCwgZmw0X2RlYy5kYWRkciBzaG91bGQgTk9UIGJlIGxvY2FsICh0aGVcbitcdFx0ICogYWRkcmVzcyBjYW4gYmUgYWRkZWQgdG8gdGhlIGludGVyZmFjZSBjb25jdXJyZW50bHkpIG9yIHVucm91dGFibGUuXG4rXHRcdCAqIEluIHRoYXQgY2FzZSwgaXBfcm91dGVfaW5wdXQoKSByZXR1cm5zIGEgTE9DQUwgb3IgVU5SRUFDSEFCTEVcbitcdFx0ICogcm91dGUgd2l0aCBkc3Qub3V0cHV0PWlwX3J0X2J1Zywgd2hpY2ggbXVzdCBub3QgYmUgdXNlZCBmb3Igb3V0cHV0LlxuIFx0XHQgKi9cbi1cdFx0aWYgKCFlcnIgXHUwMDI2XHUwMDI2IHJ0MiBcdTAwMjZcdTAwMjYgcnQyLVx1MDAzZXJ0X3R5cGUgPT0gUlROX0xPQ0FMKSB7XG4tXHRcdFx0bmV0X3dhcm5fcmF0ZWxpbWl0ZWQoXCJkZXRlY3RlZCBsb2NhbCByb3V0ZSBmb3IgJXBJNCBkdXJpbmcgSUNNUCBzZW5kaW5nLCBzcmMgJXBJNFxcblwiLFxuLVx0XHRcdFx0XHQgICAgIFx1MDAyNmZsNF9kZWMuZGFkZHIsIFx1MDAyNmZsNF9kZWMuc2FkZHIpO1xuK1x0XHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgcnQyIFx1MDAyNlx1MDAyNiAocnQyLVx1MDAzZXJ0X3R5cGUgPT0gUlROX0xPQ0FMIHx8IHJ0Mi1cdTAwM2VydF90eXBlID09IFJUTl9VTlJFQUNIQUJMRSkpIHtcbitcdFx0XHRpZiAocnQyLVx1MDAzZXJ0X3R5cGUgPT0gUlROX0xPQ0FMKVxuK1x0XHRcdFx0bmV0X3dhcm5fcmF0ZWxpbWl0ZWQoXCJkZXRlY3RlZCBsb2NhbCByb3V0ZSBmb3IgJXBJNCBkdXJpbmcgSUNNUCBzZW5kaW5nLCBzcmMgJXBJNFxcblwiLFxuK1x0XHRcdFx0XHRcdCAgICAgXHUwMDI2Zmw0X2RlYy5kYWRkciwgXHUwMDI2Zmw0X2RlYy5zYWRkcik7XG4gXHRcdFx0ZHN0X3JlbGVhc2UoXHUwMDI2cnQyLVx1MDAzZWRzdCk7XG4gXHRcdFx0ZXJyID0gLUVJTlZBTDtcbiBcdFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTc6NDEuODAwMjUxMTY2WiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5Njk0NDExNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSUNNUCBSb3V0ZSBMb29rdXAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHJldmlld2VkIHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIGBpY21wX3JvdXRlX2xvb2t1cGAgaW4gYG5ldC9pcHY0L2ljbXAuY2AuIEl0J3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGZpeC4gVGhleSdyZSBjaGFuZ2luZyBhIGNvbmRpdGlvbmFsIHN0YXRlbWVudDogdGhlIG9yaWdpbmFsIGNvZGUgY2hlY2tlZCBmb3IgYFJUTl9MT0NBTGAgcm91dGVzLCBhbmQgbm93IGl0IGFsc28gaW5jbHVkZXMgYFJUTl9VTlJFQUNIQUJMRWAuIFNlZW1zIGxpa2UgYSBjbGVhciBsb2dpYyBidWcgZml4IOKAkyBwcmV2ZW50aW5nIHRoZSB1c2Ugb2YgYFJUTl9VTlJFQUNIQUJMRWAgcm91dGVzIGZvciBJQ01QIG91dHB1dCwgd2hpY2ggY291bGQgbGVhZCB0byBwcm9ibGVtcywgcG90ZW50aWFsbHkgd2l0aCB0aGUgYGRzdC5vdXRwdXQ9aXBfcnRfYnVnYCBzaXR1YXRpb24uXG5cbk15IGltbWVkaWF0ZSBjb25jZXJuLCBhcyBhbHdheXMsIGlzIG1lbW9yeSBzYWZldHkuIEhvd2V2ZXIsIGFmdGVyIHRha2luZyBhIGNsb3NlIGxvb2ssIEknbSBjb25maWRlbnQgdGhhdCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiBUaGUgdmFyaWFibGVzIGludm9sdmVkLCBzcGVjaWZpY2FsbHkgYHJ0MmAgKGEgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcnRhYmxlYCkgYW5kIGBydDItXHUwMDNlcnRfdHlwZWAsIGFyZSBmdWxseSBpbml0aWFsaXplZCBieSBgaXBfcm91dGVfaW5wdXQoKWAuIFRoZSBwYXRjaCAqb25seSogYWRkcyBhIGNoZWNrIGZvciBgUlROX1VOUkVBQ0hBQkxFYDsgaXQncyBub3QgaW50cm9kdWNpbmcgYW55IG5ldyBtZW1vcnkgYWNjZXNzIHBhdHRlcm5zLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBiZWluZyByZWFkIG9yIGxlYWtlZCBhcyBhIHJlc3VsdCBvZiB0aGlzIGNoYW5nZS5cblxuSSdtIGNvbWZvcnRhYmxlIHNldHRpbmcgYE5lZWRzS01TQU49ZmFsc2VgIGZvciB0aGlzLiBKdXN0IHRvIGRvdWJsZS1jaGVjaywgSSB3ZW50IHRocm91Z2ggaXQgYWdhaW4sIGFuZCBjb25maXJtZWQgdGhhdCB0aGUgYWRkZWQgY2hlY2sgZG9lc24ndCBjcmVhdGUgYW55IG5ldyBvcHBvcnR1bml0aWVzIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSB0byBiZSByZWFkLiBJIGNhbiBjb25maXJtLCBiYXNlZCBvbiBteSBhbmFseXNpcywgdGhhdCBpdCBpcyBzYWZlLlxuXG5JJ2xsIGNhbGwgYHNldC1yZXN1bHRzYCBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMjgsIk91dHB1dFRva2VucyI6MTM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTc6NDguNzY5Njk1NjM5WiIsIlNlcSI6MjQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAyMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyByb3V0aW5nIGxvZ2ljIGluIGBpY21wX3JvdXRlX2xvb2t1cGAgdG8gcHJldmVudCB0aGUgdXNlIG9mIGBSVE5fVU5SRUFDSEFCTEVgIHJvdXRlcyBmb3IgSUNNUCBvdXRwdXQsIHdoaWNoIGNvdWxkIGxlYWQgdG8gY2FsbGluZyBgaXBfcnRfYnVnYC4gVGhpcyBpcyBhIGxvZ2ljIGJ1ZyBmaXggdGhhdCBwcmV2ZW50cyBpbmNvcnJlY3Qgcm91dGluZyBiZWhhdmlvciBvciBwb3RlbnRpYWwgY3Jhc2hlcyAoZS5nLiwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIG9yIEJVRygpIGluIGBpcF9ydF9idWdgKS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcm91dGluZyBsb2dpYyBpbiBgaWNtcF9yb3V0ZV9sb29rdXBgIHRvIHByZXZlbnQgdGhlIHVzZSBvZiBgUlROX1VOUkVBQ0hBQkxFYCByb3V0ZXMgZm9yIElDTVAgb3V0cHV0LCB3aGljaCBjb3VsZCBsZWFkIHRvIGNhbGxpbmcgYGlwX3J0X2J1Z2AuIFRoaXMgaXMgYSBsb2dpYyBidWcgZml4IHRoYXQgcHJldmVudHMgaW5jb3JyZWN0IHJvdXRpbmcgYmVoYXZpb3Igb3IgcG90ZW50aWFsIGNyYXNoZXMgKGUuZy4sIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBvciBCVUcoKSBpbiBgaXBfcnRfYnVnYCkuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmb4zv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-25 10:12:28 +0000 UTC FinishedAt: 2026-08-25 10:57:50 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "b70b7b71561f2be1183b6046964d950c2b203bfc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "b70b7b71561f2be1183b6046964d950c2b203bfc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET" ], "series_id": "fc2c3ccd-2324-4128-999a-ee7998ab86b6" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__icmp_send", "icmp_ndo_send" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI1IDEwOjU2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2ljbXBfc2VuZCYjMzQ7LAogICAgJiMzNDtpY21wX25kb19zZW5kJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcm91dGluZyBsb2dpYyBpbiBgaWNtcF9yb3V0ZV9sb29rdXBgIHRvIHByZXZlbnQgdGhlIHVzZSBvZiBgUlROX1VOUkVBQ0hBQkxFYCByb3V0ZXMgZm9yIElDTVAgb3V0cHV0LCB3aGljaCBjb3VsZCBsZWFkIHRvIGNhbGxpbmcgYGlwX3J0X2J1Z2AuIFRoaXMgaXMgYSBsb2dpYyBidWcgZml4IHRoYXQgcHJldmVudHMgaW5jb3JyZWN0IHJvdXRpbmcgYmVoYXZpb3Igb3IgcG90ZW50aWFsIGNyYXNoZXMgKGUuZy4sIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBvciBCVUcoKSBpbiBgaXBfcnRfYnVnYCkuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSUNNUCByb3V0aW5nIGxvZ2ljIHRvIHByb3Blcmx5IGhhbmRsZSBSVE5fVU5SRUFDSEFCTEUgcm91dGVzIHJldHVybmVkIGJ5IGlwX3JvdXRlX2lucHV0KCksIHByZXZlbnRpbmcgdGhlIHVzZSBvZiBpbnZhbGlkIHJvdXRlcyB0aGF0IGNvdWxkIHRyaWdnZXIgaXBfcnRfYnVnLiBUaGlzIGlzIGEgY29yZSBJUHY0IG5ldHdvcmtpbmcgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEwOjU2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMmIzMGVlNjhkMGE2MjE2NjE0MDJmMDdmZjA2MTdhNDkxYzI4MjcwOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDI1IDEwOjU2OjQ3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2ljbXAuYyBiL25ldC9pcHY0L2ljbXAuY1xuaW5kZXggMGNhZWRmYzdjYTkyZi4uNzM1MGYwMzgwYmUxNyAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2ljbXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvaWNtcC5jXG5AQCAtNTgxLDE2ICYjNDM7NTgxLDE1IEBAIHN0YXRpYyBzdHJ1Y3QgcnRhYmxlICppY21wX3JvdXRlX2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmbG93aTQgKmZsNCxcbiBcdFx0c2tiX2RzdHJlZl9yZXN0b3JlKHNrYl9pbiwgb3JlZmRzdCk7XG4gXG4gXHRcdC8qXG4tXHRcdCAqIEF0IHRoaXMgcG9pbnQsIGZsNF9kZWMuZGFkZHIgc2hvdWxkIE5PVCBiZSBsb2NhbCAod2Vcbi1cdFx0ICogY2hlY2tlZCBmbDRfZGVjLnNhZGRyIGFib3ZlKS4gSG93ZXZlciwgYSByYWNlIGNvbmRpdGlvblxuLVx0XHQgKiBtYXkgb2NjdXIgaWYgdGhlIGFkZHJlc3MgaXMgYWRkZWQgdG8gdGhlIGludGVyZmFjZVxuLVx0XHQgKiBjb25jdXJyZW50bHkuIEluIHRoYXQgY2FzZSwgaXBfcm91dGVfaW5wdXQoKSByZXR1cm5zIGFcbi1cdFx0ICogTE9DQUwgcm91dGUgd2l0aCBkc3Qub3V0cHV0PWlwX3J0X2J1Zywgd2hpY2ggbXVzdCBub3Rcbi1cdFx0ICogYmUgdXNlZCBmb3Igb3V0cHV0LlxuJiM0MztcdFx0ICogQXQgdGhpcyBwb2ludCwgZmw0X2RlYy5kYWRkciBzaG91bGQgTk9UIGJlIGxvY2FsICh0aGVcbiYjNDM7XHRcdCAqIGFkZHJlc3MgY2FuIGJlIGFkZGVkIHRvIHRoZSBpbnRlcmZhY2UgY29uY3VycmVudGx5KSBvciB1bnJvdXRhYmxlLlxuJiM0MztcdFx0ICogSW4gdGhhdCBjYXNlLCBpcF9yb3V0ZV9pbnB1dCgpIHJldHVybnMgYSBMT0NBTCBvciBVTlJFQUNIQUJMRVxuJiM0MztcdFx0ICogcm91dGUgd2l0aCBkc3Qub3V0cHV0PWlwX3J0X2J1Zywgd2hpY2ggbXVzdCBub3QgYmUgdXNlZCBmb3Igb3V0cHV0LlxuIFx0XHQgKi9cbi1cdFx0aWYgKCFlcnIgXHUwMDI2XHUwMDI2IHJ0MiBcdTAwMjZcdTAwMjYgcnQyLVx1MDAzZXJ0X3R5cGUgPT0gUlROX0xPQ0FMKSB7XG4tXHRcdFx0bmV0X3dhcm5fcmF0ZWxpbWl0ZWQoXCYjMzQ7ZGV0ZWN0ZWQgbG9jYWwgcm91dGUgZm9yICVwSTQgZHVyaW5nIElDTVAgc2VuZGluZywgc3JjICVwSTRcXG5cJiMzNDssXG4tXHRcdFx0XHRcdCAgICAgXHUwMDI2Zmw0X2RlYy5kYWRkciwgXHUwMDI2Zmw0X2RlYy5zYWRkcik7XG4mIzQzO1x0XHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgcnQyIFx1MDAyNlx1MDAyNiAocnQyLVx1MDAzZXJ0X3R5cGUgPT0gUlROX0xPQ0FMIHx8IHJ0Mi1cdTAwM2VydF90eXBlID09IFJUTl9VTlJFQUNIQUJMRSkpIHtcbiYjNDM7XHRcdFx0aWYgKHJ0Mi1cdTAwM2VydF90eXBlID09IFJUTl9MT0NBTClcbiYjNDM7XHRcdFx0XHRuZXRfd2Fybl9yYXRlbGltaXRlZChcJiMzNDtkZXRlY3RlZCBsb2NhbCByb3V0ZSBmb3IgJXBJNCBkdXJpbmcgSUNNUCBzZW5kaW5nLCBzcmMgJXBJNFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICBcdTAwMjZmbDRfZGVjLmRhZGRyLCBcdTAwMjZmbDRfZGVjLnNhZGRyKTtcbiBcdFx0XHRkc3RfcmVsZWFzZShcdTAwMjZydDItXHUwMDNlZHN0KTtcbiBcdFx0XHRlcnIgPSAtRUlOVkFMO1xuIFx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTA6NTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2ljbXBfc2VuZCYjMzQ7LAogICAgJiMzNDtpY21wX25kb19zZW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJQ01QIHJvdXRpbmcgbG9naWMgdG8gcHJvcGVybHkgaGFuZGxlIFJUTl9VTlJFQUNIQUJMRSByb3V0ZXMgcmV0dXJuZWQgYnkgaXBfcm91dGVfaW5wdXQoKSwgcHJldmVudGluZyB0aGUgdXNlIG9mIGludmFsaWQgcm91dGVzIHRoYXQgY291bGQgdHJpZ2dlciBpcF9ydF9idWcuIFRoaXMgaXMgYSBjb3JlIElQdjQgbmV0d29ya2luZyBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyYjMwZWU2OGQwYTYyMTY2MTQwMmYwN2ZmMDYxN2E0OTFjMjgyNzA5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgMjUgMTA6NTY6NDcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pY21wLmMgYi9uZXQvaXB2NC9pY21wLmMKaW5kZXggMGNhZWRmYzdjYTkyZi4uNzM1MGYwMzgwYmUxNyAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaWNtcC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2ljbXAuYwpAQCAtNTgxLDE2ICYjNDM7NTgxLDE1IEBAIHN0YXRpYyBzdHJ1Y3QgcnRhYmxlICppY21wX3JvdXRlX2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmbG93aTQgKmZsNCwKIAkJc2tiX2RzdHJlZl9yZXN0b3JlKHNrYl9pbiwgb3JlZmRzdCk7CiAKIAkJLyoKLQkJICogQXQgdGhpcyBwb2ludCwgZmw0X2RlYy5kYWRkciBzaG91bGQgTk9UIGJlIGxvY2FsICh3ZQotCQkgKiBjaGVja2VkIGZsNF9kZWMuc2FkZHIgYWJvdmUpLiBIb3dldmVyLCBhIHJhY2UgY29uZGl0aW9uCi0JCSAqIG1heSBvY2N1ciBpZiB0aGUgYWRkcmVzcyBpcyBhZGRlZCB0byB0aGUgaW50ZXJmYWNlCi0JCSAqIGNvbmN1cnJlbnRseS4gSW4gdGhhdCBjYXNlLCBpcF9yb3V0ZV9pbnB1dCgpIHJldHVybnMgYQotCQkgKiBMT0NBTCByb3V0ZSB3aXRoIGRzdC5vdXRwdXQ9aXBfcnRfYnVnLCB3aGljaCBtdXN0IG5vdAotCQkgKiBiZSB1c2VkIGZvciBvdXRwdXQuCiYjNDM7CQkgKiBBdCB0aGlzIHBvaW50LCBmbDRfZGVjLmRhZGRyIHNob3VsZCBOT1QgYmUgbG9jYWwgKHRoZQomIzQzOwkJICogYWRkcmVzcyBjYW4gYmUgYWRkZWQgdG8gdGhlIGludGVyZmFjZSBjb25jdXJyZW50bHkpIG9yIHVucm91dGFibGUuCiYjNDM7CQkgKiBJbiB0aGF0IGNhc2UsIGlwX3JvdXRlX2lucHV0KCkgcmV0dXJucyBhIExPQ0FMIG9yIFVOUkVBQ0hBQkxFCiYjNDM7CQkgKiByb3V0ZSB3aXRoIGRzdC5vdXRwdXQ9aXBfcnRfYnVnLCB3aGljaCBtdXN0IG5vdCBiZSB1c2VkIGZvciBvdXRwdXQuCiAJCSAqLwotCQlpZiAoIWVyciAmYW1wOyZhbXA7IHJ0MiAmYW1wOyZhbXA7IHJ0Mi0mZ3Q7cnRfdHlwZSA9PSBSVE5fTE9DQUwpIHsKLQkJCW5ldF93YXJuX3JhdGVsaW1pdGVkKCYjMzQ7ZGV0ZWN0ZWQgbG9jYWwgcm91dGUgZm9yICVwSTQgZHVyaW5nIElDTVAgc2VuZGluZywgc3JjICVwSTRcbiYjMzQ7LAotCQkJCQkgICAgICZhbXA7Zmw0X2RlYy5kYWRkciwgJmFtcDtmbDRfZGVjLnNhZGRyKTsKJiM0MzsJCWlmICghZXJyICZhbXA7JmFtcDsgcnQyICZhbXA7JmFtcDsgKHJ0Mi0mZ3Q7cnRfdHlwZSA9PSBSVE5fTE9DQUwgfHwgcnQyLSZndDtydF90eXBlID09IFJUTl9VTlJFQUNIQUJMRSkpIHsKJiM0MzsJCQlpZiAocnQyLSZndDtydF90eXBlID09IFJUTl9MT0NBTCkKJiM0MzsJCQkJbmV0X3dhcm5fcmF0ZWxpbWl0ZWQoJiMzNDtkZXRlY3RlZCBsb2NhbCByb3V0ZSBmb3IgJXBJNCBkdXJpbmcgSUNNUCBzZW5kaW5nLCBzcmMgJXBJNFxuJiMzNDssCiYjNDM7CQkJCQkJICAgICAmYW1wO2ZsNF9kZWMuZGFkZHIsICZhbXA7Zmw0X2RlYy5zYWRkcik7CiAJCQlkc3RfcmVsZWFzZSgmYW1wO3J0Mi0mZ3Q7ZHN0KTsKIAkJCWVyciA9IC1FSU5WQUw7CiAJCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTA6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMzMQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDb3JlIElDTVAgUm91dGluZyBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIGBuZXQvaXB2NC9pY21wLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBpY21wX3JvdXRlX2xvb2t1cGAgZnVuY3Rpb24uIFNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gg4oCTIGEgbmV3IGNoZWNrIGlzIGJlaW5nIGFkZGVkLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBjb2RlIG5vdyBpbmNsdWRlcyBhIGNoZWNrIGZvciBgcnQyLSZndDtydF90eXBlID09IFJUTl9VTlJFQUNIQUJMRWAgaW4gYWRkaXRpb24gdG8gdGhlIGV4aXN0aW5nIGBydDItJmd0O3J0X3R5cGUgPT0gUlROX0xPQ0FMYCBjb25kaXRpb24uIElmIGl0IGhpdHMgdGhlIGBSVE5fVU5SRUFDSEFCTEVgIGNhc2UsIHRoZSBkZXN0aW5hdGlvbiBpcyByZWxlYXNlZCwgYW5kIGFuIGBlcnIgPSAtRUlOVkFMYCBpcyBzZXQuCgpSaWdodCwgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0IHRoZSBjaGFuZ2UgaXMgaW5kZWVkIGluIGBpY21wX3JvdXRlX2xvb2t1cGAgd2l0aGluIGBuZXQvaXB2NC9pY21wLmNgLiBZZXAsIHRoZXJlIGl0IGlzLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGlzIHdvcnRoIGZ1enppbmcuIEhtbSwgaXQmIzM5O3MgY29yZSBJUHY0IElDTVAgcm91dGluZyBsb2dpY+KApiBhYnNvbHV0ZWx5LCB0aGlzIGlzIGEgcHJpbWUgdGFyZ2V0ISBXZSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZnVuY3Rpb24gb3BlcmF0ZXMgaW4gb3JkZXIgdG8gaWRlbnRpZnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4KClRoZSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMsIG9idmlvdXNseSwgYGljbXBfcm91dGVfbG9va3VwYC4gQnV0LCB3YWl0LCBJIHNlZSBpdCYjMzk7cyBkZWNsYXJlZCBhcyBgc3RhdGljIHN0cnVjdCBydGFibGUgKmljbXBfcm91dGVfbG9va3VwKC4uLilgLiBUaGF0JiMzOTtzIGltcG9ydGFudC4gQmVpbmcgc3RhdGljIG1lYW5zIGl0JiMzOTtzIG5vdCBkaXJlY3RseSBleHBvc2VkIGFzIGEgc3ltYm9sIHdlIGNhbiBjYWxsIGZyb20gb3V0c2lkZSB0aGF0IGZpbGUuIE5vdywgdGhlIG5leHQgY3J1Y2lhbCBzdGVwIGlzIGZpZ3VyaW5nIG91dCB3aGF0IGNhbGxzIHRoaXMgYGljbXBfcm91dGVfbG9va3VwYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgZ3JhcGggdG8gc2VlIHdoZXJlIHRoaXMgbmV3IGxvZ2ljIGdldHMgaW52b2tlZC4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIGRlc2lnbmluZyBlZmZlY3RpdmUgZnV6emluZyBjYW1wYWlnbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTA6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWNtcF9yb3V0ZV9sb29rdXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9pY21wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvaWNtcC5jPTQ4Mz1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKmljbXBfZ2V0X3JvdXRlX2xvb2t1cF9kZXYoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC9pY21wLmMtNDkzLVxubmV0L2lwdjQvaWNtcC5jOjQ5NDpzdGF0aWMgc3RydWN0IHJ0YWJsZSAqaWNtcF9yb3V0ZV9sb29rdXAoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmxvd2k0ICpmbDQsXG5uZXQvaXB2NC9pY21wLmMtNDk1LVx0XHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLFxuLS1cbm5ldC9pcHY0L2ljbXAuYz04MTM9dm9pZCBfX2ljbXBfc2VuZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgdHlwZSwgaW50IGNvZGUsIF9fYmUzMiBpbmZvLFxuLS1cbm5ldC9pcHY0L2ljbXAuYy05NjgtXG5uZXQvaXB2NC9pY21wLmM6OTY5Olx0cnQgPSBpY21wX3JvdXRlX2xvb2t1cChuZXQsIFx1MDAyNmZsNCwgc2tiX2luLCBpcGgsIHNhZGRyLFxubmV0L2lwdjQvaWNtcC5jLTk3MC1cdFx0XHQgICAgICAgaW5ldF9kc2ZpZWxkX3RvX2RzY3AodG9zKSwgbWFyaywgdHlwZSwgY29kZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMDo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTY3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBJQ01QIFNlbmQgUGF0aCoqCgpPa2F5LCBzbyBgX19pY21wX3NlbmRgIGlzIHRoZSBmdW5jdGlvbiB3ZSYjMzk7cmUgbG9va2luZyBhdC4gVGhlIGNvZGUgc3VnZ2VzdHMgdGhhdCBpdCBjYWxscyBgaWNtcF9yb3V0ZV9sb29rdXBgLCB3aGljaCBtYWtlcyBzZW5zZSBmb3IgaGFuZGxpbmcgcm91dGluZyBjb25zaWRlcmF0aW9ucyBiZWZvcmUgc2VuZGluZyBJQ01QIHBhY2tldHMuIEhtbSwgbm93IHRoYXQgSSB0aGluayBhYm91dCBpdCwgSSYjMzk7bSBwcmV0dHkgc3VyZSBgX19pY21wX3NlbmRgIGlzIG5vdCBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgYXZhaWxhYmxlIGZvciBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsIG9yIGV2ZW4gZXh0ZXJuYWwgbW9kdWxlcyB0byB1c2UuIEhvbGQgb24gYSBzZWNvbmQuLi4gaXMgdGhhdCByaWdodD8gTGV0JiMzOTtzIHZlcmlmeSB0aGF0IHF1aWNrbHkuIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYF9faWNtcF9zZW5kYCBpcyBhY3R1YWxseSBleHBvcnRlZC4gVGhhdCYjMzk7cyBhIGtleSBkZXRhaWwgdG8gdW5kZXJzdGFuZCBob3cgYnJvYWRseSB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBsZXZlcmFnZWQgYW5kIHdoYXQgaXRzIHBvdGVudGlhbCBzZWN1cml0eSBpbXBsaWNhdGlvbnMgbWlnaHQgYmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTA6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19pY21wX3NlbmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9pY21wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvaWNtcC5jPTczOD1pY21wX2V4dF9hcHBlbmQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBzdHJ1Y3QgaWNtcGhkciAqaWNtcGgsXG4tLVxubmV0L2lwdjQvaWNtcC5jLTgxMi1cbm5ldC9pcHY0L2ljbXAuYzo4MTM6dm9pZCBfX2ljbXBfc2VuZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgdHlwZSwgaW50IGNvZGUsIF9fYmUzMiBpbmZvLFxubmV0L2lwdjQvaWNtcC5jLTgxNC1cdFx0IGNvbnN0IHN0cnVjdCBpbmV0X3NrYl9wYXJtICpwYXJtKVxuLS1cbm5ldC9pcHY0L2ljbXAuYy0xMDI2LX1cbm5ldC9pcHY0L2ljbXAuYzoxMDI3OkVYUE9SVF9TWU1CT0woX19pY21wX3NlbmQpO1xubmV0L2lwdjQvaWNtcC5jLTEwMjgtXG4tLVxubmV0L2lwdjQvaWNtcC5jPTEwMzE9dm9pZCBpY21wX25kb19zZW5kKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCB0eXBlLCBpbnQgY29kZSwgX19iZTMyIGluZm8pXG4tLVxubmV0L2lwdjQvaWNtcC5jLTEwNDItXHRpZiAoIWN0IHx8ICEoUkVBRF9PTkNFKGN0LVx1MDAzZXN0YXR1cykgXHUwMDI2IElQU19OQVRfTUFTSykpIHtcbm5ldC9pcHY0L2ljbXAuYzoxMDQzOlx0XHRfX2ljbXBfc2VuZChza2JfaW4sIHR5cGUsIGNvZGUsIGluZm8sIFx1MDAyNnBhcm0pO1xubmV0L2lwdjQvaWNtcC5jLTEwNDQtXHRcdHJldHVybjtcbi0tXG5uZXQvaXB2NC9pY21wLmMtMTA1OC1cdGlwX2hkcihza2JfaW4pLVx1MDAzZXNhZGRyID0gY3QtXHUwMDNldHVwbGVoYXNoW2Rpcl0udHVwbGUuc3JjLnUzLmlwO1xubmV0L2lwdjQvaWNtcC5jOjEwNTk6XHRfX2ljbXBfc2VuZChza2JfaW4sIHR5cGUsIGNvZGUsIGluZm8sIFx1MDAyNnBhcm0pO1xubmV0L2lwdjQvaWNtcC5jLTEwNjAtXHRpcF9oZHIoc2tiX2luKS1cdTAwM2VzYWRkciA9IG9yaWdfaXA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTA6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg1NgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkRpZ2dpbmcgaW50byB0aGUgSUNNUCBTZW5kIFBhdGgqKgoKQWxyaWdodCwgYF9faWNtcF9zZW5kYCBzZWVtcyBsaWtlIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgSUNNUCBwYWNrZXRzIGFyZSBiZWluZyBzZW50LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGF0LiBCdXQgYmVmb3JlIEkgZ28gdG9vIGRlZXAsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBzY29wZS4gSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBkaXJlY3QgY2FsbGVycyBvZiB0aGlzIGZ1bmN0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBgaWNtcF9zZW5kYCBpcyBqdXN0IGEgbWFjcm8sIG9yIGFuIGlubGluZSBmdW5jdGlvbiB0aGF0IGV4cGFuZHMgaW50byBzb21ldGhpbmcgZWxzZSwgb3IgaWYgaXQmIzM5O3MgYSAmIzM0O3JlYWwmIzM0OyBmdW5jdGlvbiB0aGF0JiMzOTtzIGJlaW5nIGNhbGxlZCBieSBvdGhlciBmdW5jdGlvbnMgaW4gdGhlIG5ldHdvcmtpbmcgc3RhY2suIEdyYXNwaW5nIHRoZSBjYWxsIGhpZXJhcmNoeSBhbmQgaW5saW5pbmcgYmVoYXZpb3IgaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSB3aG9sZSBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEwOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ljbXBfc2VuZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2ljbXAuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9pY21wLmg9Mzc9c3RydWN0IG5ldDtcbmluY2x1ZGUvbmV0L2ljbXAuaC0zOC1cbmluY2x1ZGUvbmV0L2ljbXAuaDozOTp2b2lkIF9faWNtcF9zZW5kKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCB0eXBlLCBpbnQgY29kZSwgX19iZTMyIGluZm8sXG5pbmNsdWRlL25ldC9pY21wLmgtNDAtXHRcdCBjb25zdCBzdHJ1Y3QgaW5ldF9za2JfcGFybSAqcGFybSk7XG5pbmNsdWRlL25ldC9pY21wLmg6NDE6c3RhdGljIGlubGluZSB2b2lkIGljbXBfc2VuZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgdHlwZSwgaW50IGNvZGUsIF9fYmUzMiBpbmZvKVxuaW5jbHVkZS9uZXQvaWNtcC5oLTQyLXtcbmluY2x1ZGUvbmV0L2ljbXAuaDo0MzpcdF9faWNtcF9zZW5kKHNrYl9pbiwgdHlwZSwgY29kZSwgaW5mbywgSVBDQihza2JfaW4pKTtcbmluY2x1ZGUvbmV0L2ljbXAuaC00NC19XG4tLVxuaW5jbHVkZS9uZXQvaWNtcC5oPTQ5PXN0YXRpYyBpbmxpbmUgdm9pZCBpY21wX25kb19zZW5kKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCB0eXBlLCBpbnQgY29kZSwgX19iZTMyIGluZm8pXG4tLVxuaW5jbHVkZS9uZXQvaWNtcC5oLTUzLVx0bWVtc2V0KFx1MDAyNnBhcm0sIDAsIHNpemVvZihwYXJtKSk7XG5pbmNsdWRlL25ldC9pY21wLmg6NTQ6XHRfX2ljbXBfc2VuZChza2JfaW4sIHR5cGUsIGNvZGUsIGluZm8sIFx1MDAyNnBhcm0pO1xuaW5jbHVkZS9uZXQvaWNtcC5oLTU1LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDAyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guCgoqKkFuYWx5emluZyBJQ01QIFNlbmQgRnVuY3Rpb25zKioKCkFscmlnaHQsIHNvIGBfX2ljbXBfc2VuZGAgaXMgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQsIHRoYXQgbXVjaCBJJiMzOTttIGZhaXJseSBjZXJ0YWluIG9mLiBOb3csIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuIFdoYXQmIzM5O3MgdGhlIGRlYWwgd2l0aCBgaWNtcF9uZG9fc2VuZGA/IEhtbW0sIGlzIHRoYXQgdGhlIG9uZSBkZWZpbmVkIGluIGBuZXQvaXB2NC9pY21wLmNgPyBBaCwgcmlnaHQsIHRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGxvb2suIENvcnJlY3QsIGBpY21wX25kb19zZW5kYCBpcyBpbmRlZWQgd2l0aGluIGBuZXQvaXB2NC9pY21wLmNgLiBHb3QgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEwOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ljbXBfbmRvX3NlbmQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9pY21wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvaWNtcC5jPTEwMjc9RVhQT1JUX1NZTUJPTChfX2ljbXBfc2VuZCk7XG4tLVxubmV0L2lwdjQvaWNtcC5jLTEwMzAtI2luY2x1ZGUgXHUwMDNjbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2suaFx1MDAzZVxubmV0L2lwdjQvaWNtcC5jOjEwMzE6dm9pZCBpY21wX25kb19zZW5kKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCB0eXBlLCBpbnQgY29kZSwgX19iZTMyIGluZm8pXG5uZXQvaXB2NC9pY21wLmMtMTAzMi17XG4tLVxubmV0L2lwdjQvaWNtcC5jLTEwNjMtfVxubmV0L2lwdjQvaWNtcC5jOjEwNjQ6RVhQT1JUX1NZTUJPTChpY21wX25kb19zZW5kKTtcbm5ldC9pcHY0L2ljbXAuYy0xMDY1LSNlbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0ODEzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSVB2NCBSb3V0aW5nIEJ1ZyBGaXgqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgbmV3IHBhdGNoIHRvIHJldmlldy4gTXkgaW1tZWRpYXRlIGZvY3VzIHN5bWJvbHMgYXJlIGdvaW5nIHRvIGJlIGBfX2ljbXBfc2VuZGAgYW5kIGBpY21wX25kb19zZW5kYC4gVGhvc2UgYXJlIHVzdWFsbHkgZ29vZCBpbmRpY2F0b3JzIG9mIHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aCBJQ01QIGhhbmRsaW5nLCB3aGljaCBpcyByZWxldmFudCBoZXJlLiBUaGUgcGF0Y2ggZGVzY3JpcHRpb24gbWVudGlvbnMgYSBidWcgaW4gYGlwX3JvdXRlX2lucHV0KClgIHJldHVybmluZyBhbiBgVU5SRUFDSEFCTEVgIHJvdXRlIHdoZXJlIHRoZSBkZXN0aW5hdGlvbiYjMzk7cyBgb3V0cHV0YCBpcyBpbmNvcnJlY3RseSBzZXQgdG8gYGlwX3J0X2J1Z2AuIFRoYXQgc291bmRzIGxpa2UgYSBjbGFzc2ljIHJvdXRpbmcgcHJvYmxlbSwgYW5kIHRoZSBlZmZlY3QgaXMgc2VyaW91czogYSBjcmFzaCBvciB3YXJuaW5nIHdoZW4gdGhlIGZhdWx0eSByb3V0ZSBpcyBhY3R1YWxseSB1c2VkLgoKVGhpcyBpcyBhIHByZXR0eSBmdW5kYW1lbnRhbCBjaGFuZ2U7IGl0IHRvdWNoZXMgY29yZSBJUHY0IGxvZ2ljLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBpbXBsaWNhdGlvbnMuIEl0JiMzOTtzIG5vdCBjbGVhciBmcm9tIHRoZSBkZXNjcmlwdGlvbiB3aGF0IGNvbmZpZyBvcHRpb25zIGFyZSBpbnZvbHZlZC4gYENPTkZJR19JTkVUYCBpcyB0aGUgb2J2aW91cyBvbmUsIG9yIG1heWJlIGV2ZW4gYENPTkZJR19JUF9NVUxUSUNBU1RgPyBHb3R0YSBjaGVjayB0aGUgYG5ldC9pcHY0L0tjb25maWdgIGZpbGUgdG8gYmUgc3VyZS4gSXQmIzM5O3MgcHJvYmFibHkganVzdCBzdGFuZGFyZCBJUHY0IHN0dWZmLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbiYjMzk7dCBtaXNzIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU5FVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz0zMzA9Y29uZmlnIE5FVF9GT1VfSVBfVFVOTkVMU1xuLS1cbm5ldC9pcHY0L0tjb25maWctMzM4LVxubmV0L2lwdjQvS2NvbmZpZzozMzk6Y29uZmlnIElORVRfQUhcbm5ldC9pcHY0L0tjb25maWctMzQwLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEFIIHRyYW5zZm9ybWF0aW9uXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zNTMtXG5uZXQvaXB2NC9LY29uZmlnOjM1NDpjb25maWcgSU5FVF9FU1Bcbm5ldC9pcHY0L0tjb25maWctMzU1LVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEVTUCB0cmFuc2Zvcm1hdGlvblwmIzM0O1xuLS1cbm5ldC9pcHY0L0tjb25maWctMzY4LVxubmV0L2lwdjQvS2NvbmZpZzozNjk6Y29uZmlnIElORVRfRVNQX09GRkxPQURcbm5ldC9pcHY0L0tjb25maWctMzcwLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEVTUCB0cmFuc2Zvcm1hdGlvbiBvZmZsb2FkXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zODEtXG5uZXQvaXB2NC9LY29uZmlnOjM4Mjpjb25maWcgSU5FVF9FU1BJTlRDUFxubmV0L2lwdjQvS2NvbmZpZy0zODMtXHRib29sIFwmIzM0O0lQOiBFU1AgaW4gVENQIGVuY2Fwc3VsYXRpb24gKFJGQyA4MjI5KVwmIzM0O1xuLS1cbm5ldC9pcHY0L0tjb25maWctMzkzLVxubmV0L2lwdjQvS2NvbmZpZzozOTQ6Y29uZmlnIElORVRfSVBDT01QXG5uZXQvaXB2NC9LY29uZmlnLTM5NS1cdHRyaXN0YXRlIFwmIzM0O0lQOiBJUENvbXAgdHJhbnNmb3JtYXRpb25cJiMzNDtcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTQwMy1cbm5ldC9pcHY0L0tjb25maWc6NDA0OmNvbmZpZyBJTkVUX1RBQkxFX1BFUlRVUkJfT1JERVJcbm5ldC9pcHY0L0tjb25maWctNDA1LVx0aW50IFwmIzM0O0lORVQ6IFNvdXJjZSBwb3J0IHBlcnR1cmJhdGlvbiB0YWJsZSBzaXplIChhcyBwb3dlciBvZiAyKVwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTQxMy1cbm5ldC9pcHY0L0tjb25maWc6NDE0OmNvbmZpZyBJTkVUX1hGUk1fVFVOTkVMXG5uZXQvaXB2NC9LY29uZmlnLTQxNS1cdHRyaXN0YXRlXG4tLVxubmV0L2lwdjQvS2NvbmZpZy00MTgtXG5uZXQvaXB2NC9LY29uZmlnOjQxOTpjb25maWcgSU5FVF9UVU5ORUxcbm5ldC9pcHY0L0tjb25maWctNDIwLVx0dHJpc3RhdGVcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTQyMi1cbm5ldC9pcHY0L0tjb25maWc6NDIzOmNvbmZpZyBJTkVUX0RJQUdcbm5ldC9pcHY0L0tjb25maWctNDI0LVx0dHJpc3RhdGUgXCYjMzQ7SU5FVDogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZy00MzQtXG5uZXQvaXB2NC9LY29uZmlnOjQzNTpjb25maWcgSU5FVF9UQ1BfRElBR1xubmV0L2lwdjQvS2NvbmZpZy00MzYtXHRkZXBlbmRzIG9uIElORVRfRElBR1xuLS1cbm5ldC9pcHY0L0tjb25maWctNDM4LVxubmV0L2lwdjQvS2NvbmZpZzo0Mzk6Y29uZmlnIElORVRfVURQX0RJQUdcbm5ldC9pcHY0L0tjb25maWctNDQwLVx0dHJpc3RhdGUgXCYjMzQ7VURQOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTQ0Ni1cbm5ldC9pcHY0L0tjb25maWc6NDQ3OmNvbmZpZyBJTkVUX1JBV19ESUFHXG5uZXQvaXB2NC9LY29uZmlnLTQ0OC1cdHRyaXN0YXRlIFwmIzM0O1JBVzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZy00NTQtXG5uZXQvaXB2NC9LY29uZmlnOjQ1NTpjb25maWcgSU5FVF9ESUFHX0RFU1RST1lcbm5ldC9pcHY0L0tjb25maWctNDU2LVx0Ym9vbCBcJiMzNDtJTkVUOiBhbGxvdyBwcml2aWxlZ2VkIHByb2Nlc3MgdG8gYWRtaW5pc3RyYXRpdmVseSBjbG9zZSBzb2NrZXRzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEwOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwMDUKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipLY29uZmlnIExvY2F0aW9uIG9mIElORVQqKgoKT2theSwgc28gSSBzZWUgdGhhdCBgSU5FVGAgaXMgZGVmaW5lZCB3aXRoaW4gYG5ldC9LY29uZmlnYC4gVGhhdCYjMzk7cyBub3Qgc3VycHJpc2luZywgcmVhbGx5LiBJdCBjb25maXJtcyBteSB1bmRlcnN0YW5kaW5nIHRoYXQgdGhlIGNvcmUgbmV0d29yay1yZWxhdGVkIGNvbmZpZ3VyYXRpb25zLCBpbmNsdWRpbmcgdGhlIGJyb2FkZXIgSW50ZXJuZXQgUHJvdG9jb2wgc3VpdGUsIGFyZSBtYW5hZ2VkIHdpdGhpbiB0aGF0IHNlY3Rpb24gb2YgdGhlIEtjb25maWcgaGllcmFyY2h5LiBJdCYjMzk7cyBhIHN0YW5kYXJkIGFuZCBsb2dpY2FsIHBsYWNlIHRvIGZpbmQgaXQsIGdpdmVuIHRoZSBzY29wZSBhbmQgZGVwZW5kZW5jaWVzIGludm9sdmVkIHdpdGggbmV0d29yayBwcm90b2NvbCBzdXBwb3J0LiBUaGlzIGFsc28gdGVsbHMgbWUgdG8gbG9vayB0aGVyZSBmb3IgcmVsYXRlZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgaWYgSSBuZWVkIHRvIGFkanVzdCBvciBleHRlbmQgbmV0d29yayBzZXR0aW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTA6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElORVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvS2NvbmZpZz05OT1jb25maWcgTkVUX0hBTkRTSEFLRV9LVU5JVF9URVNUXG4tLVxubmV0L0tjb25maWctMTEzLVxubmV0L0tjb25maWc6MTE0OmNvbmZpZyBJTkVUXG5uZXQvS2NvbmZpZy0xMTUtXHRib29sIFwmIzM0O1RDUC9JUCBuZXR3b3JraW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEwOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyNDUKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBJTkVUYCBDb25maWd1cmF0aW9uIGZvciBJQ01QIE1vZGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGUgYElORVRgIGNvbmZpZ3VyYXRpb24gaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGhlcmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgcGF0Y2ggbmVjZXNzaXRhdGVzIGFueSBvdGhlciBjb25maWd1cmF0aW9uIGFkanVzdG1lbnRzLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IHRvdWNoZXMgYG5ldC9pcHY0L2ljbXAuY2AsIGFuZCBJIGtub3cgdGhhdCB0aGlzIGZpbGUgaXMgb25seSBjb21waWxlZCB3aGVuIGBDT05GSUdfSU5FVGAgaXMgZW5hYmxlZC4gVGhhdCYjMzk7cyBhIGdvb2Qgc2lnbiwgYnV0IEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBkZXBlbmRlbmNpZXMgb3IgaGlkZGVuIGZsYWdzLiBUaW1lIHRvIGRpZyBpbnRvIGBuZXQvaXB2NC9NYWtlZmlsZWAgYW5kIHNlZSBpZiBhbnl0aGluZyBlbHNlIGlzIHJlbGV2YW50IGluIHRoYXQgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTA6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWNtcC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcbi0tXG5uZXQvaXB2NC9NYWtlZmlsZS0xMy1cdCAgICAgdGNwX29mZmxvYWQubyB0Y3BfcGxiLm8gZGF0YWdyYW0ubyByYXcubyB1ZHAubyBcXFxubmV0L2lwdjQvTWFrZWZpbGU6MTQ6XHQgICAgIHVkcF9vZmZsb2FkLm8gYXJwLm8gaWNtcC5vIGRldmluZXQubyBhZl9pbmV0Lm8gaWdtcC5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xNS1cdCAgICAgZmliX2Zyb250ZW5kLm8gZmliX3NlbWFudGljcy5vIGZpYl90cmllLm8gZmliX25vdGlmaWVyLm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTA6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYxMgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEwOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBJQ01QIFJvdXRpbmcgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgSUNNUCBpbXBsZW1lbnRhdGlvbi4gTXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgdGhpcyBjb2RlIGlzIHVuY29uZGl0aW9uYWxseSBjb21waWxlZCBhcyBwYXJ0IG9mIHRoZSBgbmV0L2lwdjQvYCBtb2R1bGUuIFRoYXQmIzM5O3MgYSBrZXkgc3RhcnRpbmcgcG9pbnQuIEFuZCBvZiBjb3Vyc2UsIGBuZXQvaXB2NC9gIGl0c2VsZiBpcyBvbmx5IGJ1aWx0IHdoZW4gYENPTkZJR19JTkVUYCBpcyBlbmFibGVkLiBUaGVyZWZvcmUsIGZvciB0aGlzIHNwZWNpZmljIHBpZWNlIHRvIGJlIGluY2x1ZGVkLCBgQ09ORklHX0lORVRgIGlzIHRoZSBvbmx5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIEkgbmVlZCB0byBiZSBjb25jZXJuZWQgd2l0aC4gR29vZCwgdGhhdCBzaW1wbGlmaWVzIHRoaW5ncy4KCk5vdywgbXkgZm9jdXMgbmFycm93cyBkb3duIHRvIHRoZSBmdW5jdGlvbnMgYF9faWNtcF9zZW5kYCBhbmQgYGljbXBfbmRvX3NlbmRgLiBUaGVzZSBhcmUgdGhlIHNwZWNpZmljIHN5bWJvbHMgdGhhdCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZW0gYW5kIGBpY21wX3JvdXRlX2xvb2t1cGAuCgpMZXQmIzM5O3MgZG91YmxlLWNoZWNrIGhvdyBgaWNtcF9yb3V0ZV9sb29rdXBgIGdldHMgY2FsbGVkLiBGcm9tIHdoYXQgSSByZWNhbGwsIGBfX2ljbXBfc2VuZGAgaXMgKmEqIGNhbGxlciBvZiBgaWNtcF9yb3V0ZV9sb29rdXBgLiBCdXQgaXMgaXQgdGhlICpvbmx5KiBvbmU/IEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgdGhhdCBJJiMzOTttIG5vdCBtaXNzaW5nIGFueSBvdGhlciBwb3RlbnRpYWwgZW50cnkgcG9pbnRzIGludG8gdGhlIHJvdXRpbmcgbG9va3VwIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIHRoZSBjcml0aWNhbCBxdWVzdGlvbiB0byBuYWlsIGRvd24gYmVmb3JlIEkgbW92ZSBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTA6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWNtcF9yb3V0ZV9sb29rdXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9pY21wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvaWNtcC5jPTQ4Mz1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2UgKmljbXBfZ2V0X3JvdXRlX2xvb2t1cF9kZXYoc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvaXB2NC9pY21wLmMtNDkzLVxubmV0L2lwdjQvaWNtcC5jOjQ5NDpzdGF0aWMgc3RydWN0IHJ0YWJsZSAqaWNtcF9yb3V0ZV9sb29rdXAoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmxvd2k0ICpmbDQsXG5uZXQvaXB2NC9pY21wLmMtNDk1LVx0XHRcdFx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLFxuLS1cbm5ldC9pcHY0L2ljbXAuYz04MTM9dm9pZCBfX2ljbXBfc2VuZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgdHlwZSwgaW50IGNvZGUsIF9fYmUzMiBpbmZvLFxuLS1cbm5ldC9pcHY0L2ljbXAuYy05NjgtXG5uZXQvaXB2NC9pY21wLmM6OTY5Olx0cnQgPSBpY21wX3JvdXRlX2xvb2t1cChuZXQsIFx1MDAyNmZsNCwgc2tiX2luLCBpcGgsIHNhZGRyLFxubmV0L2lwdjQvaWNtcC5jLTk3MC1cdFx0XHQgICAgICAgaW5ldF9kc2ZpZWxkX3RvX2RzY3AodG9zKSwgbWFyaywgdHlwZSwgY29kZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTA6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzI2OAoJCQkJCQkJb3V0cHV0OiAxMDYKCQkJCQkJCXRob3VnaHRzOiA0MTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIElDTVAgUm91dGluZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBwaW5uZWQgZG93biB0aGUga2V5IGVudHJ5IHBvaW50czogYF9faWNtcF9zZW5kYCBhbmQgYGljbXBfbmRvX3NlbmRgLiBJdCYjMzk7cyBwcmV0dHkgY2xlYXIgdGhvc2UgYXJlIG15IGZvY3VzIHN5bWJvbHMgYmVjYXVzZSBgX19pY21wX3NlbmRgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQgZGlyZWN0bHkgY2FsbHMgaXQuIEFuZCBgaWNtcF9uZG9fc2VuZGAgYWxzbyBjYWxscyBpdCwgc28gdGhvc2UgYXJlIG15IGhvb2tzLgoKTm93LCByZXZpc2l0aW5nIHRoZSBwYXRjaCBpdHNlbGYsIEkgc2VlIGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjb3JyZWN0aW9uLiBUaGUgb3JpZ2luYWwgY29kZSBoYWQgYSBmbGF3IOKAkyBpdCB3YXNuJiMzOTt0IGNvcnJlY3RseSBoYW5kbGluZyBgUlROX1VOUkVBQ0hBQkxFYCByb3V0ZXMgaW4gSUNNUCBvdXRwdXQsIGFuZCB0aGF0IHdhcyBsZWFkaW5nIHRvIHBvdGVudGlhbGx5IGludmFsaWQgcm91dGVzIGJlaW5nIHVzZWQuIFRoaXMgY291bGQgdHJpZ2dlciBgaXBfcnRfYnVnYCwgd2hpY2ggd2UgKmRvbiYjMzk7dCogd2FudC4KClRoZSBwYXRjaCYjMzk7cyBtb2RpZmljYXRpb24gbm93IGNvcnJlY3RseSBjaGVja3MgZm9yICpib3RoKiBgUlROX0xPQ0FMYCBhbmQgYFJUTl9VTlJFQUNIQUJMRWAgcm91dGUgdHlwZXMuIFRoZSBvcmlnaW5hbCBidWcgb25seSBjb25zaWRlcmVkIExPQ0FMIHJvdXRlcy4gVGhpcyBpcyBjcnVjaWFsIGZvciByb2J1c3Qgcm91dGluZyBiZWhhdmlvciwgYW5kIHRoaXMgKmRlZmluaXRlbHkqIHdhcnJhbnRzIGZ1enppbmcuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgY2hhbmdlIGluIGhvdyB0aGUgSVB2NCBuZXR3b3JraW5nIHN0YWNrICpzaG91bGQqIGhhbmRsZSBjZXJ0YWluIHJvdXRpbmcgZWRnZSBjYXNlcy4gV2UmIzM5O3JlIHByZXZlbnRpbmcgYSBmdW5jdGlvbmFsIGVycm9yIHRoYXQgY291bGQgY2F1c2Ugc3lzdGVtIGluc3RhYmlsaXR5LiBJIHNlZSB2YWx1ZSBpbiBmdXp6aW5nIHRoZSBkaWZmZXJlbmNlIHRvIGNoZWNrIGZvciByZWdyZXNzaW9ucy4KCkdpdmVuIGl0cyBjb3JlIG5hdHVyZSwgSSYjMzk7bGwgbmVlZCBgSU5FVGAgZW5hYmxlZCBmb3IgdGhlIGZ1enppbmcuCgpBbHJpZ2h0LCBJJiMzOTttIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTA6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2ljbXBfc2VuZCYjMzQ7LAogICAgJiMzNDtpY21wX25kb19zZW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJQ01QIHJvdXRpbmcgbG9naWMgdG8gcHJvcGVybHkgaGFuZGxlIFJUTl9VTlJFQUNIQUJMRSByb3V0ZXMgcmV0dXJuZWQgYnkgaXBfcm91dGVfaW5wdXQoKSwgcHJldmVudGluZyB0aGUgdXNlIG9mIGludmFsaWQgcm91dGVzIHRoYXQgY291bGQgdHJpZ2dlciBpcF9ydF9idWcuIFRoaXMgaXMgYSBjb3JlIElQdjQgbmV0d29ya2luZyBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2ljbXBfc2VuZCYjMzQ7LAogICAgJiMzNDtpY21wX25kb19zZW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJQ01QIHJvdXRpbmcgbG9naWMgdG8gcHJvcGVybHkgaGFuZGxlIFJUTl9VTlJFQUNIQUJMRSByb3V0ZXMgcmV0dXJuZWQgYnkgaXBfcm91dGVfaW5wdXQoKSwgcHJldmVudGluZyB0aGUgdXNlIG9mIGludmFsaWQgcm91dGVzIHRoYXQgY291bGQgdHJpZ2dlciBpcF9ydF9idWcuIFRoaXMgaXMgYSBjb3JlIElQdjQgbmV0d29ya2luZyBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEwOjU3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTA6NTc8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcm91dGluZyBsb2dpYyBpbiBgaWNtcF9yb3V0ZV9sb29rdXBgIHRvIHByZXZlbnQgdGhlIHVzZSBvZiBgUlROX1VOUkVBQ0hBQkxFYCByb3V0ZXMgZm9yIElDTVAgb3V0cHV0LCB3aGljaCBjb3VsZCBsZWFkIHRvIGNhbGxpbmcgYGlwX3J0X2J1Z2AuIFRoaXMgaXMgYSBsb2dpYyBidWcgZml4IHRoYXQgcHJldmVudHMgaW5jb3JyZWN0IHJvdXRpbmcgYmVoYXZpb3Igb3IgcG90ZW50aWFsIGNyYXNoZXMgKGUuZy4sIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBvciBCVUcoKSBpbiBgaXBfcnRfYnVnYCkuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyYjMwZWU2OGQwYTYyMTY2MTQwMmYwN2ZmMDYxN2E0OTFjMjgyNzA5CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgMjUgMTA6NTY6NDcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pY21wLmMgYi9uZXQvaXB2NC9pY21wLmMKaW5kZXggMGNhZWRmYzdjYTkyZi4uNzM1MGYwMzgwYmUxNyAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvaWNtcC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2ljbXAuYwpAQCAtNTgxLDE2ICYjNDM7NTgxLDE1IEBAIHN0YXRpYyBzdHJ1Y3QgcnRhYmxlICppY21wX3JvdXRlX2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmbG93aTQgKmZsNCwKIAkJc2tiX2RzdHJlZl9yZXN0b3JlKHNrYl9pbiwgb3JlZmRzdCk7CiAKIAkJLyoKLQkJICogQXQgdGhpcyBwb2ludCwgZmw0X2RlYy5kYWRkciBzaG91bGQgTk9UIGJlIGxvY2FsICh3ZQotCQkgKiBjaGVja2VkIGZsNF9kZWMuc2FkZHIgYWJvdmUpLiBIb3dldmVyLCBhIHJhY2UgY29uZGl0aW9uCi0JCSAqIG1heSBvY2N1ciBpZiB0aGUgYWRkcmVzcyBpcyBhZGRlZCB0byB0aGUgaW50ZXJmYWNlCi0JCSAqIGNvbmN1cnJlbnRseS4gSW4gdGhhdCBjYXNlLCBpcF9yb3V0ZV9pbnB1dCgpIHJldHVybnMgYQotCQkgKiBMT0NBTCByb3V0ZSB3aXRoIGRzdC5vdXRwdXQ9aXBfcnRfYnVnLCB3aGljaCBtdXN0IG5vdAotCQkgKiBiZSB1c2VkIGZvciBvdXRwdXQuCiYjNDM7CQkgKiBBdCB0aGlzIHBvaW50LCBmbDRfZGVjLmRhZGRyIHNob3VsZCBOT1QgYmUgbG9jYWwgKHRoZQomIzQzOwkJICogYWRkcmVzcyBjYW4gYmUgYWRkZWQgdG8gdGhlIGludGVyZmFjZSBjb25jdXJyZW50bHkpIG9yIHVucm91dGFibGUuCiYjNDM7CQkgKiBJbiB0aGF0IGNhc2UsIGlwX3JvdXRlX2lucHV0KCkgcmV0dXJucyBhIExPQ0FMIG9yIFVOUkVBQ0hBQkxFCiYjNDM7CQkgKiByb3V0ZSB3aXRoIGRzdC5vdXRwdXQ9aXBfcnRfYnVnLCB3aGljaCBtdXN0IG5vdCBiZSB1c2VkIGZvciBvdXRwdXQuCiAJCSAqLwotCQlpZiAoIWVyciAmYW1wOyZhbXA7IHJ0MiAmYW1wOyZhbXA7IHJ0Mi0mZ3Q7cnRfdHlwZSA9PSBSVE5fTE9DQUwpIHsKLQkJCW5ldF93YXJuX3JhdGVsaW1pdGVkKCYjMzQ7ZGV0ZWN0ZWQgbG9jYWwgcm91dGUgZm9yICVwSTQgZHVyaW5nIElDTVAgc2VuZGluZywgc3JjICVwSTRcbiYjMzQ7LAotCQkJCQkgICAgICZhbXA7Zmw0X2RlYy5kYWRkciwgJmFtcDtmbDRfZGVjLnNhZGRyKTsKJiM0MzsJCWlmICghZXJyICZhbXA7JmFtcDsgcnQyICZhbXA7JmFtcDsgKHJ0Mi0mZ3Q7cnRfdHlwZSA9PSBSVE5fTE9DQUwgfHwgcnQyLSZndDtydF90eXBlID09IFJUTl9VTlJFQUNIQUJMRSkpIHsKJiM0MzsJCQlpZiAocnQyLSZndDtydF90eXBlID09IFJUTl9MT0NBTCkKJiM0MzsJCQkJbmV0X3dhcm5fcmF0ZWxpbWl0ZWQoJiMzNDtkZXRlY3RlZCBsb2NhbCByb3V0ZSBmb3IgJXBJNCBkdXJpbmcgSUNNUCBzZW5kaW5nLCBzcmMgJXBJNFxuJiMzNDssCiYjNDM7CQkJCQkJICAgICAmYW1wO2ZsNF9kZWMuZGFkZHIsICZhbXA7Zmw0X2RlYy5zYWRkcik7CiAJCQlkc3RfcmVsZWFzZSgmYW1wO3J0Mi0mZ3Q7ZHN0KTsKIAkJCWVyciA9IC1FSU5WQUw7CiAJCX0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEwOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMjgKCQkJCQkJCW91dHB1dDogMTM4CgkJCQkJCQl0aG91Z2h0czogMjY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIElDTVAgUm91dGUgTG9va3VwIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIHJldmlld2VkIHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIGBpY21wX3JvdXRlX2xvb2t1cGAgaW4gYG5ldC9pcHY0L2ljbXAuY2AuIEl0JiMzOTtzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBmaXguIFRoZXkmIzM5O3JlIGNoYW5naW5nIGEgY29uZGl0aW9uYWwgc3RhdGVtZW50OiB0aGUgb3JpZ2luYWwgY29kZSBjaGVja2VkIGZvciBgUlROX0xPQ0FMYCByb3V0ZXMsIGFuZCBub3cgaXQgYWxzbyBpbmNsdWRlcyBgUlROX1VOUkVBQ0hBQkxFYC4gU2VlbXMgbGlrZSBhIGNsZWFyIGxvZ2ljIGJ1ZyBmaXgg4oCTIHByZXZlbnRpbmcgdGhlIHVzZSBvZiBgUlROX1VOUkVBQ0hBQkxFYCByb3V0ZXMgZm9yIElDTVAgb3V0cHV0LCB3aGljaCBjb3VsZCBsZWFkIHRvIHByb2JsZW1zLCBwb3RlbnRpYWxseSB3aXRoIHRoZSBgZHN0Lm91dHB1dD1pcF9ydF9idWdgIHNpdHVhdGlvbi4KCk15IGltbWVkaWF0ZSBjb25jZXJuLCBhcyBhbHdheXMsIGlzIG1lbW9yeSBzYWZldHkuIEhvd2V2ZXIsIGFmdGVyIHRha2luZyBhIGNsb3NlIGxvb2ssIEkmIzM5O20gY29uZmlkZW50IHRoYXQgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3Vlcy4gVGhlIHZhcmlhYmxlcyBpbnZvbHZlZCwgc3BlY2lmaWNhbGx5IGBydDJgIChhIHBvaW50ZXIgdG8gYSBgc3RydWN0IHJ0YWJsZWApIGFuZCBgcnQyLSZndDtydF90eXBlYCwgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGJ5IGBpcF9yb3V0ZV9pbnB1dCgpYC4gVGhlIHBhdGNoICpvbmx5KiBhZGRzIGEgY2hlY2sgZm9yIGBSVE5fVU5SRUFDSEFCTEVgOyBpdCYjMzk7cyBub3QgaW50cm9kdWNpbmcgYW55IG5ldyBtZW1vcnkgYWNjZXNzIHBhdHRlcm5zLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBiZWluZyByZWFkIG9yIGxlYWtlZCBhcyBhIHJlc3VsdCBvZiB0aGlzIGNoYW5nZS4KCkkmIzM5O20gY29tZm9ydGFibGUgc2V0dGluZyBgTmVlZHNLTVNBTj1mYWxzZWAgZm9yIHRoaXMuIEp1c3QgdG8gZG91YmxlLWNoZWNrLCBJIHdlbnQgdGhyb3VnaCBpdCBhZ2FpbiwgYW5kIGNvbmZpcm1lZCB0aGF0IHRoZSBhZGRlZCBjaGVjayBkb2VzbiYjMzk7dCBjcmVhdGUgYW55IG5ldyBvcHBvcnR1bml0aWVzIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSB0byBiZSByZWFkLiBJIGNhbiBjb25maXJtLCBiYXNlZCBvbiBteSBhbmFseXNpcywgdGhhdCBpdCBpcyBzYWZlLgoKSSYjMzk7bGwgY2FsbCBgc2V0LXJlc3VsdHNgIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTA6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcm91dGluZyBsb2dpYyBpbiBgaWNtcF9yb3V0ZV9sb29rdXBgIHRvIHByZXZlbnQgdGhlIHVzZSBvZiBgUlROX1VOUkVBQ0hBQkxFYCByb3V0ZXMgZm9yIElDTVAgb3V0cHV0LCB3aGljaCBjb3VsZCBsZWFkIHRvIGNhbGxpbmcgYGlwX3J0X2J1Z2AuIFRoaXMgaXMgYSBsb2dpYyBidWcgZml4IHRoYXQgcHJldmVudHMgaW5jb3JyZWN0IHJvdXRpbmcgYmVoYXZpb3Igb3IgcG90ZW50aWFsIGNyYXNoZXMgKGUuZy4sIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBvciBCVUcoKSBpbiBgaXBfcnRfYnVnYCkuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgcm91dGluZyBsb2dpYyBpbiBgaWNtcF9yb3V0ZV9sb29rdXBgIHRvIHByZXZlbnQgdGhlIHVzZSBvZiBgUlROX1VOUkVBQ0hBQkxFYCByb3V0ZXMgZm9yIElDTVAgb3V0cHV0LCB3aGljaCBjb3VsZCBsZWFkIHRvIGNhbGxpbmcgYGlwX3J0X2J1Z2AuIFRoaXMgaXMgYSBsb2dpYyBidWcgZml4IHRoYXQgcHJldmVudHMgaW5jb3JyZWN0IHJvdXRpbmcgYmVoYXZpb3Igb3IgcG90ZW50aWFsIGNyYXNoZXMgKGUuZy4sIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBvciBCVUcoKSBpbiBgaXBfcnRfYnVnYCkuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMDo1Njo0OS42NTk3MjE4MzhaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTExMDAzMjc1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19pY21wX3NlbmRcIixcbiAgICBcImljbXBfbmRvX3NlbmRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHJvdXRpbmcgbG9naWMgaW4gYGljbXBfcm91dGVfbG9va3VwYCB0byBwcmV2ZW50IHRoZSB1c2Ugb2YgYFJUTl9VTlJFQUNIQUJMRWAgcm91dGVzIGZvciBJQ01QIG91dHB1dCwgd2hpY2ggY291bGQgbGVhZCB0byBjYWxsaW5nIGBpcF9ydF9idWdgLiBUaGlzIGlzIGEgbG9naWMgYnVnIGZpeCB0aGF0IHByZXZlbnRzIGluY29ycmVjdCByb3V0aW5nIGJlaGF2aW9yIG9yIHBvdGVudGlhbCBjcmFzaGVzIChlLmcuLCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2Ugb3IgQlVHKCkgaW4gYGlwX3J0X2J1Z2ApLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgdXNlci1zcGFjZSBjb3BpZXMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSUNNUCByb3V0aW5nIGxvZ2ljIHRvIHByb3Blcmx5IGhhbmRsZSBSVE5fVU5SRUFDSEFCTEUgcm91dGVzIHJldHVybmVkIGJ5IGlwX3JvdXRlX2lucHV0KCksIHByZXZlbnRpbmcgdGhlIHVzZSBvZiBpbnZhbGlkIHJvdXRlcyB0aGF0IGNvdWxkIHRyaWdnZXIgaXBfcnRfYnVnLiBUaGlzIGlzIGEgY29yZSBJUHY0IG5ldHdvcmtpbmcgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMDo1Njo0OS42NTk3MjU2MjhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNjg5Njg3NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyYjMwZWU2OGQwYTYyMTY2MTQwMmYwN2ZmMDYxN2E0OTFjMjgyNzA5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDI1IDEwOjU2OjQ3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2ljbXAuYyBiL25ldC9pcHY0L2ljbXAuY1xcbmluZGV4IDBjYWVkZmM3Y2E5MmYuLjczNTBmMDM4MGJlMTcgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvaWNtcC5jXFxuKysrIGIvbmV0L2lwdjQvaWNtcC5jXFxuQEAgLTU4MSwxNiArNTgxLDE1IEBAIHN0YXRpYyBzdHJ1Y3QgcnRhYmxlICppY21wX3JvdXRlX2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmbG93aTQgKmZsNCxcXG4gXFx0XFx0c2tiX2RzdHJlZl9yZXN0b3JlKHNrYl9pbiwgb3JlZmRzdCk7XFxuIFxcbiBcXHRcXHQvKlxcbi1cXHRcXHQgKiBBdCB0aGlzIHBvaW50LCBmbDRfZGVjLmRhZGRyIHNob3VsZCBOT1QgYmUgbG9jYWwgKHdlXFxuLVxcdFxcdCAqIGNoZWNrZWQgZmw0X2RlYy5zYWRkciBhYm92ZSkuIEhvd2V2ZXIsIGEgcmFjZSBjb25kaXRpb25cXG4tXFx0XFx0ICogbWF5IG9jY3VyIGlmIHRoZSBhZGRyZXNzIGlzIGFkZGVkIHRvIHRoZSBpbnRlcmZhY2VcXG4tXFx0XFx0ICogY29uY3VycmVudGx5LiBJbiB0aGF0IGNhc2UsIGlwX3JvdXRlX2lucHV0KCkgcmV0dXJucyBhXFxuLVxcdFxcdCAqIExPQ0FMIHJvdXRlIHdpdGggZHN0Lm91dHB1dD1pcF9ydF9idWcsIHdoaWNoIG11c3Qgbm90XFxuLVxcdFxcdCAqIGJlIHVzZWQgZm9yIG91dHB1dC5cXG4rXFx0XFx0ICogQXQgdGhpcyBwb2ludCwgZmw0X2RlYy5kYWRkciBzaG91bGQgTk9UIGJlIGxvY2FsICh0aGVcXG4rXFx0XFx0ICogYWRkcmVzcyBjYW4gYmUgYWRkZWQgdG8gdGhlIGludGVyZmFjZSBjb25jdXJyZW50bHkpIG9yIHVucm91dGFibGUuXFxuK1xcdFxcdCAqIEluIHRoYXQgY2FzZSwgaXBfcm91dGVfaW5wdXQoKSByZXR1cm5zIGEgTE9DQUwgb3IgVU5SRUFDSEFCTEVcXG4rXFx0XFx0ICogcm91dGUgd2l0aCBkc3Qub3V0cHV0PWlwX3J0X2J1Zywgd2hpY2ggbXVzdCBub3QgYmUgdXNlZCBmb3Igb3V0cHV0LlxcbiBcXHRcXHQgKi9cXG4tXFx0XFx0aWYgKCFlcnIgXFx1MDAyNlxcdTAwMjYgcnQyIFxcdTAwMjZcXHUwMDI2IHJ0Mi1cXHUwMDNlcnRfdHlwZSA9PSBSVE5fTE9DQUwpIHtcXG4tXFx0XFx0XFx0bmV0X3dhcm5fcmF0ZWxpbWl0ZWQoXFxcImRldGVjdGVkIGxvY2FsIHJvdXRlIGZvciAlcEk0IGR1cmluZyBJQ01QIHNlbmRpbmcsIHNyYyAlcEk0XFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZmbDRfZGVjLmRhZGRyLCBcXHUwMDI2Zmw0X2RlYy5zYWRkcik7XFxuK1xcdFxcdGlmICghZXJyIFxcdTAwMjZcXHUwMDI2IHJ0MiBcXHUwMDI2XFx1MDAyNiAocnQyLVxcdTAwM2VydF90eXBlID09IFJUTl9MT0NBTCB8fCBydDItXFx1MDAzZXJ0X3R5cGUgPT0gUlROX1VOUkVBQ0hBQkxFKSkge1xcbitcXHRcXHRcXHRpZiAocnQyLVxcdTAwM2VydF90eXBlID09IFJUTl9MT0NBTClcXG4rXFx0XFx0XFx0XFx0bmV0X3dhcm5fcmF0ZWxpbWl0ZWQoXFxcImRldGVjdGVkIGxvY2FsIHJvdXRlIGZvciAlcEk0IGR1cmluZyBJQ01QIHNlbmRpbmcsIHNyYyAlcEk0XFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZmbDRfZGVjLmRhZGRyLCBcXHUwMDI2Zmw0X2RlYy5zYWRkcik7XFxuIFxcdFxcdFxcdGRzdF9yZWxlYXNlKFxcdTAwMjZydDItXFx1MDAzZWRzdCk7XFxuIFxcdFxcdFxcdGVyciA9IC1FSU5WQUw7XFxuIFxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTY6NTEuMDI5NDA1NjQ1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTA3NzAzNTQ3MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9faWNtcF9zZW5kXCIsXG4gICAgXCJpY21wX25kb19zZW5kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIElDTVAgcm91dGluZyBsb2dpYyB0byBwcm9wZXJseSBoYW5kbGUgUlROX1VOUkVBQ0hBQkxFIHJvdXRlcyByZXR1cm5lZCBieSBpcF9yb3V0ZV9pbnB1dCgpLCBwcmV2ZW50aW5nIHRoZSB1c2Ugb2YgaW52YWxpZCByb3V0ZXMgdGhhdCBjb3VsZCB0cmlnZ2VyIGlwX3J0X2J1Zy4gVGhpcyBpcyBhIGNvcmUgSVB2NCBuZXR3b3JraW5nIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmIzMGVlNjhkMGE2MjE2NjE0MDJmMDdmZjA2MTdhNDkxYzI4MjcwOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDI1IDEwOjU2OjQ3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaWNtcC5jIGIvbmV0L2lwdjQvaWNtcC5jXG5pbmRleCAwY2FlZGZjN2NhOTJmLi43MzUwZjAzODBiZTE3IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaWNtcC5jXG4rKysgYi9uZXQvaXB2NC9pY21wLmNcbkBAIC01ODEsMTYgKzU4MSwxNSBAQCBzdGF0aWMgc3RydWN0IHJ0YWJsZSAqaWNtcF9yb3V0ZV9sb29rdXAoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmxvd2k0ICpmbDQsXG4gXHRcdHNrYl9kc3RyZWZfcmVzdG9yZShza2JfaW4sIG9yZWZkc3QpO1xuIFxuIFx0XHQvKlxuLVx0XHQgKiBBdCB0aGlzIHBvaW50LCBmbDRfZGVjLmRhZGRyIHNob3VsZCBOT1QgYmUgbG9jYWwgKHdlXG4tXHRcdCAqIGNoZWNrZWQgZmw0X2RlYy5zYWRkciBhYm92ZSkuIEhvd2V2ZXIsIGEgcmFjZSBjb25kaXRpb25cbi1cdFx0ICogbWF5IG9jY3VyIGlmIHRoZSBhZGRyZXNzIGlzIGFkZGVkIHRvIHRoZSBpbnRlcmZhY2Vcbi1cdFx0ICogY29uY3VycmVudGx5LiBJbiB0aGF0IGNhc2UsIGlwX3JvdXRlX2lucHV0KCkgcmV0dXJucyBhXG4tXHRcdCAqIExPQ0FMIHJvdXRlIHdpdGggZHN0Lm91dHB1dD1pcF9ydF9idWcsIHdoaWNoIG11c3Qgbm90XG4tXHRcdCAqIGJlIHVzZWQgZm9yIG91dHB1dC5cbitcdFx0ICogQXQgdGhpcyBwb2ludCwgZmw0X2RlYy5kYWRkciBzaG91bGQgTk9UIGJlIGxvY2FsICh0aGVcbitcdFx0ICogYWRkcmVzcyBjYW4gYmUgYWRkZWQgdG8gdGhlIGludGVyZmFjZSBjb25jdXJyZW50bHkpIG9yIHVucm91dGFibGUuXG4rXHRcdCAqIEluIHRoYXQgY2FzZSwgaXBfcm91dGVfaW5wdXQoKSByZXR1cm5zIGEgTE9DQUwgb3IgVU5SRUFDSEFCTEVcbitcdFx0ICogcm91dGUgd2l0aCBkc3Qub3V0cHV0PWlwX3J0X2J1Zywgd2hpY2ggbXVzdCBub3QgYmUgdXNlZCBmb3Igb3V0cHV0LlxuIFx0XHQgKi9cbi1cdFx0aWYgKCFlcnIgXHUwMDI2XHUwMDI2IHJ0MiBcdTAwMjZcdTAwMjYgcnQyLVx1MDAzZXJ0X3R5cGUgPT0gUlROX0xPQ0FMKSB7XG4tXHRcdFx0bmV0X3dhcm5fcmF0ZWxpbWl0ZWQoXCJkZXRlY3RlZCBsb2NhbCByb3V0ZSBmb3IgJXBJNCBkdXJpbmcgSUNNUCBzZW5kaW5nLCBzcmMgJXBJNFxcblwiLFxuLVx0XHRcdFx0XHQgICAgIFx1MDAyNmZsNF9kZWMuZGFkZHIsIFx1MDAyNmZsNF9kZWMuc2FkZHIpO1xuK1x0XHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgcnQyIFx1MDAyNlx1MDAyNiAocnQyLVx1MDAzZXJ0X3R5cGUgPT0gUlROX0xPQ0FMIHx8IHJ0Mi1cdTAwM2VydF90eXBlID09IFJUTl9VTlJFQUNIQUJMRSkpIHtcbitcdFx0XHRpZiAocnQyLVx1MDAzZXJ0X3R5cGUgPT0gUlROX0xPQ0FMKVxuK1x0XHRcdFx0bmV0X3dhcm5fcmF0ZWxpbWl0ZWQoXCJkZXRlY3RlZCBsb2NhbCByb3V0ZSBmb3IgJXBJNCBkdXJpbmcgSUNNUCBzZW5kaW5nLCBzcmMgJXBJNFxcblwiLFxuK1x0XHRcdFx0XHRcdCAgICAgXHUwMDI2Zmw0X2RlYy5kYWRkciwgXHUwMDI2Zmw0X2RlYy5zYWRkcik7XG4gXHRcdFx0ZHN0X3JlbGVhc2UoXHUwMDI2cnQyLVx1MDAzZWRzdCk7XG4gXHRcdFx0ZXJyID0gLUVJTlZBTDtcbiBcdFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTY6NTEuMDI5NDA2ODE1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTIwNzA0OTYzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDb3JlIElDTVAgUm91dGluZyBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgdG91Y2hlcyBgbmV0L2lwdjQvaWNtcC5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgaWNtcF9yb3V0ZV9sb29rdXBgIGZ1bmN0aW9uLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoIOKAkyBhIG5ldyBjaGVjayBpcyBiZWluZyBhZGRlZC4gTGV0J3Mgc2VlLi4uIHRoZSBjb2RlIG5vdyBpbmNsdWRlcyBhIGNoZWNrIGZvciBgcnQyLVx1MDAzZXJ0X3R5cGUgPT0gUlROX1VOUkVBQ0hBQkxFYCBpbiBhZGRpdGlvbiB0byB0aGUgZXhpc3RpbmcgYHJ0Mi1cdTAwM2VydF90eXBlID09IFJUTl9MT0NBTGAgY29uZGl0aW9uLiBJZiBpdCBoaXRzIHRoZSBgUlROX1VOUkVBQ0hBQkxFYCBjYXNlLCB0aGUgZGVzdGluYXRpb24gaXMgcmVsZWFzZWQsIGFuZCBhbiBgZXJyID0gLUVJTlZBTGAgaXMgc2V0LlxuXG5SaWdodCwgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0IHRoZSBjaGFuZ2UgaXMgaW5kZWVkIGluIGBpY21wX3JvdXRlX2xvb2t1cGAgd2l0aGluIGBuZXQvaXB2NC9pY21wLmNgLiBZZXAsIHRoZXJlIGl0IGlzLiBOb3csIHRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGlzIHdvcnRoIGZ1enppbmcuIEhtbSwgaXQncyBjb3JlIElQdjQgSUNNUCByb3V0aW5nIGxvZ2lj4oCmIGFic29sdXRlbHksIHRoaXMgaXMgYSBwcmltZSB0YXJnZXQhIFdlIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBmdW5jdGlvbiBvcGVyYXRlcyBpbiBvcmRlciB0byBpZGVudGlmeSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLlxuXG5UaGUgcHJpbWFyeSBmb2N1cyBoZXJlIGlzLCBvYnZpb3VzbHksIGBpY21wX3JvdXRlX2xvb2t1cGAuIEJ1dCwgd2FpdCwgSSBzZWUgaXQncyBkZWNsYXJlZCBhcyBgc3RhdGljIHN0cnVjdCBydGFibGUgKmljbXBfcm91dGVfbG9va3VwKC4uLilgLiBUaGF0J3MgaW1wb3J0YW50LiBCZWluZyBzdGF0aWMgbWVhbnMgaXQncyBub3QgZGlyZWN0bHkgZXhwb3NlZCBhcyBhIHN5bWJvbCB3ZSBjYW4gY2FsbCBmcm9tIG91dHNpZGUgdGhhdCBmaWxlLiBOb3csIHRoZSBuZXh0IGNydWNpYWwgc3RlcCBpcyBmaWd1cmluZyBvdXQgd2hhdCBjYWxscyB0aGlzIGBpY21wX3JvdXRlX2xvb2t1cGAgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGdyYXBoIHRvIHNlZSB3aGVyZSB0aGlzIG5ldyBsb2dpYyBnZXRzIGludm9rZWQuIFRoYXQncyB0aGUga2V5IHRvIGRlc2lnbmluZyBlZmZlY3RpdmUgZnV6emluZyBjYW1wYWlnbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMzEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMDo1Njo1Ni4yMzY0NTg2MThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgzNjEzODQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImljbXBfcm91dGVfbG9va3VwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L2ljbXAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9pY21wLmM9NDgzPXN0YXRpYyBzdHJ1Y3QgbmV0X2RldmljZSAqaWNtcF9nZXRfcm91dGVfbG9va3VwX2RldihzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L2lwdjQvaWNtcC5jLTQ5My1cXG5uZXQvaXB2NC9pY21wLmM6NDk0OnN0YXRpYyBzdHJ1Y3QgcnRhYmxlICppY21wX3JvdXRlX2xvb2t1cChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmbG93aTQgKmZsNCxcXG5uZXQvaXB2NC9pY21wLmMtNDk1LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBza19idWZmICpza2JfaW4sXFxuLS1cXG5uZXQvaXB2NC9pY21wLmM9ODEzPXZvaWQgX19pY21wX3NlbmQoc3RydWN0IHNrX2J1ZmYgKnNrYl9pbiwgaW50IHR5cGUsIGludCBjb2RlLCBfX2JlMzIgaW5mbyxcXG4tLVxcbm5ldC9pcHY0L2ljbXAuYy05NjgtXFxubmV0L2lwdjQvaWNtcC5jOjk2OTpcXHRydCA9IGljbXBfcm91dGVfbG9va3VwKG5ldCwgXFx1MDAyNmZsNCwgc2tiX2luLCBpcGgsIHNhZGRyLFxcbm5ldC9pcHY0L2ljbXAuYy05NzAtXFx0XFx0XFx0ICAgICAgIGluZXRfZHNmaWVsZF90b19kc2NwKHRvcyksIG1hcmssIHR5cGUsIGNvZGUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEwOjU2OjU2LjkyMDA3NjY2NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMjYxNTU3MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgSUNNUCBTZW5kIFBhdGgqKlxuXG5Pa2F5LCBzbyBgX19pY21wX3NlbmRgIGlzIHRoZSBmdW5jdGlvbiB3ZSdyZSBsb29raW5nIGF0LiBUaGUgY29kZSBzdWdnZXN0cyB0aGF0IGl0IGNhbGxzIGBpY21wX3JvdXRlX2xvb2t1cGAsIHdoaWNoIG1ha2VzIHNlbnNlIGZvciBoYW5kbGluZyByb3V0aW5nIGNvbnNpZGVyYXRpb25zIGJlZm9yZSBzZW5kaW5nIElDTVAgcGFja2V0cy4gSG1tLCBub3cgdGhhdCBJIHRoaW5rIGFib3V0IGl0LCBJJ20gcHJldHR5IHN1cmUgYF9faWNtcF9zZW5kYCBpcyBub3QgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIG1lYW5zIGl0J3MgYXZhaWxhYmxlIGZvciBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsIG9yIGV2ZW4gZXh0ZXJuYWwgbW9kdWxlcyB0byB1c2UuIEhvbGQgb24gYSBzZWNvbmQuLi4gaXMgdGhhdCByaWdodD8gTGV0J3MgdmVyaWZ5IHRoYXQgcXVpY2tseS4gSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgX19pY21wX3NlbmRgIGlzIGFjdHVhbGx5IGV4cG9ydGVkLiBUaGF0J3MgYSBrZXkgZGV0YWlsIHRvIHVuZGVyc3RhbmQgaG93IGJyb2FkbHkgdGhpcyBmdW5jdGlvbiBjYW4gYmUgbGV2ZXJhZ2VkIGFuZCB3aGF0IGl0cyBwb3RlbnRpYWwgc2VjdXJpdHkgaW1wbGljYXRpb25zIG1pZ2h0IGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTY3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTc6MDAuMjQ2MjM0OTIxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2ODY4NzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9faWNtcF9zZW5kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L2ljbXAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9pY21wLmM9NzM4PWljbXBfZXh0X2FwcGVuZChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2JfaW4sIHN0cnVjdCBpY21waGRyICppY21waCxcXG4tLVxcbm5ldC9pcHY0L2ljbXAuYy04MTItXFxubmV0L2lwdjQvaWNtcC5jOjgxMzp2b2lkIF9faWNtcF9zZW5kKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCB0eXBlLCBpbnQgY29kZSwgX19iZTMyIGluZm8sXFxubmV0L2lwdjQvaWNtcC5jLTgxNC1cXHRcXHQgY29uc3Qgc3RydWN0IGluZXRfc2tiX3Bhcm0gKnBhcm0pXFxuLS1cXG5uZXQvaXB2NC9pY21wLmMtMTAyNi19XFxubmV0L2lwdjQvaWNtcC5jOjEwMjc6RVhQT1JUX1NZTUJPTChfX2ljbXBfc2VuZCk7XFxubmV0L2lwdjQvaWNtcC5jLTEwMjgtXFxuLS1cXG5uZXQvaXB2NC9pY21wLmM9MTAzMT12b2lkIGljbXBfbmRvX3NlbmQoc3RydWN0IHNrX2J1ZmYgKnNrYl9pbiwgaW50IHR5cGUsIGludCBjb2RlLCBfX2JlMzIgaW5mbylcXG4tLVxcbm5ldC9pcHY0L2ljbXAuYy0xMDQyLVxcdGlmICghY3QgfHwgIShSRUFEX09OQ0UoY3QtXFx1MDAzZXN0YXR1cykgXFx1MDAyNiBJUFNfTkFUX01BU0spKSB7XFxubmV0L2lwdjQvaWNtcC5jOjEwNDM6XFx0XFx0X19pY21wX3NlbmQoc2tiX2luLCB0eXBlLCBjb2RlLCBpbmZvLCBcXHUwMDI2cGFybSk7XFxubmV0L2lwdjQvaWNtcC5jLTEwNDQtXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L2lwdjQvaWNtcC5jLTEwNTgtXFx0aXBfaGRyKHNrYl9pbiktXFx1MDAzZXNhZGRyID0gY3QtXFx1MDAzZXR1cGxlaGFzaFtkaXJdLnR1cGxlLnNyYy51My5pcDtcXG5uZXQvaXB2NC9pY21wLmM6MTA1OTpcXHRfX2ljbXBfc2VuZChza2JfaW4sIHR5cGUsIGNvZGUsIGluZm8sIFxcdTAwMjZwYXJtKTtcXG5uZXQvaXB2NC9pY21wLmMtMTA2MC1cXHRpcF9oZHIoc2tiX2luKS1cXHUwMDNlc2FkZHIgPSBvcmlnX2lwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMDo1NzowMC4yOTMxMTA0OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MDg5OTc3MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgSUNNUCBTZW5kIFBhdGgqKlxuXG5BbHJpZ2h0LCBgX19pY21wX3NlbmRgIHNlZW1zIGxpa2UgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyBJQ01QIHBhY2tldHMgYXJlIGJlaW5nIHNlbnQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoYXQuIEJ1dCBiZWZvcmUgSSBnbyB0b28gZGVlcCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHNjb3BlLiBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGRpcmVjdCBjYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGBpY21wX3NlbmRgIGlzIGp1c3QgYSBtYWNybywgb3IgYW4gaW5saW5lIGZ1bmN0aW9uIHRoYXQgZXhwYW5kcyBpbnRvIHNvbWV0aGluZyBlbHNlLCBvciBpZiBpdCdzIGEgXCJyZWFsXCIgZnVuY3Rpb24gdGhhdCdzIGJlaW5nIGNhbGxlZCBieSBvdGhlciBmdW5jdGlvbnMgaW4gdGhlIG5ldHdvcmtpbmcgc3RhY2suIEdyYXNwaW5nIHRoZSBjYWxsIGhpZXJhcmNoeSBhbmQgaW5saW5pbmcgYmVoYXZpb3IgaXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kaW5nIHRoZSB3aG9sZSBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjozODU2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTc6MDQuMTAyMTExMDc2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczNjg2MjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImljbXBfc2VuZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL25ldC9pY21wLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvaWNtcC5oPTM3PXN0cnVjdCBuZXQ7XFxuaW5jbHVkZS9uZXQvaWNtcC5oLTM4LVxcbmluY2x1ZGUvbmV0L2ljbXAuaDozOTp2b2lkIF9faWNtcF9zZW5kKHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCB0eXBlLCBpbnQgY29kZSwgX19iZTMyIGluZm8sXFxuaW5jbHVkZS9uZXQvaWNtcC5oLTQwLVxcdFxcdCBjb25zdCBzdHJ1Y3QgaW5ldF9za2JfcGFybSAqcGFybSk7XFxuaW5jbHVkZS9uZXQvaWNtcC5oOjQxOnN0YXRpYyBpbmxpbmUgdm9pZCBpY21wX3NlbmQoc3RydWN0IHNrX2J1ZmYgKnNrYl9pbiwgaW50IHR5cGUsIGludCBjb2RlLCBfX2JlMzIgaW5mbylcXG5pbmNsdWRlL25ldC9pY21wLmgtNDIte1xcbmluY2x1ZGUvbmV0L2ljbXAuaDo0MzpcXHRfX2ljbXBfc2VuZChza2JfaW4sIHR5cGUsIGNvZGUsIGluZm8sIElQQ0Ioc2tiX2luKSk7XFxuaW5jbHVkZS9uZXQvaWNtcC5oLTQ0LX1cXG4tLVxcbmluY2x1ZGUvbmV0L2ljbXAuaD00OT1zdGF0aWMgaW5saW5lIHZvaWQgaWNtcF9uZG9fc2VuZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgdHlwZSwgaW50IGNvZGUsIF9fYmUzMiBpbmZvKVxcbi0tXFxuaW5jbHVkZS9uZXQvaWNtcC5oLTUzLVxcdG1lbXNldChcXHUwMDI2cGFybSwgMCwgc2l6ZW9mKHBhcm0pKTtcXG5pbmNsdWRlL25ldC9pY21wLmg6NTQ6XFx0X19pY21wX3NlbmQoc2tiX2luLCB0eXBlLCBjb2RlLCBpbmZvLCBcXHUwMDI2cGFybSk7XFxuaW5jbHVkZS9uZXQvaWNtcC5oLTU1LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTc6MDQuMTc1ODAxMzA1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUxMjI1ODMxNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC5cblxuKipBbmFseXppbmcgSUNNUCBTZW5kIEZ1bmN0aW9ucyoqXG5cbkFscmlnaHQsIHNvIGBfX2ljbXBfc2VuZGAgaXMgdGhlIHByaW1hcnkgZW50cnkgcG9pbnQsIHRoYXQgbXVjaCBJJ20gZmFpcmx5IGNlcnRhaW4gb2YuIE5vdywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueXRoaW5nLiBXaGF0J3MgdGhlIGRlYWwgd2l0aCBgaWNtcF9uZG9fc2VuZGA/IEhtbW0sIGlzIHRoYXQgdGhlIG9uZSBkZWZpbmVkIGluIGBuZXQvaXB2NC9pY21wLmNgPyBBaCwgcmlnaHQsIHRoYXQncyB3aGVyZSBJIG5lZWQgdG8gbG9vay4gQ29ycmVjdCwgYGljbXBfbmRvX3NlbmRgIGlzIGluZGVlZCB3aXRoaW4gYG5ldC9pcHY0L2ljbXAuY2AuIEdvdCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQwMiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEwOjU3OjA4LjY4ODA2MTkyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDI1MDE2MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWNtcF9uZG9fc2VuZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9pY21wLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvaWNtcC5jPTEwMjc9RVhQT1JUX1NZTUJPTChfX2ljbXBfc2VuZCk7XFxuLS1cXG5uZXQvaXB2NC9pY21wLmMtMTAzMC0jaW5jbHVkZSBcXHUwMDNjbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2suaFxcdTAwM2VcXG5uZXQvaXB2NC9pY21wLmM6MTAzMTp2b2lkIGljbXBfbmRvX3NlbmQoc3RydWN0IHNrX2J1ZmYgKnNrYl9pbiwgaW50IHR5cGUsIGludCBjb2RlLCBfX2JlMzIgaW5mbylcXG5uZXQvaXB2NC9pY21wLmMtMTAzMi17XFxuLS1cXG5uZXQvaXB2NC9pY21wLmMtMTA2My19XFxubmV0L2lwdjQvaWNtcC5jOjEwNjQ6RVhQT1JUX1NZTUJPTChpY21wX25kb19zZW5kKTtcXG5uZXQvaXB2NC9pY21wLmMtMTA2NS0jZW5kaWZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTc6MDguNzkwNTY4MzA4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4Mjc0Mjk3MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJUHY0IFJvdXRpbmcgQnVnIEZpeCoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgbmV3IHBhdGNoIHRvIHJldmlldy4gTXkgaW1tZWRpYXRlIGZvY3VzIHN5bWJvbHMgYXJlIGdvaW5nIHRvIGJlIGBfX2ljbXBfc2VuZGAgYW5kIGBpY21wX25kb19zZW5kYC4gVGhvc2UgYXJlIHVzdWFsbHkgZ29vZCBpbmRpY2F0b3JzIG9mIHdoYXQncyBnb2luZyBvbiB3aXRoIElDTVAgaGFuZGxpbmcsIHdoaWNoIGlzIHJlbGV2YW50IGhlcmUuIFRoZSBwYXRjaCBkZXNjcmlwdGlvbiBtZW50aW9ucyBhIGJ1ZyBpbiBgaXBfcm91dGVfaW5wdXQoKWAgcmV0dXJuaW5nIGFuIGBVTlJFQUNIQUJMRWAgcm91dGUgd2hlcmUgdGhlIGRlc3RpbmF0aW9uJ3MgYG91dHB1dGAgaXMgaW5jb3JyZWN0bHkgc2V0IHRvIGBpcF9ydF9idWdgLiBUaGF0IHNvdW5kcyBsaWtlIGEgY2xhc3NpYyByb3V0aW5nIHByb2JsZW0sIGFuZCB0aGUgZWZmZWN0IGlzIHNlcmlvdXM6IGEgY3Jhc2ggb3Igd2FybmluZyB3aGVuIHRoZSBmYXVsdHkgcm91dGUgaXMgYWN0dWFsbHkgdXNlZC5cblxuVGhpcyBpcyBhIHByZXR0eSBmdW5kYW1lbnRhbCBjaGFuZ2U7IGl0IHRvdWNoZXMgY29yZSBJUHY0IGxvZ2ljLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIGltcGxpY2F0aW9ucy4gSXQncyBub3QgY2xlYXIgZnJvbSB0aGUgZGVzY3JpcHRpb24gd2hhdCBjb25maWcgb3B0aW9ucyBhcmUgaW52b2x2ZWQuIGBDT05GSUdfSU5FVGAgaXMgdGhlIG9idmlvdXMgb25lLCBvciBtYXliZSBldmVuIGBDT05GSUdfSVBfTVVMVElDQVNUYD8gR290dGEgY2hlY2sgdGhlIGBuZXQvaXB2NC9LY29uZmlnYCBmaWxlIHRvIGJlIHN1cmUuIEl0J3MgcHJvYmFibHkganVzdCBzdGFuZGFyZCBJUHY0IHN0dWZmLCBidXQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbid0IG1pc3MgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MTMsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTc6MTMuNjE4MDAxMjA3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDEwMjMwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSU5FVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9MzMwPWNvbmZpZyBORVRfRk9VX0lQX1RVTk5FTFNcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzM4LVxcbm5ldC9pcHY0L0tjb25maWc6MzM5OmNvbmZpZyBJTkVUX0FIXFxubmV0L2lwdjQvS2NvbmZpZy0zNDAtXFx0dHJpc3RhdGUgXFxcIklQOiBBSCB0cmFuc2Zvcm1hdGlvblxcXCJcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzUzLVxcbm5ldC9pcHY0L0tjb25maWc6MzU0OmNvbmZpZyBJTkVUX0VTUFxcbm5ldC9pcHY0L0tjb25maWctMzU1LVxcdHRyaXN0YXRlIFxcXCJJUDogRVNQIHRyYW5zZm9ybWF0aW9uXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zNjgtXFxubmV0L2lwdjQvS2NvbmZpZzozNjk6Y29uZmlnIElORVRfRVNQX09GRkxPQURcXG5uZXQvaXB2NC9LY29uZmlnLTM3MC1cXHR0cmlzdGF0ZSBcXFwiSVA6IEVTUCB0cmFuc2Zvcm1hdGlvbiBvZmZsb2FkXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zODEtXFxubmV0L2lwdjQvS2NvbmZpZzozODI6Y29uZmlnIElORVRfRVNQSU5UQ1BcXG5uZXQvaXB2NC9LY29uZmlnLTM4My1cXHRib29sIFxcXCJJUDogRVNQIGluIFRDUCBlbmNhcHN1bGF0aW9uIChSRkMgODIyOSlcXFwiXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTM5My1cXG5uZXQvaXB2NC9LY29uZmlnOjM5NDpjb25maWcgSU5FVF9JUENPTVBcXG5uZXQvaXB2NC9LY29uZmlnLTM5NS1cXHR0cmlzdGF0ZSBcXFwiSVA6IElQQ29tcCB0cmFuc2Zvcm1hdGlvblxcXCJcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctNDAzLVxcbm5ldC9pcHY0L0tjb25maWc6NDA0OmNvbmZpZyBJTkVUX1RBQkxFX1BFUlRVUkJfT1JERVJcXG5uZXQvaXB2NC9LY29uZmlnLTQwNS1cXHRpbnQgXFxcIklORVQ6IFNvdXJjZSBwb3J0IHBlcnR1cmJhdGlvbiB0YWJsZSBzaXplIChhcyBwb3dlciBvZiAyKVxcXCIgaWYgRVhQRVJUXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTQxMy1cXG5uZXQvaXB2NC9LY29uZmlnOjQxNDpjb25maWcgSU5FVF9YRlJNX1RVTk5FTFxcbm5ldC9pcHY0L0tjb25maWctNDE1LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTQxOC1cXG5uZXQvaXB2NC9LY29uZmlnOjQxOTpjb25maWcgSU5FVF9UVU5ORUxcXG5uZXQvaXB2NC9LY29uZmlnLTQyMC1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy00MjItXFxubmV0L2lwdjQvS2NvbmZpZzo0MjM6Y29uZmlnIElORVRfRElBR1xcbm5ldC9pcHY0L0tjb25maWctNDI0LVxcdHRyaXN0YXRlIFxcXCJJTkVUOiBzb2NrZXQgbW9uaXRvcmluZyBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTQzNC1cXG5uZXQvaXB2NC9LY29uZmlnOjQzNTpjb25maWcgSU5FVF9UQ1BfRElBR1xcbm5ldC9pcHY0L0tjb25maWctNDM2LVxcdGRlcGVuZHMgb24gSU5FVF9ESUFHXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTQzOC1cXG5uZXQvaXB2NC9LY29uZmlnOjQzOTpjb25maWcgSU5FVF9VRFBfRElBR1xcbm5ldC9pcHY0L0tjb25maWctNDQwLVxcdHRyaXN0YXRlIFxcXCJVRFA6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctNDQ2LVxcbm5ldC9pcHY0L0tjb25maWc6NDQ3OmNvbmZpZyBJTkVUX1JBV19ESUFHXFxubmV0L2lwdjQvS2NvbmZpZy00NDgtXFx0dHJpc3RhdGUgXFxcIlJBVzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy00NTQtXFxubmV0L2lwdjQvS2NvbmZpZzo0NTU6Y29uZmlnIElORVRfRElBR19ERVNUUk9ZXFxubmV0L2lwdjQvS2NvbmZpZy00NTYtXFx0Ym9vbCBcXFwiSU5FVDogYWxsb3cgcHJpdmlsZWdlZCBwcm9jZXNzIHRvIGFkbWluaXN0cmF0aXZlbHkgY2xvc2Ugc29ja2V0c1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTc6MTMuNjgyMTA5MTQ2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk4OTIzNjQ5NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKktjb25maWcgTG9jYXRpb24gb2YgSU5FVCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYElORVRgIGlzIGRlZmluZWQgd2l0aGluIGBuZXQvS2NvbmZpZ2AuIFRoYXQncyBub3Qgc3VycHJpc2luZywgcmVhbGx5LiBJdCBjb25maXJtcyBteSB1bmRlcnN0YW5kaW5nIHRoYXQgdGhlIGNvcmUgbmV0d29yay1yZWxhdGVkIGNvbmZpZ3VyYXRpb25zLCBpbmNsdWRpbmcgdGhlIGJyb2FkZXIgSW50ZXJuZXQgUHJvdG9jb2wgc3VpdGUsIGFyZSBtYW5hZ2VkIHdpdGhpbiB0aGF0IHNlY3Rpb24gb2YgdGhlIEtjb25maWcgaGllcmFyY2h5LiBJdCdzIGEgc3RhbmRhcmQgYW5kIGxvZ2ljYWwgcGxhY2UgdG8gZmluZCBpdCwgZ2l2ZW4gdGhlIHNjb3BlIGFuZCBkZXBlbmRlbmNpZXMgaW52b2x2ZWQgd2l0aCBuZXR3b3JrIHByb3RvY29sIHN1cHBvcnQuIFRoaXMgYWxzbyB0ZWxscyBtZSB0byBsb29rIHRoZXJlIGZvciByZWxhdGVkIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBpZiBJIG5lZWQgdG8gYWRqdXN0IG9yIGV4dGVuZCBuZXR3b3JrIHNldHRpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDA1LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTc6MjMuNTc0NDc2MTQxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODczMjI3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSU5FVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvS2NvbmZpZz05OT1jb25maWcgTkVUX0hBTkRTSEFLRV9LVU5JVF9URVNUXFxuLS1cXG5uZXQvS2NvbmZpZy0xMTMtXFxubmV0L0tjb25maWc6MTE0OmNvbmZpZyBJTkVUXFxubmV0L0tjb25maWctMTE1LVxcdGJvb2wgXFxcIlRDUC9JUCBuZXR3b3JraW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMDo1NzoyMy42MzMyMTM3M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjM1NzE0ODM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYElORVRgIENvbmZpZ3VyYXRpb24gZm9yIElDTVAgTW9kaWZpY2F0aW9uKipcblxuT2theSwgc28gdGhlIGBJTkVUYCBjb25maWd1cmF0aW9uIGlzIHRoZSBzdGFydGluZyBwb2ludCBoZXJlLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGlzIHBhdGNoIG5lY2Vzc2l0YXRlcyBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBhZGp1c3RtZW50cy4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSB0b3VjaGVzIGBuZXQvaXB2NC9pY21wLmNgLCBhbmQgSSBrbm93IHRoYXQgdGhpcyBmaWxlIGlzIG9ubHkgY29tcGlsZWQgd2hlbiBgQ09ORklHX0lORVRgIGlzIGVuYWJsZWQuIFRoYXQncyBhIGdvb2Qgc2lnbiwgYnV0IEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGVyZSBhcmVuJ3QgYW55IGRlcGVuZGVuY2llcyBvciBoaWRkZW4gZmxhZ3MuIFRpbWUgdG8gZGlnIGludG8gYG5ldC9pcHY0L01ha2VmaWxlYCBhbmQgc2VlIGlmIGFueXRoaW5nIGVsc2UgaXMgcmVsZXZhbnQgaW4gdGhhdCBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjQ1LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTc6MjYuODY4OTMzODA2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzUwMTk3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpY21wLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcXFxcbi0tXFxubmV0L2lwdjQvTWFrZWZpbGUtMTMtXFx0ICAgICB0Y3Bfb2ZmbG9hZC5vIHRjcF9wbGIubyBkYXRhZ3JhbS5vIHJhdy5vIHVkcC5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZToxNDpcXHQgICAgIHVkcF9vZmZsb2FkLm8gYXJwLm8gaWNtcC5vIGRldmluZXQubyBhZl9pbmV0Lm8gaWdtcC5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xNS1cXHQgICAgIGZpYl9mcm9udGVuZC5vIGZpYl9zZW1hbnRpY3MubyBmaWJfdHJpZS5vIGZpYl9ub3RpZmllci5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTc6MjYuOTY2NDQxNTA0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MTU5OTg3MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgSUNNUCBSb3V0aW5nIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBJQ01QIGltcGxlbWVudGF0aW9uLiBNeSBpbml0aWFsIHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGlzIGNvZGUgaXMgdW5jb25kaXRpb25hbGx5IGNvbXBpbGVkIGFzIHBhcnQgb2YgdGhlIGBuZXQvaXB2NC9gIG1vZHVsZS4gVGhhdCdzIGEga2V5IHN0YXJ0aW5nIHBvaW50LiBBbmQgb2YgY291cnNlLCBgbmV0L2lwdjQvYCBpdHNlbGYgaXMgb25seSBidWlsdCB3aGVuIGBDT05GSUdfSU5FVGAgaXMgZW5hYmxlZC4gVGhlcmVmb3JlLCBmb3IgdGhpcyBzcGVjaWZpYyBwaWVjZSB0byBiZSBpbmNsdWRlZCwgYENPTkZJR19JTkVUYCBpcyB0aGUgb25seSBjb25maWd1cmF0aW9uIG9wdGlvbiBJIG5lZWQgdG8gYmUgY29uY2VybmVkIHdpdGguIEdvb2QsIHRoYXQgc2ltcGxpZmllcyB0aGluZ3MuXG5cbk5vdywgbXkgZm9jdXMgbmFycm93cyBkb3duIHRvIHRoZSBmdW5jdGlvbnMgYF9faWNtcF9zZW5kYCBhbmQgYGljbXBfbmRvX3NlbmRgLiBUaGVzZSBhcmUgdGhlIHNwZWNpZmljIHN5bWJvbHMgdGhhdCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kLCBhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZW0gYW5kIGBpY21wX3JvdXRlX2xvb2t1cGAuXG5cbkxldCdzIGRvdWJsZS1jaGVjayBob3cgYGljbXBfcm91dGVfbG9va3VwYCBnZXRzIGNhbGxlZC4gRnJvbSB3aGF0IEkgcmVjYWxsLCBgX19pY21wX3NlbmRgIGlzICphKiBjYWxsZXIgb2YgYGljbXBfcm91dGVfbG9va3VwYC4gQnV0IGlzIGl0IHRoZSAqb25seSogb25lPyBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHRoYXQgSSdtIG5vdCBtaXNzaW5nIGFueSBvdGhlciBwb3RlbnRpYWwgZW50cnkgcG9pbnRzIGludG8gdGhlIHJvdXRpbmcgbG9va3VwIGZ1bmN0aW9uLiBUaGF0J3MgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uIHRvIG5haWwgZG93biBiZWZvcmUgSSBtb3ZlIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjEyLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEwOjU3OjMzLjc4MjQ0MjQyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY4NTE0NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWNtcF9yb3V0ZV9sb29rdXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvaWNtcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L2ljbXAuYz00ODM9c3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlICppY21wX2dldF9yb3V0ZV9sb29rdXBfZGV2KHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2NC9pY21wLmMtNDkzLVxcbm5ldC9pcHY0L2ljbXAuYzo0OTQ6c3RhdGljIHN0cnVjdCBydGFibGUgKmljbXBfcm91dGVfbG9va3VwKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZsb3dpNCAqZmw0LFxcbm5ldC9pcHY0L2ljbXAuYy00OTUtXFx0XFx0XFx0XFx0XFx0c3RydWN0IHNrX2J1ZmYgKnNrYl9pbixcXG4tLVxcbm5ldC9pcHY0L2ljbXAuYz04MTM9dm9pZCBfX2ljbXBfc2VuZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiX2luLCBpbnQgdHlwZSwgaW50IGNvZGUsIF9fYmUzMiBpbmZvLFxcbi0tXFxubmV0L2lwdjQvaWNtcC5jLTk2OC1cXG5uZXQvaXB2NC9pY21wLmM6OTY5OlxcdHJ0ID0gaWNtcF9yb3V0ZV9sb29rdXAobmV0LCBcXHUwMDI2Zmw0LCBza2JfaW4sIGlwaCwgc2FkZHIsXFxubmV0L2lwdjQvaWNtcC5jLTk3MC1cXHRcXHRcXHQgICAgICAgaW5ldF9kc2ZpZWxkX3RvX2RzY3AodG9zKSwgbWFyaywgdHlwZSwgY29kZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTc6MzMuODg5Mjk5NDg4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3MjM0NDg2MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIElDTVAgUm91dGluZyBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgcGlubmVkIGRvd24gdGhlIGtleSBlbnRyeSBwb2ludHM6IGBfX2ljbXBfc2VuZGAgYW5kIGBpY21wX25kb19zZW5kYC4gSXQncyBwcmV0dHkgY2xlYXIgdGhvc2UgYXJlIG15IGZvY3VzIHN5bWJvbHMgYmVjYXVzZSBgX19pY21wX3NlbmRgIGlzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQgZGlyZWN0bHkgY2FsbHMgaXQuIEFuZCBgaWNtcF9uZG9fc2VuZGAgYWxzbyBjYWxscyBpdCwgc28gdGhvc2UgYXJlIG15IGhvb2tzLlxuXG5Ob3csIHJldmlzaXRpbmcgdGhlIHBhdGNoIGl0c2VsZiwgSSBzZWUgaXQncyBhIGZ1bmN0aW9uYWwgY29ycmVjdGlvbi4gVGhlIG9yaWdpbmFsIGNvZGUgaGFkIGEgZmxhdyDigJMgaXQgd2Fzbid0IGNvcnJlY3RseSBoYW5kbGluZyBgUlROX1VOUkVBQ0hBQkxFYCByb3V0ZXMgaW4gSUNNUCBvdXRwdXQsIGFuZCB0aGF0IHdhcyBsZWFkaW5nIHRvIHBvdGVudGlhbGx5IGludmFsaWQgcm91dGVzIGJlaW5nIHVzZWQuIFRoaXMgY291bGQgdHJpZ2dlciBgaXBfcnRfYnVnYCwgd2hpY2ggd2UgKmRvbid0KiB3YW50LlxuXG5UaGUgcGF0Y2gncyBtb2RpZmljYXRpb24gbm93IGNvcnJlY3RseSBjaGVja3MgZm9yICpib3RoKiBgUlROX0xPQ0FMYCBhbmQgYFJUTl9VTlJFQUNIQUJMRWAgcm91dGUgdHlwZXMuIFRoZSBvcmlnaW5hbCBidWcgb25seSBjb25zaWRlcmVkIExPQ0FMIHJvdXRlcy4gVGhpcyBpcyBjcnVjaWFsIGZvciByb2J1c3Qgcm91dGluZyBiZWhhdmlvciwgYW5kIHRoaXMgKmRlZmluaXRlbHkqIHdhcnJhbnRzIGZ1enppbmcuIEl0J3MgYSBmdW5kYW1lbnRhbCBjaGFuZ2UgaW4gaG93IHRoZSBJUHY0IG5ldHdvcmtpbmcgc3RhY2sgKnNob3VsZCogaGFuZGxlIGNlcnRhaW4gcm91dGluZyBlZGdlIGNhc2VzLiBXZSdyZSBwcmV2ZW50aW5nIGEgZnVuY3Rpb25hbCBlcnJvciB0aGF0IGNvdWxkIGNhdXNlIHN5c3RlbSBpbnN0YWJpbGl0eS4gSSBzZWUgdmFsdWUgaW4gZnV6emluZyB0aGUgZGlmZmVyZW5jZSB0byBjaGVjayBmb3IgcmVncmVzc2lvbnMuXG5cbkdpdmVuIGl0cyBjb3JlIG5hdHVyZSwgSSdsbCBuZWVkIGBJTkVUYCBlbmFibGVkIGZvciB0aGUgZnV6emluZy5cblxuQWxyaWdodCwgSSdtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI2OCwiT3V0cHV0VG9rZW5zIjoxMDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTc6NDEuNjEyNzUxNTc5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg3MDA2MDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19pY21wX3NlbmRcIixcbiAgICBcImljbXBfbmRvX3NlbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSUNNUCByb3V0aW5nIGxvZ2ljIHRvIHByb3Blcmx5IGhhbmRsZSBSVE5fVU5SRUFDSEFCTEUgcm91dGVzIHJldHVybmVkIGJ5IGlwX3JvdXRlX2lucHV0KCksIHByZXZlbnRpbmcgdGhlIHVzZSBvZiBpbnZhbGlkIHJvdXRlcyB0aGF0IGNvdWxkIHRyaWdnZXIgaXBfcnRfYnVnLiBUaGlzIGlzIGEgY29yZSBJUHY0IG5ldHdvcmtpbmcgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2ljbXBfc2VuZFwiLFxuICAgIFwiaWNtcF9uZG9fc2VuZFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJQ01QIHJvdXRpbmcgbG9naWMgdG8gcHJvcGVybHkgaGFuZGxlIFJUTl9VTlJFQUNIQUJMRSByb3V0ZXMgcmV0dXJuZWQgYnkgaXBfcm91dGVfaW5wdXQoKSwgcHJldmVudGluZyB0aGUgdXNlIG9mIGludmFsaWQgcm91dGVzIHRoYXQgY291bGQgdHJpZ2dlciBpcF9ydF9idWcuIFRoaXMgaXMgYSBjb3JlIElQdjQgbmV0d29ya2luZyBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEwOjU3OjQxLjc5OTc2NDI5NloiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njk2OTk1ODY2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEwOjU3OjQxLjgwMDI1MDI4NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2OTY5NDY3NzIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyByb3V0aW5nIGxvZ2ljIGluIGBpY21wX3JvdXRlX2xvb2t1cGAgdG8gcHJldmVudCB0aGUgdXNlIG9mIGBSVE5fVU5SRUFDSEFCTEVgIHJvdXRlcyBmb3IgSUNNUCBvdXRwdXQsIHdoaWNoIGNvdWxkIGxlYWQgdG8gY2FsbGluZyBgaXBfcnRfYnVnYC4gVGhpcyBpcyBhIGxvZ2ljIGJ1ZyBmaXggdGhhdCBwcmV2ZW50cyBpbmNvcnJlY3Qgcm91dGluZyBiZWhhdmlvciBvciBwb3RlbnRpYWwgY3Jhc2hlcyAoZS5nLiwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIG9yIEJVRygpIGluIGBpcF9ydF9idWdgKS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMmIzMGVlNjhkMGE2MjE2NjE0MDJmMDdmZjA2MTdhNDkxYzI4MjcwOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDI1IDEwOjU2OjQ3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaWNtcC5jIGIvbmV0L2lwdjQvaWNtcC5jXG5pbmRleCAwY2FlZGZjN2NhOTJmLi43MzUwZjAzODBiZTE3IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaWNtcC5jXG4rKysgYi9uZXQvaXB2NC9pY21wLmNcbkBAIC01ODEsMTYgKzU4MSwxNSBAQCBzdGF0aWMgc3RydWN0IHJ0YWJsZSAqaWNtcF9yb3V0ZV9sb29rdXAoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZmxvd2k0ICpmbDQsXG4gXHRcdHNrYl9kc3RyZWZfcmVzdG9yZShza2JfaW4sIG9yZWZkc3QpO1xuIFxuIFx0XHQvKlxuLVx0XHQgKiBBdCB0aGlzIHBvaW50LCBmbDRfZGVjLmRhZGRyIHNob3VsZCBOT1QgYmUgbG9jYWwgKHdlXG4tXHRcdCAqIGNoZWNrZWQgZmw0X2RlYy5zYWRkciBhYm92ZSkuIEhvd2V2ZXIsIGEgcmFjZSBjb25kaXRpb25cbi1cdFx0ICogbWF5IG9jY3VyIGlmIHRoZSBhZGRyZXNzIGlzIGFkZGVkIHRvIHRoZSBpbnRlcmZhY2Vcbi1cdFx0ICogY29uY3VycmVudGx5LiBJbiB0aGF0IGNhc2UsIGlwX3JvdXRlX2lucHV0KCkgcmV0dXJucyBhXG4tXHRcdCAqIExPQ0FMIHJvdXRlIHdpdGggZHN0Lm91dHB1dD1pcF9ydF9idWcsIHdoaWNoIG11c3Qgbm90XG4tXHRcdCAqIGJlIHVzZWQgZm9yIG91dHB1dC5cbitcdFx0ICogQXQgdGhpcyBwb2ludCwgZmw0X2RlYy5kYWRkciBzaG91bGQgTk9UIGJlIGxvY2FsICh0aGVcbitcdFx0ICogYWRkcmVzcyBjYW4gYmUgYWRkZWQgdG8gdGhlIGludGVyZmFjZSBjb25jdXJyZW50bHkpIG9yIHVucm91dGFibGUuXG4rXHRcdCAqIEluIHRoYXQgY2FzZSwgaXBfcm91dGVfaW5wdXQoKSByZXR1cm5zIGEgTE9DQUwgb3IgVU5SRUFDSEFCTEVcbitcdFx0ICogcm91dGUgd2l0aCBkc3Qub3V0cHV0PWlwX3J0X2J1Zywgd2hpY2ggbXVzdCBub3QgYmUgdXNlZCBmb3Igb3V0cHV0LlxuIFx0XHQgKi9cbi1cdFx0aWYgKCFlcnIgXHUwMDI2XHUwMDI2IHJ0MiBcdTAwMjZcdTAwMjYgcnQyLVx1MDAzZXJ0X3R5cGUgPT0gUlROX0xPQ0FMKSB7XG4tXHRcdFx0bmV0X3dhcm5fcmF0ZWxpbWl0ZWQoXCJkZXRlY3RlZCBsb2NhbCByb3V0ZSBmb3IgJXBJNCBkdXJpbmcgSUNNUCBzZW5kaW5nLCBzcmMgJXBJNFxcblwiLFxuLVx0XHRcdFx0XHQgICAgIFx1MDAyNmZsNF9kZWMuZGFkZHIsIFx1MDAyNmZsNF9kZWMuc2FkZHIpO1xuK1x0XHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgcnQyIFx1MDAyNlx1MDAyNiAocnQyLVx1MDAzZXJ0X3R5cGUgPT0gUlROX0xPQ0FMIHx8IHJ0Mi1cdTAwM2VydF90eXBlID09IFJUTl9VTlJFQUNIQUJMRSkpIHtcbitcdFx0XHRpZiAocnQyLVx1MDAzZXJ0X3R5cGUgPT0gUlROX0xPQ0FMKVxuK1x0XHRcdFx0bmV0X3dhcm5fcmF0ZWxpbWl0ZWQoXCJkZXRlY3RlZCBsb2NhbCByb3V0ZSBmb3IgJXBJNCBkdXJpbmcgSUNNUCBzZW5kaW5nLCBzcmMgJXBJNFxcblwiLFxuK1x0XHRcdFx0XHRcdCAgICAgXHUwMDI2Zmw0X2RlYy5kYWRkciwgXHUwMDI2Zmw0X2RlYy5zYWRkcik7XG4gXHRcdFx0ZHN0X3JlbGVhc2UoXHUwMDI2cnQyLVx1MDAzZWRzdCk7XG4gXHRcdFx0ZXJyID0gLUVJTlZBTDtcbiBcdFx0fVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTc6NDEuODAwMjUxMTY2WiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5Njk0NDExNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSUNNUCBSb3V0ZSBMb29rdXAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHJldmlld2VkIHRoaXMgcGF0Y2ggdGhhdCB0b3VjaGVzIGBpY21wX3JvdXRlX2xvb2t1cGAgaW4gYG5ldC9pcHY0L2ljbXAuY2AuIEl0J3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGZpeC4gVGhleSdyZSBjaGFuZ2luZyBhIGNvbmRpdGlvbmFsIHN0YXRlbWVudDogdGhlIG9yaWdpbmFsIGNvZGUgY2hlY2tlZCBmb3IgYFJUTl9MT0NBTGAgcm91dGVzLCBhbmQgbm93IGl0IGFsc28gaW5jbHVkZXMgYFJUTl9VTlJFQUNIQUJMRWAuIFNlZW1zIGxpa2UgYSBjbGVhciBsb2dpYyBidWcgZml4IOKAkyBwcmV2ZW50aW5nIHRoZSB1c2Ugb2YgYFJUTl9VTlJFQUNIQUJMRWAgcm91dGVzIGZvciBJQ01QIG91dHB1dCwgd2hpY2ggY291bGQgbGVhZCB0byBwcm9ibGVtcywgcG90ZW50aWFsbHkgd2l0aCB0aGUgYGRzdC5vdXRwdXQ9aXBfcnRfYnVnYCBzaXR1YXRpb24uXG5cbk15IGltbWVkaWF0ZSBjb25jZXJuLCBhcyBhbHdheXMsIGlzIG1lbW9yeSBzYWZldHkuIEhvd2V2ZXIsIGFmdGVyIHRha2luZyBhIGNsb3NlIGxvb2ssIEknbSBjb25maWRlbnQgdGhhdCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiBUaGUgdmFyaWFibGVzIGludm9sdmVkLCBzcGVjaWZpY2FsbHkgYHJ0MmAgKGEgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcnRhYmxlYCkgYW5kIGBydDItXHUwMDNlcnRfdHlwZWAsIGFyZSBmdWxseSBpbml0aWFsaXplZCBieSBgaXBfcm91dGVfaW5wdXQoKWAuIFRoZSBwYXRjaCAqb25seSogYWRkcyBhIGNoZWNrIGZvciBgUlROX1VOUkVBQ0hBQkxFYDsgaXQncyBub3QgaW50cm9kdWNpbmcgYW55IG5ldyBtZW1vcnkgYWNjZXNzIHBhdHRlcm5zLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBiZWluZyByZWFkIG9yIGxlYWtlZCBhcyBhIHJlc3VsdCBvZiB0aGlzIGNoYW5nZS5cblxuSSdtIGNvbWZvcnRhYmxlIHNldHRpbmcgYE5lZWRzS01TQU49ZmFsc2VgIGZvciB0aGlzLiBKdXN0IHRvIGRvdWJsZS1jaGVjaywgSSB3ZW50IHRocm91Z2ggaXQgYWdhaW4sIGFuZCBjb25maXJtZWQgdGhhdCB0aGUgYWRkZWQgY2hlY2sgZG9lc24ndCBjcmVhdGUgYW55IG5ldyBvcHBvcnR1bml0aWVzIGZvciB1bmluaXRpYWxpemVkIG1lbW9yeSB0byBiZSByZWFkLiBJIGNhbiBjb25maXJtLCBiYXNlZCBvbiBteSBhbmFseXNpcywgdGhhdCBpdCBpcyBzYWZlLlxuXG5JJ2xsIGNhbGwgYHNldC1yZXN1bHRzYCBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMjgsIk91dHB1dFRva2VucyI6MTM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTA6NTc6NDguNzY5Njk1NjM5WiIsIlNlcSI6MjQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAyMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyByb3V0aW5nIGxvZ2ljIGluIGBpY21wX3JvdXRlX2xvb2t1cGAgdG8gcHJldmVudCB0aGUgdXNlIG9mIGBSVE5fVU5SRUFDSEFCTEVgIHJvdXRlcyBmb3IgSUNNUCBvdXRwdXQsIHdoaWNoIGNvdWxkIGxlYWQgdG8gY2FsbGluZyBgaXBfcnRfYnVnYC4gVGhpcyBpcyBhIGxvZ2ljIGJ1ZyBmaXggdGhhdCBwcmV2ZW50cyBpbmNvcnJlY3Qgcm91dGluZyBiZWhhdmlvciBvciBwb3RlbnRpYWwgY3Jhc2hlcyAoZS5nLiwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIG9yIEJVRygpIGluIGBpcF9ydF9idWdgKS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIHVzZXItc3BhY2UgY29waWVzIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgcm91dGluZyBsb2dpYyBpbiBgaWNtcF9yb3V0ZV9sb29rdXBgIHRvIHByZXZlbnQgdGhlIHVzZSBvZiBgUlROX1VOUkVBQ0hBQkxFYCByb3V0ZXMgZm9yIElDTVAgb3V0cHV0LCB3aGljaCBjb3VsZCBsZWFkIHRvIGNhbGxpbmcgYGlwX3J0X2J1Z2AuIFRoaXMgaXMgYSBsb2dpYyBidWcgZml4IHRoYXQgcHJldmVudHMgaW5jb3JyZWN0IHJvdXRpbmcgYmVoYXZpb3Igb3IgcG90ZW50aWFsIGNyYXNoZXMgKGUuZy4sIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBvciBCVUcoKSBpbiBgaXBfcnRfYnVnYCkuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciB1c2VyLXNwYWNlIGNvcGllcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmb4zv[1] Phase: Succeeded StartedAt: 2026-08-25 10:58:00 +0000 UTC FinishedAt: 2026-08-25 10:58:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmb4zv[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-25 10:58:00 +0000 UTC FinishedAt: 2026-08-25 10:58:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmb4zv[2] Phase: Succeeded StartedAt: 2026-08-25 10:58:00 +0000 UTC FinishedAt: 2026-08-25 14:44:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-25 10:58:00 +0000 UTC FinishedAt: 2026-08-25 14:44:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-25 10:58:00 +0000 UTC FinishedAt: 2026-08-25 10:58:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-25 10:58:00 +0000 UTC FinishedAt: 2026-08-25 10:58:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowmb4zv/series-workflowmb4zv-convert-artifact-3355894639/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-25 10:58:10 +0000 UTC FinishedAt: 2026-08-25 11:16:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-25 10:58:10 +0000 UTC FinishedAt: 2026-08-25 11:16:46 +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:*0ccaeedd-08b3-49f6-be6a-98d947c05afa,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-workflowmb4zv/series-workflowmb4zv-convert-artifact-3355894639/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": "ca78085c-9777-49d4-b5cb-48a83fda76fa", "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-workflowmb4zv/series-workflowmb4zv-build-action-1074110517/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-25 10:58:10 +0000 UTC FinishedAt: 2026-08-25 11:16:36 +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:*0ccaeedd-08b3-49f6-be6a-98d947c05afa,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-workflowmb4zv/series-workflowmb4zv-convert-artifact-3355894639/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": "ca78085c-9777-49d4-b5cb-48a83fda76fa", "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-workflowmb4zv/series-workflowmb4zv-build-action-1074110517/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-25 11:16:46 +0000 UTC FinishedAt: 2026-08-25 11:16:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-25 11:16:46 +0000 UTC FinishedAt: 2026-08-25 11:16:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-25 11:16:46 +0000 UTC FinishedAt: 2026-08-25 11:16:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-25 11:16:46 +0000 UTC FinishedAt: 2026-08-25 11:16:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowmb4zv/series-workflowmb4zv-convert-artifact-1460367294/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-25 11:16:56 +0000 UTC FinishedAt: 2026-08-25 11:18:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-25 11:16:56 +0000 UTC FinishedAt: 2026-08-25 11:18:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ca78085c-9777-49d4-b5cb-48a83fda76fa,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-workflowmb4zv/series-workflowmb4zv-build-action-1074110517/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-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-25 11:18:54 +0000 UTC FinishedAt: 2026-08-25 11:18:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-25 11:18:54 +0000 UTC FinishedAt: 2026-08-25 11:18:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-25 11:18:54 +0000 UTC FinishedAt: 2026-08-25 11:39:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-25 11:18:54 +0000 UTC FinishedAt: 2026-08-25 11:39: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:*0ccaeedd-08b3-49f6-be6a-98d947c05afa,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-workflowmb4zv/series-workflowmb4zv-convert-artifact-1460367294/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": "ba33c115-d623-4652-98f3-99c0c9bd68f7", "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-workflowmb4zv/series-workflowmb4zv-build-action-3513133330/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-25 11:18:54 +0000 UTC FinishedAt: 2026-08-25 11:39: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:*0ccaeedd-08b3-49f6-be6a-98d947c05afa,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-workflowmb4zv/series-workflowmb4zv-convert-artifact-1460367294/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": "ba33c115-d623-4652-98f3-99c0c9bd68f7", "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-workflowmb4zv/series-workflowmb4zv-build-action-3513133330/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-25 11:39:38 +0000 UTC FinishedAt: 2026-08-25 11:39:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-25 11:39:38 +0000 UTC FinishedAt: 2026-08-25 11:39:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-25 11:39:38 +0000 UTC FinishedAt: 2026-08-25 11:41:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-25 11:39:38 +0000 UTC FinishedAt: 2026-08-25 11:41:32 +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:*ba33c115-d623-4652-98f3-99c0c9bd68f7,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-workflowmb4zv/series-workflowmb4zv-build-action-3513133330/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-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-25 11:41:42 +0000 UTC FinishedAt: 2026-08-25 14:44:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-25 11:41:42 +0000 UTC FinishedAt: 2026-08-25 14:44:33 +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":["__icmp_send","icmp_ndo_send"],"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:*ca78085c-9777-49d4-b5cb-48a83fda76fa,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ba33c115-d623-4652-98f3-99c0c9bd68f7,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-workflowmb4zv/series-workflowmb4zv-build-action-1074110517/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-workflowmb4zv/series-workflowmb4zv-build-action-3513133330/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-25 11:41:42 +0000 UTC FinishedAt: 2026-08-25 11:41:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-25 11:41:42 +0000 UTC FinishedAt: 2026-08-25 11:41:47 +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":["__icmp_send","icmp_ndo_send"],"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-workflowmb4zv/series-workflowmb4zv-convert-artifact-2123281859/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-25 11:41:42 +0000 UTC FinishedAt: 2026-08-25 11:41:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-25 11:41:42 +0000 UTC FinishedAt: 2026-08-25 11:41:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-25 11:41:42 +0000 UTC FinishedAt: 2026-08-25 11:41:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-25 11:41:52 +0000 UTC FinishedAt: 2026-08-25 14:44:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmb4zv[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__icmp_send","icmp_ndo_send"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"b70b7b71561f2be1183b6046964d950c2b203bfc","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET"],"series_id":"fc2c3ccd-2324-4128-999a-ee7998ab86b6","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-25 11:41:52 +0000 UTC FinishedAt: 2026-08-25 14:44:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ca78085c-9777-49d4-b5cb-48a83fda76fa,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ba33c115-d623-4652-98f3-99c0c9bd68f7,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-workflowmb4zv/series-workflowmb4zv-build-action-1074110517/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-workflowmb4zv/series-workflowmb4zv-build-action-3513133330/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-workflowmb4zv/series-workflowmb4zv-convert-artifact-2123281859/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,}