Name: series-workflowz8bmk Phase: Succeeded StartedAt: 2026-07-03 13:05:21 +0000 UTC FinishedAt: 2026-07-03 17:34:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz8bmk[0] Phase: Succeeded StartedAt: 2026-07-03 13:05:21 +0000 UTC FinishedAt: 2026-07-03 13:19:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz8bmk[0].run-triage Phase: Succeeded StartedAt: 2026-07-03 13:05:21 +0000 UTC FinishedAt: 2026-07-03 13:19:47 +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": "62e7df6d042aeebd5efb581074e28865c04477be", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "NF_CONNTRACK_SIP", "NF_TABLES", "NETFILTER_XT_MATCH_U32", "NETFILTER_XT_TARGET_CONNMARK", "NETFILTER_XT_MATCH_RATEEST", "IP6_NF_MATCH_AH", "IP6_NF_MATCH_OPTS", "IP6_NF_MATCH_RT", "NF_CT_NETLINK_HELPER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "62e7df6d042aeebd5efb581074e28865c04477be", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "NF_CONNTRACK_SIP", "NF_TABLES", "NETFILTER_XT_MATCH_U32", "NETFILTER_XT_TARGET_CONNMARK", "NETFILTER_XT_MATCH_RATEEST", "IP6_NF_MATCH_AH", "IP6_NF_MATCH_OPTS", "IP6_NF_MATCH_RT", "NF_CT_NETLINK_HELPER" ], "series_id": "4c229847-9081-4997-93c7-32f7d9baafee" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ah_mt6", "hbh_mt6", "rt_mt6", "ip_vs_conn_new", "ip_vs_in_icmp", "nf_nat_sip", "nft_get_set_elem", "nfnl_cthelper_update_policy_one", "nft_rbtree_get", "connmark_tg_check_v2", "xt_rateest_mt", "u32_mt_checkentry" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAzIDEzOjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19TSVAmIzM0OywKICAgICYjMzQ7TkZfVEFCTEVTJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUl9YVF9NQVRDSF9VMzImIzM0OywKICAgICYjMzQ7TkVURklMVEVSX1hUX1RBUkdFVF9DT05OTUFSSyYjMzQ7LAogICAgJiMzNDtORVRGSUxURVJfWFRfTUFUQ0hfUkFURUVTVCYjMzQ7LAogICAgJiMzNDtJUDZfTkZfTUFUQ0hfQUgmIzM0OywKICAgICYjMzQ7SVA2X05GX01BVENIX09QVFMmIzM0OywKICAgICYjMzQ7SVA2X05GX01BVENIX1JUJiMzNDssCiAgICAmIzM0O05GX0NUX05FVExJTktfSEVMUEVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWhfbXQ2JiMzNDssCiAgICAmIzM0O2hiaF9tdDYmIzM0OywKICAgICYjMzQ7cnRfbXQ2JiMzNDssCiAgICAmIzM0O2lwX3ZzX2Nvbm5fbmV3JiMzNDssCiAgICAmIzM0O2lwX3ZzX2luX2ljbXAmIzM0OywKICAgICYjMzQ7bmZfbmF0X3NpcCYjMzQ7LAogICAgJiMzNDtuZnRfZ2V0X3NldF9lbGVtJiMzNDssCiAgICAmIzM0O25mbmxfY3RoZWxwZXJfdXBkYXRlX3BvbGljeV9vbmUmIzM0OywKICAgICYjMzQ7bmZ0X3JidHJlZV9nZXQmIzM0OywKICAgICYjMzQ7Y29ubm1hcmtfdGdfY2hlY2tfdjImIzM0OywKICAgICYjMzQ7eHRfcmF0ZWVzdF9tdCYjMzQ7LAogICAgJiMzNDt1MzJfbXRfY2hlY2tlbnRyeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoaXMgcGF0Y2ggc2VyaWVzIGZpeGVzIG11bHRpcGxlIGJ1Z3MgaW4gbmV0ZmlsdGVyIGFuZCBJUFZTIGNvbXBvbmVudHMsIGluY2x1ZGluZyBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1bmluaXRpYWxpemVkIG1lbW9yeSwgYW5kIGluY29ycmVjdCBNVFUgY2FsY3VsYXRpb25zLiBGdXp6aW5nIHRoZXNlIHBhdGhzIHdpbGwgaGVscCBlbnN1cmUgdGhlIGZpeGVzIGFyZSByb2J1c3QgYW5kIGRvbiYjMzk7dCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTM6MTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyZTNmMGY2M2VmZmQ3MWVkNDBkZDZiZTRmMWVkYzE5MjM2YWI0YThjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMyAxMzoxODozOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9haC5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfYWguY1xuaW5kZXggNzBkYTJmMmNlMDY0Y2EuLjEyNTg3ODNlZDg3NjI5IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfYWguY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfYWguY1xuQEAgLTU2LDYgJiM0Mzs1NiwxMSBAQCBzdGF0aWMgYm9vbCBhaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0fVxuIFxuIFx0aGRybGVuID0gaXB2Nl9hdXRobGVuKGFoKTtcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWxlbiAtIHB0ciBcdTAwM2MgaGRybGVuKSB7XG4mIzQzO1x0XHQvKiBQYWNrZXQgc21hbGxlciB0aGFuIGl0cyBsZW5ndGggZmllbGQgKi9cbiYjNDM7XHRcdHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4gXG4gXHRwcl9kZWJ1ZyhcJiMzNDtJUHY2IEFIIExFTiAldSAldSBcJiMzNDssIGhkcmxlbiwgYWgtXHUwMDNlaGRybGVuKTtcbiBcdHByX2RlYnVnKFwmIzM0O1JFUyAlMDRYIFwmIzM0OywgYWgtXHUwMDNlcmVzZXJ2ZWQpO1xuZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmNcbmluZGV4IDQ1MGRkNTM4NDZhMmY3Li42ZDFhNWQyMDI2YTY3OCAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguY1xuQEAgLTc1LDYgJiM0Mzs3NSw3IEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0aGRybGVuID0gaXB2Nl9vcHRsZW4ob2gpO1xuIFx0aWYgKHNrYi1cdTAwM2VsZW4gLSBwdHIgXHUwMDNjIGhkcmxlbikge1xuIFx0XHQvKiBQYWNrZXQgc21hbGxlciB0aGFuIGl0JiMzOTtzIGxlbmd0aCBmaWVsZCAqL1xuJiM0MztcdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfcnQuYyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3J0LmNcbmluZGV4IDU1NjFiZDljZWE4MTg1Li4yNzhiNTI3NTJmMzY0NSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3J0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3J0LmNcbkBAIC01Niw3ICYjNDM7NTYsOCBAQCBzdGF0aWMgYm9vbCBydF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFxuIFx0aGRybGVuID0gaXB2Nl9vcHRsZW4ocmgpO1xuIFx0aWYgKHNrYi1cdTAwM2VsZW4gLSBwdHIgXHUwMDNjIGhkcmxlbikge1xuLVx0XHQvKiBQY2tldCBzbWFsbGVyIHRoYW4gaXRzIGxlbmd0aCBmaWVsZCAqL1xuJiM0MztcdFx0LyogUGFja2V0IHNtYWxsZXIgdGhhbiBpdHMgbGVuZ3RoIGZpZWxkICovXG4mIzQzO1x0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4gXHRcdHJldHVybiBmYWxzZTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuaW5kZXggY2IzNjY0MWY4ZDFjYzEuLjZlZDI2MjIzNjNmMGQ2IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuQEAgLTE0MjAsOCAmIzQzOzE0MjAsOCBAQCBpcF92c19jb25uX25ldyhjb25zdCBzdHJ1Y3QgaXBfdnNfY29ubl9wYXJhbSAqcCwgaW50IGRlc3RfYWYsXG4gXHRjcC1cdTAwM2VhcHAgPSBOVUxMO1xuIFx0Y3AtXHUwMDNlYXBwX2RhdGEgPSBOVUxMO1xuIFx0LyogcmVzZXQgc3RydWN0IGlwX3ZzX3NlcSAqL1xuLVx0Y3AtXHUwMDNlaW5fc2VxLmRlbHRhID0gMDtcbi1cdGNwLVx1MDAzZW91dF9zZXEuZGVsdGEgPSAwO1xuJiM0MztcdG1lbXNldChcdTAwMjZjcC1cdTAwM2Vpbl9zZXEsIDAsIHNpemVvZihjcC1cdTAwM2Vpbl9zZXEpKTtcbiYjNDM7XHRtZW1zZXQoXHUwMDI2Y3AtXHUwMDNlb3V0X3NlcSwgMCwgc2l6ZW9mKGNwLVx1MDAzZW91dF9zZXEpKTtcbiBcbiBcdGlmICh1bmxpa2VseShmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX05PX0NQT1JUKSkge1xuIFx0XHRpbnQgYWZfaWQgPSBpcF92c19hZl9pbmRleChjcC1cdTAwM2VhZik7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcbmluZGV4IGQ0MGI0MDRjMWJmNjQ2Li45MDZmMmMzNjE2NzYzOCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcbkBAIC0xNzY3LDYgJiM0MzsxNzY3LDcgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxuIFx0Ym9vbCB0dW5uZWwsIG5ld19jcCA9IGZhbHNlO1xuIFx0dW5pb24gbmZfaW5ldF9hZGRyICpyYWRkcjtcbiBcdGNoYXIgKm91dGVyX3Byb3RvID0gXCYjMzQ7SVBJUFwmIzM0OztcbiYjNDM7XHRpbnQgdWxlbiA9IDA7XG4gXG4gXHQqcmVsYXRlZCA9IDE7XG4gXG5AQCAtMTgzMSw3ICYjNDM7MTgzMiw2IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcbiBcdFx0ICAgLyogRXJyb3IgZm9yIG91ciB0dW5uZWwgbXVzdCBhcnJpdmUgYXQgTE9DQUxfSU4gKi9cbiBcdFx0ICAgKHNrYl9ydGFibGUoc2tiKS1cdTAwM2VydF9mbGFncyBcdTAwMjYgUlRDRl9MT0NBTCkpIHtcbiBcdFx0X191OCBpcHJvdG87XG4tXHRcdGludCB1bGVuO1xuIFxuIFx0XHQvKiBOb24tZmlyc3QgZnJhZ21lbnQgaGFzIG5vIFVEUC9HUkUgaGVhZGVyICovXG4gXHRcdGlmICh1bmxpa2VseShjaWgtXHUwMDNlZnJhZ19vZmYgXHUwMDI2IGh0b25zKElQX09GRlNFVCkpKVxuQEAgLTE5MzYsOCAmIzQzOzE5MzYsOCBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG4gXHRcdFx0XHRpZiAoZGVzdF9kc3QpXG4gXHRcdFx0XHRcdG10dSA9IGRzdF9tdHUoZGVzdF9kc3QtXHUwMDNlZHN0X2NhY2hlKTtcbiBcdFx0XHR9XG4tXHRcdFx0aWYgKG10dSBcdTAwM2UgNjggJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcGhkcikpXG4tXHRcdFx0XHRtdHUgLT0gc2l6ZW9mKHN0cnVjdCBpcGhkcik7XG4mIzQzO1x0XHRcdGlmIChtdHUgXHUwMDNlIDY4ICYjNDM7IHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IHVsZW4pXG4mIzQzO1x0XHRcdFx0bXR1IC09IHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IHVsZW47XG4gXHRcdFx0aW5mbyA9IGh0b25sKG10dSk7XG4gXHRcdH1cbiBcdFx0LyogU3RyaXAgb3V0ZXIgSVAsIElDTVAgYW5kIElQSVAvVURQL0dSRSwgZ28gdG8gSVAgaGVhZGVyIG9mXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmMgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF9zaXAuY1xuaW5kZXggNjdjMDRkODE0M2FiOTEuLmFlYTAyZjZhZmYwOTJhIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3NpcC5jXG5AQCAtMjg5LDEzICYjNDM7Mjg5LDI0IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfbmF0X3NpcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbiBcbiBcdC8qIE1hbmdsZSBkZXN0aW5hdGlvbiBwb3J0IGZvciBDaXNjbyBwaG9uZXMsIHRoZW4gZml4IHVwIGNoZWNrc3VtcyAqL1xuIFx0aWYgKGRpciA9PSBJUF9DVF9ESVJfUkVQTFkgXHUwMDI2XHUwMDI2IGN0X3NpcF9pbmZvLVx1MDAzZWZvcmNlZF9kcG9ydCkge1xuJiM0MztcdFx0aW50IGRvZmYgPSAqZHB0ciAtIChjb25zdCBjaGFyICopc2tiLVx1MDAzZWRhdGE7XG4gXHRcdHN0cnVjdCB1ZHBoZHIgKnVoO1xuIFxuJiM0MztcdFx0aWYgKGRvZmYgXHUwMDNjPSAwKSB7XG4mIzQzO1x0XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XG4mIzQzO1x0XHRcdHJldHVybiBORl9EUk9QO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdC8qIGN0X3NpcF9pbmZvLVx1MDAzZWZvcmNlZF9kcG9ydCBvbmx5IGV4cGVjdGVkIHdpdGggVURQICovXG4mIzQzO1x0XHRpZiAobmZfY3RfcHJvdG9udW0oY3QpICE9IElQUFJPVE9fVURQKVxuJiM0MztcdFx0XHRyZXR1cm4gTkZfRFJPUDtcbiYjNDM7XG4gXHRcdGlmIChza2JfZW5zdXJlX3dyaXRhYmxlKHNrYiwgc2tiLVx1MDAzZWxlbikpIHtcbiBcdFx0XHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFwmIzM0O2Nhbm5vdCBtYW5nbGUgcGFja2V0XCYjMzQ7KTtcbiBcdFx0XHRyZXR1cm4gTkZfRFJPUDtcbiBcdFx0fVxuIFxuJiM0MztcdFx0KmRwdHIgPSBza2ItXHUwMDNlZGF0YSAmIzQzOyBkb2ZmO1xuIFx0XHR1aCA9ICh2b2lkICopc2tiLVx1MDAzZWRhdGEgJiM0MzsgcHJvdG9mZjtcbiBcdFx0dWgtXHUwMDNlZGVzdCA9IGN0X3NpcF9pbmZvLVx1MDAzZWZvcmNlZF9kcG9ydDtcbiBcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXG5pbmRleCA0ODg0ZjdmN2FhZWVlMC4uYTllYWY5NDU1Yzc3ODMgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcbkBAIC02NTYzLDYgJiM0Mzs2NTYzLDkgQEAgc3RhdGljIGludCBuZnRfZ2V0X3NldF9lbGVtKHN0cnVjdCBuZnRfY3R4ICpjdHgsIGNvbnN0IHN0cnVjdCBuZnRfc2V0ICpzZXQsXG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuJiM0MztcdGlmICghZWxlbS5wcml2KVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuIFx0ZXJyID0gLUVOT01FTTtcbiBcdHNrYiA9IG5sbXNnX25ldyhOTE1TR19HT09EU0laRSwgR0ZQX0FUT01JQyk7XG4gXHRpZiAoc2tiID09IE5VTEwpXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfY3RoZWxwZXIuYyBiL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2N0aGVscGVyLmNcbmluZGV4IDJjYmNjYTkxMTBkYmY1Li5mMDYyYWMyMTAzNDMyOSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2N0aGVscGVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2N0aGVscGVyLmNcbkBAIC0zMTYsNiAmIzQzOzMxNiw4IEBAIG5mbmxfY3RoZWxwZXJfdXBkYXRlX3BvbGljeV9vbmUoY29uc3Qgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3RfcG9saWN5ICpwb2xpY3ksXG4gXG4gXHRuZXdfcG9saWN5LVx1MDAzZW1heF9leHBlY3RlZCA9XG4gXHRcdG50b2hsKG5sYV9nZXRfYmUzMih0YltORkNUSF9QT0xJQ1lfRVhQRUNUX01BWF0pKTtcbiYjNDM7XHRpZiAoIW5ld19wb2xpY3ktXHUwMDNlbWF4X2V4cGVjdGVkKVxuJiM0MztcdFx0bmV3X3BvbGljeS1cdTAwM2VtYXhfZXhwZWN0ZWQgPSBORl9DVF9FWFBFQ1RfTUFYX0NOVDtcbiBcdGlmIChuZXdfcG9saWN5LVx1MDAzZW1heF9leHBlY3RlZCBcdTAwM2UgTkZfQ1RfRVhQRUNUX01BWF9DTlQpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZ0X3NldF9yYnRyZWUuYyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3NldF9yYnRyZWUuY1xuaW5kZXggMDE4YmJiNmRmNGNlNDMuLjYyMjJlOWJiNTdiYzkwIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfc2V0X3JidHJlZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mdF9zZXRfcmJ0cmVlLmNcbkBAIC0xODQsMTAgJiM0MzsxODQsMTQgQEAgbmZ0X3JidHJlZV9nZXQoY29uc3Qgc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3QgbmZ0X3NldCAqc2V0LFxuIFx0aWYgKCFpbnRlcnZhbCB8fCBuZnRfc2V0X2VsZW1fZXhwaXJlZChpbnRlcnZhbC1cdTAwM2Vmcm9tKSlcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7XG4gXG4tXHRpZiAoZmxhZ3MgXHUwMDI2IE5GVF9TRVRfRUxFTV9JTlRFUlZBTF9FTkQpXG4mIzQzO1x0aWYgKGZsYWdzIFx1MDAyNiBORlRfU0VUX0VMRU1fSU5URVJWQUxfRU5EKSB7XG4mIzQzO1x0XHRpZiAoIWludGVydmFsLVx1MDAzZXRvKVxuJiM0MztcdFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XG4gXHRcdHJiZSA9IGNvbnRhaW5lcl9vZihpbnRlcnZhbC1cdTAwM2V0bywgc3RydWN0IG5mdF9yYnRyZWVfZWxlbSwgZXh0KTtcbi1cdGVsc2VcbiYjNDM7XHR9IGVsc2Uge1xuIFx0XHRyYmUgPSBjb250YWluZXJfb2YoaW50ZXJ2YWwtXHUwMDNlZnJvbSwgc3RydWN0IG5mdF9yYnRyZWVfZWxlbSwgZXh0KTtcbiYjNDM7XHR9XG4gXG4gXHRyZXR1cm4gXHUwMDI2cmJlLVx1MDAzZXByaXY7XG4gfVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIveHRfY29ubm1hcmsuYyBiL25ldC9uZXRmaWx0ZXIveHRfY29ubm1hcmsuY1xuaW5kZXggNDI3NzA4NGRlMmU3MGMuLjJjZjI3ZjdkNTliOTVmIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci94dF9jb25ubWFyay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL3h0X2Nvbm5tYXJrLmNcbkBAIC0xMTIsNiAmIzQzOzExMiwxNiBAQCBzdGF0aWMgaW50IGNvbm5tYXJrX3RnX2NoZWNrKGNvbnN0IHN0cnVjdCB4dF90Z2Noa19wYXJhbSAqcGFyKVxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgY29ubm1hcmtfdGdfY2hlY2tfdjIoY29uc3Qgc3RydWN0IHh0X3RnY2hrX3BhcmFtICpwYXIpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgeHRfY29ubm1hcmtfdGdpbmZvMiAqaW5mbyA9IHBhci1cdTAwM2V0YXJnaW5mbztcbiYjNDM7XG4mIzQzO1x0aWYgKGluZm8tXHUwMDNlc2hpZnRfZGlyIFx1MDAzZSBEX1NISUZUX1JJR0hUIHx8IGluZm8tXHUwMDNlc2hpZnRfYml0cyBcdTAwM2U9IDMyKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdHJldHVybiBjb25ubWFya190Z19jaGVjayhwYXIpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIGNvbm5tYXJrX3RnX2Rlc3Ryb3koY29uc3Qgc3RydWN0IHh0X3RnZHRvcl9wYXJhbSAqcGFyKVxuIHtcbiBcdG5mX2N0X25ldG5zX3B1dChwYXItXHUwMDNlbmV0LCBwYXItXHUwMDNlZmFtaWx5KTtcbkBAIC0xNjIsNyAmIzQzOzE3Miw3IEBAIHN0YXRpYyBzdHJ1Y3QgeHRfdGFyZ2V0IGNvbm5tYXJrX3RnX3JlZ1tdIF9fcmVhZF9tb3N0bHkgPSB7XG4gXHRcdC5uYW1lICAgICAgICAgICA9IFwmIzM0O0NPTk5NQVJLXCYjMzQ7LFxuIFx0XHQucmV2aXNpb24gICAgICAgPSAyLFxuIFx0XHQuZmFtaWx5ICAgICAgICAgPSBORlBST1RPX0lQVjQsXG4tXHRcdC5jaGVja2VudHJ5ICAgICA9IGNvbm5tYXJrX3RnX2NoZWNrLFxuJiM0MztcdFx0LmNoZWNrZW50cnkgICAgID0gY29ubm1hcmtfdGdfY2hlY2tfdjIsXG4gXHRcdC50YXJnZXQgICAgICAgICA9IGNvbm5tYXJrX3RnX3YyLFxuIFx0XHQudGFyZ2V0c2l6ZSAgICAgPSBzaXplb2Yoc3RydWN0IHh0X2Nvbm5tYXJrX3RnaW5mbzIpLFxuIFx0XHQuZGVzdHJveSAgICAgICAgPSBjb25ubWFya190Z19kZXN0cm95LFxuQEAgLTE4Myw3ICYjNDM7MTkzLDcgQEAgc3RhdGljIHN0cnVjdCB4dF90YXJnZXQgY29ubm1hcmtfdGdfcmVnW10gX19yZWFkX21vc3RseSA9IHtcbiBcdFx0Lm5hbWUgICAgICAgICAgID0gXCYjMzQ7Q09OTk1BUktcJiMzNDssXG4gXHRcdC5yZXZpc2lvbiAgICAgICA9IDIsXG4gXHRcdC5mYW1pbHkgICAgICAgICA9IE5GUFJPVE9fSVBWNixcbi1cdFx0LmNoZWNrZW50cnkgICAgID0gY29ubm1hcmtfdGdfY2hlY2ssXG4mIzQzO1x0XHQuY2hlY2tlbnRyeSAgICAgPSBjb25ubWFya190Z19jaGVja192MixcbiBcdFx0LnRhcmdldCAgICAgICAgID0gY29ubm1hcmtfdGdfdjIsXG4gXHRcdC50YXJnZXRzaXplICAgICA9IHNpemVvZihzdHJ1Y3QgeHRfY29ubm1hcmtfdGdpbmZvMiksXG4gXHRcdC5kZXN0cm95ICAgICAgICA9IGNvbm5tYXJrX3RnX2Rlc3Ryb3ksXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci94dF9yYXRlZXN0LmMgYi9uZXQvbmV0ZmlsdGVyL3h0X3JhdGVlc3QuY1xuaW5kZXggYjFkNzM2YzE1ZmNiZTUuLjdjMDViNjM0MjU3ODRlIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci94dF9yYXRlZXN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIveHRfcmF0ZWVzdC5jXG5AQCAtMTYsNyAmIzQzOzE2LDcgQEAgeHRfcmF0ZWVzdF9tdChjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IHh0X3JhdGVlc3RfbWF0Y2hfaW5mbyAqaW5mbyA9IHBhci1cdTAwM2VtYXRjaGluZm87XG4gXHRzdHJ1Y3QgZ25ldF9zdGF0c19yYXRlX2VzdDY0IHNhbXBsZSA9IHswfTtcbi1cdHVfaW50MzJfdCBicHMxLCBicHMyLCBwcHMxLCBwcHMyO1xuJiM0MztcdHU2NCBicHMxLCBicHMyLCBwcHMxLCBwcHMyO1xuIFx0Ym9vbCByZXQgPSB0cnVlO1xuIFxuIFx0Z2VuX2VzdGltYXRvcl9yZWFkKFx1MDAyNmluZm8tXHUwMDNlZXN0MS1cdTAwM2VyYXRlX2VzdCwgXHUwMDI2c2FtcGxlKTtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL3h0X3UzMi5jIGIvbmV0L25ldGZpbHRlci94dF91MzIuY1xuaW5kZXggMTE3ZDQ2MTVkNjY4NGMuLmVjMWEyMWUzYjZlMmMzIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci94dF91MzIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci94dF91MzIuY1xuQEAgLTEwMCw3ICYjNDM7MTAwLDcgQEAgc3RhdGljIGludCB1MzJfbXRfY2hlY2tlbnRyeShjb25zdCBzdHJ1Y3QgeHRfbXRjaGtfcGFyYW0gKnBhcilcbiB7XG4gXHRjb25zdCBzdHJ1Y3QgeHRfdTMyICpkYXRhID0gcGFyLVx1MDAzZW1hdGNoaW5mbztcbiBcdGNvbnN0IHN0cnVjdCB4dF91MzJfdGVzdCAqY3Q7XG4tXHR1bnNpZ25lZCBpbnQgaTtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgaSwgajtcbiBcbiBcdGlmIChkYXRhLVx1MDAzZW50ZXN0cyBcdTAwM2UgQVJSQVlfU0laRShkYXRhLVx1MDAzZXRlc3RzKSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG5AQCAtMTExLDYgJiM0MzsxMTEsMTYgQEAgc3RhdGljIGludCB1MzJfbXRfY2hlY2tlbnRyeShjb25zdCBzdHJ1Y3QgeHRfbXRjaGtfcGFyYW0gKnBhcilcbiBcdFx0aWYgKGN0LVx1MDAzZW5udW1zIFx1MDAzZSBBUlJBWV9TSVpFKGN0LVx1MDAzZWxvY2F0aW9uKSB8fFxuIFx0XHQgICAgY3QtXHUwMDNlbnZhbHVlcyBcdTAwM2UgQVJSQVlfU0laRShjdC1cdTAwM2V2YWx1ZSkpXG4gXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdFx0Zm9yIChqID0gMTsgaiBcdTAwM2MgY3QtXHUwMDNlbm51bXM7ICYjNDM7JiM0MztqKSB7XG4mIzQzO1x0XHRcdHN3aXRjaCAoY3QtXHUwMDNlbG9jYXRpb25bal0ubmV4dG9wKSB7XG4mIzQzO1x0XHRcdGNhc2UgWFRfVTMyX0xFRlRTSDpcbiYjNDM7XHRcdFx0Y2FzZSBYVF9VMzJfUklHSFRTSDpcbiYjNDM7XHRcdFx0XHRpZiAoY3QtXHUwMDNlbG9jYXRpb25bal0ubnVtYmVyIFx1MDAzZT0gMzIpXG4mIzQzO1x0XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0fVxuJiM0MztcdFx0fVxuIFx0fVxuIFxuIFx0cmV0dXJuIDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTM6MTg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfVlMmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1NJUCYjMzQ7LAogICAgJiMzNDtORl9UQUJMRVMmIzM0OywKICAgICYjMzQ7TkVURklMVEVSX1hUX01BVENIX1UzMiYjMzQ7LAogICAgJiMzNDtORVRGSUxURVJfWFRfVEFSR0VUX0NPTk5NQVJLJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUl9YVF9NQVRDSF9SQVRFRVNUJiMzNDssCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9BSCYjMzQ7LAogICAgJiMzNDtJUDZfTkZfTUFUQ0hfT1BUUyYjMzQ7LAogICAgJiMzNDtJUDZfTkZfTUFUQ0hfUlQmIzM0OywKICAgICYjMzQ7TkZfQ1RfTkVUTElOS19IRUxQRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthaF9tdDYmIzM0OywKICAgICYjMzQ7aGJoX210NiYjMzQ7LAogICAgJiMzNDtydF9tdDYmIzM0OywKICAgICYjMzQ7aXBfdnNfY29ubl9uZXcmIzM0OywKICAgICYjMzQ7aXBfdnNfaW5faWNtcCYjMzQ7LAogICAgJiMzNDtuZl9uYXRfc2lwJiMzNDssCiAgICAmIzM0O25mdF9nZXRfc2V0X2VsZW0mIzM0OywKICAgICYjMzQ7bmZubF9jdGhlbHBlcl91cGRhdGVfcG9saWN5X29uZSYjMzQ7LAogICAgJiMzNDtuZnRfcmJ0cmVlX2dldCYjMzQ7LAogICAgJiMzNDtjb25ubWFya190Z19jaGVja192MiYjMzQ7LAogICAgJiMzNDt4dF9yYXRlZXN0X210JiMzNDssCiAgICAmIzM0O3UzMl9tdF9jaGVja2VudHJ5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhpcyBwYXRjaCBzZXJpZXMgZml4ZXMgbXVsdGlwbGUgYnVncyBpbiBuZXRmaWx0ZXIgYW5kIElQVlMgY29tcG9uZW50cywgaW5jbHVkaW5nIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBhbmQgaW5jb3JyZWN0IE1UVSBjYWxjdWxhdGlvbnMuIEZ1enppbmcgdGhlc2UgcGF0aHMgd2lsbCBoZWxwIGVuc3VyZSB0aGUgZml4ZXMgYXJlIHJvYnVzdCBhbmQgZG9uJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmUzZjBmNjNlZmZkNzFlZDQwZGQ2YmU0ZjFlZGMxOTIzNmFiNGE4YwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMgMTM6MTg6MzkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9haC5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfYWguYwppbmRleCA3MGRhMmYyY2UwNjRjYS4uMTI1ODc4M2VkODc2MjkgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2FoLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfYWguYwpAQCAtNTYsNiAmIzQzOzU2LDExIEBAIHN0YXRpYyBib29sIGFoX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpCiAJfQogCiAJaGRybGVuID0gaXB2Nl9hdXRobGVuKGFoKTsKJiM0MzsJaWYgKHNrYi0mZ3Q7bGVuIC0gcHRyICZsdDsgaGRybGVuKSB7CiYjNDM7CQkvKiBQYWNrZXQgc21hbGxlciB0aGFuIGl0cyBsZW5ndGggZmllbGQgKi8KJiM0MzsJCXBhci0mZ3Q7aG90ZHJvcCA9IHRydWU7CiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KIAogCXByX2RlYnVnKCYjMzQ7SVB2NiBBSCBMRU4gJXUgJXUgJiMzNDssIGhkcmxlbiwgYWgtJmd0O2hkcmxlbik7CiAJcHJfZGVidWcoJiMzNDtSRVMgJTA0WCAmIzM0OywgYWgtJmd0O3Jlc2VydmVkKTsKZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMKaW5kZXggNDUwZGQ1Mzg0NmEyZjcuLjZkMWE1ZDIwMjZhNjc4IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYwpAQCAtNzUsNiAmIzQzOzc1LDcgQEAgaGJoX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpCiAJaGRybGVuID0gaXB2Nl9vcHRsZW4ob2gpOwogCWlmIChza2ItJmd0O2xlbiAtIHB0ciAmbHQ7IGhkcmxlbikgewogCQkvKiBQYWNrZXQgc21hbGxlciB0aGFuIGl0JiMzOTtzIGxlbmd0aCBmaWVsZCAqLwomIzQzOwkJcGFyLSZndDtob3Rkcm9wID0gdHJ1ZTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KIApkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfcnQuYyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3J0LmMKaW5kZXggNTU2MWJkOWNlYTgxODUuLjI3OGI1Mjc1MmYzNjQ1IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9ydC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3J0LmMKQEAgLTU2LDcgJiM0Mzs1Niw4IEBAIHN0YXRpYyBib29sIHJ0X210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpCiAKIAloZHJsZW4gPSBpcHY2X29wdGxlbihyaCk7CiAJaWYgKHNrYi0mZ3Q7bGVuIC0gcHRyICZsdDsgaGRybGVuKSB7Ci0JCS8qIFBja2V0IHNtYWxsZXIgdGhhbiBpdHMgbGVuZ3RoIGZpZWxkICovCiYjNDM7CQkvKiBQYWNrZXQgc21hbGxlciB0aGFuIGl0cyBsZW5ndGggZmllbGQgKi8KJiM0MzsJCXBhci0mZ3Q7aG90ZHJvcCA9IHRydWU7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jCmluZGV4IGNiMzY2NDFmOGQxY2MxLi42ZWQyNjIyMzYzZjBkNiAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jCkBAIC0xNDIwLDggJiM0MzsxNDIwLDggQEAgaXBfdnNfY29ubl9uZXcoY29uc3Qgc3RydWN0IGlwX3ZzX2Nvbm5fcGFyYW0gKnAsIGludCBkZXN0X2FmLAogCWNwLSZndDthcHAgPSBOVUxMOwogCWNwLSZndDthcHBfZGF0YSA9IE5VTEw7CiAJLyogcmVzZXQgc3RydWN0IGlwX3ZzX3NlcSAqLwotCWNwLSZndDtpbl9zZXEuZGVsdGEgPSAwOwotCWNwLSZndDtvdXRfc2VxLmRlbHRhID0gMDsKJiM0MzsJbWVtc2V0KCZhbXA7Y3AtJmd0O2luX3NlcSwgMCwgc2l6ZW9mKGNwLSZndDtpbl9zZXEpKTsKJiM0MzsJbWVtc2V0KCZhbXA7Y3AtJmd0O291dF9zZXEsIDAsIHNpemVvZihjcC0mZ3Q7b3V0X3NlcSkpOwogCiAJaWYgKHVubGlrZWx5KGZsYWdzICZhbXA7IElQX1ZTX0NPTk5fRl9OT19DUE9SVCkpIHsKIAkJaW50IGFmX2lkID0gaXBfdnNfYWZfaW5kZXgoY3AtJmd0O2FmKTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jCmluZGV4IGQ0MGI0MDRjMWJmNjQ2Li45MDZmMmMzNjE2NzYzOCAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jCkBAIC0xNzY3LDYgJiM0MzsxNzY3LDcgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLAogCWJvb2wgdHVubmVsLCBuZXdfY3AgPSBmYWxzZTsKIAl1bmlvbiBuZl9pbmV0X2FkZHIgKnJhZGRyOwogCWNoYXIgKm91dGVyX3Byb3RvID0gJiMzNDtJUElQJiMzNDs7CiYjNDM7CWludCB1bGVuID0gMDsKIAogCSpyZWxhdGVkID0gMTsKIApAQCAtMTgzMSw3ICYjNDM7MTgzMiw2IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCwKIAkJICAgLyogRXJyb3IgZm9yIG91ciB0dW5uZWwgbXVzdCBhcnJpdmUgYXQgTE9DQUxfSU4gKi8KIAkJICAgKHNrYl9ydGFibGUoc2tiKS0mZ3Q7cnRfZmxhZ3MgJmFtcDsgUlRDRl9MT0NBTCkpIHsKIAkJX191OCBpcHJvdG87Ci0JCWludCB1bGVuOwogCiAJCS8qIE5vbi1maXJzdCBmcmFnbWVudCBoYXMgbm8gVURQL0dSRSBoZWFkZXIgKi8KIAkJaWYgKHVubGlrZWx5KGNpaC0mZ3Q7ZnJhZ19vZmYgJmFtcDsgaHRvbnMoSVBfT0ZGU0VUKSkpCkBAIC0xOTM2LDggJiM0MzsxOTM2LDggQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLAogCQkJCWlmIChkZXN0X2RzdCkKIAkJCQkJbXR1ID0gZHN0X210dShkZXN0X2RzdC0mZ3Q7ZHN0X2NhY2hlKTsKIAkJCX0KLQkJCWlmIChtdHUgJmd0OyA2OCAmIzQzOyBzaXplb2Yoc3RydWN0IGlwaGRyKSkKLQkJCQltdHUgLT0gc2l6ZW9mKHN0cnVjdCBpcGhkcik7CiYjNDM7CQkJaWYgKG10dSAmZ3Q7IDY4ICYjNDM7IHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IHVsZW4pCiYjNDM7CQkJCW10dSAtPSBzaXplb2Yoc3RydWN0IGlwaGRyKSAmIzQzOyB1bGVuOwogCQkJaW5mbyA9IGh0b25sKG10dSk7CiAJCX0KIAkJLyogU3RyaXAgb3V0ZXIgSVAsIElDTVAgYW5kIElQSVAvVURQL0dSRSwgZ28gdG8gSVAgaGVhZGVyIG9mCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9zaXAuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3NpcC5jCmluZGV4IDY3YzA0ZDgxNDNhYjkxLi5hZWEwMmY2YWZmMDkyYSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmMKQEAgLTI4OSwxMyAmIzQzOzI4OSwyNCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG5mX25hdF9zaXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsCiAKIAkvKiBNYW5nbGUgZGVzdGluYXRpb24gcG9ydCBmb3IgQ2lzY28gcGhvbmVzLCB0aGVuIGZpeCB1cCBjaGVja3N1bXMgKi8KIAlpZiAoZGlyID09IElQX0NUX0RJUl9SRVBMWSAmYW1wOyZhbXA7IGN0X3NpcF9pbmZvLSZndDtmb3JjZWRfZHBvcnQpIHsKJiM0MzsJCWludCBkb2ZmID0gKmRwdHIgLSAoY29uc3QgY2hhciAqKXNrYi0mZ3Q7ZGF0YTsKIAkJc3RydWN0IHVkcGhkciAqdWg7CiAKJiM0MzsJCWlmIChkb2ZmICZsdDs9IDApIHsKJiM0MzsJCQlERUJVR19ORVRfV0FSTl9PTl9PTkNFKDEpOwomIzQzOwkJCXJldHVybiBORl9EUk9QOwomIzQzOwkJfQomIzQzOwomIzQzOwkJLyogY3Rfc2lwX2luZm8tJmd0O2ZvcmNlZF9kcG9ydCBvbmx5IGV4cGVjdGVkIHdpdGggVURQICovCiYjNDM7CQlpZiAobmZfY3RfcHJvdG9udW0oY3QpICE9IElQUFJPVE9fVURQKQomIzQzOwkJCXJldHVybiBORl9EUk9QOwomIzQzOwogCQlpZiAoc2tiX2Vuc3VyZV93cml0YWJsZShza2IsIHNrYi0mZ3Q7bGVuKSkgewogCQkJbmZfY3RfaGVscGVyX2xvZyhza2IsIGN0LCAmIzM0O2Nhbm5vdCBtYW5nbGUgcGFja2V0JiMzNDspOwogCQkJcmV0dXJuIE5GX0RST1A7CiAJCX0KIAomIzQzOwkJKmRwdHIgPSBza2ItJmd0O2RhdGEgJiM0MzsgZG9mZjsKIAkJdWggPSAodm9pZCAqKXNrYi0mZ3Q7ZGF0YSAmIzQzOyBwcm90b2ZmOwogCQl1aC0mZ3Q7ZGVzdCA9IGN0X3NpcF9pbmZvLSZndDtmb3JjZWRfZHBvcnQ7CiAKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMKaW5kZXggNDg4NGY3ZjdhYWVlZTAuLmE5ZWFmOTQ1NWM3NzgzIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYwpAQCAtNjU2Myw2ICYjNDM7NjU2Myw5IEBAIHN0YXRpYyBpbnQgbmZ0X2dldF9zZXRfZWxlbShzdHJ1Y3QgbmZ0X2N0eCAqY3R4LCBjb25zdCBzdHJ1Y3QgbmZ0X3NldCAqc2V0LAogCWlmIChlcnIgJmx0OyAwKQogCQlyZXR1cm4gZXJyOwogCiYjNDM7CWlmICghZWxlbS5wcml2KQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiAJZXJyID0gLUVOT01FTTsKIAlza2IgPSBubG1zZ19uZXcoTkxNU0dfR09PRFNJWkUsIEdGUF9BVE9NSUMpOwogCWlmIChza2IgPT0gTlVMTCkKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2N0aGVscGVyLmMgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19jdGhlbHBlci5jCmluZGV4IDJjYmNjYTkxMTBkYmY1Li5mMDYyYWMyMTAzNDMyOSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfY3RoZWxwZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19jdGhlbHBlci5jCkBAIC0zMTYsNiAmIzQzOzMxNiw4IEBAIG5mbmxfY3RoZWxwZXJfdXBkYXRlX3BvbGljeV9vbmUoY29uc3Qgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3RfcG9saWN5ICpwb2xpY3ksCiAKIAluZXdfcG9saWN5LSZndDttYXhfZXhwZWN0ZWQgPQogCQludG9obChubGFfZ2V0X2JlMzIodGJbTkZDVEhfUE9MSUNZX0VYUEVDVF9NQVhdKSk7CiYjNDM7CWlmICghbmV3X3BvbGljeS0mZ3Q7bWF4X2V4cGVjdGVkKQomIzQzOwkJbmV3X3BvbGljeS0mZ3Q7bWF4X2V4cGVjdGVkID0gTkZfQ1RfRVhQRUNUX01BWF9DTlQ7CiAJaWYgKG5ld19wb2xpY3ktJmd0O21heF9leHBlY3RlZCAmZ3Q7IE5GX0NUX0VYUEVDVF9NQVhfQ05UKQogCQlyZXR1cm4gLUVJTlZBTDsKIApkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZnRfc2V0X3JidHJlZS5jIGIvbmV0L25ldGZpbHRlci9uZnRfc2V0X3JidHJlZS5jCmluZGV4IDAxOGJiYjZkZjRjZTQzLi42MjIyZTliYjU3YmM5MCAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfc2V0X3JidHJlZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3NldF9yYnRyZWUuYwpAQCAtMTg0LDEwICYjNDM7MTg0LDE0IEBAIG5mdF9yYnRyZWVfZ2V0KGNvbnN0IHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5mdF9zZXQgKnNldCwKIAlpZiAoIWludGVydmFsIHx8IG5mdF9zZXRfZWxlbV9leHBpcmVkKGludGVydmFsLSZndDtmcm9tKSkKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7CiAKLQlpZiAoZmxhZ3MgJmFtcDsgTkZUX1NFVF9FTEVNX0lOVEVSVkFMX0VORCkKJiM0MzsJaWYgKGZsYWdzICZhbXA7IE5GVF9TRVRfRUxFTV9JTlRFUlZBTF9FTkQpIHsKJiM0MzsJCWlmICghaW50ZXJ2YWwtJmd0O3RvKQomIzQzOwkJCXJldHVybiBOVUxMOwomIzQzOwogCQlyYmUgPSBjb250YWluZXJfb2YoaW50ZXJ2YWwtJmd0O3RvLCBzdHJ1Y3QgbmZ0X3JidHJlZV9lbGVtLCBleHQpOwotCWVsc2UKJiM0MzsJfSBlbHNlIHsKIAkJcmJlID0gY29udGFpbmVyX29mKGludGVydmFsLSZndDtmcm9tLCBzdHJ1Y3QgbmZ0X3JidHJlZV9lbGVtLCBleHQpOwomIzQzOwl9CiAKIAlyZXR1cm4gJmFtcDtyYmUtJmd0O3ByaXY7CiB9CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL3h0X2Nvbm5tYXJrLmMgYi9uZXQvbmV0ZmlsdGVyL3h0X2Nvbm5tYXJrLmMKaW5kZXggNDI3NzA4NGRlMmU3MGMuLjJjZjI3ZjdkNTliOTVmIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL3h0X2Nvbm5tYXJrLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci94dF9jb25ubWFyay5jCkBAIC0xMTIsNiAmIzQzOzExMiwxNiBAQCBzdGF0aWMgaW50IGNvbm5tYXJrX3RnX2NoZWNrKGNvbnN0IHN0cnVjdCB4dF90Z2Noa19wYXJhbSAqcGFyKQogCXJldHVybiByZXQ7CiB9CiAKJiM0MztzdGF0aWMgaW50IGNvbm5tYXJrX3RnX2NoZWNrX3YyKGNvbnN0IHN0cnVjdCB4dF90Z2Noa19wYXJhbSAqcGFyKQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IHh0X2Nvbm5tYXJrX3RnaW5mbzIgKmluZm8gPSBwYXItJmd0O3RhcmdpbmZvOwomIzQzOwomIzQzOwlpZiAoaW5mby0mZ3Q7c2hpZnRfZGlyICZndDsgRF9TSElGVF9SSUdIVCB8fCBpbmZvLSZndDtzaGlmdF9iaXRzICZndDs9IDMyKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CXJldHVybiBjb25ubWFya190Z19jaGVjayhwYXIpOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIGNvbm5tYXJrX3RnX2Rlc3Ryb3koY29uc3Qgc3RydWN0IHh0X3RnZHRvcl9wYXJhbSAqcGFyKQogewogCW5mX2N0X25ldG5zX3B1dChwYXItJmd0O25ldCwgcGFyLSZndDtmYW1pbHkpOwpAQCAtMTYyLDcgJiM0MzsxNzIsNyBAQCBzdGF0aWMgc3RydWN0IHh0X3RhcmdldCBjb25ubWFya190Z19yZWdbXSBfX3JlYWRfbW9zdGx5ID0gewogCQkubmFtZSAgICAgICAgICAgPSAmIzM0O0NPTk5NQVJLJiMzNDssCiAJCS5yZXZpc2lvbiAgICAgICA9IDIsCiAJCS5mYW1pbHkgICAgICAgICA9IE5GUFJPVE9fSVBWNCwKLQkJLmNoZWNrZW50cnkgICAgID0gY29ubm1hcmtfdGdfY2hlY2ssCiYjNDM7CQkuY2hlY2tlbnRyeSAgICAgPSBjb25ubWFya190Z19jaGVja192MiwKIAkJLnRhcmdldCAgICAgICAgID0gY29ubm1hcmtfdGdfdjIsCiAJCS50YXJnZXRzaXplICAgICA9IHNpemVvZihzdHJ1Y3QgeHRfY29ubm1hcmtfdGdpbmZvMiksCiAJCS5kZXN0cm95ICAgICAgICA9IGNvbm5tYXJrX3RnX2Rlc3Ryb3ksCkBAIC0xODMsNyAmIzQzOzE5Myw3IEBAIHN0YXRpYyBzdHJ1Y3QgeHRfdGFyZ2V0IGNvbm5tYXJrX3RnX3JlZ1tdIF9fcmVhZF9tb3N0bHkgPSB7CiAJCS5uYW1lICAgICAgICAgICA9ICYjMzQ7Q09OTk1BUksmIzM0OywKIAkJLnJldmlzaW9uICAgICAgID0gMiwKIAkJLmZhbWlseSAgICAgICAgID0gTkZQUk9UT19JUFY2LAotCQkuY2hlY2tlbnRyeSAgICAgPSBjb25ubWFya190Z19jaGVjaywKJiM0MzsJCS5jaGVja2VudHJ5ICAgICA9IGNvbm5tYXJrX3RnX2NoZWNrX3YyLAogCQkudGFyZ2V0ICAgICAgICAgPSBjb25ubWFya190Z192MiwKIAkJLnRhcmdldHNpemUgICAgID0gc2l6ZW9mKHN0cnVjdCB4dF9jb25ubWFya190Z2luZm8yKSwKIAkJLmRlc3Ryb3kgICAgICAgID0gY29ubm1hcmtfdGdfZGVzdHJveSwKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIveHRfcmF0ZWVzdC5jIGIvbmV0L25ldGZpbHRlci94dF9yYXRlZXN0LmMKaW5kZXggYjFkNzM2YzE1ZmNiZTUuLjdjMDViNjM0MjU3ODRlIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL3h0X3JhdGVlc3QuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL3h0X3JhdGVlc3QuYwpAQCAtMTYsNyAmIzQzOzE2LDcgQEAgeHRfcmF0ZWVzdF9tdChjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpCiB7CiAJY29uc3Qgc3RydWN0IHh0X3JhdGVlc3RfbWF0Y2hfaW5mbyAqaW5mbyA9IHBhci0mZ3Q7bWF0Y2hpbmZvOwogCXN0cnVjdCBnbmV0X3N0YXRzX3JhdGVfZXN0NjQgc2FtcGxlID0gezB9OwotCXVfaW50MzJfdCBicHMxLCBicHMyLCBwcHMxLCBwcHMyOwomIzQzOwl1NjQgYnBzMSwgYnBzMiwgcHBzMSwgcHBzMjsKIAlib29sIHJldCA9IHRydWU7CiAKIAlnZW5fZXN0aW1hdG9yX3JlYWQoJmFtcDtpbmZvLSZndDtlc3QxLSZndDtyYXRlX2VzdCwgJmFtcDtzYW1wbGUpOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci94dF91MzIuYyBiL25ldC9uZXRmaWx0ZXIveHRfdTMyLmMKaW5kZXggMTE3ZDQ2MTVkNjY4NGMuLmVjMWEyMWUzYjZlMmMzIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL3h0X3UzMi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIveHRfdTMyLmMKQEAgLTEwMCw3ICYjNDM7MTAwLDcgQEAgc3RhdGljIGludCB1MzJfbXRfY2hlY2tlbnRyeShjb25zdCBzdHJ1Y3QgeHRfbXRjaGtfcGFyYW0gKnBhcikKIHsKIAljb25zdCBzdHJ1Y3QgeHRfdTMyICpkYXRhID0gcGFyLSZndDttYXRjaGluZm87CiAJY29uc3Qgc3RydWN0IHh0X3UzMl90ZXN0ICpjdDsKLQl1bnNpZ25lZCBpbnQgaTsKJiM0MzsJdW5zaWduZWQgaW50IGksIGo7CiAKIAlpZiAoZGF0YS0mZ3Q7bnRlc3RzICZndDsgQVJSQVlfU0laRShkYXRhLSZndDt0ZXN0cykpCiAJCXJldHVybiAtRUlOVkFMOwpAQCAtMTExLDYgJiM0MzsxMTEsMTYgQEAgc3RhdGljIGludCB1MzJfbXRfY2hlY2tlbnRyeShjb25zdCBzdHJ1Y3QgeHRfbXRjaGtfcGFyYW0gKnBhcikKIAkJaWYgKGN0LSZndDtubnVtcyAmZ3Q7IEFSUkFZX1NJWkUoY3QtJmd0O2xvY2F0aW9uKSB8fAogCQkgICAgY3QtJmd0O252YWx1ZXMgJmd0OyBBUlJBWV9TSVpFKGN0LSZndDt2YWx1ZSkpCiAJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKJiM0MzsJCWZvciAoaiA9IDE7IGogJmx0OyBjdC0mZ3Q7bm51bXM7ICYjNDM7JiM0MztqKSB7CiYjNDM7CQkJc3dpdGNoIChjdC0mZ3Q7bG9jYXRpb25bal0ubmV4dG9wKSB7CiYjNDM7CQkJY2FzZSBYVF9VMzJfTEVGVFNIOgomIzQzOwkJCWNhc2UgWFRfVTMyX1JJR0hUU0g6CiYjNDM7CQkJCWlmIChjdC0mZ3Q7bG9jYXRpb25bal0ubnVtYmVyICZndDs9IDMyKQomIzQzOwkJCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCX0KJiM0MzsJCX0KIAl9CiAKIAlyZXR1cm4gMDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTM6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTYxMwoJCQkJCQkJb3V0cHV0OiAzNzAKCQkJCQkJCXRob3VnaHRzOiAxMDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldGZpbHRlciBQYXRjaCBTZXJpZXMqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggc2VyaWVzIGhlcmUsIGFuZCBpdCYjMzk7cyB0b3VjaGluZyBxdWl0ZSBhIGZldyBmaWxlcyBzY2F0dGVyZWQgYWNyb3NzIGBuZXQvaXB2Ni9uZXRmaWx0ZXIvYCBhbmQgYG5ldC9uZXRmaWx0ZXIvYC4gTG9va3MgbGlrZSBhIG5ldGZpbHRlciBidWdmaXggYm9uYW56YSwgc3Bhbm5pbmcgYSB3aWRlIHJhbmdlIG9mIGZ1bmN0aW9uYWxpdHkuIExldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgpGaXJzdCB1cCwgdGhlIGNoYW5nZXMgaW4gYGlwNnRfYWguY2AsIGBpcDZ0X2hiaC5jYCwgYW5kIGBpcDZ0X3J0LmNgIGFsbCBzZWVtIHRvIGJlIGFwcGx5aW5nIHRoZSBgaG90ZHJvcCA9IHRydWVgIHdoZW4gZGVhbGluZyB3aXRoIHNtYWxsZXIgdGhhbiBleHBlY3RlZCBwYWNrZXRzLCB3aGljaCBtYWtlcyBzZW5zZS4gQWx3YXlzIGdvb2QgdG8gaGF2ZSB0aGF0IHNhZmV0eSBjaGVjay4gVGhlbiwgYGlwX3ZzX2Nvbm4uY2AgaGFzIGEgc2ltcGxlIGBtZW1zZXRgIHRvIHplcm8gb3V0IHRoZSBzZXEgc3RydWN0IGluIHRoZSByaWdodCBsb2NhdGlvbi4gYGlwX3ZzX2NvcmUuY2AgaGFzIGFuIE1UVSBjYWxjdWxhdGlvbiBmaXgsIG1ha2luZyBzdXJlIGB1bGVuYCBpcyBwYXJ0IG9mIHRoZSBjYWxjdWxhdGlvbi4KCk5vdywgYG5mX25hdF9zaXAuY2AgaGFzIHNvbWUgU0lQIE5BVCBtYW5nbGluZyBmaXhlcywgd2hpY2ggaW5jbHVkZSBib3VuZHMgY2hlY2tzIGZvciBgZG9mZiAmbHQ7PSAwYCBhbmQgcHJvdG9jb2wgY2hlY2tpbmcsIG1ha2luZyBzdXJlIGl0IGlzIG5vdCBVRFAuIGBuZl90YWJsZXNfYXBpLmNgIGlzIGdldHRpbmcgYSBudWxsIGNoZWNrIGluIGBuZnRfZ2V0X3NldF9lbGVtYCB0byBwcm90ZWN0IGZyb20gYSBwb3NzaWJsZSBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UuIGBuZm5ldGxpbmtfY3RoZWxwZXIuY2Agbm93IGhhcyBhIGBtYXhfZXhwZWN0ZWRgIGRlZmF1bHQuIGBuZnRfc2V0X3JidHJlZS5jYCBoYXMgYSBudWxsIGNoZWNrIGFzIHdlbGwgaW4gYG5mdF9yYnRyZWVfZ2V0YC4KCkluIGB4dF9jb25ubWFyay5jYCwgd2UmIzM5O3JlIGdldHRpbmcgYSBgY29ubm1hcmtfdGdfY2hlY2tfdjJgIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIGBzaGlmdF9kaXJgIGFuZCBgc2hpZnRfYml0c2AsIHdoaWNoIGlzIHNtYXJ0LiBPbiB0byBgeHRfcmF0ZWVzdC5jYCwgd2hlcmUgd2Ugc2VlIGEgY2hhbmdlIGZyb20gYHVfaW50MzJfdGAgdG8gYHU2NGAgZm9yIGBicHMxYCwgYGJwczJgLCBgcHBzMWAsIGFuZCBgcHBzMmAuIFRoYXTigJlzIGEgc2lnbmlmaWNhbnQgc2l6ZSBpbmNyZWFzZSB0byBoYW5kbGUgcG9zc2libGUgb3ZlcmZsb3cgaW4gdGhlIG9yaWdpbmFsIGNvZGUuIEFuZCBmaW5hbGx5LCBgeHRfdTMyLmNgIGhhcyBhIGNoZWNrIGZvciBgY3QtJmd0O2xvY2F0aW9uW2pdLm51bWJlciAmZ3Q7PSAzMmAgZm9yIGBYVF9VMzJfTEVGVFNIYCBhbmQgYFhUX1UzMl9SSUdIVFNIYCwgcHJldmVudGluZyBhIGJhZCBtZW1vcnkgYWNjZXNzLgoKT3ZlcmFsbCwgYSBnb29kIGNvbGxlY3Rpb24gb2YgZnVuY3Rpb25hbCBpbXByb3ZlbWVudHMgaW4gdGhlIG5ldGZpbHRlciBhbmQgSVBWUyBhcmVhcy4gRGVmaW5pdGVseSB3b3J0aCBzb21lIHNlcmlvdXMgZnV6emluZywgZXNwZWNpYWxseSBnaXZlbiB0aGUgcmFuZ2Ugb2YgY29tcG9uZW50cyBpbnZvbHZlZC4KClJpZ2h0LCBzbyB0byBtYWtlIHRoaXMgZnV6emluZyBjYW1wYWlnbiBlZmZlY3RpdmUsIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgcmVsZXZhbnQgQ09ORklHIG9wdGlvbnMuIEkgY2FuIHNlZSB0aGUgZm9sbG93aW5nIGFyZSBrZXk6IGBJUF9WU2AsIGBORl9OQVRfU0lQYCwgYE5GX1RBQkxFU2AsIGBORVRGSUxURVJfWFRfTUFUQ0hfVTMyYCwgYE5FVEZJTFRFUl9YVF9UQVJHRVRfQ09OTk1BUktgLCBgTkVURklMVEVSX1hUX01BVENIX1JBVEVFU1RgLCBgSVA2X05GX01BVENIX0FIYCwgYElQNl9ORl9NQVRDSF9IQkhgLCBgSVA2X05GX01BVENIX1JUYCwgYW5kIGBORl9DVF9ORVRMSU5LX0hFTFBFUmAuCgpJIHNob3VsZCBhbHNvIGZvY3VzIG9uIHNvbWUgc3BlY2lmaWMgc3ltYm9scywgd2hpY2ggSSYjMzk7dmUgaWRlbnRpZmllZCBhczogYGFoX210NmAsIGBoYmhfbXQ2YCwgYHJ0X210NmAsIGBpcF92c19jb25uX25ld2AsIGBpcF92c19pbl9pY21wYCwgYG5mX25hdF9zaXBgLCBgbmZ0X2dldF9zZXRfZWxlbWAsIGBuZm5sX2N0aGVscGVyX3VwZGF0ZV9wb2xpY3lfb25lYCwgYG5mdF9yYnRyZWVfZ2V0YCwgYGNvbm5tYXJrX3RnX2NoZWNrX3YyYCwgYHh0X3JhdGVlc3RfbXRgLCBhbmQgYHUzMl9tdF9jaGVja2VudHJ5YC4gSSB3aWxsIGRvdWJsZSBjaGVjayB0aGUgY29uZmlnIG9wdGlvbnMgYXMgd2VsbCB0byBtYWtlIHN1cmUgSSBkaWQgbm90IG1pc3MgYW55LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUDZfTkZfTUFUQ0hfQUgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZz05Mz1pZiBJUDZfTkZfSVBUQUJMRVNcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy05NS0jIFRoZSBzaW1wbGUgbWF0Y2hlcy5cbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjk2OmNvbmZpZyBJUDZfTkZfTUFUQ0hfQUhcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTk3LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDthaFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUDZfTkZfTUFUQ0hfSEJIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUDZfTkZfTUFUQ0hfUlQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZz0xNTg9Y29uZmlnIElQNl9ORl9NQVRDSF9SUEZJTFRFUlxuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTE2OC1cbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjE2OTpjb25maWcgSVA2X05GX01BVENIX1JUXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xNzAtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O3J0XCYjMzQ7IFJvdXRpbmcgaGVhZGVyIG1hdGNoIHN1cHBvcnQmIzM5O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX05BVF9TSVAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTM6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX05BVF9TSVAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTQyNj1jb25maWcgTkZfTkFUX0lSQ1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDMxOmNvbmZpZyBORl9OQVRfU0lQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDMyLVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVURklMVEVSX1hUX01BVENIX1UzMiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9MTYyMz1jb25maWcgTkVURklMVEVSX1hUX01BVENIX1RJTUVcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTYzNi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjM3OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfVTMyXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTYzOC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7dTMyXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9DT05OTUFSSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9ODI3PWNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0NMQVNTSUZZXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTgzOC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4Mzk6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfQ09OTk1BUktcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04NDAtXHR0cmlzdGF0ZSAgJiMzOTtcJiMzNDtDT05OTUFSS1wmIzM0OyB0YXJnZXQgc3VwcG9ydCYjMzk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfUkFURUVTVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9MTUwNz1jb25maWcgTkVURklMVEVSX1hUX01BVENIX1FVT1RBXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1MTYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTUxNzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1JBVEVFU1Rcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTE4LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtyYXRlZXN0XCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfQ1RfTkVUTElOS19IRUxQRVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTM3Mz1jb25maWcgTkZfQ1RfTkVUTElOS19USU1FT1VUXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTM4NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozODU6Y29uZmlnIE5GX0NUX05FVExJTktfSEVMUEVSXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzg2LVx0dHJpc3RhdGUgJiMzOTtDb25uZWN0aW9uIHRyYWNraW5nIGhlbHBlcnMgaW4gdXNlci1zcGFjZSB2aWEgTmV0bGluayYjMzk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9WUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQtI1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NTptZW51Y29uZmlnIElQX1ZTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVx0dHJpc3RhdGUgXCYjMzQ7SVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICYjMzk7SVBWUyBTSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVx0aW50IFwmIzM0O0lQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICYjMzk7SVBWUyBNSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cdGludCBcJiMzNDtJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODA4CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5JiMzOTtyZSBteSBvd246CgoqKkRpdmluZyBCYWNrIGludG8gSVB2NiBIb3AtYnktSG9wIE9wdGlvbnMqKgoKUmlnaHQsIHRpbWUgdG8gY2lyY2xlIGJhY2sgdG8gYElQNl9ORl9NQVRDSF9IQkhgLiBJJiMzOTt2ZSBiZWVuIHdvcmtpbmcgd2l0aCBJUHY2IGZvciBsb25nIGVub3VnaCB0byBoYXZlIGEgZ29vZCBoYW5kbGUgb24gdGhpbmdzLCBidXQgSSYjMzk7dmUgbGVhcm5lZCB0aGF0IGEgc29saWQgdW5kZXJzdGFuZGluZyByZXF1aXJlcyBjb25zdGFudCByZXZpZXcsIHBhcnRpY3VsYXJseSB3aXRoIHRob3NlIG1vcmUgY29tcGxleCBhcmVhcy4gV2l0aCBteSBleHBlcmllbmNlLCBJIHRlbmQgdG8gcmV2aWV3IGRldGFpbHMgdGhhdCBjb3VsZCBjYXVzZSBpc3N1ZXMuIFNvLCBsZXQgbWUganVzdCByZXZpc2l0IHRoZSBjb2RlIHJlbGF0ZWQgdG8gdGhhdCBzcGVjaWZpYyBtYXRjaCwgbWFrZSBzdXJlIEkgaGF2ZSBhIGdvb2QgZ3Jhc3Agb2YgdGhlIGNvcm5lciBjYXNlcywgcmVmcmVzaCBteSBtZW1vcnkgb24gYW55IHJlY2VudCBkaXNjdXNzaW9ucyBhcm91bmQgaXQsIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgbnVhbmNlcyBJIG1pZ2h0IGhhdmUgbWlzc2VkLiBBIHNlY29uZCBsb29rIGF0IHRoYXQgY29kZSBpcyBwcm9iYWJseSBvdmVyZHVlLiBJdCYjMzk7cyB0b28gZWFzeSB0byBhc3N1bWUgZmFtaWxpYXJpdHkgYW5kIG92ZXJsb29rIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgb3Igb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEzOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUDZfTkZfTUFUQ0hfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc9OTM9aWYgSVA2X05GX0lQVEFCTEVTXG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctOTUtIyBUaGUgc2ltcGxlIG1hdGNoZXMuXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZzo5Njpjb25maWcgSVA2X05GX01BVENIX0FIXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy05Ny1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7YWhcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTAzLVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc6MTA0OmNvbmZpZyBJUDZfTkZfTUFUQ0hfRVVJNjRcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTEwNS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7ZXVpNjRcJiMzNDsgYWRkcmVzcyBjaGVjayYjMzk7XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTEzLVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc6MTE0OmNvbmZpZyBJUDZfTkZfTUFUQ0hfRlJBR1xubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTE1LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtmcmFnXCYjMzQ7IEZyYWdtZW50YXRpb24gaGVhZGVyIG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTEyMi1cbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjEyMzpjb25maWcgSVA2X05GX01BVENIX09QVFNcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTEyNC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7aGJoXCYjMzQ7IGhvcC1ieS1ob3AgYW5kIFwmIzM0O2RzdFwmIzM0OyBvcHRzIGhlYWRlciBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xMzEtXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZzoxMzI6Y29uZmlnIElQNl9ORl9NQVRDSF9ITFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTMzLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtobFwmIzM0OyBob3BsaW1pdCBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xNDAtXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZzoxNDE6Y29uZmlnIElQNl9ORl9NQVRDSF9JUFY2SEVBREVSXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xNDItXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2lwdjZoZWFkZXJcJiMzNDsgSVB2NiBFeHRlbnNpb24gSGVhZGVycyBNYXRjaCYjMzk7XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTQ5LVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc6MTUwOmNvbmZpZyBJUDZfTkZfTUFUQ0hfTUhcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTE1MS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7bWhcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTU3LVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc6MTU4OmNvbmZpZyBJUDZfTkZfTUFUQ0hfUlBGSUxURVJcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTE1OS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7cnBmaWx0ZXJcJiMzNDsgcmV2ZXJzZSBwYXRoIGZpbHRlciBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xNjgtXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZzoxNjk6Y29uZmlnIElQNl9ORl9NQVRDSF9SVFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTcwLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtydFwmIzM0OyBSb3V0aW5nIGhlYWRlciBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xNzctXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZzoxNzg6Y29uZmlnIElQNl9ORl9NQVRDSF9TUkhcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTE3OS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7c3JoXCYjMzQ7IFNlZ21lbnQgUm91dGluZyBoZWFkZXIgbWF0Y2ggc3VwcG9ydCYjMzk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEzOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk4MjAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipFeGFtaW5pbmcgSVB2NiBPcHRpb25zIGFuZCBTSVAgTkFUIGluIE5ldGZpbHRlcioqCgpSaWdodCwgc28gYElQNl9ORl9NQVRDSF9PUFRTYC4uLiB0aGF0JiMzOTtzIHNwZWNpZmljYWxseSBmb3IgaGFuZGxpbmcgaG9wLWJ5LWhvcCAoaGJoKSBhbmQgZGVzdGluYXRpb24gb3B0aW9ucywgcmlnaHQ/IEkgbmVlZCB0byBrZWVwIHRoYXQgc3RyYWlnaHQuIFRoZXNlIG9wdGlvbnMgaW4gSVB2NiBwYWNrZXRzIGNhbiBiZSB0cmlja3kuCgpOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRoaXMgdGllcyBpbnRvIE5BVCwgZXNwZWNpYWxseSB3aXRoIFNJUC4gTGV0JiMzOTtzIHNlZS4uLiBJIHNob3VsZCBjaGVjayBgTkZfVEFCTEVTYCBhbmQgdGhlbiBgTkZfTkFUX1NJUGAuIEFoLCByaWdodCwgYE5GX05BVF9TSVBgIGRlcGVuZHMgb24gYE5GX0NPTk5UUkFDS19TSVBgLiBUaGF0IGNvbm5lY3Rpb24gdHJhY2tpbmcgbW9kdWxlIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyBTSVAgdHJhZmZpYyBnZXRzIE5BVCYjMzk7ZC4gSSBzaG91bGQgcHJvYmFibHkgZGlnIGludG8gYE5GX0NPTk5UUkFDS19TSVBgIHRvIHNlZSB0aGUgZGV0YWlscyBvZiBob3cgaXQmIzM5O3MgaGFuZGxlZC4gTWFrZXMgc2Vuc2Ug4oCTIGNvbm5lY3Rpb24gdHJhY2tpbmcgYmVmb3JlIHRoZSBOQVQgb3BlcmF0aW9uLiBUaGlzIHNob3VsZCBjbGFyaWZ5IHRoZSBvdmVyYWxsIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEzOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORl9DT05OVFJBQ0tfU0lQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz0zMzA9Y29uZmlnIE5GX0NPTk5UUkFDS19TQU5FXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0Mi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNDM6Y29uZmlnIE5GX0NPTk5UUkFDS19TSVBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNDQtXHR0cmlzdGF0ZSBcJiMzNDtTSVAgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDIyMQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBLZXJuZWwgQ29uZmlndXJhdGlvbiBmb3IgU0lQIENvbm5lY3Rpb24gVHJhY2tpbmcqKgoKT2theSwgc28gSSYjMzk7bSBwcmV0dHkgc3VyZSB3ZSYjMzk7dmUgcGlubmVkIGRvd24gYE5GX0NPTk5UUkFDS19TSVBgIGFzIHRoZSBjcml0aWNhbCBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgdGhlIFNJUCBjb25uZWN0aW9uIHRyYWNraW5nIG1vZHVsZS4gVGhhdCYjMzk7cyBnb29kLCBidXQgbGV0JiMzOTtzIG5vdCBqdW1wIHRvIGNvbmNsdXNpb25zLiBJdCYjMzk7cyBhbHdheXMgd2lzZSB0byBiZSB0aG9yb3VnaCwgZXNwZWNpYWxseSB3aXRoIHRoZSBrZXJuZWwuCgpOb3csIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBgTkZfVEFCTEVTYCBpcyBlbmFibGVkLiBJdCYjMzk7cyBvZnRlbiBhIGRlcGVuZGVuY3ksIGFuZCBhIGZvdW5kYXRpb25hbCBlbGVtZW50IGZvciBoYW5kbGluZyBuZXR3b3JrIHRhYmxlcyBlZmZlY3RpdmVseS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIHVuZGVybHlpbmcgaW5mcmFzdHJ1Y3R1cmUgaXMgcHJlc2VudCBhbmQgYWNjb3VudGVkIGZvciB0byB2YWxpZGF0ZSB0aGlzIGNob2ljZS4gV2UgbmVlZCB0byBidWlsZCBvdXIgc3RyYXRlZ3kgdXBvbiBhIHNvbGlkIGJhc2UsIGRvbiYjMzk7dCB3ZT8gTGV0JiMzOTtzIHRha2UgYSBsb29rLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfVEFCTEVTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz00NTM9ZW5kaWYgIyBORl9DT05OVFJBQ0tcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NTQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDU1OmNvbmZpZyBORl9UQUJMRVNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NTYtXHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9NDcxPWlmIE5GX1RBQkxFU1xubmV0L25ldGZpbHRlci9LY29uZmlnOjQ3Mjpjb25maWcgTkZfVEFCTEVTX0lORVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NzMtXHRkZXBlbmRzIG9uIElQVjZcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDc5LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ4MDpjb25maWcgTkZfVEFCTEVTX05FVERFVlxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ4MS1cdGJvb2wgXCYjMzQ7TmV0ZmlsdGVyIG5mX3RhYmxlcyBuZXRkZXYgdGFibGVzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTM6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2NDAKCQkJCQkJCW91dHB1dDogMzAxCgkJCQkJCQl0aG91Z2h0czogNTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE5ldGZpbHRlciBhbmQgSVBWUyBQYXRjaCBTZXJpZXMqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggc2VyaWVzIGFuZCB0aGlua2luZyB0aHJvdWdoIHRoZSBpbXBsaWNhdGlvbnMgZm9yIGZ1enppbmcuIEZpcnN0LCBJIHNlZSBhIHNldCBvZiBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBhcmUgcmVsZXZhbnQ6IGBJUF9WU2AsIGBORl9DT05OVFJBQ0tfU0lQYCwgYE5GX1RBQkxFU2AsIGBORVRGSUxURVJfWFRfTUFUQ0hfVTMyYCwgYE5FVEZJTFRFUl9YVF9UQVJHRVRfQ09OTk1BUktgLCBgTkVURklMVEVSX1hUX01BVENIX1JBVEVFU1RgLCBgSVA2X05GX01BVENIX0FIYCwgYElQNl9ORl9NQVRDSF9PUFRTYCwgYElQNl9ORl9NQVRDSF9SVGAsIGFuZCBgTkZfQ1RfTkVUTElOS19IRUxQRVJgLiBUaGVzZSBhcmUgYWxsIGNydWNpYWwgZm9yIGVuYWJsaW5nIHRoZSBmZWF0dXJlcyB0aGUgcGF0Y2hlcyBhcmUgdGFyZ2V0aW5nLCBzbyB0aGV5JiMzOTtsbCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRlc3RpbmcuCgpOb3csIEkgbmVlZCB0byBmb2N1cyBvbiB0aGUga2V5IHN5bWJvbHMsIHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgYmVpbmcgbW9kaWZpZWQgb3IgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgYnVnIGZpeGVzOiBgYWhfbXQ2YCwgYGhiaF9tdDZgLCBgcnRfbXQ2YCwgYGlwX3ZzX2Nvbm5fbmV3YCwgYGlwX3ZzX2luX2ljbXBgLCBgbmZfbmF0X3NpcGAsIGBuZnRfZ2V0X3NldF9lbGVtYCwgYG5mbmxfY3RoZWxwZXJfdXBkYXRlX3BvbGljeV9vbmVgLCBgbmZ0X3JidHJlZV9nZXRgLCBgY29ubm1hcmtfdGdfY2hlY2tfdjJgLCBgeHRfcmF0ZWVzdF9tdGAsIGFuZCBgdTMyX210X2NoZWNrZW50cnlgLgoKTGV0JiMzOTtzIHNlZSwgYGNvbm5tYXJrX3RnX2NoZWNrX3YyYCwgeWVzLCB0aGF0JiMzOTtzIGEgY2hlY2tlbnRyeSBmdW5jdGlvbiwgZ29vZC4gQW5kIGBpcF92c19jb25uX25ld2AsIGFoLCB0aGlzIGlzIHRoZSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgbmV3IElQVlMgY29ubmVjdGlvbnMuIEFsc28sIGBpcF92c19pbl9pY21wYCBpcyBpbnZvbHZlZCB3aGVuIGhhbmRsaW5nIElDTVAgcGFja2V0cyBmb3IgSVBWUy4gTmF0dXJhbGx5LCBgbmZfbmF0X3NpcGAgaXMga2V5IHdoZW4gd2UgTkFUIFNJUCBwYWNrZXRzLCBvYnZpb3VzbHkuIE5vdywgYG5mdF9nZXRfc2V0X2VsZW1gIGFuZCBgbmZubF9jdGhlbHBlcl91cGRhdGVfcG9saWN5X29uZWAgYXJlIG5ldGxpbmstcmVsYXRlZCwgYW5kIGBuZnRfcmJ0cmVlX2dldGAgaXMgaW52b2x2ZWQgd2l0aCBuZnRhYmxlcyBzZXRzLiBgeHRfcmF0ZWVzdF9tdGAgaXMgdXNlZCBmb3IgbWF0Y2hpbmcgcGFja2V0cyBhbmQgYHUzMl9tdF9jaGVja2VudHJ5YCBpcyByZWFjaGVkIHdoZW4gYWRkaW5nIGEgcnVsZS4KClRoZSBlc3NlbnRpYWwgcG9pbnQgaGVyZSBpcyB0aGF0ICphbGwqIG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGFuZCByZXByZXNlbnQgcmVhbCBmdW5jdGlvbmFsIGNoYW5nZXMgd2l0aGluIHRoZSBuZXRmaWx0ZXIgYW5kIElQVlMgc3Vic3lzdGVtcy4gVGhlIHBhdGNoIHNlcmllcyBkaXJlY3RseSBhZGRyZXNzZXMgYnVncyBsaWtlIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBhbmQgaW5jb3JyZWN0IE1UVSBjYWxjdWxhdGlvbnMuIFRoZXJlZm9yZSwgYSBmdXp6ZXIgbmVlZHMgdG8gZXhwbG9yZSB0aGVzZSBjb2RlIHBhdGhzIGFnZ3Jlc3NpdmVseSB0byBlbnN1cmUgdGhhdCB0aGUgZml4ZXMgYXJlIHJvYnVzdCBhbmQgdGhhdCBubyBuZXcgcmVncmVzc2lvbnMgYXJlIGludHJvZHVjZWQuIFRoZSBmdXp6aW5nIGNhbXBhaWduIHNob3VsZCBhYnNvbHV0ZWx5IHRhcmdldCB0aGVzZSBhcmVhcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTM6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19TSVAmIzM0OywKICAgICYjMzQ7TkZfVEFCTEVTJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUl9YVF9NQVRDSF9VMzImIzM0OywKICAgICYjMzQ7TkVURklMVEVSX1hUX1RBUkdFVF9DT05OTUFSSyYjMzQ7LAogICAgJiMzNDtORVRGSUxURVJfWFRfTUFUQ0hfUkFURUVTVCYjMzQ7LAogICAgJiMzNDtJUDZfTkZfTUFUQ0hfQUgmIzM0OywKICAgICYjMzQ7SVA2X05GX01BVENIX09QVFMmIzM0OywKICAgICYjMzQ7SVA2X05GX01BVENIX1JUJiMzNDssCiAgICAmIzM0O05GX0NUX05FVExJTktfSEVMUEVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWhfbXQ2JiMzNDssCiAgICAmIzM0O2hiaF9tdDYmIzM0OywKICAgICYjMzQ7cnRfbXQ2JiMzNDssCiAgICAmIzM0O2lwX3ZzX2Nvbm5fbmV3JiMzNDssCiAgICAmIzM0O2lwX3ZzX2luX2ljbXAmIzM0OywKICAgICYjMzQ7bmZfbmF0X3NpcCYjMzQ7LAogICAgJiMzNDtuZnRfZ2V0X3NldF9lbGVtJiMzNDssCiAgICAmIzM0O25mbmxfY3RoZWxwZXJfdXBkYXRlX3BvbGljeV9vbmUmIzM0OywKICAgICYjMzQ7bmZ0X3JidHJlZV9nZXQmIzM0OywKICAgICYjMzQ7Y29ubm1hcmtfdGdfY2hlY2tfdjImIzM0OywKICAgICYjMzQ7eHRfcmF0ZWVzdF9tdCYjMzQ7LAogICAgJiMzNDt1MzJfbXRfY2hlY2tlbnRyeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoaXMgcGF0Y2ggc2VyaWVzIGZpeGVzIG11bHRpcGxlIGJ1Z3MgaW4gbmV0ZmlsdGVyIGFuZCBJUFZTIGNvbXBvbmVudHMsIGluY2x1ZGluZyBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1bmluaXRpYWxpemVkIG1lbW9yeSwgYW5kIGluY29ycmVjdCBNVFUgY2FsY3VsYXRpb25zLiBGdXp6aW5nIHRoZXNlIHBhdGhzIHdpbGwgaGVscCBlbnN1cmUgdGhlIGZpeGVzIGFyZSByb2J1c3QgYW5kIGRvbiYjMzk7dCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19TSVAmIzM0OywKICAgICYjMzQ7TkZfVEFCTEVTJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUl9YVF9NQVRDSF9VMzImIzM0OywKICAgICYjMzQ7TkVURklMVEVSX1hUX1RBUkdFVF9DT05OTUFSSyYjMzQ7LAogICAgJiMzNDtORVRGSUxURVJfWFRfTUFUQ0hfUkFURUVTVCYjMzQ7LAogICAgJiMzNDtJUDZfTkZfTUFUQ0hfQUgmIzM0OywKICAgICYjMzQ7SVA2X05GX01BVENIX09QVFMmIzM0OywKICAgICYjMzQ7SVA2X05GX01BVENIX1JUJiMzNDssCiAgICAmIzM0O05GX0NUX05FVExJTktfSEVMUEVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWhfbXQ2JiMzNDssCiAgICAmIzM0O2hiaF9tdDYmIzM0OywKICAgICYjMzQ7cnRfbXQ2JiMzNDssCiAgICAmIzM0O2lwX3ZzX2Nvbm5fbmV3JiMzNDssCiAgICAmIzM0O2lwX3ZzX2luX2ljbXAmIzM0OywKICAgICYjMzQ7bmZfbmF0X3NpcCYjMzQ7LAogICAgJiMzNDtuZnRfZ2V0X3NldF9lbGVtJiMzNDssCiAgICAmIzM0O25mbmxfY3RoZWxwZXJfdXBkYXRlX3BvbGljeV9vbmUmIzM0OywKICAgICYjMzQ7bmZ0X3JidHJlZV9nZXQmIzM0OywKICAgICYjMzQ7Y29ubm1hcmtfdGdfY2hlY2tfdjImIzM0OywKICAgICYjMzQ7eHRfcmF0ZWVzdF9tdCYjMzQ7LAogICAgJiMzNDt1MzJfbXRfY2hlY2tlbnRyeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoaXMgcGF0Y2ggc2VyaWVzIGZpeGVzIG11bHRpcGxlIGJ1Z3MgaW4gbmV0ZmlsdGVyIGFuZCBJUFZTIGNvbXBvbmVudHMsIGluY2x1ZGluZyBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1bmluaXRpYWxpemVkIG1lbW9yeSwgYW5kIGluY29ycmVjdCBNVFUgY2FsY3VsYXRpb25zLiBGdXp6aW5nIHRoZXNlIHBhdGhzIHdpbGwgaGVscCBlbnN1cmUgdGhlIGZpeGVzIGFyZSByb2J1c3QgYW5kIGRvbiYjMzk7dCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMzoxODo0MS4zMDMzNjA2OTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTMyMzQ0MTgyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9WU1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLX1NJUFwiLFxuICAgIFwiTkZfVEFCTEVTXCIsXG4gICAgXCJORVRGSUxURVJfWFRfTUFUQ0hfVTMyXCIsXG4gICAgXCJORVRGSUxURVJfWFRfVEFSR0VUX0NPTk5NQVJLXCIsXG4gICAgXCJORVRGSUxURVJfWFRfTUFUQ0hfUkFURUVTVFwiLFxuICAgIFwiSVA2X05GX01BVENIX0FIXCIsXG4gICAgXCJJUDZfTkZfTUFUQ0hfT1BUU1wiLFxuICAgIFwiSVA2X05GX01BVENIX1JUXCIsXG4gICAgXCJORl9DVF9ORVRMSU5LX0hFTFBFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFoX210NlwiLFxuICAgIFwiaGJoX210NlwiLFxuICAgIFwicnRfbXQ2XCIsXG4gICAgXCJpcF92c19jb25uX25ld1wiLFxuICAgIFwiaXBfdnNfaW5faWNtcFwiLFxuICAgIFwibmZfbmF0X3NpcFwiLFxuICAgIFwibmZ0X2dldF9zZXRfZWxlbVwiLFxuICAgIFwibmZubF9jdGhlbHBlcl91cGRhdGVfcG9saWN5X29uZVwiLFxuICAgIFwibmZ0X3JidHJlZV9nZXRcIixcbiAgICBcImNvbm5tYXJrX3RnX2NoZWNrX3YyXCIsXG4gICAgXCJ4dF9yYXRlZXN0X210XCIsXG4gICAgXCJ1MzJfbXRfY2hlY2tlbnRyeVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhpcyBwYXRjaCBzZXJpZXMgZml4ZXMgbXVsdGlwbGUgYnVncyBpbiBuZXRmaWx0ZXIgYW5kIElQVlMgY29tcG9uZW50cywgaW5jbHVkaW5nIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBhbmQgaW5jb3JyZWN0IE1UVSBjYWxjdWxhdGlvbnMuIEZ1enppbmcgdGhlc2UgcGF0aHMgd2lsbCBoZWxwIGVuc3VyZSB0aGUgZml4ZXMgYXJlIHJvYnVzdCBhbmQgZG9uJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMzoxODo0MS4zMDMzNjg2ODlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4OTI2MTI0OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyZTNmMGY2M2VmZmQ3MWVkNDBkZDZiZTRmMWVkYzE5MjM2YWI0YThjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDMgMTM6MTg6MzkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfYWguYyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2FoLmNcXG5pbmRleCA3MGRhMmYyY2UwNjRjYS4uMTI1ODc4M2VkODc2MjkgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfYWguY1xcbisrKyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2FoLmNcXG5AQCAtNTYsNiArNTYsMTEgQEAgc3RhdGljIGJvb2wgYWhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4gXFx0fVxcbiBcXG4gXFx0aGRybGVuID0gaXB2Nl9hdXRobGVuKGFoKTtcXG4rXFx0aWYgKHNrYi1cXHUwMDNlbGVuIC0gcHRyIFxcdTAwM2MgaGRybGVuKSB7XFxuK1xcdFxcdC8qIFBhY2tldCBzbWFsbGVyIHRoYW4gaXRzIGxlbmd0aCBmaWVsZCAqL1xcbitcXHRcXHRwYXItXFx1MDAzZWhvdGRyb3AgPSB0cnVlO1xcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4gXFxuIFxcdHByX2RlYnVnKFxcXCJJUHY2IEFIIExFTiAldSAldSBcXFwiLCBoZHJsZW4sIGFoLVxcdTAwM2VoZHJsZW4pO1xcbiBcXHRwcl9kZWJ1ZyhcXFwiUkVTICUwNFggXFxcIiwgYWgtXFx1MDAzZXJlc2VydmVkKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguY1xcbmluZGV4IDQ1MGRkNTM4NDZhMmY3Li42ZDFhNWQyMDI2YTY3OCAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguY1xcbisrKyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jXFxuQEAgLTc1LDYgKzc1LDcgQEAgaGJoX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuIFxcdGhkcmxlbiA9IGlwdjZfb3B0bGVuKG9oKTtcXG4gXFx0aWYgKHNrYi1cXHUwMDNlbGVuIC0gcHRyIFxcdTAwM2MgaGRybGVuKSB7XFxuIFxcdFxcdC8qIFBhY2tldCBzbWFsbGVyIHRoYW4gaXQncyBsZW5ndGggZmllbGQgKi9cXG4rXFx0XFx0cGFyLVxcdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9ydC5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfcnQuY1xcbmluZGV4IDU1NjFiZDljZWE4MTg1Li4yNzhiNTI3NTJmMzY0NSAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9ydC5jXFxuKysrIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfcnQuY1xcbkBAIC01Niw3ICs1Niw4IEBAIHN0YXRpYyBib29sIHJ0X210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuIFxcbiBcXHRoZHJsZW4gPSBpcHY2X29wdGxlbihyaCk7XFxuIFxcdGlmIChza2ItXFx1MDAzZWxlbiAtIHB0ciBcXHUwMDNjIGhkcmxlbikge1xcbi1cXHRcXHQvKiBQY2tldCBzbWFsbGVyIHRoYW4gaXRzIGxlbmd0aCBmaWVsZCAqL1xcbitcXHRcXHQvKiBQYWNrZXQgc21hbGxlciB0aGFuIGl0cyBsZW5ndGggZmllbGQgKi9cXG4rXFx0XFx0cGFyLVxcdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xcbmluZGV4IGNiMzY2NDFmOGQxY2MxLi42ZWQyNjIyMzYzZjBkNiAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xcbkBAIC0xNDIwLDggKzE0MjAsOCBAQCBpcF92c19jb25uX25ldyhjb25zdCBzdHJ1Y3QgaXBfdnNfY29ubl9wYXJhbSAqcCwgaW50IGRlc3RfYWYsXFxuIFxcdGNwLVxcdTAwM2VhcHAgPSBOVUxMO1xcbiBcXHRjcC1cXHUwMDNlYXBwX2RhdGEgPSBOVUxMO1xcbiBcXHQvKiByZXNldCBzdHJ1Y3QgaXBfdnNfc2VxICovXFxuLVxcdGNwLVxcdTAwM2Vpbl9zZXEuZGVsdGEgPSAwO1xcbi1cXHRjcC1cXHUwMDNlb3V0X3NlcS5kZWx0YSA9IDA7XFxuK1xcdG1lbXNldChcXHUwMDI2Y3AtXFx1MDAzZWluX3NlcSwgMCwgc2l6ZW9mKGNwLVxcdTAwM2Vpbl9zZXEpKTtcXG4rXFx0bWVtc2V0KFxcdTAwMjZjcC1cXHUwMDNlb3V0X3NlcSwgMCwgc2l6ZW9mKGNwLVxcdTAwM2VvdXRfc2VxKSk7XFxuIFxcbiBcXHRpZiAodW5saWtlbHkoZmxhZ3MgXFx1MDAyNiBJUF9WU19DT05OX0ZfTk9fQ1BPUlQpKSB7XFxuIFxcdFxcdGludCBhZl9pZCA9IGlwX3ZzX2FmX2luZGV4KGNwLVxcdTAwM2VhZik7XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXFxuaW5kZXggZDQwYjQwNGMxYmY2NDYuLjkwNmYyYzM2MTY3NjM4IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXFxuQEAgLTE3NjcsNiArMTc2Nyw3IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcXG4gXFx0Ym9vbCB0dW5uZWwsIG5ld19jcCA9IGZhbHNlO1xcbiBcXHR1bmlvbiBuZl9pbmV0X2FkZHIgKnJhZGRyO1xcbiBcXHRjaGFyICpvdXRlcl9wcm90byA9IFxcXCJJUElQXFxcIjtcXG4rXFx0aW50IHVsZW4gPSAwO1xcbiBcXG4gXFx0KnJlbGF0ZWQgPSAxO1xcbiBcXG5AQCAtMTgzMSw3ICsxODMyLDYgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxcbiBcXHRcXHQgICAvKiBFcnJvciBmb3Igb3VyIHR1bm5lbCBtdXN0IGFycml2ZSBhdCBMT0NBTF9JTiAqL1xcbiBcXHRcXHQgICAoc2tiX3J0YWJsZShza2IpLVxcdTAwM2VydF9mbGFncyBcXHUwMDI2IFJUQ0ZfTE9DQUwpKSB7XFxuIFxcdFxcdF9fdTggaXByb3RvO1xcbi1cXHRcXHRpbnQgdWxlbjtcXG4gXFxuIFxcdFxcdC8qIE5vbi1maXJzdCBmcmFnbWVudCBoYXMgbm8gVURQL0dSRSBoZWFkZXIgKi9cXG4gXFx0XFx0aWYgKHVubGlrZWx5KGNpaC1cXHUwMDNlZnJhZ19vZmYgXFx1MDAyNiBodG9ucyhJUF9PRkZTRVQpKSlcXG5AQCAtMTkzNiw4ICsxOTM2LDggQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxcbiBcXHRcXHRcXHRcXHRpZiAoZGVzdF9kc3QpXFxuIFxcdFxcdFxcdFxcdFxcdG10dSA9IGRzdF9tdHUoZGVzdF9kc3QtXFx1MDAzZWRzdF9jYWNoZSk7XFxuIFxcdFxcdFxcdH1cXG4tXFx0XFx0XFx0aWYgKG10dSBcXHUwMDNlIDY4ICsgc2l6ZW9mKHN0cnVjdCBpcGhkcikpXFxuLVxcdFxcdFxcdFxcdG10dSAtPSBzaXplb2Yoc3RydWN0IGlwaGRyKTtcXG4rXFx0XFx0XFx0aWYgKG10dSBcXHUwMDNlIDY4ICsgc2l6ZW9mKHN0cnVjdCBpcGhkcikgKyB1bGVuKVxcbitcXHRcXHRcXHRcXHRtdHUgLT0gc2l6ZW9mKHN0cnVjdCBpcGhkcikgKyB1bGVuO1xcbiBcXHRcXHRcXHRpbmZvID0gaHRvbmwobXR1KTtcXG4gXFx0XFx0fVxcbiBcXHRcXHQvKiBTdHJpcCBvdXRlciBJUCwgSUNNUCBhbmQgSVBJUC9VRFAvR1JFLCBnbyB0byBJUCBoZWFkZXIgb2ZcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmMgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF9zaXAuY1xcbmluZGV4IDY3YzA0ZDgxNDNhYjkxLi5hZWEwMmY2YWZmMDkyYSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9zaXAuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3NpcC5jXFxuQEAgLTI4OSwxMyArMjg5LDI0IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfbmF0X3NpcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG4gXFxuIFxcdC8qIE1hbmdsZSBkZXN0aW5hdGlvbiBwb3J0IGZvciBDaXNjbyBwaG9uZXMsIHRoZW4gZml4IHVwIGNoZWNrc3VtcyAqL1xcbiBcXHRpZiAoZGlyID09IElQX0NUX0RJUl9SRVBMWSBcXHUwMDI2XFx1MDAyNiBjdF9zaXBfaW5mby1cXHUwMDNlZm9yY2VkX2Rwb3J0KSB7XFxuK1xcdFxcdGludCBkb2ZmID0gKmRwdHIgLSAoY29uc3QgY2hhciAqKXNrYi1cXHUwMDNlZGF0YTtcXG4gXFx0XFx0c3RydWN0IHVkcGhkciAqdWg7XFxuIFxcbitcXHRcXHRpZiAoZG9mZiBcXHUwMDNjPSAwKSB7XFxuK1xcdFxcdFxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XFxuK1xcdFxcdFxcdHJldHVybiBORl9EUk9QO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHQvKiBjdF9zaXBfaW5mby1cXHUwMDNlZm9yY2VkX2Rwb3J0IG9ubHkgZXhwZWN0ZWQgd2l0aCBVRFAgKi9cXG4rXFx0XFx0aWYgKG5mX2N0X3Byb3RvbnVtKGN0KSAhPSBJUFBST1RPX1VEUClcXG4rXFx0XFx0XFx0cmV0dXJuIE5GX0RST1A7XFxuK1xcbiBcXHRcXHRpZiAoc2tiX2Vuc3VyZV93cml0YWJsZShza2IsIHNrYi1cXHUwMDNlbGVuKSkge1xcbiBcXHRcXHRcXHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFxcXCJjYW5ub3QgbWFuZ2xlIHBhY2tldFxcXCIpO1xcbiBcXHRcXHRcXHRyZXR1cm4gTkZfRFJPUDtcXG4gXFx0XFx0fVxcbiBcXG4rXFx0XFx0KmRwdHIgPSBza2ItXFx1MDAzZWRhdGEgKyBkb2ZmO1xcbiBcXHRcXHR1aCA9ICh2b2lkICopc2tiLVxcdTAwM2VkYXRhICsgcHJvdG9mZjtcXG4gXFx0XFx0dWgtXFx1MDAzZWRlc3QgPSBjdF9zaXBfaW5mby1cXHUwMDNlZm9yY2VkX2Rwb3J0O1xcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMgYi9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xcbmluZGV4IDQ4ODRmN2Y3YWFlZWUwLi5hOWVhZjk0NTVjNzc4MyAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXFxuQEAgLTY1NjMsNiArNjU2Myw5IEBAIHN0YXRpYyBpbnQgbmZ0X2dldF9zZXRfZWxlbShzdHJ1Y3QgbmZ0X2N0eCAqY3R4LCBjb25zdCBzdHJ1Y3QgbmZ0X3NldCAqc2V0LFxcbiBcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuK1xcdGlmICghZWxlbS5wcml2KVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuIFxcdGVyciA9IC1FTk9NRU07XFxuIFxcdHNrYiA9IG5sbXNnX25ldyhOTE1TR19HT09EU0laRSwgR0ZQX0FUT01JQyk7XFxuIFxcdGlmIChza2IgPT0gTlVMTClcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfY3RoZWxwZXIuYyBiL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2N0aGVscGVyLmNcXG5pbmRleCAyY2JjY2E5MTEwZGJmNS4uZjA2MmFjMjEwMzQzMjkgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfY3RoZWxwZXIuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2N0aGVscGVyLmNcXG5AQCAtMzE2LDYgKzMxNiw4IEBAIG5mbmxfY3RoZWxwZXJfdXBkYXRlX3BvbGljeV9vbmUoY29uc3Qgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3RfcG9saWN5ICpwb2xpY3ksXFxuIFxcbiBcXHRuZXdfcG9saWN5LVxcdTAwM2VtYXhfZXhwZWN0ZWQgPVxcbiBcXHRcXHRudG9obChubGFfZ2V0X2JlMzIodGJbTkZDVEhfUE9MSUNZX0VYUEVDVF9NQVhdKSk7XFxuK1xcdGlmICghbmV3X3BvbGljeS1cXHUwMDNlbWF4X2V4cGVjdGVkKVxcbitcXHRcXHRuZXdfcG9saWN5LVxcdTAwM2VtYXhfZXhwZWN0ZWQgPSBORl9DVF9FWFBFQ1RfTUFYX0NOVDtcXG4gXFx0aWYgKG5ld19wb2xpY3ktXFx1MDAzZW1heF9leHBlY3RlZCBcXHUwMDNlIE5GX0NUX0VYUEVDVF9NQVhfQ05UKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZ0X3NldF9yYnRyZWUuYyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3NldF9yYnRyZWUuY1xcbmluZGV4IDAxOGJiYjZkZjRjZTQzLi42MjIyZTliYjU3YmM5MCAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mdF9zZXRfcmJ0cmVlLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mdF9zZXRfcmJ0cmVlLmNcXG5AQCAtMTg0LDEwICsxODQsMTQgQEAgbmZ0X3JidHJlZV9nZXQoY29uc3Qgc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3QgbmZ0X3NldCAqc2V0LFxcbiBcXHRpZiAoIWludGVydmFsIHx8IG5mdF9zZXRfZWxlbV9leHBpcmVkKGludGVydmFsLVxcdTAwM2Vmcm9tKSlcXG4gXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7XFxuIFxcbi1cXHRpZiAoZmxhZ3MgXFx1MDAyNiBORlRfU0VUX0VMRU1fSU5URVJWQUxfRU5EKVxcbitcXHRpZiAoZmxhZ3MgXFx1MDAyNiBORlRfU0VUX0VMRU1fSU5URVJWQUxfRU5EKSB7XFxuK1xcdFxcdGlmICghaW50ZXJ2YWwtXFx1MDAzZXRvKVxcbitcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFxuIFxcdFxcdHJiZSA9IGNvbnRhaW5lcl9vZihpbnRlcnZhbC1cXHUwMDNldG8sIHN0cnVjdCBuZnRfcmJ0cmVlX2VsZW0sIGV4dCk7XFxuLVxcdGVsc2VcXG4rXFx0fSBlbHNlIHtcXG4gXFx0XFx0cmJlID0gY29udGFpbmVyX29mKGludGVydmFsLVxcdTAwM2Vmcm9tLCBzdHJ1Y3QgbmZ0X3JidHJlZV9lbGVtLCBleHQpO1xcbitcXHR9XFxuIFxcbiBcXHRyZXR1cm4gXFx1MDAyNnJiZS1cXHUwMDNlcHJpdjtcXG4gfVxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL3h0X2Nvbm5tYXJrLmMgYi9uZXQvbmV0ZmlsdGVyL3h0X2Nvbm5tYXJrLmNcXG5pbmRleCA0Mjc3MDg0ZGUyZTcwYy4uMmNmMjdmN2Q1OWI5NWYgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci94dF9jb25ubWFyay5jXFxuKysrIGIvbmV0L25ldGZpbHRlci94dF9jb25ubWFyay5jXFxuQEAgLTExMiw2ICsxMTIsMTYgQEAgc3RhdGljIGludCBjb25ubWFya190Z19jaGVjayhjb25zdCBzdHJ1Y3QgeHRfdGdjaGtfcGFyYW0gKnBhcilcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBjb25ubWFya190Z19jaGVja192Mihjb25zdCBzdHJ1Y3QgeHRfdGdjaGtfcGFyYW0gKnBhcilcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3QgeHRfY29ubm1hcmtfdGdpbmZvMiAqaW5mbyA9IHBhci1cXHUwMDNldGFyZ2luZm87XFxuK1xcbitcXHRpZiAoaW5mby1cXHUwMDNlc2hpZnRfZGlyIFxcdTAwM2UgRF9TSElGVF9SSUdIVCB8fCBpbmZvLVxcdTAwM2VzaGlmdF9iaXRzIFxcdTAwM2U9IDMyKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdHJldHVybiBjb25ubWFya190Z19jaGVjayhwYXIpO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBjb25ubWFya190Z19kZXN0cm95KGNvbnN0IHN0cnVjdCB4dF90Z2R0b3JfcGFyYW0gKnBhcilcXG4ge1xcbiBcXHRuZl9jdF9uZXRuc19wdXQocGFyLVxcdTAwM2VuZXQsIHBhci1cXHUwMDNlZmFtaWx5KTtcXG5AQCAtMTYyLDcgKzE3Miw3IEBAIHN0YXRpYyBzdHJ1Y3QgeHRfdGFyZ2V0IGNvbm5tYXJrX3RnX3JlZ1tdIF9fcmVhZF9tb3N0bHkgPSB7XFxuIFxcdFxcdC5uYW1lICAgICAgICAgICA9IFxcXCJDT05OTUFSS1xcXCIsXFxuIFxcdFxcdC5yZXZpc2lvbiAgICAgICA9IDIsXFxuIFxcdFxcdC5mYW1pbHkgICAgICAgICA9IE5GUFJPVE9fSVBWNCxcXG4tXFx0XFx0LmNoZWNrZW50cnkgICAgID0gY29ubm1hcmtfdGdfY2hlY2ssXFxuK1xcdFxcdC5jaGVja2VudHJ5ICAgICA9IGNvbm5tYXJrX3RnX2NoZWNrX3YyLFxcbiBcXHRcXHQudGFyZ2V0ICAgICAgICAgPSBjb25ubWFya190Z192MixcXG4gXFx0XFx0LnRhcmdldHNpemUgICAgID0gc2l6ZW9mKHN0cnVjdCB4dF9jb25ubWFya190Z2luZm8yKSxcXG4gXFx0XFx0LmRlc3Ryb3kgICAgICAgID0gY29ubm1hcmtfdGdfZGVzdHJveSxcXG5AQCAtMTgzLDcgKzE5Myw3IEBAIHN0YXRpYyBzdHJ1Y3QgeHRfdGFyZ2V0IGNvbm5tYXJrX3RnX3JlZ1tdIF9fcmVhZF9tb3N0bHkgPSB7XFxuIFxcdFxcdC5uYW1lICAgICAgICAgICA9IFxcXCJDT05OTUFSS1xcXCIsXFxuIFxcdFxcdC5yZXZpc2lvbiAgICAgICA9IDIsXFxuIFxcdFxcdC5mYW1pbHkgICAgICAgICA9IE5GUFJPVE9fSVBWNixcXG4tXFx0XFx0LmNoZWNrZW50cnkgICAgID0gY29ubm1hcmtfdGdfY2hlY2ssXFxuK1xcdFxcdC5jaGVja2VudHJ5ICAgICA9IGNvbm5tYXJrX3RnX2NoZWNrX3YyLFxcbiBcXHRcXHQudGFyZ2V0ICAgICAgICAgPSBjb25ubWFya190Z192MixcXG4gXFx0XFx0LnRhcmdldHNpemUgICAgID0gc2l6ZW9mKHN0cnVjdCB4dF9jb25ubWFya190Z2luZm8yKSxcXG4gXFx0XFx0LmRlc3Ryb3kgICAgICAgID0gY29ubm1hcmtfdGdfZGVzdHJveSxcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci94dF9yYXRlZXN0LmMgYi9uZXQvbmV0ZmlsdGVyL3h0X3JhdGVlc3QuY1xcbmluZGV4IGIxZDczNmMxNWZjYmU1Li43YzA1YjYzNDI1Nzg0ZSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL3h0X3JhdGVlc3QuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIveHRfcmF0ZWVzdC5jXFxuQEAgLTE2LDcgKzE2LDcgQEAgeHRfcmF0ZWVzdF9tdChjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuIHtcXG4gXFx0Y29uc3Qgc3RydWN0IHh0X3JhdGVlc3RfbWF0Y2hfaW5mbyAqaW5mbyA9IHBhci1cXHUwMDNlbWF0Y2hpbmZvO1xcbiBcXHRzdHJ1Y3QgZ25ldF9zdGF0c19yYXRlX2VzdDY0IHNhbXBsZSA9IHswfTtcXG4tXFx0dV9pbnQzMl90IGJwczEsIGJwczIsIHBwczEsIHBwczI7XFxuK1xcdHU2NCBicHMxLCBicHMyLCBwcHMxLCBwcHMyO1xcbiBcXHRib29sIHJldCA9IHRydWU7XFxuIFxcbiBcXHRnZW5fZXN0aW1hdG9yX3JlYWQoXFx1MDAyNmluZm8tXFx1MDAzZWVzdDEtXFx1MDAzZXJhdGVfZXN0LCBcXHUwMDI2c2FtcGxlKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci94dF91MzIuYyBiL25ldC9uZXRmaWx0ZXIveHRfdTMyLmNcXG5pbmRleCAxMTdkNDYxNWQ2Njg0Yy4uZWMxYTIxZTNiNmUyYzMgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci94dF91MzIuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIveHRfdTMyLmNcXG5AQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBpbnQgdTMyX210X2NoZWNrZW50cnkoY29uc3Qgc3RydWN0IHh0X210Y2hrX3BhcmFtICpwYXIpXFxuIHtcXG4gXFx0Y29uc3Qgc3RydWN0IHh0X3UzMiAqZGF0YSA9IHBhci1cXHUwMDNlbWF0Y2hpbmZvO1xcbiBcXHRjb25zdCBzdHJ1Y3QgeHRfdTMyX3Rlc3QgKmN0O1xcbi1cXHR1bnNpZ25lZCBpbnQgaTtcXG4rXFx0dW5zaWduZWQgaW50IGksIGo7XFxuIFxcbiBcXHRpZiAoZGF0YS1cXHUwMDNlbnRlc3RzIFxcdTAwM2UgQVJSQVlfU0laRShkYXRhLVxcdTAwM2V0ZXN0cykpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbkBAIC0xMTEsNiArMTExLDE2IEBAIHN0YXRpYyBpbnQgdTMyX210X2NoZWNrZW50cnkoY29uc3Qgc3RydWN0IHh0X210Y2hrX3BhcmFtICpwYXIpXFxuIFxcdFxcdGlmIChjdC1cXHUwMDNlbm51bXMgXFx1MDAzZSBBUlJBWV9TSVpFKGN0LVxcdTAwM2Vsb2NhdGlvbikgfHxcXG4gXFx0XFx0ICAgIGN0LVxcdTAwM2VudmFsdWVzIFxcdTAwM2UgQVJSQVlfU0laRShjdC1cXHUwMDNldmFsdWUpKVxcbiBcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdFxcdGZvciAoaiA9IDE7IGogXFx1MDAzYyBjdC1cXHUwMDNlbm51bXM7ICsraikge1xcbitcXHRcXHRcXHRzd2l0Y2ggKGN0LVxcdTAwM2Vsb2NhdGlvbltqXS5uZXh0b3ApIHtcXG4rXFx0XFx0XFx0Y2FzZSBYVF9VMzJfTEVGVFNIOlxcbitcXHRcXHRcXHRjYXNlIFhUX1UzMl9SSUdIVFNIOlxcbitcXHRcXHRcXHRcXHRpZiAoY3QtXFx1MDAzZWxvY2F0aW9uW2pdLm51bWJlciBcXHUwMDNlPSAzMilcXG4rXFx0XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXG4gXFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEzOjE4OjQzLjE5Njc1NTkzNFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk0MzAwMzY5NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIixcbiAgICBcIk5GX0NPTk5UUkFDS19TSVBcIixcbiAgICBcIk5GX1RBQkxFU1wiLFxuICAgIFwiTkVURklMVEVSX1hUX01BVENIX1UzMlwiLFxuICAgIFwiTkVURklMVEVSX1hUX1RBUkdFVF9DT05OTUFSS1wiLFxuICAgIFwiTkVURklMVEVSX1hUX01BVENIX1JBVEVFU1RcIixcbiAgICBcIklQNl9ORl9NQVRDSF9BSFwiLFxuICAgIFwiSVA2X05GX01BVENIX09QVFNcIixcbiAgICBcIklQNl9ORl9NQVRDSF9SVFwiLFxuICAgIFwiTkZfQ1RfTkVUTElOS19IRUxQRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhaF9tdDZcIixcbiAgICBcImhiaF9tdDZcIixcbiAgICBcInJ0X210NlwiLFxuICAgIFwiaXBfdnNfY29ubl9uZXdcIixcbiAgICBcImlwX3ZzX2luX2ljbXBcIixcbiAgICBcIm5mX25hdF9zaXBcIixcbiAgICBcIm5mdF9nZXRfc2V0X2VsZW1cIixcbiAgICBcIm5mbmxfY3RoZWxwZXJfdXBkYXRlX3BvbGljeV9vbmVcIixcbiAgICBcIm5mdF9yYnRyZWVfZ2V0XCIsXG4gICAgXCJjb25ubWFya190Z19jaGVja192MlwiLFxuICAgIFwieHRfcmF0ZWVzdF9tdFwiLFxuICAgIFwidTMyX210X2NoZWNrZW50cnlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoaXMgcGF0Y2ggc2VyaWVzIGZpeGVzIG11bHRpcGxlIGJ1Z3MgaW4gbmV0ZmlsdGVyIGFuZCBJUFZTIGNvbXBvbmVudHMsIGluY2x1ZGluZyBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1bmluaXRpYWxpemVkIG1lbW9yeSwgYW5kIGluY29ycmVjdCBNVFUgY2FsY3VsYXRpb25zLiBGdXp6aW5nIHRoZXNlIHBhdGhzIHdpbGwgaGVscCBlbnN1cmUgdGhlIGZpeGVzIGFyZSByb2J1c3QgYW5kIGRvbid0IGludHJvZHVjZSByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyZTNmMGY2M2VmZmQ3MWVkNDBkZDZiZTRmMWVkYzE5MjM2YWI0YThjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMyAxMzoxODozOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2FoLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9haC5jXG5pbmRleCA3MGRhMmYyY2UwNjRjYS4uMTI1ODc4M2VkODc2MjkgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9haC5jXG4rKysgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9haC5jXG5AQCAtNTYsNiArNTYsMTEgQEAgc3RhdGljIGJvb2wgYWhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdH1cbiBcbiBcdGhkcmxlbiA9IGlwdjZfYXV0aGxlbihhaCk7XG4rXHRpZiAoc2tiLVx1MDAzZWxlbiAtIHB0ciBcdTAwM2MgaGRybGVuKSB7XG4rXHRcdC8qIFBhY2tldCBzbWFsbGVyIHRoYW4gaXRzIGxlbmd0aCBmaWVsZCAqL1xuK1x0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4rXHRcdHJldHVybiBmYWxzZTtcbitcdH1cbiBcbiBcdHByX2RlYnVnKFwiSVB2NiBBSCBMRU4gJXUgJXUgXCIsIGhkcmxlbiwgYWgtXHUwMDNlaGRybGVuKTtcbiBcdHByX2RlYnVnKFwiUkVTICUwNFggXCIsIGFoLVx1MDAzZXJlc2VydmVkKTtcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jXG5pbmRleCA0NTBkZDUzODQ2YTJmNy4uNmQxYTVkMjAyNmE2NzggMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguY1xuKysrIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmNcbkBAIC03NSw2ICs3NSw3IEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0aGRybGVuID0gaXB2Nl9vcHRsZW4ob2gpO1xuIFx0aWYgKHNrYi1cdTAwM2VsZW4gLSBwdHIgXHUwMDNjIGhkcmxlbikge1xuIFx0XHQvKiBQYWNrZXQgc21hbGxlciB0aGFuIGl0J3MgbGVuZ3RoIGZpZWxkICovXG4rXHRcdHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3J0LmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9ydC5jXG5pbmRleCA1NTYxYmQ5Y2VhODE4NS4uMjc4YjUyNzUyZjM2NDUgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9ydC5jXG4rKysgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9ydC5jXG5AQCAtNTYsNyArNTYsOCBAQCBzdGF0aWMgYm9vbCBydF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFxuIFx0aGRybGVuID0gaXB2Nl9vcHRsZW4ocmgpO1xuIFx0aWYgKHNrYi1cdTAwM2VsZW4gLSBwdHIgXHUwMDNjIGhkcmxlbikge1xuLVx0XHQvKiBQY2tldCBzbWFsbGVyIHRoYW4gaXRzIGxlbmd0aCBmaWVsZCAqL1xuK1x0XHQvKiBQYWNrZXQgc21hbGxlciB0aGFuIGl0cyBsZW5ndGggZmllbGQgKi9cbitcdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcbmluZGV4IGNiMzY2NDFmOGQxY2MxLi42ZWQyNjIyMzYzZjBkNiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcbkBAIC0xNDIwLDggKzE0MjAsOCBAQCBpcF92c19jb25uX25ldyhjb25zdCBzdHJ1Y3QgaXBfdnNfY29ubl9wYXJhbSAqcCwgaW50IGRlc3RfYWYsXG4gXHRjcC1cdTAwM2VhcHAgPSBOVUxMO1xuIFx0Y3AtXHUwMDNlYXBwX2RhdGEgPSBOVUxMO1xuIFx0LyogcmVzZXQgc3RydWN0IGlwX3ZzX3NlcSAqL1xuLVx0Y3AtXHUwMDNlaW5fc2VxLmRlbHRhID0gMDtcbi1cdGNwLVx1MDAzZW91dF9zZXEuZGVsdGEgPSAwO1xuK1x0bWVtc2V0KFx1MDAyNmNwLVx1MDAzZWluX3NlcSwgMCwgc2l6ZW9mKGNwLVx1MDAzZWluX3NlcSkpO1xuK1x0bWVtc2V0KFx1MDAyNmNwLVx1MDAzZW91dF9zZXEsIDAsIHNpemVvZihjcC1cdTAwM2VvdXRfc2VxKSk7XG4gXG4gXHRpZiAodW5saWtlbHkoZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9OT19DUE9SVCkpIHtcbiBcdFx0aW50IGFmX2lkID0gaXBfdnNfYWZfaW5kZXgoY3AtXHUwMDNlYWYpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG5pbmRleCBkNDBiNDA0YzFiZjY0Ni4uOTA2ZjJjMzYxNjc2MzggMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG5AQCAtMTc2Nyw2ICsxNzY3LDcgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxuIFx0Ym9vbCB0dW5uZWwsIG5ld19jcCA9IGZhbHNlO1xuIFx0dW5pb24gbmZfaW5ldF9hZGRyICpyYWRkcjtcbiBcdGNoYXIgKm91dGVyX3Byb3RvID0gXCJJUElQXCI7XG4rXHRpbnQgdWxlbiA9IDA7XG4gXG4gXHQqcmVsYXRlZCA9IDE7XG4gXG5AQCAtMTgzMSw3ICsxODMyLDYgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxuIFx0XHQgICAvKiBFcnJvciBmb3Igb3VyIHR1bm5lbCBtdXN0IGFycml2ZSBhdCBMT0NBTF9JTiAqL1xuIFx0XHQgICAoc2tiX3J0YWJsZShza2IpLVx1MDAzZXJ0X2ZsYWdzIFx1MDAyNiBSVENGX0xPQ0FMKSkge1xuIFx0XHRfX3U4IGlwcm90bztcbi1cdFx0aW50IHVsZW47XG4gXG4gXHRcdC8qIE5vbi1maXJzdCBmcmFnbWVudCBoYXMgbm8gVURQL0dSRSBoZWFkZXIgKi9cbiBcdFx0aWYgKHVubGlrZWx5KGNpaC1cdTAwM2VmcmFnX29mZiBcdTAwMjYgaHRvbnMoSVBfT0ZGU0VUKSkpXG5AQCAtMTkzNiw4ICsxOTM2LDggQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxuIFx0XHRcdFx0aWYgKGRlc3RfZHN0KVxuIFx0XHRcdFx0XHRtdHUgPSBkc3RfbXR1KGRlc3RfZHN0LVx1MDAzZWRzdF9jYWNoZSk7XG4gXHRcdFx0fVxuLVx0XHRcdGlmIChtdHUgXHUwMDNlIDY4ICsgc2l6ZW9mKHN0cnVjdCBpcGhkcikpXG4tXHRcdFx0XHRtdHUgLT0gc2l6ZW9mKHN0cnVjdCBpcGhkcik7XG4rXHRcdFx0aWYgKG10dSBcdTAwM2UgNjggKyBzaXplb2Yoc3RydWN0IGlwaGRyKSArIHVsZW4pXG4rXHRcdFx0XHRtdHUgLT0gc2l6ZW9mKHN0cnVjdCBpcGhkcikgKyB1bGVuO1xuIFx0XHRcdGluZm8gPSBodG9ubChtdHUpO1xuIFx0XHR9XG4gXHRcdC8qIFN0cmlwIG91dGVyIElQLCBJQ01QIGFuZCBJUElQL1VEUC9HUkUsIGdvIHRvIElQIGhlYWRlciBvZlxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3NpcC5jIGIvbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmNcbmluZGV4IDY3YzA0ZDgxNDNhYjkxLi5hZWEwMmY2YWZmMDkyYSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3NpcC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF9zaXAuY1xuQEAgLTI4OSwxMyArMjg5LDI0IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfbmF0X3NpcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbiBcbiBcdC8qIE1hbmdsZSBkZXN0aW5hdGlvbiBwb3J0IGZvciBDaXNjbyBwaG9uZXMsIHRoZW4gZml4IHVwIGNoZWNrc3VtcyAqL1xuIFx0aWYgKGRpciA9PSBJUF9DVF9ESVJfUkVQTFkgXHUwMDI2XHUwMDI2IGN0X3NpcF9pbmZvLVx1MDAzZWZvcmNlZF9kcG9ydCkge1xuK1x0XHRpbnQgZG9mZiA9ICpkcHRyIC0gKGNvbnN0IGNoYXIgKilza2ItXHUwMDNlZGF0YTtcbiBcdFx0c3RydWN0IHVkcGhkciAqdWg7XG4gXG4rXHRcdGlmIChkb2ZmIFx1MDAzYz0gMCkge1xuK1x0XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XG4rXHRcdFx0cmV0dXJuIE5GX0RST1A7XG4rXHRcdH1cbitcbitcdFx0LyogY3Rfc2lwX2luZm8tXHUwMDNlZm9yY2VkX2Rwb3J0IG9ubHkgZXhwZWN0ZWQgd2l0aCBVRFAgKi9cbitcdFx0aWYgKG5mX2N0X3Byb3RvbnVtKGN0KSAhPSBJUFBST1RPX1VEUClcbitcdFx0XHRyZXR1cm4gTkZfRFJPUDtcbitcbiBcdFx0aWYgKHNrYl9lbnN1cmVfd3JpdGFibGUoc2tiLCBza2ItXHUwMDNlbGVuKSkge1xuIFx0XHRcdG5mX2N0X2hlbHBlcl9sb2coc2tiLCBjdCwgXCJjYW5ub3QgbWFuZ2xlIHBhY2tldFwiKTtcbiBcdFx0XHRyZXR1cm4gTkZfRFJPUDtcbiBcdFx0fVxuIFxuK1x0XHQqZHB0ciA9IHNrYi1cdTAwM2VkYXRhICsgZG9mZjtcbiBcdFx0dWggPSAodm9pZCAqKXNrYi1cdTAwM2VkYXRhICsgcHJvdG9mZjtcbiBcdFx0dWgtXHUwMDNlZGVzdCA9IGN0X3NpcF9pbmZvLVx1MDAzZWZvcmNlZF9kcG9ydDtcbiBcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXG5pbmRleCA0ODg0ZjdmN2FhZWVlMC4uYTllYWY5NDU1Yzc3ODMgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcbkBAIC02NTYzLDYgKzY1NjMsOSBAQCBzdGF0aWMgaW50IG5mdF9nZXRfc2V0X2VsZW0oc3RydWN0IG5mdF9jdHggKmN0eCwgY29uc3Qgc3RydWN0IG5mdF9zZXQgKnNldCxcbiBcdGlmIChlcnIgXHUwMDNjIDApXG4gXHRcdHJldHVybiBlcnI7XG4gXG4rXHRpZiAoIWVsZW0ucHJpdilcbitcdFx0cmV0dXJuIDA7XG4rXG4gXHRlcnIgPSAtRU5PTUVNO1xuIFx0c2tiID0gbmxtc2dfbmV3KE5MTVNHX0dPT0RTSVpFLCBHRlBfQVRPTUlDKTtcbiBcdGlmIChza2IgPT0gTlVMTClcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19jdGhlbHBlci5jIGIvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfY3RoZWxwZXIuY1xuaW5kZXggMmNiY2NhOTExMGRiZjUuLmYwNjJhYzIxMDM0MzI5IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfY3RoZWxwZXIuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfY3RoZWxwZXIuY1xuQEAgLTMxNiw2ICszMTYsOCBAQCBuZm5sX2N0aGVscGVyX3VwZGF0ZV9wb2xpY3lfb25lKGNvbnN0IHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0X3BvbGljeSAqcG9saWN5LFxuIFxuIFx0bmV3X3BvbGljeS1cdTAwM2VtYXhfZXhwZWN0ZWQgPVxuIFx0XHRudG9obChubGFfZ2V0X2JlMzIodGJbTkZDVEhfUE9MSUNZX0VYUEVDVF9NQVhdKSk7XG4rXHRpZiAoIW5ld19wb2xpY3ktXHUwMDNlbWF4X2V4cGVjdGVkKVxuK1x0XHRuZXdfcG9saWN5LVx1MDAzZW1heF9leHBlY3RlZCA9IE5GX0NUX0VYUEVDVF9NQVhfQ05UO1xuIFx0aWYgKG5ld19wb2xpY3ktXHUwMDNlbWF4X2V4cGVjdGVkIFx1MDAzZSBORl9DVF9FWFBFQ1RfTUFYX0NOVClcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZnRfc2V0X3JidHJlZS5jIGIvbmV0L25ldGZpbHRlci9uZnRfc2V0X3JidHJlZS5jXG5pbmRleCAwMThiYmI2ZGY0Y2U0My4uNjIyMmU5YmI1N2JjOTAgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mdF9zZXRfcmJ0cmVlLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3NldF9yYnRyZWUuY1xuQEAgLTE4NCwxMCArMTg0LDE0IEBAIG5mdF9yYnRyZWVfZ2V0KGNvbnN0IHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5mdF9zZXQgKnNldCxcbiBcdGlmICghaW50ZXJ2YWwgfHwgbmZ0X3NldF9lbGVtX2V4cGlyZWQoaW50ZXJ2YWwtXHUwMDNlZnJvbSkpXG4gXHRcdHJldHVybiBFUlJfUFRSKC1FTk9FTlQpO1xuIFxuLVx0aWYgKGZsYWdzIFx1MDAyNiBORlRfU0VUX0VMRU1fSU5URVJWQUxfRU5EKVxuK1x0aWYgKGZsYWdzIFx1MDAyNiBORlRfU0VUX0VMRU1fSU5URVJWQUxfRU5EKSB7XG4rXHRcdGlmICghaW50ZXJ2YWwtXHUwMDNldG8pXG4rXHRcdFx0cmV0dXJuIE5VTEw7XG4rXG4gXHRcdHJiZSA9IGNvbnRhaW5lcl9vZihpbnRlcnZhbC1cdTAwM2V0bywgc3RydWN0IG5mdF9yYnRyZWVfZWxlbSwgZXh0KTtcbi1cdGVsc2VcbitcdH0gZWxzZSB7XG4gXHRcdHJiZSA9IGNvbnRhaW5lcl9vZihpbnRlcnZhbC1cdTAwM2Vmcm9tLCBzdHJ1Y3QgbmZ0X3JidHJlZV9lbGVtLCBleHQpO1xuK1x0fVxuIFxuIFx0cmV0dXJuIFx1MDAyNnJiZS1cdTAwM2Vwcml2O1xuIH1cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL3h0X2Nvbm5tYXJrLmMgYi9uZXQvbmV0ZmlsdGVyL3h0X2Nvbm5tYXJrLmNcbmluZGV4IDQyNzcwODRkZTJlNzBjLi4yY2YyN2Y3ZDU5Yjk1ZiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIveHRfY29ubm1hcmsuY1xuKysrIGIvbmV0L25ldGZpbHRlci94dF9jb25ubWFyay5jXG5AQCAtMTEyLDYgKzExMiwxNiBAQCBzdGF0aWMgaW50IGNvbm5tYXJrX3RnX2NoZWNrKGNvbnN0IHN0cnVjdCB4dF90Z2Noa19wYXJhbSAqcGFyKVxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rc3RhdGljIGludCBjb25ubWFya190Z19jaGVja192Mihjb25zdCBzdHJ1Y3QgeHRfdGdjaGtfcGFyYW0gKnBhcilcbit7XG4rXHRjb25zdCBzdHJ1Y3QgeHRfY29ubm1hcmtfdGdpbmZvMiAqaW5mbyA9IHBhci1cdTAwM2V0YXJnaW5mbztcbitcbitcdGlmIChpbmZvLVx1MDAzZXNoaWZ0X2RpciBcdTAwM2UgRF9TSElGVF9SSUdIVCB8fCBpbmZvLVx1MDAzZXNoaWZ0X2JpdHMgXHUwMDNlPSAzMilcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRyZXR1cm4gY29ubm1hcmtfdGdfY2hlY2socGFyKTtcbit9XG4rXG4gc3RhdGljIHZvaWQgY29ubm1hcmtfdGdfZGVzdHJveShjb25zdCBzdHJ1Y3QgeHRfdGdkdG9yX3BhcmFtICpwYXIpXG4ge1xuIFx0bmZfY3RfbmV0bnNfcHV0KHBhci1cdTAwM2VuZXQsIHBhci1cdTAwM2VmYW1pbHkpO1xuQEAgLTE2Miw3ICsxNzIsNyBAQCBzdGF0aWMgc3RydWN0IHh0X3RhcmdldCBjb25ubWFya190Z19yZWdbXSBfX3JlYWRfbW9zdGx5ID0ge1xuIFx0XHQubmFtZSAgICAgICAgICAgPSBcIkNPTk5NQVJLXCIsXG4gXHRcdC5yZXZpc2lvbiAgICAgICA9IDIsXG4gXHRcdC5mYW1pbHkgICAgICAgICA9IE5GUFJPVE9fSVBWNCxcbi1cdFx0LmNoZWNrZW50cnkgICAgID0gY29ubm1hcmtfdGdfY2hlY2ssXG4rXHRcdC5jaGVja2VudHJ5ICAgICA9IGNvbm5tYXJrX3RnX2NoZWNrX3YyLFxuIFx0XHQudGFyZ2V0ICAgICAgICAgPSBjb25ubWFya190Z192MixcbiBcdFx0LnRhcmdldHNpemUgICAgID0gc2l6ZW9mKHN0cnVjdCB4dF9jb25ubWFya190Z2luZm8yKSxcbiBcdFx0LmRlc3Ryb3kgICAgICAgID0gY29ubm1hcmtfdGdfZGVzdHJveSxcbkBAIC0xODMsNyArMTkzLDcgQEAgc3RhdGljIHN0cnVjdCB4dF90YXJnZXQgY29ubm1hcmtfdGdfcmVnW10gX19yZWFkX21vc3RseSA9IHtcbiBcdFx0Lm5hbWUgICAgICAgICAgID0gXCJDT05OTUFSS1wiLFxuIFx0XHQucmV2aXNpb24gICAgICAgPSAyLFxuIFx0XHQuZmFtaWx5ICAgICAgICAgPSBORlBST1RPX0lQVjYsXG4tXHRcdC5jaGVja2VudHJ5ICAgICA9IGNvbm5tYXJrX3RnX2NoZWNrLFxuK1x0XHQuY2hlY2tlbnRyeSAgICAgPSBjb25ubWFya190Z19jaGVja192MixcbiBcdFx0LnRhcmdldCAgICAgICAgID0gY29ubm1hcmtfdGdfdjIsXG4gXHRcdC50YXJnZXRzaXplICAgICA9IHNpemVvZihzdHJ1Y3QgeHRfY29ubm1hcmtfdGdpbmZvMiksXG4gXHRcdC5kZXN0cm95ICAgICAgICA9IGNvbm5tYXJrX3RnX2Rlc3Ryb3ksXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci94dF9yYXRlZXN0LmMgYi9uZXQvbmV0ZmlsdGVyL3h0X3JhdGVlc3QuY1xuaW5kZXggYjFkNzM2YzE1ZmNiZTUuLjdjMDViNjM0MjU3ODRlIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci94dF9yYXRlZXN0LmNcbisrKyBiL25ldC9uZXRmaWx0ZXIveHRfcmF0ZWVzdC5jXG5AQCAtMTYsNyArMTYsNyBAQCB4dF9yYXRlZXN0X210KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiB7XG4gXHRjb25zdCBzdHJ1Y3QgeHRfcmF0ZWVzdF9tYXRjaF9pbmZvICppbmZvID0gcGFyLVx1MDAzZW1hdGNoaW5mbztcbiBcdHN0cnVjdCBnbmV0X3N0YXRzX3JhdGVfZXN0NjQgc2FtcGxlID0gezB9O1xuLVx0dV9pbnQzMl90IGJwczEsIGJwczIsIHBwczEsIHBwczI7XG4rXHR1NjQgYnBzMSwgYnBzMiwgcHBzMSwgcHBzMjtcbiBcdGJvb2wgcmV0ID0gdHJ1ZTtcbiBcbiBcdGdlbl9lc3RpbWF0b3JfcmVhZChcdTAwMjZpbmZvLVx1MDAzZWVzdDEtXHUwMDNlcmF0ZV9lc3QsIFx1MDAyNnNhbXBsZSk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci94dF91MzIuYyBiL25ldC9uZXRmaWx0ZXIveHRfdTMyLmNcbmluZGV4IDExN2Q0NjE1ZDY2ODRjLi5lYzFhMjFlM2I2ZTJjMyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIveHRfdTMyLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIveHRfdTMyLmNcbkBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGljIGludCB1MzJfbXRfY2hlY2tlbnRyeShjb25zdCBzdHJ1Y3QgeHRfbXRjaGtfcGFyYW0gKnBhcilcbiB7XG4gXHRjb25zdCBzdHJ1Y3QgeHRfdTMyICpkYXRhID0gcGFyLVx1MDAzZW1hdGNoaW5mbztcbiBcdGNvbnN0IHN0cnVjdCB4dF91MzJfdGVzdCAqY3Q7XG4tXHR1bnNpZ25lZCBpbnQgaTtcbitcdHVuc2lnbmVkIGludCBpLCBqO1xuIFxuIFx0aWYgKGRhdGEtXHUwMDNlbnRlc3RzIFx1MDAzZSBBUlJBWV9TSVpFKGRhdGEtXHUwMDNldGVzdHMpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbkBAIC0xMTEsNiArMTExLDE2IEBAIHN0YXRpYyBpbnQgdTMyX210X2NoZWNrZW50cnkoY29uc3Qgc3RydWN0IHh0X210Y2hrX3BhcmFtICpwYXIpXG4gXHRcdGlmIChjdC1cdTAwM2VubnVtcyBcdTAwM2UgQVJSQVlfU0laRShjdC1cdTAwM2Vsb2NhdGlvbikgfHxcbiBcdFx0ICAgIGN0LVx1MDAzZW52YWx1ZXMgXHUwMDNlIEFSUkFZX1NJWkUoY3QtXHUwMDNldmFsdWUpKVxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuK1xuK1x0XHRmb3IgKGogPSAxOyBqIFx1MDAzYyBjdC1cdTAwM2VubnVtczsgKytqKSB7XG4rXHRcdFx0c3dpdGNoIChjdC1cdTAwM2Vsb2NhdGlvbltqXS5uZXh0b3ApIHtcbitcdFx0XHRjYXNlIFhUX1UzMl9MRUZUU0g6XG4rXHRcdFx0Y2FzZSBYVF9VMzJfUklHSFRTSDpcbitcdFx0XHRcdGlmIChjdC1cdTAwM2Vsb2NhdGlvbltqXS5udW1iZXIgXHUwMDNlPSAzMilcbitcdFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdFx0XHRicmVhaztcbitcdFx0XHR9XG4rXHRcdH1cbiBcdH1cbiBcbiBcdHJldHVybiAwO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTM6MTg6NDMuMTk2NzU4MTU0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM4MDM1MDA5OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0ZmlsdGVyIFBhdGNoIFNlcmllcyoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggc2VyaWVzIGhlcmUsIGFuZCBpdCdzIHRvdWNoaW5nIHF1aXRlIGEgZmV3IGZpbGVzIHNjYXR0ZXJlZCBhY3Jvc3MgYG5ldC9pcHY2L25ldGZpbHRlci9gIGFuZCBgbmV0L25ldGZpbHRlci9gLiBMb29rcyBsaWtlIGEgbmV0ZmlsdGVyIGJ1Z2ZpeCBib25hbnphLCBzcGFubmluZyBhIHdpZGUgcmFuZ2Ugb2YgZnVuY3Rpb25hbGl0eS4gTGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG5GaXJzdCB1cCwgdGhlIGNoYW5nZXMgaW4gYGlwNnRfYWguY2AsIGBpcDZ0X2hiaC5jYCwgYW5kIGBpcDZ0X3J0LmNgIGFsbCBzZWVtIHRvIGJlIGFwcGx5aW5nIHRoZSBgaG90ZHJvcCA9IHRydWVgIHdoZW4gZGVhbGluZyB3aXRoIHNtYWxsZXIgdGhhbiBleHBlY3RlZCBwYWNrZXRzLCB3aGljaCBtYWtlcyBzZW5zZS4gQWx3YXlzIGdvb2QgdG8gaGF2ZSB0aGF0IHNhZmV0eSBjaGVjay4gVGhlbiwgYGlwX3ZzX2Nvbm4uY2AgaGFzIGEgc2ltcGxlIGBtZW1zZXRgIHRvIHplcm8gb3V0IHRoZSBzZXEgc3RydWN0IGluIHRoZSByaWdodCBsb2NhdGlvbi4gYGlwX3ZzX2NvcmUuY2AgaGFzIGFuIE1UVSBjYWxjdWxhdGlvbiBmaXgsIG1ha2luZyBzdXJlIGB1bGVuYCBpcyBwYXJ0IG9mIHRoZSBjYWxjdWxhdGlvbi5cblxuTm93LCBgbmZfbmF0X3NpcC5jYCBoYXMgc29tZSBTSVAgTkFUIG1hbmdsaW5nIGZpeGVzLCB3aGljaCBpbmNsdWRlIGJvdW5kcyBjaGVja3MgZm9yIGBkb2ZmIFx1MDAzYz0gMGAgYW5kIHByb3RvY29sIGNoZWNraW5nLCBtYWtpbmcgc3VyZSBpdCBpcyBub3QgVURQLiBgbmZfdGFibGVzX2FwaS5jYCBpcyBnZXR0aW5nIGEgbnVsbCBjaGVjayBpbiBgbmZ0X2dldF9zZXRfZWxlbWAgdG8gcHJvdGVjdCBmcm9tIGEgcG9zc2libGUgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlLiBgbmZuZXRsaW5rX2N0aGVscGVyLmNgIG5vdyBoYXMgYSBgbWF4X2V4cGVjdGVkYCBkZWZhdWx0LiBgbmZ0X3NldF9yYnRyZWUuY2AgaGFzIGEgbnVsbCBjaGVjayBhcyB3ZWxsIGluIGBuZnRfcmJ0cmVlX2dldGAuXG5cbkluIGB4dF9jb25ubWFyay5jYCwgd2UncmUgZ2V0dGluZyBhIGBjb25ubWFya190Z19jaGVja192MmAgZnVuY3Rpb24gdG8gdmFsaWRhdGUgYHNoaWZ0X2RpcmAgYW5kIGBzaGlmdF9iaXRzYCwgd2hpY2ggaXMgc21hcnQuIE9uIHRvIGB4dF9yYXRlZXN0LmNgLCB3aGVyZSB3ZSBzZWUgYSBjaGFuZ2UgZnJvbSBgdV9pbnQzMl90YCB0byBgdTY0YCBmb3IgYGJwczFgLCBgYnBzMmAsIGBwcHMxYCwgYW5kIGBwcHMyYC4gVGhhdOKAmXMgYSBzaWduaWZpY2FudCBzaXplIGluY3JlYXNlIHRvIGhhbmRsZSBwb3NzaWJsZSBvdmVyZmxvdyBpbiB0aGUgb3JpZ2luYWwgY29kZS4gQW5kIGZpbmFsbHksIGB4dF91MzIuY2AgaGFzIGEgY2hlY2sgZm9yIGBjdC1cdTAwM2Vsb2NhdGlvbltqXS5udW1iZXIgXHUwMDNlPSAzMmAgZm9yIGBYVF9VMzJfTEVGVFNIYCBhbmQgYFhUX1UzMl9SSUdIVFNIYCwgcHJldmVudGluZyBhIGJhZCBtZW1vcnkgYWNjZXNzLlxuXG5PdmVyYWxsLCBhIGdvb2QgY29sbGVjdGlvbiBvZiBmdW5jdGlvbmFsIGltcHJvdmVtZW50cyBpbiB0aGUgbmV0ZmlsdGVyIGFuZCBJUFZTIGFyZWFzLiBEZWZpbml0ZWx5IHdvcnRoIHNvbWUgc2VyaW91cyBmdXp6aW5nLCBlc3BlY2lhbGx5IGdpdmVuIHRoZSByYW5nZSBvZiBjb21wb25lbnRzIGludm9sdmVkLlxuXG5SaWdodCwgc28gdG8gbWFrZSB0aGlzIGZ1enppbmcgY2FtcGFpZ24gZWZmZWN0aXZlLCBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIHJlbGV2YW50IENPTkZJRyBvcHRpb25zLiBJIGNhbiBzZWUgdGhlIGZvbGxvd2luZyBhcmUga2V5OiBgSVBfVlNgLCBgTkZfTkFUX1NJUGAsIGBORl9UQUJMRVNgLCBgTkVURklMVEVSX1hUX01BVENIX1UzMmAsIGBORVRGSUxURVJfWFRfVEFSR0VUX0NPTk5NQVJLYCwgYE5FVEZJTFRFUl9YVF9NQVRDSF9SQVRFRVNUYCwgYElQNl9ORl9NQVRDSF9BSGAsIGBJUDZfTkZfTUFUQ0hfSEJIYCwgYElQNl9ORl9NQVRDSF9SVGAsIGFuZCBgTkZfQ1RfTkVUTElOS19IRUxQRVJgLlxuXG5JIHNob3VsZCBhbHNvIGZvY3VzIG9uIHNvbWUgc3BlY2lmaWMgc3ltYm9scywgd2hpY2ggSSd2ZSBpZGVudGlmaWVkIGFzOiBgYWhfbXQ2YCwgYGhiaF9tdDZgLCBgcnRfbXQ2YCwgYGlwX3ZzX2Nvbm5fbmV3YCwgYGlwX3ZzX2luX2ljbXBgLCBgbmZfbmF0X3NpcGAsIGBuZnRfZ2V0X3NldF9lbGVtYCwgYG5mbmxfY3RoZWxwZXJfdXBkYXRlX3BvbGljeV9vbmVgLCBgbmZ0X3JidHJlZV9nZXRgLCBgY29ubm1hcmtfdGdfY2hlY2tfdjJgLCBgeHRfcmF0ZWVzdF9tdGAsIGFuZCBgdTMyX210X2NoZWNrZW50cnlgLiBJIHdpbGwgZG91YmxlIGNoZWNrIHRoZSBjb25maWcgb3B0aW9ucyBhcyB3ZWxsIHRvIG1ha2Ugc3VyZSBJIGRpZCBub3QgbWlzcyBhbnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2MTMsIk91dHB1dFRva2VucyI6MzcwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA2MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEzOjE4OjU3LjAwMDI2MTMyNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDcyODQwODU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUDZfTkZfTUFUQ0hfQUhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc9OTM9aWYgSVA2X05GX0lQVEFCTEVTXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy05NS0jIFRoZSBzaW1wbGUgbWF0Y2hlcy5cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZzo5Njpjb25maWcgSVA2X05GX01BVENIX0FIXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctOTctXFx0dHJpc3RhdGUgJ1xcXCJhaFxcXCIgbWF0Y2ggc3VwcG9ydCdcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTM6MTg6NTguNDczMTA2MDkxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMzY2MzI2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVA2X05GX01BVENIX0hCSFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTM6MTg6NTguNTM0NDc5MTY3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3Mzc1Njk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUDZfTkZfTUFUQ0hfUlRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc9MTU4PWNvbmZpZyBJUDZfTkZfTUFUQ0hfUlBGSUxURVJcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTE2OC1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZzoxNjk6Y29uZmlnIElQNl9ORl9NQVRDSF9SVFxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTE3MC1cXHR0cmlzdGF0ZSAnXFxcInJ0XFxcIiBSb3V0aW5nIGhlYWRlciBtYXRjaCBzdXBwb3J0J1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMzoxODo1OC41OTE4NTk0OTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ3NTg2NDYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9OQVRfU0lQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMzoxODo1OC42NDY2MjMyNThaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkwNDg0NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX05BVF9TSVBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz00MjY9Y29uZmlnIE5GX05BVF9JUkNcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQzMTpjb25maWcgTkZfTkFUX1NJUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzItXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTM6MTg6NTguNzA1Njc2NTQ0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1Nzc4NjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfVTMyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9MTYyMz1jb25maWcgTkVURklMVEVSX1hUX01BVENIX1RJTUVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjM2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjM3OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfVTMyXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2MzgtXFx0dHJpc3RhdGUgJ1xcXCJ1MzJcXFwiIG1hdGNoIHN1cHBvcnQnXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEzOjE4OjU4Ljc2MTQ2MTI0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjQ2MjYyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9DT05OTUFSS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTgyNz1jb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9DTEFTU0lGWVxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTgzOC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODM5OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0NPTk5NQVJLXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTg0MC1cXHR0cmlzdGF0ZSAgJ1xcXCJDT05OTUFSS1xcXCIgdGFyZ2V0IHN1cHBvcnQnXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEzOjE4OjU4LjgxNzkyOTUwNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcwNjI1NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9SQVRFRVNUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9MTUwNz1jb25maWcgTkVURklMVEVSX1hUX01BVENIX1FVT1RBXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTUxNi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTUxNzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1JBVEVFU1RcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTUxOC1cXHR0cmlzdGF0ZSAnXFxcInJhdGVlc3RcXFwiIG1hdGNoIHN1cHBvcnQnXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEzOjE4OjU4Ljg3NDk5NzYxMVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU4MzcyNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX0NUX05FVExJTktfSEVMUEVSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9MzczPWNvbmZpZyBORl9DVF9ORVRMSU5LX1RJTUVPVVRcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zODQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjM4NTpjb25maWcgTkZfQ1RfTkVUTElOS19IRUxQRVJcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzg2LVxcdHRyaXN0YXRlICdDb25uZWN0aW9uIHRyYWNraW5nIGhlbHBlcnMgaW4gdXNlci1zcGFjZSB2aWEgTmV0bGluaydcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTM6MTg6NTguOTMwODM5Nzg3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzE2MDExNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNC0jXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NTptZW51Y29uZmlnIElQX1ZTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNi1cXHR0cmlzdGF0ZSBcXFwiSVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICdJUFZTIFNIIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cXHRpbnQgXFxcIklQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICdJUFZTIE1IIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXFx0aW50IFxcXCJJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTM6MTg6NTguOTg4MDA1MTQyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNzA0Mjc2NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqRGl2aW5nIEJhY2sgaW50byBJUHY2IEhvcC1ieS1Ib3AgT3B0aW9ucyoqXG5cblJpZ2h0LCB0aW1lIHRvIGNpcmNsZSBiYWNrIHRvIGBJUDZfTkZfTUFUQ0hfSEJIYC4gSSd2ZSBiZWVuIHdvcmtpbmcgd2l0aCBJUHY2IGZvciBsb25nIGVub3VnaCB0byBoYXZlIGEgZ29vZCBoYW5kbGUgb24gdGhpbmdzLCBidXQgSSd2ZSBsZWFybmVkIHRoYXQgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIHJlcXVpcmVzIGNvbnN0YW50IHJldmlldywgcGFydGljdWxhcmx5IHdpdGggdGhvc2UgbW9yZSBjb21wbGV4IGFyZWFzLiBXaXRoIG15IGV4cGVyaWVuY2UsIEkgdGVuZCB0byByZXZpZXcgZGV0YWlscyB0aGF0IGNvdWxkIGNhdXNlIGlzc3Vlcy4gU28sIGxldCBtZSBqdXN0IHJldmlzaXQgdGhlIGNvZGUgcmVsYXRlZCB0byB0aGF0IHNwZWNpZmljIG1hdGNoLCBtYWtlIHN1cmUgSSBoYXZlIGEgZ29vZCBncmFzcCBvZiB0aGUgY29ybmVyIGNhc2VzLCByZWZyZXNoIG15IG1lbW9yeSBvbiBhbnkgcmVjZW50IGRpc2N1c3Npb25zIGFyb3VuZCBpdCwgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBudWFuY2VzIEkgbWlnaHQgaGF2ZSBtaXNzZWQuIEEgc2Vjb25kIGxvb2sgYXQgdGhhdCBjb2RlIGlzIHByb2JhYmx5IG92ZXJkdWUuIEl0J3MgdG9vIGVhc3kgdG8gYXNzdW1lIGZhbWlsaWFyaXR5IGFuZCBvdmVybG9vayBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIG9yIG9wdGltaXphdGlvbiBvcHBvcnR1bml0aWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODA4LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciIsImdyZXBwZXIiLCJncmVwcGVyIiwiZ3JlcHBlciIsImdyZXBwZXIiLCJncmVwcGVyIiwiZ3JlcHBlciIsImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTM6MTk6MDIuMjU4NDM1MTAxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTQ5Mjc5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVA2X05GX01BVENIX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZz05Mz1pZiBJUDZfTkZfSVBUQUJMRVNcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTk1LSMgVGhlIHNpbXBsZSBtYXRjaGVzLlxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjk2OmNvbmZpZyBJUDZfTkZfTUFUQ0hfQUhcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy05Ny1cXHR0cmlzdGF0ZSAnXFxcImFoXFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTAzLVxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjEwNDpjb25maWcgSVA2X05GX01BVENIX0VVSTY0XFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTA1LVxcdHRyaXN0YXRlICdcXFwiZXVpNjRcXFwiIGFkZHJlc3MgY2hlY2snXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xMTMtXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc6MTE0OmNvbmZpZyBJUDZfTkZfTUFUQ0hfRlJBR1xcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTExNS1cXHR0cmlzdGF0ZSAnXFxcImZyYWdcXFwiIEZyYWdtZW50YXRpb24gaGVhZGVyIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc6MTIzOmNvbmZpZyBJUDZfTkZfTUFUQ0hfT1BUU1xcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTEyNC1cXHR0cmlzdGF0ZSAnXFxcImhiaFxcXCIgaG9wLWJ5LWhvcCBhbmQgXFxcImRzdFxcXCIgb3B0cyBoZWFkZXIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTEzMS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZzoxMzI6Y29uZmlnIElQNl9ORl9NQVRDSF9ITFxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTEzMy1cXHR0cmlzdGF0ZSAnXFxcImhsXFxcIiBob3BsaW1pdCBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTQwLVxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjE0MTpjb25maWcgSVA2X05GX01BVENIX0lQVjZIRUFERVJcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xNDItXFx0dHJpc3RhdGUgJ1xcXCJpcHY2aGVhZGVyXFxcIiBJUHY2IEV4dGVuc2lvbiBIZWFkZXJzIE1hdGNoJ1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTQ5LVxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjE1MDpjb25maWcgSVA2X05GX01BVENIX01IXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTUxLVxcdHRyaXN0YXRlICdcXFwibWhcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xNTctXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc6MTU4OmNvbmZpZyBJUDZfTkZfTUFUQ0hfUlBGSUxURVJcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xNTktXFx0dHJpc3RhdGUgJ1xcXCJycGZpbHRlclxcXCIgcmV2ZXJzZSBwYXRoIGZpbHRlciBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTY4LVxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjE2OTpjb25maWcgSVA2X05GX01BVENIX1JUXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTcwLVxcdHRyaXN0YXRlICdcXFwicnRcXFwiIFJvdXRpbmcgaGVhZGVyIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xNzctXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc6MTc4OmNvbmZpZyBJUDZfTkZfTUFUQ0hfU1JIXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTc5LVxcdHRyaXN0YXRlICdcXFwic3JoXFxcIiBTZWdtZW50IFJvdXRpbmcgaGVhZGVyIG1hdGNoIHN1cHBvcnQnXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEzOjE5OjAyLjMzMzkzNDE5NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODc5MDc5MDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipFeGFtaW5pbmcgSVB2NiBPcHRpb25zIGFuZCBTSVAgTkFUIGluIE5ldGZpbHRlcioqXG5cblJpZ2h0LCBzbyBgSVA2X05GX01BVENIX09QVFNgLi4uIHRoYXQncyBzcGVjaWZpY2FsbHkgZm9yIGhhbmRsaW5nIGhvcC1ieS1ob3AgKGhiaCkgYW5kIGRlc3RpbmF0aW9uIG9wdGlvbnMsIHJpZ2h0PyBJIG5lZWQgdG8ga2VlcCB0aGF0IHN0cmFpZ2h0LiBUaGVzZSBvcHRpb25zIGluIElQdjYgcGFja2V0cyBjYW4gYmUgdHJpY2t5LlxuXG5Ob3csIEknbSB0aGlua2luZyBhYm91dCBob3cgdGhpcyB0aWVzIGludG8gTkFULCBlc3BlY2lhbGx5IHdpdGggU0lQLiBMZXQncyBzZWUuLi4gSSBzaG91bGQgY2hlY2sgYE5GX1RBQkxFU2AgYW5kIHRoZW4gYE5GX05BVF9TSVBgLiBBaCwgcmlnaHQsIGBORl9OQVRfU0lQYCBkZXBlbmRzIG9uIGBORl9DT05OVFJBQ0tfU0lQYC4gVGhhdCBjb25uZWN0aW9uIHRyYWNraW5nIG1vZHVsZSBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgU0lQIHRyYWZmaWMgZ2V0cyBOQVQnZC4gSSBzaG91bGQgcHJvYmFibHkgZGlnIGludG8gYE5GX0NPTk5UUkFDS19TSVBgIHRvIHNlZSB0aGUgZGV0YWlscyBvZiBob3cgaXQncyBoYW5kbGVkLiBNYWtlcyBzZW5zZSDigJMgY29ubmVjdGlvbiB0cmFja2luZyBiZWZvcmUgdGhlIE5BVCBvcGVyYXRpb24uIFRoaXMgc2hvdWxkIGNsYXJpZnkgdGhlIG92ZXJhbGwgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTgyMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEzOjE5OjA3LjIxMzAxNjIxMVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ1NDcwNTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9DT05OVFJBQ0tfU0lQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9MzMwPWNvbmZpZyBORl9DT05OVFJBQ0tfU0FORVxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0Mi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzQzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0lQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0NC1cXHR0cmlzdGF0ZSBcXFwiU0lQIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEzOjE5OjA3LjM1ODQ5MzFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM1NTExODMzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIGZvciBTSVAgQ29ubmVjdGlvbiBUcmFja2luZyoqXG5cbk9rYXksIHNvIEknbSBwcmV0dHkgc3VyZSB3ZSd2ZSBwaW5uZWQgZG93biBgTkZfQ09OTlRSQUNLX1NJUGAgYXMgdGhlIGNyaXRpY2FsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciB0aGUgU0lQIGNvbm5lY3Rpb24gdHJhY2tpbmcgbW9kdWxlLiBUaGF0J3MgZ29vZCwgYnV0IGxldCdzIG5vdCBqdW1wIHRvIGNvbmNsdXNpb25zLiBJdCdzIGFsd2F5cyB3aXNlIHRvIGJlIHRob3JvdWdoLCBlc3BlY2lhbGx5IHdpdGggdGhlIGtlcm5lbC5cblxuTm93LCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgYE5GX1RBQkxFU2AgaXMgZW5hYmxlZC4gSXQncyBvZnRlbiBhIGRlcGVuZGVuY3ksIGFuZCBhIGZvdW5kYXRpb25hbCBlbGVtZW50IGZvciBoYW5kbGluZyBuZXR3b3JrIHRhYmxlcyBlZmZlY3RpdmVseS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIHVuZGVybHlpbmcgaW5mcmFzdHJ1Y3R1cmUgaXMgcHJlc2VudCBhbmQgYWNjb3VudGVkIGZvciB0byB2YWxpZGF0ZSB0aGlzIGNob2ljZS4gV2UgbmVlZCB0byBidWlsZCBvdXIgc3RyYXRlZ3kgdXBvbiBhIHNvbGlkIGJhc2UsIGRvbid0IHdlPyBMZXQncyB0YWtlIGEgbG9vay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyMjEsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMzoxOToxMi43MTM2MTM2MjlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1ODIyMjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9UQUJMRVNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz00NTM9ZW5kaWYgIyBORl9DT05OVFJBQ0tcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDU0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NTU6Y29uZmlnIE5GX1RBQkxFU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NTYtXFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9NDcxPWlmIE5GX1RBQkxFU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NzI6Y29uZmlnIE5GX1RBQkxFU19JTkVUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ3My1cXHRkZXBlbmRzIG9uIElQVjZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NzktXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ4MDpjb25maWcgTkZfVEFCTEVTX05FVERFVlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00ODEtXFx0Ym9vbCBcXFwiTmV0ZmlsdGVyIG5mX3RhYmxlcyBuZXRkZXYgdGFibGVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEzOjE5OjEyLjc2OTQ0NTcxNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5Njg3MDQ4NzM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIE5ldGZpbHRlciBhbmQgSVBWUyBQYXRjaCBTZXJpZXMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIHNlcmllcyBhbmQgdGhpbmtpbmcgdGhyb3VnaCB0aGUgaW1wbGljYXRpb25zIGZvciBmdXp6aW5nLiBGaXJzdCwgSSBzZWUgYSBzZXQgb2YgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgYXJlIHJlbGV2YW50OiBgSVBfVlNgLCBgTkZfQ09OTlRSQUNLX1NJUGAsIGBORl9UQUJMRVNgLCBgTkVURklMVEVSX1hUX01BVENIX1UzMmAsIGBORVRGSUxURVJfWFRfVEFSR0VUX0NPTk5NQVJLYCwgYE5FVEZJTFRFUl9YVF9NQVRDSF9SQVRFRVNUYCwgYElQNl9ORl9NQVRDSF9BSGAsIGBJUDZfTkZfTUFUQ0hfT1BUU2AsIGBJUDZfTkZfTUFUQ0hfUlRgLCBhbmQgYE5GX0NUX05FVExJTktfSEVMUEVSYC4gVGhlc2UgYXJlIGFsbCBjcnVjaWFsIGZvciBlbmFibGluZyB0aGUgZmVhdHVyZXMgdGhlIHBhdGNoZXMgYXJlIHRhcmdldGluZywgc28gdGhleSdsbCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRlc3RpbmcuXG5cbk5vdywgSSBuZWVkIHRvIGZvY3VzIG9uIHRoZSBrZXkgc3ltYm9scywgdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBiZWluZyBtb2RpZmllZCBvciBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBidWcgZml4ZXM6IGBhaF9tdDZgLCBgaGJoX210NmAsIGBydF9tdDZgLCBgaXBfdnNfY29ubl9uZXdgLCBgaXBfdnNfaW5faWNtcGAsIGBuZl9uYXRfc2lwYCwgYG5mdF9nZXRfc2V0X2VsZW1gLCBgbmZubF9jdGhlbHBlcl91cGRhdGVfcG9saWN5X29uZWAsIGBuZnRfcmJ0cmVlX2dldGAsIGBjb25ubWFya190Z19jaGVja192MmAsIGB4dF9yYXRlZXN0X210YCwgYW5kIGB1MzJfbXRfY2hlY2tlbnRyeWAuXG5cbkxldCdzIHNlZSwgYGNvbm5tYXJrX3RnX2NoZWNrX3YyYCwgeWVzLCB0aGF0J3MgYSBjaGVja2VudHJ5IGZ1bmN0aW9uLCBnb29kLiBBbmQgYGlwX3ZzX2Nvbm5fbmV3YCwgYWgsIHRoaXMgaXMgdGhlIGZ1bmN0aW9uIGZvciBjcmVhdGluZyBuZXcgSVBWUyBjb25uZWN0aW9ucy4gQWxzbywgYGlwX3ZzX2luX2ljbXBgIGlzIGludm9sdmVkIHdoZW4gaGFuZGxpbmcgSUNNUCBwYWNrZXRzIGZvciBJUFZTLiBOYXR1cmFsbHksIGBuZl9uYXRfc2lwYCBpcyBrZXkgd2hlbiB3ZSBOQVQgU0lQIHBhY2tldHMsIG9idmlvdXNseS4gTm93LCBgbmZ0X2dldF9zZXRfZWxlbWAgYW5kIGBuZm5sX2N0aGVscGVyX3VwZGF0ZV9wb2xpY3lfb25lYCBhcmUgbmV0bGluay1yZWxhdGVkLCBhbmQgYG5mdF9yYnRyZWVfZ2V0YCBpcyBpbnZvbHZlZCB3aXRoIG5mdGFibGVzIHNldHMuIGB4dF9yYXRlZXN0X210YCBpcyB1c2VkIGZvciBtYXRjaGluZyBwYWNrZXRzIGFuZCBgdTMyX210X2NoZWNrZW50cnlgIGlzIHJlYWNoZWQgd2hlbiBhZGRpbmcgYSBydWxlLlxuXG5UaGUgZXNzZW50aWFsIHBvaW50IGhlcmUgaXMgdGhhdCAqYWxsKiBvZiB0aGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBhbmQgcmVwcmVzZW50IHJlYWwgZnVuY3Rpb25hbCBjaGFuZ2VzIHdpdGhpbiB0aGUgbmV0ZmlsdGVyIGFuZCBJUFZTIHN1YnN5c3RlbXMuIFRoZSBwYXRjaCBzZXJpZXMgZGlyZWN0bHkgYWRkcmVzc2VzIGJ1Z3MgbGlrZSBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1bmluaXRpYWxpemVkIG1lbW9yeSwgYW5kIGluY29ycmVjdCBNVFUgY2FsY3VsYXRpb25zLiBUaGVyZWZvcmUsIGEgZnV6emVyIG5lZWRzIHRvIGV4cGxvcmUgdGhlc2UgY29kZSBwYXRocyBhZ2dyZXNzaXZlbHkgdG8gZW5zdXJlIHRoYXQgdGhlIGZpeGVzIGFyZSByb2J1c3QgYW5kIHRoYXQgbm8gbmV3IHJlZ3Jlc3Npb25zIGFyZSBpbnRyb2R1Y2VkLiBUaGUgZnV6emluZyBjYW1wYWlnbiBzaG91bGQgYWJzb2x1dGVseSB0YXJnZXQgdGhlc2UgYXJlYXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjQwLCJPdXRwdXRUb2tlbnMiOjMwMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMzoxOToyMi40NTY0OTc2NjJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzAyOTA4ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfU0lQXCIsXG4gICAgXCJORl9UQUJMRVNcIixcbiAgICBcIk5FVEZJTFRFUl9YVF9NQVRDSF9VMzJcIixcbiAgICBcIk5FVEZJTFRFUl9YVF9UQVJHRVRfQ09OTk1BUktcIixcbiAgICBcIk5FVEZJTFRFUl9YVF9NQVRDSF9SQVRFRVNUXCIsXG4gICAgXCJJUDZfTkZfTUFUQ0hfQUhcIixcbiAgICBcIklQNl9ORl9NQVRDSF9PUFRTXCIsXG4gICAgXCJJUDZfTkZfTUFUQ0hfUlRcIixcbiAgICBcIk5GX0NUX05FVExJTktfSEVMUEVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWhfbXQ2XCIsXG4gICAgXCJoYmhfbXQ2XCIsXG4gICAgXCJydF9tdDZcIixcbiAgICBcImlwX3ZzX2Nvbm5fbmV3XCIsXG4gICAgXCJpcF92c19pbl9pY21wXCIsXG4gICAgXCJuZl9uYXRfc2lwXCIsXG4gICAgXCJuZnRfZ2V0X3NldF9lbGVtXCIsXG4gICAgXCJuZm5sX2N0aGVscGVyX3VwZGF0ZV9wb2xpY3lfb25lXCIsXG4gICAgXCJuZnRfcmJ0cmVlX2dldFwiLFxuICAgIFwiY29ubm1hcmtfdGdfY2hlY2tfdjJcIixcbiAgICBcInh0X3JhdGVlc3RfbXRcIixcbiAgICBcInUzMl9tdF9jaGVja2VudHJ5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGlzIHBhdGNoIHNlcmllcyBmaXhlcyBtdWx0aXBsZSBidWdzIGluIG5ldGZpbHRlciBhbmQgSVBWUyBjb21wb25lbnRzLCBpbmNsdWRpbmcgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdW5pbml0aWFsaXplZCBtZW1vcnksIGFuZCBpbmNvcnJlY3QgTVRVIGNhbGN1bGF0aW9ucy4gRnV6emluZyB0aGVzZSBwYXRocyB3aWxsIGhlbHAgZW5zdXJlIHRoZSBmaXhlcyBhcmUgcm9idXN0IGFuZCBkb24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIixcbiAgICBcIk5GX0NPTk5UUkFDS19TSVBcIixcbiAgICBcIk5GX1RBQkxFU1wiLFxuICAgIFwiTkVURklMVEVSX1hUX01BVENIX1UzMlwiLFxuICAgIFwiTkVURklMVEVSX1hUX1RBUkdFVF9DT05OTUFSS1wiLFxuICAgIFwiTkVURklMVEVSX1hUX01BVENIX1JBVEVFU1RcIixcbiAgICBcIklQNl9ORl9NQVRDSF9BSFwiLFxuICAgIFwiSVA2X05GX01BVENIX09QVFNcIixcbiAgICBcIklQNl9ORl9NQVRDSF9SVFwiLFxuICAgIFwiTkZfQ1RfTkVUTElOS19IRUxQRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhaF9tdDZcIixcbiAgICBcImhiaF9tdDZcIixcbiAgICBcInJ0X210NlwiLFxuICAgIFwiaXBfdnNfY29ubl9uZXdcIixcbiAgICBcImlwX3ZzX2luX2ljbXBcIixcbiAgICBcIm5mX25hdF9zaXBcIixcbiAgICBcIm5mdF9nZXRfc2V0X2VsZW1cIixcbiAgICBcIm5mbmxfY3RoZWxwZXJfdXBkYXRlX3BvbGljeV9vbmVcIixcbiAgICBcIm5mdF9yYnRyZWVfZ2V0XCIsXG4gICAgXCJjb25ubWFya190Z19jaGVja192MlwiLFxuICAgIFwieHRfcmF0ZWVzdF9tdFwiLFxuICAgIFwidTMyX210X2NoZWNrZW50cnlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoaXMgcGF0Y2ggc2VyaWVzIGZpeGVzIG11bHRpcGxlIGJ1Z3MgaW4gbmV0ZmlsdGVyIGFuZCBJUFZTIGNvbXBvbmVudHMsIGluY2x1ZGluZyBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1bmluaXRpYWxpemVkIG1lbW9yeSwgYW5kIGluY29ycmVjdCBNVFUgY2FsY3VsYXRpb25zLiBGdXp6aW5nIHRoZXNlIHBhdGhzIHdpbGwgaGVscCBlbnN1cmUgdGhlIGZpeGVzIGFyZSByb2J1c3QgYW5kIGRvbid0IGludHJvZHVjZSByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowz8bmk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-03 13:05:21 +0000 UTC FinishedAt: 2026-07-03 13:19:24 +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": "62e7df6d042aeebd5efb581074e28865c04477be", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "NF_CONNTRACK_SIP", "NF_TABLES", "NETFILTER_XT_MATCH_U32", "NETFILTER_XT_TARGET_CONNMARK", "NETFILTER_XT_MATCH_RATEEST", "IP6_NF_MATCH_AH", "IP6_NF_MATCH_OPTS", "IP6_NF_MATCH_RT", "NF_CT_NETLINK_HELPER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "62e7df6d042aeebd5efb581074e28865c04477be", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_VS", "NF_CONNTRACK_SIP", "NF_TABLES", "NETFILTER_XT_MATCH_U32", "NETFILTER_XT_TARGET_CONNMARK", "NETFILTER_XT_MATCH_RATEEST", "IP6_NF_MATCH_AH", "IP6_NF_MATCH_OPTS", "IP6_NF_MATCH_RT", "NF_CT_NETLINK_HELPER" ], "series_id": "4c229847-9081-4997-93c7-32f7d9baafee" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ah_mt6", "hbh_mt6", "rt_mt6", "ip_vs_conn_new", "ip_vs_in_icmp", "nf_nat_sip", "nft_get_set_elem", "nfnl_cthelper_update_policy_one", "nft_rbtree_get", "connmark_tg_check_v2", "xt_rateest_mt", "u32_mt_checkentry" ], "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+CgkJCTx0ZD4yMDI2LzA3LzAzIDEzOjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19TSVAmIzM0OywKICAgICYjMzQ7TkZfVEFCTEVTJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUl9YVF9NQVRDSF9VMzImIzM0OywKICAgICYjMzQ7TkVURklMVEVSX1hUX1RBUkdFVF9DT05OTUFSSyYjMzQ7LAogICAgJiMzNDtORVRGSUxURVJfWFRfTUFUQ0hfUkFURUVTVCYjMzQ7LAogICAgJiMzNDtJUDZfTkZfTUFUQ0hfQUgmIzM0OywKICAgICYjMzQ7SVA2X05GX01BVENIX09QVFMmIzM0OywKICAgICYjMzQ7SVA2X05GX01BVENIX1JUJiMzNDssCiAgICAmIzM0O05GX0NUX05FVExJTktfSEVMUEVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWhfbXQ2JiMzNDssCiAgICAmIzM0O2hiaF9tdDYmIzM0OywKICAgICYjMzQ7cnRfbXQ2JiMzNDssCiAgICAmIzM0O2lwX3ZzX2Nvbm5fbmV3JiMzNDssCiAgICAmIzM0O2lwX3ZzX2luX2ljbXAmIzM0OywKICAgICYjMzQ7bmZfbmF0X3NpcCYjMzQ7LAogICAgJiMzNDtuZnRfZ2V0X3NldF9lbGVtJiMzNDssCiAgICAmIzM0O25mbmxfY3RoZWxwZXJfdXBkYXRlX3BvbGljeV9vbmUmIzM0OywKICAgICYjMzQ7bmZ0X3JidHJlZV9nZXQmIzM0OywKICAgICYjMzQ7Y29ubm1hcmtfdGdfY2hlY2tfdjImIzM0OywKICAgICYjMzQ7eHRfcmF0ZWVzdF9tdCYjMzQ7LAogICAgJiMzNDt1MzJfbXRfY2hlY2tlbnRyeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoaXMgcGF0Y2ggc2VyaWVzIGZpeGVzIG11bHRpcGxlIGJ1Z3MgaW4gbmV0ZmlsdGVyIGFuZCBJUFZTIGNvbXBvbmVudHMsIGluY2x1ZGluZyBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1bmluaXRpYWxpemVkIG1lbW9yeSwgYW5kIGluY29ycmVjdCBNVFUgY2FsY3VsYXRpb25zLiBGdXp6aW5nIHRoZXNlIHBhdGhzIHdpbGwgaGVscCBlbnN1cmUgdGhlIGZpeGVzIGFyZSByb2J1c3QgYW5kIGRvbiYjMzk7dCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTM6MTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyZTNmMGY2M2VmZmQ3MWVkNDBkZDZiZTRmMWVkYzE5MjM2YWI0YThjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMyAxMzoxODozOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9haC5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfYWguY1xuaW5kZXggNzBkYTJmMmNlMDY0Y2EuLjEyNTg3ODNlZDg3NjI5IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfYWguY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfYWguY1xuQEAgLTU2LDYgJiM0Mzs1NiwxMSBAQCBzdGF0aWMgYm9vbCBhaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0fVxuIFxuIFx0aGRybGVuID0gaXB2Nl9hdXRobGVuKGFoKTtcbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWxlbiAtIHB0ciBcdTAwM2MgaGRybGVuKSB7XG4mIzQzO1x0XHQvKiBQYWNrZXQgc21hbGxlciB0aGFuIGl0cyBsZW5ndGggZmllbGQgKi9cbiYjNDM7XHRcdHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4gXG4gXHRwcl9kZWJ1ZyhcJiMzNDtJUHY2IEFIIExFTiAldSAldSBcJiMzNDssIGhkcmxlbiwgYWgtXHUwMDNlaGRybGVuKTtcbiBcdHByX2RlYnVnKFwmIzM0O1JFUyAlMDRYIFwmIzM0OywgYWgtXHUwMDNlcmVzZXJ2ZWQpO1xuZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmNcbmluZGV4IDQ1MGRkNTM4NDZhMmY3Li42ZDFhNWQyMDI2YTY3OCAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguY1xuQEAgLTc1LDYgJiM0Mzs3NSw3IEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0aGRybGVuID0gaXB2Nl9vcHRsZW4ob2gpO1xuIFx0aWYgKHNrYi1cdTAwM2VsZW4gLSBwdHIgXHUwMDNjIGhkcmxlbikge1xuIFx0XHQvKiBQYWNrZXQgc21hbGxlciB0aGFuIGl0JiMzOTtzIGxlbmd0aCBmaWVsZCAqL1xuJiM0MztcdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfcnQuYyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3J0LmNcbmluZGV4IDU1NjFiZDljZWE4MTg1Li4yNzhiNTI3NTJmMzY0NSAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3J0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3J0LmNcbkBAIC01Niw3ICYjNDM7NTYsOCBAQCBzdGF0aWMgYm9vbCBydF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFxuIFx0aGRybGVuID0gaXB2Nl9vcHRsZW4ocmgpO1xuIFx0aWYgKHNrYi1cdTAwM2VsZW4gLSBwdHIgXHUwMDNjIGhkcmxlbikge1xuLVx0XHQvKiBQY2tldCBzbWFsbGVyIHRoYW4gaXRzIGxlbmd0aCBmaWVsZCAqL1xuJiM0MztcdFx0LyogUGFja2V0IHNtYWxsZXIgdGhhbiBpdHMgbGVuZ3RoIGZpZWxkICovXG4mIzQzO1x0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4gXHRcdHJldHVybiBmYWxzZTtcbiBcdH1cbiBcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuaW5kZXggY2IzNjY0MWY4ZDFjYzEuLjZlZDI2MjIzNjNmMGQ2IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xuQEAgLTE0MjAsOCAmIzQzOzE0MjAsOCBAQCBpcF92c19jb25uX25ldyhjb25zdCBzdHJ1Y3QgaXBfdnNfY29ubl9wYXJhbSAqcCwgaW50IGRlc3RfYWYsXG4gXHRjcC1cdTAwM2VhcHAgPSBOVUxMO1xuIFx0Y3AtXHUwMDNlYXBwX2RhdGEgPSBOVUxMO1xuIFx0LyogcmVzZXQgc3RydWN0IGlwX3ZzX3NlcSAqL1xuLVx0Y3AtXHUwMDNlaW5fc2VxLmRlbHRhID0gMDtcbi1cdGNwLVx1MDAzZW91dF9zZXEuZGVsdGEgPSAwO1xuJiM0MztcdG1lbXNldChcdTAwMjZjcC1cdTAwM2Vpbl9zZXEsIDAsIHNpemVvZihjcC1cdTAwM2Vpbl9zZXEpKTtcbiYjNDM7XHRtZW1zZXQoXHUwMDI2Y3AtXHUwMDNlb3V0X3NlcSwgMCwgc2l6ZW9mKGNwLVx1MDAzZW91dF9zZXEpKTtcbiBcbiBcdGlmICh1bmxpa2VseShmbGFncyBcdTAwMjYgSVBfVlNfQ09OTl9GX05PX0NQT1JUKSkge1xuIFx0XHRpbnQgYWZfaWQgPSBpcF92c19hZl9pbmRleChjcC1cdTAwM2VhZik7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcbmluZGV4IGQ0MGI0MDRjMWJmNjQ2Li45MDZmMmMzNjE2NzYzOCAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcbkBAIC0xNzY3LDYgJiM0MzsxNzY3LDcgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxuIFx0Ym9vbCB0dW5uZWwsIG5ld19jcCA9IGZhbHNlO1xuIFx0dW5pb24gbmZfaW5ldF9hZGRyICpyYWRkcjtcbiBcdGNoYXIgKm91dGVyX3Byb3RvID0gXCYjMzQ7SVBJUFwmIzM0OztcbiYjNDM7XHRpbnQgdWxlbiA9IDA7XG4gXG4gXHQqcmVsYXRlZCA9IDE7XG4gXG5AQCAtMTgzMSw3ICYjNDM7MTgzMiw2IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcbiBcdFx0ICAgLyogRXJyb3IgZm9yIG91ciB0dW5uZWwgbXVzdCBhcnJpdmUgYXQgTE9DQUxfSU4gKi9cbiBcdFx0ICAgKHNrYl9ydGFibGUoc2tiKS1cdTAwM2VydF9mbGFncyBcdTAwMjYgUlRDRl9MT0NBTCkpIHtcbiBcdFx0X191OCBpcHJvdG87XG4tXHRcdGludCB1bGVuO1xuIFxuIFx0XHQvKiBOb24tZmlyc3QgZnJhZ21lbnQgaGFzIG5vIFVEUC9HUkUgaGVhZGVyICovXG4gXHRcdGlmICh1bmxpa2VseShjaWgtXHUwMDNlZnJhZ19vZmYgXHUwMDI2IGh0b25zKElQX09GRlNFVCkpKVxuQEAgLTE5MzYsOCAmIzQzOzE5MzYsOCBAQCBpcF92c19pbl9pY21wKHN0cnVjdCBuZXRuc19pcHZzICppcHZzLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgKnJlbGF0ZWQsXG4gXHRcdFx0XHRpZiAoZGVzdF9kc3QpXG4gXHRcdFx0XHRcdG10dSA9IGRzdF9tdHUoZGVzdF9kc3QtXHUwMDNlZHN0X2NhY2hlKTtcbiBcdFx0XHR9XG4tXHRcdFx0aWYgKG10dSBcdTAwM2UgNjggJiM0Mzsgc2l6ZW9mKHN0cnVjdCBpcGhkcikpXG4tXHRcdFx0XHRtdHUgLT0gc2l6ZW9mKHN0cnVjdCBpcGhkcik7XG4mIzQzO1x0XHRcdGlmIChtdHUgXHUwMDNlIDY4ICYjNDM7IHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IHVsZW4pXG4mIzQzO1x0XHRcdFx0bXR1IC09IHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IHVsZW47XG4gXHRcdFx0aW5mbyA9IGh0b25sKG10dSk7XG4gXHRcdH1cbiBcdFx0LyogU3RyaXAgb3V0ZXIgSVAsIElDTVAgYW5kIElQSVAvVURQL0dSRSwgZ28gdG8gSVAgaGVhZGVyIG9mXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmMgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF9zaXAuY1xuaW5kZXggNjdjMDRkODE0M2FiOTEuLmFlYTAyZjZhZmYwOTJhIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3NpcC5jXG5AQCAtMjg5LDEzICYjNDM7Mjg5LDI0IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfbmF0X3NpcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbiBcbiBcdC8qIE1hbmdsZSBkZXN0aW5hdGlvbiBwb3J0IGZvciBDaXNjbyBwaG9uZXMsIHRoZW4gZml4IHVwIGNoZWNrc3VtcyAqL1xuIFx0aWYgKGRpciA9PSBJUF9DVF9ESVJfUkVQTFkgXHUwMDI2XHUwMDI2IGN0X3NpcF9pbmZvLVx1MDAzZWZvcmNlZF9kcG9ydCkge1xuJiM0MztcdFx0aW50IGRvZmYgPSAqZHB0ciAtIChjb25zdCBjaGFyICopc2tiLVx1MDAzZWRhdGE7XG4gXHRcdHN0cnVjdCB1ZHBoZHIgKnVoO1xuIFxuJiM0MztcdFx0aWYgKGRvZmYgXHUwMDNjPSAwKSB7XG4mIzQzO1x0XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XG4mIzQzO1x0XHRcdHJldHVybiBORl9EUk9QO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdC8qIGN0X3NpcF9pbmZvLVx1MDAzZWZvcmNlZF9kcG9ydCBvbmx5IGV4cGVjdGVkIHdpdGggVURQICovXG4mIzQzO1x0XHRpZiAobmZfY3RfcHJvdG9udW0oY3QpICE9IElQUFJPVE9fVURQKVxuJiM0MztcdFx0XHRyZXR1cm4gTkZfRFJPUDtcbiYjNDM7XG4gXHRcdGlmIChza2JfZW5zdXJlX3dyaXRhYmxlKHNrYiwgc2tiLVx1MDAzZWxlbikpIHtcbiBcdFx0XHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFwmIzM0O2Nhbm5vdCBtYW5nbGUgcGFja2V0XCYjMzQ7KTtcbiBcdFx0XHRyZXR1cm4gTkZfRFJPUDtcbiBcdFx0fVxuIFxuJiM0MztcdFx0KmRwdHIgPSBza2ItXHUwMDNlZGF0YSAmIzQzOyBkb2ZmO1xuIFx0XHR1aCA9ICh2b2lkICopc2tiLVx1MDAzZWRhdGEgJiM0MzsgcHJvdG9mZjtcbiBcdFx0dWgtXHUwMDNlZGVzdCA9IGN0X3NpcF9pbmZvLVx1MDAzZWZvcmNlZF9kcG9ydDtcbiBcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXG5pbmRleCA0ODg0ZjdmN2FhZWVlMC4uYTllYWY5NDU1Yzc3ODMgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcbkBAIC02NTYzLDYgJiM0Mzs2NTYzLDkgQEAgc3RhdGljIGludCBuZnRfZ2V0X3NldF9lbGVtKHN0cnVjdCBuZnRfY3R4ICpjdHgsIGNvbnN0IHN0cnVjdCBuZnRfc2V0ICpzZXQsXG4gXHRpZiAoZXJyIFx1MDAzYyAwKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuJiM0MztcdGlmICghZWxlbS5wcml2KVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuIFx0ZXJyID0gLUVOT01FTTtcbiBcdHNrYiA9IG5sbXNnX25ldyhOTE1TR19HT09EU0laRSwgR0ZQX0FUT01JQyk7XG4gXHRpZiAoc2tiID09IE5VTEwpXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfY3RoZWxwZXIuYyBiL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2N0aGVscGVyLmNcbmluZGV4IDJjYmNjYTkxMTBkYmY1Li5mMDYyYWMyMTAzNDMyOSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2N0aGVscGVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2N0aGVscGVyLmNcbkBAIC0zMTYsNiAmIzQzOzMxNiw4IEBAIG5mbmxfY3RoZWxwZXJfdXBkYXRlX3BvbGljeV9vbmUoY29uc3Qgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3RfcG9saWN5ICpwb2xpY3ksXG4gXG4gXHRuZXdfcG9saWN5LVx1MDAzZW1heF9leHBlY3RlZCA9XG4gXHRcdG50b2hsKG5sYV9nZXRfYmUzMih0YltORkNUSF9QT0xJQ1lfRVhQRUNUX01BWF0pKTtcbiYjNDM7XHRpZiAoIW5ld19wb2xpY3ktXHUwMDNlbWF4X2V4cGVjdGVkKVxuJiM0MztcdFx0bmV3X3BvbGljeS1cdTAwM2VtYXhfZXhwZWN0ZWQgPSBORl9DVF9FWFBFQ1RfTUFYX0NOVDtcbiBcdGlmIChuZXdfcG9saWN5LVx1MDAzZW1heF9leHBlY3RlZCBcdTAwM2UgTkZfQ1RfRVhQRUNUX01BWF9DTlQpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZ0X3NldF9yYnRyZWUuYyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3NldF9yYnRyZWUuY1xuaW5kZXggMDE4YmJiNmRmNGNlNDMuLjYyMjJlOWJiNTdiYzkwIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfc2V0X3JidHJlZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mdF9zZXRfcmJ0cmVlLmNcbkBAIC0xODQsMTAgJiM0MzsxODQsMTQgQEAgbmZ0X3JidHJlZV9nZXQoY29uc3Qgc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3QgbmZ0X3NldCAqc2V0LFxuIFx0aWYgKCFpbnRlcnZhbCB8fCBuZnRfc2V0X2VsZW1fZXhwaXJlZChpbnRlcnZhbC1cdTAwM2Vmcm9tKSlcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7XG4gXG4tXHRpZiAoZmxhZ3MgXHUwMDI2IE5GVF9TRVRfRUxFTV9JTlRFUlZBTF9FTkQpXG4mIzQzO1x0aWYgKGZsYWdzIFx1MDAyNiBORlRfU0VUX0VMRU1fSU5URVJWQUxfRU5EKSB7XG4mIzQzO1x0XHRpZiAoIWludGVydmFsLVx1MDAzZXRvKVxuJiM0MztcdFx0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XG4gXHRcdHJiZSA9IGNvbnRhaW5lcl9vZihpbnRlcnZhbC1cdTAwM2V0bywgc3RydWN0IG5mdF9yYnRyZWVfZWxlbSwgZXh0KTtcbi1cdGVsc2VcbiYjNDM7XHR9IGVsc2Uge1xuIFx0XHRyYmUgPSBjb250YWluZXJfb2YoaW50ZXJ2YWwtXHUwMDNlZnJvbSwgc3RydWN0IG5mdF9yYnRyZWVfZWxlbSwgZXh0KTtcbiYjNDM7XHR9XG4gXG4gXHRyZXR1cm4gXHUwMDI2cmJlLVx1MDAzZXByaXY7XG4gfVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIveHRfY29ubm1hcmsuYyBiL25ldC9uZXRmaWx0ZXIveHRfY29ubm1hcmsuY1xuaW5kZXggNDI3NzA4NGRlMmU3MGMuLjJjZjI3ZjdkNTliOTVmIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci94dF9jb25ubWFyay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL3h0X2Nvbm5tYXJrLmNcbkBAIC0xMTIsNiAmIzQzOzExMiwxNiBAQCBzdGF0aWMgaW50IGNvbm5tYXJrX3RnX2NoZWNrKGNvbnN0IHN0cnVjdCB4dF90Z2Noa19wYXJhbSAqcGFyKVxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbnQgY29ubm1hcmtfdGdfY2hlY2tfdjIoY29uc3Qgc3RydWN0IHh0X3RnY2hrX3BhcmFtICpwYXIpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgeHRfY29ubm1hcmtfdGdpbmZvMiAqaW5mbyA9IHBhci1cdTAwM2V0YXJnaW5mbztcbiYjNDM7XG4mIzQzO1x0aWYgKGluZm8tXHUwMDNlc2hpZnRfZGlyIFx1MDAzZSBEX1NISUZUX1JJR0hUIHx8IGluZm8tXHUwMDNlc2hpZnRfYml0cyBcdTAwM2U9IDMyKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdHJldHVybiBjb25ubWFya190Z19jaGVjayhwYXIpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIGNvbm5tYXJrX3RnX2Rlc3Ryb3koY29uc3Qgc3RydWN0IHh0X3RnZHRvcl9wYXJhbSAqcGFyKVxuIHtcbiBcdG5mX2N0X25ldG5zX3B1dChwYXItXHUwMDNlbmV0LCBwYXItXHUwMDNlZmFtaWx5KTtcbkBAIC0xNjIsNyAmIzQzOzE3Miw3IEBAIHN0YXRpYyBzdHJ1Y3QgeHRfdGFyZ2V0IGNvbm5tYXJrX3RnX3JlZ1tdIF9fcmVhZF9tb3N0bHkgPSB7XG4gXHRcdC5uYW1lICAgICAgICAgICA9IFwmIzM0O0NPTk5NQVJLXCYjMzQ7LFxuIFx0XHQucmV2aXNpb24gICAgICAgPSAyLFxuIFx0XHQuZmFtaWx5ICAgICAgICAgPSBORlBST1RPX0lQVjQsXG4tXHRcdC5jaGVja2VudHJ5ICAgICA9IGNvbm5tYXJrX3RnX2NoZWNrLFxuJiM0MztcdFx0LmNoZWNrZW50cnkgICAgID0gY29ubm1hcmtfdGdfY2hlY2tfdjIsXG4gXHRcdC50YXJnZXQgICAgICAgICA9IGNvbm5tYXJrX3RnX3YyLFxuIFx0XHQudGFyZ2V0c2l6ZSAgICAgPSBzaXplb2Yoc3RydWN0IHh0X2Nvbm5tYXJrX3RnaW5mbzIpLFxuIFx0XHQuZGVzdHJveSAgICAgICAgPSBjb25ubWFya190Z19kZXN0cm95LFxuQEAgLTE4Myw3ICYjNDM7MTkzLDcgQEAgc3RhdGljIHN0cnVjdCB4dF90YXJnZXQgY29ubm1hcmtfdGdfcmVnW10gX19yZWFkX21vc3RseSA9IHtcbiBcdFx0Lm5hbWUgICAgICAgICAgID0gXCYjMzQ7Q09OTk1BUktcJiMzNDssXG4gXHRcdC5yZXZpc2lvbiAgICAgICA9IDIsXG4gXHRcdC5mYW1pbHkgICAgICAgICA9IE5GUFJPVE9fSVBWNixcbi1cdFx0LmNoZWNrZW50cnkgICAgID0gY29ubm1hcmtfdGdfY2hlY2ssXG4mIzQzO1x0XHQuY2hlY2tlbnRyeSAgICAgPSBjb25ubWFya190Z19jaGVja192MixcbiBcdFx0LnRhcmdldCAgICAgICAgID0gY29ubm1hcmtfdGdfdjIsXG4gXHRcdC50YXJnZXRzaXplICAgICA9IHNpemVvZihzdHJ1Y3QgeHRfY29ubm1hcmtfdGdpbmZvMiksXG4gXHRcdC5kZXN0cm95ICAgICAgICA9IGNvbm5tYXJrX3RnX2Rlc3Ryb3ksXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci94dF9yYXRlZXN0LmMgYi9uZXQvbmV0ZmlsdGVyL3h0X3JhdGVlc3QuY1xuaW5kZXggYjFkNzM2YzE1ZmNiZTUuLjdjMDViNjM0MjU3ODRlIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci94dF9yYXRlZXN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIveHRfcmF0ZWVzdC5jXG5AQCAtMTYsNyAmIzQzOzE2LDcgQEAgeHRfcmF0ZWVzdF9tdChjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IHh0X3JhdGVlc3RfbWF0Y2hfaW5mbyAqaW5mbyA9IHBhci1cdTAwM2VtYXRjaGluZm87XG4gXHRzdHJ1Y3QgZ25ldF9zdGF0c19yYXRlX2VzdDY0IHNhbXBsZSA9IHswfTtcbi1cdHVfaW50MzJfdCBicHMxLCBicHMyLCBwcHMxLCBwcHMyO1xuJiM0MztcdHU2NCBicHMxLCBicHMyLCBwcHMxLCBwcHMyO1xuIFx0Ym9vbCByZXQgPSB0cnVlO1xuIFxuIFx0Z2VuX2VzdGltYXRvcl9yZWFkKFx1MDAyNmluZm8tXHUwMDNlZXN0MS1cdTAwM2VyYXRlX2VzdCwgXHUwMDI2c2FtcGxlKTtcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL3h0X3UzMi5jIGIvbmV0L25ldGZpbHRlci94dF91MzIuY1xuaW5kZXggMTE3ZDQ2MTVkNjY4NGMuLmVjMWEyMWUzYjZlMmMzIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci94dF91MzIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci94dF91MzIuY1xuQEAgLTEwMCw3ICYjNDM7MTAwLDcgQEAgc3RhdGljIGludCB1MzJfbXRfY2hlY2tlbnRyeShjb25zdCBzdHJ1Y3QgeHRfbXRjaGtfcGFyYW0gKnBhcilcbiB7XG4gXHRjb25zdCBzdHJ1Y3QgeHRfdTMyICpkYXRhID0gcGFyLVx1MDAzZW1hdGNoaW5mbztcbiBcdGNvbnN0IHN0cnVjdCB4dF91MzJfdGVzdCAqY3Q7XG4tXHR1bnNpZ25lZCBpbnQgaTtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgaSwgajtcbiBcbiBcdGlmIChkYXRhLVx1MDAzZW50ZXN0cyBcdTAwM2UgQVJSQVlfU0laRShkYXRhLVx1MDAzZXRlc3RzKSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG5AQCAtMTExLDYgJiM0MzsxMTEsMTYgQEAgc3RhdGljIGludCB1MzJfbXRfY2hlY2tlbnRyeShjb25zdCBzdHJ1Y3QgeHRfbXRjaGtfcGFyYW0gKnBhcilcbiBcdFx0aWYgKGN0LVx1MDAzZW5udW1zIFx1MDAzZSBBUlJBWV9TSVpFKGN0LVx1MDAzZWxvY2F0aW9uKSB8fFxuIFx0XHQgICAgY3QtXHUwMDNlbnZhbHVlcyBcdTAwM2UgQVJSQVlfU0laRShjdC1cdTAwM2V2YWx1ZSkpXG4gXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdFx0Zm9yIChqID0gMTsgaiBcdTAwM2MgY3QtXHUwMDNlbm51bXM7ICYjNDM7JiM0MztqKSB7XG4mIzQzO1x0XHRcdHN3aXRjaCAoY3QtXHUwMDNlbG9jYXRpb25bal0ubmV4dG9wKSB7XG4mIzQzO1x0XHRcdGNhc2UgWFRfVTMyX0xFRlRTSDpcbiYjNDM7XHRcdFx0Y2FzZSBYVF9VMzJfUklHSFRTSDpcbiYjNDM7XHRcdFx0XHRpZiAoY3QtXHUwMDNlbG9jYXRpb25bal0ubnVtYmVyIFx1MDAzZT0gMzIpXG4mIzQzO1x0XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0fVxuJiM0MztcdFx0fVxuIFx0fVxuIFxuIFx0cmV0dXJuIDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTM6MTg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfVlMmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLX1NJUCYjMzQ7LAogICAgJiMzNDtORl9UQUJMRVMmIzM0OywKICAgICYjMzQ7TkVURklMVEVSX1hUX01BVENIX1UzMiYjMzQ7LAogICAgJiMzNDtORVRGSUxURVJfWFRfVEFSR0VUX0NPTk5NQVJLJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUl9YVF9NQVRDSF9SQVRFRVNUJiMzNDssCiAgICAmIzM0O0lQNl9ORl9NQVRDSF9BSCYjMzQ7LAogICAgJiMzNDtJUDZfTkZfTUFUQ0hfT1BUUyYjMzQ7LAogICAgJiMzNDtJUDZfTkZfTUFUQ0hfUlQmIzM0OywKICAgICYjMzQ7TkZfQ1RfTkVUTElOS19IRUxQRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthaF9tdDYmIzM0OywKICAgICYjMzQ7aGJoX210NiYjMzQ7LAogICAgJiMzNDtydF9tdDYmIzM0OywKICAgICYjMzQ7aXBfdnNfY29ubl9uZXcmIzM0OywKICAgICYjMzQ7aXBfdnNfaW5faWNtcCYjMzQ7LAogICAgJiMzNDtuZl9uYXRfc2lwJiMzNDssCiAgICAmIzM0O25mdF9nZXRfc2V0X2VsZW0mIzM0OywKICAgICYjMzQ7bmZubF9jdGhlbHBlcl91cGRhdGVfcG9saWN5X29uZSYjMzQ7LAogICAgJiMzNDtuZnRfcmJ0cmVlX2dldCYjMzQ7LAogICAgJiMzNDtjb25ubWFya190Z19jaGVja192MiYjMzQ7LAogICAgJiMzNDt4dF9yYXRlZXN0X210JiMzNDssCiAgICAmIzM0O3UzMl9tdF9jaGVja2VudHJ5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhpcyBwYXRjaCBzZXJpZXMgZml4ZXMgbXVsdGlwbGUgYnVncyBpbiBuZXRmaWx0ZXIgYW5kIElQVlMgY29tcG9uZW50cywgaW5jbHVkaW5nIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBhbmQgaW5jb3JyZWN0IE1UVSBjYWxjdWxhdGlvbnMuIEZ1enppbmcgdGhlc2UgcGF0aHMgd2lsbCBoZWxwIGVuc3VyZSB0aGUgZml4ZXMgYXJlIHJvYnVzdCBhbmQgZG9uJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMmUzZjBmNjNlZmZkNzFlZDQwZGQ2YmU0ZjFlZGMxOTIzNmFiNGE4YwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMgMTM6MTg6MzkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9haC5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfYWguYwppbmRleCA3MGRhMmYyY2UwNjRjYS4uMTI1ODc4M2VkODc2MjkgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2FoLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfYWguYwpAQCAtNTYsNiAmIzQzOzU2LDExIEBAIHN0YXRpYyBib29sIGFoX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpCiAJfQogCiAJaGRybGVuID0gaXB2Nl9hdXRobGVuKGFoKTsKJiM0MzsJaWYgKHNrYi0mZ3Q7bGVuIC0gcHRyICZsdDsgaGRybGVuKSB7CiYjNDM7CQkvKiBQYWNrZXQgc21hbGxlciB0aGFuIGl0cyBsZW5ndGggZmllbGQgKi8KJiM0MzsJCXBhci0mZ3Q7aG90ZHJvcCA9IHRydWU7CiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KIAogCXByX2RlYnVnKCYjMzQ7SVB2NiBBSCBMRU4gJXUgJXUgJiMzNDssIGhkcmxlbiwgYWgtJmd0O2hkcmxlbik7CiAJcHJfZGVidWcoJiMzNDtSRVMgJTA0WCAmIzM0OywgYWgtJmd0O3Jlc2VydmVkKTsKZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMKaW5kZXggNDUwZGQ1Mzg0NmEyZjcuLjZkMWE1ZDIwMjZhNjc4IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYwpAQCAtNzUsNiAmIzQzOzc1LDcgQEAgaGJoX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpCiAJaGRybGVuID0gaXB2Nl9vcHRsZW4ob2gpOwogCWlmIChza2ItJmd0O2xlbiAtIHB0ciAmbHQ7IGhkcmxlbikgewogCQkvKiBQYWNrZXQgc21hbGxlciB0aGFuIGl0JiMzOTtzIGxlbmd0aCBmaWVsZCAqLwomIzQzOwkJcGFyLSZndDtob3Rkcm9wID0gdHJ1ZTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KIApkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfcnQuYyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3J0LmMKaW5kZXggNTU2MWJkOWNlYTgxODUuLjI3OGI1Mjc1MmYzNjQ1IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9ydC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3J0LmMKQEAgLTU2LDcgJiM0Mzs1Niw4IEBAIHN0YXRpYyBib29sIHJ0X210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpCiAKIAloZHJsZW4gPSBpcHY2X29wdGxlbihyaCk7CiAJaWYgKHNrYi0mZ3Q7bGVuIC0gcHRyICZsdDsgaGRybGVuKSB7Ci0JCS8qIFBja2V0IHNtYWxsZXIgdGhhbiBpdHMgbGVuZ3RoIGZpZWxkICovCiYjNDM7CQkvKiBQYWNrZXQgc21hbGxlciB0aGFuIGl0cyBsZW5ndGggZmllbGQgKi8KJiM0MzsJCXBhci0mZ3Q7aG90ZHJvcCA9IHRydWU7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jCmluZGV4IGNiMzY2NDFmOGQxY2MxLi42ZWQyNjIyMzYzZjBkNiAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jCkBAIC0xNDIwLDggJiM0MzsxNDIwLDggQEAgaXBfdnNfY29ubl9uZXcoY29uc3Qgc3RydWN0IGlwX3ZzX2Nvbm5fcGFyYW0gKnAsIGludCBkZXN0X2FmLAogCWNwLSZndDthcHAgPSBOVUxMOwogCWNwLSZndDthcHBfZGF0YSA9IE5VTEw7CiAJLyogcmVzZXQgc3RydWN0IGlwX3ZzX3NlcSAqLwotCWNwLSZndDtpbl9zZXEuZGVsdGEgPSAwOwotCWNwLSZndDtvdXRfc2VxLmRlbHRhID0gMDsKJiM0MzsJbWVtc2V0KCZhbXA7Y3AtJmd0O2luX3NlcSwgMCwgc2l6ZW9mKGNwLSZndDtpbl9zZXEpKTsKJiM0MzsJbWVtc2V0KCZhbXA7Y3AtJmd0O291dF9zZXEsIDAsIHNpemVvZihjcC0mZ3Q7b3V0X3NlcSkpOwogCiAJaWYgKHVubGlrZWx5KGZsYWdzICZhbXA7IElQX1ZTX0NPTk5fRl9OT19DUE9SVCkpIHsKIAkJaW50IGFmX2lkID0gaXBfdnNfYWZfaW5kZXgoY3AtJmd0O2FmKTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jCmluZGV4IGQ0MGI0MDRjMWJmNjQ2Li45MDZmMmMzNjE2NzYzOCAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jCkBAIC0xNzY3LDYgJiM0MzsxNzY3LDcgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLAogCWJvb2wgdHVubmVsLCBuZXdfY3AgPSBmYWxzZTsKIAl1bmlvbiBuZl9pbmV0X2FkZHIgKnJhZGRyOwogCWNoYXIgKm91dGVyX3Byb3RvID0gJiMzNDtJUElQJiMzNDs7CiYjNDM7CWludCB1bGVuID0gMDsKIAogCSpyZWxhdGVkID0gMTsKIApAQCAtMTgzMSw3ICYjNDM7MTgzMiw2IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCwKIAkJICAgLyogRXJyb3IgZm9yIG91ciB0dW5uZWwgbXVzdCBhcnJpdmUgYXQgTE9DQUxfSU4gKi8KIAkJICAgKHNrYl9ydGFibGUoc2tiKS0mZ3Q7cnRfZmxhZ3MgJmFtcDsgUlRDRl9MT0NBTCkpIHsKIAkJX191OCBpcHJvdG87Ci0JCWludCB1bGVuOwogCiAJCS8qIE5vbi1maXJzdCBmcmFnbWVudCBoYXMgbm8gVURQL0dSRSBoZWFkZXIgKi8KIAkJaWYgKHVubGlrZWx5KGNpaC0mZ3Q7ZnJhZ19vZmYgJmFtcDsgaHRvbnMoSVBfT0ZGU0VUKSkpCkBAIC0xOTM2LDggJiM0MzsxOTM2LDggQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLAogCQkJCWlmIChkZXN0X2RzdCkKIAkJCQkJbXR1ID0gZHN0X210dShkZXN0X2RzdC0mZ3Q7ZHN0X2NhY2hlKTsKIAkJCX0KLQkJCWlmIChtdHUgJmd0OyA2OCAmIzQzOyBzaXplb2Yoc3RydWN0IGlwaGRyKSkKLQkJCQltdHUgLT0gc2l6ZW9mKHN0cnVjdCBpcGhkcik7CiYjNDM7CQkJaWYgKG10dSAmZ3Q7IDY4ICYjNDM7IHNpemVvZihzdHJ1Y3QgaXBoZHIpICYjNDM7IHVsZW4pCiYjNDM7CQkJCW10dSAtPSBzaXplb2Yoc3RydWN0IGlwaGRyKSAmIzQzOyB1bGVuOwogCQkJaW5mbyA9IGh0b25sKG10dSk7CiAJCX0KIAkJLyogU3RyaXAgb3V0ZXIgSVAsIElDTVAgYW5kIElQSVAvVURQL0dSRSwgZ28gdG8gSVAgaGVhZGVyIG9mCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9zaXAuYyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3NpcC5jCmluZGV4IDY3YzA0ZDgxNDNhYjkxLi5hZWEwMmY2YWZmMDkyYSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmMKQEAgLTI4OSwxMyAmIzQzOzI4OSwyNCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IG5mX25hdF9zaXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgaW50IHByb3RvZmYsCiAKIAkvKiBNYW5nbGUgZGVzdGluYXRpb24gcG9ydCBmb3IgQ2lzY28gcGhvbmVzLCB0aGVuIGZpeCB1cCBjaGVja3N1bXMgKi8KIAlpZiAoZGlyID09IElQX0NUX0RJUl9SRVBMWSAmYW1wOyZhbXA7IGN0X3NpcF9pbmZvLSZndDtmb3JjZWRfZHBvcnQpIHsKJiM0MzsJCWludCBkb2ZmID0gKmRwdHIgLSAoY29uc3QgY2hhciAqKXNrYi0mZ3Q7ZGF0YTsKIAkJc3RydWN0IHVkcGhkciAqdWg7CiAKJiM0MzsJCWlmIChkb2ZmICZsdDs9IDApIHsKJiM0MzsJCQlERUJVR19ORVRfV0FSTl9PTl9PTkNFKDEpOwomIzQzOwkJCXJldHVybiBORl9EUk9QOwomIzQzOwkJfQomIzQzOwomIzQzOwkJLyogY3Rfc2lwX2luZm8tJmd0O2ZvcmNlZF9kcG9ydCBvbmx5IGV4cGVjdGVkIHdpdGggVURQICovCiYjNDM7CQlpZiAobmZfY3RfcHJvdG9udW0oY3QpICE9IElQUFJPVE9fVURQKQomIzQzOwkJCXJldHVybiBORl9EUk9QOwomIzQzOwogCQlpZiAoc2tiX2Vuc3VyZV93cml0YWJsZShza2IsIHNrYi0mZ3Q7bGVuKSkgewogCQkJbmZfY3RfaGVscGVyX2xvZyhza2IsIGN0LCAmIzM0O2Nhbm5vdCBtYW5nbGUgcGFja2V0JiMzNDspOwogCQkJcmV0dXJuIE5GX0RST1A7CiAJCX0KIAomIzQzOwkJKmRwdHIgPSBza2ItJmd0O2RhdGEgJiM0MzsgZG9mZjsKIAkJdWggPSAodm9pZCAqKXNrYi0mZ3Q7ZGF0YSAmIzQzOyBwcm90b2ZmOwogCQl1aC0mZ3Q7ZGVzdCA9IGN0X3NpcF9pbmZvLSZndDtmb3JjZWRfZHBvcnQ7CiAKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMKaW5kZXggNDg4NGY3ZjdhYWVlZTAuLmE5ZWFmOTQ1NWM3NzgzIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYwpAQCAtNjU2Myw2ICYjNDM7NjU2Myw5IEBAIHN0YXRpYyBpbnQgbmZ0X2dldF9zZXRfZWxlbShzdHJ1Y3QgbmZ0X2N0eCAqY3R4LCBjb25zdCBzdHJ1Y3QgbmZ0X3NldCAqc2V0LAogCWlmIChlcnIgJmx0OyAwKQogCQlyZXR1cm4gZXJyOwogCiYjNDM7CWlmICghZWxlbS5wcml2KQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiAJZXJyID0gLUVOT01FTTsKIAlza2IgPSBubG1zZ19uZXcoTkxNU0dfR09PRFNJWkUsIEdGUF9BVE9NSUMpOwogCWlmIChza2IgPT0gTlVMTCkKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2N0aGVscGVyLmMgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19jdGhlbHBlci5jCmluZGV4IDJjYmNjYTkxMTBkYmY1Li5mMDYyYWMyMTAzNDMyOSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfY3RoZWxwZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19jdGhlbHBlci5jCkBAIC0zMTYsNiAmIzQzOzMxNiw4IEBAIG5mbmxfY3RoZWxwZXJfdXBkYXRlX3BvbGljeV9vbmUoY29uc3Qgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3RfcG9saWN5ICpwb2xpY3ksCiAKIAluZXdfcG9saWN5LSZndDttYXhfZXhwZWN0ZWQgPQogCQludG9obChubGFfZ2V0X2JlMzIodGJbTkZDVEhfUE9MSUNZX0VYUEVDVF9NQVhdKSk7CiYjNDM7CWlmICghbmV3X3BvbGljeS0mZ3Q7bWF4X2V4cGVjdGVkKQomIzQzOwkJbmV3X3BvbGljeS0mZ3Q7bWF4X2V4cGVjdGVkID0gTkZfQ1RfRVhQRUNUX01BWF9DTlQ7CiAJaWYgKG5ld19wb2xpY3ktJmd0O21heF9leHBlY3RlZCAmZ3Q7IE5GX0NUX0VYUEVDVF9NQVhfQ05UKQogCQlyZXR1cm4gLUVJTlZBTDsKIApkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZnRfc2V0X3JidHJlZS5jIGIvbmV0L25ldGZpbHRlci9uZnRfc2V0X3JidHJlZS5jCmluZGV4IDAxOGJiYjZkZjRjZTQzLi42MjIyZTliYjU3YmM5MCAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZnRfc2V0X3JidHJlZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3NldF9yYnRyZWUuYwpAQCAtMTg0LDEwICYjNDM7MTg0LDE0IEBAIG5mdF9yYnRyZWVfZ2V0KGNvbnN0IHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5mdF9zZXQgKnNldCwKIAlpZiAoIWludGVydmFsIHx8IG5mdF9zZXRfZWxlbV9leHBpcmVkKGludGVydmFsLSZndDtmcm9tKSkKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7CiAKLQlpZiAoZmxhZ3MgJmFtcDsgTkZUX1NFVF9FTEVNX0lOVEVSVkFMX0VORCkKJiM0MzsJaWYgKGZsYWdzICZhbXA7IE5GVF9TRVRfRUxFTV9JTlRFUlZBTF9FTkQpIHsKJiM0MzsJCWlmICghaW50ZXJ2YWwtJmd0O3RvKQomIzQzOwkJCXJldHVybiBOVUxMOwomIzQzOwogCQlyYmUgPSBjb250YWluZXJfb2YoaW50ZXJ2YWwtJmd0O3RvLCBzdHJ1Y3QgbmZ0X3JidHJlZV9lbGVtLCBleHQpOwotCWVsc2UKJiM0MzsJfSBlbHNlIHsKIAkJcmJlID0gY29udGFpbmVyX29mKGludGVydmFsLSZndDtmcm9tLCBzdHJ1Y3QgbmZ0X3JidHJlZV9lbGVtLCBleHQpOwomIzQzOwl9CiAKIAlyZXR1cm4gJmFtcDtyYmUtJmd0O3ByaXY7CiB9CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL3h0X2Nvbm5tYXJrLmMgYi9uZXQvbmV0ZmlsdGVyL3h0X2Nvbm5tYXJrLmMKaW5kZXggNDI3NzA4NGRlMmU3MGMuLjJjZjI3ZjdkNTliOTVmIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL3h0X2Nvbm5tYXJrLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25ldGZpbHRlci94dF9jb25ubWFyay5jCkBAIC0xMTIsNiAmIzQzOzExMiwxNiBAQCBzdGF0aWMgaW50IGNvbm5tYXJrX3RnX2NoZWNrKGNvbnN0IHN0cnVjdCB4dF90Z2Noa19wYXJhbSAqcGFyKQogCXJldHVybiByZXQ7CiB9CiAKJiM0MztzdGF0aWMgaW50IGNvbm5tYXJrX3RnX2NoZWNrX3YyKGNvbnN0IHN0cnVjdCB4dF90Z2Noa19wYXJhbSAqcGFyKQomIzQzO3sKJiM0MzsJY29uc3Qgc3RydWN0IHh0X2Nvbm5tYXJrX3RnaW5mbzIgKmluZm8gPSBwYXItJmd0O3RhcmdpbmZvOwomIzQzOwomIzQzOwlpZiAoaW5mby0mZ3Q7c2hpZnRfZGlyICZndDsgRF9TSElGVF9SSUdIVCB8fCBpbmZvLSZndDtzaGlmdF9iaXRzICZndDs9IDMyKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CXJldHVybiBjb25ubWFya190Z19jaGVjayhwYXIpOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIGNvbm5tYXJrX3RnX2Rlc3Ryb3koY29uc3Qgc3RydWN0IHh0X3RnZHRvcl9wYXJhbSAqcGFyKQogewogCW5mX2N0X25ldG5zX3B1dChwYXItJmd0O25ldCwgcGFyLSZndDtmYW1pbHkpOwpAQCAtMTYyLDcgJiM0MzsxNzIsNyBAQCBzdGF0aWMgc3RydWN0IHh0X3RhcmdldCBjb25ubWFya190Z19yZWdbXSBfX3JlYWRfbW9zdGx5ID0gewogCQkubmFtZSAgICAgICAgICAgPSAmIzM0O0NPTk5NQVJLJiMzNDssCiAJCS5yZXZpc2lvbiAgICAgICA9IDIsCiAJCS5mYW1pbHkgICAgICAgICA9IE5GUFJPVE9fSVBWNCwKLQkJLmNoZWNrZW50cnkgICAgID0gY29ubm1hcmtfdGdfY2hlY2ssCiYjNDM7CQkuY2hlY2tlbnRyeSAgICAgPSBjb25ubWFya190Z19jaGVja192MiwKIAkJLnRhcmdldCAgICAgICAgID0gY29ubm1hcmtfdGdfdjIsCiAJCS50YXJnZXRzaXplICAgICA9IHNpemVvZihzdHJ1Y3QgeHRfY29ubm1hcmtfdGdpbmZvMiksCiAJCS5kZXN0cm95ICAgICAgICA9IGNvbm5tYXJrX3RnX2Rlc3Ryb3ksCkBAIC0xODMsNyAmIzQzOzE5Myw3IEBAIHN0YXRpYyBzdHJ1Y3QgeHRfdGFyZ2V0IGNvbm5tYXJrX3RnX3JlZ1tdIF9fcmVhZF9tb3N0bHkgPSB7CiAJCS5uYW1lICAgICAgICAgICA9ICYjMzQ7Q09OTk1BUksmIzM0OywKIAkJLnJldmlzaW9uICAgICAgID0gMiwKIAkJLmZhbWlseSAgICAgICAgID0gTkZQUk9UT19JUFY2LAotCQkuY2hlY2tlbnRyeSAgICAgPSBjb25ubWFya190Z19jaGVjaywKJiM0MzsJCS5jaGVja2VudHJ5ICAgICA9IGNvbm5tYXJrX3RnX2NoZWNrX3YyLAogCQkudGFyZ2V0ICAgICAgICAgPSBjb25ubWFya190Z192MiwKIAkJLnRhcmdldHNpemUgICAgID0gc2l6ZW9mKHN0cnVjdCB4dF9jb25ubWFya190Z2luZm8yKSwKIAkJLmRlc3Ryb3kgICAgICAgID0gY29ubm1hcmtfdGdfZGVzdHJveSwKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIveHRfcmF0ZWVzdC5jIGIvbmV0L25ldGZpbHRlci94dF9yYXRlZXN0LmMKaW5kZXggYjFkNzM2YzE1ZmNiZTUuLjdjMDViNjM0MjU3ODRlIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL3h0X3JhdGVlc3QuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL3h0X3JhdGVlc3QuYwpAQCAtMTYsNyAmIzQzOzE2LDcgQEAgeHRfcmF0ZWVzdF9tdChjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpCiB7CiAJY29uc3Qgc3RydWN0IHh0X3JhdGVlc3RfbWF0Y2hfaW5mbyAqaW5mbyA9IHBhci0mZ3Q7bWF0Y2hpbmZvOwogCXN0cnVjdCBnbmV0X3N0YXRzX3JhdGVfZXN0NjQgc2FtcGxlID0gezB9OwotCXVfaW50MzJfdCBicHMxLCBicHMyLCBwcHMxLCBwcHMyOwomIzQzOwl1NjQgYnBzMSwgYnBzMiwgcHBzMSwgcHBzMjsKIAlib29sIHJldCA9IHRydWU7CiAKIAlnZW5fZXN0aW1hdG9yX3JlYWQoJmFtcDtpbmZvLSZndDtlc3QxLSZndDtyYXRlX2VzdCwgJmFtcDtzYW1wbGUpOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci94dF91MzIuYyBiL25ldC9uZXRmaWx0ZXIveHRfdTMyLmMKaW5kZXggMTE3ZDQ2MTVkNjY4NGMuLmVjMWEyMWUzYjZlMmMzIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL3h0X3UzMi5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIveHRfdTMyLmMKQEAgLTEwMCw3ICYjNDM7MTAwLDcgQEAgc3RhdGljIGludCB1MzJfbXRfY2hlY2tlbnRyeShjb25zdCBzdHJ1Y3QgeHRfbXRjaGtfcGFyYW0gKnBhcikKIHsKIAljb25zdCBzdHJ1Y3QgeHRfdTMyICpkYXRhID0gcGFyLSZndDttYXRjaGluZm87CiAJY29uc3Qgc3RydWN0IHh0X3UzMl90ZXN0ICpjdDsKLQl1bnNpZ25lZCBpbnQgaTsKJiM0MzsJdW5zaWduZWQgaW50IGksIGo7CiAKIAlpZiAoZGF0YS0mZ3Q7bnRlc3RzICZndDsgQVJSQVlfU0laRShkYXRhLSZndDt0ZXN0cykpCiAJCXJldHVybiAtRUlOVkFMOwpAQCAtMTExLDYgJiM0MzsxMTEsMTYgQEAgc3RhdGljIGludCB1MzJfbXRfY2hlY2tlbnRyeShjb25zdCBzdHJ1Y3QgeHRfbXRjaGtfcGFyYW0gKnBhcikKIAkJaWYgKGN0LSZndDtubnVtcyAmZ3Q7IEFSUkFZX1NJWkUoY3QtJmd0O2xvY2F0aW9uKSB8fAogCQkgICAgY3QtJmd0O252YWx1ZXMgJmd0OyBBUlJBWV9TSVpFKGN0LSZndDt2YWx1ZSkpCiAJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKJiM0MzsJCWZvciAoaiA9IDE7IGogJmx0OyBjdC0mZ3Q7bm51bXM7ICYjNDM7JiM0MztqKSB7CiYjNDM7CQkJc3dpdGNoIChjdC0mZ3Q7bG9jYXRpb25bal0ubmV4dG9wKSB7CiYjNDM7CQkJY2FzZSBYVF9VMzJfTEVGVFNIOgomIzQzOwkJCWNhc2UgWFRfVTMyX1JJR0hUU0g6CiYjNDM7CQkJCWlmIChjdC0mZ3Q7bG9jYXRpb25bal0ubnVtYmVyICZndDs9IDMyKQomIzQzOwkJCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCX0KJiM0MzsJCX0KIAl9CiAKIAlyZXR1cm4gMDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTM6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTYxMwoJCQkJCQkJb3V0cHV0OiAzNzAKCQkJCQkJCXRob3VnaHRzOiAxMDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldGZpbHRlciBQYXRjaCBTZXJpZXMqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggc2VyaWVzIGhlcmUsIGFuZCBpdCYjMzk7cyB0b3VjaGluZyBxdWl0ZSBhIGZldyBmaWxlcyBzY2F0dGVyZWQgYWNyb3NzIGBuZXQvaXB2Ni9uZXRmaWx0ZXIvYCBhbmQgYG5ldC9uZXRmaWx0ZXIvYC4gTG9va3MgbGlrZSBhIG5ldGZpbHRlciBidWdmaXggYm9uYW56YSwgc3Bhbm5pbmcgYSB3aWRlIHJhbmdlIG9mIGZ1bmN0aW9uYWxpdHkuIExldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgpGaXJzdCB1cCwgdGhlIGNoYW5nZXMgaW4gYGlwNnRfYWguY2AsIGBpcDZ0X2hiaC5jYCwgYW5kIGBpcDZ0X3J0LmNgIGFsbCBzZWVtIHRvIGJlIGFwcGx5aW5nIHRoZSBgaG90ZHJvcCA9IHRydWVgIHdoZW4gZGVhbGluZyB3aXRoIHNtYWxsZXIgdGhhbiBleHBlY3RlZCBwYWNrZXRzLCB3aGljaCBtYWtlcyBzZW5zZS4gQWx3YXlzIGdvb2QgdG8gaGF2ZSB0aGF0IHNhZmV0eSBjaGVjay4gVGhlbiwgYGlwX3ZzX2Nvbm4uY2AgaGFzIGEgc2ltcGxlIGBtZW1zZXRgIHRvIHplcm8gb3V0IHRoZSBzZXEgc3RydWN0IGluIHRoZSByaWdodCBsb2NhdGlvbi4gYGlwX3ZzX2NvcmUuY2AgaGFzIGFuIE1UVSBjYWxjdWxhdGlvbiBmaXgsIG1ha2luZyBzdXJlIGB1bGVuYCBpcyBwYXJ0IG9mIHRoZSBjYWxjdWxhdGlvbi4KCk5vdywgYG5mX25hdF9zaXAuY2AgaGFzIHNvbWUgU0lQIE5BVCBtYW5nbGluZyBmaXhlcywgd2hpY2ggaW5jbHVkZSBib3VuZHMgY2hlY2tzIGZvciBgZG9mZiAmbHQ7PSAwYCBhbmQgcHJvdG9jb2wgY2hlY2tpbmcsIG1ha2luZyBzdXJlIGl0IGlzIG5vdCBVRFAuIGBuZl90YWJsZXNfYXBpLmNgIGlzIGdldHRpbmcgYSBudWxsIGNoZWNrIGluIGBuZnRfZ2V0X3NldF9lbGVtYCB0byBwcm90ZWN0IGZyb20gYSBwb3NzaWJsZSBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UuIGBuZm5ldGxpbmtfY3RoZWxwZXIuY2Agbm93IGhhcyBhIGBtYXhfZXhwZWN0ZWRgIGRlZmF1bHQuIGBuZnRfc2V0X3JidHJlZS5jYCBoYXMgYSBudWxsIGNoZWNrIGFzIHdlbGwgaW4gYG5mdF9yYnRyZWVfZ2V0YC4KCkluIGB4dF9jb25ubWFyay5jYCwgd2UmIzM5O3JlIGdldHRpbmcgYSBgY29ubm1hcmtfdGdfY2hlY2tfdjJgIGZ1bmN0aW9uIHRvIHZhbGlkYXRlIGBzaGlmdF9kaXJgIGFuZCBgc2hpZnRfYml0c2AsIHdoaWNoIGlzIHNtYXJ0LiBPbiB0byBgeHRfcmF0ZWVzdC5jYCwgd2hlcmUgd2Ugc2VlIGEgY2hhbmdlIGZyb20gYHVfaW50MzJfdGAgdG8gYHU2NGAgZm9yIGBicHMxYCwgYGJwczJgLCBgcHBzMWAsIGFuZCBgcHBzMmAuIFRoYXTigJlzIGEgc2lnbmlmaWNhbnQgc2l6ZSBpbmNyZWFzZSB0byBoYW5kbGUgcG9zc2libGUgb3ZlcmZsb3cgaW4gdGhlIG9yaWdpbmFsIGNvZGUuIEFuZCBmaW5hbGx5LCBgeHRfdTMyLmNgIGhhcyBhIGNoZWNrIGZvciBgY3QtJmd0O2xvY2F0aW9uW2pdLm51bWJlciAmZ3Q7PSAzMmAgZm9yIGBYVF9VMzJfTEVGVFNIYCBhbmQgYFhUX1UzMl9SSUdIVFNIYCwgcHJldmVudGluZyBhIGJhZCBtZW1vcnkgYWNjZXNzLgoKT3ZlcmFsbCwgYSBnb29kIGNvbGxlY3Rpb24gb2YgZnVuY3Rpb25hbCBpbXByb3ZlbWVudHMgaW4gdGhlIG5ldGZpbHRlciBhbmQgSVBWUyBhcmVhcy4gRGVmaW5pdGVseSB3b3J0aCBzb21lIHNlcmlvdXMgZnV6emluZywgZXNwZWNpYWxseSBnaXZlbiB0aGUgcmFuZ2Ugb2YgY29tcG9uZW50cyBpbnZvbHZlZC4KClJpZ2h0LCBzbyB0byBtYWtlIHRoaXMgZnV6emluZyBjYW1wYWlnbiBlZmZlY3RpdmUsIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgcmVsZXZhbnQgQ09ORklHIG9wdGlvbnMuIEkgY2FuIHNlZSB0aGUgZm9sbG93aW5nIGFyZSBrZXk6IGBJUF9WU2AsIGBORl9OQVRfU0lQYCwgYE5GX1RBQkxFU2AsIGBORVRGSUxURVJfWFRfTUFUQ0hfVTMyYCwgYE5FVEZJTFRFUl9YVF9UQVJHRVRfQ09OTk1BUktgLCBgTkVURklMVEVSX1hUX01BVENIX1JBVEVFU1RgLCBgSVA2X05GX01BVENIX0FIYCwgYElQNl9ORl9NQVRDSF9IQkhgLCBgSVA2X05GX01BVENIX1JUYCwgYW5kIGBORl9DVF9ORVRMSU5LX0hFTFBFUmAuCgpJIHNob3VsZCBhbHNvIGZvY3VzIG9uIHNvbWUgc3BlY2lmaWMgc3ltYm9scywgd2hpY2ggSSYjMzk7dmUgaWRlbnRpZmllZCBhczogYGFoX210NmAsIGBoYmhfbXQ2YCwgYHJ0X210NmAsIGBpcF92c19jb25uX25ld2AsIGBpcF92c19pbl9pY21wYCwgYG5mX25hdF9zaXBgLCBgbmZ0X2dldF9zZXRfZWxlbWAsIGBuZm5sX2N0aGVscGVyX3VwZGF0ZV9wb2xpY3lfb25lYCwgYG5mdF9yYnRyZWVfZ2V0YCwgYGNvbm5tYXJrX3RnX2NoZWNrX3YyYCwgYHh0X3JhdGVlc3RfbXRgLCBhbmQgYHUzMl9tdF9jaGVja2VudHJ5YC4gSSB3aWxsIGRvdWJsZSBjaGVjayB0aGUgY29uZmlnIG9wdGlvbnMgYXMgd2VsbCB0byBtYWtlIHN1cmUgSSBkaWQgbm90IG1pc3MgYW55LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUDZfTkZfTUFUQ0hfQUgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZz05Mz1pZiBJUDZfTkZfSVBUQUJMRVNcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy05NS0jIFRoZSBzaW1wbGUgbWF0Y2hlcy5cbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjk2OmNvbmZpZyBJUDZfTkZfTUFUQ0hfQUhcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTk3LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDthaFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUDZfTkZfTUFUQ0hfSEJIJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUDZfTkZfTUFUQ0hfUlQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZz0xNTg9Y29uZmlnIElQNl9ORl9NQVRDSF9SUEZJTFRFUlxuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTE2OC1cbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjE2OTpjb25maWcgSVA2X05GX01BVENIX1JUXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xNzAtXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O3J0XCYjMzQ7IFJvdXRpbmcgaGVhZGVyIG1hdGNoIHN1cHBvcnQmIzM5O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX05BVF9TSVAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTM6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX05BVF9TSVAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTQyNj1jb25maWcgTkZfTkFUX0lSQ1xuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzAtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDMxOmNvbmZpZyBORl9OQVRfU0lQXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDMyLVx0dHJpc3RhdGVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVURklMVEVSX1hUX01BVENIX1UzMiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9MTYyMz1jb25maWcgTkVURklMVEVSX1hUX01BVENIX1RJTUVcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTYzNi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjM3OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfVTMyXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTYzOC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7dTMyXCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9DT05OTUFSSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9ODI3PWNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0NMQVNTSUZZXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTgzOC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo4Mzk6Y29uZmlnIE5FVEZJTFRFUl9YVF9UQVJHRVRfQ09OTk1BUktcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy04NDAtXHR0cmlzdGF0ZSAgJiMzOTtcJiMzNDtDT05OTUFSS1wmIzM0OyB0YXJnZXQgc3VwcG9ydCYjMzk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfUkFURUVTVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9MTUwNz1jb25maWcgTkVURklMVEVSX1hUX01BVENIX1FVT1RBXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTE1MTYtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTUxNzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1JBVEVFU1Rcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNTE4LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtyYXRlZXN0XCYjMzQ7IG1hdGNoIHN1cHBvcnQmIzM5O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMzoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfQ1RfTkVUTElOS19IRUxQRVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTM3Mz1jb25maWcgTkZfQ1RfTkVUTElOS19USU1FT1VUXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTM4NC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozODU6Y29uZmlnIE5GX0NUX05FVExJTktfSEVMUEVSXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzg2LVx0dHJpc3RhdGUgJiMzOTtDb25uZWN0aW9uIHRyYWNraW5nIGhlbHBlcnMgaW4gdXNlci1zcGFjZSB2aWEgTmV0bGluayYjMzk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEzOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9WUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTQtI1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NTptZW51Y29uZmlnIElQX1ZTXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy02LVx0dHJpc3RhdGUgXCYjMzQ7SVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICYjMzk7SVBWUyBTSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg3LVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMjg5LVx0aW50IFwmIzM0O0lQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVwmIzM0O1xuLS1cbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICYjMzk7SVBWUyBNSCBzY2hlZHVsZXImIzM5O1xubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctMzAyLVxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTMwNC1cdGludCBcJiMzNDtJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODA4CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBhcyBpZiB0aGV5JiMzOTtyZSBteSBvd246CgoqKkRpdmluZyBCYWNrIGludG8gSVB2NiBIb3AtYnktSG9wIE9wdGlvbnMqKgoKUmlnaHQsIHRpbWUgdG8gY2lyY2xlIGJhY2sgdG8gYElQNl9ORl9NQVRDSF9IQkhgLiBJJiMzOTt2ZSBiZWVuIHdvcmtpbmcgd2l0aCBJUHY2IGZvciBsb25nIGVub3VnaCB0byBoYXZlIGEgZ29vZCBoYW5kbGUgb24gdGhpbmdzLCBidXQgSSYjMzk7dmUgbGVhcm5lZCB0aGF0IGEgc29saWQgdW5kZXJzdGFuZGluZyByZXF1aXJlcyBjb25zdGFudCByZXZpZXcsIHBhcnRpY3VsYXJseSB3aXRoIHRob3NlIG1vcmUgY29tcGxleCBhcmVhcy4gV2l0aCBteSBleHBlcmllbmNlLCBJIHRlbmQgdG8gcmV2aWV3IGRldGFpbHMgdGhhdCBjb3VsZCBjYXVzZSBpc3N1ZXMuIFNvLCBsZXQgbWUganVzdCByZXZpc2l0IHRoZSBjb2RlIHJlbGF0ZWQgdG8gdGhhdCBzcGVjaWZpYyBtYXRjaCwgbWFrZSBzdXJlIEkgaGF2ZSBhIGdvb2QgZ3Jhc3Agb2YgdGhlIGNvcm5lciBjYXNlcywgcmVmcmVzaCBteSBtZW1vcnkgb24gYW55IHJlY2VudCBkaXNjdXNzaW9ucyBhcm91bmQgaXQsIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgbnVhbmNlcyBJIG1pZ2h0IGhhdmUgbWlzc2VkLiBBIHNlY29uZCBsb29rIGF0IHRoYXQgY29kZSBpcyBwcm9iYWJseSBvdmVyZHVlLiBJdCYjMzk7cyB0b28gZWFzeSB0byBhc3N1bWUgZmFtaWxpYXJpdHkgYW5kIG92ZXJsb29rIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgb3Igb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEzOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUDZfTkZfTUFUQ0hfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc9OTM9aWYgSVA2X05GX0lQVEFCTEVTXG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctOTUtIyBUaGUgc2ltcGxlIG1hdGNoZXMuXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZzo5Njpjb25maWcgSVA2X05GX01BVENIX0FIXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy05Ny1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7YWhcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTAzLVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc6MTA0OmNvbmZpZyBJUDZfTkZfTUFUQ0hfRVVJNjRcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTEwNS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7ZXVpNjRcJiMzNDsgYWRkcmVzcyBjaGVjayYjMzk7XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTEzLVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc6MTE0OmNvbmZpZyBJUDZfTkZfTUFUQ0hfRlJBR1xubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTE1LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtmcmFnXCYjMzQ7IEZyYWdtZW50YXRpb24gaGVhZGVyIG1hdGNoIHN1cHBvcnQmIzM5O1xuLS1cbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTEyMi1cbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjEyMzpjb25maWcgSVA2X05GX01BVENIX09QVFNcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTEyNC1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7aGJoXCYjMzQ7IGhvcC1ieS1ob3AgYW5kIFwmIzM0O2RzdFwmIzM0OyBvcHRzIGhlYWRlciBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xMzEtXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZzoxMzI6Y29uZmlnIElQNl9ORl9NQVRDSF9ITFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTMzLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtobFwmIzM0OyBob3BsaW1pdCBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xNDAtXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZzoxNDE6Y29uZmlnIElQNl9ORl9NQVRDSF9JUFY2SEVBREVSXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xNDItXHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2lwdjZoZWFkZXJcJiMzNDsgSVB2NiBFeHRlbnNpb24gSGVhZGVycyBNYXRjaCYjMzk7XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTQ5LVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc6MTUwOmNvbmZpZyBJUDZfTkZfTUFUQ0hfTUhcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTE1MS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7bWhcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4tLVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTU3LVxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc6MTU4OmNvbmZpZyBJUDZfTkZfTUFUQ0hfUlBGSUxURVJcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTE1OS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7cnBmaWx0ZXJcJiMzNDsgcmV2ZXJzZSBwYXRoIGZpbHRlciBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xNjgtXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZzoxNjk6Y29uZmlnIElQNl9ORl9NQVRDSF9SVFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTcwLVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtydFwmIzM0OyBSb3V0aW5nIGhlYWRlciBtYXRjaCBzdXBwb3J0JiMzOTtcbi0tXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xNzctXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZzoxNzg6Y29uZmlnIElQNl9ORl9NQVRDSF9TUkhcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTE3OS1cdHRyaXN0YXRlICYjMzk7XCYjMzQ7c3JoXCYjMzQ7IFNlZ21lbnQgUm91dGluZyBoZWFkZXIgbWF0Y2ggc3VwcG9ydCYjMzk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEzOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk4MjAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipFeGFtaW5pbmcgSVB2NiBPcHRpb25zIGFuZCBTSVAgTkFUIGluIE5ldGZpbHRlcioqCgpSaWdodCwgc28gYElQNl9ORl9NQVRDSF9PUFRTYC4uLiB0aGF0JiMzOTtzIHNwZWNpZmljYWxseSBmb3IgaGFuZGxpbmcgaG9wLWJ5LWhvcCAoaGJoKSBhbmQgZGVzdGluYXRpb24gb3B0aW9ucywgcmlnaHQ/IEkgbmVlZCB0byBrZWVwIHRoYXQgc3RyYWlnaHQuIFRoZXNlIG9wdGlvbnMgaW4gSVB2NiBwYWNrZXRzIGNhbiBiZSB0cmlja3kuCgpOb3csIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRoaXMgdGllcyBpbnRvIE5BVCwgZXNwZWNpYWxseSB3aXRoIFNJUC4gTGV0JiMzOTtzIHNlZS4uLiBJIHNob3VsZCBjaGVjayBgTkZfVEFCTEVTYCBhbmQgdGhlbiBgTkZfTkFUX1NJUGAuIEFoLCByaWdodCwgYE5GX05BVF9TSVBgIGRlcGVuZHMgb24gYE5GX0NPTk5UUkFDS19TSVBgLiBUaGF0IGNvbm5lY3Rpb24gdHJhY2tpbmcgbW9kdWxlIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyBTSVAgdHJhZmZpYyBnZXRzIE5BVCYjMzk7ZC4gSSBzaG91bGQgcHJvYmFibHkgZGlnIGludG8gYE5GX0NPTk5UUkFDS19TSVBgIHRvIHNlZSB0aGUgZGV0YWlscyBvZiBob3cgaXQmIzM5O3MgaGFuZGxlZC4gTWFrZXMgc2Vuc2Ug4oCTIGNvbm5lY3Rpb24gdHJhY2tpbmcgYmVmb3JlIHRoZSBOQVQgb3BlcmF0aW9uLiBUaGlzIHNob3VsZCBjbGFyaWZ5IHRoZSBvdmVyYWxsIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAzIDEzOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORl9DT05OVFJBQ0tfU0lQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz0zMzA9Y29uZmlnIE5GX0NPTk5UUkFDS19TQU5FXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0Mi1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzozNDM6Y29uZmlnIE5GX0NPTk5UUkFDS19TSVBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zNDQtXHR0cmlzdGF0ZSBcJiMzNDtTSVAgcHJvdG9jb2wgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMzoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDIyMQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBLZXJuZWwgQ29uZmlndXJhdGlvbiBmb3IgU0lQIENvbm5lY3Rpb24gVHJhY2tpbmcqKgoKT2theSwgc28gSSYjMzk7bSBwcmV0dHkgc3VyZSB3ZSYjMzk7dmUgcGlubmVkIGRvd24gYE5GX0NPTk5UUkFDS19TSVBgIGFzIHRoZSBjcml0aWNhbCBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgdGhlIFNJUCBjb25uZWN0aW9uIHRyYWNraW5nIG1vZHVsZS4gVGhhdCYjMzk7cyBnb29kLCBidXQgbGV0JiMzOTtzIG5vdCBqdW1wIHRvIGNvbmNsdXNpb25zLiBJdCYjMzk7cyBhbHdheXMgd2lzZSB0byBiZSB0aG9yb3VnaCwgZXNwZWNpYWxseSB3aXRoIHRoZSBrZXJuZWwuCgpOb3csIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBgTkZfVEFCTEVTYCBpcyBlbmFibGVkLiBJdCYjMzk7cyBvZnRlbiBhIGRlcGVuZGVuY3ksIGFuZCBhIGZvdW5kYXRpb25hbCBlbGVtZW50IGZvciBoYW5kbGluZyBuZXR3b3JrIHRhYmxlcyBlZmZlY3RpdmVseS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIHVuZGVybHlpbmcgaW5mcmFzdHJ1Y3R1cmUgaXMgcHJlc2VudCBhbmQgYWNjb3VudGVkIGZvciB0byB2YWxpZGF0ZSB0aGlzIGNob2ljZS4gV2UgbmVlZCB0byBidWlsZCBvdXIgc3RyYXRlZ3kgdXBvbiBhIHNvbGlkIGJhc2UsIGRvbiYjMzk7dCB3ZT8gTGV0JiMzOTtzIHRha2UgYSBsb29rLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMyAxMzoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZfVEFCTEVTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz00NTM9ZW5kaWYgIyBORl9DT05OVFJBQ0tcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NTQtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NDU1OmNvbmZpZyBORl9UQUJMRVNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NTYtXHRzZWxlY3QgTkVURklMVEVSX05FVExJTktcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9NDcxPWlmIE5GX1RBQkxFU1xubmV0L25ldGZpbHRlci9LY29uZmlnOjQ3Mjpjb25maWcgTkZfVEFCTEVTX0lORVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NzMtXHRkZXBlbmRzIG9uIElQVjZcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDc5LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ4MDpjb25maWcgTkZfVEFCTEVTX05FVERFVlxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ4MS1cdGJvb2wgXCYjMzQ7TmV0ZmlsdGVyIG5mX3RhYmxlcyBuZXRkZXYgdGFibGVzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTM6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2NDAKCQkJCQkJCW91dHB1dDogMzAxCgkJCQkJCQl0aG91Z2h0czogNTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE5ldGZpbHRlciBhbmQgSVBWUyBQYXRjaCBTZXJpZXMqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggc2VyaWVzIGFuZCB0aGlua2luZyB0aHJvdWdoIHRoZSBpbXBsaWNhdGlvbnMgZm9yIGZ1enppbmcuIEZpcnN0LCBJIHNlZSBhIHNldCBvZiBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBhcmUgcmVsZXZhbnQ6IGBJUF9WU2AsIGBORl9DT05OVFJBQ0tfU0lQYCwgYE5GX1RBQkxFU2AsIGBORVRGSUxURVJfWFRfTUFUQ0hfVTMyYCwgYE5FVEZJTFRFUl9YVF9UQVJHRVRfQ09OTk1BUktgLCBgTkVURklMVEVSX1hUX01BVENIX1JBVEVFU1RgLCBgSVA2X05GX01BVENIX0FIYCwgYElQNl9ORl9NQVRDSF9PUFRTYCwgYElQNl9ORl9NQVRDSF9SVGAsIGFuZCBgTkZfQ1RfTkVUTElOS19IRUxQRVJgLiBUaGVzZSBhcmUgYWxsIGNydWNpYWwgZm9yIGVuYWJsaW5nIHRoZSBmZWF0dXJlcyB0aGUgcGF0Y2hlcyBhcmUgdGFyZ2V0aW5nLCBzbyB0aGV5JiMzOTtsbCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRlc3RpbmcuCgpOb3csIEkgbmVlZCB0byBmb2N1cyBvbiB0aGUga2V5IHN5bWJvbHMsIHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgYmVpbmcgbW9kaWZpZWQgb3IgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgYnVnIGZpeGVzOiBgYWhfbXQ2YCwgYGhiaF9tdDZgLCBgcnRfbXQ2YCwgYGlwX3ZzX2Nvbm5fbmV3YCwgYGlwX3ZzX2luX2ljbXBgLCBgbmZfbmF0X3NpcGAsIGBuZnRfZ2V0X3NldF9lbGVtYCwgYG5mbmxfY3RoZWxwZXJfdXBkYXRlX3BvbGljeV9vbmVgLCBgbmZ0X3JidHJlZV9nZXRgLCBgY29ubm1hcmtfdGdfY2hlY2tfdjJgLCBgeHRfcmF0ZWVzdF9tdGAsIGFuZCBgdTMyX210X2NoZWNrZW50cnlgLgoKTGV0JiMzOTtzIHNlZSwgYGNvbm5tYXJrX3RnX2NoZWNrX3YyYCwgeWVzLCB0aGF0JiMzOTtzIGEgY2hlY2tlbnRyeSBmdW5jdGlvbiwgZ29vZC4gQW5kIGBpcF92c19jb25uX25ld2AsIGFoLCB0aGlzIGlzIHRoZSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgbmV3IElQVlMgY29ubmVjdGlvbnMuIEFsc28sIGBpcF92c19pbl9pY21wYCBpcyBpbnZvbHZlZCB3aGVuIGhhbmRsaW5nIElDTVAgcGFja2V0cyBmb3IgSVBWUy4gTmF0dXJhbGx5LCBgbmZfbmF0X3NpcGAgaXMga2V5IHdoZW4gd2UgTkFUIFNJUCBwYWNrZXRzLCBvYnZpb3VzbHkuIE5vdywgYG5mdF9nZXRfc2V0X2VsZW1gIGFuZCBgbmZubF9jdGhlbHBlcl91cGRhdGVfcG9saWN5X29uZWAgYXJlIG5ldGxpbmstcmVsYXRlZCwgYW5kIGBuZnRfcmJ0cmVlX2dldGAgaXMgaW52b2x2ZWQgd2l0aCBuZnRhYmxlcyBzZXRzLiBgeHRfcmF0ZWVzdF9tdGAgaXMgdXNlZCBmb3IgbWF0Y2hpbmcgcGFja2V0cyBhbmQgYHUzMl9tdF9jaGVja2VudHJ5YCBpcyByZWFjaGVkIHdoZW4gYWRkaW5nIGEgcnVsZS4KClRoZSBlc3NlbnRpYWwgcG9pbnQgaGVyZSBpcyB0aGF0ICphbGwqIG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGFuZCByZXByZXNlbnQgcmVhbCBmdW5jdGlvbmFsIGNoYW5nZXMgd2l0aGluIHRoZSBuZXRmaWx0ZXIgYW5kIElQVlMgc3Vic3lzdGVtcy4gVGhlIHBhdGNoIHNlcmllcyBkaXJlY3RseSBhZGRyZXNzZXMgYnVncyBsaWtlIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBhbmQgaW5jb3JyZWN0IE1UVSBjYWxjdWxhdGlvbnMuIFRoZXJlZm9yZSwgYSBmdXp6ZXIgbmVlZHMgdG8gZXhwbG9yZSB0aGVzZSBjb2RlIHBhdGhzIGFnZ3Jlc3NpdmVseSB0byBlbnN1cmUgdGhhdCB0aGUgZml4ZXMgYXJlIHJvYnVzdCBhbmQgdGhhdCBubyBuZXcgcmVncmVzc2lvbnMgYXJlIGludHJvZHVjZWQuIFRoZSBmdXp6aW5nIGNhbXBhaWduIHNob3VsZCBhYnNvbHV0ZWx5IHRhcmdldCB0aGVzZSBhcmVhcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDMgMTM6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19TSVAmIzM0OywKICAgICYjMzQ7TkZfVEFCTEVTJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUl9YVF9NQVRDSF9VMzImIzM0OywKICAgICYjMzQ7TkVURklMVEVSX1hUX1RBUkdFVF9DT05OTUFSSyYjMzQ7LAogICAgJiMzNDtORVRGSUxURVJfWFRfTUFUQ0hfUkFURUVTVCYjMzQ7LAogICAgJiMzNDtJUDZfTkZfTUFUQ0hfQUgmIzM0OywKICAgICYjMzQ7SVA2X05GX01BVENIX09QVFMmIzM0OywKICAgICYjMzQ7SVA2X05GX01BVENIX1JUJiMzNDssCiAgICAmIzM0O05GX0NUX05FVExJTktfSEVMUEVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWhfbXQ2JiMzNDssCiAgICAmIzM0O2hiaF9tdDYmIzM0OywKICAgICYjMzQ7cnRfbXQ2JiMzNDssCiAgICAmIzM0O2lwX3ZzX2Nvbm5fbmV3JiMzNDssCiAgICAmIzM0O2lwX3ZzX2luX2ljbXAmIzM0OywKICAgICYjMzQ7bmZfbmF0X3NpcCYjMzQ7LAogICAgJiMzNDtuZnRfZ2V0X3NldF9lbGVtJiMzNDssCiAgICAmIzM0O25mbmxfY3RoZWxwZXJfdXBkYXRlX3BvbGljeV9vbmUmIzM0OywKICAgICYjMzQ7bmZ0X3JidHJlZV9nZXQmIzM0OywKICAgICYjMzQ7Y29ubm1hcmtfdGdfY2hlY2tfdjImIzM0OywKICAgICYjMzQ7eHRfcmF0ZWVzdF9tdCYjMzQ7LAogICAgJiMzNDt1MzJfbXRfY2hlY2tlbnRyeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoaXMgcGF0Y2ggc2VyaWVzIGZpeGVzIG11bHRpcGxlIGJ1Z3MgaW4gbmV0ZmlsdGVyIGFuZCBJUFZTIGNvbXBvbmVudHMsIGluY2x1ZGluZyBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1bmluaXRpYWxpemVkIG1lbW9yeSwgYW5kIGluY29ycmVjdCBNVFUgY2FsY3VsYXRpb25zLiBGdXp6aW5nIHRoZXNlIHBhdGhzIHdpbGwgaGVscCBlbnN1cmUgdGhlIGZpeGVzIGFyZSByb2J1c3QgYW5kIGRvbiYjMzk7dCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1ZTJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDS19TSVAmIzM0OywKICAgICYjMzQ7TkZfVEFCTEVTJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUl9YVF9NQVRDSF9VMzImIzM0OywKICAgICYjMzQ7TkVURklMVEVSX1hUX1RBUkdFVF9DT05OTUFSSyYjMzQ7LAogICAgJiMzNDtORVRGSUxURVJfWFRfTUFUQ0hfUkFURUVTVCYjMzQ7LAogICAgJiMzNDtJUDZfTkZfTUFUQ0hfQUgmIzM0OywKICAgICYjMzQ7SVA2X05GX01BVENIX09QVFMmIzM0OywKICAgICYjMzQ7SVA2X05GX01BVENIX1JUJiMzNDssCiAgICAmIzM0O05GX0NUX05FVExJTktfSEVMUEVSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWhfbXQ2JiMzNDssCiAgICAmIzM0O2hiaF9tdDYmIzM0OywKICAgICYjMzQ7cnRfbXQ2JiMzNDssCiAgICAmIzM0O2lwX3ZzX2Nvbm5fbmV3JiMzNDssCiAgICAmIzM0O2lwX3ZzX2luX2ljbXAmIzM0OywKICAgICYjMzQ7bmZfbmF0X3NpcCYjMzQ7LAogICAgJiMzNDtuZnRfZ2V0X3NldF9lbGVtJiMzNDssCiAgICAmIzM0O25mbmxfY3RoZWxwZXJfdXBkYXRlX3BvbGljeV9vbmUmIzM0OywKICAgICYjMzQ7bmZ0X3JidHJlZV9nZXQmIzM0OywKICAgICYjMzQ7Y29ubm1hcmtfdGdfY2hlY2tfdjImIzM0OywKICAgICYjMzQ7eHRfcmF0ZWVzdF9tdCYjMzQ7LAogICAgJiMzNDt1MzJfbXRfY2hlY2tlbnRyeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoaXMgcGF0Y2ggc2VyaWVzIGZpeGVzIG11bHRpcGxlIGJ1Z3MgaW4gbmV0ZmlsdGVyIGFuZCBJUFZTIGNvbXBvbmVudHMsIGluY2x1ZGluZyBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1bmluaXRpYWxpemVkIG1lbW9yeSwgYW5kIGluY29ycmVjdCBNVFUgY2FsY3VsYXRpb25zLiBGdXp6aW5nIHRoZXNlIHBhdGhzIHdpbGwgaGVscCBlbnN1cmUgdGhlIGZpeGVzIGFyZSByb2J1c3QgYW5kIGRvbiYjMzk7dCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMzoxODo0MS4zMDMzNjA2OTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTMyMzQ0MTgyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9WU1wiLFxuICAgIFwiTkZfQ09OTlRSQUNLX1NJUFwiLFxuICAgIFwiTkZfVEFCTEVTXCIsXG4gICAgXCJORVRGSUxURVJfWFRfTUFUQ0hfVTMyXCIsXG4gICAgXCJORVRGSUxURVJfWFRfVEFSR0VUX0NPTk5NQVJLXCIsXG4gICAgXCJORVRGSUxURVJfWFRfTUFUQ0hfUkFURUVTVFwiLFxuICAgIFwiSVA2X05GX01BVENIX0FIXCIsXG4gICAgXCJJUDZfTkZfTUFUQ0hfT1BUU1wiLFxuICAgIFwiSVA2X05GX01BVENIX1JUXCIsXG4gICAgXCJORl9DVF9ORVRMSU5LX0hFTFBFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFoX210NlwiLFxuICAgIFwiaGJoX210NlwiLFxuICAgIFwicnRfbXQ2XCIsXG4gICAgXCJpcF92c19jb25uX25ld1wiLFxuICAgIFwiaXBfdnNfaW5faWNtcFwiLFxuICAgIFwibmZfbmF0X3NpcFwiLFxuICAgIFwibmZ0X2dldF9zZXRfZWxlbVwiLFxuICAgIFwibmZubF9jdGhlbHBlcl91cGRhdGVfcG9saWN5X29uZVwiLFxuICAgIFwibmZ0X3JidHJlZV9nZXRcIixcbiAgICBcImNvbm5tYXJrX3RnX2NoZWNrX3YyXCIsXG4gICAgXCJ4dF9yYXRlZXN0X210XCIsXG4gICAgXCJ1MzJfbXRfY2hlY2tlbnRyeVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhpcyBwYXRjaCBzZXJpZXMgZml4ZXMgbXVsdGlwbGUgYnVncyBpbiBuZXRmaWx0ZXIgYW5kIElQVlMgY29tcG9uZW50cywgaW5jbHVkaW5nIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBhbmQgaW5jb3JyZWN0IE1UVSBjYWxjdWxhdGlvbnMuIEZ1enppbmcgdGhlc2UgcGF0aHMgd2lsbCBoZWxwIGVuc3VyZSB0aGUgZml4ZXMgYXJlIHJvYnVzdCBhbmQgZG9uJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMzoxODo0MS4zMDMzNjg2ODlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4OTI2MTI0OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyZTNmMGY2M2VmZmQ3MWVkNDBkZDZiZTRmMWVkYzE5MjM2YWI0YThjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDMgMTM6MTg6MzkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfYWguYyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2FoLmNcXG5pbmRleCA3MGRhMmYyY2UwNjRjYS4uMTI1ODc4M2VkODc2MjkgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfYWguY1xcbisrKyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2FoLmNcXG5AQCAtNTYsNiArNTYsMTEgQEAgc3RhdGljIGJvb2wgYWhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcXG4gXFx0fVxcbiBcXG4gXFx0aGRybGVuID0gaXB2Nl9hdXRobGVuKGFoKTtcXG4rXFx0aWYgKHNrYi1cXHUwMDNlbGVuIC0gcHRyIFxcdTAwM2MgaGRybGVuKSB7XFxuK1xcdFxcdC8qIFBhY2tldCBzbWFsbGVyIHRoYW4gaXRzIGxlbmd0aCBmaWVsZCAqL1xcbitcXHRcXHRwYXItXFx1MDAzZWhvdGRyb3AgPSB0cnVlO1xcbitcXHRcXHRyZXR1cm4gZmFsc2U7XFxuK1xcdH1cXG4gXFxuIFxcdHByX2RlYnVnKFxcXCJJUHY2IEFIIExFTiAldSAldSBcXFwiLCBoZHJsZW4sIGFoLVxcdTAwM2VoZHJsZW4pO1xcbiBcXHRwcl9kZWJ1ZyhcXFwiUkVTICUwNFggXFxcIiwgYWgtXFx1MDAzZXJlc2VydmVkKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguY1xcbmluZGV4IDQ1MGRkNTM4NDZhMmY3Li42ZDFhNWQyMDI2YTY3OCAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguY1xcbisrKyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jXFxuQEAgLTc1LDYgKzc1LDcgQEAgaGJoX210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuIFxcdGhkcmxlbiA9IGlwdjZfb3B0bGVuKG9oKTtcXG4gXFx0aWYgKHNrYi1cXHUwMDNlbGVuIC0gcHRyIFxcdTAwM2MgaGRybGVuKSB7XFxuIFxcdFxcdC8qIFBhY2tldCBzbWFsbGVyIHRoYW4gaXQncyBsZW5ndGggZmllbGQgKi9cXG4rXFx0XFx0cGFyLVxcdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9ydC5jIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfcnQuY1xcbmluZGV4IDU1NjFiZDljZWE4MTg1Li4yNzhiNTI3NTJmMzY0NSAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9ydC5jXFxuKysrIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfcnQuY1xcbkBAIC01Niw3ICs1Niw4IEBAIHN0YXRpYyBib29sIHJ0X210Nihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuIFxcbiBcXHRoZHJsZW4gPSBpcHY2X29wdGxlbihyaCk7XFxuIFxcdGlmIChza2ItXFx1MDAzZWxlbiAtIHB0ciBcXHUwMDNjIGhkcmxlbikge1xcbi1cXHRcXHQvKiBQY2tldCBzbWFsbGVyIHRoYW4gaXRzIGxlbmd0aCBmaWVsZCAqL1xcbitcXHRcXHQvKiBQYWNrZXQgc21hbGxlciB0aGFuIGl0cyBsZW5ndGggZmllbGQgKi9cXG4rXFx0XFx0cGFyLVxcdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXHR9XFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xcbmluZGV4IGNiMzY2NDFmOGQxY2MxLi42ZWQyNjIyMzYzZjBkNiAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uY1xcbkBAIC0xNDIwLDggKzE0MjAsOCBAQCBpcF92c19jb25uX25ldyhjb25zdCBzdHJ1Y3QgaXBfdnNfY29ubl9wYXJhbSAqcCwgaW50IGRlc3RfYWYsXFxuIFxcdGNwLVxcdTAwM2VhcHAgPSBOVUxMO1xcbiBcXHRjcC1cXHUwMDNlYXBwX2RhdGEgPSBOVUxMO1xcbiBcXHQvKiByZXNldCBzdHJ1Y3QgaXBfdnNfc2VxICovXFxuLVxcdGNwLVxcdTAwM2Vpbl9zZXEuZGVsdGEgPSAwO1xcbi1cXHRjcC1cXHUwMDNlb3V0X3NlcS5kZWx0YSA9IDA7XFxuK1xcdG1lbXNldChcXHUwMDI2Y3AtXFx1MDAzZWluX3NlcSwgMCwgc2l6ZW9mKGNwLVxcdTAwM2Vpbl9zZXEpKTtcXG4rXFx0bWVtc2V0KFxcdTAwMjZjcC1cXHUwMDNlb3V0X3NlcSwgMCwgc2l6ZW9mKGNwLVxcdTAwM2VvdXRfc2VxKSk7XFxuIFxcbiBcXHRpZiAodW5saWtlbHkoZmxhZ3MgXFx1MDAyNiBJUF9WU19DT05OX0ZfTk9fQ1BPUlQpKSB7XFxuIFxcdFxcdGludCBhZl9pZCA9IGlwX3ZzX2FmX2luZGV4KGNwLVxcdTAwM2VhZik7XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXFxuaW5kZXggZDQwYjQwNGMxYmY2NDYuLjkwNmYyYzM2MTY3NjM4IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXFxuQEAgLTE3NjcsNiArMTc2Nyw3IEBAIGlwX3ZzX2luX2ljbXAoc3RydWN0IG5ldG5zX2lwdnMgKmlwdnMsIHN0cnVjdCBza19idWZmICpza2IsIGludCAqcmVsYXRlZCxcXG4gXFx0Ym9vbCB0dW5uZWwsIG5ld19jcCA9IGZhbHNlO1xcbiBcXHR1bmlvbiBuZl9pbmV0X2FkZHIgKnJhZGRyO1xcbiBcXHRjaGFyICpvdXRlcl9wcm90byA9IFxcXCJJUElQXFxcIjtcXG4rXFx0aW50IHVsZW4gPSAwO1xcbiBcXG4gXFx0KnJlbGF0ZWQgPSAxO1xcbiBcXG5AQCAtMTgzMSw3ICsxODMyLDYgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxcbiBcXHRcXHQgICAvKiBFcnJvciBmb3Igb3VyIHR1bm5lbCBtdXN0IGFycml2ZSBhdCBMT0NBTF9JTiAqL1xcbiBcXHRcXHQgICAoc2tiX3J0YWJsZShza2IpLVxcdTAwM2VydF9mbGFncyBcXHUwMDI2IFJUQ0ZfTE9DQUwpKSB7XFxuIFxcdFxcdF9fdTggaXByb3RvO1xcbi1cXHRcXHRpbnQgdWxlbjtcXG4gXFxuIFxcdFxcdC8qIE5vbi1maXJzdCBmcmFnbWVudCBoYXMgbm8gVURQL0dSRSBoZWFkZXIgKi9cXG4gXFx0XFx0aWYgKHVubGlrZWx5KGNpaC1cXHUwMDNlZnJhZ19vZmYgXFx1MDAyNiBodG9ucyhJUF9PRkZTRVQpKSlcXG5AQCAtMTkzNiw4ICsxOTM2LDggQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxcbiBcXHRcXHRcXHRcXHRpZiAoZGVzdF9kc3QpXFxuIFxcdFxcdFxcdFxcdFxcdG10dSA9IGRzdF9tdHUoZGVzdF9kc3QtXFx1MDAzZWRzdF9jYWNoZSk7XFxuIFxcdFxcdFxcdH1cXG4tXFx0XFx0XFx0aWYgKG10dSBcXHUwMDNlIDY4ICsgc2l6ZW9mKHN0cnVjdCBpcGhkcikpXFxuLVxcdFxcdFxcdFxcdG10dSAtPSBzaXplb2Yoc3RydWN0IGlwaGRyKTtcXG4rXFx0XFx0XFx0aWYgKG10dSBcXHUwMDNlIDY4ICsgc2l6ZW9mKHN0cnVjdCBpcGhkcikgKyB1bGVuKVxcbitcXHRcXHRcXHRcXHRtdHUgLT0gc2l6ZW9mKHN0cnVjdCBpcGhkcikgKyB1bGVuO1xcbiBcXHRcXHRcXHRpbmZvID0gaHRvbmwobXR1KTtcXG4gXFx0XFx0fVxcbiBcXHRcXHQvKiBTdHJpcCBvdXRlciBJUCwgSUNNUCBhbmQgSVBJUC9VRFAvR1JFLCBnbyB0byBJUCBoZWFkZXIgb2ZcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmMgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF9zaXAuY1xcbmluZGV4IDY3YzA0ZDgxNDNhYjkxLi5hZWEwMmY2YWZmMDkyYSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX25hdF9zaXAuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3NpcC5jXFxuQEAgLTI4OSwxMyArMjg5LDI0IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfbmF0X3NpcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcXG4gXFxuIFxcdC8qIE1hbmdsZSBkZXN0aW5hdGlvbiBwb3J0IGZvciBDaXNjbyBwaG9uZXMsIHRoZW4gZml4IHVwIGNoZWNrc3VtcyAqL1xcbiBcXHRpZiAoZGlyID09IElQX0NUX0RJUl9SRVBMWSBcXHUwMDI2XFx1MDAyNiBjdF9zaXBfaW5mby1cXHUwMDNlZm9yY2VkX2Rwb3J0KSB7XFxuK1xcdFxcdGludCBkb2ZmID0gKmRwdHIgLSAoY29uc3QgY2hhciAqKXNrYi1cXHUwMDNlZGF0YTtcXG4gXFx0XFx0c3RydWN0IHVkcGhkciAqdWg7XFxuIFxcbitcXHRcXHRpZiAoZG9mZiBcXHUwMDNjPSAwKSB7XFxuK1xcdFxcdFxcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XFxuK1xcdFxcdFxcdHJldHVybiBORl9EUk9QO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHQvKiBjdF9zaXBfaW5mby1cXHUwMDNlZm9yY2VkX2Rwb3J0IG9ubHkgZXhwZWN0ZWQgd2l0aCBVRFAgKi9cXG4rXFx0XFx0aWYgKG5mX2N0X3Byb3RvbnVtKGN0KSAhPSBJUFBST1RPX1VEUClcXG4rXFx0XFx0XFx0cmV0dXJuIE5GX0RST1A7XFxuK1xcbiBcXHRcXHRpZiAoc2tiX2Vuc3VyZV93cml0YWJsZShza2IsIHNrYi1cXHUwMDNlbGVuKSkge1xcbiBcXHRcXHRcXHRuZl9jdF9oZWxwZXJfbG9nKHNrYiwgY3QsIFxcXCJjYW5ub3QgbWFuZ2xlIHBhY2tldFxcXCIpO1xcbiBcXHRcXHRcXHRyZXR1cm4gTkZfRFJPUDtcXG4gXFx0XFx0fVxcbiBcXG4rXFx0XFx0KmRwdHIgPSBza2ItXFx1MDAzZWRhdGEgKyBkb2ZmO1xcbiBcXHRcXHR1aCA9ICh2b2lkICopc2tiLVxcdTAwM2VkYXRhICsgcHJvdG9mZjtcXG4gXFx0XFx0dWgtXFx1MDAzZWRlc3QgPSBjdF9zaXBfaW5mby1cXHUwMDNlZm9yY2VkX2Rwb3J0O1xcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMgYi9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xcbmluZGV4IDQ4ODRmN2Y3YWFlZWUwLi5hOWVhZjk0NTVjNzc4MyAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXFxuQEAgLTY1NjMsNiArNjU2Myw5IEBAIHN0YXRpYyBpbnQgbmZ0X2dldF9zZXRfZWxlbShzdHJ1Y3QgbmZ0X2N0eCAqY3R4LCBjb25zdCBzdHJ1Y3QgbmZ0X3NldCAqc2V0LFxcbiBcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4gXFxuK1xcdGlmICghZWxlbS5wcml2KVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuIFxcdGVyciA9IC1FTk9NRU07XFxuIFxcdHNrYiA9IG5sbXNnX25ldyhOTE1TR19HT09EU0laRSwgR0ZQX0FUT01JQyk7XFxuIFxcdGlmIChza2IgPT0gTlVMTClcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfY3RoZWxwZXIuYyBiL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2N0aGVscGVyLmNcXG5pbmRleCAyY2JjY2E5MTEwZGJmNS4uZjA2MmFjMjEwMzQzMjkgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfY3RoZWxwZXIuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZuZXRsaW5rX2N0aGVscGVyLmNcXG5AQCAtMzE2LDYgKzMxNiw4IEBAIG5mbmxfY3RoZWxwZXJfdXBkYXRlX3BvbGljeV9vbmUoY29uc3Qgc3RydWN0IG5mX2Nvbm50cmFja19leHBlY3RfcG9saWN5ICpwb2xpY3ksXFxuIFxcbiBcXHRuZXdfcG9saWN5LVxcdTAwM2VtYXhfZXhwZWN0ZWQgPVxcbiBcXHRcXHRudG9obChubGFfZ2V0X2JlMzIodGJbTkZDVEhfUE9MSUNZX0VYUEVDVF9NQVhdKSk7XFxuK1xcdGlmICghbmV3X3BvbGljeS1cXHUwMDNlbWF4X2V4cGVjdGVkKVxcbitcXHRcXHRuZXdfcG9saWN5LVxcdTAwM2VtYXhfZXhwZWN0ZWQgPSBORl9DVF9FWFBFQ1RfTUFYX0NOVDtcXG4gXFx0aWYgKG5ld19wb2xpY3ktXFx1MDAzZW1heF9leHBlY3RlZCBcXHUwMDNlIE5GX0NUX0VYUEVDVF9NQVhfQ05UKVxcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZ0X3NldF9yYnRyZWUuYyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3NldF9yYnRyZWUuY1xcbmluZGV4IDAxOGJiYjZkZjRjZTQzLi42MjIyZTliYjU3YmM5MCAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mdF9zZXRfcmJ0cmVlLmNcXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mdF9zZXRfcmJ0cmVlLmNcXG5AQCAtMTg0LDEwICsxODQsMTQgQEAgbmZ0X3JidHJlZV9nZXQoY29uc3Qgc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3QgbmZ0X3NldCAqc2V0LFxcbiBcXHRpZiAoIWludGVydmFsIHx8IG5mdF9zZXRfZWxlbV9leHBpcmVkKGludGVydmFsLVxcdTAwM2Vmcm9tKSlcXG4gXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT0VOVCk7XFxuIFxcbi1cXHRpZiAoZmxhZ3MgXFx1MDAyNiBORlRfU0VUX0VMRU1fSU5URVJWQUxfRU5EKVxcbitcXHRpZiAoZmxhZ3MgXFx1MDAyNiBORlRfU0VUX0VMRU1fSU5URVJWQUxfRU5EKSB7XFxuK1xcdFxcdGlmICghaW50ZXJ2YWwtXFx1MDAzZXRvKVxcbitcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFxuIFxcdFxcdHJiZSA9IGNvbnRhaW5lcl9vZihpbnRlcnZhbC1cXHUwMDNldG8sIHN0cnVjdCBuZnRfcmJ0cmVlX2VsZW0sIGV4dCk7XFxuLVxcdGVsc2VcXG4rXFx0fSBlbHNlIHtcXG4gXFx0XFx0cmJlID0gY29udGFpbmVyX29mKGludGVydmFsLVxcdTAwM2Vmcm9tLCBzdHJ1Y3QgbmZ0X3JidHJlZV9lbGVtLCBleHQpO1xcbitcXHR9XFxuIFxcbiBcXHRyZXR1cm4gXFx1MDAyNnJiZS1cXHUwMDNlcHJpdjtcXG4gfVxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL3h0X2Nvbm5tYXJrLmMgYi9uZXQvbmV0ZmlsdGVyL3h0X2Nvbm5tYXJrLmNcXG5pbmRleCA0Mjc3MDg0ZGUyZTcwYy4uMmNmMjdmN2Q1OWI5NWYgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci94dF9jb25ubWFyay5jXFxuKysrIGIvbmV0L25ldGZpbHRlci94dF9jb25ubWFyay5jXFxuQEAgLTExMiw2ICsxMTIsMTYgQEAgc3RhdGljIGludCBjb25ubWFya190Z19jaGVjayhjb25zdCBzdHJ1Y3QgeHRfdGdjaGtfcGFyYW0gKnBhcilcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG4rc3RhdGljIGludCBjb25ubWFya190Z19jaGVja192Mihjb25zdCBzdHJ1Y3QgeHRfdGdjaGtfcGFyYW0gKnBhcilcXG4re1xcbitcXHRjb25zdCBzdHJ1Y3QgeHRfY29ubm1hcmtfdGdpbmZvMiAqaW5mbyA9IHBhci1cXHUwMDNldGFyZ2luZm87XFxuK1xcbitcXHRpZiAoaW5mby1cXHUwMDNlc2hpZnRfZGlyIFxcdTAwM2UgRF9TSElGVF9SSUdIVCB8fCBpbmZvLVxcdTAwM2VzaGlmdF9iaXRzIFxcdTAwM2U9IDMyKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdHJldHVybiBjb25ubWFya190Z19jaGVjayhwYXIpO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBjb25ubWFya190Z19kZXN0cm95KGNvbnN0IHN0cnVjdCB4dF90Z2R0b3JfcGFyYW0gKnBhcilcXG4ge1xcbiBcXHRuZl9jdF9uZXRuc19wdXQocGFyLVxcdTAwM2VuZXQsIHBhci1cXHUwMDNlZmFtaWx5KTtcXG5AQCAtMTYyLDcgKzE3Miw3IEBAIHN0YXRpYyBzdHJ1Y3QgeHRfdGFyZ2V0IGNvbm5tYXJrX3RnX3JlZ1tdIF9fcmVhZF9tb3N0bHkgPSB7XFxuIFxcdFxcdC5uYW1lICAgICAgICAgICA9IFxcXCJDT05OTUFSS1xcXCIsXFxuIFxcdFxcdC5yZXZpc2lvbiAgICAgICA9IDIsXFxuIFxcdFxcdC5mYW1pbHkgICAgICAgICA9IE5GUFJPVE9fSVBWNCxcXG4tXFx0XFx0LmNoZWNrZW50cnkgICAgID0gY29ubm1hcmtfdGdfY2hlY2ssXFxuK1xcdFxcdC5jaGVja2VudHJ5ICAgICA9IGNvbm5tYXJrX3RnX2NoZWNrX3YyLFxcbiBcXHRcXHQudGFyZ2V0ICAgICAgICAgPSBjb25ubWFya190Z192MixcXG4gXFx0XFx0LnRhcmdldHNpemUgICAgID0gc2l6ZW9mKHN0cnVjdCB4dF9jb25ubWFya190Z2luZm8yKSxcXG4gXFx0XFx0LmRlc3Ryb3kgICAgICAgID0gY29ubm1hcmtfdGdfZGVzdHJveSxcXG5AQCAtMTgzLDcgKzE5Myw3IEBAIHN0YXRpYyBzdHJ1Y3QgeHRfdGFyZ2V0IGNvbm5tYXJrX3RnX3JlZ1tdIF9fcmVhZF9tb3N0bHkgPSB7XFxuIFxcdFxcdC5uYW1lICAgICAgICAgICA9IFxcXCJDT05OTUFSS1xcXCIsXFxuIFxcdFxcdC5yZXZpc2lvbiAgICAgICA9IDIsXFxuIFxcdFxcdC5mYW1pbHkgICAgICAgICA9IE5GUFJPVE9fSVBWNixcXG4tXFx0XFx0LmNoZWNrZW50cnkgICAgID0gY29ubm1hcmtfdGdfY2hlY2ssXFxuK1xcdFxcdC5jaGVja2VudHJ5ICAgICA9IGNvbm5tYXJrX3RnX2NoZWNrX3YyLFxcbiBcXHRcXHQudGFyZ2V0ICAgICAgICAgPSBjb25ubWFya190Z192MixcXG4gXFx0XFx0LnRhcmdldHNpemUgICAgID0gc2l6ZW9mKHN0cnVjdCB4dF9jb25ubWFya190Z2luZm8yKSxcXG4gXFx0XFx0LmRlc3Ryb3kgICAgICAgID0gY29ubm1hcmtfdGdfZGVzdHJveSxcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci94dF9yYXRlZXN0LmMgYi9uZXQvbmV0ZmlsdGVyL3h0X3JhdGVlc3QuY1xcbmluZGV4IGIxZDczNmMxNWZjYmU1Li43YzA1YjYzNDI1Nzg0ZSAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL3h0X3JhdGVlc3QuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIveHRfcmF0ZWVzdC5jXFxuQEAgLTE2LDcgKzE2LDcgQEAgeHRfcmF0ZWVzdF9tdChjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeHRfYWN0aW9uX3BhcmFtICpwYXIpXFxuIHtcXG4gXFx0Y29uc3Qgc3RydWN0IHh0X3JhdGVlc3RfbWF0Y2hfaW5mbyAqaW5mbyA9IHBhci1cXHUwMDNlbWF0Y2hpbmZvO1xcbiBcXHRzdHJ1Y3QgZ25ldF9zdGF0c19yYXRlX2VzdDY0IHNhbXBsZSA9IHswfTtcXG4tXFx0dV9pbnQzMl90IGJwczEsIGJwczIsIHBwczEsIHBwczI7XFxuK1xcdHU2NCBicHMxLCBicHMyLCBwcHMxLCBwcHMyO1xcbiBcXHRib29sIHJldCA9IHRydWU7XFxuIFxcbiBcXHRnZW5fZXN0aW1hdG9yX3JlYWQoXFx1MDAyNmluZm8tXFx1MDAzZWVzdDEtXFx1MDAzZXJhdGVfZXN0LCBcXHUwMDI2c2FtcGxlKTtcXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci94dF91MzIuYyBiL25ldC9uZXRmaWx0ZXIveHRfdTMyLmNcXG5pbmRleCAxMTdkNDYxNWQ2Njg0Yy4uZWMxYTIxZTNiNmUyYzMgMTAwNjQ0XFxuLS0tIGEvbmV0L25ldGZpbHRlci94dF91MzIuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIveHRfdTMyLmNcXG5AQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBpbnQgdTMyX210X2NoZWNrZW50cnkoY29uc3Qgc3RydWN0IHh0X210Y2hrX3BhcmFtICpwYXIpXFxuIHtcXG4gXFx0Y29uc3Qgc3RydWN0IHh0X3UzMiAqZGF0YSA9IHBhci1cXHUwMDNlbWF0Y2hpbmZvO1xcbiBcXHRjb25zdCBzdHJ1Y3QgeHRfdTMyX3Rlc3QgKmN0O1xcbi1cXHR1bnNpZ25lZCBpbnQgaTtcXG4rXFx0dW5zaWduZWQgaW50IGksIGo7XFxuIFxcbiBcXHRpZiAoZGF0YS1cXHUwMDNlbnRlc3RzIFxcdTAwM2UgQVJSQVlfU0laRShkYXRhLVxcdTAwM2V0ZXN0cykpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbkBAIC0xMTEsNiArMTExLDE2IEBAIHN0YXRpYyBpbnQgdTMyX210X2NoZWNrZW50cnkoY29uc3Qgc3RydWN0IHh0X210Y2hrX3BhcmFtICpwYXIpXFxuIFxcdFxcdGlmIChjdC1cXHUwMDNlbm51bXMgXFx1MDAzZSBBUlJBWV9TSVpFKGN0LVxcdTAwM2Vsb2NhdGlvbikgfHxcXG4gXFx0XFx0ICAgIGN0LVxcdTAwM2VudmFsdWVzIFxcdTAwM2UgQVJSQVlfU0laRShjdC1cXHUwMDNldmFsdWUpKVxcbiBcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdFxcdGZvciAoaiA9IDE7IGogXFx1MDAzYyBjdC1cXHUwMDNlbm51bXM7ICsraikge1xcbitcXHRcXHRcXHRzd2l0Y2ggKGN0LVxcdTAwM2Vsb2NhdGlvbltqXS5uZXh0b3ApIHtcXG4rXFx0XFx0XFx0Y2FzZSBYVF9VMzJfTEVGVFNIOlxcbitcXHRcXHRcXHRjYXNlIFhUX1UzMl9SSUdIVFNIOlxcbitcXHRcXHRcXHRcXHRpZiAoY3QtXFx1MDAzZWxvY2F0aW9uW2pdLm51bWJlciBcXHUwMDNlPSAzMilcXG4rXFx0XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXG4gXFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEzOjE4OjQzLjE5Njc1NTkzNFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk0MzAwMzY5NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIixcbiAgICBcIk5GX0NPTk5UUkFDS19TSVBcIixcbiAgICBcIk5GX1RBQkxFU1wiLFxuICAgIFwiTkVURklMVEVSX1hUX01BVENIX1UzMlwiLFxuICAgIFwiTkVURklMVEVSX1hUX1RBUkdFVF9DT05OTUFSS1wiLFxuICAgIFwiTkVURklMVEVSX1hUX01BVENIX1JBVEVFU1RcIixcbiAgICBcIklQNl9ORl9NQVRDSF9BSFwiLFxuICAgIFwiSVA2X05GX01BVENIX09QVFNcIixcbiAgICBcIklQNl9ORl9NQVRDSF9SVFwiLFxuICAgIFwiTkZfQ1RfTkVUTElOS19IRUxQRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhaF9tdDZcIixcbiAgICBcImhiaF9tdDZcIixcbiAgICBcInJ0X210NlwiLFxuICAgIFwiaXBfdnNfY29ubl9uZXdcIixcbiAgICBcImlwX3ZzX2luX2ljbXBcIixcbiAgICBcIm5mX25hdF9zaXBcIixcbiAgICBcIm5mdF9nZXRfc2V0X2VsZW1cIixcbiAgICBcIm5mbmxfY3RoZWxwZXJfdXBkYXRlX3BvbGljeV9vbmVcIixcbiAgICBcIm5mdF9yYnRyZWVfZ2V0XCIsXG4gICAgXCJjb25ubWFya190Z19jaGVja192MlwiLFxuICAgIFwieHRfcmF0ZWVzdF9tdFwiLFxuICAgIFwidTMyX210X2NoZWNrZW50cnlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoaXMgcGF0Y2ggc2VyaWVzIGZpeGVzIG11bHRpcGxlIGJ1Z3MgaW4gbmV0ZmlsdGVyIGFuZCBJUFZTIGNvbXBvbmVudHMsIGluY2x1ZGluZyBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1bmluaXRpYWxpemVkIG1lbW9yeSwgYW5kIGluY29ycmVjdCBNVFUgY2FsY3VsYXRpb25zLiBGdXp6aW5nIHRoZXNlIHBhdGhzIHdpbGwgaGVscCBlbnN1cmUgdGhlIGZpeGVzIGFyZSByb2J1c3QgYW5kIGRvbid0IGludHJvZHVjZSByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyZTNmMGY2M2VmZmQ3MWVkNDBkZDZiZTRmMWVkYzE5MjM2YWI0YThjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMyAxMzoxODozOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2FoLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9haC5jXG5pbmRleCA3MGRhMmYyY2UwNjRjYS4uMTI1ODc4M2VkODc2MjkgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9haC5jXG4rKysgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9haC5jXG5AQCAtNTYsNiArNTYsMTEgQEAgc3RhdGljIGJvb2wgYWhfbXQ2KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiBcdH1cbiBcbiBcdGhkcmxlbiA9IGlwdjZfYXV0aGxlbihhaCk7XG4rXHRpZiAoc2tiLVx1MDAzZWxlbiAtIHB0ciBcdTAwM2MgaGRybGVuKSB7XG4rXHRcdC8qIFBhY2tldCBzbWFsbGVyIHRoYW4gaXRzIGxlbmd0aCBmaWVsZCAqL1xuK1x0XHRwYXItXHUwMDNlaG90ZHJvcCA9IHRydWU7XG4rXHRcdHJldHVybiBmYWxzZTtcbitcdH1cbiBcbiBcdHByX2RlYnVnKFwiSVB2NiBBSCBMRU4gJXUgJXUgXCIsIGhkcmxlbiwgYWgtXHUwMDNlaGRybGVuKTtcbiBcdHByX2RlYnVnKFwiUkVTICUwNFggXCIsIGFoLVx1MDAzZXJlc2VydmVkKTtcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguYyBiL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X2hiaC5jXG5pbmRleCA0NTBkZDUzODQ2YTJmNy4uNmQxYTVkMjAyNmE2NzggMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9oYmguY1xuKysrIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNnRfaGJoLmNcbkBAIC03NSw2ICs3NSw3IEBAIGhiaF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFx0aGRybGVuID0gaXB2Nl9vcHRsZW4ob2gpO1xuIFx0aWYgKHNrYi1cdTAwM2VsZW4gLSBwdHIgXHUwMDNjIGhkcmxlbikge1xuIFx0XHQvKiBQYWNrZXQgc21hbGxlciB0aGFuIGl0J3MgbGVuZ3RoIGZpZWxkICovXG4rXHRcdHBhci1cdTAwM2Vob3Rkcm9wID0gdHJ1ZTtcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFx0fVxuIFxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZ0X3J0LmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9ydC5jXG5pbmRleCA1NTYxYmQ5Y2VhODE4NS4uMjc4YjUyNzUyZjM2NDUgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9ydC5jXG4rKysgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2dF9ydC5jXG5AQCAtNTYsNyArNTYsOCBAQCBzdGF0aWMgYm9vbCBydF9tdDYoY29uc3Qgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHh0X2FjdGlvbl9wYXJhbSAqcGFyKVxuIFxuIFx0aGRybGVuID0gaXB2Nl9vcHRsZW4ocmgpO1xuIFx0aWYgKHNrYi1cdTAwM2VsZW4gLSBwdHIgXHUwMDNjIGhkcmxlbikge1xuLVx0XHQvKiBQY2tldCBzbWFsbGVyIHRoYW4gaXRzIGxlbmd0aCBmaWVsZCAqL1xuK1x0XHQvKiBQYWNrZXQgc21hbGxlciB0aGFuIGl0cyBsZW5ndGggZmllbGQgKi9cbitcdFx0cGFyLVx1MDAzZWhvdGRyb3AgPSB0cnVlO1xuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXHR9XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcbmluZGV4IGNiMzY2NDFmOGQxY2MxLi42ZWQyNjIyMzYzZjBkNiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmNcbkBAIC0xNDIwLDggKzE0MjAsOCBAQCBpcF92c19jb25uX25ldyhjb25zdCBzdHJ1Y3QgaXBfdnNfY29ubl9wYXJhbSAqcCwgaW50IGRlc3RfYWYsXG4gXHRjcC1cdTAwM2VhcHAgPSBOVUxMO1xuIFx0Y3AtXHUwMDNlYXBwX2RhdGEgPSBOVUxMO1xuIFx0LyogcmVzZXQgc3RydWN0IGlwX3ZzX3NlcSAqL1xuLVx0Y3AtXHUwMDNlaW5fc2VxLmRlbHRhID0gMDtcbi1cdGNwLVx1MDAzZW91dF9zZXEuZGVsdGEgPSAwO1xuK1x0bWVtc2V0KFx1MDAyNmNwLVx1MDAzZWluX3NlcSwgMCwgc2l6ZW9mKGNwLVx1MDAzZWluX3NlcSkpO1xuK1x0bWVtc2V0KFx1MDAyNmNwLVx1MDAzZW91dF9zZXEsIDAsIHNpemVvZihjcC1cdTAwM2VvdXRfc2VxKSk7XG4gXG4gXHRpZiAodW5saWtlbHkoZmxhZ3MgXHUwMDI2IElQX1ZTX0NPTk5fRl9OT19DUE9SVCkpIHtcbiBcdFx0aW50IGFmX2lkID0gaXBfdnNfYWZfaW5kZXgoY3AtXHUwMDNlYWYpO1xuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG5pbmRleCBkNDBiNDA0YzFiZjY0Ni4uOTA2ZjJjMzYxNjc2MzggMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29yZS5jXG5AQCAtMTc2Nyw2ICsxNzY3LDcgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxuIFx0Ym9vbCB0dW5uZWwsIG5ld19jcCA9IGZhbHNlO1xuIFx0dW5pb24gbmZfaW5ldF9hZGRyICpyYWRkcjtcbiBcdGNoYXIgKm91dGVyX3Byb3RvID0gXCJJUElQXCI7XG4rXHRpbnQgdWxlbiA9IDA7XG4gXG4gXHQqcmVsYXRlZCA9IDE7XG4gXG5AQCAtMTgzMSw3ICsxODMyLDYgQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxuIFx0XHQgICAvKiBFcnJvciBmb3Igb3VyIHR1bm5lbCBtdXN0IGFycml2ZSBhdCBMT0NBTF9JTiAqL1xuIFx0XHQgICAoc2tiX3J0YWJsZShza2IpLVx1MDAzZXJ0X2ZsYWdzIFx1MDAyNiBSVENGX0xPQ0FMKSkge1xuIFx0XHRfX3U4IGlwcm90bztcbi1cdFx0aW50IHVsZW47XG4gXG4gXHRcdC8qIE5vbi1maXJzdCBmcmFnbWVudCBoYXMgbm8gVURQL0dSRSBoZWFkZXIgKi9cbiBcdFx0aWYgKHVubGlrZWx5KGNpaC1cdTAwM2VmcmFnX29mZiBcdTAwMjYgaHRvbnMoSVBfT0ZGU0VUKSkpXG5AQCAtMTkzNiw4ICsxOTM2LDggQEAgaXBfdnNfaW5faWNtcChzdHJ1Y3QgbmV0bnNfaXB2cyAqaXB2cywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50ICpyZWxhdGVkLFxuIFx0XHRcdFx0aWYgKGRlc3RfZHN0KVxuIFx0XHRcdFx0XHRtdHUgPSBkc3RfbXR1KGRlc3RfZHN0LVx1MDAzZWRzdF9jYWNoZSk7XG4gXHRcdFx0fVxuLVx0XHRcdGlmIChtdHUgXHUwMDNlIDY4ICsgc2l6ZW9mKHN0cnVjdCBpcGhkcikpXG4tXHRcdFx0XHRtdHUgLT0gc2l6ZW9mKHN0cnVjdCBpcGhkcik7XG4rXHRcdFx0aWYgKG10dSBcdTAwM2UgNjggKyBzaXplb2Yoc3RydWN0IGlwaGRyKSArIHVsZW4pXG4rXHRcdFx0XHRtdHUgLT0gc2l6ZW9mKHN0cnVjdCBpcGhkcikgKyB1bGVuO1xuIFx0XHRcdGluZm8gPSBodG9ubChtdHUpO1xuIFx0XHR9XG4gXHRcdC8qIFN0cmlwIG91dGVyIElQLCBJQ01QIGFuZCBJUElQL1VEUC9HUkUsIGdvIHRvIElQIGhlYWRlciBvZlxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3NpcC5jIGIvbmV0L25ldGZpbHRlci9uZl9uYXRfc2lwLmNcbmluZGV4IDY3YzA0ZDgxNDNhYjkxLi5hZWEwMmY2YWZmMDkyYSAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfbmF0X3NpcC5jXG4rKysgYi9uZXQvbmV0ZmlsdGVyL25mX25hdF9zaXAuY1xuQEAgLTI4OSwxMyArMjg5LDI0IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgbmZfbmF0X3NpcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBpbnQgcHJvdG9mZixcbiBcbiBcdC8qIE1hbmdsZSBkZXN0aW5hdGlvbiBwb3J0IGZvciBDaXNjbyBwaG9uZXMsIHRoZW4gZml4IHVwIGNoZWNrc3VtcyAqL1xuIFx0aWYgKGRpciA9PSBJUF9DVF9ESVJfUkVQTFkgXHUwMDI2XHUwMDI2IGN0X3NpcF9pbmZvLVx1MDAzZWZvcmNlZF9kcG9ydCkge1xuK1x0XHRpbnQgZG9mZiA9ICpkcHRyIC0gKGNvbnN0IGNoYXIgKilza2ItXHUwMDNlZGF0YTtcbiBcdFx0c3RydWN0IHVkcGhkciAqdWg7XG4gXG4rXHRcdGlmIChkb2ZmIFx1MDAzYz0gMCkge1xuK1x0XHRcdERFQlVHX05FVF9XQVJOX09OX09OQ0UoMSk7XG4rXHRcdFx0cmV0dXJuIE5GX0RST1A7XG4rXHRcdH1cbitcbitcdFx0LyogY3Rfc2lwX2luZm8tXHUwMDNlZm9yY2VkX2Rwb3J0IG9ubHkgZXhwZWN0ZWQgd2l0aCBVRFAgKi9cbitcdFx0aWYgKG5mX2N0X3Byb3RvbnVtKGN0KSAhPSBJUFBST1RPX1VEUClcbitcdFx0XHRyZXR1cm4gTkZfRFJPUDtcbitcbiBcdFx0aWYgKHNrYl9lbnN1cmVfd3JpdGFibGUoc2tiLCBza2ItXHUwMDNlbGVuKSkge1xuIFx0XHRcdG5mX2N0X2hlbHBlcl9sb2coc2tiLCBjdCwgXCJjYW5ub3QgbWFuZ2xlIHBhY2tldFwiKTtcbiBcdFx0XHRyZXR1cm4gTkZfRFJPUDtcbiBcdFx0fVxuIFxuK1x0XHQqZHB0ciA9IHNrYi1cdTAwM2VkYXRhICsgZG9mZjtcbiBcdFx0dWggPSAodm9pZCAqKXNrYi1cdTAwM2VkYXRhICsgcHJvdG9mZjtcbiBcdFx0dWgtXHUwMDNlZGVzdCA9IGN0X3NpcF9pbmZvLVx1MDAzZWZvcmNlZF9kcG9ydDtcbiBcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYyBiL25ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jXG5pbmRleCA0ODg0ZjdmN2FhZWVlMC4uYTllYWY5NDU1Yzc3ODMgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmNcbkBAIC02NTYzLDYgKzY1NjMsOSBAQCBzdGF0aWMgaW50IG5mdF9nZXRfc2V0X2VsZW0oc3RydWN0IG5mdF9jdHggKmN0eCwgY29uc3Qgc3RydWN0IG5mdF9zZXQgKnNldCxcbiBcdGlmIChlcnIgXHUwMDNjIDApXG4gXHRcdHJldHVybiBlcnI7XG4gXG4rXHRpZiAoIWVsZW0ucHJpdilcbitcdFx0cmV0dXJuIDA7XG4rXG4gXHRlcnIgPSAtRU5PTUVNO1xuIFx0c2tiID0gbmxtc2dfbmV3KE5MTVNHX0dPT0RTSVpFLCBHRlBfQVRPTUlDKTtcbiBcdGlmIChza2IgPT0gTlVMTClcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mbmV0bGlua19jdGhlbHBlci5jIGIvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfY3RoZWxwZXIuY1xuaW5kZXggMmNiY2NhOTExMGRiZjUuLmYwNjJhYzIxMDM0MzI5IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfY3RoZWxwZXIuY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZm5ldGxpbmtfY3RoZWxwZXIuY1xuQEAgLTMxNiw2ICszMTYsOCBAQCBuZm5sX2N0aGVscGVyX3VwZGF0ZV9wb2xpY3lfb25lKGNvbnN0IHN0cnVjdCBuZl9jb25udHJhY2tfZXhwZWN0X3BvbGljeSAqcG9saWN5LFxuIFxuIFx0bmV3X3BvbGljeS1cdTAwM2VtYXhfZXhwZWN0ZWQgPVxuIFx0XHRudG9obChubGFfZ2V0X2JlMzIodGJbTkZDVEhfUE9MSUNZX0VYUEVDVF9NQVhdKSk7XG4rXHRpZiAoIW5ld19wb2xpY3ktXHUwMDNlbWF4X2V4cGVjdGVkKVxuK1x0XHRuZXdfcG9saWN5LVx1MDAzZW1heF9leHBlY3RlZCA9IE5GX0NUX0VYUEVDVF9NQVhfQ05UO1xuIFx0aWYgKG5ld19wb2xpY3ktXHUwMDNlbWF4X2V4cGVjdGVkIFx1MDAzZSBORl9DVF9FWFBFQ1RfTUFYX0NOVClcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZnRfc2V0X3JidHJlZS5jIGIvbmV0L25ldGZpbHRlci9uZnRfc2V0X3JidHJlZS5jXG5pbmRleCAwMThiYmI2ZGY0Y2U0My4uNjIyMmU5YmI1N2JjOTAgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mdF9zZXRfcmJ0cmVlLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZ0X3NldF9yYnRyZWUuY1xuQEAgLTE4NCwxMCArMTg0LDE0IEBAIG5mdF9yYnRyZWVfZ2V0KGNvbnN0IHN0cnVjdCBuZXQgKm5ldCwgY29uc3Qgc3RydWN0IG5mdF9zZXQgKnNldCxcbiBcdGlmICghaW50ZXJ2YWwgfHwgbmZ0X3NldF9lbGVtX2V4cGlyZWQoaW50ZXJ2YWwtXHUwMDNlZnJvbSkpXG4gXHRcdHJldHVybiBFUlJfUFRSKC1FTk9FTlQpO1xuIFxuLVx0aWYgKGZsYWdzIFx1MDAyNiBORlRfU0VUX0VMRU1fSU5URVJWQUxfRU5EKVxuK1x0aWYgKGZsYWdzIFx1MDAyNiBORlRfU0VUX0VMRU1fSU5URVJWQUxfRU5EKSB7XG4rXHRcdGlmICghaW50ZXJ2YWwtXHUwMDNldG8pXG4rXHRcdFx0cmV0dXJuIE5VTEw7XG4rXG4gXHRcdHJiZSA9IGNvbnRhaW5lcl9vZihpbnRlcnZhbC1cdTAwM2V0bywgc3RydWN0IG5mdF9yYnRyZWVfZWxlbSwgZXh0KTtcbi1cdGVsc2VcbitcdH0gZWxzZSB7XG4gXHRcdHJiZSA9IGNvbnRhaW5lcl9vZihpbnRlcnZhbC1cdTAwM2Vmcm9tLCBzdHJ1Y3QgbmZ0X3JidHJlZV9lbGVtLCBleHQpO1xuK1x0fVxuIFxuIFx0cmV0dXJuIFx1MDAyNnJiZS1cdTAwM2Vwcml2O1xuIH1cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL3h0X2Nvbm5tYXJrLmMgYi9uZXQvbmV0ZmlsdGVyL3h0X2Nvbm5tYXJrLmNcbmluZGV4IDQyNzcwODRkZTJlNzBjLi4yY2YyN2Y3ZDU5Yjk1ZiAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIveHRfY29ubm1hcmsuY1xuKysrIGIvbmV0L25ldGZpbHRlci94dF9jb25ubWFyay5jXG5AQCAtMTEyLDYgKzExMiwxNiBAQCBzdGF0aWMgaW50IGNvbm5tYXJrX3RnX2NoZWNrKGNvbnN0IHN0cnVjdCB4dF90Z2Noa19wYXJhbSAqcGFyKVxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4rc3RhdGljIGludCBjb25ubWFya190Z19jaGVja192Mihjb25zdCBzdHJ1Y3QgeHRfdGdjaGtfcGFyYW0gKnBhcilcbit7XG4rXHRjb25zdCBzdHJ1Y3QgeHRfY29ubm1hcmtfdGdpbmZvMiAqaW5mbyA9IHBhci1cdTAwM2V0YXJnaW5mbztcbitcbitcdGlmIChpbmZvLVx1MDAzZXNoaWZ0X2RpciBcdTAwM2UgRF9TSElGVF9SSUdIVCB8fCBpbmZvLVx1MDAzZXNoaWZ0X2JpdHMgXHUwMDNlPSAzMilcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4rXHRyZXR1cm4gY29ubm1hcmtfdGdfY2hlY2socGFyKTtcbit9XG4rXG4gc3RhdGljIHZvaWQgY29ubm1hcmtfdGdfZGVzdHJveShjb25zdCBzdHJ1Y3QgeHRfdGdkdG9yX3BhcmFtICpwYXIpXG4ge1xuIFx0bmZfY3RfbmV0bnNfcHV0KHBhci1cdTAwM2VuZXQsIHBhci1cdTAwM2VmYW1pbHkpO1xuQEAgLTE2Miw3ICsxNzIsNyBAQCBzdGF0aWMgc3RydWN0IHh0X3RhcmdldCBjb25ubWFya190Z19yZWdbXSBfX3JlYWRfbW9zdGx5ID0ge1xuIFx0XHQubmFtZSAgICAgICAgICAgPSBcIkNPTk5NQVJLXCIsXG4gXHRcdC5yZXZpc2lvbiAgICAgICA9IDIsXG4gXHRcdC5mYW1pbHkgICAgICAgICA9IE5GUFJPVE9fSVBWNCxcbi1cdFx0LmNoZWNrZW50cnkgICAgID0gY29ubm1hcmtfdGdfY2hlY2ssXG4rXHRcdC5jaGVja2VudHJ5ICAgICA9IGNvbm5tYXJrX3RnX2NoZWNrX3YyLFxuIFx0XHQudGFyZ2V0ICAgICAgICAgPSBjb25ubWFya190Z192MixcbiBcdFx0LnRhcmdldHNpemUgICAgID0gc2l6ZW9mKHN0cnVjdCB4dF9jb25ubWFya190Z2luZm8yKSxcbiBcdFx0LmRlc3Ryb3kgICAgICAgID0gY29ubm1hcmtfdGdfZGVzdHJveSxcbkBAIC0xODMsNyArMTkzLDcgQEAgc3RhdGljIHN0cnVjdCB4dF90YXJnZXQgY29ubm1hcmtfdGdfcmVnW10gX19yZWFkX21vc3RseSA9IHtcbiBcdFx0Lm5hbWUgICAgICAgICAgID0gXCJDT05OTUFSS1wiLFxuIFx0XHQucmV2aXNpb24gICAgICAgPSAyLFxuIFx0XHQuZmFtaWx5ICAgICAgICAgPSBORlBST1RPX0lQVjYsXG4tXHRcdC5jaGVja2VudHJ5ICAgICA9IGNvbm5tYXJrX3RnX2NoZWNrLFxuK1x0XHQuY2hlY2tlbnRyeSAgICAgPSBjb25ubWFya190Z19jaGVja192MixcbiBcdFx0LnRhcmdldCAgICAgICAgID0gY29ubm1hcmtfdGdfdjIsXG4gXHRcdC50YXJnZXRzaXplICAgICA9IHNpemVvZihzdHJ1Y3QgeHRfY29ubm1hcmtfdGdpbmZvMiksXG4gXHRcdC5kZXN0cm95ICAgICAgICA9IGNvbm5tYXJrX3RnX2Rlc3Ryb3ksXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci94dF9yYXRlZXN0LmMgYi9uZXQvbmV0ZmlsdGVyL3h0X3JhdGVlc3QuY1xuaW5kZXggYjFkNzM2YzE1ZmNiZTUuLjdjMDViNjM0MjU3ODRlIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci94dF9yYXRlZXN0LmNcbisrKyBiL25ldC9uZXRmaWx0ZXIveHRfcmF0ZWVzdC5jXG5AQCAtMTYsNyArMTYsNyBAQCB4dF9yYXRlZXN0X210KGNvbnN0IHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4dF9hY3Rpb25fcGFyYW0gKnBhcilcbiB7XG4gXHRjb25zdCBzdHJ1Y3QgeHRfcmF0ZWVzdF9tYXRjaF9pbmZvICppbmZvID0gcGFyLVx1MDAzZW1hdGNoaW5mbztcbiBcdHN0cnVjdCBnbmV0X3N0YXRzX3JhdGVfZXN0NjQgc2FtcGxlID0gezB9O1xuLVx0dV9pbnQzMl90IGJwczEsIGJwczIsIHBwczEsIHBwczI7XG4rXHR1NjQgYnBzMSwgYnBzMiwgcHBzMSwgcHBzMjtcbiBcdGJvb2wgcmV0ID0gdHJ1ZTtcbiBcbiBcdGdlbl9lc3RpbWF0b3JfcmVhZChcdTAwMjZpbmZvLVx1MDAzZWVzdDEtXHUwMDNlcmF0ZV9lc3QsIFx1MDAyNnNhbXBsZSk7XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci94dF91MzIuYyBiL25ldC9uZXRmaWx0ZXIveHRfdTMyLmNcbmluZGV4IDExN2Q0NjE1ZDY2ODRjLi5lYzFhMjFlM2I2ZTJjMyAxMDA2NDRcbi0tLSBhL25ldC9uZXRmaWx0ZXIveHRfdTMyLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIveHRfdTMyLmNcbkBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGljIGludCB1MzJfbXRfY2hlY2tlbnRyeShjb25zdCBzdHJ1Y3QgeHRfbXRjaGtfcGFyYW0gKnBhcilcbiB7XG4gXHRjb25zdCBzdHJ1Y3QgeHRfdTMyICpkYXRhID0gcGFyLVx1MDAzZW1hdGNoaW5mbztcbiBcdGNvbnN0IHN0cnVjdCB4dF91MzJfdGVzdCAqY3Q7XG4tXHR1bnNpZ25lZCBpbnQgaTtcbitcdHVuc2lnbmVkIGludCBpLCBqO1xuIFxuIFx0aWYgKGRhdGEtXHUwMDNlbnRlc3RzIFx1MDAzZSBBUlJBWV9TSVpFKGRhdGEtXHUwMDNldGVzdHMpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbkBAIC0xMTEsNiArMTExLDE2IEBAIHN0YXRpYyBpbnQgdTMyX210X2NoZWNrZW50cnkoY29uc3Qgc3RydWN0IHh0X210Y2hrX3BhcmFtICpwYXIpXG4gXHRcdGlmIChjdC1cdTAwM2VubnVtcyBcdTAwM2UgQVJSQVlfU0laRShjdC1cdTAwM2Vsb2NhdGlvbikgfHxcbiBcdFx0ICAgIGN0LVx1MDAzZW52YWx1ZXMgXHUwMDNlIEFSUkFZX1NJWkUoY3QtXHUwMDNldmFsdWUpKVxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuK1xuK1x0XHRmb3IgKGogPSAxOyBqIFx1MDAzYyBjdC1cdTAwM2VubnVtczsgKytqKSB7XG4rXHRcdFx0c3dpdGNoIChjdC1cdTAwM2Vsb2NhdGlvbltqXS5uZXh0b3ApIHtcbitcdFx0XHRjYXNlIFhUX1UzMl9MRUZUU0g6XG4rXHRcdFx0Y2FzZSBYVF9VMzJfUklHSFRTSDpcbitcdFx0XHRcdGlmIChjdC1cdTAwM2Vsb2NhdGlvbltqXS5udW1iZXIgXHUwMDNlPSAzMilcbitcdFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdFx0XHRicmVhaztcbitcdFx0XHR9XG4rXHRcdH1cbiBcdH1cbiBcbiBcdHJldHVybiAwO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTM6MTg6NDMuMTk2NzU4MTU0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM4MDM1MDA5OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0ZmlsdGVyIFBhdGNoIFNlcmllcyoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggc2VyaWVzIGhlcmUsIGFuZCBpdCdzIHRvdWNoaW5nIHF1aXRlIGEgZmV3IGZpbGVzIHNjYXR0ZXJlZCBhY3Jvc3MgYG5ldC9pcHY2L25ldGZpbHRlci9gIGFuZCBgbmV0L25ldGZpbHRlci9gLiBMb29rcyBsaWtlIGEgbmV0ZmlsdGVyIGJ1Z2ZpeCBib25hbnphLCBzcGFubmluZyBhIHdpZGUgcmFuZ2Ugb2YgZnVuY3Rpb25hbGl0eS4gTGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG5GaXJzdCB1cCwgdGhlIGNoYW5nZXMgaW4gYGlwNnRfYWguY2AsIGBpcDZ0X2hiaC5jYCwgYW5kIGBpcDZ0X3J0LmNgIGFsbCBzZWVtIHRvIGJlIGFwcGx5aW5nIHRoZSBgaG90ZHJvcCA9IHRydWVgIHdoZW4gZGVhbGluZyB3aXRoIHNtYWxsZXIgdGhhbiBleHBlY3RlZCBwYWNrZXRzLCB3aGljaCBtYWtlcyBzZW5zZS4gQWx3YXlzIGdvb2QgdG8gaGF2ZSB0aGF0IHNhZmV0eSBjaGVjay4gVGhlbiwgYGlwX3ZzX2Nvbm4uY2AgaGFzIGEgc2ltcGxlIGBtZW1zZXRgIHRvIHplcm8gb3V0IHRoZSBzZXEgc3RydWN0IGluIHRoZSByaWdodCBsb2NhdGlvbi4gYGlwX3ZzX2NvcmUuY2AgaGFzIGFuIE1UVSBjYWxjdWxhdGlvbiBmaXgsIG1ha2luZyBzdXJlIGB1bGVuYCBpcyBwYXJ0IG9mIHRoZSBjYWxjdWxhdGlvbi5cblxuTm93LCBgbmZfbmF0X3NpcC5jYCBoYXMgc29tZSBTSVAgTkFUIG1hbmdsaW5nIGZpeGVzLCB3aGljaCBpbmNsdWRlIGJvdW5kcyBjaGVja3MgZm9yIGBkb2ZmIFx1MDAzYz0gMGAgYW5kIHByb3RvY29sIGNoZWNraW5nLCBtYWtpbmcgc3VyZSBpdCBpcyBub3QgVURQLiBgbmZfdGFibGVzX2FwaS5jYCBpcyBnZXR0aW5nIGEgbnVsbCBjaGVjayBpbiBgbmZ0X2dldF9zZXRfZWxlbWAgdG8gcHJvdGVjdCBmcm9tIGEgcG9zc2libGUgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlLiBgbmZuZXRsaW5rX2N0aGVscGVyLmNgIG5vdyBoYXMgYSBgbWF4X2V4cGVjdGVkYCBkZWZhdWx0LiBgbmZ0X3NldF9yYnRyZWUuY2AgaGFzIGEgbnVsbCBjaGVjayBhcyB3ZWxsIGluIGBuZnRfcmJ0cmVlX2dldGAuXG5cbkluIGB4dF9jb25ubWFyay5jYCwgd2UncmUgZ2V0dGluZyBhIGBjb25ubWFya190Z19jaGVja192MmAgZnVuY3Rpb24gdG8gdmFsaWRhdGUgYHNoaWZ0X2RpcmAgYW5kIGBzaGlmdF9iaXRzYCwgd2hpY2ggaXMgc21hcnQuIE9uIHRvIGB4dF9yYXRlZXN0LmNgLCB3aGVyZSB3ZSBzZWUgYSBjaGFuZ2UgZnJvbSBgdV9pbnQzMl90YCB0byBgdTY0YCBmb3IgYGJwczFgLCBgYnBzMmAsIGBwcHMxYCwgYW5kIGBwcHMyYC4gVGhhdOKAmXMgYSBzaWduaWZpY2FudCBzaXplIGluY3JlYXNlIHRvIGhhbmRsZSBwb3NzaWJsZSBvdmVyZmxvdyBpbiB0aGUgb3JpZ2luYWwgY29kZS4gQW5kIGZpbmFsbHksIGB4dF91MzIuY2AgaGFzIGEgY2hlY2sgZm9yIGBjdC1cdTAwM2Vsb2NhdGlvbltqXS5udW1iZXIgXHUwMDNlPSAzMmAgZm9yIGBYVF9VMzJfTEVGVFNIYCBhbmQgYFhUX1UzMl9SSUdIVFNIYCwgcHJldmVudGluZyBhIGJhZCBtZW1vcnkgYWNjZXNzLlxuXG5PdmVyYWxsLCBhIGdvb2QgY29sbGVjdGlvbiBvZiBmdW5jdGlvbmFsIGltcHJvdmVtZW50cyBpbiB0aGUgbmV0ZmlsdGVyIGFuZCBJUFZTIGFyZWFzLiBEZWZpbml0ZWx5IHdvcnRoIHNvbWUgc2VyaW91cyBmdXp6aW5nLCBlc3BlY2lhbGx5IGdpdmVuIHRoZSByYW5nZSBvZiBjb21wb25lbnRzIGludm9sdmVkLlxuXG5SaWdodCwgc28gdG8gbWFrZSB0aGlzIGZ1enppbmcgY2FtcGFpZ24gZWZmZWN0aXZlLCBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIHJlbGV2YW50IENPTkZJRyBvcHRpb25zLiBJIGNhbiBzZWUgdGhlIGZvbGxvd2luZyBhcmUga2V5OiBgSVBfVlNgLCBgTkZfTkFUX1NJUGAsIGBORl9UQUJMRVNgLCBgTkVURklMVEVSX1hUX01BVENIX1UzMmAsIGBORVRGSUxURVJfWFRfVEFSR0VUX0NPTk5NQVJLYCwgYE5FVEZJTFRFUl9YVF9NQVRDSF9SQVRFRVNUYCwgYElQNl9ORl9NQVRDSF9BSGAsIGBJUDZfTkZfTUFUQ0hfSEJIYCwgYElQNl9ORl9NQVRDSF9SVGAsIGFuZCBgTkZfQ1RfTkVUTElOS19IRUxQRVJgLlxuXG5JIHNob3VsZCBhbHNvIGZvY3VzIG9uIHNvbWUgc3BlY2lmaWMgc3ltYm9scywgd2hpY2ggSSd2ZSBpZGVudGlmaWVkIGFzOiBgYWhfbXQ2YCwgYGhiaF9tdDZgLCBgcnRfbXQ2YCwgYGlwX3ZzX2Nvbm5fbmV3YCwgYGlwX3ZzX2luX2ljbXBgLCBgbmZfbmF0X3NpcGAsIGBuZnRfZ2V0X3NldF9lbGVtYCwgYG5mbmxfY3RoZWxwZXJfdXBkYXRlX3BvbGljeV9vbmVgLCBgbmZ0X3JidHJlZV9nZXRgLCBgY29ubm1hcmtfdGdfY2hlY2tfdjJgLCBgeHRfcmF0ZWVzdF9tdGAsIGFuZCBgdTMyX210X2NoZWNrZW50cnlgLiBJIHdpbGwgZG91YmxlIGNoZWNrIHRoZSBjb25maWcgb3B0aW9ucyBhcyB3ZWxsIHRvIG1ha2Ugc3VyZSBJIGRpZCBub3QgbWlzcyBhbnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2MTMsIk91dHB1dFRva2VucyI6MzcwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA2MiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEzOjE4OjU3LjAwMDI2MTMyNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDcyODQwODU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUDZfTkZfTUFUQ0hfQUhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc9OTM9aWYgSVA2X05GX0lQVEFCTEVTXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy05NS0jIFRoZSBzaW1wbGUgbWF0Y2hlcy5cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZzo5Njpjb25maWcgSVA2X05GX01BVENIX0FIXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctOTctXFx0dHJpc3RhdGUgJ1xcXCJhaFxcXCIgbWF0Y2ggc3VwcG9ydCdcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTM6MTg6NTguNDczMTA2MDkxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMzY2MzI2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVA2X05GX01BVENIX0hCSFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTM6MTg6NTguNTM0NDc5MTY3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3Mzc1Njk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUDZfTkZfTUFUQ0hfUlRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc9MTU4PWNvbmZpZyBJUDZfTkZfTUFUQ0hfUlBGSUxURVJcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTE2OC1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZzoxNjk6Y29uZmlnIElQNl9ORl9NQVRDSF9SVFxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTE3MC1cXHR0cmlzdGF0ZSAnXFxcInJ0XFxcIiBSb3V0aW5nIGhlYWRlciBtYXRjaCBzdXBwb3J0J1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMzoxODo1OC41OTE4NTk0OTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ3NTg2NDYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9OQVRfU0lQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMzoxODo1OC42NDY2MjMyNThaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTkwNDg0NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX05BVF9TSVBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz00MjY9Y29uZmlnIE5GX05BVF9JUkNcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzAtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQzMTpjb25maWcgTkZfTkFUX1NJUFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00MzItXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTM6MTg6NTguNzA1Njc2NTQ0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1Nzc4NjE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfVTMyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9MTYyMz1jb25maWcgTkVURklMVEVSX1hUX01BVENIX1RJTUVcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xNjM2LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoxNjM3OmNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfVTMyXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTE2MzgtXFx0dHJpc3RhdGUgJ1xcXCJ1MzJcXFwiIG1hdGNoIHN1cHBvcnQnXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEzOjE4OjU4Ljc2MTQ2MTI0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjQ2MjYyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9DT05OTUFSS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTgyNz1jb25maWcgTkVURklMVEVSX1hUX1RBUkdFVF9DTEFTU0lGWVxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTgzOC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODM5OmNvbmZpZyBORVRGSUxURVJfWFRfVEFSR0VUX0NPTk5NQVJLXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTg0MC1cXHR0cmlzdGF0ZSAgJ1xcXCJDT05OTUFSS1xcXCIgdGFyZ2V0IHN1cHBvcnQnXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEzOjE4OjU4LjgxNzkyOTUwNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcwNjI1NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9SQVRFRVNUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9MTUwNz1jb25maWcgTkVURklMVEVSX1hUX01BVENIX1FVT1RBXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTUxNi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTUxNzpjb25maWcgTkVURklMVEVSX1hUX01BVENIX1JBVEVFU1RcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTUxOC1cXHR0cmlzdGF0ZSAnXFxcInJhdGVlc3RcXFwiIG1hdGNoIHN1cHBvcnQnXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEzOjE4OjU4Ljg3NDk5NzYxMVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU4MzcyNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX0NUX05FVExJTktfSEVMUEVSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9MzczPWNvbmZpZyBORl9DVF9ORVRMSU5LX1RJTUVPVVRcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0zODQtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjM4NTpjb25maWcgTkZfQ1RfTkVUTElOS19IRUxQRVJcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMzg2LVxcdHRyaXN0YXRlICdDb25uZWN0aW9uIHRyYWNraW5nIGhlbHBlcnMgaW4gdXNlci1zcGFjZSB2aWEgTmV0bGluaydcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTM6MTg6NTguOTMwODM5Nzg3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzE2MDExNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfVlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNC0jXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6NTptZW51Y29uZmlnIElQX1ZTXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWctNi1cXHR0cmlzdGF0ZSBcXFwiSVAgdmlydHVhbCBzZXJ2ZXIgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTI4Nj1jb21tZW50ICdJUFZTIFNIIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0yODctXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6Mjg4OmNvbmZpZyBJUF9WU19TSF9UQUJfQklUU1xcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnLTI4OS1cXHRpbnQgXFxcIklQVlMgc291cmNlIGhhc2hpbmcgdGFibGUgc2l6ZSAodGhlIE50aCBwb3dlciBvZiAyKVxcXCJcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvaXB2cy9LY29uZmlnPTMwMT1jb21tZW50ICdJUFZTIE1IIHNjaGVkdWxlcidcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDItXFxubmV0L25ldGZpbHRlci9pcHZzL0tjb25maWc6MzAzOmNvbmZpZyBJUF9WU19NSF9UQUJfSU5ERVhcXG5uZXQvbmV0ZmlsdGVyL2lwdnMvS2NvbmZpZy0zMDQtXFx0aW50IFxcXCJJUFZTIG1hZ2xldiBoYXNoaW5nIHRhYmxlIGluZGV4IG9mIHNpemUgKHRoZSBwcmltZSBudW1iZXJzKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTM6MTg6NTguOTg4MDA1MTQyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNzA0Mjc2NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqRGl2aW5nIEJhY2sgaW50byBJUHY2IEhvcC1ieS1Ib3AgT3B0aW9ucyoqXG5cblJpZ2h0LCB0aW1lIHRvIGNpcmNsZSBiYWNrIHRvIGBJUDZfTkZfTUFUQ0hfSEJIYC4gSSd2ZSBiZWVuIHdvcmtpbmcgd2l0aCBJUHY2IGZvciBsb25nIGVub3VnaCB0byBoYXZlIGEgZ29vZCBoYW5kbGUgb24gdGhpbmdzLCBidXQgSSd2ZSBsZWFybmVkIHRoYXQgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIHJlcXVpcmVzIGNvbnN0YW50IHJldmlldywgcGFydGljdWxhcmx5IHdpdGggdGhvc2UgbW9yZSBjb21wbGV4IGFyZWFzLiBXaXRoIG15IGV4cGVyaWVuY2UsIEkgdGVuZCB0byByZXZpZXcgZGV0YWlscyB0aGF0IGNvdWxkIGNhdXNlIGlzc3Vlcy4gU28sIGxldCBtZSBqdXN0IHJldmlzaXQgdGhlIGNvZGUgcmVsYXRlZCB0byB0aGF0IHNwZWNpZmljIG1hdGNoLCBtYWtlIHN1cmUgSSBoYXZlIGEgZ29vZCBncmFzcCBvZiB0aGUgY29ybmVyIGNhc2VzLCByZWZyZXNoIG15IG1lbW9yeSBvbiBhbnkgcmVjZW50IGRpc2N1c3Npb25zIGFyb3VuZCBpdCwgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBudWFuY2VzIEkgbWlnaHQgaGF2ZSBtaXNzZWQuIEEgc2Vjb25kIGxvb2sgYXQgdGhhdCBjb2RlIGlzIHByb2JhYmx5IG92ZXJkdWUuIEl0J3MgdG9vIGVhc3kgdG8gYXNzdW1lIGZhbWlsaWFyaXR5IGFuZCBvdmVybG9vayBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIG9yIG9wdGltaXphdGlvbiBvcHBvcnR1bml0aWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODA4LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciIsImdyZXBwZXIiLCJncmVwcGVyIiwiZ3JlcHBlciIsImdyZXBwZXIiLCJncmVwcGVyIiwiZ3JlcHBlciIsImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDNUMTM6MTk6MDIuMjU4NDM1MTAxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTQ5Mjc5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVA2X05GX01BVENIX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZz05Mz1pZiBJUDZfTkZfSVBUQUJMRVNcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTk1LSMgVGhlIHNpbXBsZSBtYXRjaGVzLlxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjk2OmNvbmZpZyBJUDZfTkZfTUFUQ0hfQUhcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy05Ny1cXHR0cmlzdGF0ZSAnXFxcImFoXFxcIiBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTAzLVxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjEwNDpjb25maWcgSVA2X05GX01BVENIX0VVSTY0XFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTA1LVxcdHRyaXN0YXRlICdcXFwiZXVpNjRcXFwiIGFkZHJlc3MgY2hlY2snXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xMTMtXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc6MTE0OmNvbmZpZyBJUDZfTkZfTUFUQ0hfRlJBR1xcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTExNS1cXHR0cmlzdGF0ZSAnXFxcImZyYWdcXFwiIEZyYWdtZW50YXRpb24gaGVhZGVyIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xMjItXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc6MTIzOmNvbmZpZyBJUDZfTkZfTUFUQ0hfT1BUU1xcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTEyNC1cXHR0cmlzdGF0ZSAnXFxcImhiaFxcXCIgaG9wLWJ5LWhvcCBhbmQgXFxcImRzdFxcXCIgb3B0cyBoZWFkZXIgbWF0Y2ggc3VwcG9ydCdcXG4tLVxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTEzMS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZzoxMzI6Y29uZmlnIElQNl9ORl9NQVRDSF9ITFxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnLTEzMy1cXHR0cmlzdGF0ZSAnXFxcImhsXFxcIiBob3BsaW1pdCBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTQwLVxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjE0MTpjb25maWcgSVA2X05GX01BVENIX0lQVjZIRUFERVJcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xNDItXFx0dHJpc3RhdGUgJ1xcXCJpcHY2aGVhZGVyXFxcIiBJUHY2IEV4dGVuc2lvbiBIZWFkZXJzIE1hdGNoJ1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTQ5LVxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjE1MDpjb25maWcgSVA2X05GX01BVENIX01IXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTUxLVxcdHRyaXN0YXRlICdcXFwibWhcXFwiIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xNTctXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc6MTU4OmNvbmZpZyBJUDZfTkZfTUFUQ0hfUlBGSUxURVJcXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xNTktXFx0dHJpc3RhdGUgJ1xcXCJycGZpbHRlclxcXCIgcmV2ZXJzZSBwYXRoIGZpbHRlciBtYXRjaCBzdXBwb3J0J1xcbi0tXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTY4LVxcbm5ldC9pcHY2L25ldGZpbHRlci9LY29uZmlnOjE2OTpjb25maWcgSVA2X05GX01BVENIX1JUXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTcwLVxcdHRyaXN0YXRlICdcXFwicnRcXFwiIFJvdXRpbmcgaGVhZGVyIG1hdGNoIHN1cHBvcnQnXFxuLS1cXG5uZXQvaXB2Ni9uZXRmaWx0ZXIvS2NvbmZpZy0xNzctXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWc6MTc4OmNvbmZpZyBJUDZfTkZfTUFUQ0hfU1JIXFxubmV0L2lwdjYvbmV0ZmlsdGVyL0tjb25maWctMTc5LVxcdHRyaXN0YXRlICdcXFwic3JoXFxcIiBTZWdtZW50IFJvdXRpbmcgaGVhZGVyIG1hdGNoIHN1cHBvcnQnXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEzOjE5OjAyLjMzMzkzNDE5NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODc5MDc5MDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzpcblxuKipFeGFtaW5pbmcgSVB2NiBPcHRpb25zIGFuZCBTSVAgTkFUIGluIE5ldGZpbHRlcioqXG5cblJpZ2h0LCBzbyBgSVA2X05GX01BVENIX09QVFNgLi4uIHRoYXQncyBzcGVjaWZpY2FsbHkgZm9yIGhhbmRsaW5nIGhvcC1ieS1ob3AgKGhiaCkgYW5kIGRlc3RpbmF0aW9uIG9wdGlvbnMsIHJpZ2h0PyBJIG5lZWQgdG8ga2VlcCB0aGF0IHN0cmFpZ2h0LiBUaGVzZSBvcHRpb25zIGluIElQdjYgcGFja2V0cyBjYW4gYmUgdHJpY2t5LlxuXG5Ob3csIEknbSB0aGlua2luZyBhYm91dCBob3cgdGhpcyB0aWVzIGludG8gTkFULCBlc3BlY2lhbGx5IHdpdGggU0lQLiBMZXQncyBzZWUuLi4gSSBzaG91bGQgY2hlY2sgYE5GX1RBQkxFU2AgYW5kIHRoZW4gYE5GX05BVF9TSVBgLiBBaCwgcmlnaHQsIGBORl9OQVRfU0lQYCBkZXBlbmRzIG9uIGBORl9DT05OVFJBQ0tfU0lQYC4gVGhhdCBjb25uZWN0aW9uIHRyYWNraW5nIG1vZHVsZSBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgU0lQIHRyYWZmaWMgZ2V0cyBOQVQnZC4gSSBzaG91bGQgcHJvYmFibHkgZGlnIGludG8gYE5GX0NPTk5UUkFDS19TSVBgIHRvIHNlZSB0aGUgZGV0YWlscyBvZiBob3cgaXQncyBoYW5kbGVkLiBNYWtlcyBzZW5zZSDigJMgY29ubmVjdGlvbiB0cmFja2luZyBiZWZvcmUgdGhlIE5BVCBvcGVyYXRpb24uIFRoaXMgc2hvdWxkIGNsYXJpZnkgdGhlIG92ZXJhbGwgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTgyMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEzOjE5OjA3LjIxMzAxNjIxMVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ1NDcwNTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9DT05OVFJBQ0tfU0lQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9MzMwPWNvbmZpZyBORl9DT05OVFJBQ0tfU0FORVxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0Mi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MzQzOmNvbmZpZyBORl9DT05OVFJBQ0tfU0lQXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTM0NC1cXHR0cmlzdGF0ZSBcXFwiU0lQIHByb3RvY29sIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEzOjE5OjA3LjM1ODQ5MzFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTM1NTExODMzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIGZvciBTSVAgQ29ubmVjdGlvbiBUcmFja2luZyoqXG5cbk9rYXksIHNvIEknbSBwcmV0dHkgc3VyZSB3ZSd2ZSBwaW5uZWQgZG93biBgTkZfQ09OTlRSQUNLX1NJUGAgYXMgdGhlIGNyaXRpY2FsIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciB0aGUgU0lQIGNvbm5lY3Rpb24gdHJhY2tpbmcgbW9kdWxlLiBUaGF0J3MgZ29vZCwgYnV0IGxldCdzIG5vdCBqdW1wIHRvIGNvbmNsdXNpb25zLiBJdCdzIGFsd2F5cyB3aXNlIHRvIGJlIHRob3JvdWdoLCBlc3BlY2lhbGx5IHdpdGggdGhlIGtlcm5lbC5cblxuTm93LCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgYE5GX1RBQkxFU2AgaXMgZW5hYmxlZC4gSXQncyBvZnRlbiBhIGRlcGVuZGVuY3ksIGFuZCBhIGZvdW5kYXRpb25hbCBlbGVtZW50IGZvciBoYW5kbGluZyBuZXR3b3JrIHRhYmxlcyBlZmZlY3RpdmVseS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIHVuZGVybHlpbmcgaW5mcmFzdHJ1Y3R1cmUgaXMgcHJlc2VudCBhbmQgYWNjb3VudGVkIGZvciB0byB2YWxpZGF0ZSB0aGlzIGNob2ljZS4gV2UgbmVlZCB0byBidWlsZCBvdXIgc3RyYXRlZ3kgdXBvbiBhIHNvbGlkIGJhc2UsIGRvbid0IHdlPyBMZXQncyB0YWtlIGEgbG9vay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAyMjEsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMzoxOToxMi43MTM2MTM2MjlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1ODIyMjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORl9UQUJMRVNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz00NTM9ZW5kaWYgIyBORl9DT05OVFJBQ0tcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNDU0LVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NTU6Y29uZmlnIE5GX1RBQkxFU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NTYtXFx0c2VsZWN0IE5FVEZJTFRFUl9ORVRMSU5LXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc9NDcxPWlmIE5GX1RBQkxFU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo0NzI6Y29uZmlnIE5GX1RBQkxFU19JTkVUXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTQ3My1cXHRkZXBlbmRzIG9uIElQVjZcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00NzktXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjQ4MDpjb25maWcgTkZfVEFCTEVTX05FVERFVlxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy00ODEtXFx0Ym9vbCBcXFwiTmV0ZmlsdGVyIG5mX3RhYmxlcyBuZXRkZXYgdGFibGVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAzVDEzOjE5OjEyLjc2OTQ0NTcxNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5Njg3MDQ4NzM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIE5ldGZpbHRlciBhbmQgSVBWUyBQYXRjaCBTZXJpZXMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIHNlcmllcyBhbmQgdGhpbmtpbmcgdGhyb3VnaCB0aGUgaW1wbGljYXRpb25zIGZvciBmdXp6aW5nLiBGaXJzdCwgSSBzZWUgYSBzZXQgb2YgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgYXJlIHJlbGV2YW50OiBgSVBfVlNgLCBgTkZfQ09OTlRSQUNLX1NJUGAsIGBORl9UQUJMRVNgLCBgTkVURklMVEVSX1hUX01BVENIX1UzMmAsIGBORVRGSUxURVJfWFRfVEFSR0VUX0NPTk5NQVJLYCwgYE5FVEZJTFRFUl9YVF9NQVRDSF9SQVRFRVNUYCwgYElQNl9ORl9NQVRDSF9BSGAsIGBJUDZfTkZfTUFUQ0hfT1BUU2AsIGBJUDZfTkZfTUFUQ0hfUlRgLCBhbmQgYE5GX0NUX05FVExJTktfSEVMUEVSYC4gVGhlc2UgYXJlIGFsbCBjcnVjaWFsIGZvciBlbmFibGluZyB0aGUgZmVhdHVyZXMgdGhlIHBhdGNoZXMgYXJlIHRhcmdldGluZywgc28gdGhleSdsbCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRlc3RpbmcuXG5cbk5vdywgSSBuZWVkIHRvIGZvY3VzIG9uIHRoZSBrZXkgc3ltYm9scywgdGhlIGZ1bmN0aW9ucyB0aGF0IGFyZSBiZWluZyBtb2RpZmllZCBvciBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBidWcgZml4ZXM6IGBhaF9tdDZgLCBgaGJoX210NmAsIGBydF9tdDZgLCBgaXBfdnNfY29ubl9uZXdgLCBgaXBfdnNfaW5faWNtcGAsIGBuZl9uYXRfc2lwYCwgYG5mdF9nZXRfc2V0X2VsZW1gLCBgbmZubF9jdGhlbHBlcl91cGRhdGVfcG9saWN5X29uZWAsIGBuZnRfcmJ0cmVlX2dldGAsIGBjb25ubWFya190Z19jaGVja192MmAsIGB4dF9yYXRlZXN0X210YCwgYW5kIGB1MzJfbXRfY2hlY2tlbnRyeWAuXG5cbkxldCdzIHNlZSwgYGNvbm5tYXJrX3RnX2NoZWNrX3YyYCwgeWVzLCB0aGF0J3MgYSBjaGVja2VudHJ5IGZ1bmN0aW9uLCBnb29kLiBBbmQgYGlwX3ZzX2Nvbm5fbmV3YCwgYWgsIHRoaXMgaXMgdGhlIGZ1bmN0aW9uIGZvciBjcmVhdGluZyBuZXcgSVBWUyBjb25uZWN0aW9ucy4gQWxzbywgYGlwX3ZzX2luX2ljbXBgIGlzIGludm9sdmVkIHdoZW4gaGFuZGxpbmcgSUNNUCBwYWNrZXRzIGZvciBJUFZTLiBOYXR1cmFsbHksIGBuZl9uYXRfc2lwYCBpcyBrZXkgd2hlbiB3ZSBOQVQgU0lQIHBhY2tldHMsIG9idmlvdXNseS4gTm93LCBgbmZ0X2dldF9zZXRfZWxlbWAgYW5kIGBuZm5sX2N0aGVscGVyX3VwZGF0ZV9wb2xpY3lfb25lYCBhcmUgbmV0bGluay1yZWxhdGVkLCBhbmQgYG5mdF9yYnRyZWVfZ2V0YCBpcyBpbnZvbHZlZCB3aXRoIG5mdGFibGVzIHNldHMuIGB4dF9yYXRlZXN0X210YCBpcyB1c2VkIGZvciBtYXRjaGluZyBwYWNrZXRzIGFuZCBgdTMyX210X2NoZWNrZW50cnlgIGlzIHJlYWNoZWQgd2hlbiBhZGRpbmcgYSBydWxlLlxuXG5UaGUgZXNzZW50aWFsIHBvaW50IGhlcmUgaXMgdGhhdCAqYWxsKiBvZiB0aGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBhbmQgcmVwcmVzZW50IHJlYWwgZnVuY3Rpb25hbCBjaGFuZ2VzIHdpdGhpbiB0aGUgbmV0ZmlsdGVyIGFuZCBJUFZTIHN1YnN5c3RlbXMuIFRoZSBwYXRjaCBzZXJpZXMgZGlyZWN0bHkgYWRkcmVzc2VzIGJ1Z3MgbGlrZSBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1bmluaXRpYWxpemVkIG1lbW9yeSwgYW5kIGluY29ycmVjdCBNVFUgY2FsY3VsYXRpb25zLiBUaGVyZWZvcmUsIGEgZnV6emVyIG5lZWRzIHRvIGV4cGxvcmUgdGhlc2UgY29kZSBwYXRocyBhZ2dyZXNzaXZlbHkgdG8gZW5zdXJlIHRoYXQgdGhlIGZpeGVzIGFyZSByb2J1c3QgYW5kIHRoYXQgbm8gbmV3IHJlZ3Jlc3Npb25zIGFyZSBpbnRyb2R1Y2VkLiBUaGUgZnV6emluZyBjYW1wYWlnbiBzaG91bGQgYWJzb2x1dGVseSB0YXJnZXQgdGhlc2UgYXJlYXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjQwLCJPdXRwdXRUb2tlbnMiOjMwMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wM1QxMzoxOToyMi40NTY0OTc2NjJaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzAyOTA4ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1ZTXCIsXG4gICAgXCJORl9DT05OVFJBQ0tfU0lQXCIsXG4gICAgXCJORl9UQUJMRVNcIixcbiAgICBcIk5FVEZJTFRFUl9YVF9NQVRDSF9VMzJcIixcbiAgICBcIk5FVEZJTFRFUl9YVF9UQVJHRVRfQ09OTk1BUktcIixcbiAgICBcIk5FVEZJTFRFUl9YVF9NQVRDSF9SQVRFRVNUXCIsXG4gICAgXCJJUDZfTkZfTUFUQ0hfQUhcIixcbiAgICBcIklQNl9ORl9NQVRDSF9PUFRTXCIsXG4gICAgXCJJUDZfTkZfTUFUQ0hfUlRcIixcbiAgICBcIk5GX0NUX05FVExJTktfSEVMUEVSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWhfbXQ2XCIsXG4gICAgXCJoYmhfbXQ2XCIsXG4gICAgXCJydF9tdDZcIixcbiAgICBcImlwX3ZzX2Nvbm5fbmV3XCIsXG4gICAgXCJpcF92c19pbl9pY21wXCIsXG4gICAgXCJuZl9uYXRfc2lwXCIsXG4gICAgXCJuZnRfZ2V0X3NldF9lbGVtXCIsXG4gICAgXCJuZm5sX2N0aGVscGVyX3VwZGF0ZV9wb2xpY3lfb25lXCIsXG4gICAgXCJuZnRfcmJ0cmVlX2dldFwiLFxuICAgIFwiY29ubm1hcmtfdGdfY2hlY2tfdjJcIixcbiAgICBcInh0X3JhdGVlc3RfbXRcIixcbiAgICBcInUzMl9tdF9jaGVja2VudHJ5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGlzIHBhdGNoIHNlcmllcyBmaXhlcyBtdWx0aXBsZSBidWdzIGluIG5ldGZpbHRlciBhbmQgSVBWUyBjb21wb25lbnRzLCBpbmNsdWRpbmcgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdW5pbml0aWFsaXplZCBtZW1vcnksIGFuZCBpbmNvcnJlY3QgTVRVIGNhbGN1bGF0aW9ucy4gRnV6emluZyB0aGVzZSBwYXRocyB3aWxsIGhlbHAgZW5zdXJlIHRoZSBmaXhlcyBhcmUgcm9idXN0IGFuZCBkb24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfVlNcIixcbiAgICBcIk5GX0NPTk5UUkFDS19TSVBcIixcbiAgICBcIk5GX1RBQkxFU1wiLFxuICAgIFwiTkVURklMVEVSX1hUX01BVENIX1UzMlwiLFxuICAgIFwiTkVURklMVEVSX1hUX1RBUkdFVF9DT05OTUFSS1wiLFxuICAgIFwiTkVURklMVEVSX1hUX01BVENIX1JBVEVFU1RcIixcbiAgICBcIklQNl9ORl9NQVRDSF9BSFwiLFxuICAgIFwiSVA2X05GX01BVENIX09QVFNcIixcbiAgICBcIklQNl9ORl9NQVRDSF9SVFwiLFxuICAgIFwiTkZfQ1RfTkVUTElOS19IRUxQRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhaF9tdDZcIixcbiAgICBcImhiaF9tdDZcIixcbiAgICBcInJ0X210NlwiLFxuICAgIFwiaXBfdnNfY29ubl9uZXdcIixcbiAgICBcImlwX3ZzX2luX2ljbXBcIixcbiAgICBcIm5mX25hdF9zaXBcIixcbiAgICBcIm5mdF9nZXRfc2V0X2VsZW1cIixcbiAgICBcIm5mbmxfY3RoZWxwZXJfdXBkYXRlX3BvbGljeV9vbmVcIixcbiAgICBcIm5mdF9yYnRyZWVfZ2V0XCIsXG4gICAgXCJjb25ubWFya190Z19jaGVja192MlwiLFxuICAgIFwieHRfcmF0ZWVzdF9tdFwiLFxuICAgIFwidTMyX210X2NoZWNrZW50cnlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoaXMgcGF0Y2ggc2VyaWVzIGZpeGVzIG11bHRpcGxlIGJ1Z3MgaW4gbmV0ZmlsdGVyIGFuZCBJUFZTIGNvbXBvbmVudHMsIGluY2x1ZGluZyBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1bmluaXRpYWxpemVkIG1lbW9yeSwgYW5kIGluY29ycmVjdCBNVFUgY2FsY3VsYXRpb25zLiBGdXp6aW5nIHRoZXNlIHBhdGhzIHdpbGwgaGVscCBlbnN1cmUgdGhlIGZpeGVzIGFyZSByb2J1c3QgYW5kIGRvbid0IGludHJvZHVjZSByZWdyZXNzaW9ucy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowz8bmk[1] Phase: Succeeded StartedAt: 2026-07-03 13:19:47 +0000 UTC FinishedAt: 2026-07-03 13:19:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz8bmk[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-03 13:19:48 +0000 UTC FinishedAt: 2026-07-03 13:19:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz8bmk[2] Phase: Succeeded StartedAt: 2026-07-03 13:19:48 +0000 UTC FinishedAt: 2026-07-03 17:34:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 13:19:48 +0000 UTC FinishedAt: 2026-07-03 17:34:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 13:19:48 +0000 UTC FinishedAt: 2026-07-03 13:20:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 13:19:48 +0000 UTC FinishedAt: 2026-07-03 13:20:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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-workflowz8bmk/series-workflowz8bmk-convert-artifact-3647587655/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 13:20:36 +0000 UTC FinishedAt: 2026-07-03 13:49:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 13:20:36 +0000 UTC FinishedAt: 2026-07-03 13:49:22 +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:*4d11fb56-6e7c-4884-88d9-30f845b003ca,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-workflowz8bmk/series-workflowz8bmk-convert-artifact-3647587655/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": "c2fec586-27ba-4ddc-b960-ebd84882a764", "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-workflowz8bmk/series-workflowz8bmk-build-action-2836712925/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 13:20:36 +0000 UTC FinishedAt: 2026-07-03 13:49:12 +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:*4d11fb56-6e7c-4884-88d9-30f845b003ca,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-workflowz8bmk/series-workflowz8bmk-convert-artifact-3647587655/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": "c2fec586-27ba-4ddc-b960-ebd84882a764", "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-workflowz8bmk/series-workflowz8bmk-build-action-2836712925/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 13:49:22 +0000 UTC FinishedAt: 2026-07-03 13:49:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 13:49:22 +0000 UTC FinishedAt: 2026-07-03 13:49:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 13:49:22 +0000 UTC FinishedAt: 2026-07-03 13:49:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 13:49:22 +0000 UTC FinishedAt: 2026-07-03 13:49:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-workflowz8bmk/series-workflowz8bmk-convert-artifact-1370933622/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 13:49:32 +0000 UTC FinishedAt: 2026-07-03 13:51:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 13:49:32 +0000 UTC FinishedAt: 2026-07-03 13:51:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c2fec586-27ba-4ddc-b960-ebd84882a764,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-workflowz8bmk/series-workflowz8bmk-build-action-2836712925/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-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 13:51:51 +0000 UTC FinishedAt: 2026-07-03 13:51:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 13:51:51 +0000 UTC FinishedAt: 2026-07-03 13:51:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 13:51:51 +0000 UTC FinishedAt: 2026-07-03 14:30:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 13:51:51 +0000 UTC FinishedAt: 2026-07-03 14:30:34 +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:*4d11fb56-6e7c-4884-88d9-30f845b003ca,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-workflowz8bmk/series-workflowz8bmk-convert-artifact-1370933622/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": "3c8ca6aa-890a-4a19-ab1c-d6ad8053c3af", "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-workflowz8bmk/series-workflowz8bmk-build-action-2856841338/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 13:51:51 +0000 UTC FinishedAt: 2026-07-03 14:30:24 +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:*4d11fb56-6e7c-4884-88d9-30f845b003ca,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-workflowz8bmk/series-workflowz8bmk-convert-artifact-1370933622/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": "3c8ca6aa-890a-4a19-ab1c-d6ad8053c3af", "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-workflowz8bmk/series-workflowz8bmk-build-action-2856841338/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 14:30:34 +0000 UTC FinishedAt: 2026-07-03 14:30:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 14:30:34 +0000 UTC FinishedAt: 2026-07-03 14:30:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 14:30:34 +0000 UTC FinishedAt: 2026-07-03 14:32:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 14:30:34 +0000 UTC FinishedAt: 2026-07-03 14:32:46 +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:*3c8ca6aa-890a-4a19-ab1c-d6ad8053c3af,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-workflowz8bmk/series-workflowz8bmk-build-action-2856841338/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-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 14:32:56 +0000 UTC FinishedAt: 2026-07-03 17:34:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 14:32:56 +0000 UTC FinishedAt: 2026-07-03 17:34:35 +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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"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:*c2fec586-27ba-4ddc-b960-ebd84882a764,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3c8ca6aa-890a-4a19-ab1c-d6ad8053c3af,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-workflowz8bmk/series-workflowz8bmk-build-action-2836712925/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-workflowz8bmk/series-workflowz8bmk-build-action-2856841338/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 14:32:56 +0000 UTC FinishedAt: 2026-07-03 14:33:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 14:32:56 +0000 UTC FinishedAt: 2026-07-03 14:33:05 +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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"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-workflowz8bmk/series-workflowz8bmk-convert-artifact-161102747/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 14:32:56 +0000 UTC FinishedAt: 2026-07-03 14:32:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 14:32:56 +0000 UTC FinishedAt: 2026-07-03 14:32:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 14:32:56 +0000 UTC FinishedAt: 2026-07-03 14:32:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 14:33:17 +0000 UTC FinishedAt: 2026-07-03 17:34:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz8bmk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"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":["ah_mt6","hbh_mt6","rt_mt6","ip_vs_conn_new","ip_vs_in_icmp","nf_nat_sip","nft_get_set_elem","nfnl_cthelper_update_policy_one","nft_rbtree_get","connmark_tg_check_v2","xt_rateest_mt","u32_mt_checkentry"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"62e7df6d042aeebd5efb581074e28865c04477be","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_VS","NF_CONNTRACK_SIP","NF_TABLES","NETFILTER_XT_MATCH_U32","NETFILTER_XT_TARGET_CONNMARK","NETFILTER_XT_MATCH_RATEEST","IP6_NF_MATCH_AH","IP6_NF_MATCH_OPTS","IP6_NF_MATCH_RT","NF_CT_NETLINK_HELPER"],"series_id":"4c229847-9081-4997-93c7-32f7d9baafee","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-07-03 14:33:17 +0000 UTC FinishedAt: 2026-07-03 17:34:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c2fec586-27ba-4ddc-b960-ebd84882a764,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3c8ca6aa-890a-4a19-ab1c-d6ad8053c3af,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-workflowz8bmk/series-workflowz8bmk-build-action-2836712925/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-workflowz8bmk/series-workflowz8bmk-build-action-2856841338/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-workflowz8bmk/series-workflowz8bmk-convert-artifact-161102747/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,}