Name: series-workflowl6qnp Phase: Succeeded StartedAt: 2026-07-01 11:04:10 +0000 UTC FinishedAt: 2026-07-01 15:35:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6qnp[0] Phase: Succeeded StartedAt: 2026-07-01 11:04:10 +0000 UTC FinishedAt: 2026-07-01 11:19:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6qnp[0].run-triage Phase: Succeeded StartedAt: 2026-07-01 11:04:10 +0000 UTC FinishedAt: 2026-07-01 11:19:01 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "665159e246749578d4e4bfe106ee3b74edcdab18", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFSPLUS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "665159e246749578d4e4bfe106ee3b74edcdab18", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFSPLUS_FS" ], "series_id": "c5f13fc5-5ca2-4b63-933e-931d463c74b8" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "hfsplus_find_cat", "hfsplus_delete_cat" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDExOjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU1BMVVNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoZnNwbHVzX2ZpbmRfY2F0JiMzNDssCiAgICAmIzM0O2hmc3BsdXNfZGVsZXRlX2NhdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGNhdGFsb2cgb3BlcmF0aW9ucyBpbiB0aGUgSEZTJiM0MzsgZmlsZXN5c3RlbSBkcml2ZXIgKGhmc3BsdXNfZmluZF9jYXQgYW5kIGhmc3BsdXNfZGVsZXRlX2NhdCkgYnkgYWRkaW5nIHZhbGlkYXRpb24gZm9yIHRocmVhZCByZWNvcmQgdHlwZXMgYW5kIG5hbWUgbGVuZ3Rocy4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgd2hlbiBtb3VudGluZyBhbmQgaW50ZXJhY3Rpbmcgd2l0aCBIRlMmIzQzOyBmaWxlc3lzdGVtIGltYWdlcywgbWFraW5nIHRoZW0gc3VpdGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTE6MTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzYjQyZTQzM2QwNGU5MGIyMDA5Y2JkYTQyNzZkNjFlMzQ4ZDAyZTEyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAxMToxNzo1OSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9oZnNwbHVzL2NhdGFsb2cuYyBiL2ZzL2hmc3BsdXMvY2F0YWxvZy5jXG5pbmRleCA3NzZjZTM2Y2YwNzZiNC4uYzU3YzNiYmI4MTQzNTQgMTAwNjQ0XG4tLS0gYS9mcy9oZnNwbHVzL2NhdGFsb2cuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzcGx1cy9jYXRhbG9nLmNcbkBAIC0xOTYsMjAgJiM0MzsxOTYsMjAgQEAgaW50IGhmc3BsdXNfZmluZF9jYXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsXG4ge1xuIFx0aGZzcGx1c19jYXRfZW50cnkgdG1wID0gezB9O1xuIFx0aW50IGVycjtcbi1cdHUxNiB0eXBlO1xuJiM0MztcdHUxNiBlbnRyeV90eXBlO1xuIFxuIFx0aGZzcGx1c19jYXRfYnVpbGRfa2V5X3dpdGhfY25pZChzYiwgZmQtXHUwMDNlc2VhcmNoX2tleSwgY25pZCk7XG4gXHRlcnIgPSBoZnNwbHVzX2JyZWNfcmVhZF9jYXQoZmQsIFx1MDAyNnRtcCk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuLVx0dHlwZSA9IGJlMTZfdG9fY3B1KHRtcC50eXBlKTtcbi1cdGlmICh0eXBlICE9IEhGU1BMVVNfRk9MREVSX1RIUkVBRCBcdTAwMjZcdTAwMjYgdHlwZSAhPSBIRlNQTFVTX0ZJTEVfVEhSRUFEKSB7XG4mIzQzO1x0ZW50cnlfdHlwZSA9IGJlMTZfdG9fY3B1KHRtcC50eXBlKTtcbiYjNDM7XHRpZiAoIWlzX2hmc3BsdXNfdGhyZWFkX3R5cGUoZW50cnlfdHlwZSkpIHtcbiBcdFx0cHJfZXJyKFwmIzM0O2ZvdW5kIGJhZCB0aHJlYWQgcmVjb3JkIGluIGNhdGFsb2dcXG5cJiMzNDspO1xuIFx0XHRyZXR1cm4gLUVJTztcbiBcdH1cbiBcbi1cdGlmIChiZTE2X3RvX2NwdSh0bXAudGhyZWFkLm5vZGVOYW1lLmxlbmd0aCkgXHUwMDNlIDI1NSkge1xuJiM0MztcdGlmICghaXNfaGZzcGx1c19uYW1lX2xlbmd0aF92YWxpZCh0bXAudGhyZWFkLm5vZGVOYW1lLmxlbmd0aCkpIHtcbiBcdFx0cHJfZXJyKFwmIzM0O2NhdGFsb2cgbmFtZSBsZW5ndGggY29ycnVwdGVkXFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC1FSU87XG4gXHR9XG5AQCAtMzUwLDIzICYjNDM7MzUwLDI5IEBAIGludCBoZnNwbHVzX2RlbGV0ZV9jYXQodTMyIGNuaWQsIHN0cnVjdCBpbm9kZSAqZGlyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqc3RyKVxuIFx0XHRnb3RvIG91dDtcbiBcbiBcdGlmICghc3RyKSB7XG4tXHRcdGludCBsZW47XG4mIzQzO1x0XHRoZnNwbHVzX2NhdF9lbnRyeSBlbnRyeSA9IHswfTtcbiYjNDM7XHRcdHUxNiBlbnRyeV90eXBlO1xuIFxuIFx0XHRoZnNwbHVzX2NhdF9idWlsZF9rZXlfd2l0aF9jbmlkKHNiLCBmZC5zZWFyY2hfa2V5LCBjbmlkKTtcbi1cdFx0ZXJyID0gaGZzX2JyZWNfZmluZChcdTAwMjZmZCwgaGZzX2ZpbmRfcmVjX2J5X2tleSk7XG4mIzQzO1x0XHRlcnIgPSBoZnNwbHVzX2JyZWNfcmVhZF9jYXQoXHUwMDI2ZmQsIFx1MDAyNmVudHJ5KTtcbiBcdFx0aWYgKGVycilcbiBcdFx0XHRnb3RvIG91dDtcbiBcbi1cdFx0b2ZmID0gZmQuZW50cnlvZmZzZXQgJiM0Mztcbi1cdFx0XHRvZmZzZXRvZihzdHJ1Y3QgaGZzcGx1c19jYXRfdGhyZWFkLCBub2RlTmFtZSk7XG4tXHRcdGZkLnNlYXJjaF9rZXktXHUwMDNlY2F0LnBhcmVudCA9IGNwdV90b19iZTMyKGRpci1cdTAwM2VpX2lubyk7XG4tXHRcdGhmc19ibm9kZV9yZWFkKGZkLmJub2RlLFxuLVx0XHRcdFx1MDAyNmZkLnNlYXJjaF9rZXktXHUwMDNlY2F0Lm5hbWUubGVuZ3RoLCBvZmYsIDIpO1xuLVx0XHRsZW4gPSBiZTE2X3RvX2NwdShmZC5zZWFyY2hfa2V5LVx1MDAzZWNhdC5uYW1lLmxlbmd0aCkgKiAyO1xuLVx0XHRoZnNfYm5vZGVfcmVhZChmZC5ibm9kZSxcbi1cdFx0XHRcdTAwMjZmZC5zZWFyY2hfa2V5LVx1MDAzZWNhdC5uYW1lLnVuaWNvZGUsXG4tXHRcdFx0b2ZmICYjNDM7IDIsIGxlbik7XG4tXHRcdGZkLnNlYXJjaF9rZXktXHUwMDNla2V5X2xlbiA9IGNwdV90b19iZTE2KDYgJiM0MzsgbGVuKTtcbiYjNDM7XHRcdGVudHJ5X3R5cGUgPSBiZTE2X3RvX2NwdShlbnRyeS50eXBlKTtcbiYjNDM7XHRcdGlmICghaXNfaGZzcGx1c190aHJlYWRfdHlwZShlbnRyeV90eXBlKSkge1xuJiM0MztcdFx0XHRwcl9lcnIoXCYjMzQ7Zm91bmQgYmFkIHRocmVhZCByZWNvcmQgaW4gY2F0YWxvZ1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdGVyciA9IC1FSU87XG4mIzQzO1x0XHRcdGdvdG8gb3V0O1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdGlmICghaXNfaGZzcGx1c19uYW1lX2xlbmd0aF92YWxpZChlbnRyeS50aHJlYWQubm9kZU5hbWUubGVuZ3RoKSkge1xuJiM0MztcdFx0XHRwcl9lcnIoXCYjMzQ7Y2F0YWxvZyBuYW1lIGxlbmd0aCBjb3JydXB0ZWRcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRlcnIgPSAtRUlPO1xuJiM0MztcdFx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRoZnNwbHVzX2NhdF9idWlsZF9rZXlfdW5pKGZkLnNlYXJjaF9rZXksIGRpci1cdTAwM2VpX2lubyxcbiYjNDM7XHRcdFx0XHRcdCAgXHUwMDI2ZW50cnkudGhyZWFkLm5vZGVOYW1lKTtcbiBcdH0gZWxzZSB7XG4gXHRcdGVyciA9IGhmc3BsdXNfY2F0X2J1aWxkX2tleShzYiwgZmQuc2VhcmNoX2tleSwgZGlyLVx1MDAzZWlfaW5vLCBzdHIpO1xuIFx0XHRpZiAodW5saWtlbHkoZXJyKSlcbmRpZmYgLS1naXQgYS9mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaCBiL2ZzL2hmc3BsdXMvaGZzcGx1c19mcy5oXG5pbmRleCBlYzA0YjgyYWQ5Mjc4Ny4uYjk1NGI0NWExMDAzNjkgMTAwNjQ0XG4tLS0gYS9mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmhcbkBAIC01MjEsNiAmIzQzOzUyMSwxNyBAQCBzdGF0aWMgaW5saW5lIHUzMiBoZnNwbHVzX2NhdF90aHJlYWRfc2l6ZShjb25zdCBzdHJ1Y3QgaGZzcGx1c19jYXRfdGhyZWFkICp0aHJlYVxuIFx0ICAgICAgIGJlMTZfdG9fY3B1KHRocmVhZC1cdTAwM2Vub2RlTmFtZS5sZW5ndGgpICogc2l6ZW9mKGhmc3BsdXNfdW5pY2hyKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBpc19oZnNwbHVzX3RocmVhZF90eXBlKHUxNiBlbnRyeV90eXBlKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIGVudHJ5X3R5cGUgPT0gSEZTUExVU19GT0xERVJfVEhSRUFEIHx8XG4mIzQzO1x0ICAgICAgIGVudHJ5X3R5cGUgPT0gSEZTUExVU19GSUxFX1RIUkVBRDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGlubGluZSBib29sIGlzX2hmc3BsdXNfbmFtZV9sZW5ndGhfdmFsaWQoX19iZTE2IG5hbWVfbGVuZ3RoKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIGJlMTZfdG9fY3B1KG5hbWVfbGVuZ3RoKSBcdTAwM2M9IEhGU1BMVVNfTUFYX1NUUkxFTjtcbiYjNDM7fVxuJiM0MztcbiBpbnQgaGZzcGx1c19icmVjX3JlYWRfY2F0KHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgaGZzcGx1c19jYXRfZW50cnkgKmVudHJ5KTtcbiBcbiAvKlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDExOjE4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU1BMVVNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoZnNwbHVzX2ZpbmRfY2F0JiMzNDssCiAgICAmIzM0O2hmc3BsdXNfZGVsZXRlX2NhdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGNhdGFsb2cgb3BlcmF0aW9ucyBpbiB0aGUgSEZTJiM0MzsgZmlsZXN5c3RlbSBkcml2ZXIgKGhmc3BsdXNfZmluZF9jYXQgYW5kIGhmc3BsdXNfZGVsZXRlX2NhdCkgYnkgYWRkaW5nIHZhbGlkYXRpb24gZm9yIHRocmVhZCByZWNvcmQgdHlwZXMgYW5kIG5hbWUgbGVuZ3Rocy4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgd2hlbiBtb3VudGluZyBhbmQgaW50ZXJhY3Rpbmcgd2l0aCBIRlMmIzQzOyBmaWxlc3lzdGVtIGltYWdlcywgbWFraW5nIHRoZW0gc3VpdGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNiNDJlNDMzZDA0ZTkwYjIwMDljYmRhNDI3NmQ2MWUzNDhkMDJlMTIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxIDExOjE3OjU5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvaGZzcGx1cy9jYXRhbG9nLmMgYi9mcy9oZnNwbHVzL2NhdGFsb2cuYwppbmRleCA3NzZjZTM2Y2YwNzZiNC4uYzU3YzNiYmI4MTQzNTQgMTAwNjQ0Ci0tLSBhL2ZzL2hmc3BsdXMvY2F0YWxvZy5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2hmc3BsdXMvY2F0YWxvZy5jCkBAIC0xOTYsMjAgJiM0MzsxOTYsMjAgQEAgaW50IGhmc3BsdXNfZmluZF9jYXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsCiB7CiAJaGZzcGx1c19jYXRfZW50cnkgdG1wID0gezB9OwogCWludCBlcnI7Ci0JdTE2IHR5cGU7CiYjNDM7CXUxNiBlbnRyeV90eXBlOwogCiAJaGZzcGx1c19jYXRfYnVpbGRfa2V5X3dpdGhfY25pZChzYiwgZmQtJmd0O3NlYXJjaF9rZXksIGNuaWQpOwogCWVyciA9IGhmc3BsdXNfYnJlY19yZWFkX2NhdChmZCwgJmFtcDt0bXApOwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKLQl0eXBlID0gYmUxNl90b19jcHUodG1wLnR5cGUpOwotCWlmICh0eXBlICE9IEhGU1BMVVNfRk9MREVSX1RIUkVBRCAmYW1wOyZhbXA7IHR5cGUgIT0gSEZTUExVU19GSUxFX1RIUkVBRCkgewomIzQzOwllbnRyeV90eXBlID0gYmUxNl90b19jcHUodG1wLnR5cGUpOwomIzQzOwlpZiAoIWlzX2hmc3BsdXNfdGhyZWFkX3R5cGUoZW50cnlfdHlwZSkpIHsKIAkJcHJfZXJyKCYjMzQ7Zm91bmQgYmFkIHRocmVhZCByZWNvcmQgaW4gY2F0YWxvZ1xuJiMzNDspOwogCQlyZXR1cm4gLUVJTzsKIAl9CiAKLQlpZiAoYmUxNl90b19jcHUodG1wLnRocmVhZC5ub2RlTmFtZS5sZW5ndGgpICZndDsgMjU1KSB7CiYjNDM7CWlmICghaXNfaGZzcGx1c19uYW1lX2xlbmd0aF92YWxpZCh0bXAudGhyZWFkLm5vZGVOYW1lLmxlbmd0aCkpIHsKIAkJcHJfZXJyKCYjMzQ7Y2F0YWxvZyBuYW1lIGxlbmd0aCBjb3JydXB0ZWRcbiYjMzQ7KTsKIAkJcmV0dXJuIC1FSU87CiAJfQpAQCAtMzUwLDIzICYjNDM7MzUwLDI5IEBAIGludCBoZnNwbHVzX2RlbGV0ZV9jYXQodTMyIGNuaWQsIHN0cnVjdCBpbm9kZSAqZGlyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqc3RyKQogCQlnb3RvIG91dDsKIAogCWlmICghc3RyKSB7Ci0JCWludCBsZW47CiYjNDM7CQloZnNwbHVzX2NhdF9lbnRyeSBlbnRyeSA9IHswfTsKJiM0MzsJCXUxNiBlbnRyeV90eXBlOwogCiAJCWhmc3BsdXNfY2F0X2J1aWxkX2tleV93aXRoX2NuaWQoc2IsIGZkLnNlYXJjaF9rZXksIGNuaWQpOwotCQllcnIgPSBoZnNfYnJlY19maW5kKCZhbXA7ZmQsIGhmc19maW5kX3JlY19ieV9rZXkpOwomIzQzOwkJZXJyID0gaGZzcGx1c19icmVjX3JlYWRfY2F0KCZhbXA7ZmQsICZhbXA7ZW50cnkpOwogCQlpZiAoZXJyKQogCQkJZ290byBvdXQ7CiAKLQkJb2ZmID0gZmQuZW50cnlvZmZzZXQgJiM0MzsKLQkJCW9mZnNldG9mKHN0cnVjdCBoZnNwbHVzX2NhdF90aHJlYWQsIG5vZGVOYW1lKTsKLQkJZmQuc2VhcmNoX2tleS0mZ3Q7Y2F0LnBhcmVudCA9IGNwdV90b19iZTMyKGRpci0mZ3Q7aV9pbm8pOwotCQloZnNfYm5vZGVfcmVhZChmZC5ibm9kZSwKLQkJCSZhbXA7ZmQuc2VhcmNoX2tleS0mZ3Q7Y2F0Lm5hbWUubGVuZ3RoLCBvZmYsIDIpOwotCQlsZW4gPSBiZTE2X3RvX2NwdShmZC5zZWFyY2hfa2V5LSZndDtjYXQubmFtZS5sZW5ndGgpICogMjsKLQkJaGZzX2Jub2RlX3JlYWQoZmQuYm5vZGUsCi0JCQkmYW1wO2ZkLnNlYXJjaF9rZXktJmd0O2NhdC5uYW1lLnVuaWNvZGUsCi0JCQlvZmYgJiM0MzsgMiwgbGVuKTsKLQkJZmQuc2VhcmNoX2tleS0mZ3Q7a2V5X2xlbiA9IGNwdV90b19iZTE2KDYgJiM0MzsgbGVuKTsKJiM0MzsJCWVudHJ5X3R5cGUgPSBiZTE2X3RvX2NwdShlbnRyeS50eXBlKTsKJiM0MzsJCWlmICghaXNfaGZzcGx1c190aHJlYWRfdHlwZShlbnRyeV90eXBlKSkgewomIzQzOwkJCXByX2VycigmIzM0O2ZvdW5kIGJhZCB0aHJlYWQgcmVjb3JkIGluIGNhdGFsb2dcbiYjMzQ7KTsKJiM0MzsJCQllcnIgPSAtRUlPOwomIzQzOwkJCWdvdG8gb3V0OwomIzQzOwkJfQomIzQzOwomIzQzOwkJaWYgKCFpc19oZnNwbHVzX25hbWVfbGVuZ3RoX3ZhbGlkKGVudHJ5LnRocmVhZC5ub2RlTmFtZS5sZW5ndGgpKSB7CiYjNDM7CQkJcHJfZXJyKCYjMzQ7Y2F0YWxvZyBuYW1lIGxlbmd0aCBjb3JydXB0ZWRcbiYjMzQ7KTsKJiM0MzsJCQllcnIgPSAtRUlPOwomIzQzOwkJCWdvdG8gb3V0OwomIzQzOwkJfQomIzQzOwomIzQzOwkJaGZzcGx1c19jYXRfYnVpbGRfa2V5X3VuaShmZC5zZWFyY2hfa2V5LCBkaXItJmd0O2lfaW5vLAomIzQzOwkJCQkJICAmYW1wO2VudHJ5LnRocmVhZC5ub2RlTmFtZSk7CiAJfSBlbHNlIHsKIAkJZXJyID0gaGZzcGx1c19jYXRfYnVpbGRfa2V5KHNiLCBmZC5zZWFyY2hfa2V5LCBkaXItJmd0O2lfaW5vLCBzdHIpOwogCQlpZiAodW5saWtlbHkoZXJyKSkKZGlmZiAtLWdpdCBhL2ZzL2hmc3BsdXMvaGZzcGx1c19mcy5oIGIvZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmgKaW5kZXggZWMwNGI4MmFkOTI3ODcuLmI5NTRiNDVhMTAwMzY5IDEwMDY0NAotLS0gYS9mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaAomIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaApAQCAtNTIxLDYgJiM0Mzs1MjEsMTcgQEAgc3RhdGljIGlubGluZSB1MzIgaGZzcGx1c19jYXRfdGhyZWFkX3NpemUoY29uc3Qgc3RydWN0IGhmc3BsdXNfY2F0X3RocmVhZCAqdGhyZWEKIAkgICAgICAgYmUxNl90b19jcHUodGhyZWFkLSZndDtub2RlTmFtZS5sZW5ndGgpICogc2l6ZW9mKGhmc3BsdXNfdW5pY2hyKTsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBpc19oZnNwbHVzX3RocmVhZF90eXBlKHUxNiBlbnRyeV90eXBlKQomIzQzO3sKJiM0MzsJcmV0dXJuIGVudHJ5X3R5cGUgPT0gSEZTUExVU19GT0xERVJfVEhSRUFEIHx8CiYjNDM7CSAgICAgICBlbnRyeV90eXBlID09IEhGU1BMVVNfRklMRV9USFJFQUQ7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBpc19oZnNwbHVzX25hbWVfbGVuZ3RoX3ZhbGlkKF9fYmUxNiBuYW1lX2xlbmd0aCkKJiM0Mzt7CiYjNDM7CXJldHVybiBiZTE2X3RvX2NwdShuYW1lX2xlbmd0aCkgJmx0Oz0gSEZTUExVU19NQVhfU1RSTEVOOwomIzQzO30KJiM0MzsKIGludCBoZnNwbHVzX2JyZWNfcmVhZF9jYXQoc3RydWN0IGhmc19maW5kX2RhdGEgKmZkLCBoZnNwbHVzX2NhdF9lbnRyeSAqZW50cnkpOwogCiAvKgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTgzCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSEZTJiM0MzsgRmlsZXN5c3RlbSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgYW5kIGl0IHNlZW1zIGxpa2Ugd2UmIzM5O3ZlIGdvdCBzb21lIHNpZ25pZmljYW50IGNoYW5nZXMgcm9sbGluZyBpbiBmb3IgdGhlIEhGUyYjNDM7IGZpbGVzeXN0ZW0gZHJpdmVyLiBTcGVjaWZpY2FsbHksIHRoZSBtb2RpZmljYXRpb25zIGFyZSBmb2N1c2VkIG9uIGBmcy9oZnNwbHVzL2NhdGFsb2cuY2AgYW5kIGBmcy9oZnNwbHVzL2hmc3BsdXNfZnMuaGAuIFRoZSBjb3JlIG9mIHRoZSBhbHRlcmF0aW9uIGFwcGVhcnMgdG8gYmUgYXJvdW5kIHRoZSBmdW5jdGlvbnMgYGhmc3BsdXNfZmluZF9jYXRgIGFuZCBgaGZzcGx1c19kZWxldGVfY2F0YC4KCkl0IGxvb2tzIGxpa2UgdGhlIGRldmVsb3BlcnMgaGF2ZSBpbnRyb2R1Y2VkIHRoZXNlIG5ldyBoZWxwZXIgZnVuY3Rpb25zLCBgaXNfaGZzcGx1c190aHJlYWRfdHlwZWAgYW5kIGBpc19oZnNwbHVzX25hbWVfbGVuZ3RoX3ZhbGlkYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgZm9yIGFkZGluZyBzb21lIG11Y2gtbmVlZGVkIHZhbGlkYXRpb24uIFRoZXkmIzM5O3JlIHByb2JhYmx5IHRyeWluZyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgb3IgcG90ZW50aWFsIGNvcnJ1cHRpb24gd2hlbiBkZWFsaW5nIHdpdGggbmFtZSBsZW5ndGhzLCB3aGljaCBpcyBhIHNtYXJ0IG1vdmUuIEkmIzM5O3ZlIHNlZW4gdGhvc2Uga2luZHMgb2YgYnVncyBiZWZvcmU7IHRoZXkgY2FuIGJlIG5hc3R5LgoKRnVydGhlcm1vcmUsIGluIGBoZnNwbHVzX2RlbGV0ZV9jYXRgLCB0aGV5JiMzOTt2ZSByZXBsYWNlZCB0aGUgZGlyZWN0IHVzZSBvZiBgaGZzX2JyZWNfZmluZGAgYW5kIGBoZnNfYm5vZGVfcmVhZGAgd2l0aCBgaGZzcGx1c19icmVjX3JlYWRfY2F0YC4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGNvZGUgY2xlYW51cCBhbmQgcHJvYmFibHkgYW4gYXR0ZW1wdCB0byBjZW50cmFsaXplIHRoZSBsb2dpYywgbWFraW5nIHRoZSBjb2RlIG1vcmUgbWFpbnRhaW5hYmxlIGFuZCBlYXNpZXIgdG8gYXVkaXQuIEFuZCBpbnN0ZWFkIG9mIG1hbnVhbGx5IGNvbnN0cnVjdGluZyB0aGUga2V5LCB0aGV5JiMzOTtyZSBub3cgdXNpbmcgYGhmc3BsdXNfY2F0X2J1aWxkX2tleV91bmlgLiBHb29kLCBsZXNzIHJvb20gZm9yIGVycm9yIHRoZXJlLiBUaGlzIGlzIGEgbmljZSBmdW5jdGlvbmFsIGltcHJvdmVtZW50LgoKRXNzZW50aWFsbHksIHRoaXMgcGF0Y2ggaXMgYWJvdXQgZW5oYW5jaW5nIHJlbGlhYmlsaXR5IGFuZCBjbGVhbmluZyB1cCB0aGUgY29kZSBmb3IgdGhlIEhGUyYjNDM7IGRyaXZlci4gSSYjMzk7ZCBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgYWN0dWFsIGNvZGUgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUsIGJ1dCBiYXNlZCBvbiB0aGlzIHN1bW1hcnksIGl0IHNlZW1zIGxpa2UgYSBzb2xpZCBzZXQgb2YgY2hhbmdlcy4KCk5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIEhGUyYjNDM7IGlzIGV2ZW4gY29uZmlndXJlZC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBjb25maWdzIHdpdGggYGdyZXBwZXJgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDExOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBIRlNQTFVTX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvaGZzcGx1cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2hmc3BsdXMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvaGZzcGx1cy9LY29uZmlnOjI6Y29uZmlnIEhGU1BMVVNfRlNcbmZzL2hmc3BsdXMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7QXBwbGUgRXh0ZW5kZWQgSEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzQxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqUmVmbGVjdGluZyBvbiBSZWNlbnQgQ29kZSBDaGFuZ2VzKioKCk9rYXksIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaW4gcGxheSBpcyBgSEZTUExVU19GU2AuIFJpZ2h0LCBnb3QgaXQuIE5vdywgbGV0JiMzOTtzIG1lbnRhbGx5IHdhbGsgdGhyb3VnaCB0aGUgcmVjZW50IG1vZGlmaWNhdGlvbnMgcmVsYXRlZCB0byB0aGlzIGZpbGVzeXN0ZW0uIFNwZWNpZmljYWxseSwgSSYjMzk7dmUgZ290IHRvIGVuc3VyZSB0aGUgY2hhbmdlcyB0byBgaGZzcGx1c19maW5kX2NhdGAgYW5kIGBoZnNwbHVzX2RlbGV0ZV9jYXRgIGFyZSBwcm9wZXJseSBhY2NvdW50ZWQgZm9yIGluIHRoZSBvbmdvaW5nIHdvcmsuIFRob3NlIG5lZWQgdG8gYmUgZXhwbGljaXRseSBhZGRlZCB0byB0aGUgYEZvY3VzU3ltYm9sc2AgbGlzdCwgdGhhdCYjMzk7cyBjcnVjaWFsIGZvciB0aGUgdG9vbCBJIGFtIHVzaW5nLiBBbHdheXMgZW5zdXJpbmcgdGhhdCBjcml0aWNhbCBjaGFuZ2VzIGFyZSBmbGFnZ2VkIHByb3Blcmx5IGlzIHZpdGFsIGZvciBkZWJ1Z2dpbmcgYW5kIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQuCgpCZWZvcmUgSSBnbyBmdXJ0aGVyLCBsZXQgbWUganVzdCBxdWlja2x5IHJ1biBhIHNhbml0eSBjaGVjay4gTGV0IG1lIGRvdWJsZS1jaGVjayBpZiB0aGVyZSBtaWdodCBiZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBmbGFncyB0aGF0IGFyZSBwb3RlbnRpYWxseSBpbiBwbGF5IGhlcmUuIEkgZG9uJiMzOTt0IHdhbnQgdG8gb3Zlcmxvb2sgYW55dGhpbmcgY3JpdGljYWwhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTE6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEhGUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2hmc3BsdXMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9oZnNwbHVzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2hmc3BsdXMvS2NvbmZpZzoyOmNvbmZpZyBIRlNQTFVTX0ZTXG5mcy9oZnNwbHVzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0FwcGxlIEV4dGVuZGVkIEhGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMvaGZzcGx1cy9LY29uZmlnLTE3LVxuZnMvaGZzcGx1cy9LY29uZmlnOjE4OmNvbmZpZyBIRlNQTFVTX0tVTklUX1RFU1RcbmZzL2hmc3BsdXMvS2NvbmZpZy0xOS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBIRlMmIzQzOyBmaWxlc3lzdGVtXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTY5CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuCgoqKk5hdmlnYXRpbmcgdGhlIEhGUyYjNDM7IEZpbGVzeXN0ZW0gRHJpdmVyIGZvciBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0aWVzKioKCkFscmlnaHQsIG15IGZvY3VzIGlzIGRlZmluaXRlbHkgemVyb2luZyBpbiBvbiB0aGUgYEhGU1BMVVNfRlNgIGNvbmZpZ3VyYXRpb24uIEl0JiMzOTtzIHRoZSBwcmltYXJ5IHBvaW50IG9mIGVudHJ5IGhlcmUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQmIzM5O3Mgc2VlIGlmIHRoZSBmdW5jdGlvbnMgYGhmc3BsdXNfZGVsZXRlX2NhdGAgYW5kIGBoZnNwbHVzX2ZpbmRfY2F0YCBhcmUgcmVhY2hhYmxlLiBUaGVzZSBhcmUga2V5IGJlY2F1c2UgdGhleSBhcmUgY29tcG9uZW50cyBvZiB0aGUgSEZTJiM0MzsgZmlsZXN5c3RlbSBkcml2ZXIuIFRoYXQgZHJpdmVyIGlzIHZ1bG5lcmFibGUgdG8gZnV6emluZy4gSSBjYW4gZG8gc28gYnkgbW91bnRpbmcgYSBzcGVjaWZpY2FsbHkgY3JhZnRlZCBIRlMmIzQzOyBpbWFnZS4gVGhpcyBmZWVscyBsaWtlIHRoZSByaWdodCBwYXRoIHRvIGV4cGxvcmUuIFRvIGRvdWJsZSBjaGVjayBJJiMzOTtsbCBleHBsb3JlIHRoZSBjYWxsZXJzIG9mIGBoZnNwbHVzX2RlbGV0ZV9jYXRgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDExOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hmc3BsdXNfZGVsZXRlX2NhdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2hmc3BsdXMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2hmc3BsdXMvY2F0YWxvZy5jPTI1Mz1pbnQgaGZzcGx1c19jcmVhdGVfY2F0KHUzMiBjbmlkLCBzdHJ1Y3QgaW5vZGUgKmRpcixcbi0tXG5mcy9oZnNwbHVzL2NhdGFsb2cuYy0zMzAtXG5mcy9oZnNwbHVzL2NhdGFsb2cuYzozMzE6aW50IGhmc3BsdXNfZGVsZXRlX2NhdCh1MzIgY25pZCwgc3RydWN0IGlub2RlICpkaXIsIGNvbnN0IHN0cnVjdCBxc3RyICpzdHIpXG5mcy9oZnNwbHVzL2NhdGFsb2cuYy0zMzIte1xuLS1cbmZzL2hmc3BsdXMvZGlyLmM9MzcwPXN0YXRpYyBpbnQgaGZzcGx1c191bmxpbmsoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbi0tXG5mcy9oZnNwbHVzL2Rpci5jLTM5OS1cdH1cbmZzL2hmc3BsdXMvZGlyLmM6NDAwOlx0cmVzID0gaGZzcGx1c19kZWxldGVfY2F0KGNuaWQsIGRpciwgXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbmFtZSk7XG5mcy9oZnNwbHVzL2Rpci5jLTQwMS1cdGlmIChyZXMpXG4tLVxuZnMvaGZzcGx1cy9kaXIuYy00MTEtXHRcdFx0aWYgKCFhdG9taWNfcmVhZChcdTAwMjZIRlNQTFVTX0koaW5vZGUpLVx1MDAzZW9wZW5jbnQpKSB7XG5mcy9oZnNwbHVzL2Rpci5jOjQxMjpcdFx0XHRcdHJlcyA9IGhmc3BsdXNfZGVsZXRlX2NhdChpbm9kZS1cdTAwM2VpX2lubyxcbmZzL2hmc3BsdXMvZGlyLmMtNDEzLVx0XHRcdFx0XHRcdFx0IHNiaS1cdTAwM2VoaWRkZW5fZGlyLFxuLS1cbmZzL2hmc3BsdXMvZGlyLmM9NDM5PXN0YXRpYyBpbnQgaGZzcGx1c19ybWRpcihzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuLS1cbmZzL2hmc3BsdXMvZGlyLmMtNDQ4LVx0bXV0ZXhfbG9jayhcdTAwMjZzYmktXHUwMDNldmhfbXV0ZXgpO1xuZnMvaGZzcGx1cy9kaXIuYzo0NDk6XHRyZXMgPSBoZnNwbHVzX2RlbGV0ZV9jYXQoaW5vZGUtXHUwMDNlaV9pbm8sIGRpciwgXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbmFtZSk7XG5mcy9oZnNwbHVzL2Rpci5jLTQ1MC1cdGlmIChyZXMpXG4tLVxuZnMvaGZzcGx1cy9kaXIuYz00NjM9c3RhdGljIGludCBoZnNwbHVzX3N5bWxpbmsoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqZGlyLFxuLS1cbmZzL2hmc3BsdXMvZGlyLmMtNDkwLVx0XHQvKiBUcnkgdG8gZGVsZXRlIGFueXdheSB3aXRob3V0IGVycm9yIGFuYWx5c2lzLiAqL1xuZnMvaGZzcGx1cy9kaXIuYzo0OTE6XHRcdGhmc3BsdXNfZGVsZXRlX2NhdChpbm9kZS1cdTAwM2VpX2lubywgZGlyLCBcdTAwMjZkZW50cnktXHUwMDNlZF9uYW1lKTtcbmZzL2hmc3BsdXMvZGlyLmMtNDkyLVx0XHRnb3RvIG91dF9lcnI7XG4tLVxuZnMvaGZzcGx1cy9kaXIuYz01MTQ9c3RhdGljIGludCBoZnNwbHVzX21rbm9kKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKmRpcixcbi0tXG5mcy9oZnNwbHVzL2Rpci5jLTU0MC1cdFx0LyogVHJ5IHRvIGRlbGV0ZSBhbnl3YXkgd2l0aG91dCBlcnJvciBhbmFseXNpcy4gKi9cbmZzL2hmc3BsdXMvZGlyLmM6NTQxOlx0XHRoZnNwbHVzX2RlbGV0ZV9jYXQoaW5vZGUtXHUwMDNlaV9pbm8sIGRpciwgXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbmFtZSk7XG5mcy9oZnNwbHVzL2Rpci5jLTU0Mi1cdFx0Z290byBmYWlsZWRfbWtub2Q7XG4tLVxuZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmg9NDIzPWludCBoZnNwbHVzX2NyZWF0ZV9jYXQodTMyIGNuaWQsIHN0cnVjdCBpbm9kZSAqZGlyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqc3RyLFxuZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmgtNDI0LVx0XHQgICAgICAgc3RydWN0IGlub2RlICppbm9kZSk7XG5mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaDo0MjU6aW50IGhmc3BsdXNfZGVsZXRlX2NhdCh1MzIgY25pZCwgc3RydWN0IGlub2RlICpkaXIsIGNvbnN0IHN0cnVjdCBxc3RyICpzdHIpO1xuZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmgtNDI2LWludCBoZnNwbHVzX3JlbmFtZV9jYXQodTMyIGNuaWQsIHN0cnVjdCBpbm9kZSAqc3JjX2RpciwgY29uc3Qgc3RydWN0IHFzdHIgKnNyY19uYW1lLFxuLS1cbmZzL2hmc3BsdXMvaW5vZGUuYz0yODE9c3RhdGljIGludCBoZnNwbHVzX2ZpbGVfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbi0tXG5mcy9oZnNwbHVzL2lub2RlLmMtMjkwLVx0XHRpZiAoaW5vZGUtXHUwMDNlaV9mbGFncyBcdTAwMjYgU19ERUFEKSB7XG5mcy9oZnNwbHVzL2lub2RlLmM6MjkxOlx0XHRcdGhmc3BsdXNfZGVsZXRlX2NhdChpbm9kZS1cdTAwM2VpX2lubyxcbmZzL2hmc3BsdXMvaW5vZGUuYy0yOTItXHRcdFx0XHRcdCAgIEhGU1BMVVNfU0Ioc2IpLVx1MDAzZWhpZGRlbl9kaXIsIE5VTEwpO1xuLS1cbmZzL2hmc3BsdXMvc3VwZXIuYz00NTI9c3RhdGljIGludCBoZnNwbHVzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuLS1cbmZzL2hmc3BsdXMvc3VwZXIuYy02NDMtXHRcdFx0XHQgKi9cbmZzL2hmc3BsdXMvc3VwZXIuYzo2NDQ6XHRcdFx0XHRoZnNwbHVzX2RlbGV0ZV9jYXQoc2JpLVx1MDAzZWhpZGRlbl9kaXItXHUwMDNlaV9pbm8sXG5mcy9oZnNwbHVzL3N1cGVyLmMtNjQ1LVx0XHRcdFx0XHRcdFx0cm9vdCwgXHUwMDI2c3RyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTc3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgSSBzZWUgaXQ6CgoqKlJlYWNoaW5nIGFuZCBUZXN0aW5nIGBoZnNwbHVzX2RlbGV0ZV9jYXRgKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcywgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgYGhmc3BsdXNfZGVsZXRlX2NhdGAgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uIGluIHRoZSBIRlMmIzQzOyBmaWxlc3lzdGVtIGltcGxlbWVudGF0aW9uLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBhIGJ1bmNoIG9mIGtleSBvcGVyYXRpb25zOiBgaGZzcGx1c191bmxpbmtgLCBgaGZzcGx1c19ybWRpcmAsIGBoZnNwbHVzX3N5bWxpbmtgLCBgaGZzcGx1c19ta25vZGAsIGBoZnNwbHVzX2ZpbGVfcmVsZWFzZWAsIGFuZCBldmVuIGR1cmluZyBzdXBlcmJsb2NrIGluaXRpYWxpemF0aW9uIHZpYSBgaGZzcGx1c19maWxsX3N1cGVyYC4gVGhhdCYjMzk7cyBhIHN0cm9uZyBpbmRpY2F0b3Igb2YgaXRzIGltcG9ydGFuY2Ug4oCTIGl0JiMzOTtzIGZ1bmRhbWVudGFsIHRvIGhvdyBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgYXJlIG1hbmFnZWQsIGFuZCBob3cgdGhlIHZvbHVtZSBpdHNlbGYgaXMgc2V0IHVwLiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIGNhbGxlZCBmcm9tIHNvIG1hbnkgcGxhY2VzIHN1Z2dlc3RzIGEgY29tcHJlaGVuc2l2ZSBhbmQgcG9zc2libHkgY29tcGxleCByb2xlIGluIG1haW50YWluaW5nIHRoZSBjYXRhbG9nLiBUaGlzIGFsc28gbWVhbnMgaXQmIzM5O3MgKmRlZmluaXRlbHkqIHJlYWNoYWJsZTsgdGhlcmUmIzM5O3Mgbm8gcXVlc3Rpb24gYWJvdXQgd2hldGhlciBpdCBnZXRzIHVzZWQuIEFuZCwgaWYgaXQmIzM5O3MgcmVhY2hhYmxlLCBpdCYjMzk7cyB0ZXN0YWJsZS4gSSBjYW4gY3JhZnQgdGVzdCBjYXNlcyB0byBleGVyY2lzZSBpdCB1bmRlciB2YXJpb3VzIGNvbmRpdGlvbnMsIHdoaWNoIGlzIGVzc2VudGlhbCBmb3IgZW5zdXJpbmcgaXRzIGNvcnJlY3RuZXNzIGFuZCByb2J1c3RuZXNzLgoKTm93LCBJIG5lZWQgdG8gbG9vayBpbnRvIGl0cyBjYWxsZXJzIGZ1cnRoZXIuIFVuZGVyc3RhbmRpbmcgd2hhdCBjYWxscyBgaGZzcGx1c19maW5kX2NhdGAgd2lsbCBwcm92aWRlIGltcG9ydGFudCBjb250ZXh0IGFuZCBhbiB1bmRlcnN0YW5kaW5nIG9mIGl0cyBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDExOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hmc3BsdXNfZmluZF9jYXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9oZnNwbHVzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9oZnNwbHVzL2NhdGFsb2cuYz0xNzY9c3RhdGljIGludCBoZnNwbHVzX2ZpbGxfY2F0X3RocmVhZChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuLS1cbmZzL2hmc3BsdXMvY2F0YWxvZy5jLTE5My0vKiBUcnkgdG8gZ2V0IGEgY2F0YWxvZyBlbnRyeSBmb3IgZ2l2ZW4gY2F0YWxvZyBpZCAqL1xuZnMvaGZzcGx1cy9jYXRhbG9nLmM6MTk0OmludCBoZnNwbHVzX2ZpbmRfY2F0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBjbmlkLFxuZnMvaGZzcGx1cy9jYXRhbG9nLmMtMTk1LVx0XHQgICAgIHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZClcbi0tXG5mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaD00MjA9dm9pZCBoZnNwbHVzX2NhdF9zZXRfcGVybXMoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGhmc3BsdXNfcGVybSAqcGVybXMpO1xuZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmg6NDIxOmludCBoZnNwbHVzX2ZpbmRfY2F0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBjbmlkLFxuZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmgtNDIyLVx0XHQgICAgIHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCk7XG4tLVxuZnMvaGZzcGx1cy9pbm9kZS5jPTY3Nz1pbnQgaGZzcGx1c19jYXRfd3JpdGVfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSlcbi0tXG5mcy9oZnNwbHVzL2lub2RlLmMtNjk2LVxuZnMvaGZzcGx1cy9pbm9kZS5jOjY5NzpcdGlmIChoZnNwbHVzX2ZpbmRfY2F0KG1haW5faW5vZGUtXHUwMDNlaV9zYiwgbWFpbl9pbm9kZS1cdTAwM2VpX2lubywgXHUwMDI2ZmQpKVxuZnMvaGZzcGx1cy9pbm9kZS5jLTY5OC1cdFx0LyogcGFuaWM/ICovXG4tLVxuZnMvaGZzcGx1cy9zdXBlci5jPTY1PXN0cnVjdCBpbm9kZSAqaGZzcGx1c19pZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vKVxuLS1cbmZzL2hmc3BsdXMvc3VwZXIuYy05OS1cdFx0aWYgKCFlcnIpIHtcbmZzL2hmc3BsdXMvc3VwZXIuYzoxMDA6XHRcdFx0ZXJyID0gaGZzcGx1c19maW5kX2NhdChpbm9kZS1cdTAwM2VpX3NiLCBpbm9kZS1cdTAwM2VpX2lubywgXHUwMDI2ZmQpO1xuZnMvaGZzcGx1cy9zdXBlci5jLTEwMS1cdFx0XHRpZiAoIWVycilcbi0tXG5mcy9oZnNwbHVzL3hhdHRyLmM9MzUxPWludCBfX2hmc3BsdXNfc2V0eGF0dHIoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3QgY2hhciAqbmFtZSxcbi0tXG5mcy9oZnNwbHVzL3hhdHRyLmMtMzc2LVxuZnMvaGZzcGx1cy94YXR0ci5jOjM3NzpcdGVyciA9IGhmc3BsdXNfZmluZF9jYXQoaW5vZGUtXHUwMDNlaV9zYiwgaW5vZGUtXHUwMDNlaV9pbm8sIFx1MDAyNmNhdF9mZCk7XG5mcy9oZnNwbHVzL3hhdHRyLmMtMzc4LVx0aWYgKGVycikge1xuLS1cbmZzL2hmc3BsdXMveGF0dHIuYz01NjI9c3RhdGljIHNzaXplX3QgaGZzcGx1c19nZXR4YXR0cl9maW5kZXJfaW5mbyhzdHJ1Y3QgaW5vZGUgKmlub2RlLFxuLS1cbmZzL2hmc3BsdXMveGF0dHIuYy01NzktXHRcdH1cbmZzL2hmc3BsdXMveGF0dHIuYzo1ODA6XHRcdHJlcyA9IGhmc3BsdXNfZmluZF9jYXQoaW5vZGUtXHUwMDNlaV9zYiwgaW5vZGUtXHUwMDNlaV9pbm8sIFx1MDAyNmZkKTtcbmZzL2hmc3BsdXMveGF0dHIuYy01ODEtXHRcdGlmIChyZXMpXG4tLVxuZnMvaGZzcGx1cy94YXR0ci5jPTczND1zdGF0aWMgc3NpemVfdCBoZnNwbHVzX2xpc3R4YXR0cl9maW5kZXJfaW5mbyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG4tLVxuZnMvaGZzcGx1cy94YXR0ci5jLTc1MS1cbmZzL2hmc3BsdXMveGF0dHIuYzo3NTI6XHRyZXMgPSBoZnNwbHVzX2ZpbmRfY2F0KGlub2RlLVx1MDAzZWlfc2IsIGlub2RlLVx1MDAzZWlfaW5vLCBcdTAwMjZmZCk7XG5mcy9oZnNwbHVzL3hhdHRyLmMtNzUzLVx0aWYgKHJlcylcbi0tXG5mcy9oZnNwbHVzL3hhdHRyLmM9OTA2PXN0YXRpYyBpbnQgaGZzcGx1c19yZW1vdmV4YXR0cihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCBjaGFyICpuYW1lKVxuLS1cbmZzL2hmc3BsdXMveGF0dHIuYy05MjktXG5mcy9oZnNwbHVzL3hhdHRyLmM6OTMwOlx0ZXJyID0gaGZzcGx1c19maW5kX2NhdChpbm9kZS1cdTAwM2VpX3NiLCBpbm9kZS1cdTAwM2VpX2lubywgXHUwMDI2Y2F0X2ZkKTtcbmZzL2hmc3BsdXMveGF0dHIuYy05MzEtXHRpZiAoZXJyKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDExOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5NTAKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSEZTJiM0MzsgQ29kZSoqCgpPa2F5LCBzbyBgaGZzcGx1c19maW5kX2NhdGAgaXMgY2xlYXJseSBhIGtleSBmdW5jdGlvbi4gSSYjMzk7bSBzZWVpbmcgaXQmIzM5O3MgY2FsbGVkIGZyb20gc2V2ZXJhbCBjcml0aWNhbCBwb2ludHMgaW4gdGhlIEhGUyYjNDM7IGZpbGVzeXN0ZW0gaW1wbGVtZW50YXRpb246IGBoZnNwbHVzX2NhdF93cml0ZV9pbm9kZWAsIGBoZnNwbHVzX2lnZXRgLCBgX19oZnNwbHVzX3NldHhhdHRyYCwgYXMgd2VsbCBhcyB0aG9zZSBGaW5kZXIgaW5mbyB4YXR0ciBoYW5kbGVycy4gVGhlIHJlYWNoYWJpbGl0eSBsb29rcyBnb29kLCB3aGljaCBtZWFucyBpdCYjMzk7cyBkZWZpbml0ZWx5IGEgdmlhYmxlIHRhcmdldCBmb3IgaW4tZGVwdGggYW5hbHlzaXMuCgpHaXZlbiBpdHMgY2VudHJhbGl0eSBhbmQgdGhlIGZhY3QgdGhlIHBhdGNoIGFwcGVhcnMgZnVuY3Rpb25hbCwgSSYjMzk7bSBjb25maWRlbnQgdGhhdCB0aGlzIGlzIGEgdmFsdWFibGUgYXJlYSB0byBmb2N1cyBvbi4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0aGF0IGl0JiMzOTtzIHByaW1lIG1hdGVyaWFsIGZvciBmdXp6aW5nLiBJJiMzOTtsbCBmbGFnIHRoYXQgd2l0aCBgV29ydGhGdXp6aW5nPXRydWVgLgoKRm9yIHRoZSBjb25maWd1cmF0aW9uLCBJJiMzOTttIGdvaW5nIHRvIHNldCBgRW5hYmxlQ29uZmlnc2AgdG8gYEhGU1BMVVNfRlNgLiBBbmQgZm9yIHRoZSBgRm9jdXNTeW1ib2xzYCwgSSYjMzk7bGwgcHJpb3JpdGl6ZSBgaGZzcGx1c19maW5kX2NhdGAsIGFsb25nIHdpdGggaXRzIGNvbXBsZW1lbnQsIGBoZnNwbHVzX2RlbGV0ZV9jYXRgLiBUaGVzZSBhcmUgdGhlIGNvcmUgcm91dGluZXMgdG8gcmVhbGx5IGdldCBhZnRlci4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBmb3IgYW55IHJlbGF0ZWQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbWlnaHQgYWxzbyBiZSByZWxldmFudC4gVGhpbmdzIGxpa2UgYENPTkZJR19IRlNQTFVTX0ZTX1BPU0lYX0FDTGAsIG9yIGFueSBvdGhlciBzaW1pbGFyIG9wdGlvbnMgdGhhdCBjb3VsZCBhZmZlY3QgdGhlIGJlaGF2aW9yIG9mIGBoZnNwbHVzX2ZpbmRfY2F0YCBzaG91bGQgYmUgaW52ZXN0aWdhdGVkIHRvIGVuc3VyZSBhIGNvbXByZWhlbnNpdmUgZnV6emluZyBzZXR1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTE6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEhGU1BMVVMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9oZnNwbHVzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaGZzcGx1cy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9oZnNwbHVzL0tjb25maWc6Mjpjb25maWcgSEZTUExVU19GU1xuZnMvaGZzcGx1cy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtBcHBsZSBFeHRlbmRlZCBIRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuLS1cbmZzL2hmc3BsdXMvS2NvbmZpZy0xNy1cbmZzL2hmc3BsdXMvS2NvbmZpZzoxODpjb25maWcgSEZTUExVU19LVU5JVF9URVNUXG5mcy9oZnNwbHVzL0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgSEZTJiM0MzsgZmlsZXN5c3RlbVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDExOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2MTMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246CgoqKkludmVzdGlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlIGZvciBIRlMmIzQzOyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGZpbGVzeXN0ZW0gY29uZmlndXJhdGlvbnMsIHNwZWNpZmljYWxseSBIRlMmIzQzOy4gSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCB0aGVyZSB3ZXJlbiYjMzk7dCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIGluIHRoZSBgZnMvaGZzcGx1c2AgZGlyZWN0b3J5LiBCdXQsIGhhbmcgb24gYSBzZWNvbmQuLi5zb21ldGhpbmcgbmFnZ2VkIGF0IHRoZSBiYWNrIG9mIG15IG1pbmQuIFdoYXQgYWJvdXQgYGZzL2hmc3BsdXMvS2NvbmZpZ2A/IEl0JiMzOTtzIHRoZSBzdGFuZGFyZCBwbGFjZSBmb3Iga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYSBmaWxlc3lzdGVtLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2suIEJlc3QgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUsIHNvIEkmIzM5O2xsIGdvIGFoZWFkIGFuZCB0YWtlIGEgbG9vayBhdCBpdC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIHJlYWQgaXQgdG8gZ2V0IHRoZSBmdWxsIHN0b3J5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL2hmc3BsdXMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgSEZTUExVU19GU1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7QXBwbGUgRXh0ZW5kZWQgSEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gQkxPQ0tcbiAgIDU6XHRcdHNlbGVjdCBCVUZGRVJfSEVBRFxuICAgNjpcdFx0c2VsZWN0IE5MU1xuICAgNzpcdFx0c2VsZWN0IE5MU19VVEY4XG4gICA4Olx0XHRzZWxlY3QgTEVHQUNZX0RJUkVDVF9JT1xuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgeW91IHdpbGwgYmUgYWJsZSB0byBtb3VudCBleHRlbmRlZCBmb3JtYXRcbiAgMTE6XHRcdCAgTWFjaW50b3NoLWZvcm1hdHRlZCBoYXJkIGRyaXZlIHBhcnRpdGlvbnMgd2l0aCBmdWxsIHJlYWQtd3JpdGUgYWNjZXNzLlxuICAxMjpcdFxuICAxMzpcdFx0ICBUaGlzIGZpbGUgc3lzdGVtIGlzIG9mdGVuIGNhbGxlZCBIRlMmIzQzOyBhbmQgd2FzIGludHJvZHVjZWQgd2l0aFxuICAxNDpcdFx0ICBNYWNPUyA4LiBJdCBpbmNsdWRlcyBhbGwgTWFjIHNwZWNpZmljIGZpbGVzeXN0ZW0gZGF0YSBzdWNoIGFzXG4gIDE1Olx0XHQgIGRhdGEgZm9ya3MgYW5kIGNyZWF0b3IgY29kZXMsIGJ1dCBpdCBhbHNvIGhhcyBzZXZlcmFsIFVOSVhcbiAgMTY6XHRcdCAgc3R5bGUgZmVhdHVyZXMgc3VjaCBhcyBmaWxlIG93bmVyc2hpcCBhbmQgcGVybWlzc2lvbnMuXG4gIDE3Olx0XG4gIDE4Olx0Y29uZmlnIEhGU1BMVVNfS1VOSVRfVEVTVFxuICAxOTpcdFx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIEhGUyYjNDM7IGZpbGVzeXN0ZW1cJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuICAyMDpcdFx0ZGVwZW5kcyBvbiBIRlNQTFVTX0ZTIFx1MDAyNlx1MDAyNiBLVU5JVFxuICAyMTpcdFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiAgMjI6XHRcdGhlbHBcbiAgMjM6XHRcdCAgVGhpcyBidWlsZHMgS1VuaXQgdGVzdHMgZm9yIHRoZSBIRlMmIzQzOyBmaWxlc3lzdGVtLlxuICAyNDpcdFxuICAyNTpcdFx0ICBLVW5pdCB0ZXN0cyBydW4gZHVyaW5nIGJvb3QgYW5kIG91dHB1dCB0aGUgcmVzdWx0cyB0byB0aGUgZGVidWdcbiAgMjY6XHRcdCAgbG9nIGluIFRBUCBmb3JtYXQgKGh0dHBzOi8vdGVzdGFueXRoaW5nLm9yZy8pLiBPbmx5IHVzZWZ1bCBmb3JcbiAgMjc6XHRcdCAga2VybmVsIGRldnMgcnVubmluZyBLVW5pdCB0ZXN0IGhhcm5lc3MgYW5kIGFyZSBub3QgZm9yIGluY2x1c2lvblxuICAyODpcdFx0ICBpbnRvIGEgcHJvZHVjdGlvbiBidWlsZC5cbiAgMjk6XHRcbiAgMzA6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCBwbGVhc2VcbiAgMzE6XHRcdCAgcmVmZXIgdG8gdGhlIEtVbml0IGRvY3VtZW50YXRpb24gaW4gRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMva3VuaXQvLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MzExCgkJCQkJCQlvdXRwdXQ6IDEyMAoJCQkJCQkJdGhvdWdodHM6IDE3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgSEZTJiM0MzsgRmlsZXN5c3RlbSBTeW1ib2xzIGZvciBGb2N1c1N5bWJvbHMqKgoKT2theSwgc28gaXQgbG9va3MgbGlrZSBgSEZTUExVU19GU2AgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiB3ZSBuZWVkIHRvIGZvY3VzIG9uLiBUaGF0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIE5vdywgSSBzaG91bGQgbWFrZSBzdXJlIHRob3NlIGNhdGFsb2cgZnVuY3Rpb25zLCBgaGZzcGx1c19kZWxldGVfY2F0YCBhbmQgYGhmc3BsdXNfZmluZF9jYXRgLCBhcmUgYXBwcm9wcmlhdGVseSBleHBvc2VkLiBMZXQmIzM5O3Mgc2VlLi4uIFRoZXkmIzM5O3JlIGJvdGggaW4gYGZzL2hmc3BsdXMvY2F0YWxvZy5jYCwgYW5kIGl0IGFwcGVhcnMgdGhleSYjMzk7cmUgZXhwb3J0ZWQgdG8gb3RoZXIgbW9kdWxlcyB3aXRoaW4gYGZzL2hmc3BsdXMvYCB2aWEgYGhmc3BsdXNfZnMuaGAuIFRoYXQmIzM5O3MgcHJlY2lzZWx5IHdoYXQgSSB3YXMgaG9waW5nIHRvIGZpbmQuCgpFeGNlbGxlbnQsIGBoZnNwbHVzX2RlbGV0ZV9jYXRgIGFuZCBgaGZzcGx1c19maW5kX2NhdGAgbG9vayBsaWtlIHByaW1lIHRhcmdldHMgZm9yIGBGb2N1c1N5bWJvbHNgLiBUaGF0IGlzIGV4YWN0bHkgd2hhdCBJIG5lZWQuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0JiMzOTtzIGRvdWJsZS1jaGVjazsgYEhGU1BMVVNfRlNgIGl0c2VsZiBpcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIGVsZW1lbnQuIFllcywgdGhhdCBpcyBjb3JyZWN0LCBzbyBldmVyeXRoaW5nIGNoZWNrcyBvdXQuCgpPa2F5LCB0aGF0IGNvbmZpcm1zIHdoYXQgSSBuZWVkZWQuIEkgYW0gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SEZTUExVU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hmc3BsdXNfZmluZF9jYXQmIzM0OywKICAgICYjMzQ7aGZzcGx1c19kZWxldGVfY2F0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgY2F0YWxvZyBvcGVyYXRpb25zIGluIHRoZSBIRlMmIzQzOyBmaWxlc3lzdGVtIGRyaXZlciAoaGZzcGx1c19maW5kX2NhdCBhbmQgaGZzcGx1c19kZWxldGVfY2F0KSBieSBhZGRpbmcgdmFsaWRhdGlvbiBmb3IgdGhyZWFkIHJlY29yZCB0eXBlcyBhbmQgbmFtZSBsZW5ndGhzLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB3aGVuIG1vdW50aW5nIGFuZCBpbnRlcmFjdGluZyB3aXRoIEhGUyYjNDM7IGZpbGVzeXN0ZW0gaW1hZ2VzLCBtYWtpbmcgdGhlbSBzdWl0YWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SEZTUExVU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hmc3BsdXNfZmluZF9jYXQmIzM0OywKICAgICYjMzQ7aGZzcGx1c19kZWxldGVfY2F0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgY2F0YWxvZyBvcGVyYXRpb25zIGluIHRoZSBIRlMmIzQzOyBmaWxlc3lzdGVtIGRyaXZlciAoaGZzcGx1c19maW5kX2NhdCBhbmQgaGZzcGx1c19kZWxldGVfY2F0KSBieSBhZGRpbmcgdmFsaWRhdGlvbiBmb3IgdGhyZWFkIHJlY29yZCB0eXBlcyBhbmQgbmFtZSBsZW5ndGhzLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB3aGVuIG1vdW50aW5nIGFuZCBpbnRlcmFjdGluZyB3aXRoIEhGUyYjNDM7IGZpbGVzeXN0ZW0gaW1hZ2VzLCBtYWtpbmcgdGhlbSBzdWl0YWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDExOjE4OjAxLjM1ODQ1MDc5N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4Njc1Nzk3NDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhGU1BMVVNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoZnNwbHVzX2ZpbmRfY2F0XCIsXG4gICAgXCJoZnNwbHVzX2RlbGV0ZV9jYXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGNhdGFsb2cgb3BlcmF0aW9ucyBpbiB0aGUgSEZTKyBmaWxlc3lzdGVtIGRyaXZlciAoaGZzcGx1c19maW5kX2NhdCBhbmQgaGZzcGx1c19kZWxldGVfY2F0KSBieSBhZGRpbmcgdmFsaWRhdGlvbiBmb3IgdGhyZWFkIHJlY29yZCB0eXBlcyBhbmQgbmFtZSBsZW5ndGhzLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB3aGVuIG1vdW50aW5nIGFuZCBpbnRlcmFjdGluZyB3aXRoIEhGUysgZmlsZXN5c3RlbSBpbWFnZXMsIG1ha2luZyB0aGVtIHN1aXRhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMToxODowMS4zNTg0NTgwOTdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMzczODYzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDNiNDJlNDMzZDA0ZTkwYjIwMDljYmRhNDI3NmQ2MWUzNDhkMDJlMTJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMSAxMToxNzo1OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9oZnNwbHVzL2NhdGFsb2cuYyBiL2ZzL2hmc3BsdXMvY2F0YWxvZy5jXFxuaW5kZXggNzc2Y2UzNmNmMDc2YjQuLmM1N2MzYmJiODE0MzU0IDEwMDY0NFxcbi0tLSBhL2ZzL2hmc3BsdXMvY2F0YWxvZy5jXFxuKysrIGIvZnMvaGZzcGx1cy9jYXRhbG9nLmNcXG5AQCAtMTk2LDIwICsxOTYsMjAgQEAgaW50IGhmc3BsdXNfZmluZF9jYXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsXFxuIHtcXG4gXFx0aGZzcGx1c19jYXRfZW50cnkgdG1wID0gezB9O1xcbiBcXHRpbnQgZXJyO1xcbi1cXHR1MTYgdHlwZTtcXG4rXFx0dTE2IGVudHJ5X3R5cGU7XFxuIFxcbiBcXHRoZnNwbHVzX2NhdF9idWlsZF9rZXlfd2l0aF9jbmlkKHNiLCBmZC1cXHUwMDNlc2VhcmNoX2tleSwgY25pZCk7XFxuIFxcdGVyciA9IGhmc3BsdXNfYnJlY19yZWFkX2NhdChmZCwgXFx1MDAyNnRtcCk7XFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdHJldHVybiBlcnI7XFxuIFxcbi1cXHR0eXBlID0gYmUxNl90b19jcHUodG1wLnR5cGUpO1xcbi1cXHRpZiAodHlwZSAhPSBIRlNQTFVTX0ZPTERFUl9USFJFQUQgXFx1MDAyNlxcdTAwMjYgdHlwZSAhPSBIRlNQTFVTX0ZJTEVfVEhSRUFEKSB7XFxuK1xcdGVudHJ5X3R5cGUgPSBiZTE2X3RvX2NwdSh0bXAudHlwZSk7XFxuK1xcdGlmICghaXNfaGZzcGx1c190aHJlYWRfdHlwZShlbnRyeV90eXBlKSkge1xcbiBcXHRcXHRwcl9lcnIoXFxcImZvdW5kIGJhZCB0aHJlYWQgcmVjb3JkIGluIGNhdGFsb2dcXFxcblxcXCIpO1xcbiBcXHRcXHRyZXR1cm4gLUVJTztcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKGJlMTZfdG9fY3B1KHRtcC50aHJlYWQubm9kZU5hbWUubGVuZ3RoKSBcXHUwMDNlIDI1NSkge1xcbitcXHRpZiAoIWlzX2hmc3BsdXNfbmFtZV9sZW5ndGhfdmFsaWQodG1wLnRocmVhZC5ub2RlTmFtZS5sZW5ndGgpKSB7XFxuIFxcdFxcdHByX2VycihcXFwiY2F0YWxvZyBuYW1lIGxlbmd0aCBjb3JydXB0ZWRcXFxcblxcXCIpO1xcbiBcXHRcXHRyZXR1cm4gLUVJTztcXG4gXFx0fVxcbkBAIC0zNTAsMjMgKzM1MCwyOSBAQCBpbnQgaGZzcGx1c19kZWxldGVfY2F0KHUzMiBjbmlkLCBzdHJ1Y3QgaW5vZGUgKmRpciwgY29uc3Qgc3RydWN0IHFzdHIgKnN0cilcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcbiBcXHRpZiAoIXN0cikge1xcbi1cXHRcXHRpbnQgbGVuO1xcbitcXHRcXHRoZnNwbHVzX2NhdF9lbnRyeSBlbnRyeSA9IHswfTtcXG4rXFx0XFx0dTE2IGVudHJ5X3R5cGU7XFxuIFxcbiBcXHRcXHRoZnNwbHVzX2NhdF9idWlsZF9rZXlfd2l0aF9jbmlkKHNiLCBmZC5zZWFyY2hfa2V5LCBjbmlkKTtcXG4tXFx0XFx0ZXJyID0gaGZzX2JyZWNfZmluZChcXHUwMDI2ZmQsIGhmc19maW5kX3JlY19ieV9rZXkpO1xcbitcXHRcXHRlcnIgPSBoZnNwbHVzX2JyZWNfcmVhZF9jYXQoXFx1MDAyNmZkLCBcXHUwMDI2ZW50cnkpO1xcbiBcXHRcXHRpZiAoZXJyKVxcbiBcXHRcXHRcXHRnb3RvIG91dDtcXG4gXFxuLVxcdFxcdG9mZiA9IGZkLmVudHJ5b2Zmc2V0ICtcXG4tXFx0XFx0XFx0b2Zmc2V0b2Yoc3RydWN0IGhmc3BsdXNfY2F0X3RocmVhZCwgbm9kZU5hbWUpO1xcbi1cXHRcXHRmZC5zZWFyY2hfa2V5LVxcdTAwM2VjYXQucGFyZW50ID0gY3B1X3RvX2JlMzIoZGlyLVxcdTAwM2VpX2lubyk7XFxuLVxcdFxcdGhmc19ibm9kZV9yZWFkKGZkLmJub2RlLFxcbi1cXHRcXHRcXHRcXHUwMDI2ZmQuc2VhcmNoX2tleS1cXHUwMDNlY2F0Lm5hbWUubGVuZ3RoLCBvZmYsIDIpO1xcbi1cXHRcXHRsZW4gPSBiZTE2X3RvX2NwdShmZC5zZWFyY2hfa2V5LVxcdTAwM2VjYXQubmFtZS5sZW5ndGgpICogMjtcXG4tXFx0XFx0aGZzX2Jub2RlX3JlYWQoZmQuYm5vZGUsXFxuLVxcdFxcdFxcdFxcdTAwMjZmZC5zZWFyY2hfa2V5LVxcdTAwM2VjYXQubmFtZS51bmljb2RlLFxcbi1cXHRcXHRcXHRvZmYgKyAyLCBsZW4pO1xcbi1cXHRcXHRmZC5zZWFyY2hfa2V5LVxcdTAwM2VrZXlfbGVuID0gY3B1X3RvX2JlMTYoNiArIGxlbik7XFxuK1xcdFxcdGVudHJ5X3R5cGUgPSBiZTE2X3RvX2NwdShlbnRyeS50eXBlKTtcXG4rXFx0XFx0aWYgKCFpc19oZnNwbHVzX3RocmVhZF90eXBlKGVudHJ5X3R5cGUpKSB7XFxuK1xcdFxcdFxcdHByX2VycihcXFwiZm91bmQgYmFkIHRocmVhZCByZWNvcmQgaW4gY2F0YWxvZ1xcXFxuXFxcIik7XFxuK1xcdFxcdFxcdGVyciA9IC1FSU87XFxuK1xcdFxcdFxcdGdvdG8gb3V0O1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRpZiAoIWlzX2hmc3BsdXNfbmFtZV9sZW5ndGhfdmFsaWQoZW50cnkudGhyZWFkLm5vZGVOYW1lLmxlbmd0aCkpIHtcXG4rXFx0XFx0XFx0cHJfZXJyKFxcXCJjYXRhbG9nIG5hbWUgbGVuZ3RoIGNvcnJ1cHRlZFxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdGVyciA9IC1FSU87XFxuK1xcdFxcdFxcdGdvdG8gb3V0O1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRoZnNwbHVzX2NhdF9idWlsZF9rZXlfdW5pKGZkLnNlYXJjaF9rZXksIGRpci1cXHUwMDNlaV9pbm8sXFxuK1xcdFxcdFxcdFxcdFxcdCAgXFx1MDAyNmVudHJ5LnRocmVhZC5ub2RlTmFtZSk7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdGVyciA9IGhmc3BsdXNfY2F0X2J1aWxkX2tleShzYiwgZmQuc2VhcmNoX2tleSwgZGlyLVxcdTAwM2VpX2lubywgc3RyKTtcXG4gXFx0XFx0aWYgKHVubGlrZWx5KGVycikpXFxuZGlmZiAtLWdpdCBhL2ZzL2hmc3BsdXMvaGZzcGx1c19mcy5oIGIvZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmhcXG5pbmRleCBlYzA0YjgyYWQ5Mjc4Ny4uYjk1NGI0NWExMDAzNjkgMTAwNjQ0XFxuLS0tIGEvZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmhcXG4rKysgYi9mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaFxcbkBAIC01MjEsNiArNTIxLDE3IEBAIHN0YXRpYyBpbmxpbmUgdTMyIGhmc3BsdXNfY2F0X3RocmVhZF9zaXplKGNvbnN0IHN0cnVjdCBoZnNwbHVzX2NhdF90aHJlYWQgKnRocmVhXFxuIFxcdCAgICAgICBiZTE2X3RvX2NwdSh0aHJlYWQtXFx1MDAzZW5vZGVOYW1lLmxlbmd0aCkgKiBzaXplb2YoaGZzcGx1c191bmljaHIpO1xcbiB9XFxuIFxcbitzdGF0aWMgaW5saW5lIGJvb2wgaXNfaGZzcGx1c190aHJlYWRfdHlwZSh1MTYgZW50cnlfdHlwZSlcXG4re1xcbitcXHRyZXR1cm4gZW50cnlfdHlwZSA9PSBIRlNQTFVTX0ZPTERFUl9USFJFQUQgfHxcXG4rXFx0ICAgICAgIGVudHJ5X3R5cGUgPT0gSEZTUExVU19GSUxFX1RIUkVBRDtcXG4rfVxcbitcXG4rc3RhdGljIGlubGluZSBib29sIGlzX2hmc3BsdXNfbmFtZV9sZW5ndGhfdmFsaWQoX19iZTE2IG5hbWVfbGVuZ3RoKVxcbit7XFxuK1xcdHJldHVybiBiZTE2X3RvX2NwdShuYW1lX2xlbmd0aCkgXFx1MDAzYz0gSEZTUExVU19NQVhfU1RSTEVOO1xcbit9XFxuK1xcbiBpbnQgaGZzcGx1c19icmVjX3JlYWRfY2F0KHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgaGZzcGx1c19jYXRfZW50cnkgKmVudHJ5KTtcXG4gXFxuIC8qXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDExOjE4OjAxLjk3MzIzODMzN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgwNjA5ODkxMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSEZTUExVU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhmc3BsdXNfZmluZF9jYXRcIixcbiAgICBcImhmc3BsdXNfZGVsZXRlX2NhdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgY2F0YWxvZyBvcGVyYXRpb25zIGluIHRoZSBIRlMrIGZpbGVzeXN0ZW0gZHJpdmVyIChoZnNwbHVzX2ZpbmRfY2F0IGFuZCBoZnNwbHVzX2RlbGV0ZV9jYXQpIGJ5IGFkZGluZyB2YWxpZGF0aW9uIGZvciB0aHJlYWQgcmVjb3JkIHR5cGVzIGFuZCBuYW1lIGxlbmd0aHMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIHdoZW4gbW91bnRpbmcgYW5kIGludGVyYWN0aW5nIHdpdGggSEZTKyBmaWxlc3lzdGVtIGltYWdlcywgbWFraW5nIHRoZW0gc3VpdGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgM2I0MmU0MzNkMDRlOTBiMjAwOWNiZGE0Mjc2ZDYxZTM0OGQwMmUxMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMTE6MTc6NTkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9oZnNwbHVzL2NhdGFsb2cuYyBiL2ZzL2hmc3BsdXMvY2F0YWxvZy5jXG5pbmRleCA3NzZjZTM2Y2YwNzZiNC4uYzU3YzNiYmI4MTQzNTQgMTAwNjQ0XG4tLS0gYS9mcy9oZnNwbHVzL2NhdGFsb2cuY1xuKysrIGIvZnMvaGZzcGx1cy9jYXRhbG9nLmNcbkBAIC0xOTYsMjAgKzE5NiwyMCBAQCBpbnQgaGZzcGx1c19maW5kX2NhdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcbiB7XG4gXHRoZnNwbHVzX2NhdF9lbnRyeSB0bXAgPSB7MH07XG4gXHRpbnQgZXJyO1xuLVx0dTE2IHR5cGU7XG4rXHR1MTYgZW50cnlfdHlwZTtcbiBcbiBcdGhmc3BsdXNfY2F0X2J1aWxkX2tleV93aXRoX2NuaWQoc2IsIGZkLVx1MDAzZXNlYXJjaF9rZXksIGNuaWQpO1xuIFx0ZXJyID0gaGZzcGx1c19icmVjX3JlYWRfY2F0KGZkLCBcdTAwMjZ0bXApO1xuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbi1cdHR5cGUgPSBiZTE2X3RvX2NwdSh0bXAudHlwZSk7XG4tXHRpZiAodHlwZSAhPSBIRlNQTFVTX0ZPTERFUl9USFJFQUQgXHUwMDI2XHUwMDI2IHR5cGUgIT0gSEZTUExVU19GSUxFX1RIUkVBRCkge1xuK1x0ZW50cnlfdHlwZSA9IGJlMTZfdG9fY3B1KHRtcC50eXBlKTtcbitcdGlmICghaXNfaGZzcGx1c190aHJlYWRfdHlwZShlbnRyeV90eXBlKSkge1xuIFx0XHRwcl9lcnIoXCJmb3VuZCBiYWQgdGhyZWFkIHJlY29yZCBpbiBjYXRhbG9nXFxuXCIpO1xuIFx0XHRyZXR1cm4gLUVJTztcbiBcdH1cbiBcbi1cdGlmIChiZTE2X3RvX2NwdSh0bXAudGhyZWFkLm5vZGVOYW1lLmxlbmd0aCkgXHUwMDNlIDI1NSkge1xuK1x0aWYgKCFpc19oZnNwbHVzX25hbWVfbGVuZ3RoX3ZhbGlkKHRtcC50aHJlYWQubm9kZU5hbWUubGVuZ3RoKSkge1xuIFx0XHRwcl9lcnIoXCJjYXRhbG9nIG5hbWUgbGVuZ3RoIGNvcnJ1cHRlZFxcblwiKTtcbiBcdFx0cmV0dXJuIC1FSU87XG4gXHR9XG5AQCAtMzUwLDIzICszNTAsMjkgQEAgaW50IGhmc3BsdXNfZGVsZXRlX2NhdCh1MzIgY25pZCwgc3RydWN0IGlub2RlICpkaXIsIGNvbnN0IHN0cnVjdCBxc3RyICpzdHIpXG4gXHRcdGdvdG8gb3V0O1xuIFxuIFx0aWYgKCFzdHIpIHtcbi1cdFx0aW50IGxlbjtcbitcdFx0aGZzcGx1c19jYXRfZW50cnkgZW50cnkgPSB7MH07XG4rXHRcdHUxNiBlbnRyeV90eXBlO1xuIFxuIFx0XHRoZnNwbHVzX2NhdF9idWlsZF9rZXlfd2l0aF9jbmlkKHNiLCBmZC5zZWFyY2hfa2V5LCBjbmlkKTtcbi1cdFx0ZXJyID0gaGZzX2JyZWNfZmluZChcdTAwMjZmZCwgaGZzX2ZpbmRfcmVjX2J5X2tleSk7XG4rXHRcdGVyciA9IGhmc3BsdXNfYnJlY19yZWFkX2NhdChcdTAwMjZmZCwgXHUwMDI2ZW50cnkpO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdGdvdG8gb3V0O1xuIFxuLVx0XHRvZmYgPSBmZC5lbnRyeW9mZnNldCArXG4tXHRcdFx0b2Zmc2V0b2Yoc3RydWN0IGhmc3BsdXNfY2F0X3RocmVhZCwgbm9kZU5hbWUpO1xuLVx0XHRmZC5zZWFyY2hfa2V5LVx1MDAzZWNhdC5wYXJlbnQgPSBjcHVfdG9fYmUzMihkaXItXHUwMDNlaV9pbm8pO1xuLVx0XHRoZnNfYm5vZGVfcmVhZChmZC5ibm9kZSxcbi1cdFx0XHRcdTAwMjZmZC5zZWFyY2hfa2V5LVx1MDAzZWNhdC5uYW1lLmxlbmd0aCwgb2ZmLCAyKTtcbi1cdFx0bGVuID0gYmUxNl90b19jcHUoZmQuc2VhcmNoX2tleS1cdTAwM2VjYXQubmFtZS5sZW5ndGgpICogMjtcbi1cdFx0aGZzX2Jub2RlX3JlYWQoZmQuYm5vZGUsXG4tXHRcdFx0XHUwMDI2ZmQuc2VhcmNoX2tleS1cdTAwM2VjYXQubmFtZS51bmljb2RlLFxuLVx0XHRcdG9mZiArIDIsIGxlbik7XG4tXHRcdGZkLnNlYXJjaF9rZXktXHUwMDNla2V5X2xlbiA9IGNwdV90b19iZTE2KDYgKyBsZW4pO1xuK1x0XHRlbnRyeV90eXBlID0gYmUxNl90b19jcHUoZW50cnkudHlwZSk7XG4rXHRcdGlmICghaXNfaGZzcGx1c190aHJlYWRfdHlwZShlbnRyeV90eXBlKSkge1xuK1x0XHRcdHByX2VycihcImZvdW5kIGJhZCB0aHJlYWQgcmVjb3JkIGluIGNhdGFsb2dcXG5cIik7XG4rXHRcdFx0ZXJyID0gLUVJTztcbitcdFx0XHRnb3RvIG91dDtcbitcdFx0fVxuK1xuK1x0XHRpZiAoIWlzX2hmc3BsdXNfbmFtZV9sZW5ndGhfdmFsaWQoZW50cnkudGhyZWFkLm5vZGVOYW1lLmxlbmd0aCkpIHtcbitcdFx0XHRwcl9lcnIoXCJjYXRhbG9nIG5hbWUgbGVuZ3RoIGNvcnJ1cHRlZFxcblwiKTtcbitcdFx0XHRlcnIgPSAtRUlPO1xuK1x0XHRcdGdvdG8gb3V0O1xuK1x0XHR9XG4rXG4rXHRcdGhmc3BsdXNfY2F0X2J1aWxkX2tleV91bmkoZmQuc2VhcmNoX2tleSwgZGlyLVx1MDAzZWlfaW5vLFxuK1x0XHRcdFx0XHQgIFx1MDAyNmVudHJ5LnRocmVhZC5ub2RlTmFtZSk7XG4gXHR9IGVsc2Uge1xuIFx0XHRlcnIgPSBoZnNwbHVzX2NhdF9idWlsZF9rZXkoc2IsIGZkLnNlYXJjaF9rZXksIGRpci1cdTAwM2VpX2lubywgc3RyKTtcbiBcdFx0aWYgKHVubGlrZWx5KGVycikpXG5kaWZmIC0tZ2l0IGEvZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmggYi9mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaFxuaW5kZXggZWMwNGI4MmFkOTI3ODcuLmI5NTRiNDVhMTAwMzY5IDEwMDY0NFxuLS0tIGEvZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmhcbisrKyBiL2ZzL2hmc3BsdXMvaGZzcGx1c19mcy5oXG5AQCAtNTIxLDYgKzUyMSwxNyBAQCBzdGF0aWMgaW5saW5lIHUzMiBoZnNwbHVzX2NhdF90aHJlYWRfc2l6ZShjb25zdCBzdHJ1Y3QgaGZzcGx1c19jYXRfdGhyZWFkICp0aHJlYVxuIFx0ICAgICAgIGJlMTZfdG9fY3B1KHRocmVhZC1cdTAwM2Vub2RlTmFtZS5sZW5ndGgpICogc2l6ZW9mKGhmc3BsdXNfdW5pY2hyKTtcbiB9XG4gXG4rc3RhdGljIGlubGluZSBib29sIGlzX2hmc3BsdXNfdGhyZWFkX3R5cGUodTE2IGVudHJ5X3R5cGUpXG4re1xuK1x0cmV0dXJuIGVudHJ5X3R5cGUgPT0gSEZTUExVU19GT0xERVJfVEhSRUFEIHx8XG4rXHQgICAgICAgZW50cnlfdHlwZSA9PSBIRlNQTFVTX0ZJTEVfVEhSRUFEO1xuK31cbitcbitzdGF0aWMgaW5saW5lIGJvb2wgaXNfaGZzcGx1c19uYW1lX2xlbmd0aF92YWxpZChfX2JlMTYgbmFtZV9sZW5ndGgpXG4re1xuK1x0cmV0dXJuIGJlMTZfdG9fY3B1KG5hbWVfbGVuZ3RoKSBcdTAwM2M9IEhGU1BMVVNfTUFYX1NUUkxFTjtcbit9XG4rXG4gaW50IGhmc3BsdXNfYnJlY19yZWFkX2NhdChzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQsIGhmc3BsdXNfY2F0X2VudHJ5ICplbnRyeSk7XG4gXG4gLypcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDExOjE4OjAxLjk3MzI0MDk3N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzNjg2NDQwMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBIRlMrIEZpbGVzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBhbmQgaXQgc2VlbXMgbGlrZSB3ZSd2ZSBnb3Qgc29tZSBzaWduaWZpY2FudCBjaGFuZ2VzIHJvbGxpbmcgaW4gZm9yIHRoZSBIRlMrIGZpbGVzeXN0ZW0gZHJpdmVyLiBTcGVjaWZpY2FsbHksIHRoZSBtb2RpZmljYXRpb25zIGFyZSBmb2N1c2VkIG9uIGBmcy9oZnNwbHVzL2NhdGFsb2cuY2AgYW5kIGBmcy9oZnNwbHVzL2hmc3BsdXNfZnMuaGAuIFRoZSBjb3JlIG9mIHRoZSBhbHRlcmF0aW9uIGFwcGVhcnMgdG8gYmUgYXJvdW5kIHRoZSBmdW5jdGlvbnMgYGhmc3BsdXNfZmluZF9jYXRgIGFuZCBgaGZzcGx1c19kZWxldGVfY2F0YC5cblxuSXQgbG9va3MgbGlrZSB0aGUgZGV2ZWxvcGVycyBoYXZlIGludHJvZHVjZWQgdGhlc2UgbmV3IGhlbHBlciBmdW5jdGlvbnMsIGBpc19oZnNwbHVzX3RocmVhZF90eXBlYCBhbmQgYGlzX2hmc3BsdXNfbmFtZV9sZW5ndGhfdmFsaWRgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGxpa2VseSBmb3IgYWRkaW5nIHNvbWUgbXVjaC1uZWVkZWQgdmFsaWRhdGlvbi4gVGhleSdyZSBwcm9iYWJseSB0cnlpbmcgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIHBvdGVudGlhbCBjb3JydXB0aW9uIHdoZW4gZGVhbGluZyB3aXRoIG5hbWUgbGVuZ3Rocywgd2hpY2ggaXMgYSBzbWFydCBtb3ZlLiBJJ3ZlIHNlZW4gdGhvc2Uga2luZHMgb2YgYnVncyBiZWZvcmU7IHRoZXkgY2FuIGJlIG5hc3R5LlxuXG5GdXJ0aGVybW9yZSwgaW4gYGhmc3BsdXNfZGVsZXRlX2NhdGAsIHRoZXkndmUgcmVwbGFjZWQgdGhlIGRpcmVjdCB1c2Ugb2YgYGhmc19icmVjX2ZpbmRgIGFuZCBgaGZzX2Jub2RlX3JlYWRgIHdpdGggYGhmc3BsdXNfYnJlY19yZWFkX2NhdGAuIFRoYXQncyBhIGRlZmluaXRlIGNvZGUgY2xlYW51cCBhbmQgcHJvYmFibHkgYW4gYXR0ZW1wdCB0byBjZW50cmFsaXplIHRoZSBsb2dpYywgbWFraW5nIHRoZSBjb2RlIG1vcmUgbWFpbnRhaW5hYmxlIGFuZCBlYXNpZXIgdG8gYXVkaXQuIEFuZCBpbnN0ZWFkIG9mIG1hbnVhbGx5IGNvbnN0cnVjdGluZyB0aGUga2V5LCB0aGV5J3JlIG5vdyB1c2luZyBgaGZzcGx1c19jYXRfYnVpbGRfa2V5X3VuaWAuIEdvb2QsIGxlc3Mgcm9vbSBmb3IgZXJyb3IgdGhlcmUuIFRoaXMgaXMgYSBuaWNlIGZ1bmN0aW9uYWwgaW1wcm92ZW1lbnQuXG5cbkVzc2VudGlhbGx5LCB0aGlzIHBhdGNoIGlzIGFib3V0IGVuaGFuY2luZyByZWxpYWJpbGl0eSBhbmQgY2xlYW5pbmcgdXAgdGhlIGNvZGUgZm9yIHRoZSBIRlMrIGRyaXZlci4gSSdkIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBhY3R1YWwgY29kZSB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSwgYnV0IGJhc2VkIG9uIHRoaXMgc3VtbWFyeSwgaXQgc2VlbXMgbGlrZSBhIHNvbGlkIHNldCBvZiBjaGFuZ2VzLlxuXG5Ob3csIGxldCdzIGp1c3QgbWFrZSBzdXJlIEhGUysgaXMgZXZlbiBjb25maWd1cmVkLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgY29uZmlncyB3aXRoIGBncmVwcGVyYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk4MywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDExOjE4OjA4LjM0MTg4NzQ0NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjAwOTMxNjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEhGU1BMVVNfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaGZzcGx1cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2hmc3BsdXMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2hmc3BsdXMvS2NvbmZpZzoyOmNvbmZpZyBIRlNQTFVTX0ZTXFxuZnMvaGZzcGx1cy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkFwcGxlIEV4dGVuZGVkIEhGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMToxODowOC42MDE5ODgxNjlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjI4MjgyNzEzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6XG5cbioqUmVmbGVjdGluZyBvbiBSZWNlbnQgQ29kZSBDaGFuZ2VzKipcblxuT2theSwgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpbiBwbGF5IGlzIGBIRlNQTFVTX0ZTYC4gUmlnaHQsIGdvdCBpdC4gTm93LCBsZXQncyBtZW50YWxseSB3YWxrIHRocm91Z2ggdGhlIHJlY2VudCBtb2RpZmljYXRpb25zIHJlbGF0ZWQgdG8gdGhpcyBmaWxlc3lzdGVtLiBTcGVjaWZpY2FsbHksIEkndmUgZ290IHRvIGVuc3VyZSB0aGUgY2hhbmdlcyB0byBgaGZzcGx1c19maW5kX2NhdGAgYW5kIGBoZnNwbHVzX2RlbGV0ZV9jYXRgIGFyZSBwcm9wZXJseSBhY2NvdW50ZWQgZm9yIGluIHRoZSBvbmdvaW5nIHdvcmsuIFRob3NlIG5lZWQgdG8gYmUgZXhwbGljaXRseSBhZGRlZCB0byB0aGUgYEZvY3VzU3ltYm9sc2AgbGlzdCwgdGhhdCdzIGNydWNpYWwgZm9yIHRoZSB0b29sIEkgYW0gdXNpbmcuIEFsd2F5cyBlbnN1cmluZyB0aGF0IGNyaXRpY2FsIGNoYW5nZXMgYXJlIGZsYWdnZWQgcHJvcGVybHkgaXMgdml0YWwgZm9yIGRlYnVnZ2luZyBhbmQgdW5kZXJzdGFuZGluZyB0aGUgY29udGV4dC5cblxuQmVmb3JlIEkgZ28gZnVydGhlciwgbGV0IG1lIGp1c3QgcXVpY2tseSBydW4gYSBzYW5pdHkgY2hlY2suIExldCBtZSBkb3VibGUtY2hlY2sgaWYgdGhlcmUgbWlnaHQgYmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZmxhZ3MgdGhhdCBhcmUgcG90ZW50aWFsbHkgaW4gcGxheSBoZXJlLiBJIGRvbid0IHdhbnQgdG8gb3Zlcmxvb2sgYW55dGhpbmcgY3JpdGljYWwhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NDEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMToxODoyNC44ODQ4MTc1NDhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwNTI1Mjc1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSEZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2hmc3BsdXMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9oZnNwbHVzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9oZnNwbHVzL0tjb25maWc6Mjpjb25maWcgSEZTUExVU19GU1xcbmZzL2hmc3BsdXMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJBcHBsZSBFeHRlbmRlZCBIRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG4tLVxcbmZzL2hmc3BsdXMvS2NvbmZpZy0xNy1cXG5mcy9oZnNwbHVzL0tjb25maWc6MTg6Y29uZmlnIEhGU1BMVVNfS1VOSVRfVEVTVFxcbmZzL2hmc3BsdXMvS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIEhGUysgZmlsZXN5c3RlbVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMToxODoyNi43OTAwNzYwNjJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjAxODc5ODA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuXG5cbioqTmF2aWdhdGluZyB0aGUgSEZTKyBGaWxlc3lzdGVtIERyaXZlciBmb3IgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdGllcyoqXG5cbkFscmlnaHQsIG15IGZvY3VzIGlzIGRlZmluaXRlbHkgemVyb2luZyBpbiBvbiB0aGUgYEhGU1BMVVNfRlNgIGNvbmZpZ3VyYXRpb24uIEl0J3MgdGhlIHByaW1hcnkgcG9pbnQgb2YgZW50cnkgaGVyZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCdzIHNlZSBpZiB0aGUgZnVuY3Rpb25zIGBoZnNwbHVzX2RlbGV0ZV9jYXRgIGFuZCBgaGZzcGx1c19maW5kX2NhdGAgYXJlIHJlYWNoYWJsZS4gVGhlc2UgYXJlIGtleSBiZWNhdXNlIHRoZXkgYXJlIGNvbXBvbmVudHMgb2YgdGhlIEhGUysgZmlsZXN5c3RlbSBkcml2ZXIuIFRoYXQgZHJpdmVyIGlzIHZ1bG5lcmFibGUgdG8gZnV6emluZy4gSSBjYW4gZG8gc28gYnkgbW91bnRpbmcgYSBzcGVjaWZpY2FsbHkgY3JhZnRlZCBIRlMrIGltYWdlLiBUaGlzIGZlZWxzIGxpa2UgdGhlIHJpZ2h0IHBhdGggdG8gZXhwbG9yZS4gVG8gZG91YmxlIGNoZWNrIEknbGwgZXhwbG9yZSB0aGUgY2FsbGVycyBvZiBgaGZzcGx1c19kZWxldGVfY2F0YC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE2OSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDExOjE4OjI5Ljk5MTk1ODYwOVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDU5MjE3MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGZzcGx1c19kZWxldGVfY2F0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2hmc3BsdXMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2hmc3BsdXMvY2F0YWxvZy5jPTI1Mz1pbnQgaGZzcGx1c19jcmVhdGVfY2F0KHUzMiBjbmlkLCBzdHJ1Y3QgaW5vZGUgKmRpcixcXG4tLVxcbmZzL2hmc3BsdXMvY2F0YWxvZy5jLTMzMC1cXG5mcy9oZnNwbHVzL2NhdGFsb2cuYzozMzE6aW50IGhmc3BsdXNfZGVsZXRlX2NhdCh1MzIgY25pZCwgc3RydWN0IGlub2RlICpkaXIsIGNvbnN0IHN0cnVjdCBxc3RyICpzdHIpXFxuZnMvaGZzcGx1cy9jYXRhbG9nLmMtMzMyLXtcXG4tLVxcbmZzL2hmc3BsdXMvZGlyLmM9MzcwPXN0YXRpYyBpbnQgaGZzcGx1c191bmxpbmsoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcXG4tLVxcbmZzL2hmc3BsdXMvZGlyLmMtMzk5LVxcdH1cXG5mcy9oZnNwbHVzL2Rpci5jOjQwMDpcXHRyZXMgPSBoZnNwbHVzX2RlbGV0ZV9jYXQoY25pZCwgZGlyLCBcXHUwMDI2ZGVudHJ5LVxcdTAwM2VkX25hbWUpO1xcbmZzL2hmc3BsdXMvZGlyLmMtNDAxLVxcdGlmIChyZXMpXFxuLS1cXG5mcy9oZnNwbHVzL2Rpci5jLTQxMS1cXHRcXHRcXHRpZiAoIWF0b21pY19yZWFkKFxcdTAwMjZIRlNQTFVTX0koaW5vZGUpLVxcdTAwM2VvcGVuY250KSkge1xcbmZzL2hmc3BsdXMvZGlyLmM6NDEyOlxcdFxcdFxcdFxcdHJlcyA9IGhmc3BsdXNfZGVsZXRlX2NhdChpbm9kZS1cXHUwMDNlaV9pbm8sXFxuZnMvaGZzcGx1cy9kaXIuYy00MTMtXFx0XFx0XFx0XFx0XFx0XFx0XFx0IHNiaS1cXHUwMDNlaGlkZGVuX2RpcixcXG4tLVxcbmZzL2hmc3BsdXMvZGlyLmM9NDM5PXN0YXRpYyBpbnQgaGZzcGx1c19ybWRpcihzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxcbi0tXFxuZnMvaGZzcGx1cy9kaXIuYy00NDgtXFx0bXV0ZXhfbG9jayhcXHUwMDI2c2JpLVxcdTAwM2V2aF9tdXRleCk7XFxuZnMvaGZzcGx1cy9kaXIuYzo0NDk6XFx0cmVzID0gaGZzcGx1c19kZWxldGVfY2F0KGlub2RlLVxcdTAwM2VpX2lubywgZGlyLCBcXHUwMDI2ZGVudHJ5LVxcdTAwM2VkX25hbWUpO1xcbmZzL2hmc3BsdXMvZGlyLmMtNDUwLVxcdGlmIChyZXMpXFxuLS1cXG5mcy9oZnNwbHVzL2Rpci5jPTQ2Mz1zdGF0aWMgaW50IGhmc3BsdXNfc3ltbGluayhzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICpkaXIsXFxuLS1cXG5mcy9oZnNwbHVzL2Rpci5jLTQ5MC1cXHRcXHQvKiBUcnkgdG8gZGVsZXRlIGFueXdheSB3aXRob3V0IGVycm9yIGFuYWx5c2lzLiAqL1xcbmZzL2hmc3BsdXMvZGlyLmM6NDkxOlxcdFxcdGhmc3BsdXNfZGVsZXRlX2NhdChpbm9kZS1cXHUwMDNlaV9pbm8sIGRpciwgXFx1MDAyNmRlbnRyeS1cXHUwMDNlZF9uYW1lKTtcXG5mcy9oZnNwbHVzL2Rpci5jLTQ5Mi1cXHRcXHRnb3RvIG91dF9lcnI7XFxuLS1cXG5mcy9oZnNwbHVzL2Rpci5jPTUxND1zdGF0aWMgaW50IGhmc3BsdXNfbWtub2Qoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqZGlyLFxcbi0tXFxuZnMvaGZzcGx1cy9kaXIuYy01NDAtXFx0XFx0LyogVHJ5IHRvIGRlbGV0ZSBhbnl3YXkgd2l0aG91dCBlcnJvciBhbmFseXNpcy4gKi9cXG5mcy9oZnNwbHVzL2Rpci5jOjU0MTpcXHRcXHRoZnNwbHVzX2RlbGV0ZV9jYXQoaW5vZGUtXFx1MDAzZWlfaW5vLCBkaXIsIFxcdTAwMjZkZW50cnktXFx1MDAzZWRfbmFtZSk7XFxuZnMvaGZzcGx1cy9kaXIuYy01NDItXFx0XFx0Z290byBmYWlsZWRfbWtub2Q7XFxuLS1cXG5mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaD00MjM9aW50IGhmc3BsdXNfY3JlYXRlX2NhdCh1MzIgY25pZCwgc3RydWN0IGlub2RlICpkaXIsIGNvbnN0IHN0cnVjdCBxc3RyICpzdHIsXFxuZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmgtNDI0LVxcdFxcdCAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlKTtcXG5mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaDo0MjU6aW50IGhmc3BsdXNfZGVsZXRlX2NhdCh1MzIgY25pZCwgc3RydWN0IGlub2RlICpkaXIsIGNvbnN0IHN0cnVjdCBxc3RyICpzdHIpO1xcbmZzL2hmc3BsdXMvaGZzcGx1c19mcy5oLTQyNi1pbnQgaGZzcGx1c19yZW5hbWVfY2F0KHUzMiBjbmlkLCBzdHJ1Y3QgaW5vZGUgKnNyY19kaXIsIGNvbnN0IHN0cnVjdCBxc3RyICpzcmNfbmFtZSxcXG4tLVxcbmZzL2hmc3BsdXMvaW5vZGUuYz0yODE9c3RhdGljIGludCBoZnNwbHVzX2ZpbGVfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4tLVxcbmZzL2hmc3BsdXMvaW5vZGUuYy0yOTAtXFx0XFx0aWYgKGlub2RlLVxcdTAwM2VpX2ZsYWdzIFxcdTAwMjYgU19ERUFEKSB7XFxuZnMvaGZzcGx1cy9pbm9kZS5jOjI5MTpcXHRcXHRcXHRoZnNwbHVzX2RlbGV0ZV9jYXQoaW5vZGUtXFx1MDAzZWlfaW5vLFxcbmZzL2hmc3BsdXMvaW5vZGUuYy0yOTItXFx0XFx0XFx0XFx0XFx0ICAgSEZTUExVU19TQihzYiktXFx1MDAzZWhpZGRlbl9kaXIsIE5VTEwpO1xcbi0tXFxuZnMvaGZzcGx1cy9zdXBlci5jPTQ1Mj1zdGF0aWMgaW50IGhmc3BsdXNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuLS1cXG5mcy9oZnNwbHVzL3N1cGVyLmMtNjQzLVxcdFxcdFxcdFxcdCAqL1xcbmZzL2hmc3BsdXMvc3VwZXIuYzo2NDQ6XFx0XFx0XFx0XFx0aGZzcGx1c19kZWxldGVfY2F0KHNiaS1cXHUwMDNlaGlkZGVuX2Rpci1cXHUwMDNlaV9pbm8sXFxuZnMvaGZzcGx1cy9zdXBlci5jLTY0NS1cXHRcXHRcXHRcXHRcXHRcXHRcXHRyb290LCBcXHUwMDI2c3RyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTE6MTg6MzAuNzk3ODkwMDRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDE0MTc0NTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgSSBzZWUgaXQ6XG5cbioqUmVhY2hpbmcgYW5kIFRlc3RpbmcgYGhmc3BsdXNfZGVsZXRlX2NhdGAqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMsIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgYGhmc3BsdXNfZGVsZXRlX2NhdGAgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uIGluIHRoZSBIRlMrIGZpbGVzeXN0ZW0gaW1wbGVtZW50YXRpb24uIEl0J3MgY2FsbGVkIGZyb20gYSBidW5jaCBvZiBrZXkgb3BlcmF0aW9uczogYGhmc3BsdXNfdW5saW5rYCwgYGhmc3BsdXNfcm1kaXJgLCBgaGZzcGx1c19zeW1saW5rYCwgYGhmc3BsdXNfbWtub2RgLCBgaGZzcGx1c19maWxlX3JlbGVhc2VgLCBhbmQgZXZlbiBkdXJpbmcgc3VwZXJibG9jayBpbml0aWFsaXphdGlvbiB2aWEgYGhmc3BsdXNfZmlsbF9zdXBlcmAuIFRoYXQncyBhIHN0cm9uZyBpbmRpY2F0b3Igb2YgaXRzIGltcG9ydGFuY2Ug4oCTIGl0J3MgZnVuZGFtZW50YWwgdG8gaG93IGZpbGVzIGFuZCBkaXJlY3RvcmllcyBhcmUgbWFuYWdlZCwgYW5kIGhvdyB0aGUgdm9sdW1lIGl0c2VsZiBpcyBzZXQgdXAuIFRoZSBmYWN0IHRoYXQgaXQncyBjYWxsZWQgZnJvbSBzbyBtYW55IHBsYWNlcyBzdWdnZXN0cyBhIGNvbXByZWhlbnNpdmUgYW5kIHBvc3NpYmx5IGNvbXBsZXggcm9sZSBpbiBtYWludGFpbmluZyB0aGUgY2F0YWxvZy4gVGhpcyBhbHNvIG1lYW5zIGl0J3MgKmRlZmluaXRlbHkqIHJlYWNoYWJsZTsgdGhlcmUncyBubyBxdWVzdGlvbiBhYm91dCB3aGV0aGVyIGl0IGdldHMgdXNlZC4gQW5kLCBpZiBpdCdzIHJlYWNoYWJsZSwgaXQncyB0ZXN0YWJsZS4gSSBjYW4gY3JhZnQgdGVzdCBjYXNlcyB0byBleGVyY2lzZSBpdCB1bmRlciB2YXJpb3VzIGNvbmRpdGlvbnMsIHdoaWNoIGlzIGVzc2VudGlhbCBmb3IgZW5zdXJpbmcgaXRzIGNvcnJlY3RuZXNzIGFuZCByb2J1c3RuZXNzLlxuXG5Ob3csIEkgbmVlZCB0byBsb29rIGludG8gaXRzIGNhbGxlcnMgZnVydGhlci4gVW5kZXJzdGFuZGluZyB3aGF0IGNhbGxzIGBoZnNwbHVzX2ZpbmRfY2F0YCB3aWxsIHByb3ZpZGUgaW1wb3J0YW50IGNvbnRleHQgYW5kIGFuIHVuZGVyc3RhbmRpbmcgb2YgaXRzIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU3NywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDExOjE4OjM0LjgxMjA2ODUzOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUzMzE1NTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhmc3BsdXNfZmluZF9jYXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaGZzcGx1cy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaGZzcGx1cy9jYXRhbG9nLmM9MTc2PXN0YXRpYyBpbnQgaGZzcGx1c19maWxsX2NhdF90aHJlYWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG4tLVxcbmZzL2hmc3BsdXMvY2F0YWxvZy5jLTE5My0vKiBUcnkgdG8gZ2V0IGEgY2F0YWxvZyBlbnRyeSBmb3IgZ2l2ZW4gY2F0YWxvZyBpZCAqL1xcbmZzL2hmc3BsdXMvY2F0YWxvZy5jOjE5NDppbnQgaGZzcGx1c19maW5kX2NhdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcXG5mcy9oZnNwbHVzL2NhdGFsb2cuYy0xOTUtXFx0XFx0ICAgICBzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQpXFxuLS1cXG5mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaD00MjA9dm9pZCBoZnNwbHVzX2NhdF9zZXRfcGVybXMoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGhmc3BsdXNfcGVybSAqcGVybXMpO1xcbmZzL2hmc3BsdXMvaGZzcGx1c19mcy5oOjQyMTppbnQgaGZzcGx1c19maW5kX2NhdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcXG5mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaC00MjItXFx0XFx0ICAgICBzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQpO1xcbi0tXFxuZnMvaGZzcGx1cy9pbm9kZS5jPTY3Nz1pbnQgaGZzcGx1c19jYXRfd3JpdGVfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSlcXG4tLVxcbmZzL2hmc3BsdXMvaW5vZGUuYy02OTYtXFxuZnMvaGZzcGx1cy9pbm9kZS5jOjY5NzpcXHRpZiAoaGZzcGx1c19maW5kX2NhdChtYWluX2lub2RlLVxcdTAwM2VpX3NiLCBtYWluX2lub2RlLVxcdTAwM2VpX2lubywgXFx1MDAyNmZkKSlcXG5mcy9oZnNwbHVzL2lub2RlLmMtNjk4LVxcdFxcdC8qIHBhbmljPyAqL1xcbi0tXFxuZnMvaGZzcGx1cy9zdXBlci5jPTY1PXN0cnVjdCBpbm9kZSAqaGZzcGx1c19pZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vKVxcbi0tXFxuZnMvaGZzcGx1cy9zdXBlci5jLTk5LVxcdFxcdGlmICghZXJyKSB7XFxuZnMvaGZzcGx1cy9zdXBlci5jOjEwMDpcXHRcXHRcXHRlcnIgPSBoZnNwbHVzX2ZpbmRfY2F0KGlub2RlLVxcdTAwM2VpX3NiLCBpbm9kZS1cXHUwMDNlaV9pbm8sIFxcdTAwMjZmZCk7XFxuZnMvaGZzcGx1cy9zdXBlci5jLTEwMS1cXHRcXHRcXHRpZiAoIWVycilcXG4tLVxcbmZzL2hmc3BsdXMveGF0dHIuYz0zNTE9aW50IF9faGZzcGx1c19zZXR4YXR0cihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCBjaGFyICpuYW1lLFxcbi0tXFxuZnMvaGZzcGx1cy94YXR0ci5jLTM3Ni1cXG5mcy9oZnNwbHVzL3hhdHRyLmM6Mzc3OlxcdGVyciA9IGhmc3BsdXNfZmluZF9jYXQoaW5vZGUtXFx1MDAzZWlfc2IsIGlub2RlLVxcdTAwM2VpX2lubywgXFx1MDAyNmNhdF9mZCk7XFxuZnMvaGZzcGx1cy94YXR0ci5jLTM3OC1cXHRpZiAoZXJyKSB7XFxuLS1cXG5mcy9oZnNwbHVzL3hhdHRyLmM9NTYyPXN0YXRpYyBzc2l6ZV90IGhmc3BsdXNfZ2V0eGF0dHJfZmluZGVyX2luZm8oc3RydWN0IGlub2RlICppbm9kZSxcXG4tLVxcbmZzL2hmc3BsdXMveGF0dHIuYy01NzktXFx0XFx0fVxcbmZzL2hmc3BsdXMveGF0dHIuYzo1ODA6XFx0XFx0cmVzID0gaGZzcGx1c19maW5kX2NhdChpbm9kZS1cXHUwMDNlaV9zYiwgaW5vZGUtXFx1MDAzZWlfaW5vLCBcXHUwMDI2ZmQpO1xcbmZzL2hmc3BsdXMveGF0dHIuYy01ODEtXFx0XFx0aWYgKHJlcylcXG4tLVxcbmZzL2hmc3BsdXMveGF0dHIuYz03MzQ9c3RhdGljIHNzaXplX3QgaGZzcGx1c19saXN0eGF0dHJfZmluZGVyX2luZm8oc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxcbi0tXFxuZnMvaGZzcGx1cy94YXR0ci5jLTc1MS1cXG5mcy9oZnNwbHVzL3hhdHRyLmM6NzUyOlxcdHJlcyA9IGhmc3BsdXNfZmluZF9jYXQoaW5vZGUtXFx1MDAzZWlfc2IsIGlub2RlLVxcdTAwM2VpX2lubywgXFx1MDAyNmZkKTtcXG5mcy9oZnNwbHVzL3hhdHRyLmMtNzUzLVxcdGlmIChyZXMpXFxuLS1cXG5mcy9oZnNwbHVzL3hhdHRyLmM9OTA2PXN0YXRpYyBpbnQgaGZzcGx1c19yZW1vdmV4YXR0cihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCBjaGFyICpuYW1lKVxcbi0tXFxuZnMvaGZzcGx1cy94YXR0ci5jLTkyOS1cXG5mcy9oZnNwbHVzL3hhdHRyLmM6OTMwOlxcdGVyciA9IGhmc3BsdXNfZmluZF9jYXQoaW5vZGUtXFx1MDAzZWlfc2IsIGlub2RlLVxcdTAwM2VpX2lubywgXFx1MDAyNmNhdF9mZCk7XFxuZnMvaGZzcGx1cy94YXR0ci5jLTkzMS1cXHRpZiAoZXJyKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDExOjE4OjM1LjA2NTM5MDgwM1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODQwMjQyOTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEhGUysgQ29kZSoqXG5cbk9rYXksIHNvIGBoZnNwbHVzX2ZpbmRfY2F0YCBpcyBjbGVhcmx5IGEga2V5IGZ1bmN0aW9uLiBJJ20gc2VlaW5nIGl0J3MgY2FsbGVkIGZyb20gc2V2ZXJhbCBjcml0aWNhbCBwb2ludHMgaW4gdGhlIEhGUysgZmlsZXN5c3RlbSBpbXBsZW1lbnRhdGlvbjogYGhmc3BsdXNfY2F0X3dyaXRlX2lub2RlYCwgYGhmc3BsdXNfaWdldGAsIGBfX2hmc3BsdXNfc2V0eGF0dHJgLCBhcyB3ZWxsIGFzIHRob3NlIEZpbmRlciBpbmZvIHhhdHRyIGhhbmRsZXJzLiBUaGUgcmVhY2hhYmlsaXR5IGxvb2tzIGdvb2QsIHdoaWNoIG1lYW5zIGl0J3MgZGVmaW5pdGVseSBhIHZpYWJsZSB0YXJnZXQgZm9yIGluLWRlcHRoIGFuYWx5c2lzLlxuXG5HaXZlbiBpdHMgY2VudHJhbGl0eSBhbmQgdGhlIGZhY3QgdGhlIHBhdGNoIGFwcGVhcnMgZnVuY3Rpb25hbCwgSSdtIGNvbmZpZGVudCB0aGF0IHRoaXMgaXMgYSB2YWx1YWJsZSBhcmVhIHRvIGZvY3VzIG9uLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRoYXQgaXQncyBwcmltZSBtYXRlcmlhbCBmb3IgZnV6emluZy4gSSdsbCBmbGFnIHRoYXQgd2l0aCBgV29ydGhGdXp6aW5nPXRydWVgLlxuXG5Gb3IgdGhlIGNvbmZpZ3VyYXRpb24sIEknbSBnb2luZyB0byBzZXQgYEVuYWJsZUNvbmZpZ3NgIHRvIGBIRlNQTFVTX0ZTYC4gQW5kIGZvciB0aGUgYEZvY3VzU3ltYm9sc2AsIEknbGwgcHJpb3JpdGl6ZSBgaGZzcGx1c19maW5kX2NhdGAsIGFsb25nIHdpdGggaXRzIGNvbXBsZW1lbnQsIGBoZnNwbHVzX2RlbGV0ZV9jYXRgLiBUaGVzZSBhcmUgdGhlIGNvcmUgcm91dGluZXMgdG8gcmVhbGx5IGdldCBhZnRlci5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgZG91YmxlLWNoZWNrIGZvciBhbnkgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBtaWdodCBhbHNvIGJlIHJlbGV2YW50LiBUaGluZ3MgbGlrZSBgQ09ORklHX0hGU1BMVVNfRlNfUE9TSVhfQUNMYCwgb3IgYW55IG90aGVyIHNpbWlsYXIgb3B0aW9ucyB0aGF0IGNvdWxkIGFmZmVjdCB0aGUgYmVoYXZpb3Igb2YgYGhmc3BsdXNfZmluZF9jYXRgIHNob3VsZCBiZSBpbnZlc3RpZ2F0ZWQgdG8gZW5zdXJlIGEgY29tcHJlaGVuc2l2ZSBmdXp6aW5nIHNldHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTUwLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDExOjE4OjM5LjkwNTYzNjM0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDY0MzA4NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEhGU1BMVVNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaGZzcGx1cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2hmc3BsdXMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2hmc3BsdXMvS2NvbmZpZzoyOmNvbmZpZyBIRlNQTFVTX0ZTXFxuZnMvaGZzcGx1cy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkFwcGxlIEV4dGVuZGVkIEhGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvaGZzcGx1cy9LY29uZmlnLTE3LVxcbmZzL2hmc3BsdXMvS2NvbmZpZzoxODpjb25maWcgSEZTUExVU19LVU5JVF9URVNUXFxuZnMvaGZzcGx1cy9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgSEZTKyBmaWxlc3lzdGVtXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDExOjE4OjQwLjUxMjA3MzYxMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTk0ODQ2Nzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlIGZvciBIRlMrKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGZpbGVzeXN0ZW0gY29uZmlndXJhdGlvbnMsIHNwZWNpZmljYWxseSBIRlMrLiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IHRoZXJlIHdlcmVuJ3QgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbiB0aGUgYGZzL2hmc3BsdXNgIGRpcmVjdG9yeS4gQnV0LCBoYW5nIG9uIGEgc2Vjb25kLi4uc29tZXRoaW5nIG5hZ2dlZCBhdCB0aGUgYmFjayBvZiBteSBtaW5kLiBXaGF0IGFib3V0IGBmcy9oZnNwbHVzL0tjb25maWdgPyBJdCdzIHRoZSBzdGFuZGFyZCBwbGFjZSBmb3Iga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYSBmaWxlc3lzdGVtLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2suIEJlc3QgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUsIHNvIEknbGwgZ28gYWhlYWQgYW5kIHRha2UgYSBsb29rIGF0IGl0LiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLiBJJ2xsIG5lZWQgdG8gcmVhZCBpdCB0byBnZXQgdGhlIGZ1bGwgc3RvcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2MTMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMToxODo0NC41MDY5MjUwN1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzg0NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvaGZzcGx1cy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIEhGU1BMVVNfRlNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJBcHBsZSBFeHRlbmRlZCBIRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gQkxPQ0tcXG4gICA1OlxcdFxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbiAgIDY6XFx0XFx0c2VsZWN0IE5MU1xcbiAgIDc6XFx0XFx0c2VsZWN0IE5MU19VVEY4XFxuICAgODpcXHRcXHRzZWxlY3QgTEVHQUNZX0RJUkVDVF9JT1xcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgeW91IHdpbGwgYmUgYWJsZSB0byBtb3VudCBleHRlbmRlZCBmb3JtYXRcXG4gIDExOlxcdFxcdCAgTWFjaW50b3NoLWZvcm1hdHRlZCBoYXJkIGRyaXZlIHBhcnRpdGlvbnMgd2l0aCBmdWxsIHJlYWQtd3JpdGUgYWNjZXNzLlxcbiAgMTI6XFx0XFxuICAxMzpcXHRcXHQgIFRoaXMgZmlsZSBzeXN0ZW0gaXMgb2Z0ZW4gY2FsbGVkIEhGUysgYW5kIHdhcyBpbnRyb2R1Y2VkIHdpdGhcXG4gIDE0OlxcdFxcdCAgTWFjT1MgOC4gSXQgaW5jbHVkZXMgYWxsIE1hYyBzcGVjaWZpYyBmaWxlc3lzdGVtIGRhdGEgc3VjaCBhc1xcbiAgMTU6XFx0XFx0ICBkYXRhIGZvcmtzIGFuZCBjcmVhdG9yIGNvZGVzLCBidXQgaXQgYWxzbyBoYXMgc2V2ZXJhbCBVTklYXFxuICAxNjpcXHRcXHQgIHN0eWxlIGZlYXR1cmVzIHN1Y2ggYXMgZmlsZSBvd25lcnNoaXAgYW5kIHBlcm1pc3Npb25zLlxcbiAgMTc6XFx0XFxuICAxODpcXHRjb25maWcgSEZTUExVU19LVU5JVF9URVNUXFxuICAxOTpcXHRcXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIEhGUysgZmlsZXN5c3RlbVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbiAgMjA6XFx0XFx0ZGVwZW5kcyBvbiBIRlNQTFVTX0ZTIFxcdTAwMjZcXHUwMDI2IEtVTklUXFxuICAyMTpcXHRcXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcbiAgMjI6XFx0XFx0aGVscFxcbiAgMjM6XFx0XFx0ICBUaGlzIGJ1aWxkcyBLVW5pdCB0ZXN0cyBmb3IgdGhlIEhGUysgZmlsZXN5c3RlbS5cXG4gIDI0OlxcdFxcbiAgMjU6XFx0XFx0ICBLVW5pdCB0ZXN0cyBydW4gZHVyaW5nIGJvb3QgYW5kIG91dHB1dCB0aGUgcmVzdWx0cyB0byB0aGUgZGVidWdcXG4gIDI2OlxcdFxcdCAgbG9nIGluIFRBUCBmb3JtYXQgKGh0dHBzOi8vdGVzdGFueXRoaW5nLm9yZy8pLiBPbmx5IHVzZWZ1bCBmb3JcXG4gIDI3OlxcdFxcdCAga2VybmVsIGRldnMgcnVubmluZyBLVW5pdCB0ZXN0IGhhcm5lc3MgYW5kIGFyZSBub3QgZm9yIGluY2x1c2lvblxcbiAgMjg6XFx0XFx0ICBpbnRvIGEgcHJvZHVjdGlvbiBidWlsZC5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBLVW5pdCBhbmQgdW5pdCB0ZXN0cyBpbiBnZW5lcmFsIHBsZWFzZVxcbiAgMzE6XFx0XFx0ICByZWZlciB0byB0aGUgS1VuaXQgZG9jdW1lbnRhdGlvbiBpbiBEb2N1bWVudGF0aW9uL2Rldi10b29scy9rdW5pdC8uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDExOjE4OjQ0LjUwNzEwNjI0MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjM3MzA5NDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBIRlMrIEZpbGVzeXN0ZW0gU3ltYm9scyBmb3IgRm9jdXNTeW1ib2xzKipcblxuT2theSwgc28gaXQgbG9va3MgbGlrZSBgSEZTUExVU19GU2AgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiB3ZSBuZWVkIHRvIGZvY3VzIG9uLiBUaGF0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIE5vdywgSSBzaG91bGQgbWFrZSBzdXJlIHRob3NlIGNhdGFsb2cgZnVuY3Rpb25zLCBgaGZzcGx1c19kZWxldGVfY2F0YCBhbmQgYGhmc3BsdXNfZmluZF9jYXRgLCBhcmUgYXBwcm9wcmlhdGVseSBleHBvc2VkLiBMZXQncyBzZWUuLi4gVGhleSdyZSBib3RoIGluIGBmcy9oZnNwbHVzL2NhdGFsb2cuY2AsIGFuZCBpdCBhcHBlYXJzIHRoZXkncmUgZXhwb3J0ZWQgdG8gb3RoZXIgbW9kdWxlcyB3aXRoaW4gYGZzL2hmc3BsdXMvYCB2aWEgYGhmc3BsdXNfZnMuaGAuIFRoYXQncyBwcmVjaXNlbHkgd2hhdCBJIHdhcyBob3BpbmcgdG8gZmluZC5cblxuRXhjZWxsZW50LCBgaGZzcGx1c19kZWxldGVfY2F0YCBhbmQgYGhmc3BsdXNfZmluZF9jYXRgIGxvb2sgbGlrZSBwcmltZSB0YXJnZXRzIGZvciBgRm9jdXNTeW1ib2xzYC4gVGhhdCBpcyBleGFjdGx5IHdoYXQgSSBuZWVkLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0J3MgZG91YmxlLWNoZWNrOyBgSEZTUExVU19GU2AgaXRzZWxmIGlzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gZWxlbWVudC4gWWVzLCB0aGF0IGlzIGNvcnJlY3QsIHNvIGV2ZXJ5dGhpbmcgY2hlY2tzIG91dC5cblxuT2theSwgdGhhdCBjb25maXJtcyB3aGF0IEkgbmVlZGVkLiBJIGFtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODMxMSwiT3V0cHV0VG9rZW5zIjoxMjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMToxODo0OS43NDQ0MTg4NzlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODk4MDAzMDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhGU1BMVVNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoZnNwbHVzX2ZpbmRfY2F0XCIsXG4gICAgXCJoZnNwbHVzX2RlbGV0ZV9jYXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGNhdGFsb2cgb3BlcmF0aW9ucyBpbiB0aGUgSEZTKyBmaWxlc3lzdGVtIGRyaXZlciAoaGZzcGx1c19maW5kX2NhdCBhbmQgaGZzcGx1c19kZWxldGVfY2F0KSBieSBhZGRpbmcgdmFsaWRhdGlvbiBmb3IgdGhyZWFkIHJlY29yZCB0eXBlcyBhbmQgbmFtZSBsZW5ndGhzLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB3aGVuIG1vdW50aW5nIGFuZCBpbnRlcmFjdGluZyB3aXRoIEhGUysgZmlsZXN5c3RlbSBpbWFnZXMsIG1ha2luZyB0aGVtIHN1aXRhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhGU1BMVVNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoZnNwbHVzX2ZpbmRfY2F0XCIsXG4gICAgXCJoZnNwbHVzX2RlbGV0ZV9jYXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGNhdGFsb2cgb3BlcmF0aW9ucyBpbiB0aGUgSEZTKyBmaWxlc3lzdGVtIGRyaXZlciAoaGZzcGx1c19maW5kX2NhdCBhbmQgaGZzcGx1c19kZWxldGVfY2F0KSBieSBhZGRpbmcgdmFsaWRhdGlvbiBmb3IgdGhyZWFkIHJlY29yZCB0eXBlcyBhbmQgbmFtZSBsZW5ndGhzLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB3aGVuIG1vdW50aW5nIGFuZCBpbnRlcmFjdGluZyB3aXRoIEhGUysgZmlsZXN5c3RlbSBpbWFnZXMsIG1ha2luZyB0aGVtIHN1aXRhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowl6qnp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-01 11:04:10 +0000 UTC FinishedAt: 2026-07-01 11:18:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "665159e246749578d4e4bfe106ee3b74edcdab18", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFSPLUS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "665159e246749578d4e4bfe106ee3b74edcdab18", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "HFSPLUS_FS" ], "series_id": "c5f13fc5-5ca2-4b63-933e-931d463c74b8" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "hfsplus_find_cat", "hfsplus_delete_cat" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDExOjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU1BMVVNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoZnNwbHVzX2ZpbmRfY2F0JiMzNDssCiAgICAmIzM0O2hmc3BsdXNfZGVsZXRlX2NhdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGNhdGFsb2cgb3BlcmF0aW9ucyBpbiB0aGUgSEZTJiM0MzsgZmlsZXN5c3RlbSBkcml2ZXIgKGhmc3BsdXNfZmluZF9jYXQgYW5kIGhmc3BsdXNfZGVsZXRlX2NhdCkgYnkgYWRkaW5nIHZhbGlkYXRpb24gZm9yIHRocmVhZCByZWNvcmQgdHlwZXMgYW5kIG5hbWUgbGVuZ3Rocy4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgd2hlbiBtb3VudGluZyBhbmQgaW50ZXJhY3Rpbmcgd2l0aCBIRlMmIzQzOyBmaWxlc3lzdGVtIGltYWdlcywgbWFraW5nIHRoZW0gc3VpdGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTE6MTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzYjQyZTQzM2QwNGU5MGIyMDA5Y2JkYTQyNzZkNjFlMzQ4ZDAyZTEyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMSAxMToxNzo1OSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9oZnNwbHVzL2NhdGFsb2cuYyBiL2ZzL2hmc3BsdXMvY2F0YWxvZy5jXG5pbmRleCA3NzZjZTM2Y2YwNzZiNC4uYzU3YzNiYmI4MTQzNTQgMTAwNjQ0XG4tLS0gYS9mcy9oZnNwbHVzL2NhdGFsb2cuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzcGx1cy9jYXRhbG9nLmNcbkBAIC0xOTYsMjAgJiM0MzsxOTYsMjAgQEAgaW50IGhmc3BsdXNfZmluZF9jYXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsXG4ge1xuIFx0aGZzcGx1c19jYXRfZW50cnkgdG1wID0gezB9O1xuIFx0aW50IGVycjtcbi1cdHUxNiB0eXBlO1xuJiM0MztcdHUxNiBlbnRyeV90eXBlO1xuIFxuIFx0aGZzcGx1c19jYXRfYnVpbGRfa2V5X3dpdGhfY25pZChzYiwgZmQtXHUwMDNlc2VhcmNoX2tleSwgY25pZCk7XG4gXHRlcnIgPSBoZnNwbHVzX2JyZWNfcmVhZF9jYXQoZmQsIFx1MDAyNnRtcCk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuIFxuLVx0dHlwZSA9IGJlMTZfdG9fY3B1KHRtcC50eXBlKTtcbi1cdGlmICh0eXBlICE9IEhGU1BMVVNfRk9MREVSX1RIUkVBRCBcdTAwMjZcdTAwMjYgdHlwZSAhPSBIRlNQTFVTX0ZJTEVfVEhSRUFEKSB7XG4mIzQzO1x0ZW50cnlfdHlwZSA9IGJlMTZfdG9fY3B1KHRtcC50eXBlKTtcbiYjNDM7XHRpZiAoIWlzX2hmc3BsdXNfdGhyZWFkX3R5cGUoZW50cnlfdHlwZSkpIHtcbiBcdFx0cHJfZXJyKFwmIzM0O2ZvdW5kIGJhZCB0aHJlYWQgcmVjb3JkIGluIGNhdGFsb2dcXG5cJiMzNDspO1xuIFx0XHRyZXR1cm4gLUVJTztcbiBcdH1cbiBcbi1cdGlmIChiZTE2X3RvX2NwdSh0bXAudGhyZWFkLm5vZGVOYW1lLmxlbmd0aCkgXHUwMDNlIDI1NSkge1xuJiM0MztcdGlmICghaXNfaGZzcGx1c19uYW1lX2xlbmd0aF92YWxpZCh0bXAudGhyZWFkLm5vZGVOYW1lLmxlbmd0aCkpIHtcbiBcdFx0cHJfZXJyKFwmIzM0O2NhdGFsb2cgbmFtZSBsZW5ndGggY29ycnVwdGVkXFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC1FSU87XG4gXHR9XG5AQCAtMzUwLDIzICYjNDM7MzUwLDI5IEBAIGludCBoZnNwbHVzX2RlbGV0ZV9jYXQodTMyIGNuaWQsIHN0cnVjdCBpbm9kZSAqZGlyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqc3RyKVxuIFx0XHRnb3RvIG91dDtcbiBcbiBcdGlmICghc3RyKSB7XG4tXHRcdGludCBsZW47XG4mIzQzO1x0XHRoZnNwbHVzX2NhdF9lbnRyeSBlbnRyeSA9IHswfTtcbiYjNDM7XHRcdHUxNiBlbnRyeV90eXBlO1xuIFxuIFx0XHRoZnNwbHVzX2NhdF9idWlsZF9rZXlfd2l0aF9jbmlkKHNiLCBmZC5zZWFyY2hfa2V5LCBjbmlkKTtcbi1cdFx0ZXJyID0gaGZzX2JyZWNfZmluZChcdTAwMjZmZCwgaGZzX2ZpbmRfcmVjX2J5X2tleSk7XG4mIzQzO1x0XHRlcnIgPSBoZnNwbHVzX2JyZWNfcmVhZF9jYXQoXHUwMDI2ZmQsIFx1MDAyNmVudHJ5KTtcbiBcdFx0aWYgKGVycilcbiBcdFx0XHRnb3RvIG91dDtcbiBcbi1cdFx0b2ZmID0gZmQuZW50cnlvZmZzZXQgJiM0Mztcbi1cdFx0XHRvZmZzZXRvZihzdHJ1Y3QgaGZzcGx1c19jYXRfdGhyZWFkLCBub2RlTmFtZSk7XG4tXHRcdGZkLnNlYXJjaF9rZXktXHUwMDNlY2F0LnBhcmVudCA9IGNwdV90b19iZTMyKGRpci1cdTAwM2VpX2lubyk7XG4tXHRcdGhmc19ibm9kZV9yZWFkKGZkLmJub2RlLFxuLVx0XHRcdFx1MDAyNmZkLnNlYXJjaF9rZXktXHUwMDNlY2F0Lm5hbWUubGVuZ3RoLCBvZmYsIDIpO1xuLVx0XHRsZW4gPSBiZTE2X3RvX2NwdShmZC5zZWFyY2hfa2V5LVx1MDAzZWNhdC5uYW1lLmxlbmd0aCkgKiAyO1xuLVx0XHRoZnNfYm5vZGVfcmVhZChmZC5ibm9kZSxcbi1cdFx0XHRcdTAwMjZmZC5zZWFyY2hfa2V5LVx1MDAzZWNhdC5uYW1lLnVuaWNvZGUsXG4tXHRcdFx0b2ZmICYjNDM7IDIsIGxlbik7XG4tXHRcdGZkLnNlYXJjaF9rZXktXHUwMDNla2V5X2xlbiA9IGNwdV90b19iZTE2KDYgJiM0MzsgbGVuKTtcbiYjNDM7XHRcdGVudHJ5X3R5cGUgPSBiZTE2X3RvX2NwdShlbnRyeS50eXBlKTtcbiYjNDM7XHRcdGlmICghaXNfaGZzcGx1c190aHJlYWRfdHlwZShlbnRyeV90eXBlKSkge1xuJiM0MztcdFx0XHRwcl9lcnIoXCYjMzQ7Zm91bmQgYmFkIHRocmVhZCByZWNvcmQgaW4gY2F0YWxvZ1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdGVyciA9IC1FSU87XG4mIzQzO1x0XHRcdGdvdG8gb3V0O1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdGlmICghaXNfaGZzcGx1c19uYW1lX2xlbmd0aF92YWxpZChlbnRyeS50aHJlYWQubm9kZU5hbWUubGVuZ3RoKSkge1xuJiM0MztcdFx0XHRwcl9lcnIoXCYjMzQ7Y2F0YWxvZyBuYW1lIGxlbmd0aCBjb3JydXB0ZWRcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRlcnIgPSAtRUlPO1xuJiM0MztcdFx0XHRnb3RvIG91dDtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRoZnNwbHVzX2NhdF9idWlsZF9rZXlfdW5pKGZkLnNlYXJjaF9rZXksIGRpci1cdTAwM2VpX2lubyxcbiYjNDM7XHRcdFx0XHRcdCAgXHUwMDI2ZW50cnkudGhyZWFkLm5vZGVOYW1lKTtcbiBcdH0gZWxzZSB7XG4gXHRcdGVyciA9IGhmc3BsdXNfY2F0X2J1aWxkX2tleShzYiwgZmQuc2VhcmNoX2tleSwgZGlyLVx1MDAzZWlfaW5vLCBzdHIpO1xuIFx0XHRpZiAodW5saWtlbHkoZXJyKSlcbmRpZmYgLS1naXQgYS9mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaCBiL2ZzL2hmc3BsdXMvaGZzcGx1c19mcy5oXG5pbmRleCBlYzA0YjgyYWQ5Mjc4Ny4uYjk1NGI0NWExMDAzNjkgMTAwNjQ0XG4tLS0gYS9mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmhcbkBAIC01MjEsNiAmIzQzOzUyMSwxNyBAQCBzdGF0aWMgaW5saW5lIHUzMiBoZnNwbHVzX2NhdF90aHJlYWRfc2l6ZShjb25zdCBzdHJ1Y3QgaGZzcGx1c19jYXRfdGhyZWFkICp0aHJlYVxuIFx0ICAgICAgIGJlMTZfdG9fY3B1KHRocmVhZC1cdTAwM2Vub2RlTmFtZS5sZW5ndGgpICogc2l6ZW9mKGhmc3BsdXNfdW5pY2hyKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBpc19oZnNwbHVzX3RocmVhZF90eXBlKHUxNiBlbnRyeV90eXBlKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIGVudHJ5X3R5cGUgPT0gSEZTUExVU19GT0xERVJfVEhSRUFEIHx8XG4mIzQzO1x0ICAgICAgIGVudHJ5X3R5cGUgPT0gSEZTUExVU19GSUxFX1RIUkVBRDtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIGlubGluZSBib29sIGlzX2hmc3BsdXNfbmFtZV9sZW5ndGhfdmFsaWQoX19iZTE2IG5hbWVfbGVuZ3RoKVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIGJlMTZfdG9fY3B1KG5hbWVfbGVuZ3RoKSBcdTAwM2M9IEhGU1BMVVNfTUFYX1NUUkxFTjtcbiYjNDM7fVxuJiM0MztcbiBpbnQgaGZzcGx1c19icmVjX3JlYWRfY2F0KHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgaGZzcGx1c19jYXRfZW50cnkgKmVudHJ5KTtcbiBcbiAvKlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDExOjE4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0hGU1BMVVNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtoZnNwbHVzX2ZpbmRfY2F0JiMzNDssCiAgICAmIzM0O2hmc3BsdXNfZGVsZXRlX2NhdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGNhdGFsb2cgb3BlcmF0aW9ucyBpbiB0aGUgSEZTJiM0MzsgZmlsZXN5c3RlbSBkcml2ZXIgKGhmc3BsdXNfZmluZF9jYXQgYW5kIGhmc3BsdXNfZGVsZXRlX2NhdCkgYnkgYWRkaW5nIHZhbGlkYXRpb24gZm9yIHRocmVhZCByZWNvcmQgdHlwZXMgYW5kIG5hbWUgbGVuZ3Rocy4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgd2hlbiBtb3VudGluZyBhbmQgaW50ZXJhY3Rpbmcgd2l0aCBIRlMmIzQzOyBmaWxlc3lzdGVtIGltYWdlcywgbWFraW5nIHRoZW0gc3VpdGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNiNDJlNDMzZDA0ZTkwYjIwMDljYmRhNDI3NmQ2MWUzNDhkMDJlMTIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAxIDExOjE3OjU5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZnMvaGZzcGx1cy9jYXRhbG9nLmMgYi9mcy9oZnNwbHVzL2NhdGFsb2cuYwppbmRleCA3NzZjZTM2Y2YwNzZiNC4uYzU3YzNiYmI4MTQzNTQgMTAwNjQ0Ci0tLSBhL2ZzL2hmc3BsdXMvY2F0YWxvZy5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2hmc3BsdXMvY2F0YWxvZy5jCkBAIC0xOTYsMjAgJiM0MzsxOTYsMjAgQEAgaW50IGhmc3BsdXNfZmluZF9jYXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsCiB7CiAJaGZzcGx1c19jYXRfZW50cnkgdG1wID0gezB9OwogCWludCBlcnI7Ci0JdTE2IHR5cGU7CiYjNDM7CXUxNiBlbnRyeV90eXBlOwogCiAJaGZzcGx1c19jYXRfYnVpbGRfa2V5X3dpdGhfY25pZChzYiwgZmQtJmd0O3NlYXJjaF9rZXksIGNuaWQpOwogCWVyciA9IGhmc3BsdXNfYnJlY19yZWFkX2NhdChmZCwgJmFtcDt0bXApOwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKLQl0eXBlID0gYmUxNl90b19jcHUodG1wLnR5cGUpOwotCWlmICh0eXBlICE9IEhGU1BMVVNfRk9MREVSX1RIUkVBRCAmYW1wOyZhbXA7IHR5cGUgIT0gSEZTUExVU19GSUxFX1RIUkVBRCkgewomIzQzOwllbnRyeV90eXBlID0gYmUxNl90b19jcHUodG1wLnR5cGUpOwomIzQzOwlpZiAoIWlzX2hmc3BsdXNfdGhyZWFkX3R5cGUoZW50cnlfdHlwZSkpIHsKIAkJcHJfZXJyKCYjMzQ7Zm91bmQgYmFkIHRocmVhZCByZWNvcmQgaW4gY2F0YWxvZ1xuJiMzNDspOwogCQlyZXR1cm4gLUVJTzsKIAl9CiAKLQlpZiAoYmUxNl90b19jcHUodG1wLnRocmVhZC5ub2RlTmFtZS5sZW5ndGgpICZndDsgMjU1KSB7CiYjNDM7CWlmICghaXNfaGZzcGx1c19uYW1lX2xlbmd0aF92YWxpZCh0bXAudGhyZWFkLm5vZGVOYW1lLmxlbmd0aCkpIHsKIAkJcHJfZXJyKCYjMzQ7Y2F0YWxvZyBuYW1lIGxlbmd0aCBjb3JydXB0ZWRcbiYjMzQ7KTsKIAkJcmV0dXJuIC1FSU87CiAJfQpAQCAtMzUwLDIzICYjNDM7MzUwLDI5IEBAIGludCBoZnNwbHVzX2RlbGV0ZV9jYXQodTMyIGNuaWQsIHN0cnVjdCBpbm9kZSAqZGlyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqc3RyKQogCQlnb3RvIG91dDsKIAogCWlmICghc3RyKSB7Ci0JCWludCBsZW47CiYjNDM7CQloZnNwbHVzX2NhdF9lbnRyeSBlbnRyeSA9IHswfTsKJiM0MzsJCXUxNiBlbnRyeV90eXBlOwogCiAJCWhmc3BsdXNfY2F0X2J1aWxkX2tleV93aXRoX2NuaWQoc2IsIGZkLnNlYXJjaF9rZXksIGNuaWQpOwotCQllcnIgPSBoZnNfYnJlY19maW5kKCZhbXA7ZmQsIGhmc19maW5kX3JlY19ieV9rZXkpOwomIzQzOwkJZXJyID0gaGZzcGx1c19icmVjX3JlYWRfY2F0KCZhbXA7ZmQsICZhbXA7ZW50cnkpOwogCQlpZiAoZXJyKQogCQkJZ290byBvdXQ7CiAKLQkJb2ZmID0gZmQuZW50cnlvZmZzZXQgJiM0MzsKLQkJCW9mZnNldG9mKHN0cnVjdCBoZnNwbHVzX2NhdF90aHJlYWQsIG5vZGVOYW1lKTsKLQkJZmQuc2VhcmNoX2tleS0mZ3Q7Y2F0LnBhcmVudCA9IGNwdV90b19iZTMyKGRpci0mZ3Q7aV9pbm8pOwotCQloZnNfYm5vZGVfcmVhZChmZC5ibm9kZSwKLQkJCSZhbXA7ZmQuc2VhcmNoX2tleS0mZ3Q7Y2F0Lm5hbWUubGVuZ3RoLCBvZmYsIDIpOwotCQlsZW4gPSBiZTE2X3RvX2NwdShmZC5zZWFyY2hfa2V5LSZndDtjYXQubmFtZS5sZW5ndGgpICogMjsKLQkJaGZzX2Jub2RlX3JlYWQoZmQuYm5vZGUsCi0JCQkmYW1wO2ZkLnNlYXJjaF9rZXktJmd0O2NhdC5uYW1lLnVuaWNvZGUsCi0JCQlvZmYgJiM0MzsgMiwgbGVuKTsKLQkJZmQuc2VhcmNoX2tleS0mZ3Q7a2V5X2xlbiA9IGNwdV90b19iZTE2KDYgJiM0MzsgbGVuKTsKJiM0MzsJCWVudHJ5X3R5cGUgPSBiZTE2X3RvX2NwdShlbnRyeS50eXBlKTsKJiM0MzsJCWlmICghaXNfaGZzcGx1c190aHJlYWRfdHlwZShlbnRyeV90eXBlKSkgewomIzQzOwkJCXByX2VycigmIzM0O2ZvdW5kIGJhZCB0aHJlYWQgcmVjb3JkIGluIGNhdGFsb2dcbiYjMzQ7KTsKJiM0MzsJCQllcnIgPSAtRUlPOwomIzQzOwkJCWdvdG8gb3V0OwomIzQzOwkJfQomIzQzOwomIzQzOwkJaWYgKCFpc19oZnNwbHVzX25hbWVfbGVuZ3RoX3ZhbGlkKGVudHJ5LnRocmVhZC5ub2RlTmFtZS5sZW5ndGgpKSB7CiYjNDM7CQkJcHJfZXJyKCYjMzQ7Y2F0YWxvZyBuYW1lIGxlbmd0aCBjb3JydXB0ZWRcbiYjMzQ7KTsKJiM0MzsJCQllcnIgPSAtRUlPOwomIzQzOwkJCWdvdG8gb3V0OwomIzQzOwkJfQomIzQzOwomIzQzOwkJaGZzcGx1c19jYXRfYnVpbGRfa2V5X3VuaShmZC5zZWFyY2hfa2V5LCBkaXItJmd0O2lfaW5vLAomIzQzOwkJCQkJICAmYW1wO2VudHJ5LnRocmVhZC5ub2RlTmFtZSk7CiAJfSBlbHNlIHsKIAkJZXJyID0gaGZzcGx1c19jYXRfYnVpbGRfa2V5KHNiLCBmZC5zZWFyY2hfa2V5LCBkaXItJmd0O2lfaW5vLCBzdHIpOwogCQlpZiAodW5saWtlbHkoZXJyKSkKZGlmZiAtLWdpdCBhL2ZzL2hmc3BsdXMvaGZzcGx1c19mcy5oIGIvZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmgKaW5kZXggZWMwNGI4MmFkOTI3ODcuLmI5NTRiNDVhMTAwMzY5IDEwMDY0NAotLS0gYS9mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaAomIzQzOyYjNDM7JiM0MzsgYi9mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaApAQCAtNTIxLDYgJiM0Mzs1MjEsMTcgQEAgc3RhdGljIGlubGluZSB1MzIgaGZzcGx1c19jYXRfdGhyZWFkX3NpemUoY29uc3Qgc3RydWN0IGhmc3BsdXNfY2F0X3RocmVhZCAqdGhyZWEKIAkgICAgICAgYmUxNl90b19jcHUodGhyZWFkLSZndDtub2RlTmFtZS5sZW5ndGgpICogc2l6ZW9mKGhmc3BsdXNfdW5pY2hyKTsKIH0KIAomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBpc19oZnNwbHVzX3RocmVhZF90eXBlKHUxNiBlbnRyeV90eXBlKQomIzQzO3sKJiM0MzsJcmV0dXJuIGVudHJ5X3R5cGUgPT0gSEZTUExVU19GT0xERVJfVEhSRUFEIHx8CiYjNDM7CSAgICAgICBlbnRyeV90eXBlID09IEhGU1BMVVNfRklMRV9USFJFQUQ7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBpc19oZnNwbHVzX25hbWVfbGVuZ3RoX3ZhbGlkKF9fYmUxNiBuYW1lX2xlbmd0aCkKJiM0Mzt7CiYjNDM7CXJldHVybiBiZTE2X3RvX2NwdShuYW1lX2xlbmd0aCkgJmx0Oz0gSEZTUExVU19NQVhfU1RSTEVOOwomIzQzO30KJiM0MzsKIGludCBoZnNwbHVzX2JyZWNfcmVhZF9jYXQoc3RydWN0IGhmc19maW5kX2RhdGEgKmZkLCBoZnNwbHVzX2NhdF9lbnRyeSAqZW50cnkpOwogCiAvKgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTgzCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSEZTJiM0MzsgRmlsZXN5c3RlbSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgYW5kIGl0IHNlZW1zIGxpa2Ugd2UmIzM5O3ZlIGdvdCBzb21lIHNpZ25pZmljYW50IGNoYW5nZXMgcm9sbGluZyBpbiBmb3IgdGhlIEhGUyYjNDM7IGZpbGVzeXN0ZW0gZHJpdmVyLiBTcGVjaWZpY2FsbHksIHRoZSBtb2RpZmljYXRpb25zIGFyZSBmb2N1c2VkIG9uIGBmcy9oZnNwbHVzL2NhdGFsb2cuY2AgYW5kIGBmcy9oZnNwbHVzL2hmc3BsdXNfZnMuaGAuIFRoZSBjb3JlIG9mIHRoZSBhbHRlcmF0aW9uIGFwcGVhcnMgdG8gYmUgYXJvdW5kIHRoZSBmdW5jdGlvbnMgYGhmc3BsdXNfZmluZF9jYXRgIGFuZCBgaGZzcGx1c19kZWxldGVfY2F0YC4KCkl0IGxvb2tzIGxpa2UgdGhlIGRldmVsb3BlcnMgaGF2ZSBpbnRyb2R1Y2VkIHRoZXNlIG5ldyBoZWxwZXIgZnVuY3Rpb25zLCBgaXNfaGZzcGx1c190aHJlYWRfdHlwZWAgYW5kIGBpc19oZnNwbHVzX25hbWVfbGVuZ3RoX3ZhbGlkYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgZm9yIGFkZGluZyBzb21lIG11Y2gtbmVlZGVkIHZhbGlkYXRpb24uIFRoZXkmIzM5O3JlIHByb2JhYmx5IHRyeWluZyB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgb3IgcG90ZW50aWFsIGNvcnJ1cHRpb24gd2hlbiBkZWFsaW5nIHdpdGggbmFtZSBsZW5ndGhzLCB3aGljaCBpcyBhIHNtYXJ0IG1vdmUuIEkmIzM5O3ZlIHNlZW4gdGhvc2Uga2luZHMgb2YgYnVncyBiZWZvcmU7IHRoZXkgY2FuIGJlIG5hc3R5LgoKRnVydGhlcm1vcmUsIGluIGBoZnNwbHVzX2RlbGV0ZV9jYXRgLCB0aGV5JiMzOTt2ZSByZXBsYWNlZCB0aGUgZGlyZWN0IHVzZSBvZiBgaGZzX2JyZWNfZmluZGAgYW5kIGBoZnNfYm5vZGVfcmVhZGAgd2l0aCBgaGZzcGx1c19icmVjX3JlYWRfY2F0YC4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGNvZGUgY2xlYW51cCBhbmQgcHJvYmFibHkgYW4gYXR0ZW1wdCB0byBjZW50cmFsaXplIHRoZSBsb2dpYywgbWFraW5nIHRoZSBjb2RlIG1vcmUgbWFpbnRhaW5hYmxlIGFuZCBlYXNpZXIgdG8gYXVkaXQuIEFuZCBpbnN0ZWFkIG9mIG1hbnVhbGx5IGNvbnN0cnVjdGluZyB0aGUga2V5LCB0aGV5JiMzOTtyZSBub3cgdXNpbmcgYGhmc3BsdXNfY2F0X2J1aWxkX2tleV91bmlgLiBHb29kLCBsZXNzIHJvb20gZm9yIGVycm9yIHRoZXJlLiBUaGlzIGlzIGEgbmljZSBmdW5jdGlvbmFsIGltcHJvdmVtZW50LgoKRXNzZW50aWFsbHksIHRoaXMgcGF0Y2ggaXMgYWJvdXQgZW5oYW5jaW5nIHJlbGlhYmlsaXR5IGFuZCBjbGVhbmluZyB1cCB0aGUgY29kZSBmb3IgdGhlIEhGUyYjNDM7IGRyaXZlci4gSSYjMzk7ZCBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgYWN0dWFsIGNvZGUgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUsIGJ1dCBiYXNlZCBvbiB0aGlzIHN1bW1hcnksIGl0IHNlZW1zIGxpa2UgYSBzb2xpZCBzZXQgb2YgY2hhbmdlcy4KCk5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIEhGUyYjNDM7IGlzIGV2ZW4gY29uZmlndXJlZC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBjb25maWdzIHdpdGggYGdyZXBwZXJgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDExOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBIRlNQTFVTX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvaGZzcGx1cy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2hmc3BsdXMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvaGZzcGx1cy9LY29uZmlnOjI6Y29uZmlnIEhGU1BMVVNfRlNcbmZzL2hmc3BsdXMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7QXBwbGUgRXh0ZW5kZWQgSEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzQxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqUmVmbGVjdGluZyBvbiBSZWNlbnQgQ29kZSBDaGFuZ2VzKioKCk9rYXksIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaW4gcGxheSBpcyBgSEZTUExVU19GU2AuIFJpZ2h0LCBnb3QgaXQuIE5vdywgbGV0JiMzOTtzIG1lbnRhbGx5IHdhbGsgdGhyb3VnaCB0aGUgcmVjZW50IG1vZGlmaWNhdGlvbnMgcmVsYXRlZCB0byB0aGlzIGZpbGVzeXN0ZW0uIFNwZWNpZmljYWxseSwgSSYjMzk7dmUgZ290IHRvIGVuc3VyZSB0aGUgY2hhbmdlcyB0byBgaGZzcGx1c19maW5kX2NhdGAgYW5kIGBoZnNwbHVzX2RlbGV0ZV9jYXRgIGFyZSBwcm9wZXJseSBhY2NvdW50ZWQgZm9yIGluIHRoZSBvbmdvaW5nIHdvcmsuIFRob3NlIG5lZWQgdG8gYmUgZXhwbGljaXRseSBhZGRlZCB0byB0aGUgYEZvY3VzU3ltYm9sc2AgbGlzdCwgdGhhdCYjMzk7cyBjcnVjaWFsIGZvciB0aGUgdG9vbCBJIGFtIHVzaW5nLiBBbHdheXMgZW5zdXJpbmcgdGhhdCBjcml0aWNhbCBjaGFuZ2VzIGFyZSBmbGFnZ2VkIHByb3Blcmx5IGlzIHZpdGFsIGZvciBkZWJ1Z2dpbmcgYW5kIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQuCgpCZWZvcmUgSSBnbyBmdXJ0aGVyLCBsZXQgbWUganVzdCBxdWlja2x5IHJ1biBhIHNhbml0eSBjaGVjay4gTGV0IG1lIGRvdWJsZS1jaGVjayBpZiB0aGVyZSBtaWdodCBiZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBmbGFncyB0aGF0IGFyZSBwb3RlbnRpYWxseSBpbiBwbGF5IGhlcmUuIEkgZG9uJiMzOTt0IHdhbnQgdG8gb3Zlcmxvb2sgYW55dGhpbmcgY3JpdGljYWwhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTE6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEhGUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2hmc3BsdXMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9oZnNwbHVzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmZzL2hmc3BsdXMvS2NvbmZpZzoyOmNvbmZpZyBIRlNQTFVTX0ZTXG5mcy9oZnNwbHVzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0FwcGxlIEV4dGVuZGVkIEhGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XCYjMzQ7XG4tLVxuZnMvaGZzcGx1cy9LY29uZmlnLTE3LVxuZnMvaGZzcGx1cy9LY29uZmlnOjE4OmNvbmZpZyBIRlNQTFVTX0tVTklUX1RFU1RcbmZzL2hmc3BsdXMvS2NvbmZpZy0xOS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBIRlMmIzQzOyBmaWxlc3lzdGVtXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTY5CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogODQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuCgoqKk5hdmlnYXRpbmcgdGhlIEhGUyYjNDM7IEZpbGVzeXN0ZW0gRHJpdmVyIGZvciBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0aWVzKioKCkFscmlnaHQsIG15IGZvY3VzIGlzIGRlZmluaXRlbHkgemVyb2luZyBpbiBvbiB0aGUgYEhGU1BMVVNfRlNgIGNvbmZpZ3VyYXRpb24uIEl0JiMzOTtzIHRoZSBwcmltYXJ5IHBvaW50IG9mIGVudHJ5IGhlcmUuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBsZXQmIzM5O3Mgc2VlIGlmIHRoZSBmdW5jdGlvbnMgYGhmc3BsdXNfZGVsZXRlX2NhdGAgYW5kIGBoZnNwbHVzX2ZpbmRfY2F0YCBhcmUgcmVhY2hhYmxlLiBUaGVzZSBhcmUga2V5IGJlY2F1c2UgdGhleSBhcmUgY29tcG9uZW50cyBvZiB0aGUgSEZTJiM0MzsgZmlsZXN5c3RlbSBkcml2ZXIuIFRoYXQgZHJpdmVyIGlzIHZ1bG5lcmFibGUgdG8gZnV6emluZy4gSSBjYW4gZG8gc28gYnkgbW91bnRpbmcgYSBzcGVjaWZpY2FsbHkgY3JhZnRlZCBIRlMmIzQzOyBpbWFnZS4gVGhpcyBmZWVscyBsaWtlIHRoZSByaWdodCBwYXRoIHRvIGV4cGxvcmUuIFRvIGRvdWJsZSBjaGVjayBJJiMzOTtsbCBleHBsb3JlIHRoZSBjYWxsZXJzIG9mIGBoZnNwbHVzX2RlbGV0ZV9jYXRgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDExOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hmc3BsdXNfZGVsZXRlX2NhdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2hmc3BsdXMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2hmc3BsdXMvY2F0YWxvZy5jPTI1Mz1pbnQgaGZzcGx1c19jcmVhdGVfY2F0KHUzMiBjbmlkLCBzdHJ1Y3QgaW5vZGUgKmRpcixcbi0tXG5mcy9oZnNwbHVzL2NhdGFsb2cuYy0zMzAtXG5mcy9oZnNwbHVzL2NhdGFsb2cuYzozMzE6aW50IGhmc3BsdXNfZGVsZXRlX2NhdCh1MzIgY25pZCwgc3RydWN0IGlub2RlICpkaXIsIGNvbnN0IHN0cnVjdCBxc3RyICpzdHIpXG5mcy9oZnNwbHVzL2NhdGFsb2cuYy0zMzIte1xuLS1cbmZzL2hmc3BsdXMvZGlyLmM9MzcwPXN0YXRpYyBpbnQgaGZzcGx1c191bmxpbmsoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcbi0tXG5mcy9oZnNwbHVzL2Rpci5jLTM5OS1cdH1cbmZzL2hmc3BsdXMvZGlyLmM6NDAwOlx0cmVzID0gaGZzcGx1c19kZWxldGVfY2F0KGNuaWQsIGRpciwgXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbmFtZSk7XG5mcy9oZnNwbHVzL2Rpci5jLTQwMS1cdGlmIChyZXMpXG4tLVxuZnMvaGZzcGx1cy9kaXIuYy00MTEtXHRcdFx0aWYgKCFhdG9taWNfcmVhZChcdTAwMjZIRlNQTFVTX0koaW5vZGUpLVx1MDAzZW9wZW5jbnQpKSB7XG5mcy9oZnNwbHVzL2Rpci5jOjQxMjpcdFx0XHRcdHJlcyA9IGhmc3BsdXNfZGVsZXRlX2NhdChpbm9kZS1cdTAwM2VpX2lubyxcbmZzL2hmc3BsdXMvZGlyLmMtNDEzLVx0XHRcdFx0XHRcdFx0IHNiaS1cdTAwM2VoaWRkZW5fZGlyLFxuLS1cbmZzL2hmc3BsdXMvZGlyLmM9NDM5PXN0YXRpYyBpbnQgaGZzcGx1c19ybWRpcihzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxuLS1cbmZzL2hmc3BsdXMvZGlyLmMtNDQ4LVx0bXV0ZXhfbG9jayhcdTAwMjZzYmktXHUwMDNldmhfbXV0ZXgpO1xuZnMvaGZzcGx1cy9kaXIuYzo0NDk6XHRyZXMgPSBoZnNwbHVzX2RlbGV0ZV9jYXQoaW5vZGUtXHUwMDNlaV9pbm8sIGRpciwgXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbmFtZSk7XG5mcy9oZnNwbHVzL2Rpci5jLTQ1MC1cdGlmIChyZXMpXG4tLVxuZnMvaGZzcGx1cy9kaXIuYz00NjM9c3RhdGljIGludCBoZnNwbHVzX3N5bWxpbmsoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqZGlyLFxuLS1cbmZzL2hmc3BsdXMvZGlyLmMtNDkwLVx0XHQvKiBUcnkgdG8gZGVsZXRlIGFueXdheSB3aXRob3V0IGVycm9yIGFuYWx5c2lzLiAqL1xuZnMvaGZzcGx1cy9kaXIuYzo0OTE6XHRcdGhmc3BsdXNfZGVsZXRlX2NhdChpbm9kZS1cdTAwM2VpX2lubywgZGlyLCBcdTAwMjZkZW50cnktXHUwMDNlZF9uYW1lKTtcbmZzL2hmc3BsdXMvZGlyLmMtNDkyLVx0XHRnb3RvIG91dF9lcnI7XG4tLVxuZnMvaGZzcGx1cy9kaXIuYz01MTQ9c3RhdGljIGludCBoZnNwbHVzX21rbm9kKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKmRpcixcbi0tXG5mcy9oZnNwbHVzL2Rpci5jLTU0MC1cdFx0LyogVHJ5IHRvIGRlbGV0ZSBhbnl3YXkgd2l0aG91dCBlcnJvciBhbmFseXNpcy4gKi9cbmZzL2hmc3BsdXMvZGlyLmM6NTQxOlx0XHRoZnNwbHVzX2RlbGV0ZV9jYXQoaW5vZGUtXHUwMDNlaV9pbm8sIGRpciwgXHUwMDI2ZGVudHJ5LVx1MDAzZWRfbmFtZSk7XG5mcy9oZnNwbHVzL2Rpci5jLTU0Mi1cdFx0Z290byBmYWlsZWRfbWtub2Q7XG4tLVxuZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmg9NDIzPWludCBoZnNwbHVzX2NyZWF0ZV9jYXQodTMyIGNuaWQsIHN0cnVjdCBpbm9kZSAqZGlyLCBjb25zdCBzdHJ1Y3QgcXN0ciAqc3RyLFxuZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmgtNDI0LVx0XHQgICAgICAgc3RydWN0IGlub2RlICppbm9kZSk7XG5mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaDo0MjU6aW50IGhmc3BsdXNfZGVsZXRlX2NhdCh1MzIgY25pZCwgc3RydWN0IGlub2RlICpkaXIsIGNvbnN0IHN0cnVjdCBxc3RyICpzdHIpO1xuZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmgtNDI2LWludCBoZnNwbHVzX3JlbmFtZV9jYXQodTMyIGNuaWQsIHN0cnVjdCBpbm9kZSAqc3JjX2RpciwgY29uc3Qgc3RydWN0IHFzdHIgKnNyY19uYW1lLFxuLS1cbmZzL2hmc3BsdXMvaW5vZGUuYz0yODE9c3RhdGljIGludCBoZnNwbHVzX2ZpbGVfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcbi0tXG5mcy9oZnNwbHVzL2lub2RlLmMtMjkwLVx0XHRpZiAoaW5vZGUtXHUwMDNlaV9mbGFncyBcdTAwMjYgU19ERUFEKSB7XG5mcy9oZnNwbHVzL2lub2RlLmM6MjkxOlx0XHRcdGhmc3BsdXNfZGVsZXRlX2NhdChpbm9kZS1cdTAwM2VpX2lubyxcbmZzL2hmc3BsdXMvaW5vZGUuYy0yOTItXHRcdFx0XHRcdCAgIEhGU1BMVVNfU0Ioc2IpLVx1MDAzZWhpZGRlbl9kaXIsIE5VTEwpO1xuLS1cbmZzL2hmc3BsdXMvc3VwZXIuYz00NTI9c3RhdGljIGludCBoZnNwbHVzX2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuLS1cbmZzL2hmc3BsdXMvc3VwZXIuYy02NDMtXHRcdFx0XHQgKi9cbmZzL2hmc3BsdXMvc3VwZXIuYzo2NDQ6XHRcdFx0XHRoZnNwbHVzX2RlbGV0ZV9jYXQoc2JpLVx1MDAzZWhpZGRlbl9kaXItXHUwMDNlaV9pbm8sXG5mcy9oZnNwbHVzL3N1cGVyLmMtNjQ1LVx0XHRcdFx0XHRcdFx0cm9vdCwgXHUwMDI2c3RyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTc3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgSSBzZWUgaXQ6CgoqKlJlYWNoaW5nIGFuZCBUZXN0aW5nIGBoZnNwbHVzX2RlbGV0ZV9jYXRgKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcywgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgYGhmc3BsdXNfZGVsZXRlX2NhdGAgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uIGluIHRoZSBIRlMmIzQzOyBmaWxlc3lzdGVtIGltcGxlbWVudGF0aW9uLiBJdCYjMzk7cyBjYWxsZWQgZnJvbSBhIGJ1bmNoIG9mIGtleSBvcGVyYXRpb25zOiBgaGZzcGx1c191bmxpbmtgLCBgaGZzcGx1c19ybWRpcmAsIGBoZnNwbHVzX3N5bWxpbmtgLCBgaGZzcGx1c19ta25vZGAsIGBoZnNwbHVzX2ZpbGVfcmVsZWFzZWAsIGFuZCBldmVuIGR1cmluZyBzdXBlcmJsb2NrIGluaXRpYWxpemF0aW9uIHZpYSBgaGZzcGx1c19maWxsX3N1cGVyYC4gVGhhdCYjMzk7cyBhIHN0cm9uZyBpbmRpY2F0b3Igb2YgaXRzIGltcG9ydGFuY2Ug4oCTIGl0JiMzOTtzIGZ1bmRhbWVudGFsIHRvIGhvdyBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgYXJlIG1hbmFnZWQsIGFuZCBob3cgdGhlIHZvbHVtZSBpdHNlbGYgaXMgc2V0IHVwLiBUaGUgZmFjdCB0aGF0IGl0JiMzOTtzIGNhbGxlZCBmcm9tIHNvIG1hbnkgcGxhY2VzIHN1Z2dlc3RzIGEgY29tcHJlaGVuc2l2ZSBhbmQgcG9zc2libHkgY29tcGxleCByb2xlIGluIG1haW50YWluaW5nIHRoZSBjYXRhbG9nLiBUaGlzIGFsc28gbWVhbnMgaXQmIzM5O3MgKmRlZmluaXRlbHkqIHJlYWNoYWJsZTsgdGhlcmUmIzM5O3Mgbm8gcXVlc3Rpb24gYWJvdXQgd2hldGhlciBpdCBnZXRzIHVzZWQuIEFuZCwgaWYgaXQmIzM5O3MgcmVhY2hhYmxlLCBpdCYjMzk7cyB0ZXN0YWJsZS4gSSBjYW4gY3JhZnQgdGVzdCBjYXNlcyB0byBleGVyY2lzZSBpdCB1bmRlciB2YXJpb3VzIGNvbmRpdGlvbnMsIHdoaWNoIGlzIGVzc2VudGlhbCBmb3IgZW5zdXJpbmcgaXRzIGNvcnJlY3RuZXNzIGFuZCByb2J1c3RuZXNzLgoKTm93LCBJIG5lZWQgdG8gbG9vayBpbnRvIGl0cyBjYWxsZXJzIGZ1cnRoZXIuIFVuZGVyc3RhbmRpbmcgd2hhdCBjYWxscyBgaGZzcGx1c19maW5kX2NhdGAgd2lsbCBwcm92aWRlIGltcG9ydGFudCBjb250ZXh0IGFuZCBhbiB1bmRlcnN0YW5kaW5nIG9mIGl0cyBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDExOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2hmc3BsdXNfZmluZF9jYXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9oZnNwbHVzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9oZnNwbHVzL2NhdGFsb2cuYz0xNzY9c3RhdGljIGludCBoZnNwbHVzX2ZpbGxfY2F0X3RocmVhZChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxuLS1cbmZzL2hmc3BsdXMvY2F0YWxvZy5jLTE5My0vKiBUcnkgdG8gZ2V0IGEgY2F0YWxvZyBlbnRyeSBmb3IgZ2l2ZW4gY2F0YWxvZyBpZCAqL1xuZnMvaGZzcGx1cy9jYXRhbG9nLmM6MTk0OmludCBoZnNwbHVzX2ZpbmRfY2F0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBjbmlkLFxuZnMvaGZzcGx1cy9jYXRhbG9nLmMtMTk1LVx0XHQgICAgIHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZClcbi0tXG5mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaD00MjA9dm9pZCBoZnNwbHVzX2NhdF9zZXRfcGVybXMoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGhmc3BsdXNfcGVybSAqcGVybXMpO1xuZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmg6NDIxOmludCBoZnNwbHVzX2ZpbmRfY2F0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHUzMiBjbmlkLFxuZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmgtNDIyLVx0XHQgICAgIHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCk7XG4tLVxuZnMvaGZzcGx1cy9pbm9kZS5jPTY3Nz1pbnQgaGZzcGx1c19jYXRfd3JpdGVfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSlcbi0tXG5mcy9oZnNwbHVzL2lub2RlLmMtNjk2LVxuZnMvaGZzcGx1cy9pbm9kZS5jOjY5NzpcdGlmIChoZnNwbHVzX2ZpbmRfY2F0KG1haW5faW5vZGUtXHUwMDNlaV9zYiwgbWFpbl9pbm9kZS1cdTAwM2VpX2lubywgXHUwMDI2ZmQpKVxuZnMvaGZzcGx1cy9pbm9kZS5jLTY5OC1cdFx0LyogcGFuaWM/ICovXG4tLVxuZnMvaGZzcGx1cy9zdXBlci5jPTY1PXN0cnVjdCBpbm9kZSAqaGZzcGx1c19pZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vKVxuLS1cbmZzL2hmc3BsdXMvc3VwZXIuYy05OS1cdFx0aWYgKCFlcnIpIHtcbmZzL2hmc3BsdXMvc3VwZXIuYzoxMDA6XHRcdFx0ZXJyID0gaGZzcGx1c19maW5kX2NhdChpbm9kZS1cdTAwM2VpX3NiLCBpbm9kZS1cdTAwM2VpX2lubywgXHUwMDI2ZmQpO1xuZnMvaGZzcGx1cy9zdXBlci5jLTEwMS1cdFx0XHRpZiAoIWVycilcbi0tXG5mcy9oZnNwbHVzL3hhdHRyLmM9MzUxPWludCBfX2hmc3BsdXNfc2V0eGF0dHIoc3RydWN0IGlub2RlICppbm9kZSwgY29uc3QgY2hhciAqbmFtZSxcbi0tXG5mcy9oZnNwbHVzL3hhdHRyLmMtMzc2LVxuZnMvaGZzcGx1cy94YXR0ci5jOjM3NzpcdGVyciA9IGhmc3BsdXNfZmluZF9jYXQoaW5vZGUtXHUwMDNlaV9zYiwgaW5vZGUtXHUwMDNlaV9pbm8sIFx1MDAyNmNhdF9mZCk7XG5mcy9oZnNwbHVzL3hhdHRyLmMtMzc4LVx0aWYgKGVycikge1xuLS1cbmZzL2hmc3BsdXMveGF0dHIuYz01NjI9c3RhdGljIHNzaXplX3QgaGZzcGx1c19nZXR4YXR0cl9maW5kZXJfaW5mbyhzdHJ1Y3QgaW5vZGUgKmlub2RlLFxuLS1cbmZzL2hmc3BsdXMveGF0dHIuYy01NzktXHRcdH1cbmZzL2hmc3BsdXMveGF0dHIuYzo1ODA6XHRcdHJlcyA9IGhmc3BsdXNfZmluZF9jYXQoaW5vZGUtXHUwMDNlaV9zYiwgaW5vZGUtXHUwMDNlaV9pbm8sIFx1MDAyNmZkKTtcbmZzL2hmc3BsdXMveGF0dHIuYy01ODEtXHRcdGlmIChyZXMpXG4tLVxuZnMvaGZzcGx1cy94YXR0ci5jPTczND1zdGF0aWMgc3NpemVfdCBoZnNwbHVzX2xpc3R4YXR0cl9maW5kZXJfaW5mbyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnksXG4tLVxuZnMvaGZzcGx1cy94YXR0ci5jLTc1MS1cbmZzL2hmc3BsdXMveGF0dHIuYzo3NTI6XHRyZXMgPSBoZnNwbHVzX2ZpbmRfY2F0KGlub2RlLVx1MDAzZWlfc2IsIGlub2RlLVx1MDAzZWlfaW5vLCBcdTAwMjZmZCk7XG5mcy9oZnNwbHVzL3hhdHRyLmMtNzUzLVx0aWYgKHJlcylcbi0tXG5mcy9oZnNwbHVzL3hhdHRyLmM9OTA2PXN0YXRpYyBpbnQgaGZzcGx1c19yZW1vdmV4YXR0cihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCBjaGFyICpuYW1lKVxuLS1cbmZzL2hmc3BsdXMveGF0dHIuYy05MjktXG5mcy9oZnNwbHVzL3hhdHRyLmM6OTMwOlx0ZXJyID0gaGZzcGx1c19maW5kX2NhdChpbm9kZS1cdTAwM2VpX3NiLCBpbm9kZS1cdTAwM2VpX2lubywgXHUwMDI2Y2F0X2ZkKTtcbmZzL2hmc3BsdXMveGF0dHIuYy05MzEtXHRpZiAoZXJyKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDExOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5NTAKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSEZTJiM0MzsgQ29kZSoqCgpPa2F5LCBzbyBgaGZzcGx1c19maW5kX2NhdGAgaXMgY2xlYXJseSBhIGtleSBmdW5jdGlvbi4gSSYjMzk7bSBzZWVpbmcgaXQmIzM5O3MgY2FsbGVkIGZyb20gc2V2ZXJhbCBjcml0aWNhbCBwb2ludHMgaW4gdGhlIEhGUyYjNDM7IGZpbGVzeXN0ZW0gaW1wbGVtZW50YXRpb246IGBoZnNwbHVzX2NhdF93cml0ZV9pbm9kZWAsIGBoZnNwbHVzX2lnZXRgLCBgX19oZnNwbHVzX3NldHhhdHRyYCwgYXMgd2VsbCBhcyB0aG9zZSBGaW5kZXIgaW5mbyB4YXR0ciBoYW5kbGVycy4gVGhlIHJlYWNoYWJpbGl0eSBsb29rcyBnb29kLCB3aGljaCBtZWFucyBpdCYjMzk7cyBkZWZpbml0ZWx5IGEgdmlhYmxlIHRhcmdldCBmb3IgaW4tZGVwdGggYW5hbHlzaXMuCgpHaXZlbiBpdHMgY2VudHJhbGl0eSBhbmQgdGhlIGZhY3QgdGhlIHBhdGNoIGFwcGVhcnMgZnVuY3Rpb25hbCwgSSYjMzk7bSBjb25maWRlbnQgdGhhdCB0aGlzIGlzIGEgdmFsdWFibGUgYXJlYSB0byBmb2N1cyBvbi4gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0aGF0IGl0JiMzOTtzIHByaW1lIG1hdGVyaWFsIGZvciBmdXp6aW5nLiBJJiMzOTtsbCBmbGFnIHRoYXQgd2l0aCBgV29ydGhGdXp6aW5nPXRydWVgLgoKRm9yIHRoZSBjb25maWd1cmF0aW9uLCBJJiMzOTttIGdvaW5nIHRvIHNldCBgRW5hYmxlQ29uZmlnc2AgdG8gYEhGU1BMVVNfRlNgLiBBbmQgZm9yIHRoZSBgRm9jdXNTeW1ib2xzYCwgSSYjMzk7bGwgcHJpb3JpdGl6ZSBgaGZzcGx1c19maW5kX2NhdGAsIGFsb25nIHdpdGggaXRzIGNvbXBsZW1lbnQsIGBoZnNwbHVzX2RlbGV0ZV9jYXRgLiBUaGVzZSBhcmUgdGhlIGNvcmUgcm91dGluZXMgdG8gcmVhbGx5IGdldCBhZnRlci4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBmb3IgYW55IHJlbGF0ZWQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbWlnaHQgYWxzbyBiZSByZWxldmFudC4gVGhpbmdzIGxpa2UgYENPTkZJR19IRlNQTFVTX0ZTX1BPU0lYX0FDTGAsIG9yIGFueSBvdGhlciBzaW1pbGFyIG9wdGlvbnMgdGhhdCBjb3VsZCBhZmZlY3QgdGhlIGJlaGF2aW9yIG9mIGBoZnNwbHVzX2ZpbmRfY2F0YCBzaG91bGQgYmUgaW52ZXN0aWdhdGVkIHRvIGVuc3VyZSBhIGNvbXByZWhlbnNpdmUgZnV6emluZyBzZXR1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDEgMTE6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEhGU1BMVVMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9oZnNwbHVzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvaGZzcGx1cy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9oZnNwbHVzL0tjb25maWc6Mjpjb25maWcgSEZTUExVU19GU1xuZnMvaGZzcGx1cy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtBcHBsZSBFeHRlbmRlZCBIRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuLS1cbmZzL2hmc3BsdXMvS2NvbmZpZy0xNy1cbmZzL2hmc3BsdXMvS2NvbmZpZzoxODpjb25maWcgSEZTUExVU19LVU5JVF9URVNUXG5mcy9oZnNwbHVzL0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgSEZTJiM0MzsgZmlsZXN5c3RlbVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzAxIDExOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2MTMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246CgoqKkludmVzdGlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlIGZvciBIRlMmIzQzOyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGZpbGVzeXN0ZW0gY29uZmlndXJhdGlvbnMsIHNwZWNpZmljYWxseSBIRlMmIzQzOy4gSSB3YXMgdW5kZXIgdGhlIGltcHJlc3Npb24gdGhhdCB0aGVyZSB3ZXJlbiYjMzk7dCBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIGluIHRoZSBgZnMvaGZzcGx1c2AgZGlyZWN0b3J5LiBCdXQsIGhhbmcgb24gYSBzZWNvbmQuLi5zb21ldGhpbmcgbmFnZ2VkIGF0IHRoZSBiYWNrIG9mIG15IG1pbmQuIFdoYXQgYWJvdXQgYGZzL2hmc3BsdXMvS2NvbmZpZ2A/IEl0JiMzOTtzIHRoZSBzdGFuZGFyZCBwbGFjZSBmb3Iga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYSBmaWxlc3lzdGVtLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2suIEJlc3QgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUsIHNvIEkmIzM5O2xsIGdvIGFoZWFkIGFuZCB0YWtlIGEgbG9vayBhdCBpdC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIHJlYWQgaXQgdG8gZ2V0IHRoZSBmdWxsIHN0b3J5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL2hmc3BsdXMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgSEZTUExVU19GU1xuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7QXBwbGUgRXh0ZW5kZWQgSEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gQkxPQ0tcbiAgIDU6XHRcdHNlbGVjdCBCVUZGRVJfSEVBRFxuICAgNjpcdFx0c2VsZWN0IE5MU1xuICAgNzpcdFx0c2VsZWN0IE5MU19VVEY4XG4gICA4Olx0XHRzZWxlY3QgTEVHQUNZX0RJUkVDVF9JT1xuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgeW91IHdpbGwgYmUgYWJsZSB0byBtb3VudCBleHRlbmRlZCBmb3JtYXRcbiAgMTE6XHRcdCAgTWFjaW50b3NoLWZvcm1hdHRlZCBoYXJkIGRyaXZlIHBhcnRpdGlvbnMgd2l0aCBmdWxsIHJlYWQtd3JpdGUgYWNjZXNzLlxuICAxMjpcdFxuICAxMzpcdFx0ICBUaGlzIGZpbGUgc3lzdGVtIGlzIG9mdGVuIGNhbGxlZCBIRlMmIzQzOyBhbmQgd2FzIGludHJvZHVjZWQgd2l0aFxuICAxNDpcdFx0ICBNYWNPUyA4LiBJdCBpbmNsdWRlcyBhbGwgTWFjIHNwZWNpZmljIGZpbGVzeXN0ZW0gZGF0YSBzdWNoIGFzXG4gIDE1Olx0XHQgIGRhdGEgZm9ya3MgYW5kIGNyZWF0b3IgY29kZXMsIGJ1dCBpdCBhbHNvIGhhcyBzZXZlcmFsIFVOSVhcbiAgMTY6XHRcdCAgc3R5bGUgZmVhdHVyZXMgc3VjaCBhcyBmaWxlIG93bmVyc2hpcCBhbmQgcGVybWlzc2lvbnMuXG4gIDE3Olx0XG4gIDE4Olx0Y29uZmlnIEhGU1BMVVNfS1VOSVRfVEVTVFxuICAxOTpcdFx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIEhGUyYjNDM7IGZpbGVzeXN0ZW1cJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuICAyMDpcdFx0ZGVwZW5kcyBvbiBIRlNQTFVTX0ZTIFx1MDAyNlx1MDAyNiBLVU5JVFxuICAyMTpcdFx0ZGVmYXVsdCBLVU5JVF9BTExfVEVTVFNcbiAgMjI6XHRcdGhlbHBcbiAgMjM6XHRcdCAgVGhpcyBidWlsZHMgS1VuaXQgdGVzdHMgZm9yIHRoZSBIRlMmIzQzOyBmaWxlc3lzdGVtLlxuICAyNDpcdFxuICAyNTpcdFx0ICBLVW5pdCB0ZXN0cyBydW4gZHVyaW5nIGJvb3QgYW5kIG91dHB1dCB0aGUgcmVzdWx0cyB0byB0aGUgZGVidWdcbiAgMjY6XHRcdCAgbG9nIGluIFRBUCBmb3JtYXQgKGh0dHBzOi8vdGVzdGFueXRoaW5nLm9yZy8pLiBPbmx5IHVzZWZ1bCBmb3JcbiAgMjc6XHRcdCAga2VybmVsIGRldnMgcnVubmluZyBLVW5pdCB0ZXN0IGhhcm5lc3MgYW5kIGFyZSBub3QgZm9yIGluY2x1c2lvblxuICAyODpcdFx0ICBpbnRvIGEgcHJvZHVjdGlvbiBidWlsZC5cbiAgMjk6XHRcbiAgMzA6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gS1VuaXQgYW5kIHVuaXQgdGVzdHMgaW4gZ2VuZXJhbCBwbGVhc2VcbiAgMzE6XHRcdCAgcmVmZXIgdG8gdGhlIEtVbml0IGRvY3VtZW50YXRpb24gaW4gRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMva3VuaXQvLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MzExCgkJCQkJCQlvdXRwdXQ6IDEyMAoJCQkJCQkJdGhvdWdodHM6IDE3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgSEZTJiM0MzsgRmlsZXN5c3RlbSBTeW1ib2xzIGZvciBGb2N1c1N5bWJvbHMqKgoKT2theSwgc28gaXQgbG9va3MgbGlrZSBgSEZTUExVU19GU2AgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiB3ZSBuZWVkIHRvIGZvY3VzIG9uLiBUaGF0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIE5vdywgSSBzaG91bGQgbWFrZSBzdXJlIHRob3NlIGNhdGFsb2cgZnVuY3Rpb25zLCBgaGZzcGx1c19kZWxldGVfY2F0YCBhbmQgYGhmc3BsdXNfZmluZF9jYXRgLCBhcmUgYXBwcm9wcmlhdGVseSBleHBvc2VkLiBMZXQmIzM5O3Mgc2VlLi4uIFRoZXkmIzM5O3JlIGJvdGggaW4gYGZzL2hmc3BsdXMvY2F0YWxvZy5jYCwgYW5kIGl0IGFwcGVhcnMgdGhleSYjMzk7cmUgZXhwb3J0ZWQgdG8gb3RoZXIgbW9kdWxlcyB3aXRoaW4gYGZzL2hmc3BsdXMvYCB2aWEgYGhmc3BsdXNfZnMuaGAuIFRoYXQmIzM5O3MgcHJlY2lzZWx5IHdoYXQgSSB3YXMgaG9waW5nIHRvIGZpbmQuCgpFeGNlbGxlbnQsIGBoZnNwbHVzX2RlbGV0ZV9jYXRgIGFuZCBgaGZzcGx1c19maW5kX2NhdGAgbG9vayBsaWtlIHByaW1lIHRhcmdldHMgZm9yIGBGb2N1c1N5bWJvbHNgLiBUaGF0IGlzIGV4YWN0bHkgd2hhdCBJIG5lZWQuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0JiMzOTtzIGRvdWJsZS1jaGVjazsgYEhGU1BMVVNfRlNgIGl0c2VsZiBpcyB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIGVsZW1lbnQuIFllcywgdGhhdCBpcyBjb3JyZWN0LCBzbyBldmVyeXRoaW5nIGNoZWNrcyBvdXQuCgpPa2F5LCB0aGF0IGNvbmZpcm1zIHdoYXQgSSBuZWVkZWQuIEkgYW0gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wMSAxMToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SEZTUExVU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hmc3BsdXNfZmluZF9jYXQmIzM0OywKICAgICYjMzQ7aGZzcGx1c19kZWxldGVfY2F0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgY2F0YWxvZyBvcGVyYXRpb25zIGluIHRoZSBIRlMmIzQzOyBmaWxlc3lzdGVtIGRyaXZlciAoaGZzcGx1c19maW5kX2NhdCBhbmQgaGZzcGx1c19kZWxldGVfY2F0KSBieSBhZGRpbmcgdmFsaWRhdGlvbiBmb3IgdGhyZWFkIHJlY29yZCB0eXBlcyBhbmQgbmFtZSBsZW5ndGhzLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB3aGVuIG1vdW50aW5nIGFuZCBpbnRlcmFjdGluZyB3aXRoIEhGUyYjNDM7IGZpbGVzeXN0ZW0gaW1hZ2VzLCBtYWtpbmcgdGhlbSBzdWl0YWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SEZTUExVU19GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2hmc3BsdXNfZmluZF9jYXQmIzM0OywKICAgICYjMzQ7aGZzcGx1c19kZWxldGVfY2F0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgY2F0YWxvZyBvcGVyYXRpb25zIGluIHRoZSBIRlMmIzQzOyBmaWxlc3lzdGVtIGRyaXZlciAoaGZzcGx1c19maW5kX2NhdCBhbmQgaGZzcGx1c19kZWxldGVfY2F0KSBieSBhZGRpbmcgdmFsaWRhdGlvbiBmb3IgdGhyZWFkIHJlY29yZCB0eXBlcyBhbmQgbmFtZSBsZW5ndGhzLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB3aGVuIG1vdW50aW5nIGFuZCBpbnRlcmFjdGluZyB3aXRoIEhGUyYjNDM7IGZpbGVzeXN0ZW0gaW1hZ2VzLCBtYWtpbmcgdGhlbSBzdWl0YWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDExOjE4OjAxLjM1ODQ1MDc5N1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4Njc1Nzk3NDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhGU1BMVVNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoZnNwbHVzX2ZpbmRfY2F0XCIsXG4gICAgXCJoZnNwbHVzX2RlbGV0ZV9jYXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGNhdGFsb2cgb3BlcmF0aW9ucyBpbiB0aGUgSEZTKyBmaWxlc3lzdGVtIGRyaXZlciAoaGZzcGx1c19maW5kX2NhdCBhbmQgaGZzcGx1c19kZWxldGVfY2F0KSBieSBhZGRpbmcgdmFsaWRhdGlvbiBmb3IgdGhyZWFkIHJlY29yZCB0eXBlcyBhbmQgbmFtZSBsZW5ndGhzLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB3aGVuIG1vdW50aW5nIGFuZCBpbnRlcmFjdGluZyB3aXRoIEhGUysgZmlsZXN5c3RlbSBpbWFnZXMsIG1ha2luZyB0aGVtIHN1aXRhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMToxODowMS4zNTg0NTgwOTdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMzczODYzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDNiNDJlNDMzZDA0ZTkwYjIwMDljYmRhNDI3NmQ2MWUzNDhkMDJlMTJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMSAxMToxNzo1OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9oZnNwbHVzL2NhdGFsb2cuYyBiL2ZzL2hmc3BsdXMvY2F0YWxvZy5jXFxuaW5kZXggNzc2Y2UzNmNmMDc2YjQuLmM1N2MzYmJiODE0MzU0IDEwMDY0NFxcbi0tLSBhL2ZzL2hmc3BsdXMvY2F0YWxvZy5jXFxuKysrIGIvZnMvaGZzcGx1cy9jYXRhbG9nLmNcXG5AQCAtMTk2LDIwICsxOTYsMjAgQEAgaW50IGhmc3BsdXNfZmluZF9jYXQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdTMyIGNuaWQsXFxuIHtcXG4gXFx0aGZzcGx1c19jYXRfZW50cnkgdG1wID0gezB9O1xcbiBcXHRpbnQgZXJyO1xcbi1cXHR1MTYgdHlwZTtcXG4rXFx0dTE2IGVudHJ5X3R5cGU7XFxuIFxcbiBcXHRoZnNwbHVzX2NhdF9idWlsZF9rZXlfd2l0aF9jbmlkKHNiLCBmZC1cXHUwMDNlc2VhcmNoX2tleSwgY25pZCk7XFxuIFxcdGVyciA9IGhmc3BsdXNfYnJlY19yZWFkX2NhdChmZCwgXFx1MDAyNnRtcCk7XFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdHJldHVybiBlcnI7XFxuIFxcbi1cXHR0eXBlID0gYmUxNl90b19jcHUodG1wLnR5cGUpO1xcbi1cXHRpZiAodHlwZSAhPSBIRlNQTFVTX0ZPTERFUl9USFJFQUQgXFx1MDAyNlxcdTAwMjYgdHlwZSAhPSBIRlNQTFVTX0ZJTEVfVEhSRUFEKSB7XFxuK1xcdGVudHJ5X3R5cGUgPSBiZTE2X3RvX2NwdSh0bXAudHlwZSk7XFxuK1xcdGlmICghaXNfaGZzcGx1c190aHJlYWRfdHlwZShlbnRyeV90eXBlKSkge1xcbiBcXHRcXHRwcl9lcnIoXFxcImZvdW5kIGJhZCB0aHJlYWQgcmVjb3JkIGluIGNhdGFsb2dcXFxcblxcXCIpO1xcbiBcXHRcXHRyZXR1cm4gLUVJTztcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKGJlMTZfdG9fY3B1KHRtcC50aHJlYWQubm9kZU5hbWUubGVuZ3RoKSBcXHUwMDNlIDI1NSkge1xcbitcXHRpZiAoIWlzX2hmc3BsdXNfbmFtZV9sZW5ndGhfdmFsaWQodG1wLnRocmVhZC5ub2RlTmFtZS5sZW5ndGgpKSB7XFxuIFxcdFxcdHByX2VycihcXFwiY2F0YWxvZyBuYW1lIGxlbmd0aCBjb3JydXB0ZWRcXFxcblxcXCIpO1xcbiBcXHRcXHRyZXR1cm4gLUVJTztcXG4gXFx0fVxcbkBAIC0zNTAsMjMgKzM1MCwyOSBAQCBpbnQgaGZzcGx1c19kZWxldGVfY2F0KHUzMiBjbmlkLCBzdHJ1Y3QgaW5vZGUgKmRpciwgY29uc3Qgc3RydWN0IHFzdHIgKnN0cilcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcbiBcXHRpZiAoIXN0cikge1xcbi1cXHRcXHRpbnQgbGVuO1xcbitcXHRcXHRoZnNwbHVzX2NhdF9lbnRyeSBlbnRyeSA9IHswfTtcXG4rXFx0XFx0dTE2IGVudHJ5X3R5cGU7XFxuIFxcbiBcXHRcXHRoZnNwbHVzX2NhdF9idWlsZF9rZXlfd2l0aF9jbmlkKHNiLCBmZC5zZWFyY2hfa2V5LCBjbmlkKTtcXG4tXFx0XFx0ZXJyID0gaGZzX2JyZWNfZmluZChcXHUwMDI2ZmQsIGhmc19maW5kX3JlY19ieV9rZXkpO1xcbitcXHRcXHRlcnIgPSBoZnNwbHVzX2JyZWNfcmVhZF9jYXQoXFx1MDAyNmZkLCBcXHUwMDI2ZW50cnkpO1xcbiBcXHRcXHRpZiAoZXJyKVxcbiBcXHRcXHRcXHRnb3RvIG91dDtcXG4gXFxuLVxcdFxcdG9mZiA9IGZkLmVudHJ5b2Zmc2V0ICtcXG4tXFx0XFx0XFx0b2Zmc2V0b2Yoc3RydWN0IGhmc3BsdXNfY2F0X3RocmVhZCwgbm9kZU5hbWUpO1xcbi1cXHRcXHRmZC5zZWFyY2hfa2V5LVxcdTAwM2VjYXQucGFyZW50ID0gY3B1X3RvX2JlMzIoZGlyLVxcdTAwM2VpX2lubyk7XFxuLVxcdFxcdGhmc19ibm9kZV9yZWFkKGZkLmJub2RlLFxcbi1cXHRcXHRcXHRcXHUwMDI2ZmQuc2VhcmNoX2tleS1cXHUwMDNlY2F0Lm5hbWUubGVuZ3RoLCBvZmYsIDIpO1xcbi1cXHRcXHRsZW4gPSBiZTE2X3RvX2NwdShmZC5zZWFyY2hfa2V5LVxcdTAwM2VjYXQubmFtZS5sZW5ndGgpICogMjtcXG4tXFx0XFx0aGZzX2Jub2RlX3JlYWQoZmQuYm5vZGUsXFxuLVxcdFxcdFxcdFxcdTAwMjZmZC5zZWFyY2hfa2V5LVxcdTAwM2VjYXQubmFtZS51bmljb2RlLFxcbi1cXHRcXHRcXHRvZmYgKyAyLCBsZW4pO1xcbi1cXHRcXHRmZC5zZWFyY2hfa2V5LVxcdTAwM2VrZXlfbGVuID0gY3B1X3RvX2JlMTYoNiArIGxlbik7XFxuK1xcdFxcdGVudHJ5X3R5cGUgPSBiZTE2X3RvX2NwdShlbnRyeS50eXBlKTtcXG4rXFx0XFx0aWYgKCFpc19oZnNwbHVzX3RocmVhZF90eXBlKGVudHJ5X3R5cGUpKSB7XFxuK1xcdFxcdFxcdHByX2VycihcXFwiZm91bmQgYmFkIHRocmVhZCByZWNvcmQgaW4gY2F0YWxvZ1xcXFxuXFxcIik7XFxuK1xcdFxcdFxcdGVyciA9IC1FSU87XFxuK1xcdFxcdFxcdGdvdG8gb3V0O1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRpZiAoIWlzX2hmc3BsdXNfbmFtZV9sZW5ndGhfdmFsaWQoZW50cnkudGhyZWFkLm5vZGVOYW1lLmxlbmd0aCkpIHtcXG4rXFx0XFx0XFx0cHJfZXJyKFxcXCJjYXRhbG9nIG5hbWUgbGVuZ3RoIGNvcnJ1cHRlZFxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdGVyciA9IC1FSU87XFxuK1xcdFxcdFxcdGdvdG8gb3V0O1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRoZnNwbHVzX2NhdF9idWlsZF9rZXlfdW5pKGZkLnNlYXJjaF9rZXksIGRpci1cXHUwMDNlaV9pbm8sXFxuK1xcdFxcdFxcdFxcdFxcdCAgXFx1MDAyNmVudHJ5LnRocmVhZC5ub2RlTmFtZSk7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdGVyciA9IGhmc3BsdXNfY2F0X2J1aWxkX2tleShzYiwgZmQuc2VhcmNoX2tleSwgZGlyLVxcdTAwM2VpX2lubywgc3RyKTtcXG4gXFx0XFx0aWYgKHVubGlrZWx5KGVycikpXFxuZGlmZiAtLWdpdCBhL2ZzL2hmc3BsdXMvaGZzcGx1c19mcy5oIGIvZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmhcXG5pbmRleCBlYzA0YjgyYWQ5Mjc4Ny4uYjk1NGI0NWExMDAzNjkgMTAwNjQ0XFxuLS0tIGEvZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmhcXG4rKysgYi9mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaFxcbkBAIC01MjEsNiArNTIxLDE3IEBAIHN0YXRpYyBpbmxpbmUgdTMyIGhmc3BsdXNfY2F0X3RocmVhZF9zaXplKGNvbnN0IHN0cnVjdCBoZnNwbHVzX2NhdF90aHJlYWQgKnRocmVhXFxuIFxcdCAgICAgICBiZTE2X3RvX2NwdSh0aHJlYWQtXFx1MDAzZW5vZGVOYW1lLmxlbmd0aCkgKiBzaXplb2YoaGZzcGx1c191bmljaHIpO1xcbiB9XFxuIFxcbitzdGF0aWMgaW5saW5lIGJvb2wgaXNfaGZzcGx1c190aHJlYWRfdHlwZSh1MTYgZW50cnlfdHlwZSlcXG4re1xcbitcXHRyZXR1cm4gZW50cnlfdHlwZSA9PSBIRlNQTFVTX0ZPTERFUl9USFJFQUQgfHxcXG4rXFx0ICAgICAgIGVudHJ5X3R5cGUgPT0gSEZTUExVU19GSUxFX1RIUkVBRDtcXG4rfVxcbitcXG4rc3RhdGljIGlubGluZSBib29sIGlzX2hmc3BsdXNfbmFtZV9sZW5ndGhfdmFsaWQoX19iZTE2IG5hbWVfbGVuZ3RoKVxcbit7XFxuK1xcdHJldHVybiBiZTE2X3RvX2NwdShuYW1lX2xlbmd0aCkgXFx1MDAzYz0gSEZTUExVU19NQVhfU1RSTEVOO1xcbit9XFxuK1xcbiBpbnQgaGZzcGx1c19icmVjX3JlYWRfY2F0KHN0cnVjdCBoZnNfZmluZF9kYXRhICpmZCwgaGZzcGx1c19jYXRfZW50cnkgKmVudHJ5KTtcXG4gXFxuIC8qXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDExOjE4OjAxLjk3MzIzODMzN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgwNjA5ODkxMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSEZTUExVU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImhmc3BsdXNfZmluZF9jYXRcIixcbiAgICBcImhmc3BsdXNfZGVsZXRlX2NhdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgY2F0YWxvZyBvcGVyYXRpb25zIGluIHRoZSBIRlMrIGZpbGVzeXN0ZW0gZHJpdmVyIChoZnNwbHVzX2ZpbmRfY2F0IGFuZCBoZnNwbHVzX2RlbGV0ZV9jYXQpIGJ5IGFkZGluZyB2YWxpZGF0aW9uIGZvciB0aHJlYWQgcmVjb3JkIHR5cGVzIGFuZCBuYW1lIGxlbmd0aHMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIHdoZW4gbW91bnRpbmcgYW5kIGludGVyYWN0aW5nIHdpdGggSEZTKyBmaWxlc3lzdGVtIGltYWdlcywgbWFraW5nIHRoZW0gc3VpdGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgM2I0MmU0MzNkMDRlOTBiMjAwOWNiZGE0Mjc2ZDYxZTM0OGQwMmUxMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDEgMTE6MTc6NTkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9mcy9oZnNwbHVzL2NhdGFsb2cuYyBiL2ZzL2hmc3BsdXMvY2F0YWxvZy5jXG5pbmRleCA3NzZjZTM2Y2YwNzZiNC4uYzU3YzNiYmI4MTQzNTQgMTAwNjQ0XG4tLS0gYS9mcy9oZnNwbHVzL2NhdGFsb2cuY1xuKysrIGIvZnMvaGZzcGx1cy9jYXRhbG9nLmNcbkBAIC0xOTYsMjAgKzE5NiwyMCBAQCBpbnQgaGZzcGx1c19maW5kX2NhdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcbiB7XG4gXHRoZnNwbHVzX2NhdF9lbnRyeSB0bXAgPSB7MH07XG4gXHRpbnQgZXJyO1xuLVx0dTE2IHR5cGU7XG4rXHR1MTYgZW50cnlfdHlwZTtcbiBcbiBcdGhmc3BsdXNfY2F0X2J1aWxkX2tleV93aXRoX2NuaWQoc2IsIGZkLVx1MDAzZXNlYXJjaF9rZXksIGNuaWQpO1xuIFx0ZXJyID0gaGZzcGx1c19icmVjX3JlYWRfY2F0KGZkLCBcdTAwMjZ0bXApO1xuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbiBcbi1cdHR5cGUgPSBiZTE2X3RvX2NwdSh0bXAudHlwZSk7XG4tXHRpZiAodHlwZSAhPSBIRlNQTFVTX0ZPTERFUl9USFJFQUQgXHUwMDI2XHUwMDI2IHR5cGUgIT0gSEZTUExVU19GSUxFX1RIUkVBRCkge1xuK1x0ZW50cnlfdHlwZSA9IGJlMTZfdG9fY3B1KHRtcC50eXBlKTtcbitcdGlmICghaXNfaGZzcGx1c190aHJlYWRfdHlwZShlbnRyeV90eXBlKSkge1xuIFx0XHRwcl9lcnIoXCJmb3VuZCBiYWQgdGhyZWFkIHJlY29yZCBpbiBjYXRhbG9nXFxuXCIpO1xuIFx0XHRyZXR1cm4gLUVJTztcbiBcdH1cbiBcbi1cdGlmIChiZTE2X3RvX2NwdSh0bXAudGhyZWFkLm5vZGVOYW1lLmxlbmd0aCkgXHUwMDNlIDI1NSkge1xuK1x0aWYgKCFpc19oZnNwbHVzX25hbWVfbGVuZ3RoX3ZhbGlkKHRtcC50aHJlYWQubm9kZU5hbWUubGVuZ3RoKSkge1xuIFx0XHRwcl9lcnIoXCJjYXRhbG9nIG5hbWUgbGVuZ3RoIGNvcnJ1cHRlZFxcblwiKTtcbiBcdFx0cmV0dXJuIC1FSU87XG4gXHR9XG5AQCAtMzUwLDIzICszNTAsMjkgQEAgaW50IGhmc3BsdXNfZGVsZXRlX2NhdCh1MzIgY25pZCwgc3RydWN0IGlub2RlICpkaXIsIGNvbnN0IHN0cnVjdCBxc3RyICpzdHIpXG4gXHRcdGdvdG8gb3V0O1xuIFxuIFx0aWYgKCFzdHIpIHtcbi1cdFx0aW50IGxlbjtcbitcdFx0aGZzcGx1c19jYXRfZW50cnkgZW50cnkgPSB7MH07XG4rXHRcdHUxNiBlbnRyeV90eXBlO1xuIFxuIFx0XHRoZnNwbHVzX2NhdF9idWlsZF9rZXlfd2l0aF9jbmlkKHNiLCBmZC5zZWFyY2hfa2V5LCBjbmlkKTtcbi1cdFx0ZXJyID0gaGZzX2JyZWNfZmluZChcdTAwMjZmZCwgaGZzX2ZpbmRfcmVjX2J5X2tleSk7XG4rXHRcdGVyciA9IGhmc3BsdXNfYnJlY19yZWFkX2NhdChcdTAwMjZmZCwgXHUwMDI2ZW50cnkpO1xuIFx0XHRpZiAoZXJyKVxuIFx0XHRcdGdvdG8gb3V0O1xuIFxuLVx0XHRvZmYgPSBmZC5lbnRyeW9mZnNldCArXG4tXHRcdFx0b2Zmc2V0b2Yoc3RydWN0IGhmc3BsdXNfY2F0X3RocmVhZCwgbm9kZU5hbWUpO1xuLVx0XHRmZC5zZWFyY2hfa2V5LVx1MDAzZWNhdC5wYXJlbnQgPSBjcHVfdG9fYmUzMihkaXItXHUwMDNlaV9pbm8pO1xuLVx0XHRoZnNfYm5vZGVfcmVhZChmZC5ibm9kZSxcbi1cdFx0XHRcdTAwMjZmZC5zZWFyY2hfa2V5LVx1MDAzZWNhdC5uYW1lLmxlbmd0aCwgb2ZmLCAyKTtcbi1cdFx0bGVuID0gYmUxNl90b19jcHUoZmQuc2VhcmNoX2tleS1cdTAwM2VjYXQubmFtZS5sZW5ndGgpICogMjtcbi1cdFx0aGZzX2Jub2RlX3JlYWQoZmQuYm5vZGUsXG4tXHRcdFx0XHUwMDI2ZmQuc2VhcmNoX2tleS1cdTAwM2VjYXQubmFtZS51bmljb2RlLFxuLVx0XHRcdG9mZiArIDIsIGxlbik7XG4tXHRcdGZkLnNlYXJjaF9rZXktXHUwMDNla2V5X2xlbiA9IGNwdV90b19iZTE2KDYgKyBsZW4pO1xuK1x0XHRlbnRyeV90eXBlID0gYmUxNl90b19jcHUoZW50cnkudHlwZSk7XG4rXHRcdGlmICghaXNfaGZzcGx1c190aHJlYWRfdHlwZShlbnRyeV90eXBlKSkge1xuK1x0XHRcdHByX2VycihcImZvdW5kIGJhZCB0aHJlYWQgcmVjb3JkIGluIGNhdGFsb2dcXG5cIik7XG4rXHRcdFx0ZXJyID0gLUVJTztcbitcdFx0XHRnb3RvIG91dDtcbitcdFx0fVxuK1xuK1x0XHRpZiAoIWlzX2hmc3BsdXNfbmFtZV9sZW5ndGhfdmFsaWQoZW50cnkudGhyZWFkLm5vZGVOYW1lLmxlbmd0aCkpIHtcbitcdFx0XHRwcl9lcnIoXCJjYXRhbG9nIG5hbWUgbGVuZ3RoIGNvcnJ1cHRlZFxcblwiKTtcbitcdFx0XHRlcnIgPSAtRUlPO1xuK1x0XHRcdGdvdG8gb3V0O1xuK1x0XHR9XG4rXG4rXHRcdGhmc3BsdXNfY2F0X2J1aWxkX2tleV91bmkoZmQuc2VhcmNoX2tleSwgZGlyLVx1MDAzZWlfaW5vLFxuK1x0XHRcdFx0XHQgIFx1MDAyNmVudHJ5LnRocmVhZC5ub2RlTmFtZSk7XG4gXHR9IGVsc2Uge1xuIFx0XHRlcnIgPSBoZnNwbHVzX2NhdF9idWlsZF9rZXkoc2IsIGZkLnNlYXJjaF9rZXksIGRpci1cdTAwM2VpX2lubywgc3RyKTtcbiBcdFx0aWYgKHVubGlrZWx5KGVycikpXG5kaWZmIC0tZ2l0IGEvZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmggYi9mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaFxuaW5kZXggZWMwNGI4MmFkOTI3ODcuLmI5NTRiNDVhMTAwMzY5IDEwMDY0NFxuLS0tIGEvZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmhcbisrKyBiL2ZzL2hmc3BsdXMvaGZzcGx1c19mcy5oXG5AQCAtNTIxLDYgKzUyMSwxNyBAQCBzdGF0aWMgaW5saW5lIHUzMiBoZnNwbHVzX2NhdF90aHJlYWRfc2l6ZShjb25zdCBzdHJ1Y3QgaGZzcGx1c19jYXRfdGhyZWFkICp0aHJlYVxuIFx0ICAgICAgIGJlMTZfdG9fY3B1KHRocmVhZC1cdTAwM2Vub2RlTmFtZS5sZW5ndGgpICogc2l6ZW9mKGhmc3BsdXNfdW5pY2hyKTtcbiB9XG4gXG4rc3RhdGljIGlubGluZSBib29sIGlzX2hmc3BsdXNfdGhyZWFkX3R5cGUodTE2IGVudHJ5X3R5cGUpXG4re1xuK1x0cmV0dXJuIGVudHJ5X3R5cGUgPT0gSEZTUExVU19GT0xERVJfVEhSRUFEIHx8XG4rXHQgICAgICAgZW50cnlfdHlwZSA9PSBIRlNQTFVTX0ZJTEVfVEhSRUFEO1xuK31cbitcbitzdGF0aWMgaW5saW5lIGJvb2wgaXNfaGZzcGx1c19uYW1lX2xlbmd0aF92YWxpZChfX2JlMTYgbmFtZV9sZW5ndGgpXG4re1xuK1x0cmV0dXJuIGJlMTZfdG9fY3B1KG5hbWVfbGVuZ3RoKSBcdTAwM2M9IEhGU1BMVVNfTUFYX1NUUkxFTjtcbit9XG4rXG4gaW50IGhmc3BsdXNfYnJlY19yZWFkX2NhdChzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQsIGhmc3BsdXNfY2F0X2VudHJ5ICplbnRyeSk7XG4gXG4gLypcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDExOjE4OjAxLjk3MzI0MDk3N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYzNjg2NDQwMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBIRlMrIEZpbGVzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBhbmQgaXQgc2VlbXMgbGlrZSB3ZSd2ZSBnb3Qgc29tZSBzaWduaWZpY2FudCBjaGFuZ2VzIHJvbGxpbmcgaW4gZm9yIHRoZSBIRlMrIGZpbGVzeXN0ZW0gZHJpdmVyLiBTcGVjaWZpY2FsbHksIHRoZSBtb2RpZmljYXRpb25zIGFyZSBmb2N1c2VkIG9uIGBmcy9oZnNwbHVzL2NhdGFsb2cuY2AgYW5kIGBmcy9oZnNwbHVzL2hmc3BsdXNfZnMuaGAuIFRoZSBjb3JlIG9mIHRoZSBhbHRlcmF0aW9uIGFwcGVhcnMgdG8gYmUgYXJvdW5kIHRoZSBmdW5jdGlvbnMgYGhmc3BsdXNfZmluZF9jYXRgIGFuZCBgaGZzcGx1c19kZWxldGVfY2F0YC5cblxuSXQgbG9va3MgbGlrZSB0aGUgZGV2ZWxvcGVycyBoYXZlIGludHJvZHVjZWQgdGhlc2UgbmV3IGhlbHBlciBmdW5jdGlvbnMsIGBpc19oZnNwbHVzX3RocmVhZF90eXBlYCBhbmQgYGlzX2hmc3BsdXNfbmFtZV9sZW5ndGhfdmFsaWRgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIGlzIGxpa2VseSBmb3IgYWRkaW5nIHNvbWUgbXVjaC1uZWVkZWQgdmFsaWRhdGlvbi4gVGhleSdyZSBwcm9iYWJseSB0cnlpbmcgdG8gcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIG9yIHBvdGVudGlhbCBjb3JydXB0aW9uIHdoZW4gZGVhbGluZyB3aXRoIG5hbWUgbGVuZ3Rocywgd2hpY2ggaXMgYSBzbWFydCBtb3ZlLiBJJ3ZlIHNlZW4gdGhvc2Uga2luZHMgb2YgYnVncyBiZWZvcmU7IHRoZXkgY2FuIGJlIG5hc3R5LlxuXG5GdXJ0aGVybW9yZSwgaW4gYGhmc3BsdXNfZGVsZXRlX2NhdGAsIHRoZXkndmUgcmVwbGFjZWQgdGhlIGRpcmVjdCB1c2Ugb2YgYGhmc19icmVjX2ZpbmRgIGFuZCBgaGZzX2Jub2RlX3JlYWRgIHdpdGggYGhmc3BsdXNfYnJlY19yZWFkX2NhdGAuIFRoYXQncyBhIGRlZmluaXRlIGNvZGUgY2xlYW51cCBhbmQgcHJvYmFibHkgYW4gYXR0ZW1wdCB0byBjZW50cmFsaXplIHRoZSBsb2dpYywgbWFraW5nIHRoZSBjb2RlIG1vcmUgbWFpbnRhaW5hYmxlIGFuZCBlYXNpZXIgdG8gYXVkaXQuIEFuZCBpbnN0ZWFkIG9mIG1hbnVhbGx5IGNvbnN0cnVjdGluZyB0aGUga2V5LCB0aGV5J3JlIG5vdyB1c2luZyBgaGZzcGx1c19jYXRfYnVpbGRfa2V5X3VuaWAuIEdvb2QsIGxlc3Mgcm9vbSBmb3IgZXJyb3IgdGhlcmUuIFRoaXMgaXMgYSBuaWNlIGZ1bmN0aW9uYWwgaW1wcm92ZW1lbnQuXG5cbkVzc2VudGlhbGx5LCB0aGlzIHBhdGNoIGlzIGFib3V0IGVuaGFuY2luZyByZWxpYWJpbGl0eSBhbmQgY2xlYW5pbmcgdXAgdGhlIGNvZGUgZm9yIHRoZSBIRlMrIGRyaXZlci4gSSdkIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBhY3R1YWwgY29kZSB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSwgYnV0IGJhc2VkIG9uIHRoaXMgc3VtbWFyeSwgaXQgc2VlbXMgbGlrZSBhIHNvbGlkIHNldCBvZiBjaGFuZ2VzLlxuXG5Ob3csIGxldCdzIGp1c3QgbWFrZSBzdXJlIEhGUysgaXMgZXZlbiBjb25maWd1cmVkLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgY29uZmlncyB3aXRoIGBncmVwcGVyYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk4MywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDExOjE4OjA4LjM0MTg4NzQ0NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjAwOTMxNjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEhGU1BMVVNfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaGZzcGx1cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2hmc3BsdXMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2hmc3BsdXMvS2NvbmZpZzoyOmNvbmZpZyBIRlNQTFVTX0ZTXFxuZnMvaGZzcGx1cy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkFwcGxlIEV4dGVuZGVkIEhGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMToxODowOC42MDE5ODgxNjlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjI4MjgyNzEzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6XG5cbioqUmVmbGVjdGluZyBvbiBSZWNlbnQgQ29kZSBDaGFuZ2VzKipcblxuT2theSwgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpbiBwbGF5IGlzIGBIRlNQTFVTX0ZTYC4gUmlnaHQsIGdvdCBpdC4gTm93LCBsZXQncyBtZW50YWxseSB3YWxrIHRocm91Z2ggdGhlIHJlY2VudCBtb2RpZmljYXRpb25zIHJlbGF0ZWQgdG8gdGhpcyBmaWxlc3lzdGVtLiBTcGVjaWZpY2FsbHksIEkndmUgZ290IHRvIGVuc3VyZSB0aGUgY2hhbmdlcyB0byBgaGZzcGx1c19maW5kX2NhdGAgYW5kIGBoZnNwbHVzX2RlbGV0ZV9jYXRgIGFyZSBwcm9wZXJseSBhY2NvdW50ZWQgZm9yIGluIHRoZSBvbmdvaW5nIHdvcmsuIFRob3NlIG5lZWQgdG8gYmUgZXhwbGljaXRseSBhZGRlZCB0byB0aGUgYEZvY3VzU3ltYm9sc2AgbGlzdCwgdGhhdCdzIGNydWNpYWwgZm9yIHRoZSB0b29sIEkgYW0gdXNpbmcuIEFsd2F5cyBlbnN1cmluZyB0aGF0IGNyaXRpY2FsIGNoYW5nZXMgYXJlIGZsYWdnZWQgcHJvcGVybHkgaXMgdml0YWwgZm9yIGRlYnVnZ2luZyBhbmQgdW5kZXJzdGFuZGluZyB0aGUgY29udGV4dC5cblxuQmVmb3JlIEkgZ28gZnVydGhlciwgbGV0IG1lIGp1c3QgcXVpY2tseSBydW4gYSBzYW5pdHkgY2hlY2suIExldCBtZSBkb3VibGUtY2hlY2sgaWYgdGhlcmUgbWlnaHQgYmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gZmxhZ3MgdGhhdCBhcmUgcG90ZW50aWFsbHkgaW4gcGxheSBoZXJlLiBJIGRvbid0IHdhbnQgdG8gb3Zlcmxvb2sgYW55dGhpbmcgY3JpdGljYWwhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NDEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMToxODoyNC44ODQ4MTc1NDhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwNTI1Mjc1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSEZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2hmc3BsdXMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9oZnNwbHVzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9oZnNwbHVzL0tjb25maWc6Mjpjb25maWcgSEZTUExVU19GU1xcbmZzL2hmc3BsdXMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJBcHBsZSBFeHRlbmRlZCBIRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG4tLVxcbmZzL2hmc3BsdXMvS2NvbmZpZy0xNy1cXG5mcy9oZnNwbHVzL0tjb25maWc6MTg6Y29uZmlnIEhGU1BMVVNfS1VOSVRfVEVTVFxcbmZzL2hmc3BsdXMvS2NvbmZpZy0xOS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIEhGUysgZmlsZXN5c3RlbVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMToxODoyNi43OTAwNzYwNjJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjAxODc5ODA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHRoaXMuXG5cbioqTmF2aWdhdGluZyB0aGUgSEZTKyBGaWxlc3lzdGVtIERyaXZlciBmb3IgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdGllcyoqXG5cbkFscmlnaHQsIG15IGZvY3VzIGlzIGRlZmluaXRlbHkgemVyb2luZyBpbiBvbiB0aGUgYEhGU1BMVVNfRlNgIGNvbmZpZ3VyYXRpb24uIEl0J3MgdGhlIHByaW1hcnkgcG9pbnQgb2YgZW50cnkgaGVyZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGxldCdzIHNlZSBpZiB0aGUgZnVuY3Rpb25zIGBoZnNwbHVzX2RlbGV0ZV9jYXRgIGFuZCBgaGZzcGx1c19maW5kX2NhdGAgYXJlIHJlYWNoYWJsZS4gVGhlc2UgYXJlIGtleSBiZWNhdXNlIHRoZXkgYXJlIGNvbXBvbmVudHMgb2YgdGhlIEhGUysgZmlsZXN5c3RlbSBkcml2ZXIuIFRoYXQgZHJpdmVyIGlzIHZ1bG5lcmFibGUgdG8gZnV6emluZy4gSSBjYW4gZG8gc28gYnkgbW91bnRpbmcgYSBzcGVjaWZpY2FsbHkgY3JhZnRlZCBIRlMrIGltYWdlLiBUaGlzIGZlZWxzIGxpa2UgdGhlIHJpZ2h0IHBhdGggdG8gZXhwbG9yZS4gVG8gZG91YmxlIGNoZWNrIEknbGwgZXhwbG9yZSB0aGUgY2FsbGVycyBvZiBgaGZzcGx1c19kZWxldGVfY2F0YC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDE2OSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjg0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDExOjE4OjI5Ljk5MTk1ODYwOVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDU5MjE3MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaGZzcGx1c19kZWxldGVfY2F0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2hmc3BsdXMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2hmc3BsdXMvY2F0YWxvZy5jPTI1Mz1pbnQgaGZzcGx1c19jcmVhdGVfY2F0KHUzMiBjbmlkLCBzdHJ1Y3QgaW5vZGUgKmRpcixcXG4tLVxcbmZzL2hmc3BsdXMvY2F0YWxvZy5jLTMzMC1cXG5mcy9oZnNwbHVzL2NhdGFsb2cuYzozMzE6aW50IGhmc3BsdXNfZGVsZXRlX2NhdCh1MzIgY25pZCwgc3RydWN0IGlub2RlICpkaXIsIGNvbnN0IHN0cnVjdCBxc3RyICpzdHIpXFxuZnMvaGZzcGx1cy9jYXRhbG9nLmMtMzMyLXtcXG4tLVxcbmZzL2hmc3BsdXMvZGlyLmM9MzcwPXN0YXRpYyBpbnQgaGZzcGx1c191bmxpbmsoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSlcXG4tLVxcbmZzL2hmc3BsdXMvZGlyLmMtMzk5LVxcdH1cXG5mcy9oZnNwbHVzL2Rpci5jOjQwMDpcXHRyZXMgPSBoZnNwbHVzX2RlbGV0ZV9jYXQoY25pZCwgZGlyLCBcXHUwMDI2ZGVudHJ5LVxcdTAwM2VkX25hbWUpO1xcbmZzL2hmc3BsdXMvZGlyLmMtNDAxLVxcdGlmIChyZXMpXFxuLS1cXG5mcy9oZnNwbHVzL2Rpci5jLTQxMS1cXHRcXHRcXHRpZiAoIWF0b21pY19yZWFkKFxcdTAwMjZIRlNQTFVTX0koaW5vZGUpLVxcdTAwM2VvcGVuY250KSkge1xcbmZzL2hmc3BsdXMvZGlyLmM6NDEyOlxcdFxcdFxcdFxcdHJlcyA9IGhmc3BsdXNfZGVsZXRlX2NhdChpbm9kZS1cXHUwMDNlaV9pbm8sXFxuZnMvaGZzcGx1cy9kaXIuYy00MTMtXFx0XFx0XFx0XFx0XFx0XFx0XFx0IHNiaS1cXHUwMDNlaGlkZGVuX2RpcixcXG4tLVxcbmZzL2hmc3BsdXMvZGlyLmM9NDM5PXN0YXRpYyBpbnQgaGZzcGx1c19ybWRpcihzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KVxcbi0tXFxuZnMvaGZzcGx1cy9kaXIuYy00NDgtXFx0bXV0ZXhfbG9jayhcXHUwMDI2c2JpLVxcdTAwM2V2aF9tdXRleCk7XFxuZnMvaGZzcGx1cy9kaXIuYzo0NDk6XFx0cmVzID0gaGZzcGx1c19kZWxldGVfY2F0KGlub2RlLVxcdTAwM2VpX2lubywgZGlyLCBcXHUwMDI2ZGVudHJ5LVxcdTAwM2VkX25hbWUpO1xcbmZzL2hmc3BsdXMvZGlyLmMtNDUwLVxcdGlmIChyZXMpXFxuLS1cXG5mcy9oZnNwbHVzL2Rpci5jPTQ2Mz1zdGF0aWMgaW50IGhmc3BsdXNfc3ltbGluayhzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCwgc3RydWN0IGlub2RlICpkaXIsXFxuLS1cXG5mcy9oZnNwbHVzL2Rpci5jLTQ5MC1cXHRcXHQvKiBUcnkgdG8gZGVsZXRlIGFueXdheSB3aXRob3V0IGVycm9yIGFuYWx5c2lzLiAqL1xcbmZzL2hmc3BsdXMvZGlyLmM6NDkxOlxcdFxcdGhmc3BsdXNfZGVsZXRlX2NhdChpbm9kZS1cXHUwMDNlaV9pbm8sIGRpciwgXFx1MDAyNmRlbnRyeS1cXHUwMDNlZF9uYW1lKTtcXG5mcy9oZnNwbHVzL2Rpci5jLTQ5Mi1cXHRcXHRnb3RvIG91dF9lcnI7XFxuLS1cXG5mcy9oZnNwbHVzL2Rpci5jPTUxND1zdGF0aWMgaW50IGhmc3BsdXNfbWtub2Qoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsIHN0cnVjdCBpbm9kZSAqZGlyLFxcbi0tXFxuZnMvaGZzcGx1cy9kaXIuYy01NDAtXFx0XFx0LyogVHJ5IHRvIGRlbGV0ZSBhbnl3YXkgd2l0aG91dCBlcnJvciBhbmFseXNpcy4gKi9cXG5mcy9oZnNwbHVzL2Rpci5jOjU0MTpcXHRcXHRoZnNwbHVzX2RlbGV0ZV9jYXQoaW5vZGUtXFx1MDAzZWlfaW5vLCBkaXIsIFxcdTAwMjZkZW50cnktXFx1MDAzZWRfbmFtZSk7XFxuZnMvaGZzcGx1cy9kaXIuYy01NDItXFx0XFx0Z290byBmYWlsZWRfbWtub2Q7XFxuLS1cXG5mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaD00MjM9aW50IGhmc3BsdXNfY3JlYXRlX2NhdCh1MzIgY25pZCwgc3RydWN0IGlub2RlICpkaXIsIGNvbnN0IHN0cnVjdCBxc3RyICpzdHIsXFxuZnMvaGZzcGx1cy9oZnNwbHVzX2ZzLmgtNDI0LVxcdFxcdCAgICAgICBzdHJ1Y3QgaW5vZGUgKmlub2RlKTtcXG5mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaDo0MjU6aW50IGhmc3BsdXNfZGVsZXRlX2NhdCh1MzIgY25pZCwgc3RydWN0IGlub2RlICpkaXIsIGNvbnN0IHN0cnVjdCBxc3RyICpzdHIpO1xcbmZzL2hmc3BsdXMvaGZzcGx1c19mcy5oLTQyNi1pbnQgaGZzcGx1c19yZW5hbWVfY2F0KHUzMiBjbmlkLCBzdHJ1Y3QgaW5vZGUgKnNyY19kaXIsIGNvbnN0IHN0cnVjdCBxc3RyICpzcmNfbmFtZSxcXG4tLVxcbmZzL2hmc3BsdXMvaW5vZGUuYz0yODE9c3RhdGljIGludCBoZnNwbHVzX2ZpbGVfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4tLVxcbmZzL2hmc3BsdXMvaW5vZGUuYy0yOTAtXFx0XFx0aWYgKGlub2RlLVxcdTAwM2VpX2ZsYWdzIFxcdTAwMjYgU19ERUFEKSB7XFxuZnMvaGZzcGx1cy9pbm9kZS5jOjI5MTpcXHRcXHRcXHRoZnNwbHVzX2RlbGV0ZV9jYXQoaW5vZGUtXFx1MDAzZWlfaW5vLFxcbmZzL2hmc3BsdXMvaW5vZGUuYy0yOTItXFx0XFx0XFx0XFx0XFx0ICAgSEZTUExVU19TQihzYiktXFx1MDAzZWhpZGRlbl9kaXIsIE5VTEwpO1xcbi0tXFxuZnMvaGZzcGx1cy9zdXBlci5jPTQ1Mj1zdGF0aWMgaW50IGhmc3BsdXNfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuLS1cXG5mcy9oZnNwbHVzL3N1cGVyLmMtNjQzLVxcdFxcdFxcdFxcdCAqL1xcbmZzL2hmc3BsdXMvc3VwZXIuYzo2NDQ6XFx0XFx0XFx0XFx0aGZzcGx1c19kZWxldGVfY2F0KHNiaS1cXHUwMDNlaGlkZGVuX2Rpci1cXHUwMDNlaV9pbm8sXFxuZnMvaGZzcGx1cy9zdXBlci5jLTY0NS1cXHRcXHRcXHRcXHRcXHRcXHRcXHRyb290LCBcXHUwMDI2c3RyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDFUMTE6MTg6MzAuNzk3ODkwMDRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDE0MTc0NTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgSSBzZWUgaXQ6XG5cbioqUmVhY2hpbmcgYW5kIFRlc3RpbmcgYGhmc3BsdXNfZGVsZXRlX2NhdGAqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMsIGl0J3MgcHJldHR5IGNsZWFyIHRoYXQgYGhmc3BsdXNfZGVsZXRlX2NhdGAgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uIGluIHRoZSBIRlMrIGZpbGVzeXN0ZW0gaW1wbGVtZW50YXRpb24uIEl0J3MgY2FsbGVkIGZyb20gYSBidW5jaCBvZiBrZXkgb3BlcmF0aW9uczogYGhmc3BsdXNfdW5saW5rYCwgYGhmc3BsdXNfcm1kaXJgLCBgaGZzcGx1c19zeW1saW5rYCwgYGhmc3BsdXNfbWtub2RgLCBgaGZzcGx1c19maWxlX3JlbGVhc2VgLCBhbmQgZXZlbiBkdXJpbmcgc3VwZXJibG9jayBpbml0aWFsaXphdGlvbiB2aWEgYGhmc3BsdXNfZmlsbF9zdXBlcmAuIFRoYXQncyBhIHN0cm9uZyBpbmRpY2F0b3Igb2YgaXRzIGltcG9ydGFuY2Ug4oCTIGl0J3MgZnVuZGFtZW50YWwgdG8gaG93IGZpbGVzIGFuZCBkaXJlY3RvcmllcyBhcmUgbWFuYWdlZCwgYW5kIGhvdyB0aGUgdm9sdW1lIGl0c2VsZiBpcyBzZXQgdXAuIFRoZSBmYWN0IHRoYXQgaXQncyBjYWxsZWQgZnJvbSBzbyBtYW55IHBsYWNlcyBzdWdnZXN0cyBhIGNvbXByZWhlbnNpdmUgYW5kIHBvc3NpYmx5IGNvbXBsZXggcm9sZSBpbiBtYWludGFpbmluZyB0aGUgY2F0YWxvZy4gVGhpcyBhbHNvIG1lYW5zIGl0J3MgKmRlZmluaXRlbHkqIHJlYWNoYWJsZTsgdGhlcmUncyBubyBxdWVzdGlvbiBhYm91dCB3aGV0aGVyIGl0IGdldHMgdXNlZC4gQW5kLCBpZiBpdCdzIHJlYWNoYWJsZSwgaXQncyB0ZXN0YWJsZS4gSSBjYW4gY3JhZnQgdGVzdCBjYXNlcyB0byBleGVyY2lzZSBpdCB1bmRlciB2YXJpb3VzIGNvbmRpdGlvbnMsIHdoaWNoIGlzIGVzc2VudGlhbCBmb3IgZW5zdXJpbmcgaXRzIGNvcnJlY3RuZXNzIGFuZCByb2J1c3RuZXNzLlxuXG5Ob3csIEkgbmVlZCB0byBsb29rIGludG8gaXRzIGNhbGxlcnMgZnVydGhlci4gVW5kZXJzdGFuZGluZyB3aGF0IGNhbGxzIGBoZnNwbHVzX2ZpbmRfY2F0YCB3aWxsIHByb3ZpZGUgaW1wb3J0YW50IGNvbnRleHQgYW5kIGFuIHVuZGVyc3RhbmRpbmcgb2YgaXRzIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU3NywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDExOjE4OjM0LjgxMjA2ODUzOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUzMzE1NTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhmc3BsdXNfZmluZF9jYXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaGZzcGx1cy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaGZzcGx1cy9jYXRhbG9nLmM9MTc2PXN0YXRpYyBpbnQgaGZzcGx1c19maWxsX2NhdF90aHJlYWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcXG4tLVxcbmZzL2hmc3BsdXMvY2F0YWxvZy5jLTE5My0vKiBUcnkgdG8gZ2V0IGEgY2F0YWxvZyBlbnRyeSBmb3IgZ2l2ZW4gY2F0YWxvZyBpZCAqL1xcbmZzL2hmc3BsdXMvY2F0YWxvZy5jOjE5NDppbnQgaGZzcGx1c19maW5kX2NhdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcXG5mcy9oZnNwbHVzL2NhdGFsb2cuYy0xOTUtXFx0XFx0ICAgICBzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQpXFxuLS1cXG5mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaD00MjA9dm9pZCBoZnNwbHVzX2NhdF9zZXRfcGVybXMoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGhmc3BsdXNfcGVybSAqcGVybXMpO1xcbmZzL2hmc3BsdXMvaGZzcGx1c19mcy5oOjQyMTppbnQgaGZzcGx1c19maW5kX2NhdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1MzIgY25pZCxcXG5mcy9oZnNwbHVzL2hmc3BsdXNfZnMuaC00MjItXFx0XFx0ICAgICBzdHJ1Y3QgaGZzX2ZpbmRfZGF0YSAqZmQpO1xcbi0tXFxuZnMvaGZzcGx1cy9pbm9kZS5jPTY3Nz1pbnQgaGZzcGx1c19jYXRfd3JpdGVfaW5vZGUoc3RydWN0IGlub2RlICppbm9kZSlcXG4tLVxcbmZzL2hmc3BsdXMvaW5vZGUuYy02OTYtXFxuZnMvaGZzcGx1cy9pbm9kZS5jOjY5NzpcXHRpZiAoaGZzcGx1c19maW5kX2NhdChtYWluX2lub2RlLVxcdTAwM2VpX3NiLCBtYWluX2lub2RlLVxcdTAwM2VpX2lubywgXFx1MDAyNmZkKSlcXG5mcy9oZnNwbHVzL2lub2RlLmMtNjk4LVxcdFxcdC8qIHBhbmljPyAqL1xcbi0tXFxuZnMvaGZzcGx1cy9zdXBlci5jPTY1PXN0cnVjdCBpbm9kZSAqaGZzcGx1c19pZ2V0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgaW5vKVxcbi0tXFxuZnMvaGZzcGx1cy9zdXBlci5jLTk5LVxcdFxcdGlmICghZXJyKSB7XFxuZnMvaGZzcGx1cy9zdXBlci5jOjEwMDpcXHRcXHRcXHRlcnIgPSBoZnNwbHVzX2ZpbmRfY2F0KGlub2RlLVxcdTAwM2VpX3NiLCBpbm9kZS1cXHUwMDNlaV9pbm8sIFxcdTAwMjZmZCk7XFxuZnMvaGZzcGx1cy9zdXBlci5jLTEwMS1cXHRcXHRcXHRpZiAoIWVycilcXG4tLVxcbmZzL2hmc3BsdXMveGF0dHIuYz0zNTE9aW50IF9faGZzcGx1c19zZXR4YXR0cihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCBjaGFyICpuYW1lLFxcbi0tXFxuZnMvaGZzcGx1cy94YXR0ci5jLTM3Ni1cXG5mcy9oZnNwbHVzL3hhdHRyLmM6Mzc3OlxcdGVyciA9IGhmc3BsdXNfZmluZF9jYXQoaW5vZGUtXFx1MDAzZWlfc2IsIGlub2RlLVxcdTAwM2VpX2lubywgXFx1MDAyNmNhdF9mZCk7XFxuZnMvaGZzcGx1cy94YXR0ci5jLTM3OC1cXHRpZiAoZXJyKSB7XFxuLS1cXG5mcy9oZnNwbHVzL3hhdHRyLmM9NTYyPXN0YXRpYyBzc2l6ZV90IGhmc3BsdXNfZ2V0eGF0dHJfZmluZGVyX2luZm8oc3RydWN0IGlub2RlICppbm9kZSxcXG4tLVxcbmZzL2hmc3BsdXMveGF0dHIuYy01NzktXFx0XFx0fVxcbmZzL2hmc3BsdXMveGF0dHIuYzo1ODA6XFx0XFx0cmVzID0gaGZzcGx1c19maW5kX2NhdChpbm9kZS1cXHUwMDNlaV9zYiwgaW5vZGUtXFx1MDAzZWlfaW5vLCBcXHUwMDI2ZmQpO1xcbmZzL2hmc3BsdXMveGF0dHIuYy01ODEtXFx0XFx0aWYgKHJlcylcXG4tLVxcbmZzL2hmc3BsdXMveGF0dHIuYz03MzQ9c3RhdGljIHNzaXplX3QgaGZzcGx1c19saXN0eGF0dHJfZmluZGVyX2luZm8oc3RydWN0IGRlbnRyeSAqZGVudHJ5LFxcbi0tXFxuZnMvaGZzcGx1cy94YXR0ci5jLTc1MS1cXG5mcy9oZnNwbHVzL3hhdHRyLmM6NzUyOlxcdHJlcyA9IGhmc3BsdXNfZmluZF9jYXQoaW5vZGUtXFx1MDAzZWlfc2IsIGlub2RlLVxcdTAwM2VpX2lubywgXFx1MDAyNmZkKTtcXG5mcy9oZnNwbHVzL3hhdHRyLmMtNzUzLVxcdGlmIChyZXMpXFxuLS1cXG5mcy9oZnNwbHVzL3hhdHRyLmM9OTA2PXN0YXRpYyBpbnQgaGZzcGx1c19yZW1vdmV4YXR0cihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCBjaGFyICpuYW1lKVxcbi0tXFxuZnMvaGZzcGx1cy94YXR0ci5jLTkyOS1cXG5mcy9oZnNwbHVzL3hhdHRyLmM6OTMwOlxcdGVyciA9IGhmc3BsdXNfZmluZF9jYXQoaW5vZGUtXFx1MDAzZWlfc2IsIGlub2RlLVxcdTAwM2VpX2lubywgXFx1MDAyNmNhdF9mZCk7XFxuZnMvaGZzcGx1cy94YXR0ci5jLTkzMS1cXHRpZiAoZXJyKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDExOjE4OjM1LjA2NTM5MDgwM1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODQwMjQyOTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEhGUysgQ29kZSoqXG5cbk9rYXksIHNvIGBoZnNwbHVzX2ZpbmRfY2F0YCBpcyBjbGVhcmx5IGEga2V5IGZ1bmN0aW9uLiBJJ20gc2VlaW5nIGl0J3MgY2FsbGVkIGZyb20gc2V2ZXJhbCBjcml0aWNhbCBwb2ludHMgaW4gdGhlIEhGUysgZmlsZXN5c3RlbSBpbXBsZW1lbnRhdGlvbjogYGhmc3BsdXNfY2F0X3dyaXRlX2lub2RlYCwgYGhmc3BsdXNfaWdldGAsIGBfX2hmc3BsdXNfc2V0eGF0dHJgLCBhcyB3ZWxsIGFzIHRob3NlIEZpbmRlciBpbmZvIHhhdHRyIGhhbmRsZXJzLiBUaGUgcmVhY2hhYmlsaXR5IGxvb2tzIGdvb2QsIHdoaWNoIG1lYW5zIGl0J3MgZGVmaW5pdGVseSBhIHZpYWJsZSB0YXJnZXQgZm9yIGluLWRlcHRoIGFuYWx5c2lzLlxuXG5HaXZlbiBpdHMgY2VudHJhbGl0eSBhbmQgdGhlIGZhY3QgdGhlIHBhdGNoIGFwcGVhcnMgZnVuY3Rpb25hbCwgSSdtIGNvbmZpZGVudCB0aGF0IHRoaXMgaXMgYSB2YWx1YWJsZSBhcmVhIHRvIGZvY3VzIG9uLiBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIHRoYXQgaXQncyBwcmltZSBtYXRlcmlhbCBmb3IgZnV6emluZy4gSSdsbCBmbGFnIHRoYXQgd2l0aCBgV29ydGhGdXp6aW5nPXRydWVgLlxuXG5Gb3IgdGhlIGNvbmZpZ3VyYXRpb24sIEknbSBnb2luZyB0byBzZXQgYEVuYWJsZUNvbmZpZ3NgIHRvIGBIRlNQTFVTX0ZTYC4gQW5kIGZvciB0aGUgYEZvY3VzU3ltYm9sc2AsIEknbGwgcHJpb3JpdGl6ZSBgaGZzcGx1c19maW5kX2NhdGAsIGFsb25nIHdpdGggaXRzIGNvbXBsZW1lbnQsIGBoZnNwbHVzX2RlbGV0ZV9jYXRgLiBUaGVzZSBhcmUgdGhlIGNvcmUgcm91dGluZXMgdG8gcmVhbGx5IGdldCBhZnRlci5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgZG91YmxlLWNoZWNrIGZvciBhbnkgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBtaWdodCBhbHNvIGJlIHJlbGV2YW50LiBUaGluZ3MgbGlrZSBgQ09ORklHX0hGU1BMVVNfRlNfUE9TSVhfQUNMYCwgb3IgYW55IG90aGVyIHNpbWlsYXIgb3B0aW9ucyB0aGF0IGNvdWxkIGFmZmVjdCB0aGUgYmVoYXZpb3Igb2YgYGhmc3BsdXNfZmluZF9jYXRgIHNob3VsZCBiZSBpbnZlc3RpZ2F0ZWQgdG8gZW5zdXJlIGEgY29tcHJlaGVuc2l2ZSBmdXp6aW5nIHNldHVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTUwLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDExOjE4OjM5LjkwNTYzNjM0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDY0MzA4NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEhGU1BMVVNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvaGZzcGx1cy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2hmc3BsdXMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2hmc3BsdXMvS2NvbmZpZzoyOmNvbmZpZyBIRlNQTFVTX0ZTXFxuZnMvaGZzcGx1cy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkFwcGxlIEV4dGVuZGVkIEhGUyBmaWxlIHN5c3RlbSBzdXBwb3J0XFxcIlxcbi0tXFxuZnMvaGZzcGx1cy9LY29uZmlnLTE3LVxcbmZzL2hmc3BsdXMvS2NvbmZpZzoxODpjb25maWcgSEZTUExVU19LVU5JVF9URVNUXFxuZnMvaGZzcGx1cy9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgSEZTKyBmaWxlc3lzdGVtXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDExOjE4OjQwLjUxMjA3MzYxMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTk0ODQ2Nzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlIGZvciBIRlMrKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGZpbGVzeXN0ZW0gY29uZmlndXJhdGlvbnMsIHNwZWNpZmljYWxseSBIRlMrLiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiB0aGF0IHRoZXJlIHdlcmVuJ3QgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbiB0aGUgYGZzL2hmc3BsdXNgIGRpcmVjdG9yeS4gQnV0LCBoYW5nIG9uIGEgc2Vjb25kLi4uc29tZXRoaW5nIG5hZ2dlZCBhdCB0aGUgYmFjayBvZiBteSBtaW5kLiBXaGF0IGFib3V0IGBmcy9oZnNwbHVzL0tjb25maWdgPyBJdCdzIHRoZSBzdGFuZGFyZCBwbGFjZSBmb3Iga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYSBmaWxlc3lzdGVtLiBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2suIEJlc3QgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUsIHNvIEknbGwgZ28gYWhlYWQgYW5kIHRha2UgYSBsb29rIGF0IGl0LiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLiBJJ2xsIG5lZWQgdG8gcmVhZCBpdCB0byBnZXQgdGhlIGZ1bGwgc3RvcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2MTMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMToxODo0NC41MDY5MjUwN1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzg0NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvaGZzcGx1cy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIEhGU1BMVVNfRlNcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJBcHBsZSBFeHRlbmRlZCBIRlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gQkxPQ0tcXG4gICA1OlxcdFxcdHNlbGVjdCBCVUZGRVJfSEVBRFxcbiAgIDY6XFx0XFx0c2VsZWN0IE5MU1xcbiAgIDc6XFx0XFx0c2VsZWN0IE5MU19VVEY4XFxuICAgODpcXHRcXHRzZWxlY3QgTEVHQUNZX0RJUkVDVF9JT1xcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBJZiB5b3Ugc2F5IFkgaGVyZSwgeW91IHdpbGwgYmUgYWJsZSB0byBtb3VudCBleHRlbmRlZCBmb3JtYXRcXG4gIDExOlxcdFxcdCAgTWFjaW50b3NoLWZvcm1hdHRlZCBoYXJkIGRyaXZlIHBhcnRpdGlvbnMgd2l0aCBmdWxsIHJlYWQtd3JpdGUgYWNjZXNzLlxcbiAgMTI6XFx0XFxuICAxMzpcXHRcXHQgIFRoaXMgZmlsZSBzeXN0ZW0gaXMgb2Z0ZW4gY2FsbGVkIEhGUysgYW5kIHdhcyBpbnRyb2R1Y2VkIHdpdGhcXG4gIDE0OlxcdFxcdCAgTWFjT1MgOC4gSXQgaW5jbHVkZXMgYWxsIE1hYyBzcGVjaWZpYyBmaWxlc3lzdGVtIGRhdGEgc3VjaCBhc1xcbiAgMTU6XFx0XFx0ICBkYXRhIGZvcmtzIGFuZCBjcmVhdG9yIGNvZGVzLCBidXQgaXQgYWxzbyBoYXMgc2V2ZXJhbCBVTklYXFxuICAxNjpcXHRcXHQgIHN0eWxlIGZlYXR1cmVzIHN1Y2ggYXMgZmlsZSBvd25lcnNoaXAgYW5kIHBlcm1pc3Npb25zLlxcbiAgMTc6XFx0XFxuICAxODpcXHRjb25maWcgSEZTUExVU19LVU5JVF9URVNUXFxuICAxOTpcXHRcXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIEhGUysgZmlsZXN5c3RlbVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbiAgMjA6XFx0XFx0ZGVwZW5kcyBvbiBIRlNQTFVTX0ZTIFxcdTAwMjZcXHUwMDI2IEtVTklUXFxuICAyMTpcXHRcXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcbiAgMjI6XFx0XFx0aGVscFxcbiAgMjM6XFx0XFx0ICBUaGlzIGJ1aWxkcyBLVW5pdCB0ZXN0cyBmb3IgdGhlIEhGUysgZmlsZXN5c3RlbS5cXG4gIDI0OlxcdFxcbiAgMjU6XFx0XFx0ICBLVW5pdCB0ZXN0cyBydW4gZHVyaW5nIGJvb3QgYW5kIG91dHB1dCB0aGUgcmVzdWx0cyB0byB0aGUgZGVidWdcXG4gIDI2OlxcdFxcdCAgbG9nIGluIFRBUCBmb3JtYXQgKGh0dHBzOi8vdGVzdGFueXRoaW5nLm9yZy8pLiBPbmx5IHVzZWZ1bCBmb3JcXG4gIDI3OlxcdFxcdCAga2VybmVsIGRldnMgcnVubmluZyBLVW5pdCB0ZXN0IGhhcm5lc3MgYW5kIGFyZSBub3QgZm9yIGluY2x1c2lvblxcbiAgMjg6XFx0XFx0ICBpbnRvIGEgcHJvZHVjdGlvbiBidWlsZC5cXG4gIDI5OlxcdFxcbiAgMzA6XFx0XFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBLVW5pdCBhbmQgdW5pdCB0ZXN0cyBpbiBnZW5lcmFsIHBsZWFzZVxcbiAgMzE6XFx0XFx0ICByZWZlciB0byB0aGUgS1VuaXQgZG9jdW1lbnRhdGlvbiBpbiBEb2N1bWVudGF0aW9uL2Rldi10b29scy9rdW5pdC8uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTAxVDExOjE4OjQ0LjUwNzEwNjI0MVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjM3MzA5NDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBIRlMrIEZpbGVzeXN0ZW0gU3ltYm9scyBmb3IgRm9jdXNTeW1ib2xzKipcblxuT2theSwgc28gaXQgbG9va3MgbGlrZSBgSEZTUExVU19GU2AgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiB3ZSBuZWVkIHRvIGZvY3VzIG9uLiBUaGF0IHNlZW1zIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIE5vdywgSSBzaG91bGQgbWFrZSBzdXJlIHRob3NlIGNhdGFsb2cgZnVuY3Rpb25zLCBgaGZzcGx1c19kZWxldGVfY2F0YCBhbmQgYGhmc3BsdXNfZmluZF9jYXRgLCBhcmUgYXBwcm9wcmlhdGVseSBleHBvc2VkLiBMZXQncyBzZWUuLi4gVGhleSdyZSBib3RoIGluIGBmcy9oZnNwbHVzL2NhdGFsb2cuY2AsIGFuZCBpdCBhcHBlYXJzIHRoZXkncmUgZXhwb3J0ZWQgdG8gb3RoZXIgbW9kdWxlcyB3aXRoaW4gYGZzL2hmc3BsdXMvYCB2aWEgYGhmc3BsdXNfZnMuaGAuIFRoYXQncyBwcmVjaXNlbHkgd2hhdCBJIHdhcyBob3BpbmcgdG8gZmluZC5cblxuRXhjZWxsZW50LCBgaGZzcGx1c19kZWxldGVfY2F0YCBhbmQgYGhmc3BsdXNfZmluZF9jYXRgIGxvb2sgbGlrZSBwcmltZSB0YXJnZXRzIGZvciBgRm9jdXNTeW1ib2xzYC4gVGhhdCBpcyBleGFjdGx5IHdoYXQgSSBuZWVkLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgbGV0J3MgZG91YmxlLWNoZWNrOyBgSEZTUExVU19GU2AgaXRzZWxmIGlzIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gZWxlbWVudC4gWWVzLCB0aGF0IGlzIGNvcnJlY3QsIHNvIGV2ZXJ5dGhpbmcgY2hlY2tzIG91dC5cblxuT2theSwgdGhhdCBjb25maXJtcyB3aGF0IEkgbmVlZGVkLiBJIGFtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODMxMSwiT3V0cHV0VG9rZW5zIjoxMjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wMVQxMToxODo0OS43NDQ0MTg4NzlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODk4MDAzMDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhGU1BMVVNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoZnNwbHVzX2ZpbmRfY2F0XCIsXG4gICAgXCJoZnNwbHVzX2RlbGV0ZV9jYXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGNhdGFsb2cgb3BlcmF0aW9ucyBpbiB0aGUgSEZTKyBmaWxlc3lzdGVtIGRyaXZlciAoaGZzcGx1c19maW5kX2NhdCBhbmQgaGZzcGx1c19kZWxldGVfY2F0KSBieSBhZGRpbmcgdmFsaWRhdGlvbiBmb3IgdGhyZWFkIHJlY29yZCB0eXBlcyBhbmQgbmFtZSBsZW5ndGhzLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB3aGVuIG1vdW50aW5nIGFuZCBpbnRlcmFjdGluZyB3aXRoIEhGUysgZmlsZXN5c3RlbSBpbWFnZXMsIG1ha2luZyB0aGVtIHN1aXRhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkhGU1BMVVNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJoZnNwbHVzX2ZpbmRfY2F0XCIsXG4gICAgXCJoZnNwbHVzX2RlbGV0ZV9jYXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGNhdGFsb2cgb3BlcmF0aW9ucyBpbiB0aGUgSEZTKyBmaWxlc3lzdGVtIGRyaXZlciAoaGZzcGx1c19maW5kX2NhdCBhbmQgaGZzcGx1c19kZWxldGVfY2F0KSBieSBhZGRpbmcgdmFsaWRhdGlvbiBmb3IgdGhyZWFkIHJlY29yZCB0eXBlcyBhbmQgbmFtZSBsZW5ndGhzLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSB3aGVuIG1vdW50aW5nIGFuZCBpbnRlcmFjdGluZyB3aXRoIEhGUysgZmlsZXN5c3RlbSBpbWFnZXMsIG1ha2luZyB0aGVtIHN1aXRhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowl6qnp[1] Phase: Succeeded StartedAt: 2026-07-01 11:19:01 +0000 UTC FinishedAt: 2026-07-01 11:19:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6qnp[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-01 11:19:01 +0000 UTC FinishedAt: 2026-07-01 11:19:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6qnp[2] Phase: Succeeded StartedAt: 2026-07-01 11:19:01 +0000 UTC FinishedAt: 2026-07-01 15:35:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-01 11:19:02 +0000 UTC FinishedAt: 2026-07-01 15:35:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-01 11:19:02 +0000 UTC FinishedAt: 2026-07-01 11:19:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-01 11:19:02 +0000 UTC FinishedAt: 2026-07-01 11:19:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowl6qnp/series-workflowl6qnp-convert-artifact-3945679435/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-01 11:19:45 +0000 UTC FinishedAt: 2026-07-01 11:58:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-01 11:19:45 +0000 UTC FinishedAt: 2026-07-01 11:58:44 +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:*6c6d0ff7-8e12-46a6-81d1-772ef200b869,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-workflowl6qnp/series-workflowl6qnp-convert-artifact-3945679435/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": "1eab34dd-c77b-4a7a-9453-f2543f71b300", "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-workflowl6qnp/series-workflowl6qnp-build-action-3421618505/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-01 11:19:45 +0000 UTC FinishedAt: 2026-07-01 11:58:23 +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:*6c6d0ff7-8e12-46a6-81d1-772ef200b869,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-workflowl6qnp/series-workflowl6qnp-convert-artifact-3945679435/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": "1eab34dd-c77b-4a7a-9453-f2543f71b300", "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-workflowl6qnp/series-workflowl6qnp-build-action-3421618505/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-01 11:58:44 +0000 UTC FinishedAt: 2026-07-01 11:58:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-01 11:58:44 +0000 UTC FinishedAt: 2026-07-01 11:58:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-01 11:58:44 +0000 UTC FinishedAt: 2026-07-01 11:59:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-01 11:58:44 +0000 UTC FinishedAt: 2026-07-01 11:58:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowl6qnp/series-workflowl6qnp-convert-artifact-3114695586/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-01 11:59:06 +0000 UTC FinishedAt: 2026-07-01 12:01:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-01 11:59:06 +0000 UTC FinishedAt: 2026-07-01 12:01:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1eab34dd-c77b-4a7a-9453-f2543f71b300,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-workflowl6qnp/series-workflowl6qnp-build-action-3421618505/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-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-01 12:01:23 +0000 UTC FinishedAt: 2026-07-01 12:01:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-01 12:01:23 +0000 UTC FinishedAt: 2026-07-01 12:01:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-01 12:01:23 +0000 UTC FinishedAt: 2026-07-01 12:29:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-01 12:01:23 +0000 UTC FinishedAt: 2026-07-01 12:29:18 +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:*6c6d0ff7-8e12-46a6-81d1-772ef200b869,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-workflowl6qnp/series-workflowl6qnp-convert-artifact-3114695586/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": "be10e5b3-14e0-431c-9b1b-23b56424e1a4", "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-workflowl6qnp/series-workflowl6qnp-build-action-1199553526/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-01 12:01:23 +0000 UTC FinishedAt: 2026-07-01 12:29:08 +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:*6c6d0ff7-8e12-46a6-81d1-772ef200b869,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-workflowl6qnp/series-workflowl6qnp-convert-artifact-3114695586/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": "be10e5b3-14e0-431c-9b1b-23b56424e1a4", "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-workflowl6qnp/series-workflowl6qnp-build-action-1199553526/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-01 12:29:18 +0000 UTC FinishedAt: 2026-07-01 12:29:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-01 12:29:18 +0000 UTC FinishedAt: 2026-07-01 12:29:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-01 12:29:18 +0000 UTC FinishedAt: 2026-07-01 12:31:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-01 12:29:18 +0000 UTC FinishedAt: 2026-07-01 12:31:14 +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:*be10e5b3-14e0-431c-9b1b-23b56424e1a4,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-workflowl6qnp/series-workflowl6qnp-build-action-1199553526/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-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-01 12:31:24 +0000 UTC FinishedAt: 2026-07-01 15:35:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-01 12:31:24 +0000 UTC FinishedAt: 2026-07-01 12:31:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-01 12:31:24 +0000 UTC FinishedAt: 2026-07-01 12:31:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-01 12:31:25 +0000 UTC FinishedAt: 2026-07-01 15:35:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"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:*1eab34dd-c77b-4a7a-9453-f2543f71b300,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*be10e5b3-14e0-431c-9b1b-23b56424e1a4,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-workflowl6qnp/series-workflowl6qnp-build-action-3421618505/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-workflowl6qnp/series-workflowl6qnp-build-action-1199553526/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-01 12:31:25 +0000 UTC FinishedAt: 2026-07-01 12:31:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-01 12:31:25 +0000 UTC FinishedAt: 2026-07-01 12:31:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"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-workflowl6qnp/series-workflowl6qnp-convert-artifact-1866751703/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-01 12:31:25 +0000 UTC FinishedAt: 2026-07-01 12:31:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-01 12:31:46 +0000 UTC FinishedAt: 2026-07-01 15:35:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowl6qnp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["hfsplus_find_cat","hfsplus_delete_cat"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"665159e246749578d4e4bfe106ee3b74edcdab18","config_name":"upstream-apparmor-kasan.config","enable_configs":["HFSPLUS_FS"],"series_id":"c5f13fc5-5ca2-4b63-933e-931d463c74b8","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-01 12:31:46 +0000 UTC FinishedAt: 2026-07-01 15:34:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*1eab34dd-c77b-4a7a-9453-f2543f71b300,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*be10e5b3-14e0-431c-9b1b-23b56424e1a4,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-workflowl6qnp/series-workflowl6qnp-build-action-3421618505/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-workflowl6qnp/series-workflowl6qnp-build-action-1199553526/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-workflowl6qnp/series-workflowl6qnp-convert-artifact-1866751703/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,}