Name: series-workflowfdr8k Phase: Succeeded StartedAt: 2026-08-05 10:39:13 +0000 UTC FinishedAt: 2026-08-05 14:24:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdr8k[0] Phase: Succeeded StartedAt: 2026-08-05 10:39:13 +0000 UTC FinishedAt: 2026-08-05 10:41:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdr8k[0].run-triage Phase: Succeeded StartedAt: 2026-08-05 10:39:13 +0000 UTC FinishedAt: 2026-08-05 10:41:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "6c5fc504d0d6934132637aa3db4b9b58148eaa78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "6c5fc504d0d6934132637aa3db4b9b58148eaa78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "1c05b42d-441e-4d49-81bf-e5b1cb7e6444" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nl80211_start_ap", "nl80211_set_tx_bitrate_mask", "nl80211_join_mesh", "nl80211_set_tid_config" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA1IDEwOjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmw4MDIxMV9zdGFydF9hcCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3NldF90eF9iaXRyYXRlX21hc2smIzM0OywKICAgICYjMzQ7bmw4MDIxMV9qb2luX21lc2gmIzM0OywKICAgICYjMzQ7bmw4MDIxMV9zZXRfdGlkX2NvbmZpZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IG5ldGxpbmsgYXR0cmlidXRlIGBOTDgwMjExX1RYUkFURV82R0haX05PTl9IVF9EVVBgIGZvciBjb25maWd1cmluZyA2IEdIeiBub24tSFQgZHVwbGljYXRlIEJlYWNvbiB0cmFuc21pc3Npb24uIEl0IG1vZGlmaWVzIHRoZSBwYXJzaW5nIGFuZCB2YWxpZGF0aW9uIGxvZ2ljIGluIGBubDgwMjExX3BhcnNlX3R4X2JpdHJhdGVfbWFza2AgYW5kIGB2YWxpZGF0ZV9iZWFjb25fdHhfcmF0ZWAsIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIHNldmVyYWwgbmw4MDIxMSBuZXRsaW5rIGNvbW1hbmRzIChlLmcuLCBzdGFydGluZyBhbiBBUCwgam9pbmluZyBhIG1lc2gsIHNldHRpbmcgVFggYml0cmF0ZSBtYXNrLCBzZXR0aW5nIFRJRCBjb25maWcpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNmZzgwMjExIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSB0ZXN0ZWQgdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgV2ktRmkgZGV2aWNlcyAobWFjODAyMTFfaHdzaW0pLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEwOjQwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTI5NDhlNTNmNDZlMTEzZDJmZTIzNGIwNWE5ODRhYTYzYzE0NDY3ZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMTA6NDA6NDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBiL2luY2x1ZGUvbmV0L2NmZzgwMjExLmhcbmluZGV4IDk3YzE2ZDRmZjEyNzEuLjZiYzQ5MDEwODMwM2EgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXG5AQCAtOTAxLDYgJiM0Mzs5MDEsNyBAQCBzdHJ1Y3QgY2ZnODAyMTFfYml0cmF0ZV9tYXNrIHtcbiBcdFx0ZW51bSBubDgwMjExX2VodF9naSBlaHRfZ2k7XG4gXHRcdGVudW0gbmw4MDIxMV9oZV9sdGYgaGVfbHRmO1xuIFx0XHRlbnVtIG5sODAyMTFfZWh0X2x0ZiBlaHRfbHRmO1xuJiM0MztcdFx0Ym9vbCBub25odF9kdXBfNmdoejtcbiBcdH0gY29udHJvbFtOVU1fTkw4MDIxMV9CQU5EU107XG4gfTtcbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaFxuaW5kZXggMDIwMzg3ZDc2NDEyMi4uZDhmZWZlZmMxMWE5NSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmhcbkBAIC01OTAwLDYgJiM0Mzs1OTAwLDkgQEAgZW51bSBubDgwMjExX2tleV9hdHRyaWJ1dGVzIHtcbiAgKlx0c2VlIFx1MDAyNnN0cnVjdCBubDgwMjExX3R4cmF0ZV9laHRcbiAgKiBATkw4MDIxMV9UWFJBVEVfRUhUX0dJOiBjb25maWd1cmUgRUhUIEdJLCAodTgsIHNlZSBcdTAwMjZlbnVtIG5sODAyMTFfZWh0X2dpKVxuICAqIEBOTDgwMjExX1RYUkFURV9FSFRfTFRGOiBjb25maWd1cmUgRUhUIExURiwgKHU4LCBzZWUgXHUwMDI2ZW51bSBubDgwMjExX2VodF9sdGYpXG4mIzQzOyAqIEBOTDgwMjExX1RYUkFURV82R0haX05PTl9IVF9EVVA6IGNvbmZpZ3VyZSA2IEdIeiBub24tSFQgZHVwbGljYXRlIEJlYWNvblxuJiM0MzsgKlx0dHJhbnNtaXNzaW9uLiBUaGlzIGZsYWcgaXMgYXBwbGljYWJsZSBvbmx5IGluIEJlYWNvbiBUWCByYXRlIHNldHRpbmdcbiYjNDM7ICpcdGFuZCBtdXN0IGJlIGFjY29tcGFuaWVkIGJ5IGEgbm9uLUhUIChsZWdhY3kpIEJlYWNvbiByYXRlLlxuICAqIEBfX05MODAyMTFfVFhSQVRFX0FGVEVSX0xBU1Q6IGludGVybmFsXG4gICogQE5MODAyMTFfVFhSQVRFX01BWDogaGlnaGVzdCBUWCByYXRlIGF0dHJpYnV0ZVxuICAqL1xuQEAgLTU5MTUsNiAmIzQzOzU5MTgsNyBAQCBlbnVtIG5sODAyMTFfdHhfcmF0ZV9hdHRyaWJ1dGVzIHtcbiBcdE5MODAyMTFfVFhSQVRFX0VIVCxcbiBcdE5MODAyMTFfVFhSQVRFX0VIVF9HSSxcbiBcdE5MODAyMTFfVFhSQVRFX0VIVF9MVEYsXG4mIzQzO1x0Tkw4MDIxMV9UWFJBVEVfNkdIWl9OT05fSFRfRFVQLFxuIFxuIFx0Lyoga2VlcCBsYXN0ICovXG4gXHRfX05MODAyMTFfVFhSQVRFX0FGVEVSX0xBU1QsXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL25sODAyMTEuYyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmNcbmluZGV4IDQ0ZjJiYWQwODY3MDUuLmNiNDc1MmZjMzhhMGYgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG5AQCAtNTY5LDYgJiM0Mzs1NjksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgbmw4MDIxMV90eGF0dHJfcG9saWN5W05MODAyMTFfVFhSQVRFX01BWCAmIzQzOyAxXSA9IHtcbiBcdFtOTDgwMjExX1RYUkFURV9FSFRfTFRGXSA9IE5MQV9QT0xJQ1lfUkFOR0UoTkxBX1U4LFxuIFx0XHRcdFx0XHRcdCAgIE5MODAyMTFfUkFURV9JTkZPX0VIVF8xWExURixcbiBcdFx0XHRcdFx0XHQgICBOTDgwMjExX1JBVEVfSU5GT19FSFRfOFhMVEYpLFxuJiM0MztcdFtOTDgwMjExX1RYUkFURV82R0haX05PTl9IVF9EVVBdID0geyAudHlwZSA9IE5MQV9GTEFHIH0sXG4gXG4gfTtcbiBcbkBAIC02MzAzLDYgJiM0Mzs2MzA0LDE0IEBAIHN0YXRpYyBpbnQgbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2soc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcbiBcdFx0XHRtYXNrLVx1MDAzZWNvbnRyb2xbYmFuZF0uZWh0X2x0ZiA9XG4gXHRcdFx0XHRubGFfZ2V0X3U4KHRiW05MODAyMTFfVFhSQVRFX0VIVF9MVEZdKTtcbiBcbiYjNDM7XHRcdGlmICh0YltOTDgwMjExX1RYUkFURV82R0haX05PTl9IVF9EVVBdKSB7XG4mIzQzO1x0XHRcdGlmIChiYW5kICE9IE5MODAyMTFfQkFORF82R0haIHx8XG4mIzQzO1x0XHRcdCAgICAod2Rldi1cdTAwM2VpZnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVAgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdCAgICAgd2Rldi1cdTAwM2VpZnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfUDJQX0dPKSlcbiYjNDM7XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdFx0bWFzay1cdTAwM2Vjb250cm9sW2JhbmRdLm5vbmh0X2R1cF82Z2h6ID0gdHJ1ZTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4gXHRcdGlmIChtYXNrLVx1MDAzZWNvbnRyb2xbYmFuZF0ubGVnYWN5ID09IDApIHtcbiBcdFx0XHQvKiBkb24mIzM5O3QgYWxsb3cgZW1wdHkgbGVnYWN5IHJhdGVzIGlmIEhULCBWSFQsIEhFIG9yIEVIVFxuIFx0XHRcdCAqIGFyZSBub3QgZXZlbiBzdXBwb3J0ZWQuXG5AQCAtNjM0NCw2ICYjNDM7NjM1Myw3IEBAIHN0YXRpYyBpbnQgdmFsaWRhdGVfYmVhY29uX3R4X3JhdGUoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuIHtcbiBcdHUzMiBjb3VudF9odCwgY291bnRfdmh0LCBjb3VudF9oZSwgY291bnRfZWh0LCBpO1xuIFx0dTMyIHJhdGUgPSBiZWFjb25fcmF0ZS1cdTAwM2Vjb250cm9sW2JhbmRdLmxlZ2FjeTtcbiYjNDM7XHRib29sIG5vbmh0X2R1cCA9IGJlYWNvbl9yYXRlLVx1MDAzZWNvbnRyb2xbYmFuZF0ubm9uaHRfZHVwXzZnaHo7XG4gXG4gXHQvKiBBbGxvdyBvbmx5IG9uZSByYXRlICovXG4gXHRpZiAoaHdlaWdodDMyKHJhdGUpIFx1MDAzZSAxKVxuQEAgLTY0MDUsNiAmIzQzOzY0MTUsOSBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2JlYWNvbl90eF9yYXRlKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdCAgICAoIXJhdGUgXHUwMDI2XHUwMDI2ICFjb3VudF9odCBcdTAwMjZcdTAwMjYgIWNvdW50X3ZodCBcdTAwMjZcdTAwMjYgIWNvdW50X2hlIFx1MDAyNlx1MDAyNiAhY291bnRfZWh0KSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4mIzQzO1x0aWYgKG5vbmh0X2R1cCBcdTAwMjZcdTAwMjYgIXJhdGUpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4gXHRpZiAocmF0ZSBcdTAwMjZcdTAwMjZcbiBcdCAgICAhd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSxcbiBcdFx0XHRcdCAgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV9CRUFDT05fUkFURV9MRUdBQ1kpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEwOjQwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25sODAyMTFfc3RhcnRfYXAmIzM0OywKICAgICYjMzQ7bmw4MDIxMV9zZXRfdHhfYml0cmF0ZV9tYXNrJiMzNDssCiAgICAmIzM0O25sODAyMTFfam9pbl9tZXNoJiMzNDssCiAgICAmIzM0O25sODAyMTFfc2V0X3RpZF9jb25maWcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyBuZXRsaW5rIGF0dHJpYnV0ZSBgTkw4MDIxMV9UWFJBVEVfNkdIWl9OT05fSFRfRFVQYCBmb3IgY29uZmlndXJpbmcgNiBHSHogbm9uLUhUIGR1cGxpY2F0ZSBCZWFjb24gdHJhbnNtaXNzaW9uLiBJdCBtb2RpZmllcyB0aGUgcGFyc2luZyBhbmQgdmFsaWRhdGlvbiBsb2dpYyBpbiBgbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2tgIGFuZCBgdmFsaWRhdGVfYmVhY29uX3R4X3JhdGVgLCB3aGljaCBhcmUgcmVhY2hhYmxlIHZpYSBzZXZlcmFsIG5sODAyMTEgbmV0bGluayBjb21tYW5kcyAoZS5nLiwgc3RhcnRpbmcgYW4gQVAsIGpvaW5pbmcgYSBtZXNoLCBzZXR0aW5nIFRYIGJpdHJhdGUgbWFzaywgc2V0dGluZyBUSUQgY29uZmlnKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjZmc4MDIxMSBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgdGVzdGVkIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIFdpLUZpIGRldmljZXMgKG1hYzgwMjExX2h3c2ltKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDUyOTQ4ZTUzZjQ2ZTExM2QyZmUyMzRiMDVhOTg0YWE2M2MxNDQ2N2UKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyA1IDEwOjQwOjQ2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBiL2luY2x1ZGUvbmV0L2NmZzgwMjExLmgKaW5kZXggOTdjMTZkNGZmMTI3MS4uNmJjNDkwMTA4MzAzYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oCkBAIC05MDEsNiAmIzQzOzkwMSw3IEBAIHN0cnVjdCBjZmc4MDIxMV9iaXRyYXRlX21hc2sgewogCQllbnVtIG5sODAyMTFfZWh0X2dpIGVodF9naTsKIAkJZW51bSBubDgwMjExX2hlX2x0ZiBoZV9sdGY7CiAJCWVudW0gbmw4MDIxMV9laHRfbHRmIGVodF9sdGY7CiYjNDM7CQlib29sIG5vbmh0X2R1cF82Z2h6OwogCX0gY29udHJvbFtOVU1fTkw4MDIxMV9CQU5EU107CiB9OwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaAppbmRleCAwMjAzODdkNzY0MTIyLi5kOGZlZmVmYzExYTk1IDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmgKQEAgLTU5MDAsNiAmIzQzOzU5MDAsOSBAQCBlbnVtIG5sODAyMTFfa2V5X2F0dHJpYnV0ZXMgewogICoJc2VlICZhbXA7c3RydWN0IG5sODAyMTFfdHhyYXRlX2VodAogICogQE5MODAyMTFfVFhSQVRFX0VIVF9HSTogY29uZmlndXJlIEVIVCBHSSwgKHU4LCBzZWUgJmFtcDtlbnVtIG5sODAyMTFfZWh0X2dpKQogICogQE5MODAyMTFfVFhSQVRFX0VIVF9MVEY6IGNvbmZpZ3VyZSBFSFQgTFRGLCAodTgsIHNlZSAmYW1wO2VudW0gbmw4MDIxMV9laHRfbHRmKQomIzQzOyAqIEBOTDgwMjExX1RYUkFURV82R0haX05PTl9IVF9EVVA6IGNvbmZpZ3VyZSA2IEdIeiBub24tSFQgZHVwbGljYXRlIEJlYWNvbgomIzQzOyAqCXRyYW5zbWlzc2lvbi4gVGhpcyBmbGFnIGlzIGFwcGxpY2FibGUgb25seSBpbiBCZWFjb24gVFggcmF0ZSBzZXR0aW5nCiYjNDM7ICoJYW5kIG11c3QgYmUgYWNjb21wYW5pZWQgYnkgYSBub24tSFQgKGxlZ2FjeSkgQmVhY29uIHJhdGUuCiAgKiBAX19OTDgwMjExX1RYUkFURV9BRlRFUl9MQVNUOiBpbnRlcm5hbAogICogQE5MODAyMTFfVFhSQVRFX01BWDogaGlnaGVzdCBUWCByYXRlIGF0dHJpYnV0ZQogICovCkBAIC01OTE1LDYgJiM0Mzs1OTE4LDcgQEAgZW51bSBubDgwMjExX3R4X3JhdGVfYXR0cmlidXRlcyB7CiAJTkw4MDIxMV9UWFJBVEVfRUhULAogCU5MODAyMTFfVFhSQVRFX0VIVF9HSSwKIAlOTDgwMjExX1RYUkFURV9FSFRfTFRGLAomIzQzOwlOTDgwMjExX1RYUkFURV82R0haX05PTl9IVF9EVVAsCiAKIAkvKiBrZWVwIGxhc3QgKi8KIAlfX05MODAyMTFfVFhSQVRFX0FGVEVSX0xBU1QsCmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jIGIvbmV0L3dpcmVsZXNzL25sODAyMTEuYwppbmRleCA0NGYyYmFkMDg2NzA1Li5jYjQ3NTJmYzM4YTBmIDEwMDY0NAotLS0gYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmMKQEAgLTU2OSw2ICYjNDM7NTY5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IG5sODAyMTFfdHhhdHRyX3BvbGljeVtOTDgwMjExX1RYUkFURV9NQVggJiM0MzsgMV0gPSB7CiAJW05MODAyMTFfVFhSQVRFX0VIVF9MVEZdID0gTkxBX1BPTElDWV9SQU5HRShOTEFfVTgsCiAJCQkJCQkgICBOTDgwMjExX1JBVEVfSU5GT19FSFRfMVhMVEYsCiAJCQkJCQkgICBOTDgwMjExX1JBVEVfSU5GT19FSFRfOFhMVEYpLAomIzQzOwlbTkw4MDIxMV9UWFJBVEVfNkdIWl9OT05fSFRfRFVQXSA9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LAogCiB9OwogCkBAIC02MzAzLDYgJiM0Mzs2MzA0LDE0IEBAIHN0YXRpYyBpbnQgbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2soc3RydWN0IGdlbmxfaW5mbyAqaW5mbywKIAkJCW1hc2stJmd0O2NvbnRyb2xbYmFuZF0uZWh0X2x0ZiA9CiAJCQkJbmxhX2dldF91OCh0YltOTDgwMjExX1RYUkFURV9FSFRfTFRGXSk7CiAKJiM0MzsJCWlmICh0YltOTDgwMjExX1RYUkFURV82R0haX05PTl9IVF9EVVBdKSB7CiYjNDM7CQkJaWYgKGJhbmQgIT0gTkw4MDIxMV9CQU5EXzZHSFogfHwKJiM0MzsJCQkgICAgKHdkZXYtJmd0O2lmdHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUCAmYW1wOyZhbXA7CiYjNDM7CQkJICAgICB3ZGV2LSZndDtpZnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfUDJQX0dPKSkKJiM0MzsJCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQkJbWFzay0mZ3Q7Y29udHJvbFtiYW5kXS5ub25odF9kdXBfNmdoeiA9IHRydWU7CiYjNDM7CQl9CiYjNDM7CiAJCWlmIChtYXNrLSZndDtjb250cm9sW2JhbmRdLmxlZ2FjeSA9PSAwKSB7CiAJCQkvKiBkb24mIzM5O3QgYWxsb3cgZW1wdHkgbGVnYWN5IHJhdGVzIGlmIEhULCBWSFQsIEhFIG9yIEVIVAogCQkJICogYXJlIG5vdCBldmVuIHN1cHBvcnRlZC4KQEAgLTYzNDQsNiAmIzQzOzYzNTMsNyBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2JlYWNvbl90eF9yYXRlKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldiwKIHsKIAl1MzIgY291bnRfaHQsIGNvdW50X3ZodCwgY291bnRfaGUsIGNvdW50X2VodCwgaTsKIAl1MzIgcmF0ZSA9IGJlYWNvbl9yYXRlLSZndDtjb250cm9sW2JhbmRdLmxlZ2FjeTsKJiM0MzsJYm9vbCBub25odF9kdXAgPSBiZWFjb25fcmF0ZS0mZ3Q7Y29udHJvbFtiYW5kXS5ub25odF9kdXBfNmdoejsKIAogCS8qIEFsbG93IG9ubHkgb25lIHJhdGUgKi8KIAlpZiAoaHdlaWdodDMyKHJhdGUpICZndDsgMSkKQEAgLTY0MDUsNiAmIzQzOzY0MTUsOSBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2JlYWNvbl90eF9yYXRlKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldiwKIAkgICAgKCFyYXRlICZhbXA7JmFtcDsgIWNvdW50X2h0ICZhbXA7JmFtcDsgIWNvdW50X3ZodCAmYW1wOyZhbXA7ICFjb3VudF9oZSAmYW1wOyZhbXA7ICFjb3VudF9laHQpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAomIzQzOwlpZiAobm9uaHRfZHVwICZhbXA7JmFtcDsgIXJhdGUpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKIAlpZiAocmF0ZSAmYW1wOyZhbXA7CiAJICAgICF3aXBoeV9leHRfZmVhdHVyZV9pc3NldCgmYW1wO3JkZXYtJmd0O3dpcGh5LAogCQkJCSAgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV9CRUFDT05fUkFURV9MRUdBQ1kpKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMDo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzk1CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMzEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFdpcmVsZXNzIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQgdG91Y2hlcyBzb21lIGNvcmUgd2lyZWxlc3MgaW5mcmFzdHJ1Y3R1cmUgZmlsZXM6IGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jYCwgYGluY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmhgLCBhbmQgYGluY2x1ZGUvbmV0L2NmZzgwMjExLmhgLiBJbW1lZGlhdGVseSwgSSBzZWUgaXQmIzM5O3MgYWRkaW5nIGEgbmV3IG5ldGxpbmsgYXR0cmlidXRlLCBgTkw4MDIxMV9UWFJBVEVfNkdIWl9OT05fSFRfRFVQYCwgdG8gdGhlIGBubDgwMjExX3R4X3JhdGVfYXR0cmlidXRlc2AgZW51bS4gVGhhdCYjMzk7cyBhIGZsYWcgZm9yIHR4IHJhdGUgY29uZmlnLi4uIGdvdCBpdC4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggdGhlbiBpbXBsZW1lbnRzIHBhcnNpbmcgb2YgdGhlIGF0dHJpYnV0ZSBpbiBgbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2tgIGFuZCB2YWxpZGF0ZXMgaXQgaW4gYHZhbGlkYXRlX2JlYWNvbl90eF9yYXRlYC4KClJpZ2h0IGF3YXksIHRoaXMgc2NyZWFtcyAmIzM0O25ldGxpbmsgaW50ZXJhY3Rpb24mIzM0OyB0byBtZS4gU3BlY2lmaWNhbGx5LCB3ZSYjMzk7cmUgbW9kaWZ5aW5nIHRoZSBgY2ZnODAyMTEvbmw4MDIxMWAgc3Vic3lzdGVtLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB2aWEgbmV0bGluayBzb2NrZXRzLCBzbywgYWJzb2x1dGVseSwgdGhpcyBuZWVkcyBmdXp6aW5nLiBUaGFua2Z1bGx5LCBJIGNhbiBlbXVsYXRlIGhhcmR3YXJlIHdpdGggYG1hYzgwMjExX2h3c2ltYCB0byB0ZXN0IHRoaXMgcHJvcGVybHkuCgpMZXQmIzM5O3MgZm9jdXMgb24gdGhlIHR3byBmdW5jdGlvbnMgbW9kaWZpZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHNvIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjazoKCiogICBgbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2tgCiogICBgdmFsaWRhdGVfYmVhY29uX3R4X3JhdGVgCgpJIG5lZWQgdG8gc2VlIHdoZXJlIGBubDgwMjExX3BhcnNlX3R4X2JpdHJhdGVfbWFza2AgaXMgY2FsbGVkLCBzbyBJJiMzOTtsbCBncmVwIGZvciB0aGF0LiBBaCwgaXQmIzM5O3Mgc3RhdGljIGluIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jYC4gT2ssIHNvIG5vdyBJIG5lZWQgdG8gZmluZCB0aGUgY2FsbGVycyBvZiBgbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2tgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEwOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25sODAyMTFfcGFyc2VfdHhfYml0cmF0ZV9tYXNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL25sODAyMTEuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTYwOTc9c3RhdGljIGJvb2wgZWh0X3NldF9tY3NfbWFzayhzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNjE1Ny1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NjE1ODpzdGF0aWMgaW50IG5sODAyMTFfcGFyc2VfdHhfYml0cmF0ZV9tYXNrKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTYxNTktXHRcdFx0XHRcdCBzdHJ1Y3QgbmxhdHRyICphdHRyc1tdLFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9NzIxMD1zdGF0aWMgaW50IG5sODAyMTFfc3RhcnRfYXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTczODQtXHRpZiAoaW5mby1cdTAwM2VhdHRyc1tOTDgwMjExX0FUVFJfVFhfUkFURVNdKSB7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjczODU6XHRcdGVyciA9IG5sODAyMTFfcGFyc2VfdHhfYml0cmF0ZV9tYXNrKGluZm8sIGluZm8tXHUwMDNlYXR0cnMsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTczODYtXHRcdFx0XHRcdFx0ICAgIE5MODAyMTFfQVRUUl9UWF9SQVRFUyxcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE0Njk4PXN0YXRpYyBpbnQgbmw4MDIxMV9zZXRfdHhfYml0cmF0ZV9tYXNrKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDcwOS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTQ3MTA6XHRlcnIgPSBubDgwMjExX3BhcnNlX3R4X2JpdHJhdGVfbWFzayhpbmZvLCBpbmZvLVx1MDAzZWF0dHJzLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDcxMS1cdFx0XHRcdFx0ICAgIE5MODAyMTFfQVRUUl9UWF9SQVRFUywgXHUwMDI2bWFzayxcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE1Mjc4PXN0YXRpYyBpbnQgbmw4MDIxMV9qb2luX21lc2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE1MzY0LVx0aWYgKGluZm8tXHUwMDNlYXR0cnNbTkw4MDIxMV9BVFRSX1RYX1JBVEVTXSkge1xubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNTM2NTpcdFx0ZXJyID0gbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2soaW5mbywgaW5mby1cdTAwM2VhdHRycyxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTUzNjYtXHRcdFx0XHRcdFx0ICAgIE5MODAyMTFfQVRUUl9UWF9SQVRFUyxcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE4NzU1PXN0YXRpYyBpbnQgcGFyc2VfdGlkX2NvbmYoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTg4MzEtXHRcdFx0YXR0ciA9IE5MODAyMTFfVElEX0NPTkZJR19BVFRSX1RYX1JBVEU7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE4ODMyOlx0XHRcdGVyciA9IG5sODAyMTFfcGFyc2VfdHhfYml0cmF0ZV9tYXNrKGluZm8sIGF0dHJzLCBhdHRyLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODgzMy1cdFx0XHRcdFx0XHQgICAgXHUwMDI2dGlkX2NvbmYtXHUwMDNldHhyYXRlX21hc2ssIGRldixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMDo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTgwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ2FsbGVycyBvZiBgbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2tgKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2tgIGlzIGJlaW5nIHVzZWQuIEEgcXVpY2sgc2NhbiByZXZlYWxzIHRoYXQgaXQmIzM5O3MgY2FsbGVkIGZyb20gYG5sODAyMTFfc3RhcnRfYXBgLCBgbmw4MDIxMV9zZXRfdHhfYml0cmF0ZV9tYXNrYCwgYG5sODAyMTFfam9pbl9tZXNoYCwgYW5kLCBpbmRpcmVjdGx5LCB0aHJvdWdoIGBwYXJzZV90aWRfY29uZmAsIGZyb20gYG5sODAyMTFfc2V0X3RpZF9jb25maWdgLiBUaGlzIGdpdmVzIG1lIGEgZ29vZCBvdmVydmlldzsgaXQmIzM5O3MgYmVpbmcgdXNlZCBpbiBBUCBzZXR1cCwgc2V0dGluZyBleHBsaWNpdCBiaXRyYXRlIG1hc2tzLCBtZXNoIG5ldHdvcmsgam9pbnMsIGFuZCB0aHJvdWdoIHRoZSBUcmFmZmljIElkZW50aWZpZXIgKFRJRCkgY29uZmlndXJhdGlvbi4gVGhpcyB0ZWxscyBtZSBhYm91dCBjb25maWd1cmF0aW9uIGFuZCBvcGVyYXRpb25hbCBjb250ZXh0cy4KCk5vdywgbGV0JiMzOTtzIHNlZSBob3cgYHZhbGlkYXRlX2JlYWNvbl90eF9yYXRlYCBmaXRzIGludG8gdGhpcyBwaWN0dXJlLiBJIHdhbnQgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBvdmVybGFwIG9yIGRlcGVuZGVuY3kgdGhlcmUsIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBiaXRyYXRlIG1hc2sgcGFyc2luZyBpbnRlZ3JhdGVzIHdpdGggdGhlIG92ZXJhbGwgdmFsaWRhdGlvbiBhbmQgYmVhY29uaW5nIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTA6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmFsaWRhdGVfYmVhY29uX3R4X3JhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9ubDgwMjExLmM9NjE1OD1zdGF0aWMgaW50IG5sODAyMTFfcGFyc2VfdHhfYml0cmF0ZV9tYXNrKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy02MzQ5LVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo2MzUwOnN0YXRpYyBpbnQgdmFsaWRhdGVfYmVhY29uX3R4X3JhdGUoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy02MzUxLVx0XHRcdFx0ICAgZW51bSBubDgwMjExX2JhbmQgYmFuZCxcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTcyMTA9c3RhdGljIGludCBubDgwMjExX3N0YXJ0X2FwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy03MzkxLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo3MzkyOlx0XHRlcnIgPSB2YWxpZGF0ZV9iZWFjb25fdHhfcmF0ZShyZGV2LCBwYXJhbXMtXHUwMDNlY2hhbmRlZi5jaGFuLVx1MDAzZWJhbmQsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTczOTMtXHRcdFx0XHRcdCAgICAgIFx1MDAyNnBhcmFtcy1cdTAwM2ViZWFjb25fcmF0ZSk7XG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xNTI3OD1zdGF0aWMgaW50IG5sODAyMTFfam9pbl9tZXNoKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNTM3NC1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTUzNzU6XHRcdGVyciA9IHZhbGlkYXRlX2JlYWNvbl90eF9yYXRlKHJkZXYsIHNldHVwLmNoYW5kZWYuY2hhbi1cdTAwM2ViYW5kLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNTM3Ni1cdFx0XHRcdFx0ICAgICAgXHUwMDI2c2V0dXAuYmVhY29uX3JhdGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEwOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MDEKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEJlYWNvbiBUcmFuc21pc3Npb24gUmF0ZSBWYWxpZGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIGB2YWxpZGF0ZV9iZWFjb25fdHhfcmF0ZWAgZnVuY3Rpb24gZ2V0cyB1c2VkLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgbmw4MDIxMV9zdGFydF9hcGAgYW5kIGBubDgwMjExX2pvaW5fbWVzaGAgYXJlIHRoZSBrZXkgY2FsbGVycyBoZXJlLiBTbywgbG9naWNhbGx5LCB0aGUgcHJpbWFyeSBmb2N1cyBwb2ludHMgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBzaG91bGQgYmU6IGBubDgwMjExX3N0YXJ0X2FwYCwgYG5sODAyMTFfc2V0X3R4X2JpdHJhdGVfbWFza2AsIGFuZCBgbmw4MDIxMV9qb2luX21lc2hgLiBJIGFsc28gaGF2ZSB0byBrZWVwIGFuIGV5ZSBvbiBgbmw4MDIxMV9zZXRfdGlkX2NvbmZpZ2AsIHNpbmNlIGl0IGNhbGxzIGBwYXJzZV90aWRfY29uZmAgd2hpY2ggY291bGQgYmUgcmVsZXZhbnQsIHRob3VnaCBpbiBhbiBpbmRpcmVjdCBtYW5uZXIuCgpCZWZvcmUgSSBnbyBmdXJ0aGVyLCBJIHNob3VsZCBqdXN0IHF1aWNrbHkgZG91YmxlIGNoZWNrIHRoYXQgYG5sODAyMTFfc2V0X3RpZF9jb25maWdgIGlzIGFjdHVhbGx5IGRlZmluZWQsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBBIGJhc2ljIHZlcmlmaWNhdGlvbiBpcyBhbHdheXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEwOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25sODAyMTFfc2V0X3RpZF9jb25maWcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9ubDgwMjExLmM9MTg3NTU9c3RhdGljIGludCBwYXJzZV90aWRfY29uZihzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODg1NS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTg4NTY6c3RhdGljIGludCBubDgwMjExX3NldF90aWRfY29uZmlnKHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE4ODU3LVx0XHRcdFx0ICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTk3NDY9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBubDgwMjExX3NtYWxsX29wc1tdID0ge1xuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjA1MjMtXHRcdC5jbWQgPSBOTDgwMjExX0NNRF9TRVRfVElEX0NPTkZJRyxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjA1MjQ6XHRcdC5kb2l0ID0gbmw4MDIxMV9zZXRfdGlkX2NvbmZpZyxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjA1MjUtXHRcdC5mbGFncyA9IEdFTkxfVU5TX0FETUlOX1BFUk0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTA6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUxMgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgYG5sODAyMTFfc2V0X3RpZF9jb25maWdgIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIGBubDgwMjExX3NldF90aWRfY29uZmlnYCBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb24sIHRoYXQmIzM5O3MgY29uZmlybWVkLiBOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgKnJlcXVpcmVkKiB0byBtYWtlIHRoYXQgd29yaz8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcywgdGhlIEtjb25maWcgc3ltYm9scywgYW5kIGFueSByZWxldmFudCBNYWtlZmlsZSBlbnRyaWVzLiBUaGUgY29kZSBpdHNlbGYsIEkgcmVjYWxsLCBsaXZlcyB3aXRoaW4gYG5ldC93aXJlbGVzcy9ubDgwMjExLmNgLiBTbywgSSYjMzk7bGwgc3RhcnQgZGlnZ2luZyBpbiBgbmV0L3dpcmVsZXNzL0tjb25maWdgIGFuZCBgbmV0L3dpcmVsZXNzL01ha2VmaWxlYCB0byBzZWUgaG93IHRoaXMgcGFydGljdWxhciBmdW5jdGlvbiBpcyBlbmFibGVkLiBUaG9zZSBzaG91bGQgdGVsbCB0aGUgd2hvbGUgc3RvcnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEwOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25sODAyMTEubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvTWFrZWZpbGU9Nz1vYmotJChDT05GSUdfV0VYVF9QUklWKSAmIzQzOz0gd2V4dC1wcml2Lm9cbm5ldC93aXJlbGVzcy9NYWtlZmlsZS04LVxubmV0L3dpcmVsZXNzL01ha2VmaWxlOjk6Y2ZnODAyMTEteSAmIzQzOz0gY29yZS5vIHN5c2ZzLm8gcmFkaW90YXAubyB1dGlsLm8gcmVnLm8gc2Nhbi5vIG5sODAyMTEub1xubmV0L3dpcmVsZXNzL01ha2VmaWxlLTEwLWNmZzgwMjExLXkgJiM0Mzs9IG1sbWUubyBpYnNzLm8gc21lLm8gY2hhbi5vIGV0aHRvb2wubyBtZXNoLm8gYXAubyB0cmFjZS5vIG9jYi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEwOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5MTkKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgY2ZnODAyMTEgQ29kZWJhc2UqKgoKQWxyaWdodCwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgc29tZXRoaW5nIHRoYXQgY2xlYXJseSBmYWxscyB1bmRlciB0aGUgdW1icmVsbGEgb2YgYGNmZzgwMjExYC4gVGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIE15IG5leHQgbW92ZSBpcyBhbHdheXMgdG8gcXVpY2tseSBvcmllbnQgbXlzZWxmIHdpdGhpbiB0aGUgcmVsZXZhbnQgY29kZWJhc2UuIEluIHRoaXMgY2FzZSwgSSYjMzk7ZCBpbnN0aW5jdGl2ZWx5IHJlYWNoIGZvciB0aGUgYG5ldC93aXJlbGVzcy9NYWtlZmlsZWAuIEl0JiMzOTtzIHRoZSBjZW50cmFsIHBvaW50IGZvciBidWlsZGluZyBhbmQgbGlua2luZyB3aXJlbGVzcyBjb21wb25lbnRzLCBpbmNsdWRpbmcsIG9mIGNvdXJzZSwgYGNmZzgwMjExYC4gVGhhdCBNYWtlZmlsZSB3aWxsIGdpdmUgbWUgYSB2ZXJ5IHF1aWNrIG92ZXJ2aWV3IG9mIHdoYXQmIzM5O3MgYmVpbmcgYnVpbHQsIHdoaWNoIGRyaXZlcnMgYW5kIG1vZHVsZXMgYXJlIGRlcGVuZGVudCBvbiBgY2ZnODAyMTFgLCBhbmQgd2hhdCBvdGhlciBrZXkgbW9kdWxlcyBpbnRlcmFjdCB3aXRoIGl0LiBJdCYjMzk7cyBhIHF1aWNrIHdheSB0byBnZXQgYSBoaWdoLWxldmVsIHZpZXcgb2YgZGVwZW5kZW5jaWVzIGFuZCBpZGVudGlmeSBwb3RlbnRpYWxseSByZWxldmFudCBzb3VyY2UgZmlsZXMgZm9yIHdoYXRldmVyIEkmIzM5O20gdHJvdWJsZXNob290aW5nIG9yIGludmVzdGlnYXRpbmcuIEl0IGlzIHRoZSBsb2dpY2FsIGZpcnN0IHN0ZXAsIHRoZSBwb2ludCB3aGVyZSBJIGNhbiBxdWlja2x5IHNlZSB0aGUgbGF5IG9mIHRoZSBsYW5kLiBJIG5lZWQgdGhpcyB0byBjcmVhdGUgYW4gb3V0bGluZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTA6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2ZnODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxubmV0L3dpcmVsZXNzL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0NGRzgwMjExKSAmIzQzOz0gY2ZnODAyMTEub1xubmV0L3dpcmVsZXNzL01ha2VmaWxlLTMtb2JqLXkgJiM0Mzs9IHRlc3RzL1xuLS1cbm5ldC93aXJlbGVzcy9NYWtlZmlsZT03PW9iai0kKENPTkZJR19XRVhUX1BSSVYpICYjNDM7PSB3ZXh0LXByaXYub1xubmV0L3dpcmVsZXNzL01ha2VmaWxlLTgtXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU6OTpjZmc4MDIxMS15ICYjNDM7PSBjb3JlLm8gc3lzZnMubyByYWRpb3RhcC5vIHV0aWwubyByZWcubyBzY2FuLm8gbmw4MDIxMS5vXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU6MTA6Y2ZnODAyMTEteSAmIzQzOz0gbWxtZS5vIGlic3MubyBzbWUubyBjaGFuLm8gZXRodG9vbC5vIG1lc2gubyBhcC5vIHRyYWNlLm8gb2NiLm9cbm5ldC93aXJlbGVzcy9NYWtlZmlsZToxMTpjZmc4MDIxMS15ICYjNDM7PSBtaWNoYWVsLW1pYy5vIHBtc3Iub1xubmV0L3dpcmVsZXNzL01ha2VmaWxlOjEyOmNmZzgwMjExLSQoQ09ORklHX09GKSAmIzQzOz0gb2Yub1xubmV0L3dpcmVsZXNzL01ha2VmaWxlOjEzOmNmZzgwMjExLSQoQ09ORklHX0NGRzgwMjExX0RFQlVHRlMpICYjNDM7PSBkZWJ1Z2ZzLm9cbm5ldC93aXJlbGVzcy9NYWtlZmlsZToxNDpjZmc4MDIxMS0kKENPTkZJR19DRkc4MDIxMV9XRVhUKSAmIzQzOz0gd2V4dC1jb21wYXQubyB3ZXh0LXNtZS5vXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtMTUtXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU9MTY9Q0ZMQUdTX3RyYWNlLm8gOj0gLUkkKHNyYylcbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0xNy1cbm5ldC93aXJlbGVzcy9NYWtlZmlsZToxODpjZmc4MDIxMS0kKENPTkZJR19DRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVMpICYjNDM7PSBzaGlwcGVkLWNlcnRzLm9cbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0xOS1pZm5lcSAoJChDT05GSUdfQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSKSwpXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU6MjA6Y2ZnODAyMTEteSAmIzQzOz0gZXh0cmEtY2VydHMub1xubmV0L3dpcmVsZXNzL01ha2VmaWxlLTIxLWVuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEwOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3MDQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIFdpcmVsZXNzIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZywgYmFzZWQgb24gdGhpcywgd2UgZGVmaW5pdGVseSBuZWVkIGBDT05GSUdfQ0ZHODAyMTFgLiBUaGF0JiMzOTtzIGEgZ2l2ZW4uIEJ1dCBJIHN1c3BlY3Qgd2UgbWlnaHQgYWxzbyBuZWVkIHRvIGVuYWJsZSBgQ09ORklHX01BQzgwMjExX0hXU0lNYCB0byBwcm9wZXJseSBlbXVsYXRlIHRoZSBoYXJkd2FyZSBhbmQgYWN0dWFsbHkgaGl0IHRob3NlIHNwZWNpZmljIGNvZGUgcGF0aHMuIEl0JiMzOTtzIHRoZSBzaW11bGF0aW9uIG9mIHRoZSBoYXJkd2FyZSB0aGF0IHdpbGwgbGlrZWx5IGFsbG93IHVzIHRvIHJlYWNoIHRoZSBwYXJ0cyBvZiB0aGUgY29kZSB0aGF0IHJlcXVpcmUgYSByZWdpc3RlcmVkIGB3aXBoeWAgZGV2aWNlLiBSaWdodCwgbGV0JiMzOTtzIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYENPTkZJR19NQUM4MDIxMV9IV1NJTWAgc2V0dGluZyBhbmQgbWFrZSBzdXJlIGl0JiMzOTtzIHNldCBhY2NvcmRpbmdseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTA6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQzgwMjExX0hXU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZzoxOmNvbmZpZyBNQUM4MDIxMV9IV1NJTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxMVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMDo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDIyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktlcm5lbCBXaXJlbGVzcyBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGtlcm5lbCB3aXJlbGVzcyBzZXR1cC4gSSBrbm93IGBNQUM4MDIxMV9IV1NJTWAgaXMgYSBzb2xpZCBjaG9pY2UgZm9yIGEgc2ltdWxhdGVkIGVudmlyb25tZW50LCBhbmQgb2YgY291cnNlLCBgQ0ZHODAyMTFgIGFuZCB0aGUgY29yZSBgTUFDODAyMTFgIGFyZSBmdW5kYW1lbnRhbCBjb21wb25lbnRzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgTmV0bGluayBoYW5kbGVycyBpbiBgbmw4MDIxMS5jYC4gSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IGBubDgwMjExX3N0YXJ0X2FwYCwgYG5sODAyMTFfc2V0X3R4X2JpdHJhdGVfbWFza2AsIGBubDgwMjExX2pvaW5fbWVzaGAsIGFuZCBgbmw4MDIxMV9zZXRfdGlkX2NvbmZpZ2AuIFRoZXNlIGFyZSBrZXkgZnVuY3Rpb25hbGl0aWVzLCBhbmQgSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgaW50ZXJhY3Rpb25zIHdpdGggdGhvc2UgZnVuY3Rpb25zIGFyZSBwcm9wZXIuCgpJIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBjcnVjaWFsIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIEkmIzM5O3ZlIG92ZXJsb29rZWQuIEkga25vdyBgQ0ZHODAyMTFgIHNvbWV0aW1lcyByZWxpZXMgb24gYFJGS0lMTGAsIGJ1dCBpdCB1c3VhbGx5IHN0YW5kcyBvbiBpdHMgb3duLiBJJiMzOTtsbCBkb3VibGUtY2hlY2sgYG5ldC93aXJlbGVzcy9LY29uZmlnYCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gYWJvdXQgdGhlIGBDRkc4MDIxMWAgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMuIFRoaXMgaXMganVzdCBnb29kIHByYWN0aWNlOyBhbHdheXMgZG91YmxlIGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0ZHODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZz0xND1jb25maWcgV0VYVF9QUklWXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzpjb25maWcgQ0ZHODAyMTFcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7Y2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnPTM4PWNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctNTEtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo1Mjpjb25maWcgQ0ZHODAyMTFfREVWRUxPUEVSX1dBUk5JTkdTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01My1cdGJvb2wgXCYjMzQ7ZW5hYmxlIGRldmVsb3BlciB3YXJuaW5nc1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTY3LVxubmV0L3dpcmVsZXNzL0tjb25maWc6Njg6Y29uZmlnIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xubmV0L3dpcmVsZXNzL0tjb25maWctNjktXHRib29sIFwmIzM0O2NmZzgwMjExIGNlcnRpZmljYXRpb24gb251c1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTg4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6ODk6Y29uZmlnIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05MC1cdGJvb2wgXCYjMzQ7cmVxdWlyZSByZWdkYiBzaWduYXR1cmVcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctOTgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo5OTpjb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDAtXHRib29sIFwmIzM0O2FsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTEwLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTExOmNvbmZpZyBDRkc4MDIxMV9FWFRSQV9SRUdEQl9LRVlESVJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMi1cdHN0cmluZyBcJiMzNDthZGRpdGlvbmFsIHJlZ2RiIGtleSBkaXJlY3RvcnlcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTIxLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTIyOmNvbmZpZyBDRkc4MDIxMV9SRUdfQ0VMTFVMQVJfSElOVFNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgcmVndWxhdG9yeSBzdXBwb3J0IGZvciBjZWxsdWxhciBiYXNlIHN0YXRpb24gaGludHNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzQtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzU6Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTM2LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTU4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTU5OmNvbmZpZyBDRkc4MDIxMV9ERUZBVUxUX1BTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjAtXHRib29sIFwmIzM0O2VuYWJsZSBwb3dlcnNhdmUgYnkgZGVmYXVsdFwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE2OTpjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzc6Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc4LVx0Ym9vbCBcJiMzNDtzdXBwb3J0IENSREFcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTg2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTg3OmNvbmZpZyBDRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O2NmZzgwMjExIHdpcmVsZXNzIGV4dGVuc2lvbnMgY29tcGF0aWJpbGl0eVwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5My1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5NDpjb25maWcgQ0ZHODAyMTFfS1VOSVRfVEVTVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTk1LVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIGNmZzgwMjExXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTA6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQzNQoJCQkJCQkJb3V0cHV0OiAyNzAKCQkJCQkJCXRob3VnaHRzOiAyNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUHJvcG9zZWQgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhaW1lZCBzcXVhcmVseSBhdCB0aGUgd2lyZWxlc3MgbmV0d29ya2luZyBjb3JlLCBzcGVjaWZpY2FsbHkgdGhlIGBjZmc4MDIxMWAgc3Vic3lzdGVtLCB3aGljaCBpcyB0aGUgbWFpbiBjb25maWd1cmF0aW9uIGludGVyZmFjZS4gSXQmIzM5O3MgZ29vZCB0byBzZWUgdGhhdCB0aGV5JiMzOTtyZSB1c2luZyBgbWFjODAyMTFgIGFzIHdlbGwuIE9mIGNvdXJzZSwgYG1hYzgwMjExX2h3c2ltYCB3aWxsIGJlIHZpdGFsIGZvciB0ZXN0aW5nIHRoaXMga2luZCBvZiB0aGluZy4KClRoZSBjcnV4IG9mIHRoZSBtYXR0ZXIgaXMgdGhpcyBuZXcgbmV0bGluayBhdHRyaWJ1dGUsIGBOTDgwMjExX1RYUkFURV82R0haX05PTl9IVF9EVVBgLiBJdCBzZWVtcyB0aGV5JiMzOTtyZSBleHRlbmRpbmcgdGhlIGV4aXN0aW5nIGZ1bmN0aW9uYWxpdHkgdG8gaGFuZGxlIG5vbi1IVCBkdXBsaWNhdGUgQmVhY29uIHRyYW5zbWlzc2lvbnMgaW4gdGhlIDYgR0h6IGJhbmQuIE1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgb25nb2luZyBldm9sdXRpb24gb2Ygd2lyZWxlc3Mgc3RhbmRhcmRzLgoKSSBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIG1vZGlmaWNhdGlvbnMgaW4gYG5sODAyMTFfcGFyc2VfdHhfYml0cmF0ZV9tYXNrYCBhbmQgYHZhbGlkYXRlX2JlYWNvbl90eF9yYXRlYC4gVGhvc2UgYXJlIHRoZSBrZXkgcGllY2VzIGFmZmVjdGVkLCB3aGljaCBhcmUgY2FsbGVkIGJ5IGBubDgwMjExX3N0YXJ0X2FwYCwgYG5sODAyMTFfam9pbl9tZXNoYCwgYG5sODAyMTFfc2V0X3R4X2JpdHJhdGVfbWFza2AsIGFuZCBgbmw4MDIxMV9zZXRfdGlkX2NvbmZpZ2AuIFRoZXNlIGFyZSB0aGUgc3BlY2lmaWMgbmw4MDIxMSBjb21tYW5kcyB0aGlzIHdpbGwgYWZmZWN0LiBTb3VuZHMgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gdGVzdCBpbiB0aGUgYG1hYzgwMjExX2h3c2ltYCBlbnZpcm9ubWVudC4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0byBjaGVjayB0aGF0LiBJIHdhbnQgdG8gc2VlIGhvdyB0aGVzZSBzZXQtcmVzdWx0cyBmdW5jdGlvbiB0byBtYWtlIHN1cmUgdGhhdCBldmVyeXRoaW5nIGlzIGJlaGF2aW5nIGFzIGludGVuZGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtubDgwMjExX3N0YXJ0X2FwJiMzNDssCiAgICAmIzM0O25sODAyMTFfc2V0X3R4X2JpdHJhdGVfbWFzayYjMzQ7LAogICAgJiMzNDtubDgwMjExX2pvaW5fbWVzaCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3NldF90aWRfY29uZmlnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBuZXcgbmV0bGluayBhdHRyaWJ1dGUgYE5MODAyMTFfVFhSQVRFXzZHSFpfTk9OX0hUX0RVUGAgZm9yIGNvbmZpZ3VyaW5nIDYgR0h6IG5vbi1IVCBkdXBsaWNhdGUgQmVhY29uIHRyYW5zbWlzc2lvbi4gSXQgbW9kaWZpZXMgdGhlIHBhcnNpbmcgYW5kIHZhbGlkYXRpb24gbG9naWMgaW4gYG5sODAyMTFfcGFyc2VfdHhfYml0cmF0ZV9tYXNrYCBhbmQgYHZhbGlkYXRlX2JlYWNvbl90eF9yYXRlYCwgd2hpY2ggYXJlIHJlYWNoYWJsZSB2aWEgc2V2ZXJhbCBubDgwMjExIG5ldGxpbmsgY29tbWFuZHMgKGUuZy4sIHN0YXJ0aW5nIGFuIEFQLCBqb2luaW5nIGEgbWVzaCwgc2V0dGluZyBUWCBiaXRyYXRlIG1hc2ssIHNldHRpbmcgVElEIGNvbmZpZykuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY2ZnODAyMTEgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRlc3RlZCB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBXaS1GaSBkZXZpY2VzIChtYWM4MDIxMV9od3NpbSkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmw4MDIxMV9zdGFydF9hcCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3NldF90eF9iaXRyYXRlX21hc2smIzM0OywKICAgICYjMzQ7bmw4MDIxMV9qb2luX21lc2gmIzM0OywKICAgICYjMzQ7bmw4MDIxMV9zZXRfdGlkX2NvbmZpZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IG5ldGxpbmsgYXR0cmlidXRlIGBOTDgwMjExX1RYUkFURV82R0haX05PTl9IVF9EVVBgIGZvciBjb25maWd1cmluZyA2IEdIeiBub24tSFQgZHVwbGljYXRlIEJlYWNvbiB0cmFuc21pc3Npb24uIEl0IG1vZGlmaWVzIHRoZSBwYXJzaW5nIGFuZCB2YWxpZGF0aW9uIGxvZ2ljIGluIGBubDgwMjExX3BhcnNlX3R4X2JpdHJhdGVfbWFza2AgYW5kIGB2YWxpZGF0ZV9iZWFjb25fdHhfcmF0ZWAsIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIHNldmVyYWwgbmw4MDIxMSBuZXRsaW5rIGNvbW1hbmRzIChlLmcuLCBzdGFydGluZyBhbiBBUCwgam9pbmluZyBhIG1lc2gsIHNldHRpbmcgVFggYml0cmF0ZSBtYXNrLCBzZXR0aW5nIFRJRCBjb25maWcpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNmZzgwMjExIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSB0ZXN0ZWQgdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgV2ktRmkgZGV2aWNlcyAobWFjODAyMTFfaHdzaW0pLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTA6NDA6NDcuMjQ2NTI2MDM3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA1MTIzMTM4MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5sODAyMTFfc3RhcnRfYXBcIixcbiAgICBcIm5sODAyMTFfc2V0X3R4X2JpdHJhdGVfbWFza1wiLFxuICAgIFwibmw4MDIxMV9qb2luX21lc2hcIixcbiAgICBcIm5sODAyMTFfc2V0X3RpZF9jb25maWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3IG5ldGxpbmsgYXR0cmlidXRlIGBOTDgwMjExX1RYUkFURV82R0haX05PTl9IVF9EVVBgIGZvciBjb25maWd1cmluZyA2IEdIeiBub24tSFQgZHVwbGljYXRlIEJlYWNvbiB0cmFuc21pc3Npb24uIEl0IG1vZGlmaWVzIHRoZSBwYXJzaW5nIGFuZCB2YWxpZGF0aW9uIGxvZ2ljIGluIGBubDgwMjExX3BhcnNlX3R4X2JpdHJhdGVfbWFza2AgYW5kIGB2YWxpZGF0ZV9iZWFjb25fdHhfcmF0ZWAsIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIHNldmVyYWwgbmw4MDIxMSBuZXRsaW5rIGNvbW1hbmRzIChlLmcuLCBzdGFydGluZyBhbiBBUCwgam9pbmluZyBhIG1lc2gsIHNldHRpbmcgVFggYml0cmF0ZSBtYXNrLCBzZXR0aW5nIFRJRCBjb25maWcpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNmZzgwMjExIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSB0ZXN0ZWQgdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgV2ktRmkgZGV2aWNlcyAobWFjODAyMTFfaHdzaW0pLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMDo0MDo0Ny4yNDY1MzMxMjdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMjMyOTIyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDUyOTQ4ZTUzZjQ2ZTExM2QyZmUyMzRiMDVhOTg0YWE2M2MxNDQ2N2VcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgNSAxMDo0MDo0NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oIGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxcbmluZGV4IDk3YzE2ZDRmZjEyNzEuLjZiYzQ5MDEwODMwM2EgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxcbisrKyBiL2luY2x1ZGUvbmV0L2NmZzgwMjExLmhcXG5AQCAtOTAxLDYgKzkwMSw3IEBAIHN0cnVjdCBjZmc4MDIxMV9iaXRyYXRlX21hc2sge1xcbiBcXHRcXHRlbnVtIG5sODAyMTFfZWh0X2dpIGVodF9naTtcXG4gXFx0XFx0ZW51bSBubDgwMjExX2hlX2x0ZiBoZV9sdGY7XFxuIFxcdFxcdGVudW0gbmw4MDIxMV9laHRfbHRmIGVodF9sdGY7XFxuK1xcdFxcdGJvb2wgbm9uaHRfZHVwXzZnaHo7XFxuIFxcdH0gY29udHJvbFtOVU1fTkw4MDIxMV9CQU5EU107XFxuIH07XFxuIFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaFxcbmluZGV4IDAyMDM4N2Q3NjQxMjIuLmQ4ZmVmZWZjMTFhOTUgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaFxcbisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmhcXG5AQCAtNTkwMCw2ICs1OTAwLDkgQEAgZW51bSBubDgwMjExX2tleV9hdHRyaWJ1dGVzIHtcXG4gICpcXHRzZWUgXFx1MDAyNnN0cnVjdCBubDgwMjExX3R4cmF0ZV9laHRcXG4gICogQE5MODAyMTFfVFhSQVRFX0VIVF9HSTogY29uZmlndXJlIEVIVCBHSSwgKHU4LCBzZWUgXFx1MDAyNmVudW0gbmw4MDIxMV9laHRfZ2kpXFxuICAqIEBOTDgwMjExX1RYUkFURV9FSFRfTFRGOiBjb25maWd1cmUgRUhUIExURiwgKHU4LCBzZWUgXFx1MDAyNmVudW0gbmw4MDIxMV9laHRfbHRmKVxcbisgKiBATkw4MDIxMV9UWFJBVEVfNkdIWl9OT05fSFRfRFVQOiBjb25maWd1cmUgNiBHSHogbm9uLUhUIGR1cGxpY2F0ZSBCZWFjb25cXG4rICpcXHR0cmFuc21pc3Npb24uIFRoaXMgZmxhZyBpcyBhcHBsaWNhYmxlIG9ubHkgaW4gQmVhY29uIFRYIHJhdGUgc2V0dGluZ1xcbisgKlxcdGFuZCBtdXN0IGJlIGFjY29tcGFuaWVkIGJ5IGEgbm9uLUhUIChsZWdhY3kpIEJlYWNvbiByYXRlLlxcbiAgKiBAX19OTDgwMjExX1RYUkFURV9BRlRFUl9MQVNUOiBpbnRlcm5hbFxcbiAgKiBATkw4MDIxMV9UWFJBVEVfTUFYOiBoaWdoZXN0IFRYIHJhdGUgYXR0cmlidXRlXFxuICAqL1xcbkBAIC01OTE1LDYgKzU5MTgsNyBAQCBlbnVtIG5sODAyMTFfdHhfcmF0ZV9hdHRyaWJ1dGVzIHtcXG4gXFx0Tkw4MDIxMV9UWFJBVEVfRUhULFxcbiBcXHROTDgwMjExX1RYUkFURV9FSFRfR0ksXFxuIFxcdE5MODAyMTFfVFhSQVRFX0VIVF9MVEYsXFxuK1xcdE5MODAyMTFfVFhSQVRFXzZHSFpfTk9OX0hUX0RVUCxcXG4gXFxuIFxcdC8qIGtlZXAgbGFzdCAqL1xcbiBcXHRfX05MODAyMTFfVFhSQVRFX0FGVEVSX0xBU1QsXFxuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXFxuaW5kZXggNDRmMmJhZDA4NjcwNS4uY2I0NzUyZmMzOGEwZiAxMDA2NDRcXG4tLS0gYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXFxuKysrIGIvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xcbkBAIC01NjksNiArNTY5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IG5sODAyMTFfdHhhdHRyX3BvbGljeVtOTDgwMjExX1RYUkFURV9NQVggKyAxXSA9IHtcXG4gXFx0W05MODAyMTFfVFhSQVRFX0VIVF9MVEZdID0gTkxBX1BPTElDWV9SQU5HRShOTEFfVTgsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgIE5MODAyMTFfUkFURV9JTkZPX0VIVF8xWExURixcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAgTkw4MDIxMV9SQVRFX0lORk9fRUhUXzhYTFRGKSxcXG4rXFx0W05MODAyMTFfVFhSQVRFXzZHSFpfTk9OX0hUX0RVUF0gPSB7IC50eXBlID0gTkxBX0ZMQUcgfSxcXG4gXFxuIH07XFxuIFxcbkBAIC02MzAzLDYgKzYzMDQsMTQgQEAgc3RhdGljIGludCBubDgwMjExX3BhcnNlX3R4X2JpdHJhdGVfbWFzayhzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLFxcbiBcXHRcXHRcXHRtYXNrLVxcdTAwM2Vjb250cm9sW2JhbmRdLmVodF9sdGYgPVxcbiBcXHRcXHRcXHRcXHRubGFfZ2V0X3U4KHRiW05MODAyMTFfVFhSQVRFX0VIVF9MVEZdKTtcXG4gXFxuK1xcdFxcdGlmICh0YltOTDgwMjExX1RYUkFURV82R0haX05PTl9IVF9EVVBdKSB7XFxuK1xcdFxcdFxcdGlmIChiYW5kICE9IE5MODAyMTFfQkFORF82R0haIHx8XFxuK1xcdFxcdFxcdCAgICAod2Rldi1cXHUwMDNlaWZ0eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdFxcdCAgICAgd2Rldi1cXHUwMDNlaWZ0eXBlICE9IE5MODAyMTFfSUZUWVBFX1AyUF9HTykpXFxuK1xcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRcXHRtYXNrLVxcdTAwM2Vjb250cm9sW2JhbmRdLm5vbmh0X2R1cF82Z2h6ID0gdHJ1ZTtcXG4rXFx0XFx0fVxcbitcXG4gXFx0XFx0aWYgKG1hc2stXFx1MDAzZWNvbnRyb2xbYmFuZF0ubGVnYWN5ID09IDApIHtcXG4gXFx0XFx0XFx0LyogZG9uJ3QgYWxsb3cgZW1wdHkgbGVnYWN5IHJhdGVzIGlmIEhULCBWSFQsIEhFIG9yIEVIVFxcbiBcXHRcXHRcXHQgKiBhcmUgbm90IGV2ZW4gc3VwcG9ydGVkLlxcbkBAIC02MzQ0LDYgKzYzNTMsNyBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2JlYWNvbl90eF9yYXRlKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG4ge1xcbiBcXHR1MzIgY291bnRfaHQsIGNvdW50X3ZodCwgY291bnRfaGUsIGNvdW50X2VodCwgaTtcXG4gXFx0dTMyIHJhdGUgPSBiZWFjb25fcmF0ZS1cXHUwMDNlY29udHJvbFtiYW5kXS5sZWdhY3k7XFxuK1xcdGJvb2wgbm9uaHRfZHVwID0gYmVhY29uX3JhdGUtXFx1MDAzZWNvbnRyb2xbYmFuZF0ubm9uaHRfZHVwXzZnaHo7XFxuIFxcbiBcXHQvKiBBbGxvdyBvbmx5IG9uZSByYXRlICovXFxuIFxcdGlmIChod2VpZ2h0MzIocmF0ZSkgXFx1MDAzZSAxKVxcbkBAIC02NDA1LDYgKzY0MTUsOSBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2JlYWNvbl90eF9yYXRlKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG4gXFx0ICAgICghcmF0ZSBcXHUwMDI2XFx1MDAyNiAhY291bnRfaHQgXFx1MDAyNlxcdTAwMjYgIWNvdW50X3ZodCBcXHUwMDI2XFx1MDAyNiAhY291bnRfaGUgXFx1MDAyNlxcdTAwMjYgIWNvdW50X2VodCkpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4rXFx0aWYgKG5vbmh0X2R1cCBcXHUwMDI2XFx1MDAyNiAhcmF0ZSlcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbiBcXHRpZiAocmF0ZSBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgIXdpcGh5X2V4dF9mZWF0dXJlX2lzc2V0KFxcdTAwMjZyZGV2LVxcdTAwM2V3aXBoeSxcXG4gXFx0XFx0XFx0XFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFX0JFQUNPTl9SQVRFX0xFR0FDWSkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDEwOjQwOjQ3LjY2OTQ3NzMyNFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQwMDg5MzUyNjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJubDgwMjExX3N0YXJ0X2FwXCIsXG4gICAgXCJubDgwMjExX3NldF90eF9iaXRyYXRlX21hc2tcIixcbiAgICBcIm5sODAyMTFfam9pbl9tZXNoXCIsXG4gICAgXCJubDgwMjExX3NldF90aWRfY29uZmlnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyBuZXRsaW5rIGF0dHJpYnV0ZSBgTkw4MDIxMV9UWFJBVEVfNkdIWl9OT05fSFRfRFVQYCBmb3IgY29uZmlndXJpbmcgNiBHSHogbm9uLUhUIGR1cGxpY2F0ZSBCZWFjb24gdHJhbnNtaXNzaW9uLiBJdCBtb2RpZmllcyB0aGUgcGFyc2luZyBhbmQgdmFsaWRhdGlvbiBsb2dpYyBpbiBgbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2tgIGFuZCBgdmFsaWRhdGVfYmVhY29uX3R4X3JhdGVgLCB3aGljaCBhcmUgcmVhY2hhYmxlIHZpYSBzZXZlcmFsIG5sODAyMTEgbmV0bGluayBjb21tYW5kcyAoZS5nLiwgc3RhcnRpbmcgYW4gQVAsIGpvaW5pbmcgYSBtZXNoLCBzZXR0aW5nIFRYIGJpdHJhdGUgbWFzaywgc2V0dGluZyBUSUQgY29uZmlnKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjZmc4MDIxMSBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgdGVzdGVkIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIFdpLUZpIGRldmljZXMgKG1hYzgwMjExX2h3c2ltKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTI5NDhlNTNmNDZlMTEzZDJmZTIzNGIwNWE5ODRhYTYzYzE0NDY3ZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMTA6NDA6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oIGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxuaW5kZXggOTdjMTZkNGZmMTI3MS4uNmJjNDkwMTA4MzAzYSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2NmZzgwMjExLmhcbisrKyBiL2luY2x1ZGUvbmV0L2NmZzgwMjExLmhcbkBAIC05MDEsNiArOTAxLDcgQEAgc3RydWN0IGNmZzgwMjExX2JpdHJhdGVfbWFzayB7XG4gXHRcdGVudW0gbmw4MDIxMV9laHRfZ2kgZWh0X2dpO1xuIFx0XHRlbnVtIG5sODAyMTFfaGVfbHRmIGhlX2x0ZjtcbiBcdFx0ZW51bSBubDgwMjExX2VodF9sdGYgZWh0X2x0ZjtcbitcdFx0Ym9vbCBub25odF9kdXBfNmdoejtcbiBcdH0gY29udHJvbFtOVU1fTkw4MDIxMV9CQU5EU107XG4gfTtcbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaFxuaW5kZXggMDIwMzg3ZDc2NDEyMi4uZDhmZWZlZmMxMWE5NSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmhcbisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmhcbkBAIC01OTAwLDYgKzU5MDAsOSBAQCBlbnVtIG5sODAyMTFfa2V5X2F0dHJpYnV0ZXMge1xuICAqXHRzZWUgXHUwMDI2c3RydWN0IG5sODAyMTFfdHhyYXRlX2VodFxuICAqIEBOTDgwMjExX1RYUkFURV9FSFRfR0k6IGNvbmZpZ3VyZSBFSFQgR0ksICh1OCwgc2VlIFx1MDAyNmVudW0gbmw4MDIxMV9laHRfZ2kpXG4gICogQE5MODAyMTFfVFhSQVRFX0VIVF9MVEY6IGNvbmZpZ3VyZSBFSFQgTFRGLCAodTgsIHNlZSBcdTAwMjZlbnVtIG5sODAyMTFfZWh0X2x0ZilcbisgKiBATkw4MDIxMV9UWFJBVEVfNkdIWl9OT05fSFRfRFVQOiBjb25maWd1cmUgNiBHSHogbm9uLUhUIGR1cGxpY2F0ZSBCZWFjb25cbisgKlx0dHJhbnNtaXNzaW9uLiBUaGlzIGZsYWcgaXMgYXBwbGljYWJsZSBvbmx5IGluIEJlYWNvbiBUWCByYXRlIHNldHRpbmdcbisgKlx0YW5kIG11c3QgYmUgYWNjb21wYW5pZWQgYnkgYSBub24tSFQgKGxlZ2FjeSkgQmVhY29uIHJhdGUuXG4gICogQF9fTkw4MDIxMV9UWFJBVEVfQUZURVJfTEFTVDogaW50ZXJuYWxcbiAgKiBATkw4MDIxMV9UWFJBVEVfTUFYOiBoaWdoZXN0IFRYIHJhdGUgYXR0cmlidXRlXG4gICovXG5AQCAtNTkxNSw2ICs1OTE4LDcgQEAgZW51bSBubDgwMjExX3R4X3JhdGVfYXR0cmlidXRlcyB7XG4gXHROTDgwMjExX1RYUkFURV9FSFQsXG4gXHROTDgwMjExX1RYUkFURV9FSFRfR0ksXG4gXHROTDgwMjExX1RYUkFURV9FSFRfTFRGLFxuK1x0Tkw4MDIxMV9UWFJBVEVfNkdIWl9OT05fSFRfRFVQLFxuIFxuIFx0Lyoga2VlcCBsYXN0ICovXG4gXHRfX05MODAyMTFfVFhSQVRFX0FGVEVSX0xBU1QsXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL25sODAyMTEuYyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmNcbmluZGV4IDQ0ZjJiYWQwODY3MDUuLmNiNDc1MmZjMzhhMGYgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG4rKysgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG5AQCAtNTY5LDYgKzU2OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBubDgwMjExX3R4YXR0cl9wb2xpY3lbTkw4MDIxMV9UWFJBVEVfTUFYICsgMV0gPSB7XG4gXHRbTkw4MDIxMV9UWFJBVEVfRUhUX0xURl0gPSBOTEFfUE9MSUNZX1JBTkdFKE5MQV9VOCxcbiBcdFx0XHRcdFx0XHQgICBOTDgwMjExX1JBVEVfSU5GT19FSFRfMVhMVEYsXG4gXHRcdFx0XHRcdFx0ICAgTkw4MDIxMV9SQVRFX0lORk9fRUhUXzhYTFRGKSxcbitcdFtOTDgwMjExX1RYUkFURV82R0haX05PTl9IVF9EVVBdID0geyAudHlwZSA9IE5MQV9GTEFHIH0sXG4gXG4gfTtcbiBcbkBAIC02MzAzLDYgKzYzMDQsMTQgQEAgc3RhdGljIGludCBubDgwMjExX3BhcnNlX3R4X2JpdHJhdGVfbWFzayhzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLFxuIFx0XHRcdG1hc2stXHUwMDNlY29udHJvbFtiYW5kXS5laHRfbHRmID1cbiBcdFx0XHRcdG5sYV9nZXRfdTgodGJbTkw4MDIxMV9UWFJBVEVfRUhUX0xURl0pO1xuIFxuK1x0XHRpZiAodGJbTkw4MDIxMV9UWFJBVEVfNkdIWl9OT05fSFRfRFVQXSkge1xuK1x0XHRcdGlmIChiYW5kICE9IE5MODAyMTFfQkFORF82R0haIHx8XG4rXHRcdFx0ICAgICh3ZGV2LVx1MDAzZWlmdHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUCBcdTAwMjZcdTAwMjZcbitcdFx0XHQgICAgIHdkZXYtXHUwMDNlaWZ0eXBlICE9IE5MODAyMTFfSUZUWVBFX1AyUF9HTykpXG4rXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0XHRtYXNrLVx1MDAzZWNvbnRyb2xbYmFuZF0ubm9uaHRfZHVwXzZnaHogPSB0cnVlO1xuK1x0XHR9XG4rXG4gXHRcdGlmIChtYXNrLVx1MDAzZWNvbnRyb2xbYmFuZF0ubGVnYWN5ID09IDApIHtcbiBcdFx0XHQvKiBkb24ndCBhbGxvdyBlbXB0eSBsZWdhY3kgcmF0ZXMgaWYgSFQsIFZIVCwgSEUgb3IgRUhUXG4gXHRcdFx0ICogYXJlIG5vdCBldmVuIHN1cHBvcnRlZC5cbkBAIC02MzQ0LDYgKzYzNTMsNyBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2JlYWNvbl90eF9yYXRlKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiB7XG4gXHR1MzIgY291bnRfaHQsIGNvdW50X3ZodCwgY291bnRfaGUsIGNvdW50X2VodCwgaTtcbiBcdHUzMiByYXRlID0gYmVhY29uX3JhdGUtXHUwMDNlY29udHJvbFtiYW5kXS5sZWdhY3k7XG4rXHRib29sIG5vbmh0X2R1cCA9IGJlYWNvbl9yYXRlLVx1MDAzZWNvbnRyb2xbYmFuZF0ubm9uaHRfZHVwXzZnaHo7XG4gXG4gXHQvKiBBbGxvdyBvbmx5IG9uZSByYXRlICovXG4gXHRpZiAoaHdlaWdodDMyKHJhdGUpIFx1MDAzZSAxKVxuQEAgLTY0MDUsNiArNjQxNSw5IEBAIHN0YXRpYyBpbnQgdmFsaWRhdGVfYmVhY29uX3R4X3JhdGUoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuIFx0ICAgICghcmF0ZSBcdTAwMjZcdTAwMjYgIWNvdW50X2h0IFx1MDAyNlx1MDAyNiAhY291bnRfdmh0IFx1MDAyNlx1MDAyNiAhY291bnRfaGUgXHUwMDI2XHUwMDI2ICFjb3VudF9laHQpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbitcdGlmIChub25odF9kdXAgXHUwMDI2XHUwMDI2ICFyYXRlKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbiBcdGlmIChyYXRlIFx1MDAyNlx1MDAyNlxuIFx0ICAgICF3aXBoeV9leHRfZmVhdHVyZV9pc3NldChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LFxuIFx0XHRcdFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFX0JFQUNPTl9SQVRFX0xFR0FDWSkpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMDo0MDo0Ny42Njk0Nzg4OTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODIyODg5Mzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdpcmVsZXNzIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0IHRvdWNoZXMgc29tZSBjb3JlIHdpcmVsZXNzIGluZnJhc3RydWN0dXJlIGZpbGVzOiBgbmV0L3dpcmVsZXNzL25sODAyMTEuY2AsIGBpbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oYCwgYW5kIGBpbmNsdWRlL25ldC9jZmc4MDIxMS5oYC4gSW1tZWRpYXRlbHksIEkgc2VlIGl0J3MgYWRkaW5nIGEgbmV3IG5ldGxpbmsgYXR0cmlidXRlLCBgTkw4MDIxMV9UWFJBVEVfNkdIWl9OT05fSFRfRFVQYCwgdG8gdGhlIGBubDgwMjExX3R4X3JhdGVfYXR0cmlidXRlc2AgZW51bS4gVGhhdCdzIGEgZmxhZyBmb3IgdHggcmF0ZSBjb25maWcuLi4gZ290IGl0LiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCB0aGVuIGltcGxlbWVudHMgcGFyc2luZyBvZiB0aGUgYXR0cmlidXRlIGluIGBubDgwMjExX3BhcnNlX3R4X2JpdHJhdGVfbWFza2AgYW5kIHZhbGlkYXRlcyBpdCBpbiBgdmFsaWRhdGVfYmVhY29uX3R4X3JhdGVgLlxuXG5SaWdodCBhd2F5LCB0aGlzIHNjcmVhbXMgXCJuZXRsaW5rIGludGVyYWN0aW9uXCIgdG8gbWUuIFNwZWNpZmljYWxseSwgd2UncmUgbW9kaWZ5aW5nIHRoZSBgY2ZnODAyMTEvbmw4MDIxMWAgc3Vic3lzdGVtLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB2aWEgbmV0bGluayBzb2NrZXRzLCBzbywgYWJzb2x1dGVseSwgdGhpcyBuZWVkcyBmdXp6aW5nLiBUaGFua2Z1bGx5LCBJIGNhbiBlbXVsYXRlIGhhcmR3YXJlIHdpdGggYG1hYzgwMjExX2h3c2ltYCB0byB0ZXN0IHRoaXMgcHJvcGVybHkuXG5cbkxldCdzIGZvY3VzIG9uIHRoZSB0d28gZnVuY3Rpb25zIG1vZGlmaWVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCBzbyBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjazpcblxuKiAgIGBubDgwMjExX3BhcnNlX3R4X2JpdHJhdGVfbWFza2BcbiogICBgdmFsaWRhdGVfYmVhY29uX3R4X3JhdGVgXG5cbkkgbmVlZCB0byBzZWUgd2hlcmUgYG5sODAyMTFfcGFyc2VfdHhfYml0cmF0ZV9tYXNrYCBpcyBjYWxsZWQsIHNvIEknbGwgZ3JlcCBmb3IgdGhhdC4gQWgsIGl0J3Mgc3RhdGljIGluIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jYC4gT2ssIHNvIG5vdyBJIG5lZWQgdG8gZmluZCB0aGUgY2FsbGVycyBvZiBgbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2tgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzk1LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTA6NDA6NTQuNDkyMzcxMTgzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzk3Njc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5sODAyMTFfcGFyc2VfdHhfYml0cmF0ZV9tYXNrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9ubDgwMjExLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL25sODAyMTEuYz02MDk3PXN0YXRpYyBib29sIGVodF9zZXRfbWNzX21hc2soc3RydWN0IGdlbmxfaW5mbyAqaW5mbywgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNjE1Ny1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjYxNTg6c3RhdGljIGludCBubDgwMjExX3BhcnNlX3R4X2JpdHJhdGVfbWFzayhzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNjE1OS1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IG5sYXR0ciAqYXR0cnNbXSxcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9NzIxMD1zdGF0aWMgaW50IG5sODAyMTFfc3RhcnRfYXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNzM4NC1cXHRpZiAoaW5mby1cXHUwMDNlYXR0cnNbTkw4MDIxMV9BVFRSX1RYX1JBVEVTXSkge1xcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NzM4NTpcXHRcXHRlcnIgPSBubDgwMjExX3BhcnNlX3R4X2JpdHJhdGVfbWFzayhpbmZvLCBpbmZvLVxcdTAwM2VhdHRycyxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTczODYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIE5MODAyMTFfQVRUUl9UWF9SQVRFUyxcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTQ2OTg9c3RhdGljIGludCBubDgwMjExX3NldF90eF9iaXRyYXRlX21hc2soc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQ3MDktXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNDcxMDpcXHRlcnIgPSBubDgwMjExX3BhcnNlX3R4X2JpdHJhdGVfbWFzayhpbmZvLCBpbmZvLVxcdTAwM2VhdHRycyxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0NzExLVxcdFxcdFxcdFxcdFxcdCAgICBOTDgwMjExX0FUVFJfVFhfUkFURVMsIFxcdTAwMjZtYXNrLFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xNTI3OD1zdGF0aWMgaW50IG5sODAyMTFfam9pbl9tZXNoKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE1MzY0LVxcdGlmIChpbmZvLVxcdTAwM2VhdHRyc1tOTDgwMjExX0FUVFJfVFhfUkFURVNdKSB7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNTM2NTpcXHRcXHRlcnIgPSBubDgwMjExX3BhcnNlX3R4X2JpdHJhdGVfbWFzayhpbmZvLCBpbmZvLVxcdTAwM2VhdHRycyxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE1MzY2LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBOTDgwMjExX0FUVFJfVFhfUkFURVMsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE4NzU1PXN0YXRpYyBpbnQgcGFyc2VfdGlkX2NvbmYoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODgzMS1cXHRcXHRcXHRhdHRyID0gTkw4MDIxMV9USURfQ09ORklHX0FUVFJfVFhfUkFURTtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE4ODMyOlxcdFxcdFxcdGVyciA9IG5sODAyMTFfcGFyc2VfdHhfYml0cmF0ZV9tYXNrKGluZm8sIGF0dHJzLCBhdHRyLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTg4MzMtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZ0aWRfY29uZi1cXHUwMDNldHhyYXRlX21hc2ssIGRldixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTA6NDA6NTQuNTM1Nzg3NTkxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ3OTc5MzQ0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENhbGxlcnMgb2YgYG5sODAyMTFfcGFyc2VfdHhfYml0cmF0ZV9tYXNrYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2tgIGlzIGJlaW5nIHVzZWQuIEEgcXVpY2sgc2NhbiByZXZlYWxzIHRoYXQgaXQncyBjYWxsZWQgZnJvbSBgbmw4MDIxMV9zdGFydF9hcGAsIGBubDgwMjExX3NldF90eF9iaXRyYXRlX21hc2tgLCBgbmw4MDIxMV9qb2luX21lc2hgLCBhbmQsIGluZGlyZWN0bHksIHRocm91Z2ggYHBhcnNlX3RpZF9jb25mYCwgZnJvbSBgbmw4MDIxMV9zZXRfdGlkX2NvbmZpZ2AuIFRoaXMgZ2l2ZXMgbWUgYSBnb29kIG92ZXJ2aWV3OyBpdCdzIGJlaW5nIHVzZWQgaW4gQVAgc2V0dXAsIHNldHRpbmcgZXhwbGljaXQgYml0cmF0ZSBtYXNrcywgbWVzaCBuZXR3b3JrIGpvaW5zLCBhbmQgdGhyb3VnaCB0aGUgVHJhZmZpYyBJZGVudGlmaWVyIChUSUQpIGNvbmZpZ3VyYXRpb24uIFRoaXMgdGVsbHMgbWUgYWJvdXQgY29uZmlndXJhdGlvbiBhbmQgb3BlcmF0aW9uYWwgY29udGV4dHMuXG5cbk5vdywgbGV0J3Mgc2VlIGhvdyBgdmFsaWRhdGVfYmVhY29uX3R4X3JhdGVgIGZpdHMgaW50byB0aGlzIHBpY3R1cmUuIEkgd2FudCB0byBzZWUgaWYgdGhlcmUncyBhbnkgb3ZlcmxhcCBvciBkZXBlbmRlbmN5IHRoZXJlLCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYml0cmF0ZSBtYXNrIHBhcnNpbmcgaW50ZWdyYXRlcyB3aXRoIHRoZSBvdmVyYWxsIHZhbGlkYXRpb24gYW5kIGJlYWNvbmluZyBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTgwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDEwOjQxOjAwLjAxNTU4NDExMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mzk5NjU5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2YWxpZGF0ZV9iZWFjb25fdHhfcmF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9ubDgwMjExLmM9NjE1OD1zdGF0aWMgaW50IG5sODAyMTFfcGFyc2VfdHhfYml0cmF0ZV9tYXNrKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTYzNDktXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo2MzUwOnN0YXRpYyBpbnQgdmFsaWRhdGVfYmVhY29uX3R4X3JhdGUoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNjM1MS1cXHRcXHRcXHRcXHQgICBlbnVtIG5sODAyMTFfYmFuZCBiYW5kLFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz03MjEwPXN0YXRpYyBpbnQgbmw4MDIxMV9zdGFydF9hcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy03MzkxLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NzM5MjpcXHRcXHRlcnIgPSB2YWxpZGF0ZV9iZWFjb25fdHhfcmF0ZShyZGV2LCBwYXJhbXMtXFx1MDAzZWNoYW5kZWYuY2hhbi1cXHUwMDNlYmFuZCxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTczOTMtXFx0XFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnBhcmFtcy1cXHUwMDNlYmVhY29uX3JhdGUpO1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xNTI3OD1zdGF0aWMgaW50IG5sODAyMTFfam9pbl9tZXNoKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE1Mzc0LVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTUzNzU6XFx0XFx0ZXJyID0gdmFsaWRhdGVfYmVhY29uX3R4X3JhdGUocmRldiwgc2V0dXAuY2hhbmRlZi5jaGFuLVxcdTAwM2ViYW5kLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTUzNzYtXFx0XFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnNldHVwLmJlYWNvbl9yYXRlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTA6NDE6MDAuMDU5NTg2OTAxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk0NTgyNDA2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQmVhY29uIFRyYW5zbWlzc2lvbiBSYXRlIFZhbGlkYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlIGB2YWxpZGF0ZV9iZWFjb25fdHhfcmF0ZWAgZnVuY3Rpb24gZ2V0cyB1c2VkLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgbmw4MDIxMV9zdGFydF9hcGAgYW5kIGBubDgwMjExX2pvaW5fbWVzaGAgYXJlIHRoZSBrZXkgY2FsbGVycyBoZXJlLiBTbywgbG9naWNhbGx5LCB0aGUgcHJpbWFyeSBmb2N1cyBwb2ludHMgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBzaG91bGQgYmU6IGBubDgwMjExX3N0YXJ0X2FwYCwgYG5sODAyMTFfc2V0X3R4X2JpdHJhdGVfbWFza2AsIGFuZCBgbmw4MDIxMV9qb2luX21lc2hgLiBJIGFsc28gaGF2ZSB0byBrZWVwIGFuIGV5ZSBvbiBgbmw4MDIxMV9zZXRfdGlkX2NvbmZpZ2AsIHNpbmNlIGl0IGNhbGxzIGBwYXJzZV90aWRfY29uZmAgd2hpY2ggY291bGQgYmUgcmVsZXZhbnQsIHRob3VnaCBpbiBhbiBpbmRpcmVjdCBtYW5uZXIuXG5cbkJlZm9yZSBJIGdvIGZ1cnRoZXIsIEkgc2hvdWxkIGp1c3QgcXVpY2tseSBkb3VibGUgY2hlY2sgdGhhdCBgbmw4MDIxMV9zZXRfdGlkX2NvbmZpZ2AgaXMgYWN0dWFsbHkgZGVmaW5lZCwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIEEgYmFzaWMgdmVyaWZpY2F0aW9uIGlzIGFsd2F5cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MDEsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTA6NDE6MDQuMDA1NDEzNDY5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNTE0MjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5sODAyMTFfc2V0X3RpZF9jb25maWdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3dpcmVsZXNzL25sODAyMTEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE4NzU1PXN0YXRpYyBpbnQgcGFyc2VfdGlkX2NvbmYoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODg1NS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE4ODU2OnN0YXRpYyBpbnQgbmw4MDIxMV9zZXRfdGlkX2NvbmZpZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTg4NTctXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xOTc0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfc21hbGxfb3BzIG5sODAyMTFfc21hbGxfb3BzW10gPSB7XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIwNTIzLVxcdFxcdC5jbWQgPSBOTDgwMjExX0NNRF9TRVRfVElEX0NPTkZJRyxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjIwNTI0OlxcdFxcdC5kb2l0ID0gbmw4MDIxMV9zZXRfdGlkX2NvbmZpZyxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIwNTI1LVxcdFxcdC5mbGFncyA9IEdFTkxfVU5TX0FETUlOX1BFUk0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDEwOjQxOjA0LjA0ODkzNjg0OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MDE4MzY3NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgYG5sODAyMTFfc2V0X3RpZF9jb25maWdgIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgYG5sODAyMTFfc2V0X3RpZF9jb25maWdgIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbiwgdGhhdCdzIGNvbmZpcm1lZC4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlICpyZXF1aXJlZCogdG8gbWFrZSB0aGF0IHdvcms/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMsIHRoZSBLY29uZmlnIHN5bWJvbHMsIGFuZCBhbnkgcmVsZXZhbnQgTWFrZWZpbGUgZW50cmllcy4gVGhlIGNvZGUgaXRzZWxmLCBJIHJlY2FsbCwgbGl2ZXMgd2l0aGluIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jYC4gU28sIEknbGwgc3RhcnQgZGlnZ2luZyBpbiBgbmV0L3dpcmVsZXNzL0tjb25maWdgIGFuZCBgbmV0L3dpcmVsZXNzL01ha2VmaWxlYCB0byBzZWUgaG93IHRoaXMgcGFydGljdWxhciBmdW5jdGlvbiBpcyBlbmFibGVkLiBUaG9zZSBzaG91bGQgdGVsbCB0aGUgd2hvbGUgc3RvcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1MTIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMDo0MTowNy40NTA3NzU4NzNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNzAzNTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5sODAyMTEub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3MvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL01ha2VmaWxlPTc9b2JqLSQoQ09ORklHX1dFWFRfUFJJVikgKz0gd2V4dC1wcml2Lm9cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtOC1cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU6OTpjZmc4MDIxMS15ICs9IGNvcmUubyBzeXNmcy5vIHJhZGlvdGFwLm8gdXRpbC5vIHJlZy5vIHNjYW4ubyBubDgwMjExLm9cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtMTAtY2ZnODAyMTEteSArPSBtbG1lLm8gaWJzcy5vIHNtZS5vIGNoYW4ubyBldGh0b29sLm8gbWVzaC5vIGFwLm8gdHJhY2UubyBvY2Iub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMDo0MTowNy40OTI0ODQ5NTFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk5MTg0MDgwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIGNmZzgwMjExIENvZGViYXNlKipcblxuQWxyaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBzb21ldGhpbmcgdGhhdCBjbGVhcmx5IGZhbGxzIHVuZGVyIHRoZSB1bWJyZWxsYSBvZiBgY2ZnODAyMTFgLiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBNeSBuZXh0IG1vdmUgaXMgYWx3YXlzIHRvIHF1aWNrbHkgb3JpZW50IG15c2VsZiB3aXRoaW4gdGhlIHJlbGV2YW50IGNvZGViYXNlLiBJbiB0aGlzIGNhc2UsIEknZCBpbnN0aW5jdGl2ZWx5IHJlYWNoIGZvciB0aGUgYG5ldC93aXJlbGVzcy9NYWtlZmlsZWAuIEl0J3MgdGhlIGNlbnRyYWwgcG9pbnQgZm9yIGJ1aWxkaW5nIGFuZCBsaW5raW5nIHdpcmVsZXNzIGNvbXBvbmVudHMsIGluY2x1ZGluZywgb2YgY291cnNlLCBgY2ZnODAyMTFgLiBUaGF0IE1ha2VmaWxlIHdpbGwgZ2l2ZSBtZSBhIHZlcnkgcXVpY2sgb3ZlcnZpZXcgb2Ygd2hhdCdzIGJlaW5nIGJ1aWx0LCB3aGljaCBkcml2ZXJzIGFuZCBtb2R1bGVzIGFyZSBkZXBlbmRlbnQgb24gYGNmZzgwMjExYCwgYW5kIHdoYXQgb3RoZXIga2V5IG1vZHVsZXMgaW50ZXJhY3Qgd2l0aCBpdC4gSXQncyBhIHF1aWNrIHdheSB0byBnZXQgYSBoaWdoLWxldmVsIHZpZXcgb2YgZGVwZW5kZW5jaWVzIGFuZCBpZGVudGlmeSBwb3RlbnRpYWxseSByZWxldmFudCBzb3VyY2UgZmlsZXMgZm9yIHdoYXRldmVyIEknbSB0cm91Ymxlc2hvb3Rpbmcgb3IgaW52ZXN0aWdhdGluZy4gSXQgaXMgdGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcCwgdGhlIHBvaW50IHdoZXJlIEkgY2FuIHF1aWNrbHkgc2VlIHRoZSBsYXkgb2YgdGhlIGxhbmQuIEkgbmVlZCB0aGlzIHRvIGNyZWF0ZSBhbiBvdXRsaW5lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTE5LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTA6NDE6MTEuNDg0MzI4MTE4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzE3Mjg0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZmc4MDIxMVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3MvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbm5ldC93aXJlbGVzcy9NYWtlZmlsZToyOm9iai0kKENPTkZJR19DRkc4MDIxMSkgKz0gY2ZnODAyMTEub1xcbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0zLW9iai15ICs9IHRlc3RzL1xcbi0tXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlPTc9b2JqLSQoQ09ORklHX1dFWFRfUFJJVikgKz0gd2V4dC1wcml2Lm9cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtOC1cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU6OTpjZmc4MDIxMS15ICs9IGNvcmUubyBzeXNmcy5vIHJhZGlvdGFwLm8gdXRpbC5vIHJlZy5vIHNjYW4ubyBubDgwMjExLm9cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU6MTA6Y2ZnODAyMTEteSArPSBtbG1lLm8gaWJzcy5vIHNtZS5vIGNoYW4ubyBldGh0b29sLm8gbWVzaC5vIGFwLm8gdHJhY2UubyBvY2Iub1xcbm5ldC93aXJlbGVzcy9NYWtlZmlsZToxMTpjZmc4MDIxMS15ICs9IG1pY2hhZWwtbWljLm8gcG1zci5vXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlOjEyOmNmZzgwMjExLSQoQ09ORklHX09GKSArPSBvZi5vXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlOjEzOmNmZzgwMjExLSQoQ09ORklHX0NGRzgwMjExX0RFQlVHRlMpICs9IGRlYnVnZnMub1xcbm5ldC93aXJlbGVzcy9NYWtlZmlsZToxNDpjZmc4MDIxMS0kKENPTkZJR19DRkc4MDIxMV9XRVhUKSArPSB3ZXh0LWNvbXBhdC5vIHdleHQtc21lLm9cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtMTUtXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlPTE2PUNGTEFHU190cmFjZS5vIDo9IC1JJChzcmMpXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlLTE3LVxcbm5ldC93aXJlbGVzcy9NYWtlZmlsZToxODpjZmc4MDIxMS0kKENPTkZJR19DRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVMpICs9IHNoaXBwZWQtY2VydHMub1xcbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0xOS1pZm5lcSAoJChDT05GSUdfQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSKSwpXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlOjIwOmNmZzgwMjExLXkgKz0gZXh0cmEtY2VydHMub1xcbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0yMS1lbmRpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMDo0MToxMS41Mjc1MDQwMjdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQzMDU1OTkyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIFdpcmVsZXNzIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcsIGJhc2VkIG9uIHRoaXMsIHdlIGRlZmluaXRlbHkgbmVlZCBgQ09ORklHX0NGRzgwMjExYC4gVGhhdCdzIGEgZ2l2ZW4uIEJ1dCBJIHN1c3BlY3Qgd2UgbWlnaHQgYWxzbyBuZWVkIHRvIGVuYWJsZSBgQ09ORklHX01BQzgwMjExX0hXU0lNYCB0byBwcm9wZXJseSBlbXVsYXRlIHRoZSBoYXJkd2FyZSBhbmQgYWN0dWFsbHkgaGl0IHRob3NlIHNwZWNpZmljIGNvZGUgcGF0aHMuIEl0J3MgdGhlIHNpbXVsYXRpb24gb2YgdGhlIGhhcmR3YXJlIHRoYXQgd2lsbCBsaWtlbHkgYWxsb3cgdXMgdG8gcmVhY2ggdGhlIHBhcnRzIG9mIHRoZSBjb2RlIHRoYXQgcmVxdWlyZSBhIHJlZ2lzdGVyZWQgYHdpcGh5YCBkZXZpY2UuIFJpZ2h0LCBsZXQncyBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGBDT05GSUdfTUFDODAyMTFfSFdTSU1gIHNldHRpbmcgYW5kIG1ha2Ugc3VyZSBpdCdzIHNldCBhY2NvcmRpbmdseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzcwNCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDEwOjQxOjE0Ljk1ODA2NjEwMVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzM1NDEyMTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExX0hXU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDEwOjQxOjE1LjAzMTYxNjMwOVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDkwMDQyMDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktlcm5lbCBXaXJlbGVzcyBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBrZXJuZWwgd2lyZWxlc3Mgc2V0dXAuIEkga25vdyBgTUFDODAyMTFfSFdTSU1gIGlzIGEgc29saWQgY2hvaWNlIGZvciBhIHNpbXVsYXRlZCBlbnZpcm9ubWVudCwgYW5kIG9mIGNvdXJzZSwgYENGRzgwMjExYCBhbmQgdGhlIGNvcmUgYE1BQzgwMjExYCBhcmUgZnVuZGFtZW50YWwgY29tcG9uZW50cy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuXG5cbk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBOZXRsaW5rIGhhbmRsZXJzIGluIGBubDgwMjExLmNgLiBJJ20gZ29pbmcgdG8gbG9vayBhdCBgbmw4MDIxMV9zdGFydF9hcGAsIGBubDgwMjExX3NldF90eF9iaXRyYXRlX21hc2tgLCBgbmw4MDIxMV9qb2luX21lc2hgLCBhbmQgYG5sODAyMTFfc2V0X3RpZF9jb25maWdgLiBUaGVzZSBhcmUga2V5IGZ1bmN0aW9uYWxpdGllcywgYW5kIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIGludGVyYWN0aW9ucyB3aXRoIHRob3NlIGZ1bmN0aW9ucyBhcmUgcHJvcGVyLlxuXG5JIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGNydWNpYWwgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgSSd2ZSBvdmVybG9va2VkLiBJIGtub3cgYENGRzgwMjExYCBzb21ldGltZXMgcmVsaWVzIG9uIGBSRktJTExgLCBidXQgaXQgdXN1YWxseSBzdGFuZHMgb24gaXRzIG93bi4gSSdsbCBkb3VibGUtY2hlY2sgYG5ldC93aXJlbGVzcy9LY29uZmlnYCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gYWJvdXQgdGhlIGBDRkc4MDIxMWAgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMuIFRoaXMgaXMganVzdCBnb29kIHByYWN0aWNlOyBhbHdheXMgZG91YmxlIGNoZWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDIyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDEwOjQxOjIwLjUyMTY2MDE5OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM2ODYwMTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENGRzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnPTE0PWNvbmZpZyBXRVhUX1BSSVZcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3OmNvbmZpZyBDRkc4MDIxMVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWc9Mzg9Y29uZmlnIE5MODAyMTFfVEVTVE1PREVcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTUxLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjUyOmNvbmZpZyBDRkc4MDIxMV9ERVZFTE9QRVJfV0FSTklOR1NcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01My1cXHRib29sIFxcXCJlbmFibGUgZGV2ZWxvcGVyIHdhcm5pbmdzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctNjctXFxubmV0L3dpcmVsZXNzL0tjb25maWc6Njg6Y29uZmlnIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY5LVxcdGJvb2wgXFxcImNmZzgwMjExIGNlcnRpZmljYXRpb24gb251c1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTg4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjg5OmNvbmZpZyBDRkc4MDIxMV9SRVFVSVJFX1NJR05FRF9SRUdEQlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTkwLVxcdGJvb2wgXFxcInJlcXVpcmUgcmVnZGIgc2lnbmF0dXJlXFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTk4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjk5OmNvbmZpZyBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDAtXFx0Ym9vbCBcXFwiYWxsb3cgcmVnZGIga2V5cyBzaGlwcGVkIHdpdGggdGhlIGtlcm5lbFxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTAtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTExOmNvbmZpZyBDRkc4MDIxMV9FWFRSQV9SRUdEQl9LRVlESVJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTItXFx0c3RyaW5nIFxcXCJhZGRpdGlvbmFsIHJlZ2RiIGtleSBkaXJlY3RvcnlcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTIxLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEyMjpjb25maWcgQ0ZHODAyMTFfUkVHX0NFTExVTEFSX0hJTlRTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTIzLVxcdGJvb2wgXFxcImNmZzgwMjExIHJlZ3VsYXRvcnkgc3VwcG9ydCBmb3IgY2VsbHVsYXIgYmFzZSBzdGF0aW9uIGhpbnRzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTM0LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEzNTpjb25maWcgQ0ZHODAyMTFfUkVHX1JFTEFYX05PX0lSXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTM2LVxcdGJvb2wgXFxcImNmZzgwMjExIHN1cHBvcnQgZm9yIE5PX0lSIHJlbGF4YXRpb25cXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNTgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTU5OmNvbmZpZyBDRkc4MDIxMV9ERUZBVUxUX1BTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTYwLVxcdGJvb2wgXFxcImVuYWJsZSBwb3dlcnNhdmUgYnkgZGVmYXVsdFxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNjk6Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzAtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgRGVidWdGUyBlbnRyaWVzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3Nzpjb25maWcgQ0ZHODAyMTFfQ1JEQV9TVVBQT1JUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc4LVxcdGJvb2wgXFxcInN1cHBvcnQgQ1JEQVxcXCIgaWYgRVhQRVJUXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTg3OmNvbmZpZyBDRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg4LVxcdGJvb2wgXFxcImNmZzgwMjExIHdpcmVsZXNzIGV4dGVuc2lvbnMgY29tcGF0aWJpbGl0eVxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5My1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTQ6Y29uZmlnIENGRzgwMjExX0tVTklUX1RFU1RcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTUtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBjZmc4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMDo0MToyMC41NjUzNTEyNDdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzEwMTE2NTA1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQcm9wb3NlZCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWltZWQgc3F1YXJlbHkgYXQgdGhlIHdpcmVsZXNzIG5ldHdvcmtpbmcgY29yZSwgc3BlY2lmaWNhbGx5IHRoZSBgY2ZnODAyMTFgIHN1YnN5c3RlbSwgd2hpY2ggaXMgdGhlIG1haW4gY29uZmlndXJhdGlvbiBpbnRlcmZhY2UuIEl0J3MgZ29vZCB0byBzZWUgdGhhdCB0aGV5J3JlIHVzaW5nIGBtYWM4MDIxMWAgYXMgd2VsbC4gT2YgY291cnNlLCBgbWFjODAyMTFfaHdzaW1gIHdpbGwgYmUgdml0YWwgZm9yIHRlc3RpbmcgdGhpcyBraW5kIG9mIHRoaW5nLlxuXG5UaGUgY3J1eCBvZiB0aGUgbWF0dGVyIGlzIHRoaXMgbmV3IG5ldGxpbmsgYXR0cmlidXRlLCBgTkw4MDIxMV9UWFJBVEVfNkdIWl9OT05fSFRfRFVQYC4gSXQgc2VlbXMgdGhleSdyZSBleHRlbmRpbmcgdGhlIGV4aXN0aW5nIGZ1bmN0aW9uYWxpdHkgdG8gaGFuZGxlIG5vbi1IVCBkdXBsaWNhdGUgQmVhY29uIHRyYW5zbWlzc2lvbnMgaW4gdGhlIDYgR0h6IGJhbmQuIE1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgb25nb2luZyBldm9sdXRpb24gb2Ygd2lyZWxlc3Mgc3RhbmRhcmRzLlxuXG5JIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgbW9kaWZpY2F0aW9ucyBpbiBgbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2tgIGFuZCBgdmFsaWRhdGVfYmVhY29uX3R4X3JhdGVgLiBUaG9zZSBhcmUgdGhlIGtleSBwaWVjZXMgYWZmZWN0ZWQsIHdoaWNoIGFyZSBjYWxsZWQgYnkgYG5sODAyMTFfc3RhcnRfYXBgLCBgbmw4MDIxMV9qb2luX21lc2hgLCBgbmw4MDIxMV9zZXRfdHhfYml0cmF0ZV9tYXNrYCwgYW5kIGBubDgwMjExX3NldF90aWRfY29uZmlnYC4gVGhlc2UgYXJlIHRoZSBzcGVjaWZpYyBubDgwMjExIGNvbW1hbmRzIHRoaXMgd2lsbCBhZmZlY3QuIFNvdW5kcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHdoaWNoIGlzIGltcG9ydGFudCB0byB0ZXN0IGluIHRoZSBgbWFjODAyMTFfaHdzaW1gIGVudmlyb25tZW50LiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gY2hlY2sgdGhhdC4gSSB3YW50IHRvIHNlZSBob3cgdGhlc2Ugc2V0LXJlc3VsdHMgZnVuY3Rpb24gdG8gbWFrZSBzdXJlIHRoYXQgZXZlcnl0aGluZyBpcyBiZWhhdmluZyBhcyBpbnRlbmRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTQzNSwiT3V0cHV0VG9rZW5zIjoyNzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTA6NDE6MjcuNjY2NTE5MDI4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTIzMDY5NTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJubDgwMjExX3N0YXJ0X2FwXCIsXG4gICAgXCJubDgwMjExX3NldF90eF9iaXRyYXRlX21hc2tcIixcbiAgICBcIm5sODAyMTFfam9pbl9tZXNoXCIsXG4gICAgXCJubDgwMjExX3NldF90aWRfY29uZmlnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyBuZXRsaW5rIGF0dHJpYnV0ZSBgTkw4MDIxMV9UWFJBVEVfNkdIWl9OT05fSFRfRFVQYCBmb3IgY29uZmlndXJpbmcgNiBHSHogbm9uLUhUIGR1cGxpY2F0ZSBCZWFjb24gdHJhbnNtaXNzaW9uLiBJdCBtb2RpZmllcyB0aGUgcGFyc2luZyBhbmQgdmFsaWRhdGlvbiBsb2dpYyBpbiBgbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2tgIGFuZCBgdmFsaWRhdGVfYmVhY29uX3R4X3JhdGVgLCB3aGljaCBhcmUgcmVhY2hhYmxlIHZpYSBzZXZlcmFsIG5sODAyMTEgbmV0bGluayBjb21tYW5kcyAoZS5nLiwgc3RhcnRpbmcgYW4gQVAsIGpvaW5pbmcgYSBtZXNoLCBzZXR0aW5nIFRYIGJpdHJhdGUgbWFzaywgc2V0dGluZyBUSUQgY29uZmlnKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjZmc4MDIxMSBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgdGVzdGVkIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIFdpLUZpIGRldmljZXMgKG1hYzgwMjExX2h3c2ltKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmw4MDIxMV9zdGFydF9hcFwiLFxuICAgIFwibmw4MDIxMV9zZXRfdHhfYml0cmF0ZV9tYXNrXCIsXG4gICAgXCJubDgwMjExX2pvaW5fbWVzaFwiLFxuICAgIFwibmw4MDIxMV9zZXRfdGlkX2NvbmZpZ1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBuZXcgbmV0bGluayBhdHRyaWJ1dGUgYE5MODAyMTFfVFhSQVRFXzZHSFpfTk9OX0hUX0RVUGAgZm9yIGNvbmZpZ3VyaW5nIDYgR0h6IG5vbi1IVCBkdXBsaWNhdGUgQmVhY29uIHRyYW5zbWlzc2lvbi4gSXQgbW9kaWZpZXMgdGhlIHBhcnNpbmcgYW5kIHZhbGlkYXRpb24gbG9naWMgaW4gYG5sODAyMTFfcGFyc2VfdHhfYml0cmF0ZV9tYXNrYCBhbmQgYHZhbGlkYXRlX2JlYWNvbl90eF9yYXRlYCwgd2hpY2ggYXJlIHJlYWNoYWJsZSB2aWEgc2V2ZXJhbCBubDgwMjExIG5ldGxpbmsgY29tbWFuZHMgKGUuZy4sIHN0YXJ0aW5nIGFuIEFQLCBqb2luaW5nIGEgbWVzaCwgc2V0dGluZyBUWCBiaXRyYXRlIG1hc2ssIHNldHRpbmcgVElEIGNvbmZpZykuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY2ZnODAyMTEgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRlc3RlZCB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBXaS1GaSBkZXZpY2VzIChtYWM4MDIxMV9od3NpbSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfdr8k[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-05 10:39:13 +0000 UTC FinishedAt: 2026-08-05 10:41:28 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "6c5fc504d0d6934132637aa3db4b9b58148eaa78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "6c5fc504d0d6934132637aa3db4b9b58148eaa78", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "1c05b42d-441e-4d49-81bf-e5b1cb7e6444" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nl80211_start_ap", "nl80211_set_tx_bitrate_mask", "nl80211_join_mesh", "nl80211_set_tid_config" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA1IDEwOjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmw4MDIxMV9zdGFydF9hcCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3NldF90eF9iaXRyYXRlX21hc2smIzM0OywKICAgICYjMzQ7bmw4MDIxMV9qb2luX21lc2gmIzM0OywKICAgICYjMzQ7bmw4MDIxMV9zZXRfdGlkX2NvbmZpZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IG5ldGxpbmsgYXR0cmlidXRlIGBOTDgwMjExX1RYUkFURV82R0haX05PTl9IVF9EVVBgIGZvciBjb25maWd1cmluZyA2IEdIeiBub24tSFQgZHVwbGljYXRlIEJlYWNvbiB0cmFuc21pc3Npb24uIEl0IG1vZGlmaWVzIHRoZSBwYXJzaW5nIGFuZCB2YWxpZGF0aW9uIGxvZ2ljIGluIGBubDgwMjExX3BhcnNlX3R4X2JpdHJhdGVfbWFza2AgYW5kIGB2YWxpZGF0ZV9iZWFjb25fdHhfcmF0ZWAsIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIHNldmVyYWwgbmw4MDIxMSBuZXRsaW5rIGNvbW1hbmRzIChlLmcuLCBzdGFydGluZyBhbiBBUCwgam9pbmluZyBhIG1lc2gsIHNldHRpbmcgVFggYml0cmF0ZSBtYXNrLCBzZXR0aW5nIFRJRCBjb25maWcpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNmZzgwMjExIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSB0ZXN0ZWQgdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgV2ktRmkgZGV2aWNlcyAobWFjODAyMTFfaHdzaW0pLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEwOjQwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTI5NDhlNTNmNDZlMTEzZDJmZTIzNGIwNWE5ODRhYTYzYzE0NDY3ZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMTA6NDA6NDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBiL2luY2x1ZGUvbmV0L2NmZzgwMjExLmhcbmluZGV4IDk3YzE2ZDRmZjEyNzEuLjZiYzQ5MDEwODMwM2EgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXG5AQCAtOTAxLDYgJiM0Mzs5MDEsNyBAQCBzdHJ1Y3QgY2ZnODAyMTFfYml0cmF0ZV9tYXNrIHtcbiBcdFx0ZW51bSBubDgwMjExX2VodF9naSBlaHRfZ2k7XG4gXHRcdGVudW0gbmw4MDIxMV9oZV9sdGYgaGVfbHRmO1xuIFx0XHRlbnVtIG5sODAyMTFfZWh0X2x0ZiBlaHRfbHRmO1xuJiM0MztcdFx0Ym9vbCBub25odF9kdXBfNmdoejtcbiBcdH0gY29udHJvbFtOVU1fTkw4MDIxMV9CQU5EU107XG4gfTtcbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaFxuaW5kZXggMDIwMzg3ZDc2NDEyMi4uZDhmZWZlZmMxMWE5NSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmhcbkBAIC01OTAwLDYgJiM0Mzs1OTAwLDkgQEAgZW51bSBubDgwMjExX2tleV9hdHRyaWJ1dGVzIHtcbiAgKlx0c2VlIFx1MDAyNnN0cnVjdCBubDgwMjExX3R4cmF0ZV9laHRcbiAgKiBATkw4MDIxMV9UWFJBVEVfRUhUX0dJOiBjb25maWd1cmUgRUhUIEdJLCAodTgsIHNlZSBcdTAwMjZlbnVtIG5sODAyMTFfZWh0X2dpKVxuICAqIEBOTDgwMjExX1RYUkFURV9FSFRfTFRGOiBjb25maWd1cmUgRUhUIExURiwgKHU4LCBzZWUgXHUwMDI2ZW51bSBubDgwMjExX2VodF9sdGYpXG4mIzQzOyAqIEBOTDgwMjExX1RYUkFURV82R0haX05PTl9IVF9EVVA6IGNvbmZpZ3VyZSA2IEdIeiBub24tSFQgZHVwbGljYXRlIEJlYWNvblxuJiM0MzsgKlx0dHJhbnNtaXNzaW9uLiBUaGlzIGZsYWcgaXMgYXBwbGljYWJsZSBvbmx5IGluIEJlYWNvbiBUWCByYXRlIHNldHRpbmdcbiYjNDM7ICpcdGFuZCBtdXN0IGJlIGFjY29tcGFuaWVkIGJ5IGEgbm9uLUhUIChsZWdhY3kpIEJlYWNvbiByYXRlLlxuICAqIEBfX05MODAyMTFfVFhSQVRFX0FGVEVSX0xBU1Q6IGludGVybmFsXG4gICogQE5MODAyMTFfVFhSQVRFX01BWDogaGlnaGVzdCBUWCByYXRlIGF0dHJpYnV0ZVxuICAqL1xuQEAgLTU5MTUsNiAmIzQzOzU5MTgsNyBAQCBlbnVtIG5sODAyMTFfdHhfcmF0ZV9hdHRyaWJ1dGVzIHtcbiBcdE5MODAyMTFfVFhSQVRFX0VIVCxcbiBcdE5MODAyMTFfVFhSQVRFX0VIVF9HSSxcbiBcdE5MODAyMTFfVFhSQVRFX0VIVF9MVEYsXG4mIzQzO1x0Tkw4MDIxMV9UWFJBVEVfNkdIWl9OT05fSFRfRFVQLFxuIFxuIFx0Lyoga2VlcCBsYXN0ICovXG4gXHRfX05MODAyMTFfVFhSQVRFX0FGVEVSX0xBU1QsXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL25sODAyMTEuYyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmNcbmluZGV4IDQ0ZjJiYWQwODY3MDUuLmNiNDc1MmZjMzhhMGYgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG5AQCAtNTY5LDYgJiM0Mzs1NjksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG5sYV9wb2xpY3kgbmw4MDIxMV90eGF0dHJfcG9saWN5W05MODAyMTFfVFhSQVRFX01BWCAmIzQzOyAxXSA9IHtcbiBcdFtOTDgwMjExX1RYUkFURV9FSFRfTFRGXSA9IE5MQV9QT0xJQ1lfUkFOR0UoTkxBX1U4LFxuIFx0XHRcdFx0XHRcdCAgIE5MODAyMTFfUkFURV9JTkZPX0VIVF8xWExURixcbiBcdFx0XHRcdFx0XHQgICBOTDgwMjExX1JBVEVfSU5GT19FSFRfOFhMVEYpLFxuJiM0MztcdFtOTDgwMjExX1RYUkFURV82R0haX05PTl9IVF9EVVBdID0geyAudHlwZSA9IE5MQV9GTEFHIH0sXG4gXG4gfTtcbiBcbkBAIC02MzAzLDYgJiM0Mzs2MzA0LDE0IEBAIHN0YXRpYyBpbnQgbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2soc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcbiBcdFx0XHRtYXNrLVx1MDAzZWNvbnRyb2xbYmFuZF0uZWh0X2x0ZiA9XG4gXHRcdFx0XHRubGFfZ2V0X3U4KHRiW05MODAyMTFfVFhSQVRFX0VIVF9MVEZdKTtcbiBcbiYjNDM7XHRcdGlmICh0YltOTDgwMjExX1RYUkFURV82R0haX05PTl9IVF9EVVBdKSB7XG4mIzQzO1x0XHRcdGlmIChiYW5kICE9IE5MODAyMTFfQkFORF82R0haIHx8XG4mIzQzO1x0XHRcdCAgICAod2Rldi1cdTAwM2VpZnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfQVAgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdCAgICAgd2Rldi1cdTAwM2VpZnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfUDJQX0dPKSlcbiYjNDM7XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdFx0bWFzay1cdTAwM2Vjb250cm9sW2JhbmRdLm5vbmh0X2R1cF82Z2h6ID0gdHJ1ZTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4gXHRcdGlmIChtYXNrLVx1MDAzZWNvbnRyb2xbYmFuZF0ubGVnYWN5ID09IDApIHtcbiBcdFx0XHQvKiBkb24mIzM5O3QgYWxsb3cgZW1wdHkgbGVnYWN5IHJhdGVzIGlmIEhULCBWSFQsIEhFIG9yIEVIVFxuIFx0XHRcdCAqIGFyZSBub3QgZXZlbiBzdXBwb3J0ZWQuXG5AQCAtNjM0NCw2ICYjNDM7NjM1Myw3IEBAIHN0YXRpYyBpbnQgdmFsaWRhdGVfYmVhY29uX3R4X3JhdGUoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuIHtcbiBcdHUzMiBjb3VudF9odCwgY291bnRfdmh0LCBjb3VudF9oZSwgY291bnRfZWh0LCBpO1xuIFx0dTMyIHJhdGUgPSBiZWFjb25fcmF0ZS1cdTAwM2Vjb250cm9sW2JhbmRdLmxlZ2FjeTtcbiYjNDM7XHRib29sIG5vbmh0X2R1cCA9IGJlYWNvbl9yYXRlLVx1MDAzZWNvbnRyb2xbYmFuZF0ubm9uaHRfZHVwXzZnaHo7XG4gXG4gXHQvKiBBbGxvdyBvbmx5IG9uZSByYXRlICovXG4gXHRpZiAoaHdlaWdodDMyKHJhdGUpIFx1MDAzZSAxKVxuQEAgLTY0MDUsNiAmIzQzOzY0MTUsOSBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2JlYWNvbl90eF9yYXRlKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdCAgICAoIXJhdGUgXHUwMDI2XHUwMDI2ICFjb3VudF9odCBcdTAwMjZcdTAwMjYgIWNvdW50X3ZodCBcdTAwMjZcdTAwMjYgIWNvdW50X2hlIFx1MDAyNlx1MDAyNiAhY291bnRfZWh0KSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4mIzQzO1x0aWYgKG5vbmh0X2R1cCBcdTAwMjZcdTAwMjYgIXJhdGUpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4gXHRpZiAocmF0ZSBcdTAwMjZcdTAwMjZcbiBcdCAgICAhd2lwaHlfZXh0X2ZlYXR1cmVfaXNzZXQoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSxcbiBcdFx0XHRcdCAgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV9CRUFDT05fUkFURV9MRUdBQ1kpKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEwOjQwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25sODAyMTFfc3RhcnRfYXAmIzM0OywKICAgICYjMzQ7bmw4MDIxMV9zZXRfdHhfYml0cmF0ZV9tYXNrJiMzNDssCiAgICAmIzM0O25sODAyMTFfam9pbl9tZXNoJiMzNDssCiAgICAmIzM0O25sODAyMTFfc2V0X3RpZF9jb25maWcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIG5ldyBuZXRsaW5rIGF0dHJpYnV0ZSBgTkw4MDIxMV9UWFJBVEVfNkdIWl9OT05fSFRfRFVQYCBmb3IgY29uZmlndXJpbmcgNiBHSHogbm9uLUhUIGR1cGxpY2F0ZSBCZWFjb24gdHJhbnNtaXNzaW9uLiBJdCBtb2RpZmllcyB0aGUgcGFyc2luZyBhbmQgdmFsaWRhdGlvbiBsb2dpYyBpbiBgbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2tgIGFuZCBgdmFsaWRhdGVfYmVhY29uX3R4X3JhdGVgLCB3aGljaCBhcmUgcmVhY2hhYmxlIHZpYSBzZXZlcmFsIG5sODAyMTEgbmV0bGluayBjb21tYW5kcyAoZS5nLiwgc3RhcnRpbmcgYW4gQVAsIGpvaW5pbmcgYSBtZXNoLCBzZXR0aW5nIFRYIGJpdHJhdGUgbWFzaywgc2V0dGluZyBUSUQgY29uZmlnKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjZmc4MDIxMSBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgdGVzdGVkIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIFdpLUZpIGRldmljZXMgKG1hYzgwMjExX2h3c2ltKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDUyOTQ4ZTUzZjQ2ZTExM2QyZmUyMzRiMDVhOTg0YWE2M2MxNDQ2N2UKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyA1IDEwOjQwOjQ2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaCBiL2luY2x1ZGUvbmV0L2NmZzgwMjExLmgKaW5kZXggOTdjMTZkNGZmMTI3MS4uNmJjNDkwMTA4MzAzYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oCkBAIC05MDEsNiAmIzQzOzkwMSw3IEBAIHN0cnVjdCBjZmc4MDIxMV9iaXRyYXRlX21hc2sgewogCQllbnVtIG5sODAyMTFfZWh0X2dpIGVodF9naTsKIAkJZW51bSBubDgwMjExX2hlX2x0ZiBoZV9sdGY7CiAJCWVudW0gbmw4MDIxMV9laHRfbHRmIGVodF9sdGY7CiYjNDM7CQlib29sIG5vbmh0X2R1cF82Z2h6OwogCX0gY29udHJvbFtOVU1fTkw4MDIxMV9CQU5EU107CiB9OwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaAppbmRleCAwMjAzODdkNzY0MTIyLi5kOGZlZmVmYzExYTk1IDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmgKQEAgLTU5MDAsNiAmIzQzOzU5MDAsOSBAQCBlbnVtIG5sODAyMTFfa2V5X2F0dHJpYnV0ZXMgewogICoJc2VlICZhbXA7c3RydWN0IG5sODAyMTFfdHhyYXRlX2VodAogICogQE5MODAyMTFfVFhSQVRFX0VIVF9HSTogY29uZmlndXJlIEVIVCBHSSwgKHU4LCBzZWUgJmFtcDtlbnVtIG5sODAyMTFfZWh0X2dpKQogICogQE5MODAyMTFfVFhSQVRFX0VIVF9MVEY6IGNvbmZpZ3VyZSBFSFQgTFRGLCAodTgsIHNlZSAmYW1wO2VudW0gbmw4MDIxMV9laHRfbHRmKQomIzQzOyAqIEBOTDgwMjExX1RYUkFURV82R0haX05PTl9IVF9EVVA6IGNvbmZpZ3VyZSA2IEdIeiBub24tSFQgZHVwbGljYXRlIEJlYWNvbgomIzQzOyAqCXRyYW5zbWlzc2lvbi4gVGhpcyBmbGFnIGlzIGFwcGxpY2FibGUgb25seSBpbiBCZWFjb24gVFggcmF0ZSBzZXR0aW5nCiYjNDM7ICoJYW5kIG11c3QgYmUgYWNjb21wYW5pZWQgYnkgYSBub24tSFQgKGxlZ2FjeSkgQmVhY29uIHJhdGUuCiAgKiBAX19OTDgwMjExX1RYUkFURV9BRlRFUl9MQVNUOiBpbnRlcm5hbAogICogQE5MODAyMTFfVFhSQVRFX01BWDogaGlnaGVzdCBUWCByYXRlIGF0dHJpYnV0ZQogICovCkBAIC01OTE1LDYgJiM0Mzs1OTE4LDcgQEAgZW51bSBubDgwMjExX3R4X3JhdGVfYXR0cmlidXRlcyB7CiAJTkw4MDIxMV9UWFJBVEVfRUhULAogCU5MODAyMTFfVFhSQVRFX0VIVF9HSSwKIAlOTDgwMjExX1RYUkFURV9FSFRfTFRGLAomIzQzOwlOTDgwMjExX1RYUkFURV82R0haX05PTl9IVF9EVVAsCiAKIAkvKiBrZWVwIGxhc3QgKi8KIAlfX05MODAyMTFfVFhSQVRFX0FGVEVSX0xBU1QsCmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jIGIvbmV0L3dpcmVsZXNzL25sODAyMTEuYwppbmRleCA0NGYyYmFkMDg2NzA1Li5jYjQ3NTJmYzM4YTBmIDEwMDY0NAotLS0gYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmMKQEAgLTU2OSw2ICYjNDM7NTY5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IG5sODAyMTFfdHhhdHRyX3BvbGljeVtOTDgwMjExX1RYUkFURV9NQVggJiM0MzsgMV0gPSB7CiAJW05MODAyMTFfVFhSQVRFX0VIVF9MVEZdID0gTkxBX1BPTElDWV9SQU5HRShOTEFfVTgsCiAJCQkJCQkgICBOTDgwMjExX1JBVEVfSU5GT19FSFRfMVhMVEYsCiAJCQkJCQkgICBOTDgwMjExX1JBVEVfSU5GT19FSFRfOFhMVEYpLAomIzQzOwlbTkw4MDIxMV9UWFJBVEVfNkdIWl9OT05fSFRfRFVQXSA9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LAogCiB9OwogCkBAIC02MzAzLDYgJiM0Mzs2MzA0LDE0IEBAIHN0YXRpYyBpbnQgbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2soc3RydWN0IGdlbmxfaW5mbyAqaW5mbywKIAkJCW1hc2stJmd0O2NvbnRyb2xbYmFuZF0uZWh0X2x0ZiA9CiAJCQkJbmxhX2dldF91OCh0YltOTDgwMjExX1RYUkFURV9FSFRfTFRGXSk7CiAKJiM0MzsJCWlmICh0YltOTDgwMjExX1RYUkFURV82R0haX05PTl9IVF9EVVBdKSB7CiYjNDM7CQkJaWYgKGJhbmQgIT0gTkw4MDIxMV9CQU5EXzZHSFogfHwKJiM0MzsJCQkgICAgKHdkZXYtJmd0O2lmdHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUCAmYW1wOyZhbXA7CiYjNDM7CQkJICAgICB3ZGV2LSZndDtpZnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfUDJQX0dPKSkKJiM0MzsJCQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CQkJbWFzay0mZ3Q7Y29udHJvbFtiYW5kXS5ub25odF9kdXBfNmdoeiA9IHRydWU7CiYjNDM7CQl9CiYjNDM7CiAJCWlmIChtYXNrLSZndDtjb250cm9sW2JhbmRdLmxlZ2FjeSA9PSAwKSB7CiAJCQkvKiBkb24mIzM5O3QgYWxsb3cgZW1wdHkgbGVnYWN5IHJhdGVzIGlmIEhULCBWSFQsIEhFIG9yIEVIVAogCQkJICogYXJlIG5vdCBldmVuIHN1cHBvcnRlZC4KQEAgLTYzNDQsNiAmIzQzOzYzNTMsNyBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2JlYWNvbl90eF9yYXRlKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldiwKIHsKIAl1MzIgY291bnRfaHQsIGNvdW50X3ZodCwgY291bnRfaGUsIGNvdW50X2VodCwgaTsKIAl1MzIgcmF0ZSA9IGJlYWNvbl9yYXRlLSZndDtjb250cm9sW2JhbmRdLmxlZ2FjeTsKJiM0MzsJYm9vbCBub25odF9kdXAgPSBiZWFjb25fcmF0ZS0mZ3Q7Y29udHJvbFtiYW5kXS5ub25odF9kdXBfNmdoejsKIAogCS8qIEFsbG93IG9ubHkgb25lIHJhdGUgKi8KIAlpZiAoaHdlaWdodDMyKHJhdGUpICZndDsgMSkKQEAgLTY0MDUsNiAmIzQzOzY0MTUsOSBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2JlYWNvbl90eF9yYXRlKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldiwKIAkgICAgKCFyYXRlICZhbXA7JmFtcDsgIWNvdW50X2h0ICZhbXA7JmFtcDsgIWNvdW50X3ZodCAmYW1wOyZhbXA7ICFjb3VudF9oZSAmYW1wOyZhbXA7ICFjb3VudF9laHQpKQogCQlyZXR1cm4gLUVJTlZBTDsKIAomIzQzOwlpZiAobm9uaHRfZHVwICZhbXA7JmFtcDsgIXJhdGUpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsKIAlpZiAocmF0ZSAmYW1wOyZhbXA7CiAJICAgICF3aXBoeV9leHRfZmVhdHVyZV9pc3NldCgmYW1wO3JkZXYtJmd0O3dpcGh5LAogCQkJCSAgICAgTkw4MDIxMV9FWFRfRkVBVFVSRV9CRUFDT05fUkFURV9MRUdBQ1kpKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMDo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzk1CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMzEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFdpcmVsZXNzIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQgdG91Y2hlcyBzb21lIGNvcmUgd2lyZWxlc3MgaW5mcmFzdHJ1Y3R1cmUgZmlsZXM6IGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jYCwgYGluY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmhgLCBhbmQgYGluY2x1ZGUvbmV0L2NmZzgwMjExLmhgLiBJbW1lZGlhdGVseSwgSSBzZWUgaXQmIzM5O3MgYWRkaW5nIGEgbmV3IG5ldGxpbmsgYXR0cmlidXRlLCBgTkw4MDIxMV9UWFJBVEVfNkdIWl9OT05fSFRfRFVQYCwgdG8gdGhlIGBubDgwMjExX3R4X3JhdGVfYXR0cmlidXRlc2AgZW51bS4gVGhhdCYjMzk7cyBhIGZsYWcgZm9yIHR4IHJhdGUgY29uZmlnLi4uIGdvdCBpdC4gSXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggdGhlbiBpbXBsZW1lbnRzIHBhcnNpbmcgb2YgdGhlIGF0dHJpYnV0ZSBpbiBgbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2tgIGFuZCB2YWxpZGF0ZXMgaXQgaW4gYHZhbGlkYXRlX2JlYWNvbl90eF9yYXRlYC4KClJpZ2h0IGF3YXksIHRoaXMgc2NyZWFtcyAmIzM0O25ldGxpbmsgaW50ZXJhY3Rpb24mIzM0OyB0byBtZS4gU3BlY2lmaWNhbGx5LCB3ZSYjMzk7cmUgbW9kaWZ5aW5nIHRoZSBgY2ZnODAyMTEvbmw4MDIxMWAgc3Vic3lzdGVtLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB2aWEgbmV0bGluayBzb2NrZXRzLCBzbywgYWJzb2x1dGVseSwgdGhpcyBuZWVkcyBmdXp6aW5nLiBUaGFua2Z1bGx5LCBJIGNhbiBlbXVsYXRlIGhhcmR3YXJlIHdpdGggYG1hYzgwMjExX2h3c2ltYCB0byB0ZXN0IHRoaXMgcHJvcGVybHkuCgpMZXQmIzM5O3MgZm9jdXMgb24gdGhlIHR3byBmdW5jdGlvbnMgbW9kaWZpZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHNvIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjazoKCiogICBgbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2tgCiogICBgdmFsaWRhdGVfYmVhY29uX3R4X3JhdGVgCgpJIG5lZWQgdG8gc2VlIHdoZXJlIGBubDgwMjExX3BhcnNlX3R4X2JpdHJhdGVfbWFza2AgaXMgY2FsbGVkLCBzbyBJJiMzOTtsbCBncmVwIGZvciB0aGF0LiBBaCwgaXQmIzM5O3Mgc3RhdGljIGluIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jYC4gT2ssIHNvIG5vdyBJIG5lZWQgdG8gZmluZCB0aGUgY2FsbGVycyBvZiBgbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2tgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEwOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25sODAyMTFfcGFyc2VfdHhfYml0cmF0ZV9tYXNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL25sODAyMTEuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTYwOTc9c3RhdGljIGJvb2wgZWh0X3NldF9tY3NfbWFzayhzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNjE1Ny1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NjE1ODpzdGF0aWMgaW50IG5sODAyMTFfcGFyc2VfdHhfYml0cmF0ZV9tYXNrKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTYxNTktXHRcdFx0XHRcdCBzdHJ1Y3QgbmxhdHRyICphdHRyc1tdLFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9NzIxMD1zdGF0aWMgaW50IG5sODAyMTFfc3RhcnRfYXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTczODQtXHRpZiAoaW5mby1cdTAwM2VhdHRyc1tOTDgwMjExX0FUVFJfVFhfUkFURVNdKSB7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjczODU6XHRcdGVyciA9IG5sODAyMTFfcGFyc2VfdHhfYml0cmF0ZV9tYXNrKGluZm8sIGluZm8tXHUwMDNlYXR0cnMsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTczODYtXHRcdFx0XHRcdFx0ICAgIE5MODAyMTFfQVRUUl9UWF9SQVRFUyxcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE0Njk4PXN0YXRpYyBpbnQgbmw4MDIxMV9zZXRfdHhfYml0cmF0ZV9tYXNrKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDcwOS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTQ3MTA6XHRlcnIgPSBubDgwMjExX3BhcnNlX3R4X2JpdHJhdGVfbWFzayhpbmZvLCBpbmZvLVx1MDAzZWF0dHJzLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDcxMS1cdFx0XHRcdFx0ICAgIE5MODAyMTFfQVRUUl9UWF9SQVRFUywgXHUwMDI2bWFzayxcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE1Mjc4PXN0YXRpYyBpbnQgbmw4MDIxMV9qb2luX21lc2goc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE1MzY0LVx0aWYgKGluZm8tXHUwMDNlYXR0cnNbTkw4MDIxMV9BVFRSX1RYX1JBVEVTXSkge1xubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNTM2NTpcdFx0ZXJyID0gbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2soaW5mbywgaW5mby1cdTAwM2VhdHRycyxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTUzNjYtXHRcdFx0XHRcdFx0ICAgIE5MODAyMTFfQVRUUl9UWF9SQVRFUyxcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE4NzU1PXN0YXRpYyBpbnQgcGFyc2VfdGlkX2NvbmYoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTg4MzEtXHRcdFx0YXR0ciA9IE5MODAyMTFfVElEX0NPTkZJR19BVFRSX1RYX1JBVEU7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE4ODMyOlx0XHRcdGVyciA9IG5sODAyMTFfcGFyc2VfdHhfYml0cmF0ZV9tYXNrKGluZm8sIGF0dHJzLCBhdHRyLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODgzMy1cdFx0XHRcdFx0XHQgICAgXHUwMDI2dGlkX2NvbmYtXHUwMDNldHhyYXRlX21hc2ssIGRldixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMDo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTgwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQ2FsbGVycyBvZiBgbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2tgKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2tgIGlzIGJlaW5nIHVzZWQuIEEgcXVpY2sgc2NhbiByZXZlYWxzIHRoYXQgaXQmIzM5O3MgY2FsbGVkIGZyb20gYG5sODAyMTFfc3RhcnRfYXBgLCBgbmw4MDIxMV9zZXRfdHhfYml0cmF0ZV9tYXNrYCwgYG5sODAyMTFfam9pbl9tZXNoYCwgYW5kLCBpbmRpcmVjdGx5LCB0aHJvdWdoIGBwYXJzZV90aWRfY29uZmAsIGZyb20gYG5sODAyMTFfc2V0X3RpZF9jb25maWdgLiBUaGlzIGdpdmVzIG1lIGEgZ29vZCBvdmVydmlldzsgaXQmIzM5O3MgYmVpbmcgdXNlZCBpbiBBUCBzZXR1cCwgc2V0dGluZyBleHBsaWNpdCBiaXRyYXRlIG1hc2tzLCBtZXNoIG5ldHdvcmsgam9pbnMsIGFuZCB0aHJvdWdoIHRoZSBUcmFmZmljIElkZW50aWZpZXIgKFRJRCkgY29uZmlndXJhdGlvbi4gVGhpcyB0ZWxscyBtZSBhYm91dCBjb25maWd1cmF0aW9uIGFuZCBvcGVyYXRpb25hbCBjb250ZXh0cy4KCk5vdywgbGV0JiMzOTtzIHNlZSBob3cgYHZhbGlkYXRlX2JlYWNvbl90eF9yYXRlYCBmaXRzIGludG8gdGhpcyBwaWN0dXJlLiBJIHdhbnQgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueSBvdmVybGFwIG9yIGRlcGVuZGVuY3kgdGhlcmUsIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBiaXRyYXRlIG1hc2sgcGFyc2luZyBpbnRlZ3JhdGVzIHdpdGggdGhlIG92ZXJhbGwgdmFsaWRhdGlvbiBhbmQgYmVhY29uaW5nIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTA6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmFsaWRhdGVfYmVhY29uX3R4X3JhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9ubDgwMjExLmM9NjE1OD1zdGF0aWMgaW50IG5sODAyMTFfcGFyc2VfdHhfYml0cmF0ZV9tYXNrKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy02MzQ5LVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo2MzUwOnN0YXRpYyBpbnQgdmFsaWRhdGVfYmVhY29uX3R4X3JhdGUoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy02MzUxLVx0XHRcdFx0ICAgZW51bSBubDgwMjExX2JhbmQgYmFuZCxcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTcyMTA9c3RhdGljIGludCBubDgwMjExX3N0YXJ0X2FwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy03MzkxLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo3MzkyOlx0XHRlcnIgPSB2YWxpZGF0ZV9iZWFjb25fdHhfcmF0ZShyZGV2LCBwYXJhbXMtXHUwMDNlY2hhbmRlZi5jaGFuLVx1MDAzZWJhbmQsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTczOTMtXHRcdFx0XHRcdCAgICAgIFx1MDAyNnBhcmFtcy1cdTAwM2ViZWFjb25fcmF0ZSk7XG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xNTI3OD1zdGF0aWMgaW50IG5sODAyMTFfam9pbl9tZXNoKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNTM3NC1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTUzNzU6XHRcdGVyciA9IHZhbGlkYXRlX2JlYWNvbl90eF9yYXRlKHJkZXYsIHNldHVwLmNoYW5kZWYuY2hhbi1cdTAwM2ViYW5kLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNTM3Ni1cdFx0XHRcdFx0ICAgICAgXHUwMDI2c2V0dXAuYmVhY29uX3JhdGUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEwOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4MDEKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAxNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEJlYWNvbiBUcmFuc21pc3Npb24gUmF0ZSBWYWxpZGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIGB2YWxpZGF0ZV9iZWFjb25fdHhfcmF0ZWAgZnVuY3Rpb24gZ2V0cyB1c2VkLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgbmw4MDIxMV9zdGFydF9hcGAgYW5kIGBubDgwMjExX2pvaW5fbWVzaGAgYXJlIHRoZSBrZXkgY2FsbGVycyBoZXJlLiBTbywgbG9naWNhbGx5LCB0aGUgcHJpbWFyeSBmb2N1cyBwb2ludHMgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBzaG91bGQgYmU6IGBubDgwMjExX3N0YXJ0X2FwYCwgYG5sODAyMTFfc2V0X3R4X2JpdHJhdGVfbWFza2AsIGFuZCBgbmw4MDIxMV9qb2luX21lc2hgLiBJIGFsc28gaGF2ZSB0byBrZWVwIGFuIGV5ZSBvbiBgbmw4MDIxMV9zZXRfdGlkX2NvbmZpZ2AsIHNpbmNlIGl0IGNhbGxzIGBwYXJzZV90aWRfY29uZmAgd2hpY2ggY291bGQgYmUgcmVsZXZhbnQsIHRob3VnaCBpbiBhbiBpbmRpcmVjdCBtYW5uZXIuCgpCZWZvcmUgSSBnbyBmdXJ0aGVyLCBJIHNob3VsZCBqdXN0IHF1aWNrbHkgZG91YmxlIGNoZWNrIHRoYXQgYG5sODAyMTFfc2V0X3RpZF9jb25maWdgIGlzIGFjdHVhbGx5IGRlZmluZWQsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLiBBIGJhc2ljIHZlcmlmaWNhdGlvbiBpcyBhbHdheXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEwOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25sODAyMTFfc2V0X3RpZF9jb25maWcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9ubDgwMjExLmM9MTg3NTU9c3RhdGljIGludCBwYXJzZV90aWRfY29uZihzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODg1NS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTg4NTY6c3RhdGljIGludCBubDgwMjExX3NldF90aWRfY29uZmlnKHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE4ODU3LVx0XHRcdFx0ICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTk3NDY9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBubDgwMjExX3NtYWxsX29wc1tdID0ge1xuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjA1MjMtXHRcdC5jbWQgPSBOTDgwMjExX0NNRF9TRVRfVElEX0NPTkZJRyxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjA1MjQ6XHRcdC5kb2l0ID0gbmw4MDIxMV9zZXRfdGlkX2NvbmZpZyxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjA1MjUtXHRcdC5mbGFncyA9IEdFTkxfVU5TX0FETUlOX1BFUk0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTA6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUxMgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgYG5sODAyMTFfc2V0X3RpZF9jb25maWdgIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIGBubDgwMjExX3NldF90aWRfY29uZmlnYCBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb24sIHRoYXQmIzM5O3MgY29uZmlybWVkLiBOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgKnJlcXVpcmVkKiB0byBtYWtlIHRoYXQgd29yaz8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcywgdGhlIEtjb25maWcgc3ltYm9scywgYW5kIGFueSByZWxldmFudCBNYWtlZmlsZSBlbnRyaWVzLiBUaGUgY29kZSBpdHNlbGYsIEkgcmVjYWxsLCBsaXZlcyB3aXRoaW4gYG5ldC93aXJlbGVzcy9ubDgwMjExLmNgLiBTbywgSSYjMzk7bGwgc3RhcnQgZGlnZ2luZyBpbiBgbmV0L3dpcmVsZXNzL0tjb25maWdgIGFuZCBgbmV0L3dpcmVsZXNzL01ha2VmaWxlYCB0byBzZWUgaG93IHRoaXMgcGFydGljdWxhciBmdW5jdGlvbiBpcyBlbmFibGVkLiBUaG9zZSBzaG91bGQgdGVsbCB0aGUgd2hvbGUgc3RvcnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEwOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25sODAyMTEubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvTWFrZWZpbGU9Nz1vYmotJChDT05GSUdfV0VYVF9QUklWKSAmIzQzOz0gd2V4dC1wcml2Lm9cbm5ldC93aXJlbGVzcy9NYWtlZmlsZS04LVxubmV0L3dpcmVsZXNzL01ha2VmaWxlOjk6Y2ZnODAyMTEteSAmIzQzOz0gY29yZS5vIHN5c2ZzLm8gcmFkaW90YXAubyB1dGlsLm8gcmVnLm8gc2Nhbi5vIG5sODAyMTEub1xubmV0L3dpcmVsZXNzL01ha2VmaWxlLTEwLWNmZzgwMjExLXkgJiM0Mzs9IG1sbWUubyBpYnNzLm8gc21lLm8gY2hhbi5vIGV0aHRvb2wubyBtZXNoLm8gYXAubyB0cmFjZS5vIG9jYi5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEwOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5MTkKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgY2ZnODAyMTEgQ29kZWJhc2UqKgoKQWxyaWdodCwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgc29tZXRoaW5nIHRoYXQgY2xlYXJseSBmYWxscyB1bmRlciB0aGUgdW1icmVsbGEgb2YgYGNmZzgwMjExYC4gVGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIE15IG5leHQgbW92ZSBpcyBhbHdheXMgdG8gcXVpY2tseSBvcmllbnQgbXlzZWxmIHdpdGhpbiB0aGUgcmVsZXZhbnQgY29kZWJhc2UuIEluIHRoaXMgY2FzZSwgSSYjMzk7ZCBpbnN0aW5jdGl2ZWx5IHJlYWNoIGZvciB0aGUgYG5ldC93aXJlbGVzcy9NYWtlZmlsZWAuIEl0JiMzOTtzIHRoZSBjZW50cmFsIHBvaW50IGZvciBidWlsZGluZyBhbmQgbGlua2luZyB3aXJlbGVzcyBjb21wb25lbnRzLCBpbmNsdWRpbmcsIG9mIGNvdXJzZSwgYGNmZzgwMjExYC4gVGhhdCBNYWtlZmlsZSB3aWxsIGdpdmUgbWUgYSB2ZXJ5IHF1aWNrIG92ZXJ2aWV3IG9mIHdoYXQmIzM5O3MgYmVpbmcgYnVpbHQsIHdoaWNoIGRyaXZlcnMgYW5kIG1vZHVsZXMgYXJlIGRlcGVuZGVudCBvbiBgY2ZnODAyMTFgLCBhbmQgd2hhdCBvdGhlciBrZXkgbW9kdWxlcyBpbnRlcmFjdCB3aXRoIGl0LiBJdCYjMzk7cyBhIHF1aWNrIHdheSB0byBnZXQgYSBoaWdoLWxldmVsIHZpZXcgb2YgZGVwZW5kZW5jaWVzIGFuZCBpZGVudGlmeSBwb3RlbnRpYWxseSByZWxldmFudCBzb3VyY2UgZmlsZXMgZm9yIHdoYXRldmVyIEkmIzM5O20gdHJvdWJsZXNob290aW5nIG9yIGludmVzdGlnYXRpbmcuIEl0IGlzIHRoZSBsb2dpY2FsIGZpcnN0IHN0ZXAsIHRoZSBwb2ludCB3aGVyZSBJIGNhbiBxdWlja2x5IHNlZSB0aGUgbGF5IG9mIHRoZSBsYW5kLiBJIG5lZWQgdGhpcyB0byBjcmVhdGUgYW4gb3V0bGluZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTA6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2ZnODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxubmV0L3dpcmVsZXNzL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0NGRzgwMjExKSAmIzQzOz0gY2ZnODAyMTEub1xubmV0L3dpcmVsZXNzL01ha2VmaWxlLTMtb2JqLXkgJiM0Mzs9IHRlc3RzL1xuLS1cbm5ldC93aXJlbGVzcy9NYWtlZmlsZT03PW9iai0kKENPTkZJR19XRVhUX1BSSVYpICYjNDM7PSB3ZXh0LXByaXYub1xubmV0L3dpcmVsZXNzL01ha2VmaWxlLTgtXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU6OTpjZmc4MDIxMS15ICYjNDM7PSBjb3JlLm8gc3lzZnMubyByYWRpb3RhcC5vIHV0aWwubyByZWcubyBzY2FuLm8gbmw4MDIxMS5vXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU6MTA6Y2ZnODAyMTEteSAmIzQzOz0gbWxtZS5vIGlic3MubyBzbWUubyBjaGFuLm8gZXRodG9vbC5vIG1lc2gubyBhcC5vIHRyYWNlLm8gb2NiLm9cbm5ldC93aXJlbGVzcy9NYWtlZmlsZToxMTpjZmc4MDIxMS15ICYjNDM7PSBtaWNoYWVsLW1pYy5vIHBtc3Iub1xubmV0L3dpcmVsZXNzL01ha2VmaWxlOjEyOmNmZzgwMjExLSQoQ09ORklHX09GKSAmIzQzOz0gb2Yub1xubmV0L3dpcmVsZXNzL01ha2VmaWxlOjEzOmNmZzgwMjExLSQoQ09ORklHX0NGRzgwMjExX0RFQlVHRlMpICYjNDM7PSBkZWJ1Z2ZzLm9cbm5ldC93aXJlbGVzcy9NYWtlZmlsZToxNDpjZmc4MDIxMS0kKENPTkZJR19DRkc4MDIxMV9XRVhUKSAmIzQzOz0gd2V4dC1jb21wYXQubyB3ZXh0LXNtZS5vXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtMTUtXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU9MTY9Q0ZMQUdTX3RyYWNlLm8gOj0gLUkkKHNyYylcbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0xNy1cbm5ldC93aXJlbGVzcy9NYWtlZmlsZToxODpjZmc4MDIxMS0kKENPTkZJR19DRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVMpICYjNDM7PSBzaGlwcGVkLWNlcnRzLm9cbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0xOS1pZm5lcSAoJChDT05GSUdfQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSKSwpXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU6MjA6Y2ZnODAyMTEteSAmIzQzOz0gZXh0cmEtY2VydHMub1xubmV0L3dpcmVsZXNzL01ha2VmaWxlLTIxLWVuZGlmXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDEwOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3MDQKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA3MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIFdpcmVsZXNzIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZywgYmFzZWQgb24gdGhpcywgd2UgZGVmaW5pdGVseSBuZWVkIGBDT05GSUdfQ0ZHODAyMTFgLiBUaGF0JiMzOTtzIGEgZ2l2ZW4uIEJ1dCBJIHN1c3BlY3Qgd2UgbWlnaHQgYWxzbyBuZWVkIHRvIGVuYWJsZSBgQ09ORklHX01BQzgwMjExX0hXU0lNYCB0byBwcm9wZXJseSBlbXVsYXRlIHRoZSBoYXJkd2FyZSBhbmQgYWN0dWFsbHkgaGl0IHRob3NlIHNwZWNpZmljIGNvZGUgcGF0aHMuIEl0JiMzOTtzIHRoZSBzaW11bGF0aW9uIG9mIHRoZSBoYXJkd2FyZSB0aGF0IHdpbGwgbGlrZWx5IGFsbG93IHVzIHRvIHJlYWNoIHRoZSBwYXJ0cyBvZiB0aGUgY29kZSB0aGF0IHJlcXVpcmUgYSByZWdpc3RlcmVkIGB3aXBoeWAgZGV2aWNlLiBSaWdodCwgbGV0JiMzOTtzIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYENPTkZJR19NQUM4MDIxMV9IV1NJTWAgc2V0dGluZyBhbmQgbWFrZSBzdXJlIGl0JiMzOTtzIHNldCBhY2NvcmRpbmdseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTA6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQzgwMjExX0hXU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZzoxOmNvbmZpZyBNQUM4MDIxMV9IV1NJTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxMVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMDo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDIyCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktlcm5lbCBXaXJlbGVzcyBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGtlcm5lbCB3aXJlbGVzcyBzZXR1cC4gSSBrbm93IGBNQUM4MDIxMV9IV1NJTWAgaXMgYSBzb2xpZCBjaG9pY2UgZm9yIGEgc2ltdWxhdGVkIGVudmlyb25tZW50LCBhbmQgb2YgY291cnNlLCBgQ0ZHODAyMTFgIGFuZCB0aGUgY29yZSBgTUFDODAyMTFgIGFyZSBmdW5kYW1lbnRhbCBjb21wb25lbnRzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgTmV0bGluayBoYW5kbGVycyBpbiBgbmw4MDIxMS5jYC4gSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IGBubDgwMjExX3N0YXJ0X2FwYCwgYG5sODAyMTFfc2V0X3R4X2JpdHJhdGVfbWFza2AsIGBubDgwMjExX2pvaW5fbWVzaGAsIGFuZCBgbmw4MDIxMV9zZXRfdGlkX2NvbmZpZ2AuIFRoZXNlIGFyZSBrZXkgZnVuY3Rpb25hbGl0aWVzLCBhbmQgSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgaW50ZXJhY3Rpb25zIHdpdGggdGhvc2UgZnVuY3Rpb25zIGFyZSBwcm9wZXIuCgpJIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGVyZSBhcmVuJiMzOTt0IGFueSBvdGhlciBjcnVjaWFsIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIEkmIzM5O3ZlIG92ZXJsb29rZWQuIEkga25vdyBgQ0ZHODAyMTFgIHNvbWV0aW1lcyByZWxpZXMgb24gYFJGS0lMTGAsIGJ1dCBpdCB1c3VhbGx5IHN0YW5kcyBvbiBpdHMgb3duLiBJJiMzOTtsbCBkb3VibGUtY2hlY2sgYG5ldC93aXJlbGVzcy9LY29uZmlnYCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gYWJvdXQgdGhlIGBDRkc4MDIxMWAgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMuIFRoaXMgaXMganVzdCBnb29kIHByYWN0aWNlOyBhbHdheXMgZG91YmxlIGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0ZHODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvS2NvbmZpZz0xND1jb25maWcgV0VYVF9QUklWXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzpjb25maWcgQ0ZHODAyMTFcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7Y2ZnODAyMTEgLSB3aXJlbGVzcyBjb25maWd1cmF0aW9uIEFQSVwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnPTM4PWNvbmZpZyBOTDgwMjExX1RFU1RNT0RFXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctNTEtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo1Mjpjb25maWcgQ0ZHODAyMTFfREVWRUxPUEVSX1dBUk5JTkdTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01My1cdGJvb2wgXCYjMzQ7ZW5hYmxlIGRldmVsb3BlciB3YXJuaW5nc1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTY3LVxubmV0L3dpcmVsZXNzL0tjb25maWc6Njg6Y29uZmlnIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xubmV0L3dpcmVsZXNzL0tjb25maWctNjktXHRib29sIFwmIzM0O2NmZzgwMjExIGNlcnRpZmljYXRpb24gb251c1wmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTg4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6ODk6Y29uZmlnIENGRzgwMjExX1JFUVVJUkVfU0lHTkVEX1JFR0RCXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy05MC1cdGJvb2wgXCYjMzQ7cmVxdWlyZSByZWdkYiBzaWduYXR1cmVcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctOTgtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzo5OTpjb25maWcgQ0ZHODAyMTFfVVNFX0tFUk5FTF9SRUdEQl9LRVlTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDAtXHRib29sIFwmIzM0O2FsbG93IHJlZ2RiIGtleXMgc2hpcHBlZCB3aXRoIHRoZSBrZXJuZWxcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTEwLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTExOmNvbmZpZyBDRkc4MDIxMV9FWFRSQV9SRUdEQl9LRVlESVJcbm5ldC93aXJlbGVzcy9LY29uZmlnLTExMi1cdHN0cmluZyBcJiMzNDthZGRpdGlvbmFsIHJlZ2RiIGtleSBkaXJlY3RvcnlcJiMzNDsgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTIxLVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTIyOmNvbmZpZyBDRkc4MDIxMV9SRUdfQ0VMTFVMQVJfSElOVFNcbm5ldC93aXJlbGVzcy9LY29uZmlnLTEyMy1cdGJvb2wgXCYjMzQ7Y2ZnODAyMTEgcmVndWxhdG9yeSBzdXBwb3J0IGZvciBjZWxsdWxhciBiYXNlIHN0YXRpb24gaGludHNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMzQtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxMzU6Y29uZmlnIENGRzgwMjExX1JFR19SRUxBWF9OT19JUlxubmV0L3dpcmVsZXNzL0tjb25maWctMTM2LVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBzdXBwb3J0IGZvciBOT19JUiByZWxheGF0aW9uXCYjMzQ7XG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTU4LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTU5OmNvbmZpZyBDRkc4MDIxMV9ERUZBVUxUX1BTXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNjAtXHRib29sIFwmIzM0O2VuYWJsZSBwb3dlcnNhdmUgYnkgZGVmYXVsdFwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2OC1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE2OTpjb25maWcgQ0ZHODAyMTFfREVCVUdGU1xubmV0L3dpcmVsZXNzL0tjb25maWctMTcwLVx0Ym9vbCBcJiMzNDtjZmc4MDIxMSBEZWJ1Z0ZTIGVudHJpZXNcJiMzNDtcbi0tXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzYtXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNzc6Y29uZmlnIENGRzgwMjExX0NSREFfU1VQUE9SVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc4LVx0Ym9vbCBcJiMzNDtzdXBwb3J0IENSREFcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L3dpcmVsZXNzL0tjb25maWctMTg2LVxubmV0L3dpcmVsZXNzL0tjb25maWc6MTg3OmNvbmZpZyBDRkc4MDIxMV9XRVhUXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODgtXHRib29sIFwmIzM0O2NmZzgwMjExIHdpcmVsZXNzIGV4dGVuc2lvbnMgY29tcGF0aWJpbGl0eVwmIzM0O1xuLS1cbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5My1cbm5ldC93aXJlbGVzcy9LY29uZmlnOjE5NDpjb25maWcgQ0ZHODAyMTFfS1VOSVRfVEVTVFxubmV0L3dpcmVsZXNzL0tjb25maWctMTk1LVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIGNmZzgwMjExXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTA6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQzNQoJCQkJCQkJb3V0cHV0OiAyNzAKCQkJCQkJCXRob3VnaHRzOiAyNzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUHJvcG9zZWQgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhaW1lZCBzcXVhcmVseSBhdCB0aGUgd2lyZWxlc3MgbmV0d29ya2luZyBjb3JlLCBzcGVjaWZpY2FsbHkgdGhlIGBjZmc4MDIxMWAgc3Vic3lzdGVtLCB3aGljaCBpcyB0aGUgbWFpbiBjb25maWd1cmF0aW9uIGludGVyZmFjZS4gSXQmIzM5O3MgZ29vZCB0byBzZWUgdGhhdCB0aGV5JiMzOTtyZSB1c2luZyBgbWFjODAyMTFgIGFzIHdlbGwuIE9mIGNvdXJzZSwgYG1hYzgwMjExX2h3c2ltYCB3aWxsIGJlIHZpdGFsIGZvciB0ZXN0aW5nIHRoaXMga2luZCBvZiB0aGluZy4KClRoZSBjcnV4IG9mIHRoZSBtYXR0ZXIgaXMgdGhpcyBuZXcgbmV0bGluayBhdHRyaWJ1dGUsIGBOTDgwMjExX1RYUkFURV82R0haX05PTl9IVF9EVVBgLiBJdCBzZWVtcyB0aGV5JiMzOTtyZSBleHRlbmRpbmcgdGhlIGV4aXN0aW5nIGZ1bmN0aW9uYWxpdHkgdG8gaGFuZGxlIG5vbi1IVCBkdXBsaWNhdGUgQmVhY29uIHRyYW5zbWlzc2lvbnMgaW4gdGhlIDYgR0h6IGJhbmQuIE1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgb25nb2luZyBldm9sdXRpb24gb2Ygd2lyZWxlc3Mgc3RhbmRhcmRzLgoKSSBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIG1vZGlmaWNhdGlvbnMgaW4gYG5sODAyMTFfcGFyc2VfdHhfYml0cmF0ZV9tYXNrYCBhbmQgYHZhbGlkYXRlX2JlYWNvbl90eF9yYXRlYC4gVGhvc2UgYXJlIHRoZSBrZXkgcGllY2VzIGFmZmVjdGVkLCB3aGljaCBhcmUgY2FsbGVkIGJ5IGBubDgwMjExX3N0YXJ0X2FwYCwgYG5sODAyMTFfam9pbl9tZXNoYCwgYG5sODAyMTFfc2V0X3R4X2JpdHJhdGVfbWFza2AsIGFuZCBgbmw4MDIxMV9zZXRfdGlkX2NvbmZpZ2AuIFRoZXNlIGFyZSB0aGUgc3BlY2lmaWMgbmw4MDIxMSBjb21tYW5kcyB0aGlzIHdpbGwgYWZmZWN0LiBTb3VuZHMgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gdGVzdCBpbiB0aGUgYG1hYzgwMjExX2h3c2ltYCBlbnZpcm9ubWVudC4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0byBjaGVjayB0aGF0LiBJIHdhbnQgdG8gc2VlIGhvdyB0aGVzZSBzZXQtcmVzdWx0cyBmdW5jdGlvbiB0byBtYWtlIHN1cmUgdGhhdCBldmVyeXRoaW5nIGlzIGJlaGF2aW5nIGFzIGludGVuZGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtubDgwMjExX3N0YXJ0X2FwJiMzNDssCiAgICAmIzM0O25sODAyMTFfc2V0X3R4X2JpdHJhdGVfbWFzayYjMzQ7LAogICAgJiMzNDtubDgwMjExX2pvaW5fbWVzaCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3NldF90aWRfY29uZmlnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBuZXcgbmV0bGluayBhdHRyaWJ1dGUgYE5MODAyMTFfVFhSQVRFXzZHSFpfTk9OX0hUX0RVUGAgZm9yIGNvbmZpZ3VyaW5nIDYgR0h6IG5vbi1IVCBkdXBsaWNhdGUgQmVhY29uIHRyYW5zbWlzc2lvbi4gSXQgbW9kaWZpZXMgdGhlIHBhcnNpbmcgYW5kIHZhbGlkYXRpb24gbG9naWMgaW4gYG5sODAyMTFfcGFyc2VfdHhfYml0cmF0ZV9tYXNrYCBhbmQgYHZhbGlkYXRlX2JlYWNvbl90eF9yYXRlYCwgd2hpY2ggYXJlIHJlYWNoYWJsZSB2aWEgc2V2ZXJhbCBubDgwMjExIG5ldGxpbmsgY29tbWFuZHMgKGUuZy4sIHN0YXJ0aW5nIGFuIEFQLCBqb2luaW5nIGEgbWVzaCwgc2V0dGluZyBUWCBiaXRyYXRlIG1hc2ssIHNldHRpbmcgVElEIGNvbmZpZykuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY2ZnODAyMTEgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRlc3RlZCB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBXaS1GaSBkZXZpY2VzIChtYWM4MDIxMV9od3NpbSkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmw4MDIxMV9zdGFydF9hcCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3NldF90eF9iaXRyYXRlX21hc2smIzM0OywKICAgICYjMzQ7bmw4MDIxMV9qb2luX21lc2gmIzM0OywKICAgICYjMzQ7bmw4MDIxMV9zZXRfdGlkX2NvbmZpZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgbmV3IG5ldGxpbmsgYXR0cmlidXRlIGBOTDgwMjExX1RYUkFURV82R0haX05PTl9IVF9EVVBgIGZvciBjb25maWd1cmluZyA2IEdIeiBub24tSFQgZHVwbGljYXRlIEJlYWNvbiB0cmFuc21pc3Npb24uIEl0IG1vZGlmaWVzIHRoZSBwYXJzaW5nIGFuZCB2YWxpZGF0aW9uIGxvZ2ljIGluIGBubDgwMjExX3BhcnNlX3R4X2JpdHJhdGVfbWFza2AgYW5kIGB2YWxpZGF0ZV9iZWFjb25fdHhfcmF0ZWAsIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIHNldmVyYWwgbmw4MDIxMSBuZXRsaW5rIGNvbW1hbmRzIChlLmcuLCBzdGFydGluZyBhbiBBUCwgam9pbmluZyBhIG1lc2gsIHNldHRpbmcgVFggYml0cmF0ZSBtYXNrLCBzZXR0aW5nIFRJRCBjb25maWcpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNmZzgwMjExIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSB0ZXN0ZWQgdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgV2ktRmkgZGV2aWNlcyAobWFjODAyMTFfaHdzaW0pLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTA6NDA6NDcuMjQ2NTI2MDM3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA1MTIzMTM4MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ0ZHODAyMTFcIixcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5sODAyMTFfc3RhcnRfYXBcIixcbiAgICBcIm5sODAyMTFfc2V0X3R4X2JpdHJhdGVfbWFza1wiLFxuICAgIFwibmw4MDIxMV9qb2luX21lc2hcIixcbiAgICBcIm5sODAyMTFfc2V0X3RpZF9jb25maWdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgbmV3IG5ldGxpbmsgYXR0cmlidXRlIGBOTDgwMjExX1RYUkFURV82R0haX05PTl9IVF9EVVBgIGZvciBjb25maWd1cmluZyA2IEdIeiBub24tSFQgZHVwbGljYXRlIEJlYWNvbiB0cmFuc21pc3Npb24uIEl0IG1vZGlmaWVzIHRoZSBwYXJzaW5nIGFuZCB2YWxpZGF0aW9uIGxvZ2ljIGluIGBubDgwMjExX3BhcnNlX3R4X2JpdHJhdGVfbWFza2AgYW5kIGB2YWxpZGF0ZV9iZWFjb25fdHhfcmF0ZWAsIHdoaWNoIGFyZSByZWFjaGFibGUgdmlhIHNldmVyYWwgbmw4MDIxMSBuZXRsaW5rIGNvbW1hbmRzIChlLmcuLCBzdGFydGluZyBhbiBBUCwgam9pbmluZyBhIG1lc2gsIHNldHRpbmcgVFggYml0cmF0ZSBtYXNrLCBzZXR0aW5nIFRJRCBjb25maWcpLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNmZzgwMjExIHN1YnN5c3RlbSB0aGF0IGNhbiBiZSB0ZXN0ZWQgdXNpbmcgc29mdHdhcmUtZW11bGF0ZWQgV2ktRmkgZGV2aWNlcyAobWFjODAyMTFfaHdzaW0pLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMDo0MDo0Ny4yNDY1MzMxMjdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMjMyOTIyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDUyOTQ4ZTUzZjQ2ZTExM2QyZmUyMzRiMDVhOTg0YWE2M2MxNDQ2N2VcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgNSAxMDo0MDo0NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oIGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxcbmluZGV4IDk3YzE2ZDRmZjEyNzEuLjZiYzQ5MDEwODMwM2EgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxcbisrKyBiL2luY2x1ZGUvbmV0L2NmZzgwMjExLmhcXG5AQCAtOTAxLDYgKzkwMSw3IEBAIHN0cnVjdCBjZmc4MDIxMV9iaXRyYXRlX21hc2sge1xcbiBcXHRcXHRlbnVtIG5sODAyMTFfZWh0X2dpIGVodF9naTtcXG4gXFx0XFx0ZW51bSBubDgwMjExX2hlX2x0ZiBoZV9sdGY7XFxuIFxcdFxcdGVudW0gbmw4MDIxMV9laHRfbHRmIGVodF9sdGY7XFxuK1xcdFxcdGJvb2wgbm9uaHRfZHVwXzZnaHo7XFxuIFxcdH0gY29udHJvbFtOVU1fTkw4MDIxMV9CQU5EU107XFxuIH07XFxuIFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaFxcbmluZGV4IDAyMDM4N2Q3NjQxMjIuLmQ4ZmVmZWZjMTFhOTUgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaFxcbisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmhcXG5AQCAtNTkwMCw2ICs1OTAwLDkgQEAgZW51bSBubDgwMjExX2tleV9hdHRyaWJ1dGVzIHtcXG4gICpcXHRzZWUgXFx1MDAyNnN0cnVjdCBubDgwMjExX3R4cmF0ZV9laHRcXG4gICogQE5MODAyMTFfVFhSQVRFX0VIVF9HSTogY29uZmlndXJlIEVIVCBHSSwgKHU4LCBzZWUgXFx1MDAyNmVudW0gbmw4MDIxMV9laHRfZ2kpXFxuICAqIEBOTDgwMjExX1RYUkFURV9FSFRfTFRGOiBjb25maWd1cmUgRUhUIExURiwgKHU4LCBzZWUgXFx1MDAyNmVudW0gbmw4MDIxMV9laHRfbHRmKVxcbisgKiBATkw4MDIxMV9UWFJBVEVfNkdIWl9OT05fSFRfRFVQOiBjb25maWd1cmUgNiBHSHogbm9uLUhUIGR1cGxpY2F0ZSBCZWFjb25cXG4rICpcXHR0cmFuc21pc3Npb24uIFRoaXMgZmxhZyBpcyBhcHBsaWNhYmxlIG9ubHkgaW4gQmVhY29uIFRYIHJhdGUgc2V0dGluZ1xcbisgKlxcdGFuZCBtdXN0IGJlIGFjY29tcGFuaWVkIGJ5IGEgbm9uLUhUIChsZWdhY3kpIEJlYWNvbiByYXRlLlxcbiAgKiBAX19OTDgwMjExX1RYUkFURV9BRlRFUl9MQVNUOiBpbnRlcm5hbFxcbiAgKiBATkw4MDIxMV9UWFJBVEVfTUFYOiBoaWdoZXN0IFRYIHJhdGUgYXR0cmlidXRlXFxuICAqL1xcbkBAIC01OTE1LDYgKzU5MTgsNyBAQCBlbnVtIG5sODAyMTFfdHhfcmF0ZV9hdHRyaWJ1dGVzIHtcXG4gXFx0Tkw4MDIxMV9UWFJBVEVfRUhULFxcbiBcXHROTDgwMjExX1RYUkFURV9FSFRfR0ksXFxuIFxcdE5MODAyMTFfVFhSQVRFX0VIVF9MVEYsXFxuK1xcdE5MODAyMTFfVFhSQVRFXzZHSFpfTk9OX0hUX0RVUCxcXG4gXFxuIFxcdC8qIGtlZXAgbGFzdCAqL1xcbiBcXHRfX05MODAyMTFfVFhSQVRFX0FGVEVSX0xBU1QsXFxuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXFxuaW5kZXggNDRmMmJhZDA4NjcwNS4uY2I0NzUyZmMzOGEwZiAxMDA2NDRcXG4tLS0gYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXFxuKysrIGIvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xcbkBAIC01NjksNiArNTY5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBubGFfcG9saWN5IG5sODAyMTFfdHhhdHRyX3BvbGljeVtOTDgwMjExX1RYUkFURV9NQVggKyAxXSA9IHtcXG4gXFx0W05MODAyMTFfVFhSQVRFX0VIVF9MVEZdID0gTkxBX1BPTElDWV9SQU5HRShOTEFfVTgsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgIE5MODAyMTFfUkFURV9JTkZPX0VIVF8xWExURixcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAgTkw4MDIxMV9SQVRFX0lORk9fRUhUXzhYTFRGKSxcXG4rXFx0W05MODAyMTFfVFhSQVRFXzZHSFpfTk9OX0hUX0RVUF0gPSB7IC50eXBlID0gTkxBX0ZMQUcgfSxcXG4gXFxuIH07XFxuIFxcbkBAIC02MzAzLDYgKzYzMDQsMTQgQEAgc3RhdGljIGludCBubDgwMjExX3BhcnNlX3R4X2JpdHJhdGVfbWFzayhzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLFxcbiBcXHRcXHRcXHRtYXNrLVxcdTAwM2Vjb250cm9sW2JhbmRdLmVodF9sdGYgPVxcbiBcXHRcXHRcXHRcXHRubGFfZ2V0X3U4KHRiW05MODAyMTFfVFhSQVRFX0VIVF9MVEZdKTtcXG4gXFxuK1xcdFxcdGlmICh0YltOTDgwMjExX1RYUkFURV82R0haX05PTl9IVF9EVVBdKSB7XFxuK1xcdFxcdFxcdGlmIChiYW5kICE9IE5MODAyMTFfQkFORF82R0haIHx8XFxuK1xcdFxcdFxcdCAgICAod2Rldi1cXHUwMDNlaWZ0eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdFxcdCAgICAgd2Rldi1cXHUwMDNlaWZ0eXBlICE9IE5MODAyMTFfSUZUWVBFX1AyUF9HTykpXFxuK1xcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRcXHRtYXNrLVxcdTAwM2Vjb250cm9sW2JhbmRdLm5vbmh0X2R1cF82Z2h6ID0gdHJ1ZTtcXG4rXFx0XFx0fVxcbitcXG4gXFx0XFx0aWYgKG1hc2stXFx1MDAzZWNvbnRyb2xbYmFuZF0ubGVnYWN5ID09IDApIHtcXG4gXFx0XFx0XFx0LyogZG9uJ3QgYWxsb3cgZW1wdHkgbGVnYWN5IHJhdGVzIGlmIEhULCBWSFQsIEhFIG9yIEVIVFxcbiBcXHRcXHRcXHQgKiBhcmUgbm90IGV2ZW4gc3VwcG9ydGVkLlxcbkBAIC02MzQ0LDYgKzYzNTMsNyBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2JlYWNvbl90eF9yYXRlKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG4ge1xcbiBcXHR1MzIgY291bnRfaHQsIGNvdW50X3ZodCwgY291bnRfaGUsIGNvdW50X2VodCwgaTtcXG4gXFx0dTMyIHJhdGUgPSBiZWFjb25fcmF0ZS1cXHUwMDNlY29udHJvbFtiYW5kXS5sZWdhY3k7XFxuK1xcdGJvb2wgbm9uaHRfZHVwID0gYmVhY29uX3JhdGUtXFx1MDAzZWNvbnRyb2xbYmFuZF0ubm9uaHRfZHVwXzZnaHo7XFxuIFxcbiBcXHQvKiBBbGxvdyBvbmx5IG9uZSByYXRlICovXFxuIFxcdGlmIChod2VpZ2h0MzIocmF0ZSkgXFx1MDAzZSAxKVxcbkBAIC02NDA1LDYgKzY0MTUsOSBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2JlYWNvbl90eF9yYXRlKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG4gXFx0ICAgICghcmF0ZSBcXHUwMDI2XFx1MDAyNiAhY291bnRfaHQgXFx1MDAyNlxcdTAwMjYgIWNvdW50X3ZodCBcXHUwMDI2XFx1MDAyNiAhY291bnRfaGUgXFx1MDAyNlxcdTAwMjYgIWNvdW50X2VodCkpXFxuIFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiBcXG4rXFx0aWYgKG5vbmh0X2R1cCBcXHUwMDI2XFx1MDAyNiAhcmF0ZSlcXG4rXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcbiBcXHRpZiAocmF0ZSBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgIXdpcGh5X2V4dF9mZWF0dXJlX2lzc2V0KFxcdTAwMjZyZGV2LVxcdTAwM2V3aXBoeSxcXG4gXFx0XFx0XFx0XFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFX0JFQUNPTl9SQVRFX0xFR0FDWSkpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDEwOjQwOjQ3LjY2OTQ3NzMyNFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQwMDg5MzUyNjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJubDgwMjExX3N0YXJ0X2FwXCIsXG4gICAgXCJubDgwMjExX3NldF90eF9iaXRyYXRlX21hc2tcIixcbiAgICBcIm5sODAyMTFfam9pbl9tZXNoXCIsXG4gICAgXCJubDgwMjExX3NldF90aWRfY29uZmlnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyBuZXRsaW5rIGF0dHJpYnV0ZSBgTkw4MDIxMV9UWFJBVEVfNkdIWl9OT05fSFRfRFVQYCBmb3IgY29uZmlndXJpbmcgNiBHSHogbm9uLUhUIGR1cGxpY2F0ZSBCZWFjb24gdHJhbnNtaXNzaW9uLiBJdCBtb2RpZmllcyB0aGUgcGFyc2luZyBhbmQgdmFsaWRhdGlvbiBsb2dpYyBpbiBgbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2tgIGFuZCBgdmFsaWRhdGVfYmVhY29uX3R4X3JhdGVgLCB3aGljaCBhcmUgcmVhY2hhYmxlIHZpYSBzZXZlcmFsIG5sODAyMTEgbmV0bGluayBjb21tYW5kcyAoZS5nLiwgc3RhcnRpbmcgYW4gQVAsIGpvaW5pbmcgYSBtZXNoLCBzZXR0aW5nIFRYIGJpdHJhdGUgbWFzaywgc2V0dGluZyBUSUQgY29uZmlnKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjZmc4MDIxMSBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgdGVzdGVkIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIFdpLUZpIGRldmljZXMgKG1hYzgwMjExX2h3c2ltKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTI5NDhlNTNmNDZlMTEzZDJmZTIzNGIwNWE5ODRhYTYzYzE0NDY3ZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMTA6NDA6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oIGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxuaW5kZXggOTdjMTZkNGZmMTI3MS4uNmJjNDkwMTA4MzAzYSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2NmZzgwMjExLmhcbisrKyBiL2luY2x1ZGUvbmV0L2NmZzgwMjExLmhcbkBAIC05MDEsNiArOTAxLDcgQEAgc3RydWN0IGNmZzgwMjExX2JpdHJhdGVfbWFzayB7XG4gXHRcdGVudW0gbmw4MDIxMV9laHRfZ2kgZWh0X2dpO1xuIFx0XHRlbnVtIG5sODAyMTFfaGVfbHRmIGhlX2x0ZjtcbiBcdFx0ZW51bSBubDgwMjExX2VodF9sdGYgZWh0X2x0ZjtcbitcdFx0Ym9vbCBub25odF9kdXBfNmdoejtcbiBcdH0gY29udHJvbFtOVU1fTkw4MDIxMV9CQU5EU107XG4gfTtcbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaFxuaW5kZXggMDIwMzg3ZDc2NDEyMi4uZDhmZWZlZmMxMWE5NSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmhcbisrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmhcbkBAIC01OTAwLDYgKzU5MDAsOSBAQCBlbnVtIG5sODAyMTFfa2V5X2F0dHJpYnV0ZXMge1xuICAqXHRzZWUgXHUwMDI2c3RydWN0IG5sODAyMTFfdHhyYXRlX2VodFxuICAqIEBOTDgwMjExX1RYUkFURV9FSFRfR0k6IGNvbmZpZ3VyZSBFSFQgR0ksICh1OCwgc2VlIFx1MDAyNmVudW0gbmw4MDIxMV9laHRfZ2kpXG4gICogQE5MODAyMTFfVFhSQVRFX0VIVF9MVEY6IGNvbmZpZ3VyZSBFSFQgTFRGLCAodTgsIHNlZSBcdTAwMjZlbnVtIG5sODAyMTFfZWh0X2x0ZilcbisgKiBATkw4MDIxMV9UWFJBVEVfNkdIWl9OT05fSFRfRFVQOiBjb25maWd1cmUgNiBHSHogbm9uLUhUIGR1cGxpY2F0ZSBCZWFjb25cbisgKlx0dHJhbnNtaXNzaW9uLiBUaGlzIGZsYWcgaXMgYXBwbGljYWJsZSBvbmx5IGluIEJlYWNvbiBUWCByYXRlIHNldHRpbmdcbisgKlx0YW5kIG11c3QgYmUgYWNjb21wYW5pZWQgYnkgYSBub24tSFQgKGxlZ2FjeSkgQmVhY29uIHJhdGUuXG4gICogQF9fTkw4MDIxMV9UWFJBVEVfQUZURVJfTEFTVDogaW50ZXJuYWxcbiAgKiBATkw4MDIxMV9UWFJBVEVfTUFYOiBoaWdoZXN0IFRYIHJhdGUgYXR0cmlidXRlXG4gICovXG5AQCAtNTkxNSw2ICs1OTE4LDcgQEAgZW51bSBubDgwMjExX3R4X3JhdGVfYXR0cmlidXRlcyB7XG4gXHROTDgwMjExX1RYUkFURV9FSFQsXG4gXHROTDgwMjExX1RYUkFURV9FSFRfR0ksXG4gXHROTDgwMjExX1RYUkFURV9FSFRfTFRGLFxuK1x0Tkw4MDIxMV9UWFJBVEVfNkdIWl9OT05fSFRfRFVQLFxuIFxuIFx0Lyoga2VlcCBsYXN0ICovXG4gXHRfX05MODAyMTFfVFhSQVRFX0FGVEVSX0xBU1QsXG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL25sODAyMTEuYyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmNcbmluZGV4IDQ0ZjJiYWQwODY3MDUuLmNiNDc1MmZjMzhhMGYgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG4rKysgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG5AQCAtNTY5LDYgKzU2OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBubDgwMjExX3R4YXR0cl9wb2xpY3lbTkw4MDIxMV9UWFJBVEVfTUFYICsgMV0gPSB7XG4gXHRbTkw4MDIxMV9UWFJBVEVfRUhUX0xURl0gPSBOTEFfUE9MSUNZX1JBTkdFKE5MQV9VOCxcbiBcdFx0XHRcdFx0XHQgICBOTDgwMjExX1JBVEVfSU5GT19FSFRfMVhMVEYsXG4gXHRcdFx0XHRcdFx0ICAgTkw4MDIxMV9SQVRFX0lORk9fRUhUXzhYTFRGKSxcbitcdFtOTDgwMjExX1RYUkFURV82R0haX05PTl9IVF9EVVBdID0geyAudHlwZSA9IE5MQV9GTEFHIH0sXG4gXG4gfTtcbiBcbkBAIC02MzAzLDYgKzYzMDQsMTQgQEAgc3RhdGljIGludCBubDgwMjExX3BhcnNlX3R4X2JpdHJhdGVfbWFzayhzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLFxuIFx0XHRcdG1hc2stXHUwMDNlY29udHJvbFtiYW5kXS5laHRfbHRmID1cbiBcdFx0XHRcdG5sYV9nZXRfdTgodGJbTkw4MDIxMV9UWFJBVEVfRUhUX0xURl0pO1xuIFxuK1x0XHRpZiAodGJbTkw4MDIxMV9UWFJBVEVfNkdIWl9OT05fSFRfRFVQXSkge1xuK1x0XHRcdGlmIChiYW5kICE9IE5MODAyMTFfQkFORF82R0haIHx8XG4rXHRcdFx0ICAgICh3ZGV2LVx1MDAzZWlmdHlwZSAhPSBOTDgwMjExX0lGVFlQRV9BUCBcdTAwMjZcdTAwMjZcbitcdFx0XHQgICAgIHdkZXYtXHUwMDNlaWZ0eXBlICE9IE5MODAyMTFfSUZUWVBFX1AyUF9HTykpXG4rXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0XHRtYXNrLVx1MDAzZWNvbnRyb2xbYmFuZF0ubm9uaHRfZHVwXzZnaHogPSB0cnVlO1xuK1x0XHR9XG4rXG4gXHRcdGlmIChtYXNrLVx1MDAzZWNvbnRyb2xbYmFuZF0ubGVnYWN5ID09IDApIHtcbiBcdFx0XHQvKiBkb24ndCBhbGxvdyBlbXB0eSBsZWdhY3kgcmF0ZXMgaWYgSFQsIFZIVCwgSEUgb3IgRUhUXG4gXHRcdFx0ICogYXJlIG5vdCBldmVuIHN1cHBvcnRlZC5cbkBAIC02MzQ0LDYgKzYzNTMsNyBAQCBzdGF0aWMgaW50IHZhbGlkYXRlX2JlYWNvbl90eF9yYXRlKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiB7XG4gXHR1MzIgY291bnRfaHQsIGNvdW50X3ZodCwgY291bnRfaGUsIGNvdW50X2VodCwgaTtcbiBcdHUzMiByYXRlID0gYmVhY29uX3JhdGUtXHUwMDNlY29udHJvbFtiYW5kXS5sZWdhY3k7XG4rXHRib29sIG5vbmh0X2R1cCA9IGJlYWNvbl9yYXRlLVx1MDAzZWNvbnRyb2xbYmFuZF0ubm9uaHRfZHVwXzZnaHo7XG4gXG4gXHQvKiBBbGxvdyBvbmx5IG9uZSByYXRlICovXG4gXHRpZiAoaHdlaWdodDMyKHJhdGUpIFx1MDAzZSAxKVxuQEAgLTY0MDUsNiArNjQxNSw5IEBAIHN0YXRpYyBpbnQgdmFsaWRhdGVfYmVhY29uX3R4X3JhdGUoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuIFx0ICAgICghcmF0ZSBcdTAwMjZcdTAwMjYgIWNvdW50X2h0IFx1MDAyNlx1MDAyNiAhY291bnRfdmh0IFx1MDAyNlx1MDAyNiAhY291bnRfaGUgXHUwMDI2XHUwMDI2ICFjb3VudF9laHQpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbitcdGlmIChub25odF9kdXAgXHUwMDI2XHUwMDI2ICFyYXRlKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbiBcdGlmIChyYXRlIFx1MDAyNlx1MDAyNlxuIFx0ICAgICF3aXBoeV9leHRfZmVhdHVyZV9pc3NldChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LFxuIFx0XHRcdFx0ICAgICBOTDgwMjExX0VYVF9GRUFUVVJFX0JFQUNPTl9SQVRFX0xFR0FDWSkpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMDo0MDo0Ny42Njk0Nzg4OTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODIyODg5Mzc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdpcmVsZXNzIFBhdGNoIGZvciBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0IHRvdWNoZXMgc29tZSBjb3JlIHdpcmVsZXNzIGluZnJhc3RydWN0dXJlIGZpbGVzOiBgbmV0L3dpcmVsZXNzL25sODAyMTEuY2AsIGBpbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oYCwgYW5kIGBpbmNsdWRlL25ldC9jZmc4MDIxMS5oYC4gSW1tZWRpYXRlbHksIEkgc2VlIGl0J3MgYWRkaW5nIGEgbmV3IG5ldGxpbmsgYXR0cmlidXRlLCBgTkw4MDIxMV9UWFJBVEVfNkdIWl9OT05fSFRfRFVQYCwgdG8gdGhlIGBubDgwMjExX3R4X3JhdGVfYXR0cmlidXRlc2AgZW51bS4gVGhhdCdzIGEgZmxhZyBmb3IgdHggcmF0ZSBjb25maWcuLi4gZ290IGl0LiBJdCBsb29rcyBsaWtlIHRoZSBwYXRjaCB0aGVuIGltcGxlbWVudHMgcGFyc2luZyBvZiB0aGUgYXR0cmlidXRlIGluIGBubDgwMjExX3BhcnNlX3R4X2JpdHJhdGVfbWFza2AgYW5kIHZhbGlkYXRlcyBpdCBpbiBgdmFsaWRhdGVfYmVhY29uX3R4X3JhdGVgLlxuXG5SaWdodCBhd2F5LCB0aGlzIHNjcmVhbXMgXCJuZXRsaW5rIGludGVyYWN0aW9uXCIgdG8gbWUuIFNwZWNpZmljYWxseSwgd2UncmUgbW9kaWZ5aW5nIHRoZSBgY2ZnODAyMTEvbmw4MDIxMWAgc3Vic3lzdGVtLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB2aWEgbmV0bGluayBzb2NrZXRzLCBzbywgYWJzb2x1dGVseSwgdGhpcyBuZWVkcyBmdXp6aW5nLiBUaGFua2Z1bGx5LCBJIGNhbiBlbXVsYXRlIGhhcmR3YXJlIHdpdGggYG1hYzgwMjExX2h3c2ltYCB0byB0ZXN0IHRoaXMgcHJvcGVybHkuXG5cbkxldCdzIGZvY3VzIG9uIHRoZSB0d28gZnVuY3Rpb25zIG1vZGlmaWVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCBzbyBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjazpcblxuKiAgIGBubDgwMjExX3BhcnNlX3R4X2JpdHJhdGVfbWFza2BcbiogICBgdmFsaWRhdGVfYmVhY29uX3R4X3JhdGVgXG5cbkkgbmVlZCB0byBzZWUgd2hlcmUgYG5sODAyMTFfcGFyc2VfdHhfYml0cmF0ZV9tYXNrYCBpcyBjYWxsZWQsIHNvIEknbGwgZ3JlcCBmb3IgdGhhdC4gQWgsIGl0J3Mgc3RhdGljIGluIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jYC4gT2ssIHNvIG5vdyBJIG5lZWQgdG8gZmluZCB0aGUgY2FsbGVycyBvZiBgbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2tgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzk1LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTA6NDA6NTQuNDkyMzcxMTgzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMzk3Njc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5sODAyMTFfcGFyc2VfdHhfYml0cmF0ZV9tYXNrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9ubDgwMjExLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL25sODAyMTEuYz02MDk3PXN0YXRpYyBib29sIGVodF9zZXRfbWNzX21hc2soc3RydWN0IGdlbmxfaW5mbyAqaW5mbywgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNjE1Ny1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjYxNTg6c3RhdGljIGludCBubDgwMjExX3BhcnNlX3R4X2JpdHJhdGVfbWFzayhzdHJ1Y3QgZ2VubF9pbmZvICppbmZvLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNjE1OS1cXHRcXHRcXHRcXHRcXHQgc3RydWN0IG5sYXR0ciAqYXR0cnNbXSxcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9NzIxMD1zdGF0aWMgaW50IG5sODAyMTFfc3RhcnRfYXAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNzM4NC1cXHRpZiAoaW5mby1cXHUwMDNlYXR0cnNbTkw4MDIxMV9BVFRSX1RYX1JBVEVTXSkge1xcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NzM4NTpcXHRcXHRlcnIgPSBubDgwMjExX3BhcnNlX3R4X2JpdHJhdGVfbWFzayhpbmZvLCBpbmZvLVxcdTAwM2VhdHRycyxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTczODYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIE5MODAyMTFfQVRUUl9UWF9SQVRFUyxcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTQ2OTg9c3RhdGljIGludCBubDgwMjExX3NldF90eF9iaXRyYXRlX21hc2soc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQ3MDktXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNDcxMDpcXHRlcnIgPSBubDgwMjExX3BhcnNlX3R4X2JpdHJhdGVfbWFzayhpbmZvLCBpbmZvLVxcdTAwM2VhdHRycyxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0NzExLVxcdFxcdFxcdFxcdFxcdCAgICBOTDgwMjExX0FUVFJfVFhfUkFURVMsIFxcdTAwMjZtYXNrLFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xNTI3OD1zdGF0aWMgaW50IG5sODAyMTFfam9pbl9tZXNoKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE1MzY0LVxcdGlmIChpbmZvLVxcdTAwM2VhdHRyc1tOTDgwMjExX0FUVFJfVFhfUkFURVNdKSB7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNTM2NTpcXHRcXHRlcnIgPSBubDgwMjExX3BhcnNlX3R4X2JpdHJhdGVfbWFzayhpbmZvLCBpbmZvLVxcdTAwM2VhdHRycyxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE1MzY2LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBOTDgwMjExX0FUVFJfVFhfUkFURVMsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE4NzU1PXN0YXRpYyBpbnQgcGFyc2VfdGlkX2NvbmYoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODgzMS1cXHRcXHRcXHRhdHRyID0gTkw4MDIxMV9USURfQ09ORklHX0FUVFJfVFhfUkFURTtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE4ODMyOlxcdFxcdFxcdGVyciA9IG5sODAyMTFfcGFyc2VfdHhfYml0cmF0ZV9tYXNrKGluZm8sIGF0dHJzLCBhdHRyLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTg4MzMtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZ0aWRfY29uZi1cXHUwMDNldHhyYXRlX21hc2ssIGRldixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTA6NDA6NTQuNTM1Nzg3NTkxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ3OTc5MzQ0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENhbGxlcnMgb2YgYG5sODAyMTFfcGFyc2VfdHhfYml0cmF0ZV9tYXNrYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2tgIGlzIGJlaW5nIHVzZWQuIEEgcXVpY2sgc2NhbiByZXZlYWxzIHRoYXQgaXQncyBjYWxsZWQgZnJvbSBgbmw4MDIxMV9zdGFydF9hcGAsIGBubDgwMjExX3NldF90eF9iaXRyYXRlX21hc2tgLCBgbmw4MDIxMV9qb2luX21lc2hgLCBhbmQsIGluZGlyZWN0bHksIHRocm91Z2ggYHBhcnNlX3RpZF9jb25mYCwgZnJvbSBgbmw4MDIxMV9zZXRfdGlkX2NvbmZpZ2AuIFRoaXMgZ2l2ZXMgbWUgYSBnb29kIG92ZXJ2aWV3OyBpdCdzIGJlaW5nIHVzZWQgaW4gQVAgc2V0dXAsIHNldHRpbmcgZXhwbGljaXQgYml0cmF0ZSBtYXNrcywgbWVzaCBuZXR3b3JrIGpvaW5zLCBhbmQgdGhyb3VnaCB0aGUgVHJhZmZpYyBJZGVudGlmaWVyIChUSUQpIGNvbmZpZ3VyYXRpb24uIFRoaXMgdGVsbHMgbWUgYWJvdXQgY29uZmlndXJhdGlvbiBhbmQgb3BlcmF0aW9uYWwgY29udGV4dHMuXG5cbk5vdywgbGV0J3Mgc2VlIGhvdyBgdmFsaWRhdGVfYmVhY29uX3R4X3JhdGVgIGZpdHMgaW50byB0aGlzIHBpY3R1cmUuIEkgd2FudCB0byBzZWUgaWYgdGhlcmUncyBhbnkgb3ZlcmxhcCBvciBkZXBlbmRlbmN5IHRoZXJlLCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYml0cmF0ZSBtYXNrIHBhcnNpbmcgaW50ZWdyYXRlcyB3aXRoIHRoZSBvdmVyYWxsIHZhbGlkYXRpb24gYW5kIGJlYWNvbmluZyBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTgwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDEwOjQxOjAwLjAxNTU4NDExMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Mzk5NjU5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2YWxpZGF0ZV9iZWFjb25fdHhfcmF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9ubDgwMjExLmM9NjE1OD1zdGF0aWMgaW50IG5sODAyMTFfcGFyc2VfdHhfYml0cmF0ZV9tYXNrKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTYzNDktXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzo2MzUwOnN0YXRpYyBpbnQgdmFsaWRhdGVfYmVhY29uX3R4X3JhdGUoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtNjM1MS1cXHRcXHRcXHRcXHQgICBlbnVtIG5sODAyMTFfYmFuZCBiYW5kLFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz03MjEwPXN0YXRpYyBpbnQgbmw4MDIxMV9zdGFydF9hcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy03MzkxLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6NzM5MjpcXHRcXHRlcnIgPSB2YWxpZGF0ZV9iZWFjb25fdHhfcmF0ZShyZGV2LCBwYXJhbXMtXFx1MDAzZWNoYW5kZWYuY2hhbi1cXHUwMDNlYmFuZCxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTczOTMtXFx0XFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnBhcmFtcy1cXHUwMDNlYmVhY29uX3JhdGUpO1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xNTI3OD1zdGF0aWMgaW50IG5sODAyMTFfam9pbl9tZXNoKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE1Mzc0LVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTUzNzU6XFx0XFx0ZXJyID0gdmFsaWRhdGVfYmVhY29uX3R4X3JhdGUocmRldiwgc2V0dXAuY2hhbmRlZi5jaGFuLVxcdTAwM2ViYW5kLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTUzNzYtXFx0XFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNnNldHVwLmJlYWNvbl9yYXRlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTA6NDE6MDAuMDU5NTg2OTAxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk0NTgyNDA2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQmVhY29uIFRyYW5zbWlzc2lvbiBSYXRlIFZhbGlkYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlIGB2YWxpZGF0ZV9iZWFjb25fdHhfcmF0ZWAgZnVuY3Rpb24gZ2V0cyB1c2VkLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBgbmw4MDIxMV9zdGFydF9hcGAgYW5kIGBubDgwMjExX2pvaW5fbWVzaGAgYXJlIHRoZSBrZXkgY2FsbGVycyBoZXJlLiBTbywgbG9naWNhbGx5LCB0aGUgcHJpbWFyeSBmb2N1cyBwb2ludHMgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBzaG91bGQgYmU6IGBubDgwMjExX3N0YXJ0X2FwYCwgYG5sODAyMTFfc2V0X3R4X2JpdHJhdGVfbWFza2AsIGFuZCBgbmw4MDIxMV9qb2luX21lc2hgLiBJIGFsc28gaGF2ZSB0byBrZWVwIGFuIGV5ZSBvbiBgbmw4MDIxMV9zZXRfdGlkX2NvbmZpZ2AsIHNpbmNlIGl0IGNhbGxzIGBwYXJzZV90aWRfY29uZmAgd2hpY2ggY291bGQgYmUgcmVsZXZhbnQsIHRob3VnaCBpbiBhbiBpbmRpcmVjdCBtYW5uZXIuXG5cbkJlZm9yZSBJIGdvIGZ1cnRoZXIsIEkgc2hvdWxkIGp1c3QgcXVpY2tseSBkb3VibGUgY2hlY2sgdGhhdCBgbmw4MDIxMV9zZXRfdGlkX2NvbmZpZ2AgaXMgYWN0dWFsbHkgZGVmaW5lZCwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIEEgYmFzaWMgdmVyaWZpY2F0aW9uIGlzIGFsd2F5cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4MDEsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTA6NDE6MDQuMDA1NDEzNDY5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNTE0MjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5sODAyMTFfc2V0X3RpZF9jb25maWdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3dpcmVsZXNzL25sODAyMTEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE4NzU1PXN0YXRpYyBpbnQgcGFyc2VfdGlkX2NvbmYoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODg1NS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE4ODU2OnN0YXRpYyBpbnQgbmw4MDIxMV9zZXRfdGlkX2NvbmZpZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTg4NTctXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xOTc0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfc21hbGxfb3BzIG5sODAyMTFfc21hbGxfb3BzW10gPSB7XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIwNTIzLVxcdFxcdC5jbWQgPSBOTDgwMjExX0NNRF9TRVRfVElEX0NPTkZJRyxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjIwNTI0OlxcdFxcdC5kb2l0ID0gbmw4MDIxMV9zZXRfdGlkX2NvbmZpZyxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIwNTI1LVxcdFxcdC5mbGFncyA9IEdFTkxfVU5TX0FETUlOX1BFUk0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDEwOjQxOjA0LjA0ODkzNjg0OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MDE4MzY3NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkludmVzdGlnYXRpbmcgYG5sODAyMTFfc2V0X3RpZF9jb25maWdgIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgYG5sODAyMTFfc2V0X3RpZF9jb25maWdgIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbiwgdGhhdCdzIGNvbmZpcm1lZC4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgd2hhdCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlICpyZXF1aXJlZCogdG8gbWFrZSB0aGF0IHdvcms/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMsIHRoZSBLY29uZmlnIHN5bWJvbHMsIGFuZCBhbnkgcmVsZXZhbnQgTWFrZWZpbGUgZW50cmllcy4gVGhlIGNvZGUgaXRzZWxmLCBJIHJlY2FsbCwgbGl2ZXMgd2l0aGluIGBuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jYC4gU28sIEknbGwgc3RhcnQgZGlnZ2luZyBpbiBgbmV0L3dpcmVsZXNzL0tjb25maWdgIGFuZCBgbmV0L3dpcmVsZXNzL01ha2VmaWxlYCB0byBzZWUgaG93IHRoaXMgcGFydGljdWxhciBmdW5jdGlvbiBpcyBlbmFibGVkLiBUaG9zZSBzaG91bGQgdGVsbCB0aGUgd2hvbGUgc3RvcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1MTIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMDo0MTowNy40NTA3NzU4NzNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxNzAzNTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5sODAyMTEub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3MvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL01ha2VmaWxlPTc9b2JqLSQoQ09ORklHX1dFWFRfUFJJVikgKz0gd2V4dC1wcml2Lm9cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtOC1cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU6OTpjZmc4MDIxMS15ICs9IGNvcmUubyBzeXNmcy5vIHJhZGlvdGFwLm8gdXRpbC5vIHJlZy5vIHNjYW4ubyBubDgwMjExLm9cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtMTAtY2ZnODAyMTEteSArPSBtbG1lLm8gaWJzcy5vIHNtZS5vIGNoYW4ubyBldGh0b29sLm8gbWVzaC5vIGFwLm8gdHJhY2UubyBvY2Iub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMDo0MTowNy40OTI0ODQ5NTFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk5MTg0MDgwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIGNmZzgwMjExIENvZGViYXNlKipcblxuQWxyaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBzb21ldGhpbmcgdGhhdCBjbGVhcmx5IGZhbGxzIHVuZGVyIHRoZSB1bWJyZWxsYSBvZiBgY2ZnODAyMTFgLiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBNeSBuZXh0IG1vdmUgaXMgYWx3YXlzIHRvIHF1aWNrbHkgb3JpZW50IG15c2VsZiB3aXRoaW4gdGhlIHJlbGV2YW50IGNvZGViYXNlLiBJbiB0aGlzIGNhc2UsIEknZCBpbnN0aW5jdGl2ZWx5IHJlYWNoIGZvciB0aGUgYG5ldC93aXJlbGVzcy9NYWtlZmlsZWAuIEl0J3MgdGhlIGNlbnRyYWwgcG9pbnQgZm9yIGJ1aWxkaW5nIGFuZCBsaW5raW5nIHdpcmVsZXNzIGNvbXBvbmVudHMsIGluY2x1ZGluZywgb2YgY291cnNlLCBgY2ZnODAyMTFgLiBUaGF0IE1ha2VmaWxlIHdpbGwgZ2l2ZSBtZSBhIHZlcnkgcXVpY2sgb3ZlcnZpZXcgb2Ygd2hhdCdzIGJlaW5nIGJ1aWx0LCB3aGljaCBkcml2ZXJzIGFuZCBtb2R1bGVzIGFyZSBkZXBlbmRlbnQgb24gYGNmZzgwMjExYCwgYW5kIHdoYXQgb3RoZXIga2V5IG1vZHVsZXMgaW50ZXJhY3Qgd2l0aCBpdC4gSXQncyBhIHF1aWNrIHdheSB0byBnZXQgYSBoaWdoLWxldmVsIHZpZXcgb2YgZGVwZW5kZW5jaWVzIGFuZCBpZGVudGlmeSBwb3RlbnRpYWxseSByZWxldmFudCBzb3VyY2UgZmlsZXMgZm9yIHdoYXRldmVyIEknbSB0cm91Ymxlc2hvb3Rpbmcgb3IgaW52ZXN0aWdhdGluZy4gSXQgaXMgdGhlIGxvZ2ljYWwgZmlyc3Qgc3RlcCwgdGhlIHBvaW50IHdoZXJlIEkgY2FuIHF1aWNrbHkgc2VlIHRoZSBsYXkgb2YgdGhlIGxhbmQuIEkgbmVlZCB0aGlzIHRvIGNyZWF0ZSBhbiBvdXRsaW5lLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTE5LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTA6NDE6MTEuNDg0MzI4MTE4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzE3Mjg0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjZmc4MDIxMVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvd2lyZWxlc3MvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbm5ldC93aXJlbGVzcy9NYWtlZmlsZToyOm9iai0kKENPTkZJR19DRkc4MDIxMSkgKz0gY2ZnODAyMTEub1xcbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0zLW9iai15ICs9IHRlc3RzL1xcbi0tXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlPTc9b2JqLSQoQ09ORklHX1dFWFRfUFJJVikgKz0gd2V4dC1wcml2Lm9cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtOC1cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU6OTpjZmc4MDIxMS15ICs9IGNvcmUubyBzeXNmcy5vIHJhZGlvdGFwLm8gdXRpbC5vIHJlZy5vIHNjYW4ubyBubDgwMjExLm9cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGU6MTA6Y2ZnODAyMTEteSArPSBtbG1lLm8gaWJzcy5vIHNtZS5vIGNoYW4ubyBldGh0b29sLm8gbWVzaC5vIGFwLm8gdHJhY2UubyBvY2Iub1xcbm5ldC93aXJlbGVzcy9NYWtlZmlsZToxMTpjZmc4MDIxMS15ICs9IG1pY2hhZWwtbWljLm8gcG1zci5vXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlOjEyOmNmZzgwMjExLSQoQ09ORklHX09GKSArPSBvZi5vXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlOjEzOmNmZzgwMjExLSQoQ09ORklHX0NGRzgwMjExX0RFQlVHRlMpICs9IGRlYnVnZnMub1xcbm5ldC93aXJlbGVzcy9NYWtlZmlsZToxNDpjZmc4MDIxMS0kKENPTkZJR19DRkc4MDIxMV9XRVhUKSArPSB3ZXh0LWNvbXBhdC5vIHdleHQtc21lLm9cXG5uZXQvd2lyZWxlc3MvTWFrZWZpbGUtMTUtXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlPTE2PUNGTEFHU190cmFjZS5vIDo9IC1JJChzcmMpXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlLTE3LVxcbm5ldC93aXJlbGVzcy9NYWtlZmlsZToxODpjZmc4MDIxMS0kKENPTkZJR19DRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVMpICs9IHNoaXBwZWQtY2VydHMub1xcbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0xOS1pZm5lcSAoJChDT05GSUdfQ0ZHODAyMTFfRVhUUkFfUkVHREJfS0VZRElSKSwpXFxubmV0L3dpcmVsZXNzL01ha2VmaWxlOjIwOmNmZzgwMjExLXkgKz0gZXh0cmEtY2VydHMub1xcbm5ldC93aXJlbGVzcy9NYWtlZmlsZS0yMS1lbmRpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMDo0MToxMS41Mjc1MDQwMjdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQzMDU1OTkyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIFdpcmVsZXNzIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcsIGJhc2VkIG9uIHRoaXMsIHdlIGRlZmluaXRlbHkgbmVlZCBgQ09ORklHX0NGRzgwMjExYC4gVGhhdCdzIGEgZ2l2ZW4uIEJ1dCBJIHN1c3BlY3Qgd2UgbWlnaHQgYWxzbyBuZWVkIHRvIGVuYWJsZSBgQ09ORklHX01BQzgwMjExX0hXU0lNYCB0byBwcm9wZXJseSBlbXVsYXRlIHRoZSBoYXJkd2FyZSBhbmQgYWN0dWFsbHkgaGl0IHRob3NlIHNwZWNpZmljIGNvZGUgcGF0aHMuIEl0J3MgdGhlIHNpbXVsYXRpb24gb2YgdGhlIGhhcmR3YXJlIHRoYXQgd2lsbCBsaWtlbHkgYWxsb3cgdXMgdG8gcmVhY2ggdGhlIHBhcnRzIG9mIHRoZSBjb2RlIHRoYXQgcmVxdWlyZSBhIHJlZ2lzdGVyZWQgYHdpcGh5YCBkZXZpY2UuIFJpZ2h0LCBsZXQncyBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IGBDT05GSUdfTUFDODAyMTFfSFdTSU1gIHNldHRpbmcgYW5kIG1ha2Ugc3VyZSBpdCdzIHNldCBhY2NvcmRpbmdseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzcwNCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDEwOjQxOjE0Ljk1ODA2NjEwMVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzM1NDEyMTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE1BQzgwMjExX0hXU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDEwOjQxOjE1LjAzMTYxNjMwOVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDkwMDQyMDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKktlcm5lbCBXaXJlbGVzcyBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBrZXJuZWwgd2lyZWxlc3Mgc2V0dXAuIEkga25vdyBgTUFDODAyMTFfSFdTSU1gIGlzIGEgc29saWQgY2hvaWNlIGZvciBhIHNpbXVsYXRlZCBlbnZpcm9ubWVudCwgYW5kIG9mIGNvdXJzZSwgYENGRzgwMjExYCBhbmQgdGhlIGNvcmUgYE1BQzgwMjExYCBhcmUgZnVuZGFtZW50YWwgY29tcG9uZW50cy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYW55dGhpbmcuXG5cbk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBOZXRsaW5rIGhhbmRsZXJzIGluIGBubDgwMjExLmNgLiBJJ20gZ29pbmcgdG8gbG9vayBhdCBgbmw4MDIxMV9zdGFydF9hcGAsIGBubDgwMjExX3NldF90eF9iaXRyYXRlX21hc2tgLCBgbmw4MDIxMV9qb2luX21lc2hgLCBhbmQgYG5sODAyMTFfc2V0X3RpZF9jb25maWdgLiBUaGVzZSBhcmUga2V5IGZ1bmN0aW9uYWxpdGllcywgYW5kIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIGludGVyYWN0aW9ucyB3aXRoIHRob3NlIGZ1bmN0aW9ucyBhcmUgcHJvcGVyLlxuXG5JIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGNydWNpYWwgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgSSd2ZSBvdmVybG9va2VkLiBJIGtub3cgYENGRzgwMjExYCBzb21ldGltZXMgcmVsaWVzIG9uIGBSRktJTExgLCBidXQgaXQgdXN1YWxseSBzdGFuZHMgb24gaXRzIG93bi4gSSdsbCBkb3VibGUtY2hlY2sgYG5ldC93aXJlbGVzcy9LY29uZmlnYCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gYWJvdXQgdGhlIGBDRkc4MDIxMWAgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMuIFRoaXMgaXMganVzdCBnb29kIHByYWN0aWNlOyBhbHdheXMgZG91YmxlIGNoZWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDIyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDEwOjQxOjIwLjUyMTY2MDE5OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM2ODYwMTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENGRzgwMjExXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9LY29uZmlnPTE0PWNvbmZpZyBXRVhUX1BSSVZcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3OmNvbmZpZyBDRkc4MDIxMVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE4LVxcdHRyaXN0YXRlIFxcXCJjZmc4MDIxMSAtIHdpcmVsZXNzIGNvbmZpZ3VyYXRpb24gQVBJXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWc9Mzg9Y29uZmlnIE5MODAyMTFfVEVTVE1PREVcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTUxLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjUyOmNvbmZpZyBDRkc4MDIxMV9ERVZFTE9QRVJfV0FSTklOR1NcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy01My1cXHRib29sIFxcXCJlbmFibGUgZGV2ZWxvcGVyIHdhcm5pbmdzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctNjctXFxubmV0L3dpcmVsZXNzL0tjb25maWc6Njg6Y29uZmlnIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbm5ldC93aXJlbGVzcy9LY29uZmlnLTY5LVxcdGJvb2wgXFxcImNmZzgwMjExIGNlcnRpZmljYXRpb24gb251c1xcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTg4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjg5OmNvbmZpZyBDRkc4MDIxMV9SRVFVSVJFX1NJR05FRF9SRUdEQlxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTkwLVxcdGJvb2wgXFxcInJlcXVpcmUgcmVnZGIgc2lnbmF0dXJlXFxcIiBpZiBDRkc4MDIxMV9DRVJUSUZJQ0FUSU9OX09OVVNcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTk4LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjk5OmNvbmZpZyBDRkc4MDIxMV9VU0VfS0VSTkVMX1JFR0RCX0tFWVNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMDAtXFx0Ym9vbCBcXFwiYWxsb3cgcmVnZGIga2V5cyBzaGlwcGVkIHdpdGggdGhlIGtlcm5lbFxcXCIgaWYgQ0ZHODAyMTFfQ0VSVElGSUNBVElPTl9PTlVTXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTAtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTExOmNvbmZpZyBDRkc4MDIxMV9FWFRSQV9SRUdEQl9LRVlESVJcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xMTItXFx0c3RyaW5nIFxcXCJhZGRpdGlvbmFsIHJlZ2RiIGtleSBkaXJlY3RvcnlcXFwiIGlmIENGRzgwMjExX0NFUlRJRklDQVRJT05fT05VU1xcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTIxLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEyMjpjb25maWcgQ0ZHODAyMTFfUkVHX0NFTExVTEFSX0hJTlRTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTIzLVxcdGJvb2wgXFxcImNmZzgwMjExIHJlZ3VsYXRvcnkgc3VwcG9ydCBmb3IgY2VsbHVsYXIgYmFzZSBzdGF0aW9uIGhpbnRzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTM0LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjEzNTpjb25maWcgQ0ZHODAyMTFfUkVHX1JFTEFYX05PX0lSXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTM2LVxcdGJvb2wgXFxcImNmZzgwMjExIHN1cHBvcnQgZm9yIE5PX0lSIHJlbGF4YXRpb25cXFwiXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNTgtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTU5OmNvbmZpZyBDRkc4MDIxMV9ERUZBVUxUX1BTXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTYwLVxcdGJvb2wgXFxcImVuYWJsZSBwb3dlcnNhdmUgYnkgZGVmYXVsdFxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE2OC1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxNjk6Y29uZmlnIENGRzgwMjExX0RFQlVHRlNcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xNzAtXFx0Ym9vbCBcXFwiY2ZnODAyMTEgRGVidWdGUyBlbnRyaWVzXFxcIlxcbi0tXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc2LVxcbm5ldC93aXJlbGVzcy9LY29uZmlnOjE3Nzpjb25maWcgQ0ZHODAyMTFfQ1JEQV9TVVBQT1JUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTc4LVxcdGJvb2wgXFxcInN1cHBvcnQgQ1JEQVxcXCIgaWYgRVhQRVJUXFxuLS1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xODYtXFxubmV0L3dpcmVsZXNzL0tjb25maWc6MTg3OmNvbmZpZyBDRkc4MDIxMV9XRVhUXFxubmV0L3dpcmVsZXNzL0tjb25maWctMTg4LVxcdGJvb2wgXFxcImNmZzgwMjExIHdpcmVsZXNzIGV4dGVuc2lvbnMgY29tcGF0aWJpbGl0eVxcXCJcXG4tLVxcbm5ldC93aXJlbGVzcy9LY29uZmlnLTE5My1cXG5uZXQvd2lyZWxlc3MvS2NvbmZpZzoxOTQ6Y29uZmlnIENGRzgwMjExX0tVTklUX1RFU1RcXG5uZXQvd2lyZWxlc3MvS2NvbmZpZy0xOTUtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBjZmc4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMDo0MToyMC41NjUzNTEyNDdaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzEwMTE2NTA1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQcm9wb3NlZCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYWltZWQgc3F1YXJlbHkgYXQgdGhlIHdpcmVsZXNzIG5ldHdvcmtpbmcgY29yZSwgc3BlY2lmaWNhbGx5IHRoZSBgY2ZnODAyMTFgIHN1YnN5c3RlbSwgd2hpY2ggaXMgdGhlIG1haW4gY29uZmlndXJhdGlvbiBpbnRlcmZhY2UuIEl0J3MgZ29vZCB0byBzZWUgdGhhdCB0aGV5J3JlIHVzaW5nIGBtYWM4MDIxMWAgYXMgd2VsbC4gT2YgY291cnNlLCBgbWFjODAyMTFfaHdzaW1gIHdpbGwgYmUgdml0YWwgZm9yIHRlc3RpbmcgdGhpcyBraW5kIG9mIHRoaW5nLlxuXG5UaGUgY3J1eCBvZiB0aGUgbWF0dGVyIGlzIHRoaXMgbmV3IG5ldGxpbmsgYXR0cmlidXRlLCBgTkw4MDIxMV9UWFJBVEVfNkdIWl9OT05fSFRfRFVQYC4gSXQgc2VlbXMgdGhleSdyZSBleHRlbmRpbmcgdGhlIGV4aXN0aW5nIGZ1bmN0aW9uYWxpdHkgdG8gaGFuZGxlIG5vbi1IVCBkdXBsaWNhdGUgQmVhY29uIHRyYW5zbWlzc2lvbnMgaW4gdGhlIDYgR0h6IGJhbmQuIE1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgb25nb2luZyBldm9sdXRpb24gb2Ygd2lyZWxlc3Mgc3RhbmRhcmRzLlxuXG5JIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgbW9kaWZpY2F0aW9ucyBpbiBgbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2tgIGFuZCBgdmFsaWRhdGVfYmVhY29uX3R4X3JhdGVgLiBUaG9zZSBhcmUgdGhlIGtleSBwaWVjZXMgYWZmZWN0ZWQsIHdoaWNoIGFyZSBjYWxsZWQgYnkgYG5sODAyMTFfc3RhcnRfYXBgLCBgbmw4MDIxMV9qb2luX21lc2hgLCBgbmw4MDIxMV9zZXRfdHhfYml0cmF0ZV9tYXNrYCwgYW5kIGBubDgwMjExX3NldF90aWRfY29uZmlnYC4gVGhlc2UgYXJlIHRoZSBzcGVjaWZpYyBubDgwMjExIGNvbW1hbmRzIHRoaXMgd2lsbCBhZmZlY3QuIFNvdW5kcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHdoaWNoIGlzIGltcG9ydGFudCB0byB0ZXN0IGluIHRoZSBgbWFjODAyMTFfaHdzaW1gIGVudmlyb25tZW50LiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gY2hlY2sgdGhhdC4gSSB3YW50IHRvIHNlZSBob3cgdGhlc2Ugc2V0LXJlc3VsdHMgZnVuY3Rpb24gdG8gbWFrZSBzdXJlIHRoYXQgZXZlcnl0aGluZyBpcyBiZWhhdmluZyBhcyBpbnRlbmRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTQzNSwiT3V0cHV0VG9rZW5zIjoyNzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTA6NDE6MjcuNjY2NTE5MDI4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTIzMDY5NTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJubDgwMjExX3N0YXJ0X2FwXCIsXG4gICAgXCJubDgwMjExX3NldF90eF9iaXRyYXRlX21hc2tcIixcbiAgICBcIm5sODAyMTFfam9pbl9tZXNoXCIsXG4gICAgXCJubDgwMjExX3NldF90aWRfY29uZmlnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIG5ldyBuZXRsaW5rIGF0dHJpYnV0ZSBgTkw4MDIxMV9UWFJBVEVfNkdIWl9OT05fSFRfRFVQYCBmb3IgY29uZmlndXJpbmcgNiBHSHogbm9uLUhUIGR1cGxpY2F0ZSBCZWFjb24gdHJhbnNtaXNzaW9uLiBJdCBtb2RpZmllcyB0aGUgcGFyc2luZyBhbmQgdmFsaWRhdGlvbiBsb2dpYyBpbiBgbmw4MDIxMV9wYXJzZV90eF9iaXRyYXRlX21hc2tgIGFuZCBgdmFsaWRhdGVfYmVhY29uX3R4X3JhdGVgLCB3aGljaCBhcmUgcmVhY2hhYmxlIHZpYSBzZXZlcmFsIG5sODAyMTEgbmV0bGluayBjb21tYW5kcyAoZS5nLiwgc3RhcnRpbmcgYW4gQVAsIGpvaW5pbmcgYSBtZXNoLCBzZXR0aW5nIFRYIGJpdHJhdGUgbWFzaywgc2V0dGluZyBUSUQgY29uZmlnKS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjZmc4MDIxMSBzdWJzeXN0ZW0gdGhhdCBjYW4gYmUgdGVzdGVkIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIFdpLUZpIGRldmljZXMgKG1hYzgwMjExX2h3c2ltKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmw4MDIxMV9zdGFydF9hcFwiLFxuICAgIFwibmw4MDIxMV9zZXRfdHhfYml0cmF0ZV9tYXNrXCIsXG4gICAgXCJubDgwMjExX2pvaW5fbWVzaFwiLFxuICAgIFwibmw4MDIxMV9zZXRfdGlkX2NvbmZpZ1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBuZXcgbmV0bGluayBhdHRyaWJ1dGUgYE5MODAyMTFfVFhSQVRFXzZHSFpfTk9OX0hUX0RVUGAgZm9yIGNvbmZpZ3VyaW5nIDYgR0h6IG5vbi1IVCBkdXBsaWNhdGUgQmVhY29uIHRyYW5zbWlzc2lvbi4gSXQgbW9kaWZpZXMgdGhlIHBhcnNpbmcgYW5kIHZhbGlkYXRpb24gbG9naWMgaW4gYG5sODAyMTFfcGFyc2VfdHhfYml0cmF0ZV9tYXNrYCBhbmQgYHZhbGlkYXRlX2JlYWNvbl90eF9yYXRlYCwgd2hpY2ggYXJlIHJlYWNoYWJsZSB2aWEgc2V2ZXJhbCBubDgwMjExIG5ldGxpbmsgY29tbWFuZHMgKGUuZy4sIHN0YXJ0aW5nIGFuIEFQLCBqb2luaW5nIGEgbWVzaCwgc2V0dGluZyBUWCBiaXRyYXRlIG1hc2ssIHNldHRpbmcgVElEIGNvbmZpZykuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY2ZnODAyMTEgc3Vic3lzdGVtIHRoYXQgY2FuIGJlIHRlc3RlZCB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBXaS1GaSBkZXZpY2VzIChtYWM4MDIxMV9od3NpbSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowfdr8k[1] Phase: Succeeded StartedAt: 2026-08-05 10:41:38 +0000 UTC FinishedAt: 2026-08-05 10:41:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdr8k[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-05 10:41:38 +0000 UTC FinishedAt: 2026-08-05 10:41:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdr8k[2] Phase: Succeeded StartedAt: 2026-08-05 10:41:38 +0000 UTC FinishedAt: 2026-08-05 14:24:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-05 10:41:38 +0000 UTC FinishedAt: 2026-08-05 14:24:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-05 10:41:38 +0000 UTC FinishedAt: 2026-08-05 10:41:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-05 10:41:38 +0000 UTC FinishedAt: 2026-08-05 10:41:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfdr8k/series-workflowfdr8k-convert-artifact-2642972178/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-05 10:41:49 +0000 UTC FinishedAt: 2026-08-05 10:57:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-05 10:41:49 +0000 UTC FinishedAt: 2026-08-05 10:57:34 +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:*bf783da3-c7e6-44a2-958d-1f30a8ac7e1d,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-workflowfdr8k/series-workflowfdr8k-convert-artifact-2642972178/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": "cf9d9298-5a37-4654-9013-544c3feab452", "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-workflowfdr8k/series-workflowfdr8k-build-action-765661072/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-05 10:41:49 +0000 UTC FinishedAt: 2026-08-05 10:57:24 +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:*bf783da3-c7e6-44a2-958d-1f30a8ac7e1d,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-workflowfdr8k/series-workflowfdr8k-convert-artifact-2642972178/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": "cf9d9298-5a37-4654-9013-544c3feab452", "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-workflowfdr8k/series-workflowfdr8k-build-action-765661072/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-05 10:57:34 +0000 UTC FinishedAt: 2026-08-05 10:57:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-05 10:57:34 +0000 UTC FinishedAt: 2026-08-05 10:57:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-05 10:57:34 +0000 UTC FinishedAt: 2026-08-05 10:57:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-05 10:57:34 +0000 UTC FinishedAt: 2026-08-05 10:57:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowfdr8k/series-workflowfdr8k-convert-artifact-1296270893/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-05 10:57:44 +0000 UTC FinishedAt: 2026-08-05 10:59:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-05 10:57:44 +0000 UTC FinishedAt: 2026-08-05 10:59:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cf9d9298-5a37-4654-9013-544c3feab452,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-workflowfdr8k/series-workflowfdr8k-build-action-765661072/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-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-05 10:59:48 +0000 UTC FinishedAt: 2026-08-05 10:59:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-05 10:59:48 +0000 UTC FinishedAt: 2026-08-05 10:59:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-05 10:59:48 +0000 UTC FinishedAt: 2026-08-05 11:17:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-05 10:59:48 +0000 UTC FinishedAt: 2026-08-05 11:17:03 +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:*bf783da3-c7e6-44a2-958d-1f30a8ac7e1d,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-workflowfdr8k/series-workflowfdr8k-convert-artifact-1296270893/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": "45ab681b-a361-4d45-998a-6798a744acd1", "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-workflowfdr8k/series-workflowfdr8k-build-action-1049086601/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-05 10:59:48 +0000 UTC FinishedAt: 2026-08-05 11:16:53 +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:*bf783da3-c7e6-44a2-958d-1f30a8ac7e1d,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-workflowfdr8k/series-workflowfdr8k-convert-artifact-1296270893/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": "45ab681b-a361-4d45-998a-6798a744acd1", "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-workflowfdr8k/series-workflowfdr8k-build-action-1049086601/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-05 11:17:03 +0000 UTC FinishedAt: 2026-08-05 11:17:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-05 11:17:03 +0000 UTC FinishedAt: 2026-08-05 11:17:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-05 11:17:03 +0000 UTC FinishedAt: 2026-08-05 11:18:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-05 11:17:03 +0000 UTC FinishedAt: 2026-08-05 11:18:48 +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:*45ab681b-a361-4d45-998a-6798a744acd1,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-workflowfdr8k/series-workflowfdr8k-build-action-1049086601/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-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-05 11:18:58 +0000 UTC FinishedAt: 2026-08-05 14:24:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-05 11:18:58 +0000 UTC FinishedAt: 2026-08-05 11:18:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-05 11:18:58 +0000 UTC FinishedAt: 2026-08-05 11:18:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-05 11:18:59 +0000 UTC FinishedAt: 2026-08-05 14:24:54 +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":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"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:*cf9d9298-5a37-4654-9013-544c3feab452,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*45ab681b-a361-4d45-998a-6798a744acd1,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-workflowfdr8k/series-workflowfdr8k-build-action-765661072/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-workflowfdr8k/series-workflowfdr8k-build-action-1049086601/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-05 11:18:59 +0000 UTC FinishedAt: 2026-08-05 11:19:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-05 11:18:59 +0000 UTC FinishedAt: 2026-08-05 11:19:03 +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":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"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-workflowfdr8k/series-workflowfdr8k-convert-artifact-3311641746/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-05 11:18:59 +0000 UTC FinishedAt: 2026-08-05 11:18:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-05 11:19:09 +0000 UTC FinishedAt: 2026-08-05 14:24:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowfdr8k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_start_ap","nl80211_set_tx_bitrate_mask","nl80211_join_mesh","nl80211_set_tid_config"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"6c5fc504d0d6934132637aa3db4b9b58148eaa78","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"1c05b42d-441e-4d49-81bf-e5b1cb7e6444","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-05 11:19:09 +0000 UTC FinishedAt: 2026-08-05 14:24:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*cf9d9298-5a37-4654-9013-544c3feab452,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*45ab681b-a361-4d45-998a-6798a744acd1,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-workflowfdr8k/series-workflowfdr8k-build-action-765661072/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-workflowfdr8k/series-workflowfdr8k-build-action-1049086601/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-workflowfdr8k/series-workflowfdr8k-convert-artifact-3311641746/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,}