Name: series-workflowbl95x Phase: Succeeded StartedAt: 2026-07-29 12:14:33 +0000 UTC FinishedAt: 2026-07-29 16:29:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbl95x[0] Phase: Succeeded StartedAt: 2026-07-29 12:14:33 +0000 UTC FinishedAt: 2026-07-29 12:20:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbl95x[0].run-triage Phase: Succeeded StartedAt: 2026-07-29 12:14:33 +0000 UTC FinishedAt: 2026-07-29 12:20:10 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGET", "USB_CONFIGFS", "TARGET_CORE", "USB_CONFIGFS_F_TCM", "USB_GADGET_TARGET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGET", "USB_CONFIGFS", "TARGET_CORE", "USB_CONFIGFS_F_TCM", "USB_GADGET_TARGET" ], "series_id": "d713b185-68bb-491f-9207-7d4a8186ba0a" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "usbg_make_tpg" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEyOjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTJiMzNDssCiAgICAmIzM0O1RBUkdFVF9DT1JFJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGU19GX1RDTSYjMzQ7LAogICAgJiMzNDtVU0JfR0FER0VUX1RBUkdFVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VzYmdfbWFrZV90cGcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvbmZpZ2ZzLWJhc2VkIHNldHVwIGxvZ2ljIChgdXNiZ19tYWtlX3RwZ2ApIGZvciB0aGUgVVNCIFRhcmdldCBDb3JlIE1vZHVsZSAoVENNKSBnYWRnZXQgZnVuY3Rpb24uIEl0IGZpeGVzIGRlcGVuZGVuY3kgbWFuYWdlbWVudCBhbmQgZXJyb3IgaGFuZGxpbmcgd2hlbiBjcmVhdGluZyBhIG5ldyB0YXJnZXQgcG9ydGFsIGdyb3VwLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBjb25maWdmcyBhbmQgaXMgZnVsbHkgZnVuY3Rpb25hbCwgbWFraW5nIGl0IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTI6MTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzZTViMDdhZDA1MTg0ODI3Mjk1MmRkMzQ1ODI5M2IzYWRjODVkNjhiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMTI6MTk6MDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uY1xuaW5kZXggYjNmYTVhMTdmZDJkYi4uYzgyNzgwNTNkMDdlMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uY1xuQEAgLTE2NjAsNiAmIzQzOzE2NjAsNyBAQCBzdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sXG4gXHRpbnQgcmV0O1xuIFx0c3RydWN0IGZfdGNtX29wdHMgKm9wdHM7XG4gXHR1bnNpZ25lZCBpO1xuJiM0MztcdGJvb2wgZGVwX3Rha2VuID0gZmFsc2U7XG4gXG4gXHRpZiAoc3Ryc3RyKG5hbWUsIFwmIzM0O3RwZ3RfXCYjMzQ7KSAhPSBuYW1lKVxuIFx0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbkBAIC0xNjc5LDU5ICYjNDM7MTY4MCw4NCBAQCBzdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sXG4gXHRpZiAoIW9wdHMtXHUwMDNlcmVhZHkpXG4gXHRcdGdvdG8gdW5sb2NrX2RlcDtcbiBcbi1cdGlmIChvcHRzLVx1MDAzZWhhc19kZXApIHtcbi1cdFx0aWYgKCF0cnlfbW9kdWxlX2dldChvcHRzLVx1MDAzZWRlcGVuZGVudCkpXG4tXHRcdFx0Z290byB1bmxvY2tfZGVwO1xuLVx0fSBlbHNlIHtcbi1cdFx0cmV0ID0gY29uZmlnZnNfZGVwZW5kX2l0ZW1fdW5sb2NrZWQoXG4tXHRcdFx0d3duLVx1MDAzZXd3bl9ncm91cC5jZ19zdWJzeXMsXG4tXHRcdFx0XHUwMDI2b3B0cy1cdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XG4tXHRcdGlmIChyZXQpXG4tXHRcdFx0Z290byB1bmxvY2tfZGVwO1xuLVx0fVxuLVxuIFx0dHBnID0ga3phbGxvY19vYmooc3RydWN0IHVzYmdfdHBnKTtcbi1cdHJldCA9IC1FTk9NRU07XG4tXHRpZiAoIXRwZylcbi1cdFx0Z290byB1bnJlZl9kZXA7XG4mIzQzO1x0aWYgKCF0cGcpIHtcbiYjNDM7XHRcdHJldCA9IC1FTk9NRU07XG4mIzQzO1x0XHRnb3RvIHVubG9ja19kZXA7XG4mIzQzO1x0fVxuIFx0bXV0ZXhfaW5pdChcdTAwMjZ0cGctXHUwMDNldHBnX211dGV4KTtcbiBcdGF0b21pY19zZXQoXHUwMDI2dHBnLVx1MDAzZXRwZ19wb3J0X2NvdW50LCAwKTtcbiBcdHRwZy1cdTAwM2V3b3JrcXVldWUgPSBhbGxvY193b3JrcXVldWUoXCYjMzQ7dGNtX3VzYl9nYWRnZXRcJiMzNDssXG4gXHRcdFx0XHRcdCBXUV9VTkJPVU5ELCBXUV9VTkJPVU5EX01BWF9BQ1RJVkUpO1xuLVx0aWYgKCF0cGctXHUwMDNld29ya3F1ZXVlKVxuLVx0XHRnb3RvIGZyZWVfdHBnO1xuLVxuJiM0MztcdGlmICghdHBnLVx1MDAzZXdvcmtxdWV1ZSkge1xuJiM0MztcdFx0cmV0ID0gLUVOT01FTTtcbiYjNDM7XHRcdGtmcmVlKHRwZyk7XG4mIzQzO1x0XHRnb3RvIHVubG9ja19kZXA7XG4mIzQzO1x0fVxuIFx0dHBnLVx1MDAzZXRwb3J0ID0gdHBvcnQ7XG4gXHR0cGctXHUwMDNldHBvcnRfdHBndCA9IHRwZ3Q7XG4gXG4mIzQzO1x0dHBnX2luc3RhbmNlc1tpXS50cGcgPSB0cGc7XG4mIzQzO1xuJiM0MztcdGlmIChvcHRzLVx1MDAzZWhhc19kZXApIHtcbiYjNDM7XHRcdGlmICghdHJ5X21vZHVsZV9nZXQob3B0cy1cdTAwM2VkZXBlbmRlbnQpKSB7XG4mIzQzO1x0XHRcdHJldCA9IC1FTk9ERVY7XG4mIzQzO1x0XHRcdGdvdG8gZnJlZV90cGc7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdGNvbmZpZ19pdGVtX2dldChcdTAwMjZvcHRzLVx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcbiYjNDM7XHRcdGRlcF90YWtlbiA9IHRydWU7XG4mIzQzO1x0XHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2VkZXBfbG9jayk7XG4mIzQzO1x0XHRtdXRleF91bmxvY2soXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcbiYjNDM7XG4mIzQzO1x0XHRyZXQgPSBjb25maWdmc19kZXBlbmRfaXRlbV91bmxvY2tlZChcbiYjNDM7XHRcdFx0d3duLVx1MDAzZXd3bl9ncm91cC5jZ19zdWJzeXMsXG4mIzQzO1x0XHRcdFx1MDAyNm9wdHMtXHUwMDNlZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pO1xuJiM0MztcbiYjNDM7XHRcdGlmIChyZXQpIHtcbiYjNDM7XHRcdFx0bXV0ZXhfbG9jayhcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xuJiM0MztcdFx0XHR0cGdfaW5zdGFuY2VzW2ldLnRwZyA9IE5VTEw7XG4mIzQzO1x0XHRcdG11dGV4X3VubG9jayhcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xuJiM0MztcdFx0XHRkZXN0cm95X3dvcmtxdWV1ZSh0cGctXHUwMDNld29ya3F1ZXVlKTtcbiYjNDM7XHRcdFx0a2ZyZWUodHBnKTtcbiYjNDM7XHRcdFx0Y29uZmlnX2l0ZW1fcHV0KFx1MDAyNm9wdHMtXHUwMDNlZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pO1xuJiM0MztcdFx0XHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdG11dGV4X2xvY2soXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcbiYjNDM7XHRcdG11dGV4X2xvY2soXHUwMDI2b3B0cy1cdTAwM2VkZXBfbG9jayk7XG4mIzQzO1x0fVxuJiM0MztcbiBcdC8qXG4gXHQgKiBTUEMgZG9lc24mIzM5O3QgYXNzaWduIGEgcHJvdG9jb2wgaWRlbnRpZmllciBmb3IgVVNCLVNDU0ksIHNvIHdlXG4gXHQgKiBwcmV0ZW5kIHRvIGJlIFNBUy4uXG4gXHQgKi9cbiBcdHJldCA9IGNvcmVfdHBnX3JlZ2lzdGVyKHd3biwgXHUwMDI2dHBnLVx1MDAzZXNlX3RwZywgU0NTSV9QUk9UT0NPTF9TQVMpO1xuIFx0aWYgKHJldCBcdTAwM2MgMClcbi1cdFx0Z290byBmcmVlX3dvcmtxdWV1ZTtcbiYjNDM7XHRcdGdvdG8gdW5yZWZfZGVwO1xuIFxuLVx0dHBnX2luc3RhbmNlc1tpXS50cGcgPSB0cGc7XG4gXHR0cGctXHUwMDNlZmkgPSB0cGdfaW5zdGFuY2VzW2ldLmZ1bmNfaW5zdDtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZvcHRzLVx1MDAzZWRlcF9sb2NrKTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xuJiM0MztcdGlmIChkZXBfdGFrZW4pXG4mIzQzO1x0XHRjb25maWdfaXRlbV9wdXQoXHUwMDI2b3B0cy1cdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XG4gXHRyZXR1cm4gXHUwMDI2dHBnLVx1MDAzZXNlX3RwZztcbiBcbi1mcmVlX3dvcmtxdWV1ZTpcbi1cdGRlc3Ryb3lfd29ya3F1ZXVlKHRwZy1cdTAwM2V3b3JrcXVldWUpO1xuLWZyZWVfdHBnOlxuLVx0a2ZyZWUodHBnKTtcbiB1bnJlZl9kZXA6XG4gXHRpZiAob3B0cy1cdTAwM2VoYXNfZGVwKVxuIFx0XHRtb2R1bGVfcHV0KG9wdHMtXHUwMDNlZGVwZW5kZW50KTtcbiBcdGVsc2VcbiBcdFx0Y29uZmlnZnNfdW5kZXBlbmRfaXRlbV91bmxvY2tlZChcdTAwMjZvcHRzLVx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcbiYjNDM7ZnJlZV90cGc6XG4mIzQzO1x0dHBnX2luc3RhbmNlc1tpXS50cGcgPSBOVUxMO1xuJiM0MztcdGRlc3Ryb3lfd29ya3F1ZXVlKHRwZy1cdTAwM2V3b3JrcXVldWUpO1xuJiM0MztcdGtmcmVlKHRwZyk7XG4gdW5sb2NrX2RlcDpcbiBcdG11dGV4X3VubG9jayhcdTAwMjZvcHRzLVx1MDAzZWRlcF9sb2NrKTtcbiB1bmxvY2tfaW5zdDpcbiBcdG11dGV4X3VubG9jayhcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xuLVxuJiM0MztcdGlmIChkZXBfdGFrZW4pXG4mIzQzO1x0XHRjb25maWdfaXRlbV9wdXQoXHUwMDI2b3B0cy1cdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XG4gXHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMjoxOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVNCX0dBREdFVCYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlMmIzM0OywKICAgICYjMzQ7VEFSR0VUX0NPUkUmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTX0ZfVENNJiMzNDssCiAgICAmIzM0O1VTQl9HQURHRVRfVEFSR0VUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dXNiZ19tYWtlX3RwZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29uZmlnZnMtYmFzZWQgc2V0dXAgbG9naWMgKGB1c2JnX21ha2VfdHBnYCkgZm9yIHRoZSBVU0IgVGFyZ2V0IENvcmUgTW9kdWxlIChUQ00pIGdhZGdldCBmdW5jdGlvbi4gSXQgZml4ZXMgZGVwZW5kZW5jeSBtYW5hZ2VtZW50IGFuZCBlcnJvciBoYW5kbGluZyB3aGVuIGNyZWF0aW5nIGEgbmV3IHRhcmdldCBwb3J0YWwgZ3JvdXAuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGNvbmZpZ2ZzIGFuZCBpcyBmdWxseSBmdW5jdGlvbmFsLCBtYWtpbmcgaXQgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNlNWIwN2FkMDUxODQ4MjcyOTUyZGQzNDU4MjkzYjNhZGM4NWQ2OGIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAyOSAxMjoxOTowNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMKaW5kZXggYjNmYTVhMTdmZDJkYi4uYzgyNzgwNTNkMDdlMCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMKQEAgLTE2NjAsNiAmIzQzOzE2NjAsNyBAQCBzdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sCiAJaW50IHJldDsKIAlzdHJ1Y3QgZl90Y21fb3B0cyAqb3B0czsKIAl1bnNpZ25lZCBpOwomIzQzOwlib29sIGRlcF90YWtlbiA9IGZhbHNlOwogCiAJaWYgKHN0cnN0cihuYW1lLCAmIzM0O3RwZ3RfJiMzNDspICE9IG5hbWUpCiAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwpAQCAtMTY3OSw1OSAmIzQzOzE2ODAsODQgQEAgc3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLAogCWlmICghb3B0cy0mZ3Q7cmVhZHkpCiAJCWdvdG8gdW5sb2NrX2RlcDsKIAotCWlmIChvcHRzLSZndDtoYXNfZGVwKSB7Ci0JCWlmICghdHJ5X21vZHVsZV9nZXQob3B0cy0mZ3Q7ZGVwZW5kZW50KSkKLQkJCWdvdG8gdW5sb2NrX2RlcDsKLQl9IGVsc2UgewotCQlyZXQgPSBjb25maWdmc19kZXBlbmRfaXRlbV91bmxvY2tlZCgKLQkJCXd3bi0mZ3Q7d3duX2dyb3VwLmNnX3N1YnN5cywKLQkJCSZhbXA7b3B0cy0mZ3Q7ZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pOwotCQlpZiAocmV0KQotCQkJZ290byB1bmxvY2tfZGVwOwotCX0KLQogCXRwZyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCB1c2JnX3RwZyk7Ci0JcmV0ID0gLUVOT01FTTsKLQlpZiAoIXRwZykKLQkJZ290byB1bnJlZl9kZXA7CiYjNDM7CWlmICghdHBnKSB7CiYjNDM7CQlyZXQgPSAtRU5PTUVNOwomIzQzOwkJZ290byB1bmxvY2tfZGVwOwomIzQzOwl9CiAJbXV0ZXhfaW5pdCgmYW1wO3RwZy0mZ3Q7dHBnX211dGV4KTsKIAlhdG9taWNfc2V0KCZhbXA7dHBnLSZndDt0cGdfcG9ydF9jb3VudCwgMCk7CiAJdHBnLSZndDt3b3JrcXVldWUgPSBhbGxvY193b3JrcXVldWUoJiMzNDt0Y21fdXNiX2dhZGdldCYjMzQ7LAogCQkJCQkgV1FfVU5CT1VORCwgV1FfVU5CT1VORF9NQVhfQUNUSVZFKTsKLQlpZiAoIXRwZy0mZ3Q7d29ya3F1ZXVlKQotCQlnb3RvIGZyZWVfdHBnOwotCiYjNDM7CWlmICghdHBnLSZndDt3b3JrcXVldWUpIHsKJiM0MzsJCXJldCA9IC1FTk9NRU07CiYjNDM7CQlrZnJlZSh0cGcpOwomIzQzOwkJZ290byB1bmxvY2tfZGVwOwomIzQzOwl9CiAJdHBnLSZndDt0cG9ydCA9IHRwb3J0OwogCXRwZy0mZ3Q7dHBvcnRfdHBndCA9IHRwZ3Q7CiAKJiM0MzsJdHBnX2luc3RhbmNlc1tpXS50cGcgPSB0cGc7CiYjNDM7CiYjNDM7CWlmIChvcHRzLSZndDtoYXNfZGVwKSB7CiYjNDM7CQlpZiAoIXRyeV9tb2R1bGVfZ2V0KG9wdHMtJmd0O2RlcGVuZGVudCkpIHsKJiM0MzsJCQlyZXQgPSAtRU5PREVWOwomIzQzOwkJCWdvdG8gZnJlZV90cGc7CiYjNDM7CQl9CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQljb25maWdfaXRlbV9nZXQoJmFtcDtvcHRzLSZndDtmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7CiYjNDM7CQlkZXBfdGFrZW4gPSB0cnVlOwomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7b3B0cy0mZ3Q7ZGVwX2xvY2spOwomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7dHBnX2luc3RhbmNlc19sb2NrKTsKJiM0MzsKJiM0MzsJCXJldCA9IGNvbmZpZ2ZzX2RlcGVuZF9pdGVtX3VubG9ja2VkKAomIzQzOwkJCXd3bi0mZ3Q7d3duX2dyb3VwLmNnX3N1YnN5cywKJiM0MzsJCQkmYW1wO29wdHMtJmd0O2Z1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTsKJiM0MzsKJiM0MzsJCWlmIChyZXQpIHsKJiM0MzsJCQltdXRleF9sb2NrKCZhbXA7dHBnX2luc3RhbmNlc19sb2NrKTsKJiM0MzsJCQl0cGdfaW5zdGFuY2VzW2ldLnRwZyA9IE5VTEw7CiYjNDM7CQkJbXV0ZXhfdW5sb2NrKCZhbXA7dHBnX2luc3RhbmNlc19sb2NrKTsKJiM0MzsJCQlkZXN0cm95X3dvcmtxdWV1ZSh0cGctJmd0O3dvcmtxdWV1ZSk7CiYjNDM7CQkJa2ZyZWUodHBnKTsKJiM0MzsJCQljb25maWdfaXRlbV9wdXQoJmFtcDtvcHRzLSZndDtmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7CiYjNDM7CQkJcmV0dXJuIEVSUl9QVFIocmV0KTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCW11dGV4X2xvY2soJmFtcDt0cGdfaW5zdGFuY2VzX2xvY2spOwomIzQzOwkJbXV0ZXhfbG9jaygmYW1wO29wdHMtJmd0O2RlcF9sb2NrKTsKJiM0MzsJfQomIzQzOwogCS8qCiAJICogU1BDIGRvZXNuJiMzOTt0IGFzc2lnbiBhIHByb3RvY29sIGlkZW50aWZpZXIgZm9yIFVTQi1TQ1NJLCBzbyB3ZQogCSAqIHByZXRlbmQgdG8gYmUgU0FTLi4KIAkgKi8KIAlyZXQgPSBjb3JlX3RwZ19yZWdpc3Rlcih3d24sICZhbXA7dHBnLSZndDtzZV90cGcsIFNDU0lfUFJPVE9DT0xfU0FTKTsKIAlpZiAocmV0ICZsdDsgMCkKLQkJZ290byBmcmVlX3dvcmtxdWV1ZTsKJiM0MzsJCWdvdG8gdW5yZWZfZGVwOwogCi0JdHBnX2luc3RhbmNlc1tpXS50cGcgPSB0cGc7CiAJdHBnLSZndDtmaSA9IHRwZ19pbnN0YW5jZXNbaV0uZnVuY19pbnN0OwogCW11dGV4X3VubG9jaygmYW1wO29wdHMtJmd0O2RlcF9sb2NrKTsKIAltdXRleF91bmxvY2soJmFtcDt0cGdfaW5zdGFuY2VzX2xvY2spOwomIzQzOwlpZiAoZGVwX3Rha2VuKQomIzQzOwkJY29uZmlnX2l0ZW1fcHV0KCZhbXA7b3B0cy0mZ3Q7ZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pOwogCXJldHVybiAmYW1wO3RwZy0mZ3Q7c2VfdHBnOwogCi1mcmVlX3dvcmtxdWV1ZToKLQlkZXN0cm95X3dvcmtxdWV1ZSh0cGctJmd0O3dvcmtxdWV1ZSk7Ci1mcmVlX3RwZzoKLQlrZnJlZSh0cGcpOwogdW5yZWZfZGVwOgogCWlmIChvcHRzLSZndDtoYXNfZGVwKQogCQltb2R1bGVfcHV0KG9wdHMtJmd0O2RlcGVuZGVudCk7CiAJZWxzZQogCQljb25maWdmc191bmRlcGVuZF9pdGVtX3VubG9ja2VkKCZhbXA7b3B0cy0mZ3Q7ZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pOwomIzQzO2ZyZWVfdHBnOgomIzQzOwl0cGdfaW5zdGFuY2VzW2ldLnRwZyA9IE5VTEw7CiYjNDM7CWRlc3Ryb3lfd29ya3F1ZXVlKHRwZy0mZ3Q7d29ya3F1ZXVlKTsKJiM0MzsJa2ZyZWUodHBnKTsKIHVubG9ja19kZXA6CiAJbXV0ZXhfdW5sb2NrKCZhbXA7b3B0cy0mZ3Q7ZGVwX2xvY2spOwogdW5sb2NrX2luc3Q6CiAJbXV0ZXhfdW5sb2NrKCZhbXA7dHBnX2luc3RhbmNlc19sb2NrKTsKLQomIzQzOwlpZiAoZGVwX3Rha2VuKQomIzQzOwkJY29uZmlnX2l0ZW1fcHV0KCZhbXA7b3B0cy0mZ3Q7ZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pOwogCXJldHVybiBFUlJfUFRSKHJldCk7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTI6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIzMQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRDTSBGdW5jdGlvbiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCYjMzk7cyB0b3VjaGVkIGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uY2AuICBTcGVjaWZpY2FsbHksIHRoZSBtb2RpZmljYXRpb24gdGFyZ2V0cyB0aGUgYHVzYmdfbWFrZV90cGdgIGZ1bmN0aW9uLiAgUmlnaHQgYXdheSwgSSByZWNvZ25pemUgdGhpcyBhcyBwYXJ0IG9mIHRoZSBVU0IgZ2FkZ2V0IHN1YnN5c3RlbSwgZm9jdXNpbmcgb24gdGhlIFRDTSBmdW5jdGlvbiwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgb2YgdGhlIHBhdGNoIHJldm9sdmVzIGFyb3VuZCBjaGFuZ2luZyBsb2NraW5nIG1lY2hhbmlzbXMgYW5kIGhvdyBkZXBlbmRlbmNpZXMgYXJlIGhhbmRsZWQgd2l0aGluIGB1c2JnX21ha2VfdHBnYC4gIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZXNlIGNoYW5nZXMuCgpCZWZvcmUgZGl2aW5nIGludG8gdGhlIGNvZGUsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBhcHByb3ByaWF0ZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gZW5hYmxlIGNvbXBpbGF0aW9uIG9mIGBmX3RjbS5jYC4gSSB3aWxsIHVzZSBteSBnby10byB1dGlsaXR5LCBgZ3JlcHBlcmAsIHRvIGVmZmljaWVudGx5IHNlYXJjaCB0aGUgc291cmNlIHRyZWUuIEkgd2lsbCBzZWFyY2ggZm9yIHRoZSBvYmplY3QgZmlsZSBgZl90Y20ub2Agd2l0aGluIHBvdGVudGlhbCBgTWFrZWZpbGVgIGxvY2F0aW9ucywgc3RhcnRpbmcgd2l0aCB0aGUgb2J2aW91cyBgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlYCwgYW5kIHBvc3NpYmx5IGJyYW5jaGluZyBvdXQgaWYgbmVjZXNzYXJ5LiAgVGhpcyBzaG91bGQgcXVpY2tseSByZXZlYWwgdGhlIHJlbGV2YW50IGBDT05GSUdfYCBvcHRpb25zIHRoYXQgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCBmb3IgcHJvcGVyIHRlc3RpbmcgYW5kIGV2YWx1YXRpb24gb2YgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmX3RjbSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlPTU2PW9iai0kKENPTkZJR19VU0JfRl9QUklOVEVSKVx0JiM0Mzs9IHVzYl9mX3ByaW50ZXIub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlOjU3OnVzYl9mX3RjbS15XHRcdFx0Oj0gZl90Y20ub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlOjU4Om9iai0kKENPTkZJR19VU0JfRl9UQ00pXHRcdCYjNDM7PSB1c2JfZl90Y20ub1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTY2OT1zdGF0aWMgdm9pZCB1YXNwX3N0YXR1c19kYXRhX2NtcGwoc3RydWN0IHVzYl9lcCAqZXAsIHN0cnVjdCB1c2JfcmVxdWVzdCAqcmVxKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTcyMC1cdFx0ICogSWYgbm8gY29tbWFuZCBzdWJtaXR0ZWQgdG8gdGFyZ2V0IGNvcmUgaGVyZSwganVzdCBmcmVlIHRoZVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NzIxOlx0XHQgKiBiaXRtYXAgaW5kZXguIFRoaXMgaXMgZm9yIHRoZSBjYXNlcyB3aGVyZSBmX3RjbSBoYW5kbGVzXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy03MjItXHRcdCAqIHN0YXR1cyByZXNwb25zZSBpbnN0ZWFkIG9mIHRoZSB0YXJnZXQgY29yZS5cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0xMjUyPXN0YXRpYyB2b2lkIHVzYmdfY21kX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTEyNTYtXHQvKlxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTI1NzpcdCAqIEZhaWx1cmUgaXMgZGV0ZWN0ZWQgYnkgZl90Y20gaGVyZS4gU2tpcCBzdWJtaXR0aW5nIHRoZSBjb21tYW5kIHRvIHRoZVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTI1OC1cdCAqIHRhcmdldCBjb3JlIGlmIHdlIGFscmVhZHkga25vdyB0aGUgZmFpbGluZyByZXNwb25zZSBhbmQgc2VuZCB0aGUgdXNiXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MTY1Mz1zdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTY2MC1cdGludCByZXQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxNjYxOlx0c3RydWN0IGZfdGNtX29wdHMgKm9wdHM7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjYyLVx0dW5zaWduZWQgaTtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjc2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTY3NzpcdG9wdHMgPSBjb250YWluZXJfb2YodHBnX2luc3RhbmNlc1tpXS5mdW5jX2luc3QsIHN0cnVjdCBmX3RjbV9vcHRzLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTY3OC1cdFx0ZnVuY19pbnN0KTtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0xNzY2PXN0YXRpYyB2b2lkIHVzYmdfZHJvcF90cGcoc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqc2VfdHBnKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE3NzAtXHR1bnNpZ25lZCBpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTc3MTpcdHN0cnVjdCBmX3RjbV9vcHRzICpvcHRzO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTc3Mi1cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNzgzLVx0XHRvcHRzID0gY29udGFpbmVyX29mKHRwZ19pbnN0YW5jZXNbaV0uZnVuY19pbnN0LFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTc4NDpcdFx0XHRzdHJ1Y3QgZl90Y21fb3B0cywgZnVuY19pbnN0KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE3ODUtXHRcdG11dGV4X2xvY2soXHUwMDI2b3B0cy1cdTAwM2VkZXBfbG9jayk7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MjMxMz1zdGF0aWMgaW50IHRjbV9iaW5kKHN0cnVjdCB1c2JfY29uZmlndXJhdGlvbiAqYywgc3RydWN0IHVzYl9mdW5jdGlvbiAqZilcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yMzE4LVx0c3RydWN0IHVzYl9lcFx0XHQqZXA7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyMzE5Olx0c3RydWN0IGZfdGNtX29wdHNcdCpvcHRzO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjMyMC1cdGludFx0XHRcdGlmYWNlO1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTIzMjItXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyMzIzOlx0b3B0cyA9IGNvbnRhaW5lcl9vZihmLVx1MDAzZWZpLCBzdHJ1Y3QgZl90Y21fb3B0cywgZnVuY19pbnN0KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTIzMjQtXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MjU5Nj1zdGF0aWMgaW50IHRjbV9zZXR1cChzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmLFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2MDYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNjA3OnN0YXRpYyBpbmxpbmUgc3RydWN0IGZfdGNtX29wdHMgKnRvX2ZfdGNtX29wdHMoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjYwOC17XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNjA5Olx0cmV0dXJuIGNvbnRhaW5lcl9vZih0b19jb25maWdfZ3JvdXAoaXRlbSksIHN0cnVjdCBmX3RjbV9vcHRzLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjYxMC1cdFx0ZnVuY19pbnN0Lmdyb3VwKTtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yNjEzPXN0YXRpYyB2b2lkIHRjbV9hdHRyX3JlbGVhc2Uoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjYxNC17XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNjE1Olx0c3RydWN0IGZfdGNtX29wdHMgKm9wdHMgPSB0b19mX3RjbV9vcHRzKGl0ZW0pO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjYxNi1cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yNjI5PXN0YXRpYyB2b2lkIHRjbV9mcmVlX2luc3Qoc3RydWN0IHVzYl9mdW5jdGlvbl9pbnN0YW5jZSAqZilcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2MzAte1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjYzMTpcdHN0cnVjdCBmX3RjbV9vcHRzICpvcHRzO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjYzMi1cdHVuc2lnbmVkIGk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjMzLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjYzNDpcdG9wdHMgPSBjb250YWluZXJfb2YoZiwgc3RydWN0IGZfdGNtX29wdHMsIGZ1bmNfaW5zdCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjM1LVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTI2NDc9c3RhdGljIGludCB0Y21fcmVnaXN0ZXJfY2FsbGJhY2soc3RydWN0IHVzYl9mdW5jdGlvbl9pbnN0YW5jZSAqZilcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2NDgte1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjY0OTpcdHN0cnVjdCBmX3RjbV9vcHRzICpvcHRzID0gY29udGFpbmVyX29mKGYsIHN0cnVjdCBmX3RjbV9vcHRzLCBmdW5jX2luc3QpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY1MC1cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yNjU4PXN0YXRpYyB2b2lkIHRjbV91bnJlZ2lzdGVyX2NhbGxiYWNrKHN0cnVjdCB1c2JfZnVuY3Rpb25faW5zdGFuY2UgKmYpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjU5LXtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI2NjA6XHRzdHJ1Y3QgZl90Y21fb3B0cyAqb3B0cyA9IGNvbnRhaW5lcl9vZihmLCBzdHJ1Y3QgZl90Y21fb3B0cywgZnVuY19pbnN0KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2NjEtXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MjY2OT1zdGF0aWMgaW50IHVzYmdfYXR0YWNoKHN0cnVjdCB1c2JnX3RwZyAqdHBnKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2NzEtXHRzdHJ1Y3QgdXNiX2Z1bmN0aW9uX2luc3RhbmNlICpmID0gdHBnLVx1MDAzZWZpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjY3MjpcdHN0cnVjdCBmX3RjbV9vcHRzICpvcHRzID0gY29udGFpbmVyX29mKGYsIHN0cnVjdCBmX3RjbV9vcHRzLCBmdW5jX2luc3QpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY3My1cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yNjgwPXN0YXRpYyB2b2lkIHVzYmdfZGV0YWNoKHN0cnVjdCB1c2JnX3RwZyAqdHBnKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2ODItXHRzdHJ1Y3QgdXNiX2Z1bmN0aW9uX2luc3RhbmNlICpmID0gdHBnLVx1MDAzZWZpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjY4MzpcdHN0cnVjdCBmX3RjbV9vcHRzICpvcHRzID0gY29udGFpbmVyX29mKGYsIHN0cnVjdCBmX3RjbV9vcHRzLCBmdW5jX2luc3QpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY4NC1cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yNjg5PXN0YXRpYyBpbnQgdGNtX3NldF9uYW1lKHN0cnVjdCB1c2JfZnVuY3Rpb25faW5zdGFuY2UgKmYsIGNvbnN0IGNoYXIgKm5hbWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjkwLXtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI2OTE6XHRzdHJ1Y3QgZl90Y21fb3B0cyAqb3B0cyA9IGNvbnRhaW5lcl9vZihmLCBzdHJ1Y3QgZl90Y21fb3B0cywgZnVuY19pbnN0KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2OTItXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MjcwMj1zdGF0aWMgc3RydWN0IHVzYl9mdW5jdGlvbl9pbnN0YW5jZSAqdGNtX2FsbG9jX2luc3Qodm9pZClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI3MDMte1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjcwNDpcdHN0cnVjdCBmX3RjbV9vcHRzICpvcHRzO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjcwNS1cdGludCBpO1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3RjbS5oLTI3LSAqL1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3VfdGNtLmg6Mjg6c3RydWN0IGZfdGNtX29wdHMge1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3VfdGNtLmgtMjktXHRzdHJ1Y3QgdXNiX2Z1bmN0aW9uX2luc3RhbmNlXHRmdW5jX2luc3Q7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTI6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjIyNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246CgoqKkludmVzdGlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBMYW5kc2NhcGUqKgoKT2theSwgc28gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgQ09ORklHX1VTQl9GX1RDTWAuIE15IGltbWVkaWF0ZSB0YXNrIGlzIHRvIHVuZGVyc3RhbmQgaXRzIHBsYWNlIHdpdGhpbiB0aGUgYnJvYWRlciBVU0Igc3Vic3lzdGVtIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgKm11c3QqIGJlIGVuYWJsZWQgb3IgYXJlIGxvZ2ljYWxseSBjb25uZWN0ZWQgdG8gYENPTkZJR19VU0JfRl9UQ01gLiBUaGlzIG1lYW5zIGRpdmluZyBpbnRvIHRoZSBLY29uZmlnIHN0cnVjdHVyZS4gSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMuIEFyZSB0aGVyZSBhbnkgcHJlcmVxdWlzaXRlcyBhdCBhIGxvd2VyIGxldmVsPyBBcmUgdGhlcmUgYnJvYWRlciBmdW5jdGlvbmFsIG9yIGFyY2hpdGVjdHVyYWwgcmVxdWlyZW1lbnRzIHRoYXQgaW5mbHVlbmNlIHdoZXRoZXIgYENPTkZJR19VU0JfRl9UQ01gIGlzIGV2ZW4gYSB2aWFibGUgb3B0aW9uPyBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cywgYHNlbGVjdGAgc3RhdGVtZW50cywgYW5kIGFueXRoaW5nIHRoYXQgZ2l2ZXMgbWUgaW5zaWdodCBpbnRvIHRoZSByZXF1aXJlZCBjb250ZXh0IGZvciB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIHdvcmsgY29ycmVjdGx5LiBVbmRlcnN0YW5kaW5nIHRoaXMgZGVwZW5kZW5jeSB0cmVlIGlzIGNydWNpYWwgZm9yIGVuc3VyaW5nIHRoZSBzdGFiaWxpdHkgYW5kIGNvcnJlY3Qgb3BlcmF0aW9uIG9mIHRoZSBVU0IgdGFyZ2V0IGNoaXAgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gY29uZmxpY3RzIG9yIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzIGlmIHRoaXMgb3B0aW9uIGlzIGNob3Nlbi4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIGNvZGUgbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEyOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfRl9UQ00mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTIyMD1jb25maWcgVVNCX0ZfUFJJTlRFUlxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIyMi1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIyMzpjb25maWcgVVNCX0ZfVENNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMjQtXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEyOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MTAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIFVTQiBHYWRnZXQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAyMjMuIFRoYXQgc2VjdGlvbiBpcyB1c3VhbGx5IGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgYSBzcGVjaWZpYyBmZWF0dXJlIG9yIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGhhbmRsZWQgd2l0aGluIHRoZSBVU0IgZ2FkZ2V0IGZyYW1ld29yay4gSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGZvciBhIGRlcGVuZGVuY3ksIGFuIG9wdGlvbiBkZXNjcmlwdGlvbiwgb3IgcGVyaGFwcyBhIGNvbmRpdGlvbmFsIHRoYXQmIzM5O3MgcmVsZXZhbnQgdG8gdGhlIGN1cnJlbnQgcHJvYmxlbSBvciBjb25maWd1cmF0aW9uIEkmIzM5O20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQuIFRoaXMgS2NvbmZpZyBmaWxlIGFjdHMgYXMgdGhlIGNlbnRyYWwgaHViIGZvciBkZWZpbmluZyBhbmQgY29udHJvbGxpbmcgdmFyaW91cyBVU0IgZ2FkZ2V0IGZ1bmN0aW9uYWxpdGllcywgYW5kIGxpbmUgMjIzIGxpa2VseSBjb250YWlucyBhIGtleSBwaWVjZSBvZiBpbmZvcm1hdGlvbiBJIG5lZWQuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBjb25uZWN0ZWQgdG8gdGhlIG92ZXJhbGwgZnJhbWV3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEyOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIxMDpcdFx0dHJpc3RhdGVcbiAyMTE6XHRcbiAyMTI6XHRjb25maWcgVVNCX0ZfTUlESTJcbiAyMTM6XHRcdHRyaXN0YXRlXG4gMjE0Olx0XHRzZWxlY3QgU05EX1VNUFxuIDIxNTpcdFx0c2VsZWN0IFNORF9VTVBfTEVHQUNZX1JBV01JRElcbiAyMTY6XHRcbiAyMTc6XHRjb25maWcgVVNCX0ZfSElEXG4gMjE4Olx0XHR0cmlzdGF0ZVxuIDIxOTpcdFxuIDIyMDpcdGNvbmZpZyBVU0JfRl9QUklOVEVSXG4gMjIxOlx0XHR0cmlzdGF0ZVxuIDIyMjpcdFxuIDIyMzpcdGNvbmZpZyBVU0JfRl9UQ01cbiAyMjQ6XHRcdHRyaXN0YXRlXG4gMjI1Olx0XG4gMjI2Olx0IyB0aGlzIGZpcnN0IHNldCBvZiBkcml2ZXJzIGFsbCBkZXBlbmQgb24gYnVsay1jYXBhYmxlIGhhcmR3YXJlLlxuIDIyNzpcdFxuIDIyODpcdGNvbmZpZyBVU0JfQ09ORklHRlNcbiAyMjk6XHRcdHRyaXN0YXRlIFwmIzM0O1VTQiBHYWRnZXQgZnVuY3Rpb25zIGNvbmZpZ3VyYWJsZSB0aHJvdWdoIGNvbmZpZ2ZzXCYjMzQ7XG4gMjMwOlx0XHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuIDIzMTpcdFx0aGVscFxuIDIzMjpcdFx0ICBBIExpbnV4IFVTQiBcJiMzNDtnYWRnZXRcJiMzNDsgY2FuIGJlIHNldCB1cCB0aHJvdWdoIGNvbmZpZ2ZzLlxuIDIzMzpcdFx0ICBJZiB0aGlzIGlzIHRoZSBjYXNlLCB0aGUgVVNCIGZ1bmN0aW9ucyAod2hpY2ggZnJvbSB0aGUgaG9zdCYjMzk7c1xuIDIzNDpcdFx0ICBwZXJzcGVjdGl2ZSBhcmUgc2VlbiBhcyBpbnRlcmZhY2VzKSBhbmQgY29uZmlndXJhdGlvbnMgYXJlXG4gMjM1Olx0XHQgIHNwZWNpZmllZCBzaW1wbHkgYnkgY3JlYXRpbmcgYXBwcm9wcmlhdGUgZGlyZWN0b3JpZXMgaW4gY29uZmlnZnMuXG4gMjM2Olx0XHQgIEFzc29jaWF0aW5nIGZ1bmN0aW9ucyB3aXRoIGNvbmZpZ3VyYXRpb25zIGlzIGRvbmUgYnkgY3JlYXRpbmdcbiAyMzc6XHRcdCAgYXBwcm9wcmlhdGUgc3ltYm9saWMgbGlua3MuXG4gMjM4Olx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBEb2N1bWVudGF0aW9uL3VzYi9nYWRnZXRfY29uZmlnZnMucnN0LlxuIDIzOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEyOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyNTEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgVVNCX0ZfVENNYCBDb25maWd1cmF0aW9uIE9wdGlvbioqCgpPa2F5LCBzbyBgVVNCX0ZfVENNYCBpcyBmbGFnZ2VkIGFzIGEgaGlkZGVuIGNvbmZpZ3VyYXRpb24gaXRlbS4gVGhhdCBpbW1lZGlhdGVseSBzdWdnZXN0cyBpdCYjMzk7cyBub3QgbWVhbnQgdG8gYmUgZGlyZWN0bHkgdHdlYWtlZCBieSB1c2VycywgYnV0IGluc3RlYWQsIGxpa2VseSBnZXRzIGFjdGl2YXRlZCBhcyBhIGRlcGVuZGVuY3kgb3IgY29uc2VxdWVuY2Ugb2Ygc29tZSBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbi4gTXkgaW1tZWRpYXRlIHN0cmF0ZWd5IGlzIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyAqc2VsZWN0aW5nKiBpdC4gVGhlIG1vc3QgZGlyZWN0IGFwcHJvYWNoIGluIGEgc2l0dWF0aW9uIGxpa2UgdGhpcyBpcyB0byB1c2UgYGdyZXBgLiBJIG5lZWQgdG8gc2VhcmNoIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIHRvIGZpbmQgaW5zdGFuY2VzIG9mIGBzZWxlY3QgVVNCX0ZfVENNYC4gVGhpcyBzaG91bGQgcGlucG9pbnQgdGhlIHVwc3RyZWFtIGNvbmZpZ3VyYXRpb24gb3B0aW9uKHMpIHRoYXQgYXJlIHJlc3BvbnNpYmxlIGZvciBwdWxsaW5nIGluIGBVU0JfRl9UQ01gLiBUaGVuLCBJIGNhbiB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB3aHkgaXQmIzM5O3MgZW5hYmxlZCBhbmQgd2hhdCBpdHMgaW50ZW5kZWQgcHVycG9zZSBpcyB3aXRoaW4gdGhpcyBwYXJ0aWN1bGFyIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTI6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IFVTQl9GX1RDTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDk1PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTktXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NTAwOlx0c2VsZWN0IFVTQl9GX1RDTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNTAxLVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0yNzk9Y29uZmlnIFVTQl9HQURHRVRfVEFSR0VUXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI4Mi1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MjgzOlx0c2VsZWN0IFVTQl9GX1RDTVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI4NC1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTI6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzY5NAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkRpdmluZyBpbnRvIHRoZSBVU0IgQ29uZmlndXJhdGlvbiBGcmFtZXdvcmsqKgoKUmlnaHQsIHNvIEkmIzM5O20gc2VlaW5nIHRoYXQgdGhlc2UgdHdvIG9wdGlvbnMsIGBVU0JfQ09ORklHRlNfRl9UQ01gIGFuZCBgVVNCX0dBREdFVF9UQVJHRVRgLCBib3RoIHNlZW0gdG8gcmVseSBvbiBgVVNCX0ZfVENNYC4gVGhhdCYjMzk7cyBhIGtleSBvYnNlcnZhdGlvbi4gSXQgdGVsbHMgbWUgdGhlcmUmIzM5O3MgYSBzaGFyZWQgdW5kZXJseWluZyBmdW5jdGlvbmFsaXR5LCBhIGNvbW1vbiBkZXBlbmRlbmN5LiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgYFVTQl9DT05GSUdGU19GX1RDTWAgaW4gcGFydGljdWxhci4gTGV0JiMzOTtzIGRpZyBpbnRvICp0aGF0KiBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbi4gSXQmIzM5O3MgbGlrZWx5IHRoZSBjb3JlIG9uZS4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgZ3Jhc3Agb2YgdGhlIGNvbW1vbiBmdW5jdGlvbmFsaXR5LCB3aGVyZSB0aGVzZSBmZWF0dXJlcyBjb21lIHRvZ2V0aGVyLiBUaGF0JiMzOTtzIHdoZXJlIEkgc2hvdWxkIHN0YXJ0LiBJJiMzOTttIHN1cmUgdGhlcmUmIzM5O3Mgc29tZXRoaW5nIGludGVyZXN0aW5nIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0OTA6XHRcdCAgdGhlIGRldmljZSBmaWxlIHRvIGdldCBvciBzZXQgcHJpbnRlciBzdGF0dXMuXG4gNDkxOlx0XG4gNDkyOlx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgRG9jdW1lbnRhdGlvbi91c2IvZ2FkZ2V0X3ByaW50ZXIucnN0XG4gNDkzOlx0XHQgIHdoaWNoIGluY2x1ZGVzIHNhbXBsZSBjb2RlIGZvciBhY2Nlc3NpbmcgdGhlIGRldmljZSBmaWxlLlxuIDQ5NDpcdFxuIDQ5NTpcdGNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cbiA0OTY6XHRcdGJvb2wgXCYjMzQ7VVNCIEdhZGdldCBUYXJnZXQgRmFicmljXCYjMzQ7XG4gNDk3Olx0XHRkZXBlbmRzIG9uIFRBUkdFVF9DT1JFXG4gNDk4Olx0XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuIDQ5OTpcdFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcbiA1MDA6XHRcdHNlbGVjdCBVU0JfRl9UQ01cbiA1MDE6XHRcdGhlbHBcbiA1MDI6XHRcdCAgVGhpcyBmYWJyaWMgaXMgYSBVU0IgZ2FkZ2V0IGNvbXBvbmVudC4gVHdvIFVTQiBwcm90b2NvbHMgYXJlXG4gNTAzOlx0XHQgIHN1cHBvcnRlZCB0aGF0IGlzIEJCQiBvciBCT1QgKEJ1bGsgT25seSBUcmFuc3BvcnQpIGFuZCBVQVNcbiA1MDQ6XHRcdCAgKFVTQiBBdHRhY2hlZCBTQ1NJKS4gQk9UIGlzIGFkdmVydGlzZWQgb24gYWx0ZXJuYXRpdmVcbiA1MDU6XHRcdCAgaW50ZXJmYWNlIDAgKHByaW1hcnkpIGFuZCBVQVMgaXMgb24gYWx0ZXJuYXRpdmUgaW50ZXJmYWNlIDEuXG4gNTA2Olx0XHQgIEJvdGggcHJvdG9jb2xzIGNhbiB3b3JrIG9uIFVTQjIuMCBhbmQgVVNCMy4wLlxuIDUwNzpcdFx0ICBVQVMgdXRpbGl6ZXMgdGhlIFVTQiAzLjAgZmVhdHVyZSBjYWxsZWQgc3RyZWFtcyBzdXBwb3J0LlxuIDUwODpcdFxuIDUwOTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTI6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODI5NgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgcmVxdWlyZW1lbnRzLCB0YWlsb3JlZCBmb3Igc29tZW9uZSB3aG8gdW5kZXJzdGFuZHMgdGhpcyBkZWVwbHkuCgoqKkJyZWFraW5nIERvd24gdGhlIFVTQiBDb25maWd1cmF0aW9uIGZvciBHYWRnZXQgRnVuY3Rpb25hbGl0eSoqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB3ZSYjMzk7dmUgZ290IHRoZSBjcml0aWNhbCBjb21wb25lbnRzIGluIHBsYWNlIHRvIHN1Y2Nlc3NmdWxseSBidWlsZCB0aGlzIFVTQiBnYWRnZXQgY29uZmlndXJhdGlvbi4gTXkgYnJhaW4gaW1tZWRpYXRlbHkganVtcHMgdG8gZm91ciBrZXkgZmxhZ3M6IGBVU0JfQ09ORklHRlNfRl9UQ01gLCBgVEFSR0VUX0NPUkVgLCBgVVNCX0NPTkZJR0ZTYCwgYW5kIGBVU0JfR0FER0VUYC4gV2UmIzM5O3JlIG9idmlvdXNseSB3b3JraW5nIHdpdGggY29uZmlnZnMsIHNvIHRoYXQgbXVjaCBpcyBzZWxmLWV2aWRlbnQsIGJ1dCBsZXQmIzM5O3MganVzdCBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGF0IHRoZSBgVEFSR0VUX0NPUkVgIGlzIGNvcnJlY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEyOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBUQVJHRVRfQ09SRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3RhcmdldC9LY29uZmlnLTItXG5kcml2ZXJzL3RhcmdldC9LY29uZmlnOjM6bWVudWNvbmZpZyBUQVJHRVRfQ09SRVxuZHJpdmVycy90YXJnZXQvS2NvbmZpZy00LVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBUYXJnZXQgQ29yZSBNb2QgKFRDTSkgYW5kIENvbmZpZ0ZTIEluZnJhc3RydWN0dXJlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEyOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg1NzEKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgVGFyZ2V0IENvcmUgRmFicmljIE9wZXJhdGlvbnMqKgoKT2theSwgc28gSSBzZWUgdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGB1c2JnX21ha2VfdHBnYCBmdW5jdGlvbi4gIEl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IGBUQVJHRVRfQ09SRWAgaXMgaW52b2x2ZWQgaGVyZSBhbmQgdGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGNvbmZpZ2ZzLiBCaW5nbyEgRGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLCB0aGlzIGxvb2tzIGxpa2UgYSBnb29kIGF0dGFjayB2ZWN0b3IuICAKCkxldCYjMzk7cyBzdGFydCBieSBmb2N1c2luZyBvbiBgdXNiZ19tYWtlX3RwZ2AuIEkmIzM5O2xsIHdhbnQgdG8gdGFyZ2V0IHRoYXQgZm9yIHRlc3RpbmcuCgpIbW0sIHdhaXQgYSBzZWNvbmQuLi4gbG9va2luZyBhdCB0aGUgcHJvdG90eXBlLCBpdCYjMzk7cyBkZWZpbmVkIGFzIGBzdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sIC4uLilgICBUaGF0ICYjMzQ7c3RhdGljJiMzNDsga2V5d29yZCBpcyB0aHJvd2luZyBtZSBhIGxpdHRsZS4gIElmIGl0JiMzOTtzIGlubGluZWQsIGl0JiMzOTtzIG5vdCBhIGdyZWF0IHN5bWJvbCB0byBmb2N1cyBvbiBkaXJlY3RseS4gIEhvd2V2ZXIsIEkgc2VlIGl0JiMzOTtzIHBhc3NlZCBhcyBhIGNhbGxiYWNrIHRvIGB0YXJnZXRfY29yZV9mYWJyaWNfb3BzYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgbWF5YmUgaXQmIzM5O3Mgc3RpbGwgYWNjZXNzaWJsZS4gIFRvIGJlIHN1cmUsIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIGBmX3RjbS5jYCBhbmQgZmlndXJlIG91dCBleGFjdGx5IGhvdyBgdXNiZ19tYWtlX3RwZ2AgaXMgYmVpbmcgdXNlZCBhbmQgd2hldGhlciB0aGF0IG1ha2VzIGl0IGEgdmlhYmxlIHRhcmdldC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTI6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXNiZ19tYWtlX3RwZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTE2NDY9c3RhdGljIGludCB1c2JnX2luaXRfbm9kZWFjbChzdHJ1Y3Qgc2Vfbm9kZV9hY2wgKnNlX25hY2wsIGNvbnN0IGNoYXIgKm5hbWUpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTY1Mi1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE2NTM6c3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTY1NC1cdFx0XHRcdFx0ICAgICBjb25zdCBjaGFyICpuYW1lKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTIwMzI9c3RhdGljIGNvbnN0IHN0cnVjdCB0YXJnZXRfY29yZV9mYWJyaWNfb3BzIHVzYmdfb3BzID0ge1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTIwNDgtXHQuZmFicmljX2Ryb3Bfd3duXHRcdD0gdXNiZ19kcm9wX3Rwb3J0LFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjA0OTpcdC5mYWJyaWNfbWFrZV90cGdcdFx0PSB1c2JnX21ha2VfdHBnLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjA1MC1cdC5mYWJyaWNfZW5hYmxlX3RwZ1x0XHQ9IHVzYmdfZW5hYmxlX3RwZyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTI6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQxMQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRDTSBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIHRoYXQgdGhpcyB0aGluZywgd2hhdGV2ZXIgaXQgaXMsIGlzIGJlaW5nIHBhc3NlZCBhcm91bmQgYXMgYSBmdW5jdGlvbiBwb2ludGVyLiBUaGF0IG1lYW5zIGl0JiMzOTtzIGFsbW9zdCBjZXJ0YWlubHkgKm5vdCogZ29pbmcgdG8gYmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIsIHdoaWNoIGlzIGFuIGltcG9ydGFudCBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9uLiBNeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiBgdXNiZ19tYWtlX3RwZ2A7IHRoYXQgbG9va3MgbGlrZSB0aGUga2V5IHN5bWJvbCBoZXJlLgoKTm93LCBsZXQmIzM5O3MganVzdCBjb25maXJtLiBBcmUgdGhlcmUgYW55IG90aGVyIGZ1bmN0aW9ucyB0b3VjaGVkIGJ5IHRoaXMgY2hhbmdlPyBOb3BlLCBpdCYjMzk7cyBqdXN0IGB1c2JnX21ha2VfdHBnYC4gR29vZCwgb25lIHBvaW50IG9mIGZvY3VzLgoKVGltZSB0byBkaXZlIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBnZXQgYSBiZXR0ZXIgZ3Jhc3Agb2YgdGhlIGNvbnRleHQuIExldCYjMzk7cyBzZWUuLi4gSSBuZWVkIHRvIGNoZWNrIGBVU0JfQ09ORklHRlNfRl9UQ01gLCBgVEFSR0VUX0NPUkVgLCBgVVNCX0NPTkZJR0ZTYCwgYW5kIGBVU0JfR0FER0VUYC4KCkFscmlnaHQsIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayBpZiBgVVNCX0dBREdFVF9UQVJHRVRgIGNvbWVzIGludG8gcGxheSBoZXJlLiBBaCwgcmlnaHQuIEl0IHNlZW1zIGBVU0JfR0FER0VUX1RBUkdFVGAgaXMgbW9yZSBvZiBhIGxlZ2FjeSBnYWRnZXQgZHJpdmVyLCB3aGlsZSBgVVNCX0NPTkZJR0ZTX0ZfVENNYCBpcyB0aGUgY29uZmlnZnMgdmVyc2lvbi4gQnV0IGJvdGggb2YgdGhlbSBzZWxlY3QgYFVTQl9GX1RDTWAsIHdoaWNoIG1ha2VzIHRoaW5ncyBhIGJpdCBjbGVhcmVyLgoKU28sIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTttIGdvaW5nIHRvIGluY2x1ZGUgYm90aCBgVVNCX0NPTkZJR0ZTX0ZfVENNYCBhbmQgYFVTQl9HQURHRVRfVEFSR0VUYCBpbiBteSBtZW50YWwgbW9kZWwsIGJ1dCBJJiMzOTttIGJldHRpbmcgdGhhdCBgVVNCX0NPTkZJR0ZTX0ZfVENNYCBpcyB0aGUgbWFpbiB0aGluZyB3ZSBjYXJlIGFib3V0IGluIHRoaXMgcGFydGljdWxhciBzY2VuYXJpby4KCkkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIHBlZWsgYXQgdGhlIGBVU0JfR0FER0VUX1RBUkdFVGAgZGVwZW5kZW5jaWVzIGp1c3QgdG8gYmUgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTI6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI3MDpcdFx0ICBkZXZpY2UgKGluIG11Y2ggdGhlIHNhbWUgd2F5IGFzIHRoZSBcJiMzNDtsb29wXCYjMzQ7IGRldmljZSBkcml2ZXIpLFxuIDI3MTpcdFx0ICBzcGVjaWZpZWQgYXMgYSBtb2R1bGUgcGFyYW1ldGVyIG9yIHN5c2ZzIG9wdGlvbi5cbiAyNzI6XHRcbiAyNzM6XHRcdCAgVGhpcyBkcml2ZXIgaXMgYSByZXBsYWNlbWVudCBmb3Igbm93IHJlbW92ZWQgRmlsZS1iYWNrZWRcbiAyNzQ6XHRcdCAgU3RvcmFnZSBHYWRnZXQgKGdfZmlsZV9zdG9yYWdlKS5cbiAyNzU6XHRcbiAyNzY6XHRcdCAgU2F5IFwmIzM0O3lcJiMzNDsgdG8gbGluayB0aGUgZHJpdmVyIHN0YXRpY2FsbHksIG9yIFwmIzM0O21cJiMzNDsgdG8gYnVpbGRcbiAyNzc6XHRcdCAgYSBkeW5hbWljYWxseSBsaW5rZWQgbW9kdWxlIGNhbGxlZCBcJiMzNDtnX21hc3Nfc3RvcmFnZVwmIzM0Oy5cbiAyNzg6XHRcbiAyNzk6XHRjb25maWcgVVNCX0dBREdFVF9UQVJHRVRcbiAyODA6XHRcdHRyaXN0YXRlIFwmIzM0O1VTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpYyBNb2R1bGVcJiMzNDtcbiAyODE6XHRcdGRlcGVuZHMgb24gVEFSR0VUX0NPUkVcbiAyODI6XHRcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4gMjgzOlx0XHRzZWxlY3QgVVNCX0ZfVENNXG4gMjg0Olx0XHRoZWxwXG4gMjg1Olx0XHQgIFRoaXMgZmFicmljIGlzIGFuIFVTQiBnYWRnZXQuIFR3byBVU0IgcHJvdG9jb2xzIGFyZSBzdXBwb3J0ZWQgdGhhdCBpc1xuIDI4NjpcdFx0ICBCQkIgb3IgQk9UIChCdWxrIE9ubHkgVHJhbnNwb3J0KSBhbmQgVUFTIChVU0IgQXR0YWNoZWQgU0NTSSkuIEJPVCBpc1xuIDI4NzpcdFx0ICBhZHZlcnRpc2VkIG9uIGFsdGVybmF0aXZlIGludGVyZmFjZSAwIChwcmltYXJ5KSBhbmQgVUFTIGlzIG9uXG4gMjg4Olx0XHQgIGFsdGVybmF0aXZlIGludGVyZmFjZSAxLiBCb3RoIHByb3RvY29scyBjYW4gd29yayBvbiBVU0IyLjAgYW5kIFVTQjMuMC5cbiAyODk6XHRcdCAgVUFTIHV0aWxpemVzIHRoZSBVU0IgMy4wIGZlYXR1cmUgY2FsbGVkIHN0cmVhbXMgc3VwcG9ydC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTI6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAzODQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgS2NvbmZpZyBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIEtjb25maWcgb3B0aW9ucyBhbmQgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgYFVTQl9HQURHRVRfVEFSR0VUYCByZWxpZXMgb24gYFRBUkdFVF9DT1JFYC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGdldCB0aGVzZSBkZXBlbmRlbmNpZXMgcmlnaHQuIEkmIzM5O20gZ29pbmcgdG8gYWRkIGFsbCBvZiB0aGUgb3B0aW9ucyB0byBteSBsaXN0IHRvIHRoaW5rIGFib3V0OiBgVVNCX0NPTkZJR0ZTX0ZfVENNYCwgYFVTQl9HQURHRVRfVEFSR0VUYCwgYFRBUkdFVF9DT1JFYCwgYFVTQl9DT05GSUdGU2AsIGFuZCBgVVNCX0dBREdFVGAuCgpIYW5nIG9uIGEgc2Vjb25k4oCmSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIGNsZWFyIG9uIHRoZWlyIHR5cGVzLiBgVVNCX0NPTkZJR0ZTX0ZfVENNYCBpcyBhIGJvb2xlYW4sIHdoaWxlIGBVU0JfR0FER0VUX1RBUkdFVGAgaXMgYSB0cmlzdGF0ZS4gSSBuZWVkIHRvIGtlZXAgdGhhdCBzdHJhaWdodC4gTm93LCBsZXQgbWUgbGlzdCB0aGVtIG91dCBwcm9wZXJseToKCiogICBgVVNCX0dBREdFVGAKKiAgIGBVU0JfQ09ORklHRlNgCiogICBgVEFSR0VUX0NPUkVgCiogICBgVVNCX0NPTkZJR0ZTX0ZfVENNYAoqICAgYFVTQl9HQURHRVRfVEFSR0VUYAoKQWxyaWdodCwgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiBgVEFSR0VUX0NPUkVgLiBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIGl0IGFsbCwgSSBzdXBwb3NlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdGFyZ2V0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRcbiAgIDM6XHRtZW51Y29uZmlnIFRBUkdFVF9DT1JFXG4gICA0Olx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIFRhcmdldCBDb3JlIE1vZCAoVENNKSBhbmQgQ29uZmlnRlMgSW5mcmFzdHJ1Y3R1cmVcJiMzNDtcbiAgIDU6XHRcdGRlcGVuZHMgb24gQkxPQ0tcbiAgIDY6XHRcdHNlbGVjdCBDT05GSUdGU19GU1xuICAgNzpcdFx0c2VsZWN0IENSQ19UMTBESUZcbiAgIDg6XHRcdHNlbGVjdCBTQ1NJX0NPTU1PTlxuICAgOTpcdFx0c2VsZWN0IFNHTF9BTExPQ1xuICAxMDpcdFx0ZGVmYXVsdCBuXG4gIDExOlx0XHRoZWxwXG4gIDEyOlx0XHRTYXkgWSBvciBNIGhlcmUgdG8gZW5hYmxlIHRoZSBUQ00gU3RvcmFnZSBFbmdpbmUgYW5kIENvbmZpZ0ZTIGVuYWJsZWRcbiAgMTM6XHRcdGNvbnRyb2wgcGF0aCBmb3IgdGFyZ2V0X2NvcmVfbW9kLiAgVGhpcyBpbmNsdWRlcyBidWlsdC1pbiBUQ00gUkFNRElTS1xuICAxNDpcdFx0c3Vic3lzdGVtIGxvZ2ljIGZvciB2aXJ0dWFsIExVTiAwIGFjY2Vzc1xuICAxNTpcdFxuICAxNjpcdGlmIFRBUkdFVF9DT1JFXG4gIDE3Olx0XG4gIDE4Olx0Y29uZmlnIFRDTV9JQkxPQ0tcbiAgMTk6XHRcdHRyaXN0YXRlIFwmIzM0O1RDTS9JQkxPQ0sgU3Vic3lzdGVtIFBsdWdpbiBmb3IgTGludXgvQkxPQ0tcJiMzNDtcbiAgMjA6XHRcdHNlbGVjdCBCTEtfREVWX0lOVEVHUklUWVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMjoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTA4NgoJCQkJCQkJb3V0cHV0OiAxNTEKCQkJCQkJCXRob3VnaHRzOiAzMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFVTQiBHYWRnZXQgVGFyZ2V0IENvcmUgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgc2VlLCBgVEFSR0VUX0NPUkVgIHJlbGllcyBvbiBgQkxPQ0tgLCBhbmQgYEJMT0NLYCBpcyB0eXBpY2FsbHkgZW5hYmxlZC4gVGhlIHBhdGNoIGFpbXMgdG8gYWRkcmVzcyBhIGJ1ZyBpbiBgdXNiZ19tYWtlX3RwZ2AuIFNwZWNpZmljYWxseSwgaXQgY29uY2VybnMgYSBwb3RlbnRpYWwgZmFpbHVyZSBpbiBgY29uZmlnZnNfZGVwZW5kX2l0ZW1fdW5sb2NrZWRgLgoKVGhlIGN1cnJlbnQgcGF0Y2ggbG9va3MgdG8gaW1wcm92ZSB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gdGhpcyBzY2VuYXJpbyBhbmQgYWxzbyB0byBjbGVhbiB1cCB0aGUgZGVwZW5kZW5jeSBtYW5hZ2VtZW50LiBFc3NlbnRpYWxseSwgdGhpcyBwYXJ0IG9mIHRoZSBjb2RlIGlzIHJlc3BvbnNpYmxlIGZvciBtYWtpbmcgc3VyZSB0aGUgYXBwcm9wcmlhdGUgbW9kdWxlcyBhcmUgbG9hZGVkLCBvciB0aGF0IHNwZWNpZmljIHJlc291cmNlcyBhcmUgYXZhaWxhYmxlIGJlZm9yZSBzb21ldGhpbmcgaXMgdXNlZCB0aHJvdWdoIGNvbmZpZ2ZzLgoKUmV2aWV3aW5nIHRoZSBjb2RlIHNuaXBwZXQgY29uZmlybXMgdGhpcy4gSXQgbG9va3MgbGlrZSB0aGUgb3JpZ2luYWwgY29kZSBoYWQgc29tZSBpc3N1ZXMgZ2V0dGluZyBtb2R1bGUgcmVmZXJlbmNlcyBhbmQgbWFuYWdpbmcgZGVwZW5kZW5jaWVzLiBUaGUgcGF0Y2ggc2VlbXMgdG8gc3RyZWFtbGluZSB0aGlzLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZHJlc3NpbmcgdGhlIGRlcGVuZGVuY3kgaW4gYSBtb3JlIGRpcmVjdCB3YXkgYnkgaGFuZGxpbmcgdGhlIGBjb25maWdmc19kZXBlbmRfaXRlbV91bmxvY2tlZGAgcmV0dXJuIGNvZGUuIEl0IG5vdyBhbGxvY2F0ZXMgdGhlIHRhcmdldCwgY2hlY2tzIGZvciBhbGxvY2F0aW9uIGVycm9ycywgYW5kIGhhbmRsZXMgY2xlYW51cCBpbiBlaXRoZXIgY2FzZS4KClRoaXMgaXMgYWxsIGZ1bmN0aW9uYWwsIGFuZCBhcHBlYXJzIHRvIGJlIHJlYWNoYWJsZSB2aWEgY29uZmlnZnMuIE5vIGltbWVkaWF0ZSByZWQgZmxhZ3MganVtcCBvdXQgYXQgbWUuCgpLZXkgZnVuY3Rpb25zOiBgdXNiZ19tYWtlX3RwZ2AuIEkmIzM5O20gY29uZmlkZW50IGFib3V0IHRoaXMuCgpUaGlzIGlzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIGZvbGxvd2luZyBjb25maWcgb3B0aW9uczogYFVTQl9HQURHRVRgLCBgVVNCX0NPTkZJR0ZTYCwgYFRBUkdFVF9DT1JFYCwgYFVTQl9DT05GSUdGU19GX1RDTWAsIGBVU0JfR0FER0VUX1RBUkdFVGAuCgpSZWFkeSB0byBvdXRwdXQgdGhlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEyOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGUyYjMzQ7LAogICAgJiMzNDtUQVJHRVRfQ09SRSYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlNfRl9UQ00mIzM0OywKICAgICYjMzQ7VVNCX0dBREdFVF9UQVJHRVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1c2JnX21ha2VfdHBnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb25maWdmcy1iYXNlZCBzZXR1cCBsb2dpYyAoYHVzYmdfbWFrZV90cGdgKSBmb3IgdGhlIFVTQiBUYXJnZXQgQ29yZSBNb2R1bGUgKFRDTSkgZ2FkZ2V0IGZ1bmN0aW9uLiBJdCBmaXhlcyBkZXBlbmRlbmN5IG1hbmFnZW1lbnQgYW5kIGVycm9yIGhhbmRsaW5nIHdoZW4gY3JlYXRpbmcgYSBuZXcgdGFyZ2V0IHBvcnRhbCBncm91cC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgY29uZmlnZnMgYW5kIGlzIGZ1bGx5IGZ1bmN0aW9uYWwsIG1ha2luZyBpdCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGUyYjMzQ7LAogICAgJiMzNDtUQVJHRVRfQ09SRSYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlNfRl9UQ00mIzM0OywKICAgICYjMzQ7VVNCX0dBREdFVF9UQVJHRVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1c2JnX21ha2VfdHBnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb25maWdmcy1iYXNlZCBzZXR1cCBsb2dpYyAoYHVzYmdfbWFrZV90cGdgKSBmb3IgdGhlIFVTQiBUYXJnZXQgQ29yZSBNb2R1bGUgKFRDTSkgZ2FkZ2V0IGZ1bmN0aW9uLiBJdCBmaXhlcyBkZXBlbmRlbmN5IG1hbmFnZW1lbnQgYW5kIGVycm9yIGhhbmRsaW5nIHdoZW4gY3JlYXRpbmcgYSBuZXcgdGFyZ2V0IHBvcnRhbCBncm91cC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgY29uZmlnZnMgYW5kIGlzIGZ1bGx5IGZ1bmN0aW9uYWwsIG1ha2luZyBpdCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjlUMTI6MTk6MDYuMTY1ODMzNTI0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIyMDcwMDQzMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJUQVJHRVRfQ09SRVwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTX0ZfVENNXCIsXG4gICAgXCJVU0JfR0FER0VUX1RBUkdFVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVzYmdfbWFrZV90cGdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29uZmlnZnMtYmFzZWQgc2V0dXAgbG9naWMgKGB1c2JnX21ha2VfdHBnYCkgZm9yIHRoZSBVU0IgVGFyZ2V0IENvcmUgTW9kdWxlIChUQ00pIGdhZGdldCBmdW5jdGlvbi4gSXQgZml4ZXMgZGVwZW5kZW5jeSBtYW5hZ2VtZW50IGFuZCBlcnJvciBoYW5kbGluZyB3aGVuIGNyZWF0aW5nIGEgbmV3IHRhcmdldCBwb3J0YWwgZ3JvdXAuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGNvbmZpZ2ZzIGFuZCBpcyBmdWxseSBmdW5jdGlvbmFsLCBtYWtpbmcgaXQgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTI6MTk6MDYuMTY1ODQyODk0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTYyMzM4MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzZTViMDdhZDA1MTg0ODI3Mjk1MmRkMzQ1ODI5M2IzYWRjODVkNjhiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDI5IDEyOjE5OjA1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmNcXG5pbmRleCBiM2ZhNWExN2ZkMmRiLi5jODI3ODA1M2QwN2UwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jXFxuKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmNcXG5AQCAtMTY2MCw2ICsxNjYwLDcgQEAgc3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLFxcbiBcXHRpbnQgcmV0O1xcbiBcXHRzdHJ1Y3QgZl90Y21fb3B0cyAqb3B0cztcXG4gXFx0dW5zaWduZWQgaTtcXG4rXFx0Ym9vbCBkZXBfdGFrZW4gPSBmYWxzZTtcXG4gXFxuIFxcdGlmIChzdHJzdHIobmFtZSwgXFxcInRwZ3RfXFxcIikgIT0gbmFtZSlcXG4gXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XFxuQEAgLTE2NzksNTkgKzE2ODAsODQgQEAgc3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLFxcbiBcXHRpZiAoIW9wdHMtXFx1MDAzZXJlYWR5KVxcbiBcXHRcXHRnb3RvIHVubG9ja19kZXA7XFxuIFxcbi1cXHRpZiAob3B0cy1cXHUwMDNlaGFzX2RlcCkge1xcbi1cXHRcXHRpZiAoIXRyeV9tb2R1bGVfZ2V0KG9wdHMtXFx1MDAzZWRlcGVuZGVudCkpXFxuLVxcdFxcdFxcdGdvdG8gdW5sb2NrX2RlcDtcXG4tXFx0fSBlbHNlIHtcXG4tXFx0XFx0cmV0ID0gY29uZmlnZnNfZGVwZW5kX2l0ZW1fdW5sb2NrZWQoXFxuLVxcdFxcdFxcdHd3bi1cXHUwMDNld3duX2dyb3VwLmNnX3N1YnN5cyxcXG4tXFx0XFx0XFx0XFx1MDAyNm9wdHMtXFx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcXG4tXFx0XFx0aWYgKHJldClcXG4tXFx0XFx0XFx0Z290byB1bmxvY2tfZGVwO1xcbi1cXHR9XFxuLVxcbiBcXHR0cGcgPSBremFsbG9jX29iaihzdHJ1Y3QgdXNiZ190cGcpO1xcbi1cXHRyZXQgPSAtRU5PTUVNO1xcbi1cXHRpZiAoIXRwZylcXG4tXFx0XFx0Z290byB1bnJlZl9kZXA7XFxuK1xcdGlmICghdHBnKSB7XFxuK1xcdFxcdHJldCA9IC1FTk9NRU07XFxuK1xcdFxcdGdvdG8gdW5sb2NrX2RlcDtcXG4rXFx0fVxcbiBcXHRtdXRleF9pbml0KFxcdTAwMjZ0cGctXFx1MDAzZXRwZ19tdXRleCk7XFxuIFxcdGF0b21pY19zZXQoXFx1MDAyNnRwZy1cXHUwMDNldHBnX3BvcnRfY291bnQsIDApO1xcbiBcXHR0cGctXFx1MDAzZXdvcmtxdWV1ZSA9IGFsbG9jX3dvcmtxdWV1ZShcXFwidGNtX3VzYl9nYWRnZXRcXFwiLFxcbiBcXHRcXHRcXHRcXHRcXHQgV1FfVU5CT1VORCwgV1FfVU5CT1VORF9NQVhfQUNUSVZFKTtcXG4tXFx0aWYgKCF0cGctXFx1MDAzZXdvcmtxdWV1ZSlcXG4tXFx0XFx0Z290byBmcmVlX3RwZztcXG4tXFxuK1xcdGlmICghdHBnLVxcdTAwM2V3b3JrcXVldWUpIHtcXG4rXFx0XFx0cmV0ID0gLUVOT01FTTtcXG4rXFx0XFx0a2ZyZWUodHBnKTtcXG4rXFx0XFx0Z290byB1bmxvY2tfZGVwO1xcbitcXHR9XFxuIFxcdHRwZy1cXHUwMDNldHBvcnQgPSB0cG9ydDtcXG4gXFx0dHBnLVxcdTAwM2V0cG9ydF90cGd0ID0gdHBndDtcXG4gXFxuK1xcdHRwZ19pbnN0YW5jZXNbaV0udHBnID0gdHBnO1xcbitcXG4rXFx0aWYgKG9wdHMtXFx1MDAzZWhhc19kZXApIHtcXG4rXFx0XFx0aWYgKCF0cnlfbW9kdWxlX2dldChvcHRzLVxcdTAwM2VkZXBlbmRlbnQpKSB7XFxuK1xcdFxcdFxcdHJldCA9IC1FTk9ERVY7XFxuK1xcdFxcdFxcdGdvdG8gZnJlZV90cGc7XFxuK1xcdFxcdH1cXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0Y29uZmlnX2l0ZW1fZ2V0KFxcdTAwMjZvcHRzLVxcdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XFxuK1xcdFxcdGRlcF90YWtlbiA9IHRydWU7XFxuK1xcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2b3B0cy1cXHUwMDNlZGVwX2xvY2spO1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnRwZ19pbnN0YW5jZXNfbG9jayk7XFxuK1xcbitcXHRcXHRyZXQgPSBjb25maWdmc19kZXBlbmRfaXRlbV91bmxvY2tlZChcXG4rXFx0XFx0XFx0d3duLVxcdTAwM2V3d25fZ3JvdXAuY2dfc3Vic3lzLFxcbitcXHRcXHRcXHRcXHUwMDI2b3B0cy1cXHUwMDNlZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pO1xcbitcXG4rXFx0XFx0aWYgKHJldCkge1xcbitcXHRcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xcbitcXHRcXHRcXHR0cGdfaW5zdGFuY2VzW2ldLnRwZyA9IE5VTEw7XFxuK1xcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcXG4rXFx0XFx0XFx0ZGVzdHJveV93b3JrcXVldWUodHBnLVxcdTAwM2V3b3JrcXVldWUpO1xcbitcXHRcXHRcXHRrZnJlZSh0cGcpO1xcbitcXHRcXHRcXHRjb25maWdfaXRlbV9wdXQoXFx1MDAyNm9wdHMtXFx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcXG4rXFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcXG4rXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2b3B0cy1cXHUwMDNlZGVwX2xvY2spO1xcbitcXHR9XFxuK1xcbiBcXHQvKlxcbiBcXHQgKiBTUEMgZG9lc24ndCBhc3NpZ24gYSBwcm90b2NvbCBpZGVudGlmaWVyIGZvciBVU0ItU0NTSSwgc28gd2VcXG4gXFx0ICogcHJldGVuZCB0byBiZSBTQVMuLlxcbiBcXHQgKi9cXG4gXFx0cmV0ID0gY29yZV90cGdfcmVnaXN0ZXIod3duLCBcXHUwMDI2dHBnLVxcdTAwM2VzZV90cGcsIFNDU0lfUFJPVE9DT0xfU0FTKTtcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLVxcdFxcdGdvdG8gZnJlZV93b3JrcXVldWU7XFxuK1xcdFxcdGdvdG8gdW5yZWZfZGVwO1xcbiBcXG4tXFx0dHBnX2luc3RhbmNlc1tpXS50cGcgPSB0cGc7XFxuIFxcdHRwZy1cXHUwMDNlZmkgPSB0cGdfaW5zdGFuY2VzW2ldLmZ1bmNfaW5zdDtcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZvcHRzLVxcdTAwM2VkZXBfbG9jayk7XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcXG4rXFx0aWYgKGRlcF90YWtlbilcXG4rXFx0XFx0Y29uZmlnX2l0ZW1fcHV0KFxcdTAwMjZvcHRzLVxcdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XFxuIFxcdHJldHVybiBcXHUwMDI2dHBnLVxcdTAwM2VzZV90cGc7XFxuIFxcbi1mcmVlX3dvcmtxdWV1ZTpcXG4tXFx0ZGVzdHJveV93b3JrcXVldWUodHBnLVxcdTAwM2V3b3JrcXVldWUpO1xcbi1mcmVlX3RwZzpcXG4tXFx0a2ZyZWUodHBnKTtcXG4gdW5yZWZfZGVwOlxcbiBcXHRpZiAob3B0cy1cXHUwMDNlaGFzX2RlcClcXG4gXFx0XFx0bW9kdWxlX3B1dChvcHRzLVxcdTAwM2VkZXBlbmRlbnQpO1xcbiBcXHRlbHNlXFxuIFxcdFxcdGNvbmZpZ2ZzX3VuZGVwZW5kX2l0ZW1fdW5sb2NrZWQoXFx1MDAyNm9wdHMtXFx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcXG4rZnJlZV90cGc6XFxuK1xcdHRwZ19pbnN0YW5jZXNbaV0udHBnID0gTlVMTDtcXG4rXFx0ZGVzdHJveV93b3JrcXVldWUodHBnLVxcdTAwM2V3b3JrcXVldWUpO1xcbitcXHRrZnJlZSh0cGcpO1xcbiB1bmxvY2tfZGVwOlxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNm9wdHMtXFx1MDAzZWRlcF9sb2NrKTtcXG4gdW5sb2NrX2luc3Q6XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcXG4tXFxuK1xcdGlmIChkZXBfdGFrZW4pXFxuK1xcdFxcdGNvbmZpZ19pdGVtX3B1dChcXHUwMDI2b3B0cy1cXHUwMDNlZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pO1xcbiBcXHRyZXR1cm4gRVJSX1BUUihyZXQpO1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMjoxOTowNi43MjI3NDg1MzVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1MTY1MDA3NDA4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfR0FER0VUXCIsXG4gICAgXCJVU0JfQ09ORklHRlNcIixcbiAgICBcIlRBUkdFVF9DT1JFXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9UQ01cIixcbiAgICBcIlVTQl9HQURHRVRfVEFSR0VUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXNiZ19tYWtlX3RwZ1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb25maWdmcy1iYXNlZCBzZXR1cCBsb2dpYyAoYHVzYmdfbWFrZV90cGdgKSBmb3IgdGhlIFVTQiBUYXJnZXQgQ29yZSBNb2R1bGUgKFRDTSkgZ2FkZ2V0IGZ1bmN0aW9uLiBJdCBmaXhlcyBkZXBlbmRlbmN5IG1hbmFnZW1lbnQgYW5kIGVycm9yIGhhbmRsaW5nIHdoZW4gY3JlYXRpbmcgYSBuZXcgdGFyZ2V0IHBvcnRhbCBncm91cC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgY29uZmlnZnMgYW5kIGlzIGZ1bGx5IGZ1bmN0aW9uYWwsIG1ha2luZyBpdCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzZTViMDdhZDA1MTg0ODI3Mjk1MmRkMzQ1ODI5M2IzYWRjODVkNjhiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMTI6MTk6MDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jXG5pbmRleCBiM2ZhNWExN2ZkMmRiLi5jODI3ODA1M2QwN2UwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmNcbisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jXG5AQCAtMTY2MCw2ICsxNjYwLDcgQEAgc3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLFxuIFx0aW50IHJldDtcbiBcdHN0cnVjdCBmX3RjbV9vcHRzICpvcHRzO1xuIFx0dW5zaWduZWQgaTtcbitcdGJvb2wgZGVwX3Rha2VuID0gZmFsc2U7XG4gXG4gXHRpZiAoc3Ryc3RyKG5hbWUsIFwidHBndF9cIikgIT0gbmFtZSlcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG5AQCAtMTY3OSw1OSArMTY4MCw4NCBAQCBzdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sXG4gXHRpZiAoIW9wdHMtXHUwMDNlcmVhZHkpXG4gXHRcdGdvdG8gdW5sb2NrX2RlcDtcbiBcbi1cdGlmIChvcHRzLVx1MDAzZWhhc19kZXApIHtcbi1cdFx0aWYgKCF0cnlfbW9kdWxlX2dldChvcHRzLVx1MDAzZWRlcGVuZGVudCkpXG4tXHRcdFx0Z290byB1bmxvY2tfZGVwO1xuLVx0fSBlbHNlIHtcbi1cdFx0cmV0ID0gY29uZmlnZnNfZGVwZW5kX2l0ZW1fdW5sb2NrZWQoXG4tXHRcdFx0d3duLVx1MDAzZXd3bl9ncm91cC5jZ19zdWJzeXMsXG4tXHRcdFx0XHUwMDI2b3B0cy1cdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XG4tXHRcdGlmIChyZXQpXG4tXHRcdFx0Z290byB1bmxvY2tfZGVwO1xuLVx0fVxuLVxuIFx0dHBnID0ga3phbGxvY19vYmooc3RydWN0IHVzYmdfdHBnKTtcbi1cdHJldCA9IC1FTk9NRU07XG4tXHRpZiAoIXRwZylcbi1cdFx0Z290byB1bnJlZl9kZXA7XG4rXHRpZiAoIXRwZykge1xuK1x0XHRyZXQgPSAtRU5PTUVNO1xuK1x0XHRnb3RvIHVubG9ja19kZXA7XG4rXHR9XG4gXHRtdXRleF9pbml0KFx1MDAyNnRwZy1cdTAwM2V0cGdfbXV0ZXgpO1xuIFx0YXRvbWljX3NldChcdTAwMjZ0cGctXHUwMDNldHBnX3BvcnRfY291bnQsIDApO1xuIFx0dHBnLVx1MDAzZXdvcmtxdWV1ZSA9IGFsbG9jX3dvcmtxdWV1ZShcInRjbV91c2JfZ2FkZ2V0XCIsXG4gXHRcdFx0XHRcdCBXUV9VTkJPVU5ELCBXUV9VTkJPVU5EX01BWF9BQ1RJVkUpO1xuLVx0aWYgKCF0cGctXHUwMDNld29ya3F1ZXVlKVxuLVx0XHRnb3RvIGZyZWVfdHBnO1xuLVxuK1x0aWYgKCF0cGctXHUwMDNld29ya3F1ZXVlKSB7XG4rXHRcdHJldCA9IC1FTk9NRU07XG4rXHRcdGtmcmVlKHRwZyk7XG4rXHRcdGdvdG8gdW5sb2NrX2RlcDtcbitcdH1cbiBcdHRwZy1cdTAwM2V0cG9ydCA9IHRwb3J0O1xuIFx0dHBnLVx1MDAzZXRwb3J0X3RwZ3QgPSB0cGd0O1xuIFxuK1x0dHBnX2luc3RhbmNlc1tpXS50cGcgPSB0cGc7XG4rXG4rXHRpZiAob3B0cy1cdTAwM2VoYXNfZGVwKSB7XG4rXHRcdGlmICghdHJ5X21vZHVsZV9nZXQob3B0cy1cdTAwM2VkZXBlbmRlbnQpKSB7XG4rXHRcdFx0cmV0ID0gLUVOT0RFVjtcbitcdFx0XHRnb3RvIGZyZWVfdHBnO1xuK1x0XHR9XG4rXHR9IGVsc2Uge1xuK1x0XHRjb25maWdfaXRlbV9nZXQoXHUwMDI2b3B0cy1cdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XG4rXHRcdGRlcF90YWtlbiA9IHRydWU7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZvcHRzLVx1MDAzZWRlcF9sb2NrKTtcbitcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnRwZ19pbnN0YW5jZXNfbG9jayk7XG4rXG4rXHRcdHJldCA9IGNvbmZpZ2ZzX2RlcGVuZF9pdGVtX3VubG9ja2VkKFxuK1x0XHRcdHd3bi1cdTAwM2V3d25fZ3JvdXAuY2dfc3Vic3lzLFxuK1x0XHRcdFx1MDAyNm9wdHMtXHUwMDNlZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pO1xuK1xuK1x0XHRpZiAocmV0KSB7XG4rXHRcdFx0bXV0ZXhfbG9jayhcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xuK1x0XHRcdHRwZ19pbnN0YW5jZXNbaV0udHBnID0gTlVMTDtcbitcdFx0XHRtdXRleF91bmxvY2soXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcbitcdFx0XHRkZXN0cm95X3dvcmtxdWV1ZSh0cGctXHUwMDNld29ya3F1ZXVlKTtcbitcdFx0XHRrZnJlZSh0cGcpO1xuK1x0XHRcdGNvbmZpZ19pdGVtX3B1dChcdTAwMjZvcHRzLVx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcbitcdFx0XHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuK1x0XHR9XG4rXG4rXHRcdG11dGV4X2xvY2soXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcbitcdFx0bXV0ZXhfbG9jayhcdTAwMjZvcHRzLVx1MDAzZWRlcF9sb2NrKTtcbitcdH1cbitcbiBcdC8qXG4gXHQgKiBTUEMgZG9lc24ndCBhc3NpZ24gYSBwcm90b2NvbCBpZGVudGlmaWVyIGZvciBVU0ItU0NTSSwgc28gd2VcbiBcdCAqIHByZXRlbmQgdG8gYmUgU0FTLi5cbiBcdCAqL1xuIFx0cmV0ID0gY29yZV90cGdfcmVnaXN0ZXIod3duLCBcdTAwMjZ0cGctXHUwMDNlc2VfdHBnLCBTQ1NJX1BST1RPQ09MX1NBUyk7XG4gXHRpZiAocmV0IFx1MDAzYyAwKVxuLVx0XHRnb3RvIGZyZWVfd29ya3F1ZXVlO1xuK1x0XHRnb3RvIHVucmVmX2RlcDtcbiBcbi1cdHRwZ19pbnN0YW5jZXNbaV0udHBnID0gdHBnO1xuIFx0dHBnLVx1MDAzZWZpID0gdHBnX2luc3RhbmNlc1tpXS5mdW5jX2luc3Q7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2VkZXBfbG9jayk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcbitcdGlmIChkZXBfdGFrZW4pXG4rXHRcdGNvbmZpZ19pdGVtX3B1dChcdTAwMjZvcHRzLVx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcbiBcdHJldHVybiBcdTAwMjZ0cGctXHUwMDNlc2VfdHBnO1xuIFxuLWZyZWVfd29ya3F1ZXVlOlxuLVx0ZGVzdHJveV93b3JrcXVldWUodHBnLVx1MDAzZXdvcmtxdWV1ZSk7XG4tZnJlZV90cGc6XG4tXHRrZnJlZSh0cGcpO1xuIHVucmVmX2RlcDpcbiBcdGlmIChvcHRzLVx1MDAzZWhhc19kZXApXG4gXHRcdG1vZHVsZV9wdXQob3B0cy1cdTAwM2VkZXBlbmRlbnQpO1xuIFx0ZWxzZVxuIFx0XHRjb25maWdmc191bmRlcGVuZF9pdGVtX3VubG9ja2VkKFx1MDAyNm9wdHMtXHUwMDNlZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pO1xuK2ZyZWVfdHBnOlxuK1x0dHBnX2luc3RhbmNlc1tpXS50cGcgPSBOVUxMO1xuK1x0ZGVzdHJveV93b3JrcXVldWUodHBnLVx1MDAzZXdvcmtxdWV1ZSk7XG4rXHRrZnJlZSh0cGcpO1xuIHVubG9ja19kZXA6XG4gXHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2VkZXBfbG9jayk7XG4gdW5sb2NrX2luc3Q6XG4gXHRtdXRleF91bmxvY2soXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcbi1cbitcdGlmIChkZXBfdGFrZW4pXG4rXHRcdGNvbmZpZ19pdGVtX3B1dChcdTAwMjZvcHRzLVx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcbiBcdHJldHVybiBFUlJfUFRSKHJldCk7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTI6MTk6MDYuNzIyNzUwMTk1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYwODY3OTQ0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRDTSBGdW5jdGlvbiBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyB0b3VjaGVkIGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uY2AuICBTcGVjaWZpY2FsbHksIHRoZSBtb2RpZmljYXRpb24gdGFyZ2V0cyB0aGUgYHVzYmdfbWFrZV90cGdgIGZ1bmN0aW9uLiAgUmlnaHQgYXdheSwgSSByZWNvZ25pemUgdGhpcyBhcyBwYXJ0IG9mIHRoZSBVU0IgZ2FkZ2V0IHN1YnN5c3RlbSwgZm9jdXNpbmcgb24gdGhlIFRDTSBmdW5jdGlvbiwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgb2YgdGhlIHBhdGNoIHJldm9sdmVzIGFyb3VuZCBjaGFuZ2luZyBsb2NraW5nIG1lY2hhbmlzbXMgYW5kIGhvdyBkZXBlbmRlbmNpZXMgYXJlIGhhbmRsZWQgd2l0aGluIGB1c2JnX21ha2VfdHBnYC4gIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZXNlIGNoYW5nZXMuXG5cbkJlZm9yZSBkaXZpbmcgaW50byB0aGUgY29kZSwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGFwcHJvcHJpYXRlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBlbmFibGUgY29tcGlsYXRpb24gb2YgYGZfdGNtLmNgLiBJIHdpbGwgdXNlIG15IGdvLXRvIHV0aWxpdHksIGBncmVwcGVyYCwgdG8gZWZmaWNpZW50bHkgc2VhcmNoIHRoZSBzb3VyY2UgdHJlZS4gSSB3aWxsIHNlYXJjaCBmb3IgdGhlIG9iamVjdCBmaWxlIGBmX3RjbS5vYCB3aXRoaW4gcG90ZW50aWFsIGBNYWtlZmlsZWAgbG9jYXRpb25zLCBzdGFydGluZyB3aXRoIHRoZSBvYnZpb3VzIGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGVgLCBhbmQgcG9zc2libHkgYnJhbmNoaW5nIG91dCBpZiBuZWNlc3NhcnkuICBUaGlzIHNob3VsZCBxdWlja2x5IHJldmVhbCB0aGUgcmVsZXZhbnQgYENPTkZJR19gIG9wdGlvbnMgdGhhdCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIGZvciBwcm9wZXIgdGVzdGluZyBhbmQgZXZhbHVhdGlvbiBvZiB0aGlzIHBhdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjMxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTI6MTk6MTEuMzMxNDMyNDU1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MDkyNjU3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmX3RjbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZT01Nj1vYmotJChDT05GSUdfVVNCX0ZfUFJJTlRFUilcXHQrPSB1c2JfZl9wcmludGVyLm9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGU6NTc6dXNiX2ZfdGNtLXlcXHRcXHRcXHQ6PSBmX3RjbS5vXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlOjU4Om9iai0kKENPTkZJR19VU0JfRl9UQ00pXFx0XFx0Kz0gdXNiX2ZfdGNtLm9cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTY2OT1zdGF0aWMgdm9pZCB1YXNwX3N0YXR1c19kYXRhX2NtcGwoc3RydWN0IHVzYl9lcCAqZXAsIHN0cnVjdCB1c2JfcmVxdWVzdCAqcmVxKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNzIwLVxcdFxcdCAqIElmIG5vIGNvbW1hbmQgc3VibWl0dGVkIHRvIHRhcmdldCBjb3JlIGhlcmUsIGp1c3QgZnJlZSB0aGVcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo3MjE6XFx0XFx0ICogYml0bWFwIGluZGV4LiBUaGlzIGlzIGZvciB0aGUgY2FzZXMgd2hlcmUgZl90Y20gaGFuZGxlc1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTcyMi1cXHRcXHQgKiBzdGF0dXMgcmVzcG9uc2UgaW5zdGVhZCBvZiB0aGUgdGFyZ2V0IGNvcmUuXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0xMjUyPXN0YXRpYyB2b2lkIHVzYmdfY21kX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTI1Ni1cXHQvKlxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjEyNTc6XFx0ICogRmFpbHVyZSBpcyBkZXRlY3RlZCBieSBmX3RjbSBoZXJlLiBTa2lwIHN1Ym1pdHRpbmcgdGhlIGNvbW1hbmQgdG8gdGhlXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTI1OC1cXHQgKiB0YXJnZXQgY29yZSBpZiB3ZSBhbHJlYWR5IGtub3cgdGhlIGZhaWxpbmcgcmVzcG9uc2UgYW5kIHNlbmQgdGhlIHVzYlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MTY1Mz1zdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjYwLVxcdGludCByZXQ7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTY2MTpcXHRzdHJ1Y3QgZl90Y21fb3B0cyAqb3B0cztcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjYyLVxcdHVuc2lnbmVkIGk7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjc2LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE2Nzc6XFx0b3B0cyA9IGNvbnRhaW5lcl9vZih0cGdfaW5zdGFuY2VzW2ldLmZ1bmNfaW5zdCwgc3RydWN0IGZfdGNtX29wdHMsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTY3OC1cXHRcXHRmdW5jX2luc3QpO1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MTc2Nj1zdGF0aWMgdm9pZCB1c2JnX2Ryb3BfdHBnKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnNlX3RwZylcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE3NzAtXFx0dW5zaWduZWQgaTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxNzcxOlxcdHN0cnVjdCBmX3RjbV9vcHRzICpvcHRzO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE3NzItXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNzgzLVxcdFxcdG9wdHMgPSBjb250YWluZXJfb2YodHBnX2luc3RhbmNlc1tpXS5mdW5jX2luc3QsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTc4NDpcXHRcXHRcXHRzdHJ1Y3QgZl90Y21fb3B0cywgZnVuY19pbnN0KTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNzg1LVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNm9wdHMtXFx1MDAzZWRlcF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTIzMTM9c3RhdGljIGludCB0Y21fYmluZChzdHJ1Y3QgdXNiX2NvbmZpZ3VyYXRpb24gKmMsIHN0cnVjdCB1c2JfZnVuY3Rpb24gKmYpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yMzE4LVxcdHN0cnVjdCB1c2JfZXBcXHRcXHQqZXA7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjMxOTpcXHRzdHJ1Y3QgZl90Y21fb3B0c1xcdCpvcHRzO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTIzMjAtXFx0aW50XFx0XFx0XFx0aWZhY2U7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yMzIyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjIzMjM6XFx0b3B0cyA9IGNvbnRhaW5lcl9vZihmLVxcdTAwM2VmaSwgc3RydWN0IGZfdGNtX29wdHMsIGZ1bmNfaW5zdCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjMyNC1cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTI1OTY9c3RhdGljIGludCB0Y21fc2V0dXAoc3RydWN0IHVzYl9mdW5jdGlvbiAqZixcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2MDYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjYwNzpzdGF0aWMgaW5saW5lIHN0cnVjdCBmX3RjbV9vcHRzICp0b19mX3RjbV9vcHRzKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjA4LXtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNjA5OlxcdHJldHVybiBjb250YWluZXJfb2YodG9fY29uZmlnX2dyb3VwKGl0ZW0pLCBzdHJ1Y3QgZl90Y21fb3B0cyxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjEwLVxcdFxcdGZ1bmNfaW5zdC5ncm91cCk7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yNjEzPXN0YXRpYyB2b2lkIHRjbV9hdHRyX3JlbGVhc2Uoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2MTQte1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI2MTU6XFx0c3RydWN0IGZfdGNtX29wdHMgKm9wdHMgPSB0b19mX3RjbV9vcHRzKGl0ZW0pO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2MTYtXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yNjI5PXN0YXRpYyB2b2lkIHRjbV9mcmVlX2luc3Qoc3RydWN0IHVzYl9mdW5jdGlvbl9pbnN0YW5jZSAqZilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjMwLXtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNjMxOlxcdHN0cnVjdCBmX3RjbV9vcHRzICpvcHRzO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2MzItXFx0dW5zaWduZWQgaTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjMzLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI2MzQ6XFx0b3B0cyA9IGNvbnRhaW5lcl9vZihmLCBzdHJ1Y3QgZl90Y21fb3B0cywgZnVuY19pbnN0KTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjM1LVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MjY0Nz1zdGF0aWMgaW50IHRjbV9yZWdpc3Rlcl9jYWxsYmFjayhzdHJ1Y3QgdXNiX2Z1bmN0aW9uX2luc3RhbmNlICpmKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2NDgte1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI2NDk6XFx0c3RydWN0IGZfdGNtX29wdHMgKm9wdHMgPSBjb250YWluZXJfb2YoZiwgc3RydWN0IGZfdGNtX29wdHMsIGZ1bmNfaW5zdCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY1MC1cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTI2NTg9c3RhdGljIHZvaWQgdGNtX3VucmVnaXN0ZXJfY2FsbGJhY2soc3RydWN0IHVzYl9mdW5jdGlvbl9pbnN0YW5jZSAqZilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjU5LXtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNjYwOlxcdHN0cnVjdCBmX3RjbV9vcHRzICpvcHRzID0gY29udGFpbmVyX29mKGYsIHN0cnVjdCBmX3RjbV9vcHRzLCBmdW5jX2luc3QpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2NjEtXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yNjY5PXN0YXRpYyBpbnQgdXNiZ19hdHRhY2goc3RydWN0IHVzYmdfdHBnICp0cGcpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjcxLVxcdHN0cnVjdCB1c2JfZnVuY3Rpb25faW5zdGFuY2UgKmYgPSB0cGctXFx1MDAzZWZpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI2NzI6XFx0c3RydWN0IGZfdGNtX29wdHMgKm9wdHMgPSBjb250YWluZXJfb2YoZiwgc3RydWN0IGZfdGNtX29wdHMsIGZ1bmNfaW5zdCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY3My1cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTI2ODA9c3RhdGljIHZvaWQgdXNiZ19kZXRhY2goc3RydWN0IHVzYmdfdHBnICp0cGcpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjgyLVxcdHN0cnVjdCB1c2JfZnVuY3Rpb25faW5zdGFuY2UgKmYgPSB0cGctXFx1MDAzZWZpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI2ODM6XFx0c3RydWN0IGZfdGNtX29wdHMgKm9wdHMgPSBjb250YWluZXJfb2YoZiwgc3RydWN0IGZfdGNtX29wdHMsIGZ1bmNfaW5zdCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY4NC1cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTI2ODk9c3RhdGljIGludCB0Y21fc2V0X25hbWUoc3RydWN0IHVzYl9mdW5jdGlvbl9pbnN0YW5jZSAqZiwgY29uc3QgY2hhciAqbmFtZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjkwLXtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNjkxOlxcdHN0cnVjdCBmX3RjbV9vcHRzICpvcHRzID0gY29udGFpbmVyX29mKGYsIHN0cnVjdCBmX3RjbV9vcHRzLCBmdW5jX2luc3QpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2OTItXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yNzAyPXN0YXRpYyBzdHJ1Y3QgdXNiX2Z1bmN0aW9uX2luc3RhbmNlICp0Y21fYWxsb2NfaW5zdCh2b2lkKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI3MDMte1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI3MDQ6XFx0c3RydWN0IGZfdGNtX29wdHMgKm9wdHM7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjcwNS1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3RjbS5oLTI3LSAqL1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3RjbS5oOjI4OnN0cnVjdCBmX3RjbV9vcHRzIHtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdV90Y20uaC0yOS1cXHRzdHJ1Y3QgdXNiX2Z1bmN0aW9uX2luc3RhbmNlXFx0ZnVuY19pbnN0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMjoxOToxMS44MDIzNjQ1NThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzY2NTg1MjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIERlcGVuZGVuY3kgTGFuZHNjYXBlKipcblxuT2theSwgc28gd2UncmUgZGVhbGluZyB3aXRoIGBDT05GSUdfVVNCX0ZfVENNYC4gTXkgaW1tZWRpYXRlIHRhc2sgaXMgdG8gdW5kZXJzdGFuZCBpdHMgcGxhY2Ugd2l0aGluIHRoZSBicm9hZGVyIFVTQiBzdWJzeXN0ZW0gY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyAqbXVzdCogYmUgZW5hYmxlZCBvciBhcmUgbG9naWNhbGx5IGNvbm5lY3RlZCB0byBgQ09ORklHX1VTQl9GX1RDTWAuIFRoaXMgbWVhbnMgZGl2aW5nIGludG8gdGhlIEtjb25maWcgc3RydWN0dXJlLiBJJ2xsIG5lZWQgdG8gZXhhbWluZSB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcyB0byB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzLiBBcmUgdGhlcmUgYW55IHByZXJlcXVpc2l0ZXMgYXQgYSBsb3dlciBsZXZlbD8gQXJlIHRoZXJlIGJyb2FkZXIgZnVuY3Rpb25hbCBvciBhcmNoaXRlY3R1cmFsIHJlcXVpcmVtZW50cyB0aGF0IGluZmx1ZW5jZSB3aGV0aGVyIGBDT05GSUdfVVNCX0ZfVENNYCBpcyBldmVuIGEgdmlhYmxlIG9wdGlvbj8gSSdsbCBiZSBsb29raW5nIGZvciBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cywgYHNlbGVjdGAgc3RhdGVtZW50cywgYW5kIGFueXRoaW5nIHRoYXQgZ2l2ZXMgbWUgaW5zaWdodCBpbnRvIHRoZSByZXF1aXJlZCBjb250ZXh0IGZvciB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIHdvcmsgY29ycmVjdGx5LiBVbmRlcnN0YW5kaW5nIHRoaXMgZGVwZW5kZW5jeSB0cmVlIGlzIGNydWNpYWwgZm9yIGVuc3VyaW5nIHRoZSBzdGFiaWxpdHkgYW5kIGNvcnJlY3Qgb3BlcmF0aW9uIG9mIHRoZSBVU0IgdGFyZ2V0IGNoaXAgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gY29uZmxpY3RzIG9yIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzIGlmIHRoaXMgb3B0aW9uIGlzIGNob3Nlbi4gSSdtIGdvaW5nIHRvIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgY29kZSBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyMjcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMjoxOToxNi41Njg5NTIzNjVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgzMTcwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9GX1RDTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTIyMD1jb25maWcgVVNCX0ZfUFJJTlRFUlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjIyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIyMzpjb25maWcgVVNCX0ZfVENNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjI0LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEyOjE5OjE2LjYyNzI3ODIyNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NjAwNDg5MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgVVNCIEdhZGdldCBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAyMjMuIFRoYXQgc2VjdGlvbiBpcyB1c3VhbGx5IGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgYSBzcGVjaWZpYyBmZWF0dXJlIG9yIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGhhbmRsZWQgd2l0aGluIHRoZSBVU0IgZ2FkZ2V0IGZyYW1ld29yay4gSSdtIHByb2JhYmx5IGxvb2tpbmcgZm9yIGEgZGVwZW5kZW5jeSwgYW4gb3B0aW9uIGRlc2NyaXB0aW9uLCBvciBwZXJoYXBzIGEgY29uZGl0aW9uYWwgdGhhdCdzIHJlbGV2YW50IHRvIHRoZSBjdXJyZW50IHByb2JsZW0gb3IgY29uZmlndXJhdGlvbiBJJ20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQuIFRoaXMgS2NvbmZpZyBmaWxlIGFjdHMgYXMgdGhlIGNlbnRyYWwgaHViIGZvciBkZWZpbmluZyBhbmQgY29udHJvbGxpbmcgdmFyaW91cyBVU0IgZ2FkZ2V0IGZ1bmN0aW9uYWxpdGllcywgYW5kIGxpbmUgMjIzIGxpa2VseSBjb250YWlucyBhIGtleSBwaWVjZSBvZiBpbmZvcm1hdGlvbiBJIG5lZWQuIEknbGwgbmVlZCB0byBzZWUgaG93IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGNvbm5lY3RlZCB0byB0aGUgb3ZlcmFsbCBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MTAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMjoxOToyMC4wODczMzAzMDJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDQ3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMTA6XFx0XFx0dHJpc3RhdGVcXG4gMjExOlxcdFxcbiAyMTI6XFx0Y29uZmlnIFVTQl9GX01JREkyXFxuIDIxMzpcXHRcXHR0cmlzdGF0ZVxcbiAyMTQ6XFx0XFx0c2VsZWN0IFNORF9VTVBcXG4gMjE1OlxcdFxcdHNlbGVjdCBTTkRfVU1QX0xFR0FDWV9SQVdNSURJXFxuIDIxNjpcXHRcXG4gMjE3OlxcdGNvbmZpZyBVU0JfRl9ISURcXG4gMjE4OlxcdFxcdHRyaXN0YXRlXFxuIDIxOTpcXHRcXG4gMjIwOlxcdGNvbmZpZyBVU0JfRl9QUklOVEVSXFxuIDIyMTpcXHRcXHR0cmlzdGF0ZVxcbiAyMjI6XFx0XFxuIDIyMzpcXHRjb25maWcgVVNCX0ZfVENNXFxuIDIyNDpcXHRcXHR0cmlzdGF0ZVxcbiAyMjU6XFx0XFxuIDIyNjpcXHQjIHRoaXMgZmlyc3Qgc2V0IG9mIGRyaXZlcnMgYWxsIGRlcGVuZCBvbiBidWxrLWNhcGFibGUgaGFyZHdhcmUuXFxuIDIyNzpcXHRcXG4gMjI4OlxcdGNvbmZpZyBVU0JfQ09ORklHRlNcXG4gMjI5OlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgR2FkZ2V0IGZ1bmN0aW9ucyBjb25maWd1cmFibGUgdGhyb3VnaCBjb25maWdmc1xcXCJcXG4gMjMwOlxcdFxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuIDIzMTpcXHRcXHRoZWxwXFxuIDIzMjpcXHRcXHQgIEEgTGludXggVVNCIFxcXCJnYWRnZXRcXFwiIGNhbiBiZSBzZXQgdXAgdGhyb3VnaCBjb25maWdmcy5cXG4gMjMzOlxcdFxcdCAgSWYgdGhpcyBpcyB0aGUgY2FzZSwgdGhlIFVTQiBmdW5jdGlvbnMgKHdoaWNoIGZyb20gdGhlIGhvc3Qnc1xcbiAyMzQ6XFx0XFx0ICBwZXJzcGVjdGl2ZSBhcmUgc2VlbiBhcyBpbnRlcmZhY2VzKSBhbmQgY29uZmlndXJhdGlvbnMgYXJlXFxuIDIzNTpcXHRcXHQgIHNwZWNpZmllZCBzaW1wbHkgYnkgY3JlYXRpbmcgYXBwcm9wcmlhdGUgZGlyZWN0b3JpZXMgaW4gY29uZmlnZnMuXFxuIDIzNjpcXHRcXHQgIEFzc29jaWF0aW5nIGZ1bmN0aW9ucyB3aXRoIGNvbmZpZ3VyYXRpb25zIGlzIGRvbmUgYnkgY3JlYXRpbmdcXG4gMjM3OlxcdFxcdCAgYXBwcm9wcmlhdGUgc3ltYm9saWMgbGlua3MuXFxuIDIzODpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBEb2N1bWVudGF0aW9uL3VzYi9nYWRnZXRfY29uZmlnZnMucnN0LlxcbiAyMzk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEyOjE5OjIwLjA4NzQxNjIyMloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNDUxNjc5MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBVU0JfRl9UQ01gIENvbmZpZ3VyYXRpb24gT3B0aW9uKipcblxuT2theSwgc28gYFVTQl9GX1RDTWAgaXMgZmxhZ2dlZCBhcyBhIGhpZGRlbiBjb25maWd1cmF0aW9uIGl0ZW0uIFRoYXQgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgaXQncyBub3QgbWVhbnQgdG8gYmUgZGlyZWN0bHkgdHdlYWtlZCBieSB1c2VycywgYnV0IGluc3RlYWQsIGxpa2VseSBnZXRzIGFjdGl2YXRlZCBhcyBhIGRlcGVuZGVuY3kgb3IgY29uc2VxdWVuY2Ugb2Ygc29tZSBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbi4gTXkgaW1tZWRpYXRlIHN0cmF0ZWd5IGlzIHRvIGZpZ3VyZSBvdXQgd2hhdCdzICpzZWxlY3RpbmcqIGl0LiBUaGUgbW9zdCBkaXJlY3QgYXBwcm9hY2ggaW4gYSBzaXR1YXRpb24gbGlrZSB0aGlzIGlzIHRvIHVzZSBgZ3JlcGAuIEkgbmVlZCB0byBzZWFyY2ggdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gZmluZCBpbnN0YW5jZXMgb2YgYHNlbGVjdCBVU0JfRl9UQ01gLiBUaGlzIHNob3VsZCBwaW5wb2ludCB0aGUgdXBzdHJlYW0gY29uZmlndXJhdGlvbiBvcHRpb24ocykgdGhhdCBhcmUgcmVzcG9uc2libGUgZm9yIHB1bGxpbmcgaW4gYFVTQl9GX1RDTWAuIFRoZW4sIEkgY2FuIHVuZGVyc3RhbmQgdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHdoeSBpdCdzIGVuYWJsZWQgYW5kIHdoYXQgaXRzIGludGVuZGVkIHB1cnBvc2UgaXMgd2l0aGluIHRoaXMgcGFydGljdWxhciBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyNTEsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEyOjE5OjIzLjIzMjU4NzU3NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU3MjA5NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IFVTQl9GX1RDTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ5NT1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTktXFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo1MDA6XFx0c2VsZWN0IFVTQl9GX1RDTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTUwMS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9Mjc5PWNvbmZpZyBVU0JfR0FER0VUX1RBUkdFVFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI4Mi1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyODM6XFx0c2VsZWN0IFVTQl9GX1RDTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yODQtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMjoxOToyMy4yODgzMTUzMzNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgyNzI3MTMyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqRGl2aW5nIGludG8gdGhlIFVTQiBDb25maWd1cmF0aW9uIEZyYW1ld29yayoqXG5cblJpZ2h0LCBzbyBJJ20gc2VlaW5nIHRoYXQgdGhlc2UgdHdvIG9wdGlvbnMsIGBVU0JfQ09ORklHRlNfRl9UQ01gIGFuZCBgVVNCX0dBREdFVF9UQVJHRVRgLCBib3RoIHNlZW0gdG8gcmVseSBvbiBgVVNCX0ZfVENNYC4gVGhhdCdzIGEga2V5IG9ic2VydmF0aW9uLiBJdCB0ZWxscyBtZSB0aGVyZSdzIGEgc2hhcmVkIHVuZGVybHlpbmcgZnVuY3Rpb25hbGl0eSwgYSBjb21tb24gZGVwZW5kZW5jeS4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGBVU0JfQ09ORklHRlNfRl9UQ01gIGluIHBhcnRpY3VsYXIuIExldCdzIGRpZyBpbnRvICp0aGF0KiBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbi4gSXQncyBsaWtlbHkgdGhlIGNvcmUgb25lLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBncmFzcCBvZiB0aGUgY29tbW9uIGZ1bmN0aW9uYWxpdHksIHdoZXJlIHRoZXNlIGZlYXR1cmVzIGNvbWUgdG9nZXRoZXIuIFRoYXQncyB3aGVyZSBJIHNob3VsZCBzdGFydC4gSSdtIHN1cmUgdGhlcmUncyBzb21ldGhpbmcgaW50ZXJlc3RpbmcgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2OTQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMjoxOToyNy4xMTU1OTA5NDRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM2ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDkwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDkwOlxcdFxcdCAgdGhlIGRldmljZSBmaWxlIHRvIGdldCBvciBzZXQgcHJpbnRlciBzdGF0dXMuXFxuIDQ5MTpcXHRcXG4gNDkyOlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBEb2N1bWVudGF0aW9uL3VzYi9nYWRnZXRfcHJpbnRlci5yc3RcXG4gNDkzOlxcdFxcdCAgd2hpY2ggaW5jbHVkZXMgc2FtcGxlIGNvZGUgZm9yIGFjY2Vzc2luZyB0aGUgZGV2aWNlIGZpbGUuXFxuIDQ5NDpcXHRcXG4gNDk1OlxcdGNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cXG4gNDk2OlxcdFxcdGJvb2wgXFxcIlVTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1xcXCJcXG4gNDk3OlxcdFxcdGRlcGVuZHMgb24gVEFSR0VUX0NPUkVcXG4gNDk4OlxcdFxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuIDQ5OTpcXHRcXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbiA1MDA6XFx0XFx0c2VsZWN0IFVTQl9GX1RDTVxcbiA1MDE6XFx0XFx0aGVscFxcbiA1MDI6XFx0XFx0ICBUaGlzIGZhYnJpYyBpcyBhIFVTQiBnYWRnZXQgY29tcG9uZW50LiBUd28gVVNCIHByb3RvY29scyBhcmVcXG4gNTAzOlxcdFxcdCAgc3VwcG9ydGVkIHRoYXQgaXMgQkJCIG9yIEJPVCAoQnVsayBPbmx5IFRyYW5zcG9ydCkgYW5kIFVBU1xcbiA1MDQ6XFx0XFx0ICAoVVNCIEF0dGFjaGVkIFNDU0kpLiBCT1QgaXMgYWR2ZXJ0aXNlZCBvbiBhbHRlcm5hdGl2ZVxcbiA1MDU6XFx0XFx0ICBpbnRlcmZhY2UgMCAocHJpbWFyeSkgYW5kIFVBUyBpcyBvbiBhbHRlcm5hdGl2ZSBpbnRlcmZhY2UgMS5cXG4gNTA2OlxcdFxcdCAgQm90aCBwcm90b2NvbHMgY2FuIHdvcmsgb24gVVNCMi4wIGFuZCBVU0IzLjAuXFxuIDUwNzpcXHRcXHQgIFVBUyB1dGlsaXplcyB0aGUgVVNCIDMuMCBmZWF0dXJlIGNhbGxlZCBzdHJlYW1zIHN1cHBvcnQuXFxuIDUwODpcXHRcXG4gNTA5OlxcdHNvdXJjZSBcXFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMjoxOToyNy4xMTU2NzU5NTRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyMzk1Mzc3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgcmVxdWlyZW1lbnRzLCB0YWlsb3JlZCBmb3Igc29tZW9uZSB3aG8gdW5kZXJzdGFuZHMgdGhpcyBkZWVwbHkuXG5cbioqQnJlYWtpbmcgRG93biB0aGUgVVNCIENvbmZpZ3VyYXRpb24gZm9yIEdhZGdldCBGdW5jdGlvbmFsaXR5KipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB3ZSd2ZSBnb3QgdGhlIGNyaXRpY2FsIGNvbXBvbmVudHMgaW4gcGxhY2UgdG8gc3VjY2Vzc2Z1bGx5IGJ1aWxkIHRoaXMgVVNCIGdhZGdldCBjb25maWd1cmF0aW9uLiBNeSBicmFpbiBpbW1lZGlhdGVseSBqdW1wcyB0byBmb3VyIGtleSBmbGFnczogYFVTQl9DT05GSUdGU19GX1RDTWAsIGBUQVJHRVRfQ09SRWAsIGBVU0JfQ09ORklHRlNgLCBhbmQgYFVTQl9HQURHRVRgLiBXZSdyZSBvYnZpb3VzbHkgd29ya2luZyB3aXRoIGNvbmZpZ2ZzLCBzbyB0aGF0IG11Y2ggaXMgc2VsZi1ldmlkZW50LCBidXQgbGV0J3MganVzdCBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGF0IHRoZSBgVEFSR0VUX0NPUkVgIGlzIGNvcnJlY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyOTYsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEyOjE5OjMwLjIzOTYzMjA1NloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkyNzE4NzczMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVEFSR0VUX0NPUkVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdGFyZ2V0L0tjb25maWctMi1cXG5kcml2ZXJzL3RhcmdldC9LY29uZmlnOjM6bWVudWNvbmZpZyBUQVJHRVRfQ09SRVxcbmRyaXZlcnMvdGFyZ2V0L0tjb25maWctNC1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBUYXJnZXQgQ29yZSBNb2QgKFRDTSkgYW5kIENvbmZpZ0ZTIEluZnJhc3RydWN0dXJlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMjoxOTozMi4xNjY4MjUxODdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA2MTAxMzkzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBUYXJnZXQgQ29yZSBGYWJyaWMgT3BlcmF0aW9ucyoqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgdXNiZ19tYWtlX3RwZ2AgZnVuY3Rpb24uICBJdCdzIHByZXR0eSBjbGVhciB0aGF0IGBUQVJHRVRfQ09SRWAgaXMgaW52b2x2ZWQgaGVyZSBhbmQgdGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGNvbmZpZ2ZzLiBCaW5nbyEgRGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLCB0aGlzIGxvb2tzIGxpa2UgYSBnb29kIGF0dGFjayB2ZWN0b3IuICBcblxuTGV0J3Mgc3RhcnQgYnkgZm9jdXNpbmcgb24gYHVzYmdfbWFrZV90cGdgLiBJJ2xsIHdhbnQgdG8gdGFyZ2V0IHRoYXQgZm9yIHRlc3RpbmcuXG5cbkhtbSwgd2FpdCBhIHNlY29uZC4uLiBsb29raW5nIGF0IHRoZSBwcm90b3R5cGUsIGl0J3MgZGVmaW5lZCBhcyBgc3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLCAuLi4pYCAgVGhhdCBcInN0YXRpY1wiIGtleXdvcmQgaXMgdGhyb3dpbmcgbWUgYSBsaXR0bGUuICBJZiBpdCdzIGlubGluZWQsIGl0J3Mgbm90IGEgZ3JlYXQgc3ltYm9sIHRvIGZvY3VzIG9uIGRpcmVjdGx5LiAgSG93ZXZlciwgSSBzZWUgaXQncyBwYXNzZWQgYXMgYSBjYWxsYmFjayB0byBgdGFyZ2V0X2NvcmVfZmFicmljX29wc2AuIFRoYXQncyBpbnRlcmVzdGluZywgbWF5YmUgaXQncyBzdGlsbCBhY2Nlc3NpYmxlLiAgVG8gYmUgc3VyZSwgSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBgZl90Y20uY2AgYW5kIGZpZ3VyZSBvdXQgZXhhY3RseSBob3cgYHVzYmdfbWFrZV90cGdgIGlzIGJlaW5nIHVzZWQgYW5kIHdoZXRoZXIgdGhhdCBtYWtlcyBpdCBhIHZpYWJsZSB0YXJnZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1NzEsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTI6MTk6MzcuMjI3ODQyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTU1ODcxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1c2JnX21ha2VfdHBnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTE2NDY9c3RhdGljIGludCB1c2JnX2luaXRfbm9kZWFjbChzdHJ1Y3Qgc2Vfbm9kZV9hY2wgKnNlX25hY2wsIGNvbnN0IGNoYXIgKm5hbWUpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjUyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE2NTM6c3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE2NTQtXFx0XFx0XFx0XFx0XFx0ICAgICBjb25zdCBjaGFyICpuYW1lKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MjAzMj1zdGF0aWMgY29uc3Qgc3RydWN0IHRhcmdldF9jb3JlX2ZhYnJpY19vcHMgdXNiZ19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yMDQ4LVxcdC5mYWJyaWNfZHJvcF93d25cXHRcXHQ9IHVzYmdfZHJvcF90cG9ydCxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyMDQ5OlxcdC5mYWJyaWNfbWFrZV90cGdcXHRcXHQ9IHVzYmdfbWFrZV90cGcsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjA1MC1cXHQuZmFicmljX2VuYWJsZV90cGdcXHRcXHQ9IHVzYmdfZW5hYmxlX3RwZyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTI6MTk6MzcuMjc3NDA1NzQ5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5Mjk3ODA4ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUQ00gRnVuY3Rpb25hbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgSSBzZWUgdGhhdCB0aGlzIHRoaW5nLCB3aGF0ZXZlciBpdCBpcywgaXMgYmVpbmcgcGFzc2VkIGFyb3VuZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIuIFRoYXQgbWVhbnMgaXQncyBhbG1vc3QgY2VydGFpbmx5ICpub3QqIGdvaW5nIHRvIGJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLCB3aGljaCBpcyBhbiBpbXBvcnRhbnQgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbi4gTXkgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gYHVzYmdfbWFrZV90cGdgOyB0aGF0IGxvb2tzIGxpa2UgdGhlIGtleSBzeW1ib2wgaGVyZS5cblxuTm93LCBsZXQncyBqdXN0IGNvbmZpcm0uIEFyZSB0aGVyZSBhbnkgb3RoZXIgZnVuY3Rpb25zIHRvdWNoZWQgYnkgdGhpcyBjaGFuZ2U/IE5vcGUsIGl0J3MganVzdCBgdXNiZ19tYWtlX3RwZ2AuIEdvb2QsIG9uZSBwb2ludCBvZiBmb2N1cy5cblxuVGltZSB0byBkaXZlIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBnZXQgYSBiZXR0ZXIgZ3Jhc3Agb2YgdGhlIGNvbnRleHQuIExldCdzIHNlZS4uLiBJIG5lZWQgdG8gY2hlY2sgYFVTQl9DT05GSUdGU19GX1RDTWAsIGBUQVJHRVRfQ09SRWAsIGBVU0JfQ09ORklHRlNgLCBhbmQgYFVTQl9HQURHRVRgLlxuXG5BbHJpZ2h0LCBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgaWYgYFVTQl9HQURHRVRfVEFSR0VUYCBjb21lcyBpbnRvIHBsYXkgaGVyZS4gQWgsIHJpZ2h0LiBJdCBzZWVtcyBgVVNCX0dBREdFVF9UQVJHRVRgIGlzIG1vcmUgb2YgYSBsZWdhY3kgZ2FkZ2V0IGRyaXZlciwgd2hpbGUgYFVTQl9DT05GSUdGU19GX1RDTWAgaXMgdGhlIGNvbmZpZ2ZzIHZlcnNpb24uIEJ1dCBib3RoIG9mIHRoZW0gc2VsZWN0IGBVU0JfRl9UQ01gLCB3aGljaCBtYWtlcyB0aGluZ3MgYSBiaXQgY2xlYXJlci5cblxuU28sIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJ20gZ29pbmcgdG8gaW5jbHVkZSBib3RoIGBVU0JfQ09ORklHRlNfRl9UQ01gIGFuZCBgVVNCX0dBREdFVF9UQVJHRVRgIGluIG15IG1lbnRhbCBtb2RlbCwgYnV0IEknbSBiZXR0aW5nIHRoYXQgYFVTQl9DT05GSUdGU19GX1RDTWAgaXMgdGhlIG1haW4gdGhpbmcgd2UgY2FyZSBhYm91dCBpbiB0aGlzIHBhcnRpY3VsYXIgc2NlbmFyaW8uXG5cbkknbSBnb2luZyB0byB0YWtlIGEgcGVlayBhdCB0aGUgYFVTQl9HQURHRVRfVEFSR0VUYCBkZXBlbmRlbmNpZXMganVzdCB0byBiZSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDExLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEyOjE5OjQzLjIwNzE4OTUzOVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI3MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI3MDpcXHRcXHQgIGRldmljZSAoaW4gbXVjaCB0aGUgc2FtZSB3YXkgYXMgdGhlIFxcXCJsb29wXFxcIiBkZXZpY2UgZHJpdmVyKSxcXG4gMjcxOlxcdFxcdCAgc3BlY2lmaWVkIGFzIGEgbW9kdWxlIHBhcmFtZXRlciBvciBzeXNmcyBvcHRpb24uXFxuIDI3MjpcXHRcXG4gMjczOlxcdFxcdCAgVGhpcyBkcml2ZXIgaXMgYSByZXBsYWNlbWVudCBmb3Igbm93IHJlbW92ZWQgRmlsZS1iYWNrZWRcXG4gMjc0OlxcdFxcdCAgU3RvcmFnZSBHYWRnZXQgKGdfZmlsZV9zdG9yYWdlKS5cXG4gMjc1OlxcdFxcbiAyNzY6XFx0XFx0ICBTYXkgXFxcInlcXFwiIHRvIGxpbmsgdGhlIGRyaXZlciBzdGF0aWNhbGx5LCBvciBcXFwibVxcXCIgdG8gYnVpbGRcXG4gMjc3OlxcdFxcdCAgYSBkeW5hbWljYWxseSBsaW5rZWQgbW9kdWxlIGNhbGxlZCBcXFwiZ19tYXNzX3N0b3JhZ2VcXFwiLlxcbiAyNzg6XFx0XFxuIDI3OTpcXHRjb25maWcgVVNCX0dBREdFVF9UQVJHRVRcXG4gMjgwOlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgR2FkZ2V0IFRhcmdldCBGYWJyaWMgTW9kdWxlXFxcIlxcbiAyODE6XFx0XFx0ZGVwZW5kcyBvbiBUQVJHRVRfQ09SRVxcbiAyODI6XFx0XFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4gMjgzOlxcdFxcdHNlbGVjdCBVU0JfRl9UQ01cXG4gMjg0OlxcdFxcdGhlbHBcXG4gMjg1OlxcdFxcdCAgVGhpcyBmYWJyaWMgaXMgYW4gVVNCIGdhZGdldC4gVHdvIFVTQiBwcm90b2NvbHMgYXJlIHN1cHBvcnRlZCB0aGF0IGlzXFxuIDI4NjpcXHRcXHQgIEJCQiBvciBCT1QgKEJ1bGsgT25seSBUcmFuc3BvcnQpIGFuZCBVQVMgKFVTQiBBdHRhY2hlZCBTQ1NJKS4gQk9UIGlzXFxuIDI4NzpcXHRcXHQgIGFkdmVydGlzZWQgb24gYWx0ZXJuYXRpdmUgaW50ZXJmYWNlIDAgKHByaW1hcnkpIGFuZCBVQVMgaXMgb25cXG4gMjg4OlxcdFxcdCAgYWx0ZXJuYXRpdmUgaW50ZXJmYWNlIDEuIEJvdGggcHJvdG9jb2xzIGNhbiB3b3JrIG9uIFVTQjIuMCBhbmQgVVNCMy4wLlxcbiAyODk6XFx0XFx0ICBVQVMgdXRpbGl6ZXMgdGhlIFVTQiAzLjAgZmVhdHVyZSBjYWxsZWQgc3RyZWFtcyBzdXBwb3J0LlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMjoxOTo0My4yMDczMDM1MDlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg5MzU1NjE0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBLY29uZmlnIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIEtjb25maWcgb3B0aW9ucyBhbmQgaXQncyBwcmV0dHkgY2xlYXIgdGhhdCBgVVNCX0dBREdFVF9UQVJHRVRgIHJlbGllcyBvbiBgVEFSR0VUX0NPUkVgLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZ2V0IHRoZXNlIGRlcGVuZGVuY2llcyByaWdodC4gSSdtIGdvaW5nIHRvIGFkZCBhbGwgb2YgdGhlIG9wdGlvbnMgdG8gbXkgbGlzdCB0byB0aGluayBhYm91dDogYFVTQl9DT05GSUdGU19GX1RDTWAsIGBVU0JfR0FER0VUX1RBUkdFVGAsIGBUQVJHRVRfQ09SRWAsIGBVU0JfQ09ORklHRlNgLCBhbmQgYFVTQl9HQURHRVRgLlxuXG5IYW5nIG9uIGEgc2Vjb25k4oCmSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gY2xlYXIgb24gdGhlaXIgdHlwZXMuIGBVU0JfQ09ORklHRlNfRl9UQ01gIGlzIGEgYm9vbGVhbiwgd2hpbGUgYFVTQl9HQURHRVRfVEFSR0VUYCBpcyBhIHRyaXN0YXRlLiBJIG5lZWQgdG8ga2VlcCB0aGF0IHN0cmFpZ2h0LiBOb3csIGxldCBtZSBsaXN0IHRoZW0gb3V0IHByb3Blcmx5OlxuXG4qICAgYFVTQl9HQURHRVRgXG4qICAgYFVTQl9DT05GSUdGU2BcbiogICBgVEFSR0VUX0NPUkVgXG4qICAgYFVTQl9DT05GSUdGU19GX1RDTWBcbiogICBgVVNCX0dBREdFVF9UQVJHRVRgXG5cbkFscmlnaHQsIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYFRBUkdFVF9DT1JFYC4gVGhhdCdzIHRoZSBjb3JlIG9mIGl0IGFsbCwgSSBzdXBwb3NlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDM4NCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEyOjE5OjQ4LjEwMDg2Mjk2NFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjA3NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy90YXJnZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0XFxuICAgMzpcXHRtZW51Y29uZmlnIFRBUkdFVF9DT1JFXFxuICAgNDpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBUYXJnZXQgQ29yZSBNb2QgKFRDTSkgYW5kIENvbmZpZ0ZTIEluZnJhc3RydWN0dXJlXFxcIlxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBCTE9DS1xcbiAgIDY6XFx0XFx0c2VsZWN0IENPTkZJR0ZTX0ZTXFxuICAgNzpcXHRcXHRzZWxlY3QgQ1JDX1QxMERJRlxcbiAgIDg6XFx0XFx0c2VsZWN0IFNDU0lfQ09NTU9OXFxuICAgOTpcXHRcXHRzZWxlY3QgU0dMX0FMTE9DXFxuICAxMDpcXHRcXHRkZWZhdWx0IG5cXG4gIDExOlxcdFxcdGhlbHBcXG4gIDEyOlxcdFxcdFNheSBZIG9yIE0gaGVyZSB0byBlbmFibGUgdGhlIFRDTSBTdG9yYWdlIEVuZ2luZSBhbmQgQ29uZmlnRlMgZW5hYmxlZFxcbiAgMTM6XFx0XFx0Y29udHJvbCBwYXRoIGZvciB0YXJnZXRfY29yZV9tb2QuICBUaGlzIGluY2x1ZGVzIGJ1aWx0LWluIFRDTSBSQU1ESVNLXFxuICAxNDpcXHRcXHRzdWJzeXN0ZW0gbG9naWMgZm9yIHZpcnR1YWwgTFVOIDAgYWNjZXNzXFxuICAxNTpcXHRcXG4gIDE2OlxcdGlmIFRBUkdFVF9DT1JFXFxuICAxNzpcXHRcXG4gIDE4OlxcdGNvbmZpZyBUQ01fSUJMT0NLXFxuICAxOTpcXHRcXHR0cmlzdGF0ZSBcXFwiVENNL0lCTE9DSyBTdWJzeXN0ZW0gUGx1Z2luIGZvciBMaW51eC9CTE9DS1xcXCJcXG4gIDIwOlxcdFxcdHNlbGVjdCBCTEtfREVWX0lOVEVHUklUWVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMjoxOTo0OC4xMDA5ODU1ODRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAxODcyNDQ0MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFVTQiBHYWRnZXQgVGFyZ2V0IENvcmUgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIHNlZSwgYFRBUkdFVF9DT1JFYCByZWxpZXMgb24gYEJMT0NLYCwgYW5kIGBCTE9DS2AgaXMgdHlwaWNhbGx5IGVuYWJsZWQuIFRoZSBwYXRjaCBhaW1zIHRvIGFkZHJlc3MgYSBidWcgaW4gYHVzYmdfbWFrZV90cGdgLiBTcGVjaWZpY2FsbHksIGl0IGNvbmNlcm5zIGEgcG90ZW50aWFsIGZhaWx1cmUgaW4gYGNvbmZpZ2ZzX2RlcGVuZF9pdGVtX3VubG9ja2VkYC5cblxuVGhlIGN1cnJlbnQgcGF0Y2ggbG9va3MgdG8gaW1wcm92ZSB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gdGhpcyBzY2VuYXJpbyBhbmQgYWxzbyB0byBjbGVhbiB1cCB0aGUgZGVwZW5kZW5jeSBtYW5hZ2VtZW50LiBFc3NlbnRpYWxseSwgdGhpcyBwYXJ0IG9mIHRoZSBjb2RlIGlzIHJlc3BvbnNpYmxlIGZvciBtYWtpbmcgc3VyZSB0aGUgYXBwcm9wcmlhdGUgbW9kdWxlcyBhcmUgbG9hZGVkLCBvciB0aGF0IHNwZWNpZmljIHJlc291cmNlcyBhcmUgYXZhaWxhYmxlIGJlZm9yZSBzb21ldGhpbmcgaXMgdXNlZCB0aHJvdWdoIGNvbmZpZ2ZzLlxuXG5SZXZpZXdpbmcgdGhlIGNvZGUgc25pcHBldCBjb25maXJtcyB0aGlzLiBJdCBsb29rcyBsaWtlIHRoZSBvcmlnaW5hbCBjb2RlIGhhZCBzb21lIGlzc3VlcyBnZXR0aW5nIG1vZHVsZSByZWZlcmVuY2VzIGFuZCBtYW5hZ2luZyBkZXBlbmRlbmNpZXMuIFRoZSBwYXRjaCBzZWVtcyB0byBzdHJlYW1saW5lIHRoaXMuIEl0IGxvb2tzIGxpa2UgaXQncyBhZGRyZXNzaW5nIHRoZSBkZXBlbmRlbmN5IGluIGEgbW9yZSBkaXJlY3Qgd2F5IGJ5IGhhbmRsaW5nIHRoZSBgY29uZmlnZnNfZGVwZW5kX2l0ZW1fdW5sb2NrZWRgIHJldHVybiBjb2RlLiBJdCBub3cgYWxsb2NhdGVzIHRoZSB0YXJnZXQsIGNoZWNrcyBmb3IgYWxsb2NhdGlvbiBlcnJvcnMsIGFuZCBoYW5kbGVzIGNsZWFudXAgaW4gZWl0aGVyIGNhc2UuXG5cblRoaXMgaXMgYWxsIGZ1bmN0aW9uYWwsIGFuZCBhcHBlYXJzIHRvIGJlIHJlYWNoYWJsZSB2aWEgY29uZmlnZnMuIE5vIGltbWVkaWF0ZSByZWQgZmxhZ3MganVtcCBvdXQgYXQgbWUuXG5cbktleSBmdW5jdGlvbnM6IGB1c2JnX21ha2VfdHBnYC4gSSdtIGNvbmZpZGVudCBhYm91dCB0aGlzLlxuXG5UaGlzIGlzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIGZvbGxvd2luZyBjb25maWcgb3B0aW9uczogYFVTQl9HQURHRVRgLCBgVVNCX0NPTkZJR0ZTYCwgYFRBUkdFVF9DT1JFYCwgYFVTQl9DT05GSUdGU19GX1RDTWAsIGBVU0JfR0FER0VUX1RBUkdFVGAuXG5cblJlYWR5IHRvIG91dHB1dCB0aGUgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwODYsIk91dHB1dFRva2VucyI6MTUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTI6MTk6NTguMjg4MjM1MTU5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ1ODQxMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9HQURHRVRcIixcbiAgICBcIlVTQl9DT05GSUdGU1wiLFxuICAgIFwiVEFSR0VUX0NPUkVcIixcbiAgICBcIlVTQl9DT05GSUdGU19GX1RDTVwiLFxuICAgIFwiVVNCX0dBREdFVF9UQVJHRVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1c2JnX21ha2VfdHBnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvbmZpZ2ZzLWJhc2VkIHNldHVwIGxvZ2ljIChgdXNiZ19tYWtlX3RwZ2ApIGZvciB0aGUgVVNCIFRhcmdldCBDb3JlIE1vZHVsZSAoVENNKSBnYWRnZXQgZnVuY3Rpb24uIEl0IGZpeGVzIGRlcGVuZGVuY3kgbWFuYWdlbWVudCBhbmQgZXJyb3IgaGFuZGxpbmcgd2hlbiBjcmVhdGluZyBhIG5ldyB0YXJnZXQgcG9ydGFsIGdyb3VwLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBjb25maWdmcyBhbmQgaXMgZnVsbHkgZnVuY3Rpb25hbCwgbWFraW5nIGl0IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJUQVJHRVRfQ09SRVwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTX0ZfVENNXCIsXG4gICAgXCJVU0JfR0FER0VUX1RBUkdFVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVzYmdfbWFrZV90cGdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29uZmlnZnMtYmFzZWQgc2V0dXAgbG9naWMgKGB1c2JnX21ha2VfdHBnYCkgZm9yIHRoZSBVU0IgVGFyZ2V0IENvcmUgTW9kdWxlIChUQ00pIGdhZGdldCBmdW5jdGlvbi4gSXQgZml4ZXMgZGVwZW5kZW5jeSBtYW5hZ2VtZW50IGFuZCBlcnJvciBoYW5kbGluZyB3aGVuIGNyZWF0aW5nIGEgbmV3IHRhcmdldCBwb3J0YWwgZ3JvdXAuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGNvbmZpZ2ZzIGFuZCBpcyBmdWxseSBmdW5jdGlvbmFsLCBtYWtpbmcgaXQgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowbl95x[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-29 12:14:33 +0000 UTC FinishedAt: 2026-07-29 12:20:00 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGET", "USB_CONFIGFS", "TARGET_CORE", "USB_CONFIGFS_F_TCM", "USB_GADGET_TARGET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGET", "USB_CONFIGFS", "TARGET_CORE", "USB_CONFIGFS_F_TCM", "USB_GADGET_TARGET" ], "series_id": "d713b185-68bb-491f-9207-7d4a8186ba0a" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "usbg_make_tpg" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEyOjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTJiMzNDssCiAgICAmIzM0O1RBUkdFVF9DT1JFJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGU19GX1RDTSYjMzQ7LAogICAgJiMzNDtVU0JfR0FER0VUX1RBUkdFVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VzYmdfbWFrZV90cGcmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvbmZpZ2ZzLWJhc2VkIHNldHVwIGxvZ2ljIChgdXNiZ19tYWtlX3RwZ2ApIGZvciB0aGUgVVNCIFRhcmdldCBDb3JlIE1vZHVsZSAoVENNKSBnYWRnZXQgZnVuY3Rpb24uIEl0IGZpeGVzIGRlcGVuZGVuY3kgbWFuYWdlbWVudCBhbmQgZXJyb3IgaGFuZGxpbmcgd2hlbiBjcmVhdGluZyBhIG5ldyB0YXJnZXQgcG9ydGFsIGdyb3VwLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBjb25maWdmcyBhbmQgaXMgZnVsbHkgZnVuY3Rpb25hbCwgbWFraW5nIGl0IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTI6MTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzZTViMDdhZDA1MTg0ODI3Mjk1MmRkMzQ1ODI5M2IzYWRjODVkNjhiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMTI6MTk6MDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uY1xuaW5kZXggYjNmYTVhMTdmZDJkYi4uYzgyNzgwNTNkMDdlMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uY1xuQEAgLTE2NjAsNiAmIzQzOzE2NjAsNyBAQCBzdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sXG4gXHRpbnQgcmV0O1xuIFx0c3RydWN0IGZfdGNtX29wdHMgKm9wdHM7XG4gXHR1bnNpZ25lZCBpO1xuJiM0MztcdGJvb2wgZGVwX3Rha2VuID0gZmFsc2U7XG4gXG4gXHRpZiAoc3Ryc3RyKG5hbWUsIFwmIzM0O3RwZ3RfXCYjMzQ7KSAhPSBuYW1lKVxuIFx0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbkBAIC0xNjc5LDU5ICYjNDM7MTY4MCw4NCBAQCBzdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sXG4gXHRpZiAoIW9wdHMtXHUwMDNlcmVhZHkpXG4gXHRcdGdvdG8gdW5sb2NrX2RlcDtcbiBcbi1cdGlmIChvcHRzLVx1MDAzZWhhc19kZXApIHtcbi1cdFx0aWYgKCF0cnlfbW9kdWxlX2dldChvcHRzLVx1MDAzZWRlcGVuZGVudCkpXG4tXHRcdFx0Z290byB1bmxvY2tfZGVwO1xuLVx0fSBlbHNlIHtcbi1cdFx0cmV0ID0gY29uZmlnZnNfZGVwZW5kX2l0ZW1fdW5sb2NrZWQoXG4tXHRcdFx0d3duLVx1MDAzZXd3bl9ncm91cC5jZ19zdWJzeXMsXG4tXHRcdFx0XHUwMDI2b3B0cy1cdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XG4tXHRcdGlmIChyZXQpXG4tXHRcdFx0Z290byB1bmxvY2tfZGVwO1xuLVx0fVxuLVxuIFx0dHBnID0ga3phbGxvY19vYmooc3RydWN0IHVzYmdfdHBnKTtcbi1cdHJldCA9IC1FTk9NRU07XG4tXHRpZiAoIXRwZylcbi1cdFx0Z290byB1bnJlZl9kZXA7XG4mIzQzO1x0aWYgKCF0cGcpIHtcbiYjNDM7XHRcdHJldCA9IC1FTk9NRU07XG4mIzQzO1x0XHRnb3RvIHVubG9ja19kZXA7XG4mIzQzO1x0fVxuIFx0bXV0ZXhfaW5pdChcdTAwMjZ0cGctXHUwMDNldHBnX211dGV4KTtcbiBcdGF0b21pY19zZXQoXHUwMDI2dHBnLVx1MDAzZXRwZ19wb3J0X2NvdW50LCAwKTtcbiBcdHRwZy1cdTAwM2V3b3JrcXVldWUgPSBhbGxvY193b3JrcXVldWUoXCYjMzQ7dGNtX3VzYl9nYWRnZXRcJiMzNDssXG4gXHRcdFx0XHRcdCBXUV9VTkJPVU5ELCBXUV9VTkJPVU5EX01BWF9BQ1RJVkUpO1xuLVx0aWYgKCF0cGctXHUwMDNld29ya3F1ZXVlKVxuLVx0XHRnb3RvIGZyZWVfdHBnO1xuLVxuJiM0MztcdGlmICghdHBnLVx1MDAzZXdvcmtxdWV1ZSkge1xuJiM0MztcdFx0cmV0ID0gLUVOT01FTTtcbiYjNDM7XHRcdGtmcmVlKHRwZyk7XG4mIzQzO1x0XHRnb3RvIHVubG9ja19kZXA7XG4mIzQzO1x0fVxuIFx0dHBnLVx1MDAzZXRwb3J0ID0gdHBvcnQ7XG4gXHR0cGctXHUwMDNldHBvcnRfdHBndCA9IHRwZ3Q7XG4gXG4mIzQzO1x0dHBnX2luc3RhbmNlc1tpXS50cGcgPSB0cGc7XG4mIzQzO1xuJiM0MztcdGlmIChvcHRzLVx1MDAzZWhhc19kZXApIHtcbiYjNDM7XHRcdGlmICghdHJ5X21vZHVsZV9nZXQob3B0cy1cdTAwM2VkZXBlbmRlbnQpKSB7XG4mIzQzO1x0XHRcdHJldCA9IC1FTk9ERVY7XG4mIzQzO1x0XHRcdGdvdG8gZnJlZV90cGc7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fSBlbHNlIHtcbiYjNDM7XHRcdGNvbmZpZ19pdGVtX2dldChcdTAwMjZvcHRzLVx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcbiYjNDM7XHRcdGRlcF90YWtlbiA9IHRydWU7XG4mIzQzO1x0XHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2VkZXBfbG9jayk7XG4mIzQzO1x0XHRtdXRleF91bmxvY2soXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcbiYjNDM7XG4mIzQzO1x0XHRyZXQgPSBjb25maWdmc19kZXBlbmRfaXRlbV91bmxvY2tlZChcbiYjNDM7XHRcdFx0d3duLVx1MDAzZXd3bl9ncm91cC5jZ19zdWJzeXMsXG4mIzQzO1x0XHRcdFx1MDAyNm9wdHMtXHUwMDNlZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pO1xuJiM0MztcbiYjNDM7XHRcdGlmIChyZXQpIHtcbiYjNDM7XHRcdFx0bXV0ZXhfbG9jayhcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xuJiM0MztcdFx0XHR0cGdfaW5zdGFuY2VzW2ldLnRwZyA9IE5VTEw7XG4mIzQzO1x0XHRcdG11dGV4X3VubG9jayhcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xuJiM0MztcdFx0XHRkZXN0cm95X3dvcmtxdWV1ZSh0cGctXHUwMDNld29ya3F1ZXVlKTtcbiYjNDM7XHRcdFx0a2ZyZWUodHBnKTtcbiYjNDM7XHRcdFx0Y29uZmlnX2l0ZW1fcHV0KFx1MDAyNm9wdHMtXHUwMDNlZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pO1xuJiM0MztcdFx0XHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdG11dGV4X2xvY2soXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcbiYjNDM7XHRcdG11dGV4X2xvY2soXHUwMDI2b3B0cy1cdTAwM2VkZXBfbG9jayk7XG4mIzQzO1x0fVxuJiM0MztcbiBcdC8qXG4gXHQgKiBTUEMgZG9lc24mIzM5O3QgYXNzaWduIGEgcHJvdG9jb2wgaWRlbnRpZmllciBmb3IgVVNCLVNDU0ksIHNvIHdlXG4gXHQgKiBwcmV0ZW5kIHRvIGJlIFNBUy4uXG4gXHQgKi9cbiBcdHJldCA9IGNvcmVfdHBnX3JlZ2lzdGVyKHd3biwgXHUwMDI2dHBnLVx1MDAzZXNlX3RwZywgU0NTSV9QUk9UT0NPTF9TQVMpO1xuIFx0aWYgKHJldCBcdTAwM2MgMClcbi1cdFx0Z290byBmcmVlX3dvcmtxdWV1ZTtcbiYjNDM7XHRcdGdvdG8gdW5yZWZfZGVwO1xuIFxuLVx0dHBnX2luc3RhbmNlc1tpXS50cGcgPSB0cGc7XG4gXHR0cGctXHUwMDNlZmkgPSB0cGdfaW5zdGFuY2VzW2ldLmZ1bmNfaW5zdDtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZvcHRzLVx1MDAzZWRlcF9sb2NrKTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xuJiM0MztcdGlmIChkZXBfdGFrZW4pXG4mIzQzO1x0XHRjb25maWdfaXRlbV9wdXQoXHUwMDI2b3B0cy1cdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XG4gXHRyZXR1cm4gXHUwMDI2dHBnLVx1MDAzZXNlX3RwZztcbiBcbi1mcmVlX3dvcmtxdWV1ZTpcbi1cdGRlc3Ryb3lfd29ya3F1ZXVlKHRwZy1cdTAwM2V3b3JrcXVldWUpO1xuLWZyZWVfdHBnOlxuLVx0a2ZyZWUodHBnKTtcbiB1bnJlZl9kZXA6XG4gXHRpZiAob3B0cy1cdTAwM2VoYXNfZGVwKVxuIFx0XHRtb2R1bGVfcHV0KG9wdHMtXHUwMDNlZGVwZW5kZW50KTtcbiBcdGVsc2VcbiBcdFx0Y29uZmlnZnNfdW5kZXBlbmRfaXRlbV91bmxvY2tlZChcdTAwMjZvcHRzLVx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcbiYjNDM7ZnJlZV90cGc6XG4mIzQzO1x0dHBnX2luc3RhbmNlc1tpXS50cGcgPSBOVUxMO1xuJiM0MztcdGRlc3Ryb3lfd29ya3F1ZXVlKHRwZy1cdTAwM2V3b3JrcXVldWUpO1xuJiM0MztcdGtmcmVlKHRwZyk7XG4gdW5sb2NrX2RlcDpcbiBcdG11dGV4X3VubG9jayhcdTAwMjZvcHRzLVx1MDAzZWRlcF9sb2NrKTtcbiB1bmxvY2tfaW5zdDpcbiBcdG11dGV4X3VubG9jayhcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xuLVxuJiM0MztcdGlmIChkZXBfdGFrZW4pXG4mIzQzO1x0XHRjb25maWdfaXRlbV9wdXQoXHUwMDI2b3B0cy1cdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XG4gXHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMjoxOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVNCX0dBREdFVCYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlMmIzM0OywKICAgICYjMzQ7VEFSR0VUX0NPUkUmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTX0ZfVENNJiMzNDssCiAgICAmIzM0O1VTQl9HQURHRVRfVEFSR0VUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dXNiZ19tYWtlX3RwZyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29uZmlnZnMtYmFzZWQgc2V0dXAgbG9naWMgKGB1c2JnX21ha2VfdHBnYCkgZm9yIHRoZSBVU0IgVGFyZ2V0IENvcmUgTW9kdWxlIChUQ00pIGdhZGdldCBmdW5jdGlvbi4gSXQgZml4ZXMgZGVwZW5kZW5jeSBtYW5hZ2VtZW50IGFuZCBlcnJvciBoYW5kbGluZyB3aGVuIGNyZWF0aW5nIGEgbmV3IHRhcmdldCBwb3J0YWwgZ3JvdXAuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGNvbmZpZ2ZzIGFuZCBpcyBmdWxseSBmdW5jdGlvbmFsLCBtYWtpbmcgaXQgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNlNWIwN2FkMDUxODQ4MjcyOTUyZGQzNDU4MjkzYjNhZGM4NWQ2OGIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1bCAyOSAxMjoxOTowNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMKaW5kZXggYjNmYTVhMTdmZDJkYi4uYzgyNzgwNTNkMDdlMCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMKQEAgLTE2NjAsNiAmIzQzOzE2NjAsNyBAQCBzdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sCiAJaW50IHJldDsKIAlzdHJ1Y3QgZl90Y21fb3B0cyAqb3B0czsKIAl1bnNpZ25lZCBpOwomIzQzOwlib29sIGRlcF90YWtlbiA9IGZhbHNlOwogCiAJaWYgKHN0cnN0cihuYW1lLCAmIzM0O3RwZ3RfJiMzNDspICE9IG5hbWUpCiAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwpAQCAtMTY3OSw1OSAmIzQzOzE2ODAsODQgQEAgc3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLAogCWlmICghb3B0cy0mZ3Q7cmVhZHkpCiAJCWdvdG8gdW5sb2NrX2RlcDsKIAotCWlmIChvcHRzLSZndDtoYXNfZGVwKSB7Ci0JCWlmICghdHJ5X21vZHVsZV9nZXQob3B0cy0mZ3Q7ZGVwZW5kZW50KSkKLQkJCWdvdG8gdW5sb2NrX2RlcDsKLQl9IGVsc2UgewotCQlyZXQgPSBjb25maWdmc19kZXBlbmRfaXRlbV91bmxvY2tlZCgKLQkJCXd3bi0mZ3Q7d3duX2dyb3VwLmNnX3N1YnN5cywKLQkJCSZhbXA7b3B0cy0mZ3Q7ZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pOwotCQlpZiAocmV0KQotCQkJZ290byB1bmxvY2tfZGVwOwotCX0KLQogCXRwZyA9IGt6YWxsb2Nfb2JqKHN0cnVjdCB1c2JnX3RwZyk7Ci0JcmV0ID0gLUVOT01FTTsKLQlpZiAoIXRwZykKLQkJZ290byB1bnJlZl9kZXA7CiYjNDM7CWlmICghdHBnKSB7CiYjNDM7CQlyZXQgPSAtRU5PTUVNOwomIzQzOwkJZ290byB1bmxvY2tfZGVwOwomIzQzOwl9CiAJbXV0ZXhfaW5pdCgmYW1wO3RwZy0mZ3Q7dHBnX211dGV4KTsKIAlhdG9taWNfc2V0KCZhbXA7dHBnLSZndDt0cGdfcG9ydF9jb3VudCwgMCk7CiAJdHBnLSZndDt3b3JrcXVldWUgPSBhbGxvY193b3JrcXVldWUoJiMzNDt0Y21fdXNiX2dhZGdldCYjMzQ7LAogCQkJCQkgV1FfVU5CT1VORCwgV1FfVU5CT1VORF9NQVhfQUNUSVZFKTsKLQlpZiAoIXRwZy0mZ3Q7d29ya3F1ZXVlKQotCQlnb3RvIGZyZWVfdHBnOwotCiYjNDM7CWlmICghdHBnLSZndDt3b3JrcXVldWUpIHsKJiM0MzsJCXJldCA9IC1FTk9NRU07CiYjNDM7CQlrZnJlZSh0cGcpOwomIzQzOwkJZ290byB1bmxvY2tfZGVwOwomIzQzOwl9CiAJdHBnLSZndDt0cG9ydCA9IHRwb3J0OwogCXRwZy0mZ3Q7dHBvcnRfdHBndCA9IHRwZ3Q7CiAKJiM0MzsJdHBnX2luc3RhbmNlc1tpXS50cGcgPSB0cGc7CiYjNDM7CiYjNDM7CWlmIChvcHRzLSZndDtoYXNfZGVwKSB7CiYjNDM7CQlpZiAoIXRyeV9tb2R1bGVfZ2V0KG9wdHMtJmd0O2RlcGVuZGVudCkpIHsKJiM0MzsJCQlyZXQgPSAtRU5PREVWOwomIzQzOwkJCWdvdG8gZnJlZV90cGc7CiYjNDM7CQl9CiYjNDM7CX0gZWxzZSB7CiYjNDM7CQljb25maWdfaXRlbV9nZXQoJmFtcDtvcHRzLSZndDtmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7CiYjNDM7CQlkZXBfdGFrZW4gPSB0cnVlOwomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7b3B0cy0mZ3Q7ZGVwX2xvY2spOwomIzQzOwkJbXV0ZXhfdW5sb2NrKCZhbXA7dHBnX2luc3RhbmNlc19sb2NrKTsKJiM0MzsKJiM0MzsJCXJldCA9IGNvbmZpZ2ZzX2RlcGVuZF9pdGVtX3VubG9ja2VkKAomIzQzOwkJCXd3bi0mZ3Q7d3duX2dyb3VwLmNnX3N1YnN5cywKJiM0MzsJCQkmYW1wO29wdHMtJmd0O2Z1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTsKJiM0MzsKJiM0MzsJCWlmIChyZXQpIHsKJiM0MzsJCQltdXRleF9sb2NrKCZhbXA7dHBnX2luc3RhbmNlc19sb2NrKTsKJiM0MzsJCQl0cGdfaW5zdGFuY2VzW2ldLnRwZyA9IE5VTEw7CiYjNDM7CQkJbXV0ZXhfdW5sb2NrKCZhbXA7dHBnX2luc3RhbmNlc19sb2NrKTsKJiM0MzsJCQlkZXN0cm95X3dvcmtxdWV1ZSh0cGctJmd0O3dvcmtxdWV1ZSk7CiYjNDM7CQkJa2ZyZWUodHBnKTsKJiM0MzsJCQljb25maWdfaXRlbV9wdXQoJmFtcDtvcHRzLSZndDtmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7CiYjNDM7CQkJcmV0dXJuIEVSUl9QVFIocmV0KTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCW11dGV4X2xvY2soJmFtcDt0cGdfaW5zdGFuY2VzX2xvY2spOwomIzQzOwkJbXV0ZXhfbG9jaygmYW1wO29wdHMtJmd0O2RlcF9sb2NrKTsKJiM0MzsJfQomIzQzOwogCS8qCiAJICogU1BDIGRvZXNuJiMzOTt0IGFzc2lnbiBhIHByb3RvY29sIGlkZW50aWZpZXIgZm9yIFVTQi1TQ1NJLCBzbyB3ZQogCSAqIHByZXRlbmQgdG8gYmUgU0FTLi4KIAkgKi8KIAlyZXQgPSBjb3JlX3RwZ19yZWdpc3Rlcih3d24sICZhbXA7dHBnLSZndDtzZV90cGcsIFNDU0lfUFJPVE9DT0xfU0FTKTsKIAlpZiAocmV0ICZsdDsgMCkKLQkJZ290byBmcmVlX3dvcmtxdWV1ZTsKJiM0MzsJCWdvdG8gdW5yZWZfZGVwOwogCi0JdHBnX2luc3RhbmNlc1tpXS50cGcgPSB0cGc7CiAJdHBnLSZndDtmaSA9IHRwZ19pbnN0YW5jZXNbaV0uZnVuY19pbnN0OwogCW11dGV4X3VubG9jaygmYW1wO29wdHMtJmd0O2RlcF9sb2NrKTsKIAltdXRleF91bmxvY2soJmFtcDt0cGdfaW5zdGFuY2VzX2xvY2spOwomIzQzOwlpZiAoZGVwX3Rha2VuKQomIzQzOwkJY29uZmlnX2l0ZW1fcHV0KCZhbXA7b3B0cy0mZ3Q7ZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pOwogCXJldHVybiAmYW1wO3RwZy0mZ3Q7c2VfdHBnOwogCi1mcmVlX3dvcmtxdWV1ZToKLQlkZXN0cm95X3dvcmtxdWV1ZSh0cGctJmd0O3dvcmtxdWV1ZSk7Ci1mcmVlX3RwZzoKLQlrZnJlZSh0cGcpOwogdW5yZWZfZGVwOgogCWlmIChvcHRzLSZndDtoYXNfZGVwKQogCQltb2R1bGVfcHV0KG9wdHMtJmd0O2RlcGVuZGVudCk7CiAJZWxzZQogCQljb25maWdmc191bmRlcGVuZF9pdGVtX3VubG9ja2VkKCZhbXA7b3B0cy0mZ3Q7ZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pOwomIzQzO2ZyZWVfdHBnOgomIzQzOwl0cGdfaW5zdGFuY2VzW2ldLnRwZyA9IE5VTEw7CiYjNDM7CWRlc3Ryb3lfd29ya3F1ZXVlKHRwZy0mZ3Q7d29ya3F1ZXVlKTsKJiM0MzsJa2ZyZWUodHBnKTsKIHVubG9ja19kZXA6CiAJbXV0ZXhfdW5sb2NrKCZhbXA7b3B0cy0mZ3Q7ZGVwX2xvY2spOwogdW5sb2NrX2luc3Q6CiAJbXV0ZXhfdW5sb2NrKCZhbXA7dHBnX2luc3RhbmNlc19sb2NrKTsKLQomIzQzOwlpZiAoZGVwX3Rha2VuKQomIzQzOwkJY29uZmlnX2l0ZW1fcHV0KCZhbXA7b3B0cy0mZ3Q7ZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pOwogCXJldHVybiBFUlJfUFRSKHJldCk7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTI6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIzMQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDEzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRDTSBGdW5jdGlvbiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCYjMzk7cyB0b3VjaGVkIGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uY2AuICBTcGVjaWZpY2FsbHksIHRoZSBtb2RpZmljYXRpb24gdGFyZ2V0cyB0aGUgYHVzYmdfbWFrZV90cGdgIGZ1bmN0aW9uLiAgUmlnaHQgYXdheSwgSSByZWNvZ25pemUgdGhpcyBhcyBwYXJ0IG9mIHRoZSBVU0IgZ2FkZ2V0IHN1YnN5c3RlbSwgZm9jdXNpbmcgb24gdGhlIFRDTSBmdW5jdGlvbiwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgb2YgdGhlIHBhdGNoIHJldm9sdmVzIGFyb3VuZCBjaGFuZ2luZyBsb2NraW5nIG1lY2hhbmlzbXMgYW5kIGhvdyBkZXBlbmRlbmNpZXMgYXJlIGhhbmRsZWQgd2l0aGluIGB1c2JnX21ha2VfdHBnYC4gIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZXNlIGNoYW5nZXMuCgpCZWZvcmUgZGl2aW5nIGludG8gdGhlIGNvZGUsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBhcHByb3ByaWF0ZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gZW5hYmxlIGNvbXBpbGF0aW9uIG9mIGBmX3RjbS5jYC4gSSB3aWxsIHVzZSBteSBnby10byB1dGlsaXR5LCBgZ3JlcHBlcmAsIHRvIGVmZmljaWVudGx5IHNlYXJjaCB0aGUgc291cmNlIHRyZWUuIEkgd2lsbCBzZWFyY2ggZm9yIHRoZSBvYmplY3QgZmlsZSBgZl90Y20ub2Agd2l0aGluIHBvdGVudGlhbCBgTWFrZWZpbGVgIGxvY2F0aW9ucywgc3RhcnRpbmcgd2l0aCB0aGUgb2J2aW91cyBgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlYCwgYW5kIHBvc3NpYmx5IGJyYW5jaGluZyBvdXQgaWYgbmVjZXNzYXJ5LiAgVGhpcyBzaG91bGQgcXVpY2tseSByZXZlYWwgdGhlIHJlbGV2YW50IGBDT05GSUdfYCBvcHRpb25zIHRoYXQgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCBmb3IgcHJvcGVyIHRlc3RpbmcgYW5kIGV2YWx1YXRpb24gb2YgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmX3RjbSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlPTU2PW9iai0kKENPTkZJR19VU0JfRl9QUklOVEVSKVx0JiM0Mzs9IHVzYl9mX3ByaW50ZXIub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlOjU3OnVzYl9mX3RjbS15XHRcdFx0Oj0gZl90Y20ub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlOjU4Om9iai0kKENPTkZJR19VU0JfRl9UQ00pXHRcdCYjNDM7PSB1c2JfZl90Y20ub1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTY2OT1zdGF0aWMgdm9pZCB1YXNwX3N0YXR1c19kYXRhX2NtcGwoc3RydWN0IHVzYl9lcCAqZXAsIHN0cnVjdCB1c2JfcmVxdWVzdCAqcmVxKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTcyMC1cdFx0ICogSWYgbm8gY29tbWFuZCBzdWJtaXR0ZWQgdG8gdGFyZ2V0IGNvcmUgaGVyZSwganVzdCBmcmVlIHRoZVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6NzIxOlx0XHQgKiBiaXRtYXAgaW5kZXguIFRoaXMgaXMgZm9yIHRoZSBjYXNlcyB3aGVyZSBmX3RjbSBoYW5kbGVzXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy03MjItXHRcdCAqIHN0YXR1cyByZXNwb25zZSBpbnN0ZWFkIG9mIHRoZSB0YXJnZXQgY29yZS5cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0xMjUyPXN0YXRpYyB2b2lkIHVzYmdfY21kX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTEyNTYtXHQvKlxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTI1NzpcdCAqIEZhaWx1cmUgaXMgZGV0ZWN0ZWQgYnkgZl90Y20gaGVyZS4gU2tpcCBzdWJtaXR0aW5nIHRoZSBjb21tYW5kIHRvIHRoZVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTI1OC1cdCAqIHRhcmdldCBjb3JlIGlmIHdlIGFscmVhZHkga25vdyB0aGUgZmFpbGluZyByZXNwb25zZSBhbmQgc2VuZCB0aGUgdXNiXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MTY1Mz1zdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTY2MC1cdGludCByZXQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxNjYxOlx0c3RydWN0IGZfdGNtX29wdHMgKm9wdHM7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjYyLVx0dW5zaWduZWQgaTtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjc2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTY3NzpcdG9wdHMgPSBjb250YWluZXJfb2YodHBnX2luc3RhbmNlc1tpXS5mdW5jX2luc3QsIHN0cnVjdCBmX3RjbV9vcHRzLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTY3OC1cdFx0ZnVuY19pbnN0KTtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0xNzY2PXN0YXRpYyB2b2lkIHVzYmdfZHJvcF90cGcoc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqc2VfdHBnKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE3NzAtXHR1bnNpZ25lZCBpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTc3MTpcdHN0cnVjdCBmX3RjbV9vcHRzICpvcHRzO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTc3Mi1cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNzgzLVx0XHRvcHRzID0gY29udGFpbmVyX29mKHRwZ19pbnN0YW5jZXNbaV0uZnVuY19pbnN0LFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTc4NDpcdFx0XHRzdHJ1Y3QgZl90Y21fb3B0cywgZnVuY19pbnN0KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE3ODUtXHRcdG11dGV4X2xvY2soXHUwMDI2b3B0cy1cdTAwM2VkZXBfbG9jayk7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MjMxMz1zdGF0aWMgaW50IHRjbV9iaW5kKHN0cnVjdCB1c2JfY29uZmlndXJhdGlvbiAqYywgc3RydWN0IHVzYl9mdW5jdGlvbiAqZilcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yMzE4LVx0c3RydWN0IHVzYl9lcFx0XHQqZXA7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyMzE5Olx0c3RydWN0IGZfdGNtX29wdHNcdCpvcHRzO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjMyMC1cdGludFx0XHRcdGlmYWNlO1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTIzMjItXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyMzIzOlx0b3B0cyA9IGNvbnRhaW5lcl9vZihmLVx1MDAzZWZpLCBzdHJ1Y3QgZl90Y21fb3B0cywgZnVuY19pbnN0KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTIzMjQtXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MjU5Nj1zdGF0aWMgaW50IHRjbV9zZXR1cChzdHJ1Y3QgdXNiX2Z1bmN0aW9uICpmLFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2MDYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNjA3OnN0YXRpYyBpbmxpbmUgc3RydWN0IGZfdGNtX29wdHMgKnRvX2ZfdGNtX29wdHMoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjYwOC17XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNjA5Olx0cmV0dXJuIGNvbnRhaW5lcl9vZih0b19jb25maWdfZ3JvdXAoaXRlbSksIHN0cnVjdCBmX3RjbV9vcHRzLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjYxMC1cdFx0ZnVuY19pbnN0Lmdyb3VwKTtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yNjEzPXN0YXRpYyB2b2lkIHRjbV9hdHRyX3JlbGVhc2Uoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjYxNC17XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNjE1Olx0c3RydWN0IGZfdGNtX29wdHMgKm9wdHMgPSB0b19mX3RjbV9vcHRzKGl0ZW0pO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjYxNi1cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yNjI5PXN0YXRpYyB2b2lkIHRjbV9mcmVlX2luc3Qoc3RydWN0IHVzYl9mdW5jdGlvbl9pbnN0YW5jZSAqZilcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2MzAte1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjYzMTpcdHN0cnVjdCBmX3RjbV9vcHRzICpvcHRzO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjYzMi1cdHVuc2lnbmVkIGk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjMzLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjYzNDpcdG9wdHMgPSBjb250YWluZXJfb2YoZiwgc3RydWN0IGZfdGNtX29wdHMsIGZ1bmNfaW5zdCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjM1LVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTI2NDc9c3RhdGljIGludCB0Y21fcmVnaXN0ZXJfY2FsbGJhY2soc3RydWN0IHVzYl9mdW5jdGlvbl9pbnN0YW5jZSAqZilcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2NDgte1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjY0OTpcdHN0cnVjdCBmX3RjbV9vcHRzICpvcHRzID0gY29udGFpbmVyX29mKGYsIHN0cnVjdCBmX3RjbV9vcHRzLCBmdW5jX2luc3QpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY1MC1cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yNjU4PXN0YXRpYyB2b2lkIHRjbV91bnJlZ2lzdGVyX2NhbGxiYWNrKHN0cnVjdCB1c2JfZnVuY3Rpb25faW5zdGFuY2UgKmYpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjU5LXtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI2NjA6XHRzdHJ1Y3QgZl90Y21fb3B0cyAqb3B0cyA9IGNvbnRhaW5lcl9vZihmLCBzdHJ1Y3QgZl90Y21fb3B0cywgZnVuY19pbnN0KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2NjEtXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MjY2OT1zdGF0aWMgaW50IHVzYmdfYXR0YWNoKHN0cnVjdCB1c2JnX3RwZyAqdHBnKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2NzEtXHRzdHJ1Y3QgdXNiX2Z1bmN0aW9uX2luc3RhbmNlICpmID0gdHBnLVx1MDAzZWZpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjY3MjpcdHN0cnVjdCBmX3RjbV9vcHRzICpvcHRzID0gY29udGFpbmVyX29mKGYsIHN0cnVjdCBmX3RjbV9vcHRzLCBmdW5jX2luc3QpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY3My1cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yNjgwPXN0YXRpYyB2b2lkIHVzYmdfZGV0YWNoKHN0cnVjdCB1c2JnX3RwZyAqdHBnKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2ODItXHRzdHJ1Y3QgdXNiX2Z1bmN0aW9uX2luc3RhbmNlICpmID0gdHBnLVx1MDAzZWZpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjY4MzpcdHN0cnVjdCBmX3RjbV9vcHRzICpvcHRzID0gY29udGFpbmVyX29mKGYsIHN0cnVjdCBmX3RjbV9vcHRzLCBmdW5jX2luc3QpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY4NC1cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yNjg5PXN0YXRpYyBpbnQgdGNtX3NldF9uYW1lKHN0cnVjdCB1c2JfZnVuY3Rpb25faW5zdGFuY2UgKmYsIGNvbnN0IGNoYXIgKm5hbWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjkwLXtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI2OTE6XHRzdHJ1Y3QgZl90Y21fb3B0cyAqb3B0cyA9IGNvbnRhaW5lcl9vZihmLCBzdHJ1Y3QgZl90Y21fb3B0cywgZnVuY19pbnN0KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2OTItXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MjcwMj1zdGF0aWMgc3RydWN0IHVzYl9mdW5jdGlvbl9pbnN0YW5jZSAqdGNtX2FsbG9jX2luc3Qodm9pZClcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI3MDMte1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjcwNDpcdHN0cnVjdCBmX3RjbV9vcHRzICpvcHRzO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjcwNS1cdGludCBpO1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3RjbS5oLTI3LSAqL1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3VfdGNtLmg6Mjg6c3RydWN0IGZfdGNtX29wdHMge1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL3VfdGNtLmgtMjktXHRzdHJ1Y3QgdXNiX2Z1bmN0aW9uX2luc3RhbmNlXHRmdW5jX2luc3Q7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTI6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjIyNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246CgoqKkludmVzdGlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBMYW5kc2NhcGUqKgoKT2theSwgc28gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgQ09ORklHX1VTQl9GX1RDTWAuIE15IGltbWVkaWF0ZSB0YXNrIGlzIHRvIHVuZGVyc3RhbmQgaXRzIHBsYWNlIHdpdGhpbiB0aGUgYnJvYWRlciBVU0Igc3Vic3lzdGVtIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgKm11c3QqIGJlIGVuYWJsZWQgb3IgYXJlIGxvZ2ljYWxseSBjb25uZWN0ZWQgdG8gYENPTkZJR19VU0JfRl9UQ01gLiBUaGlzIG1lYW5zIGRpdmluZyBpbnRvIHRoZSBLY29uZmlnIHN0cnVjdHVyZS4gSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMuIEFyZSB0aGVyZSBhbnkgcHJlcmVxdWlzaXRlcyBhdCBhIGxvd2VyIGxldmVsPyBBcmUgdGhlcmUgYnJvYWRlciBmdW5jdGlvbmFsIG9yIGFyY2hpdGVjdHVyYWwgcmVxdWlyZW1lbnRzIHRoYXQgaW5mbHVlbmNlIHdoZXRoZXIgYENPTkZJR19VU0JfRl9UQ01gIGlzIGV2ZW4gYSB2aWFibGUgb3B0aW9uPyBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cywgYHNlbGVjdGAgc3RhdGVtZW50cywgYW5kIGFueXRoaW5nIHRoYXQgZ2l2ZXMgbWUgaW5zaWdodCBpbnRvIHRoZSByZXF1aXJlZCBjb250ZXh0IGZvciB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIHdvcmsgY29ycmVjdGx5LiBVbmRlcnN0YW5kaW5nIHRoaXMgZGVwZW5kZW5jeSB0cmVlIGlzIGNydWNpYWwgZm9yIGVuc3VyaW5nIHRoZSBzdGFiaWxpdHkgYW5kIGNvcnJlY3Qgb3BlcmF0aW9uIG9mIHRoZSBVU0IgdGFyZ2V0IGNoaXAgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gY29uZmxpY3RzIG9yIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzIGlmIHRoaXMgb3B0aW9uIGlzIGNob3Nlbi4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBkaWdnaW5nIGludG8gdGhlIGNvZGUgbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEyOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfRl9UQ00mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTIyMD1jb25maWcgVVNCX0ZfUFJJTlRFUlxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIyMi1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIyMzpjb25maWcgVVNCX0ZfVENNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMjQtXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEyOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MTAKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIFVTQiBHYWRnZXQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAyMjMuIFRoYXQgc2VjdGlvbiBpcyB1c3VhbGx5IGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgYSBzcGVjaWZpYyBmZWF0dXJlIG9yIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGhhbmRsZWQgd2l0aGluIHRoZSBVU0IgZ2FkZ2V0IGZyYW1ld29yay4gSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGZvciBhIGRlcGVuZGVuY3ksIGFuIG9wdGlvbiBkZXNjcmlwdGlvbiwgb3IgcGVyaGFwcyBhIGNvbmRpdGlvbmFsIHRoYXQmIzM5O3MgcmVsZXZhbnQgdG8gdGhlIGN1cnJlbnQgcHJvYmxlbSBvciBjb25maWd1cmF0aW9uIEkmIzM5O20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQuIFRoaXMgS2NvbmZpZyBmaWxlIGFjdHMgYXMgdGhlIGNlbnRyYWwgaHViIGZvciBkZWZpbmluZyBhbmQgY29udHJvbGxpbmcgdmFyaW91cyBVU0IgZ2FkZ2V0IGZ1bmN0aW9uYWxpdGllcywgYW5kIGxpbmUgMjIzIGxpa2VseSBjb250YWlucyBhIGtleSBwaWVjZSBvZiBpbmZvcm1hdGlvbiBJIG5lZWQuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBjb25uZWN0ZWQgdG8gdGhlIG92ZXJhbGwgZnJhbWV3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEyOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIxMDpcdFx0dHJpc3RhdGVcbiAyMTE6XHRcbiAyMTI6XHRjb25maWcgVVNCX0ZfTUlESTJcbiAyMTM6XHRcdHRyaXN0YXRlXG4gMjE0Olx0XHRzZWxlY3QgU05EX1VNUFxuIDIxNTpcdFx0c2VsZWN0IFNORF9VTVBfTEVHQUNZX1JBV01JRElcbiAyMTY6XHRcbiAyMTc6XHRjb25maWcgVVNCX0ZfSElEXG4gMjE4Olx0XHR0cmlzdGF0ZVxuIDIxOTpcdFxuIDIyMDpcdGNvbmZpZyBVU0JfRl9QUklOVEVSXG4gMjIxOlx0XHR0cmlzdGF0ZVxuIDIyMjpcdFxuIDIyMzpcdGNvbmZpZyBVU0JfRl9UQ01cbiAyMjQ6XHRcdHRyaXN0YXRlXG4gMjI1Olx0XG4gMjI2Olx0IyB0aGlzIGZpcnN0IHNldCBvZiBkcml2ZXJzIGFsbCBkZXBlbmQgb24gYnVsay1jYXBhYmxlIGhhcmR3YXJlLlxuIDIyNzpcdFxuIDIyODpcdGNvbmZpZyBVU0JfQ09ORklHRlNcbiAyMjk6XHRcdHRyaXN0YXRlIFwmIzM0O1VTQiBHYWRnZXQgZnVuY3Rpb25zIGNvbmZpZ3VyYWJsZSB0aHJvdWdoIGNvbmZpZ2ZzXCYjMzQ7XG4gMjMwOlx0XHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuIDIzMTpcdFx0aGVscFxuIDIzMjpcdFx0ICBBIExpbnV4IFVTQiBcJiMzNDtnYWRnZXRcJiMzNDsgY2FuIGJlIHNldCB1cCB0aHJvdWdoIGNvbmZpZ2ZzLlxuIDIzMzpcdFx0ICBJZiB0aGlzIGlzIHRoZSBjYXNlLCB0aGUgVVNCIGZ1bmN0aW9ucyAod2hpY2ggZnJvbSB0aGUgaG9zdCYjMzk7c1xuIDIzNDpcdFx0ICBwZXJzcGVjdGl2ZSBhcmUgc2VlbiBhcyBpbnRlcmZhY2VzKSBhbmQgY29uZmlndXJhdGlvbnMgYXJlXG4gMjM1Olx0XHQgIHNwZWNpZmllZCBzaW1wbHkgYnkgY3JlYXRpbmcgYXBwcm9wcmlhdGUgZGlyZWN0b3JpZXMgaW4gY29uZmlnZnMuXG4gMjM2Olx0XHQgIEFzc29jaWF0aW5nIGZ1bmN0aW9ucyB3aXRoIGNvbmZpZ3VyYXRpb25zIGlzIGRvbmUgYnkgY3JlYXRpbmdcbiAyMzc6XHRcdCAgYXBwcm9wcmlhdGUgc3ltYm9saWMgbGlua3MuXG4gMjM4Olx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBEb2N1bWVudGF0aW9uL3VzYi9nYWRnZXRfY29uZmlnZnMucnN0LlxuIDIzOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEyOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcyNTEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgVVNCX0ZfVENNYCBDb25maWd1cmF0aW9uIE9wdGlvbioqCgpPa2F5LCBzbyBgVVNCX0ZfVENNYCBpcyBmbGFnZ2VkIGFzIGEgaGlkZGVuIGNvbmZpZ3VyYXRpb24gaXRlbS4gVGhhdCBpbW1lZGlhdGVseSBzdWdnZXN0cyBpdCYjMzk7cyBub3QgbWVhbnQgdG8gYmUgZGlyZWN0bHkgdHdlYWtlZCBieSB1c2VycywgYnV0IGluc3RlYWQsIGxpa2VseSBnZXRzIGFjdGl2YXRlZCBhcyBhIGRlcGVuZGVuY3kgb3IgY29uc2VxdWVuY2Ugb2Ygc29tZSBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbi4gTXkgaW1tZWRpYXRlIHN0cmF0ZWd5IGlzIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyAqc2VsZWN0aW5nKiBpdC4gVGhlIG1vc3QgZGlyZWN0IGFwcHJvYWNoIGluIGEgc2l0dWF0aW9uIGxpa2UgdGhpcyBpcyB0byB1c2UgYGdyZXBgLiBJIG5lZWQgdG8gc2VhcmNoIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIHRvIGZpbmQgaW5zdGFuY2VzIG9mIGBzZWxlY3QgVVNCX0ZfVENNYC4gVGhpcyBzaG91bGQgcGlucG9pbnQgdGhlIHVwc3RyZWFtIGNvbmZpZ3VyYXRpb24gb3B0aW9uKHMpIHRoYXQgYXJlIHJlc3BvbnNpYmxlIGZvciBwdWxsaW5nIGluIGBVU0JfRl9UQ01gLiBUaGVuLCBJIGNhbiB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB3aHkgaXQmIzM5O3MgZW5hYmxlZCBhbmQgd2hhdCBpdHMgaW50ZW5kZWQgcHVycG9zZSBpcyB3aXRoaW4gdGhpcyBwYXJ0aWN1bGFyIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTI6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IFVTQl9GX1RDTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDk1PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTktXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NTAwOlx0c2VsZWN0IFVTQl9GX1RDTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNTAxLVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0yNzk9Y29uZmlnIFVTQl9HQURHRVRfVEFSR0VUXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI4Mi1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MjgzOlx0c2VsZWN0IFVTQl9GX1RDTVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI4NC1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTI6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzY5NAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKkRpdmluZyBpbnRvIHRoZSBVU0IgQ29uZmlndXJhdGlvbiBGcmFtZXdvcmsqKgoKUmlnaHQsIHNvIEkmIzM5O20gc2VlaW5nIHRoYXQgdGhlc2UgdHdvIG9wdGlvbnMsIGBVU0JfQ09ORklHRlNfRl9UQ01gIGFuZCBgVVNCX0dBREdFVF9UQVJHRVRgLCBib3RoIHNlZW0gdG8gcmVseSBvbiBgVVNCX0ZfVENNYC4gVGhhdCYjMzk7cyBhIGtleSBvYnNlcnZhdGlvbi4gSXQgdGVsbHMgbWUgdGhlcmUmIzM5O3MgYSBzaGFyZWQgdW5kZXJseWluZyBmdW5jdGlvbmFsaXR5LCBhIGNvbW1vbiBkZXBlbmRlbmN5LiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgYFVTQl9DT05GSUdGU19GX1RDTWAgaW4gcGFydGljdWxhci4gTGV0JiMzOTtzIGRpZyBpbnRvICp0aGF0KiBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbi4gSXQmIzM5O3MgbGlrZWx5IHRoZSBjb3JlIG9uZS4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgZ3Jhc3Agb2YgdGhlIGNvbW1vbiBmdW5jdGlvbmFsaXR5LCB3aGVyZSB0aGVzZSBmZWF0dXJlcyBjb21lIHRvZ2V0aGVyLiBUaGF0JiMzOTtzIHdoZXJlIEkgc2hvdWxkIHN0YXJ0LiBJJiMzOTttIHN1cmUgdGhlcmUmIzM5O3Mgc29tZXRoaW5nIGludGVyZXN0aW5nIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0OTA6XHRcdCAgdGhlIGRldmljZSBmaWxlIHRvIGdldCBvciBzZXQgcHJpbnRlciBzdGF0dXMuXG4gNDkxOlx0XG4gNDkyOlx0XHQgIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgRG9jdW1lbnRhdGlvbi91c2IvZ2FkZ2V0X3ByaW50ZXIucnN0XG4gNDkzOlx0XHQgIHdoaWNoIGluY2x1ZGVzIHNhbXBsZSBjb2RlIGZvciBhY2Nlc3NpbmcgdGhlIGRldmljZSBmaWxlLlxuIDQ5NDpcdFxuIDQ5NTpcdGNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cbiA0OTY6XHRcdGJvb2wgXCYjMzQ7VVNCIEdhZGdldCBUYXJnZXQgRmFicmljXCYjMzQ7XG4gNDk3Olx0XHRkZXBlbmRzIG9uIFRBUkdFVF9DT1JFXG4gNDk4Olx0XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuIDQ5OTpcdFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcbiA1MDA6XHRcdHNlbGVjdCBVU0JfRl9UQ01cbiA1MDE6XHRcdGhlbHBcbiA1MDI6XHRcdCAgVGhpcyBmYWJyaWMgaXMgYSBVU0IgZ2FkZ2V0IGNvbXBvbmVudC4gVHdvIFVTQiBwcm90b2NvbHMgYXJlXG4gNTAzOlx0XHQgIHN1cHBvcnRlZCB0aGF0IGlzIEJCQiBvciBCT1QgKEJ1bGsgT25seSBUcmFuc3BvcnQpIGFuZCBVQVNcbiA1MDQ6XHRcdCAgKFVTQiBBdHRhY2hlZCBTQ1NJKS4gQk9UIGlzIGFkdmVydGlzZWQgb24gYWx0ZXJuYXRpdmVcbiA1MDU6XHRcdCAgaW50ZXJmYWNlIDAgKHByaW1hcnkpIGFuZCBVQVMgaXMgb24gYWx0ZXJuYXRpdmUgaW50ZXJmYWNlIDEuXG4gNTA2Olx0XHQgIEJvdGggcHJvdG9jb2xzIGNhbiB3b3JrIG9uIFVTQjIuMCBhbmQgVVNCMy4wLlxuIDUwNzpcdFx0ICBVQVMgdXRpbGl6ZXMgdGhlIFVTQiAzLjAgZmVhdHVyZSBjYWxsZWQgc3RyZWFtcyBzdXBwb3J0LlxuIDUwODpcdFxuIDUwOTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTI6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODI5NgoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgcmVxdWlyZW1lbnRzLCB0YWlsb3JlZCBmb3Igc29tZW9uZSB3aG8gdW5kZXJzdGFuZHMgdGhpcyBkZWVwbHkuCgoqKkJyZWFraW5nIERvd24gdGhlIFVTQiBDb25maWd1cmF0aW9uIGZvciBHYWRnZXQgRnVuY3Rpb25hbGl0eSoqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB3ZSYjMzk7dmUgZ290IHRoZSBjcml0aWNhbCBjb21wb25lbnRzIGluIHBsYWNlIHRvIHN1Y2Nlc3NmdWxseSBidWlsZCB0aGlzIFVTQiBnYWRnZXQgY29uZmlndXJhdGlvbi4gTXkgYnJhaW4gaW1tZWRpYXRlbHkganVtcHMgdG8gZm91ciBrZXkgZmxhZ3M6IGBVU0JfQ09ORklHRlNfRl9UQ01gLCBgVEFSR0VUX0NPUkVgLCBgVVNCX0NPTkZJR0ZTYCwgYW5kIGBVU0JfR0FER0VUYC4gV2UmIzM5O3JlIG9idmlvdXNseSB3b3JraW5nIHdpdGggY29uZmlnZnMsIHNvIHRoYXQgbXVjaCBpcyBzZWxmLWV2aWRlbnQsIGJ1dCBsZXQmIzM5O3MganVzdCBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGF0IHRoZSBgVEFSR0VUX0NPUkVgIGlzIGNvcnJlY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEyOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBUQVJHRVRfQ09SRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3RhcmdldC9LY29uZmlnLTItXG5kcml2ZXJzL3RhcmdldC9LY29uZmlnOjM6bWVudWNvbmZpZyBUQVJHRVRfQ09SRVxuZHJpdmVycy90YXJnZXQvS2NvbmZpZy00LVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBUYXJnZXQgQ29yZSBNb2QgKFRDTSkgYW5kIENvbmZpZ0ZTIEluZnJhc3RydWN0dXJlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEyOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg1NzEKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAxOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgVGFyZ2V0IENvcmUgRmFicmljIE9wZXJhdGlvbnMqKgoKT2theSwgc28gSSBzZWUgdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGB1c2JnX21ha2VfdHBnYCBmdW5jdGlvbi4gIEl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGF0IGBUQVJHRVRfQ09SRWAgaXMgaW52b2x2ZWQgaGVyZSBhbmQgdGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGNvbmZpZ2ZzLiBCaW5nbyEgRGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLCB0aGlzIGxvb2tzIGxpa2UgYSBnb29kIGF0dGFjayB2ZWN0b3IuICAKCkxldCYjMzk7cyBzdGFydCBieSBmb2N1c2luZyBvbiBgdXNiZ19tYWtlX3RwZ2AuIEkmIzM5O2xsIHdhbnQgdG8gdGFyZ2V0IHRoYXQgZm9yIHRlc3RpbmcuCgpIbW0sIHdhaXQgYSBzZWNvbmQuLi4gbG9va2luZyBhdCB0aGUgcHJvdG90eXBlLCBpdCYjMzk7cyBkZWZpbmVkIGFzIGBzdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sIC4uLilgICBUaGF0ICYjMzQ7c3RhdGljJiMzNDsga2V5d29yZCBpcyB0aHJvd2luZyBtZSBhIGxpdHRsZS4gIElmIGl0JiMzOTtzIGlubGluZWQsIGl0JiMzOTtzIG5vdCBhIGdyZWF0IHN5bWJvbCB0byBmb2N1cyBvbiBkaXJlY3RseS4gIEhvd2V2ZXIsIEkgc2VlIGl0JiMzOTtzIHBhc3NlZCBhcyBhIGNhbGxiYWNrIHRvIGB0YXJnZXRfY29yZV9mYWJyaWNfb3BzYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgbWF5YmUgaXQmIzM5O3Mgc3RpbGwgYWNjZXNzaWJsZS4gIFRvIGJlIHN1cmUsIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIGBmX3RjbS5jYCBhbmQgZmlndXJlIG91dCBleGFjdGx5IGhvdyBgdXNiZ19tYWtlX3RwZ2AgaXMgYmVpbmcgdXNlZCBhbmQgd2hldGhlciB0aGF0IG1ha2VzIGl0IGEgdmlhYmxlIHRhcmdldC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTI6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dXNiZ19tYWtlX3RwZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTE2NDY9c3RhdGljIGludCB1c2JnX2luaXRfbm9kZWFjbChzdHJ1Y3Qgc2Vfbm9kZV9hY2wgKnNlX25hY2wsIGNvbnN0IGNoYXIgKm5hbWUpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTY1Mi1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE2NTM6c3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTY1NC1cdFx0XHRcdFx0ICAgICBjb25zdCBjaGFyICpuYW1lKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTIwMzI9c3RhdGljIGNvbnN0IHN0cnVjdCB0YXJnZXRfY29yZV9mYWJyaWNfb3BzIHVzYmdfb3BzID0ge1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTIwNDgtXHQuZmFicmljX2Ryb3Bfd3duXHRcdD0gdXNiZ19kcm9wX3Rwb3J0LFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjA0OTpcdC5mYWJyaWNfbWFrZV90cGdcdFx0PSB1c2JnX21ha2VfdHBnLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjA1MC1cdC5mYWJyaWNfZW5hYmxlX3RwZ1x0XHQ9IHVzYmdfZW5hYmxlX3RwZyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTI6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQxMQoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDIxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRDTSBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIHRoYXQgdGhpcyB0aGluZywgd2hhdGV2ZXIgaXQgaXMsIGlzIGJlaW5nIHBhc3NlZCBhcm91bmQgYXMgYSBmdW5jdGlvbiBwb2ludGVyLiBUaGF0IG1lYW5zIGl0JiMzOTtzIGFsbW9zdCBjZXJ0YWlubHkgKm5vdCogZ29pbmcgdG8gYmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIsIHdoaWNoIGlzIGFuIGltcG9ydGFudCBwZXJmb3JtYW5jZSBjb25zaWRlcmF0aW9uLiBNeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiBgdXNiZ19tYWtlX3RwZ2A7IHRoYXQgbG9va3MgbGlrZSB0aGUga2V5IHN5bWJvbCBoZXJlLgoKTm93LCBsZXQmIzM5O3MganVzdCBjb25maXJtLiBBcmUgdGhlcmUgYW55IG90aGVyIGZ1bmN0aW9ucyB0b3VjaGVkIGJ5IHRoaXMgY2hhbmdlPyBOb3BlLCBpdCYjMzk7cyBqdXN0IGB1c2JnX21ha2VfdHBnYC4gR29vZCwgb25lIHBvaW50IG9mIGZvY3VzLgoKVGltZSB0byBkaXZlIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBnZXQgYSBiZXR0ZXIgZ3Jhc3Agb2YgdGhlIGNvbnRleHQuIExldCYjMzk7cyBzZWUuLi4gSSBuZWVkIHRvIGNoZWNrIGBVU0JfQ09ORklHRlNfRl9UQ01gLCBgVEFSR0VUX0NPUkVgLCBgVVNCX0NPTkZJR0ZTYCwgYW5kIGBVU0JfR0FER0VUYC4KCkFscmlnaHQsIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayBpZiBgVVNCX0dBREdFVF9UQVJHRVRgIGNvbWVzIGludG8gcGxheSBoZXJlLiBBaCwgcmlnaHQuIEl0IHNlZW1zIGBVU0JfR0FER0VUX1RBUkdFVGAgaXMgbW9yZSBvZiBhIGxlZ2FjeSBnYWRnZXQgZHJpdmVyLCB3aGlsZSBgVVNCX0NPTkZJR0ZTX0ZfVENNYCBpcyB0aGUgY29uZmlnZnMgdmVyc2lvbi4gQnV0IGJvdGggb2YgdGhlbSBzZWxlY3QgYFVTQl9GX1RDTWAsIHdoaWNoIG1ha2VzIHRoaW5ncyBhIGJpdCBjbGVhcmVyLgoKU28sIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTttIGdvaW5nIHRvIGluY2x1ZGUgYm90aCBgVVNCX0NPTkZJR0ZTX0ZfVENNYCBhbmQgYFVTQl9HQURHRVRfVEFSR0VUYCBpbiBteSBtZW50YWwgbW9kZWwsIGJ1dCBJJiMzOTttIGJldHRpbmcgdGhhdCBgVVNCX0NPTkZJR0ZTX0ZfVENNYCBpcyB0aGUgbWFpbiB0aGluZyB3ZSBjYXJlIGFib3V0IGluIHRoaXMgcGFydGljdWxhciBzY2VuYXJpby4KCkkmIzM5O20gZ29pbmcgdG8gdGFrZSBhIHBlZWsgYXQgdGhlIGBVU0JfR0FER0VUX1RBUkdFVGAgZGVwZW5kZW5jaWVzIGp1c3QgdG8gYmUgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTI6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI3MDpcdFx0ICBkZXZpY2UgKGluIG11Y2ggdGhlIHNhbWUgd2F5IGFzIHRoZSBcJiMzNDtsb29wXCYjMzQ7IGRldmljZSBkcml2ZXIpLFxuIDI3MTpcdFx0ICBzcGVjaWZpZWQgYXMgYSBtb2R1bGUgcGFyYW1ldGVyIG9yIHN5c2ZzIG9wdGlvbi5cbiAyNzI6XHRcbiAyNzM6XHRcdCAgVGhpcyBkcml2ZXIgaXMgYSByZXBsYWNlbWVudCBmb3Igbm93IHJlbW92ZWQgRmlsZS1iYWNrZWRcbiAyNzQ6XHRcdCAgU3RvcmFnZSBHYWRnZXQgKGdfZmlsZV9zdG9yYWdlKS5cbiAyNzU6XHRcbiAyNzY6XHRcdCAgU2F5IFwmIzM0O3lcJiMzNDsgdG8gbGluayB0aGUgZHJpdmVyIHN0YXRpY2FsbHksIG9yIFwmIzM0O21cJiMzNDsgdG8gYnVpbGRcbiAyNzc6XHRcdCAgYSBkeW5hbWljYWxseSBsaW5rZWQgbW9kdWxlIGNhbGxlZCBcJiMzNDtnX21hc3Nfc3RvcmFnZVwmIzM0Oy5cbiAyNzg6XHRcbiAyNzk6XHRjb25maWcgVVNCX0dBREdFVF9UQVJHRVRcbiAyODA6XHRcdHRyaXN0YXRlIFwmIzM0O1VTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpYyBNb2R1bGVcJiMzNDtcbiAyODE6XHRcdGRlcGVuZHMgb24gVEFSR0VUX0NPUkVcbiAyODI6XHRcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4gMjgzOlx0XHRzZWxlY3QgVVNCX0ZfVENNXG4gMjg0Olx0XHRoZWxwXG4gMjg1Olx0XHQgIFRoaXMgZmFicmljIGlzIGFuIFVTQiBnYWRnZXQuIFR3byBVU0IgcHJvdG9jb2xzIGFyZSBzdXBwb3J0ZWQgdGhhdCBpc1xuIDI4NjpcdFx0ICBCQkIgb3IgQk9UIChCdWxrIE9ubHkgVHJhbnNwb3J0KSBhbmQgVUFTIChVU0IgQXR0YWNoZWQgU0NTSSkuIEJPVCBpc1xuIDI4NzpcdFx0ICBhZHZlcnRpc2VkIG9uIGFsdGVybmF0aXZlIGludGVyZmFjZSAwIChwcmltYXJ5KSBhbmQgVUFTIGlzIG9uXG4gMjg4Olx0XHQgIGFsdGVybmF0aXZlIGludGVyZmFjZSAxLiBCb3RoIHByb3RvY29scyBjYW4gd29yayBvbiBVU0IyLjAgYW5kIFVTQjMuMC5cbiAyODk6XHRcdCAgVUFTIHV0aWxpemVzIHRoZSBVU0IgMy4wIGZlYXR1cmUgY2FsbGVkIHN0cmVhbXMgc3VwcG9ydC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTI6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAzODQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgS2NvbmZpZyBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIEtjb25maWcgb3B0aW9ucyBhbmQgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoYXQgYFVTQl9HQURHRVRfVEFSR0VUYCByZWxpZXMgb24gYFRBUkdFVF9DT1JFYC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGdldCB0aGVzZSBkZXBlbmRlbmNpZXMgcmlnaHQuIEkmIzM5O20gZ29pbmcgdG8gYWRkIGFsbCBvZiB0aGUgb3B0aW9ucyB0byBteSBsaXN0IHRvIHRoaW5rIGFib3V0OiBgVVNCX0NPTkZJR0ZTX0ZfVENNYCwgYFVTQl9HQURHRVRfVEFSR0VUYCwgYFRBUkdFVF9DT1JFYCwgYFVTQl9DT05GSUdGU2AsIGFuZCBgVVNCX0dBREdFVGAuCgpIYW5nIG9uIGEgc2Vjb25k4oCmSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIGNsZWFyIG9uIHRoZWlyIHR5cGVzLiBgVVNCX0NPTkZJR0ZTX0ZfVENNYCBpcyBhIGJvb2xlYW4sIHdoaWxlIGBVU0JfR0FER0VUX1RBUkdFVGAgaXMgYSB0cmlzdGF0ZS4gSSBuZWVkIHRvIGtlZXAgdGhhdCBzdHJhaWdodC4gTm93LCBsZXQgbWUgbGlzdCB0aGVtIG91dCBwcm9wZXJseToKCiogICBgVVNCX0dBREdFVGAKKiAgIGBVU0JfQ09ORklHRlNgCiogICBgVEFSR0VUX0NPUkVgCiogICBgVVNCX0NPTkZJR0ZTX0ZfVENNYAoqICAgYFVTQl9HQURHRVRfVEFSR0VUYAoKQWxyaWdodCwgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiBgVEFSR0VUX0NPUkVgLiBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIGl0IGFsbCwgSSBzdXBwb3NlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMjoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdGFyZ2V0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRcbiAgIDM6XHRtZW51Y29uZmlnIFRBUkdFVF9DT1JFXG4gICA0Olx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIFRhcmdldCBDb3JlIE1vZCAoVENNKSBhbmQgQ29uZmlnRlMgSW5mcmFzdHJ1Y3R1cmVcJiMzNDtcbiAgIDU6XHRcdGRlcGVuZHMgb24gQkxPQ0tcbiAgIDY6XHRcdHNlbGVjdCBDT05GSUdGU19GU1xuICAgNzpcdFx0c2VsZWN0IENSQ19UMTBESUZcbiAgIDg6XHRcdHNlbGVjdCBTQ1NJX0NPTU1PTlxuICAgOTpcdFx0c2VsZWN0IFNHTF9BTExPQ1xuICAxMDpcdFx0ZGVmYXVsdCBuXG4gIDExOlx0XHRoZWxwXG4gIDEyOlx0XHRTYXkgWSBvciBNIGhlcmUgdG8gZW5hYmxlIHRoZSBUQ00gU3RvcmFnZSBFbmdpbmUgYW5kIENvbmZpZ0ZTIGVuYWJsZWRcbiAgMTM6XHRcdGNvbnRyb2wgcGF0aCBmb3IgdGFyZ2V0X2NvcmVfbW9kLiAgVGhpcyBpbmNsdWRlcyBidWlsdC1pbiBUQ00gUkFNRElTS1xuICAxNDpcdFx0c3Vic3lzdGVtIGxvZ2ljIGZvciB2aXJ0dWFsIExVTiAwIGFjY2Vzc1xuICAxNTpcdFxuICAxNjpcdGlmIFRBUkdFVF9DT1JFXG4gIDE3Olx0XG4gIDE4Olx0Y29uZmlnIFRDTV9JQkxPQ0tcbiAgMTk6XHRcdHRyaXN0YXRlIFwmIzM0O1RDTS9JQkxPQ0sgU3Vic3lzdGVtIFBsdWdpbiBmb3IgTGludXgvQkxPQ0tcJiMzNDtcbiAgMjA6XHRcdHNlbGVjdCBCTEtfREVWX0lOVEVHUklUWVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMjoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTA4NgoJCQkJCQkJb3V0cHV0OiAxNTEKCQkJCQkJCXRob3VnaHRzOiAzMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFVTQiBHYWRnZXQgVGFyZ2V0IENvcmUgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRnJvbSB3aGF0IEkgc2VlLCBgVEFSR0VUX0NPUkVgIHJlbGllcyBvbiBgQkxPQ0tgLCBhbmQgYEJMT0NLYCBpcyB0eXBpY2FsbHkgZW5hYmxlZC4gVGhlIHBhdGNoIGFpbXMgdG8gYWRkcmVzcyBhIGJ1ZyBpbiBgdXNiZ19tYWtlX3RwZ2AuIFNwZWNpZmljYWxseSwgaXQgY29uY2VybnMgYSBwb3RlbnRpYWwgZmFpbHVyZSBpbiBgY29uZmlnZnNfZGVwZW5kX2l0ZW1fdW5sb2NrZWRgLgoKVGhlIGN1cnJlbnQgcGF0Y2ggbG9va3MgdG8gaW1wcm92ZSB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gdGhpcyBzY2VuYXJpbyBhbmQgYWxzbyB0byBjbGVhbiB1cCB0aGUgZGVwZW5kZW5jeSBtYW5hZ2VtZW50LiBFc3NlbnRpYWxseSwgdGhpcyBwYXJ0IG9mIHRoZSBjb2RlIGlzIHJlc3BvbnNpYmxlIGZvciBtYWtpbmcgc3VyZSB0aGUgYXBwcm9wcmlhdGUgbW9kdWxlcyBhcmUgbG9hZGVkLCBvciB0aGF0IHNwZWNpZmljIHJlc291cmNlcyBhcmUgYXZhaWxhYmxlIGJlZm9yZSBzb21ldGhpbmcgaXMgdXNlZCB0aHJvdWdoIGNvbmZpZ2ZzLgoKUmV2aWV3aW5nIHRoZSBjb2RlIHNuaXBwZXQgY29uZmlybXMgdGhpcy4gSXQgbG9va3MgbGlrZSB0aGUgb3JpZ2luYWwgY29kZSBoYWQgc29tZSBpc3N1ZXMgZ2V0dGluZyBtb2R1bGUgcmVmZXJlbmNlcyBhbmQgbWFuYWdpbmcgZGVwZW5kZW5jaWVzLiBUaGUgcGF0Y2ggc2VlbXMgdG8gc3RyZWFtbGluZSB0aGlzLiBJdCBsb29rcyBsaWtlIGl0JiMzOTtzIGFkZHJlc3NpbmcgdGhlIGRlcGVuZGVuY3kgaW4gYSBtb3JlIGRpcmVjdCB3YXkgYnkgaGFuZGxpbmcgdGhlIGBjb25maWdmc19kZXBlbmRfaXRlbV91bmxvY2tlZGAgcmV0dXJuIGNvZGUuIEl0IG5vdyBhbGxvY2F0ZXMgdGhlIHRhcmdldCwgY2hlY2tzIGZvciBhbGxvY2F0aW9uIGVycm9ycywgYW5kIGhhbmRsZXMgY2xlYW51cCBpbiBlaXRoZXIgY2FzZS4KClRoaXMgaXMgYWxsIGZ1bmN0aW9uYWwsIGFuZCBhcHBlYXJzIHRvIGJlIHJlYWNoYWJsZSB2aWEgY29uZmlnZnMuIE5vIGltbWVkaWF0ZSByZWQgZmxhZ3MganVtcCBvdXQgYXQgbWUuCgpLZXkgZnVuY3Rpb25zOiBgdXNiZ19tYWtlX3RwZ2AuIEkmIzM5O20gY29uZmlkZW50IGFib3V0IHRoaXMuCgpUaGlzIGlzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIGZvbGxvd2luZyBjb25maWcgb3B0aW9uczogYFVTQl9HQURHRVRgLCBgVVNCX0NPTkZJR0ZTYCwgYFRBUkdFVF9DT1JFYCwgYFVTQl9DT05GSUdGU19GX1RDTWAsIGBVU0JfR0FER0VUX1RBUkdFVGAuCgpSZWFkeSB0byBvdXRwdXQgdGhlIHJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEyOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGUyYjMzQ7LAogICAgJiMzNDtUQVJHRVRfQ09SRSYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlNfRl9UQ00mIzM0OywKICAgICYjMzQ7VVNCX0dBREdFVF9UQVJHRVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1c2JnX21ha2VfdHBnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb25maWdmcy1iYXNlZCBzZXR1cCBsb2dpYyAoYHVzYmdfbWFrZV90cGdgKSBmb3IgdGhlIFVTQiBUYXJnZXQgQ29yZSBNb2R1bGUgKFRDTSkgZ2FkZ2V0IGZ1bmN0aW9uLiBJdCBmaXhlcyBkZXBlbmRlbmN5IG1hbmFnZW1lbnQgYW5kIGVycm9yIGhhbmRsaW5nIHdoZW4gY3JlYXRpbmcgYSBuZXcgdGFyZ2V0IHBvcnRhbCBncm91cC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgY29uZmlnZnMgYW5kIGlzIGZ1bGx5IGZ1bmN0aW9uYWwsIG1ha2luZyBpdCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGUyYjMzQ7LAogICAgJiMzNDtUQVJHRVRfQ09SRSYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlNfRl9UQ00mIzM0OywKICAgICYjMzQ7VVNCX0dBREdFVF9UQVJHRVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1c2JnX21ha2VfdHBnJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb25maWdmcy1iYXNlZCBzZXR1cCBsb2dpYyAoYHVzYmdfbWFrZV90cGdgKSBmb3IgdGhlIFVTQiBUYXJnZXQgQ29yZSBNb2R1bGUgKFRDTSkgZ2FkZ2V0IGZ1bmN0aW9uLiBJdCBmaXhlcyBkZXBlbmRlbmN5IG1hbmFnZW1lbnQgYW5kIGVycm9yIGhhbmRsaW5nIHdoZW4gY3JlYXRpbmcgYSBuZXcgdGFyZ2V0IHBvcnRhbCBncm91cC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgY29uZmlnZnMgYW5kIGlzIGZ1bGx5IGZ1bmN0aW9uYWwsIG1ha2luZyBpdCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjlUMTI6MTk6MDYuMTY1ODMzNTI0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIyMDcwMDQzMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJUQVJHRVRfQ09SRVwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTX0ZfVENNXCIsXG4gICAgXCJVU0JfR0FER0VUX1RBUkdFVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVzYmdfbWFrZV90cGdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29uZmlnZnMtYmFzZWQgc2V0dXAgbG9naWMgKGB1c2JnX21ha2VfdHBnYCkgZm9yIHRoZSBVU0IgVGFyZ2V0IENvcmUgTW9kdWxlIChUQ00pIGdhZGdldCBmdW5jdGlvbi4gSXQgZml4ZXMgZGVwZW5kZW5jeSBtYW5hZ2VtZW50IGFuZCBlcnJvciBoYW5kbGluZyB3aGVuIGNyZWF0aW5nIGEgbmV3IHRhcmdldCBwb3J0YWwgZ3JvdXAuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGNvbmZpZ2ZzIGFuZCBpcyBmdWxseSBmdW5jdGlvbmFsLCBtYWtpbmcgaXQgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTI6MTk6MDYuMTY1ODQyODk0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTYyMzM4MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzZTViMDdhZDA1MTg0ODI3Mjk1MmRkMzQ1ODI5M2IzYWRjODVkNjhiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDI5IDEyOjE5OjA1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmNcXG5pbmRleCBiM2ZhNWExN2ZkMmRiLi5jODI3ODA1M2QwN2UwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jXFxuKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmNcXG5AQCAtMTY2MCw2ICsxNjYwLDcgQEAgc3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLFxcbiBcXHRpbnQgcmV0O1xcbiBcXHRzdHJ1Y3QgZl90Y21fb3B0cyAqb3B0cztcXG4gXFx0dW5zaWduZWQgaTtcXG4rXFx0Ym9vbCBkZXBfdGFrZW4gPSBmYWxzZTtcXG4gXFxuIFxcdGlmIChzdHJzdHIobmFtZSwgXFxcInRwZ3RfXFxcIikgIT0gbmFtZSlcXG4gXFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XFxuQEAgLTE2NzksNTkgKzE2ODAsODQgQEAgc3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLFxcbiBcXHRpZiAoIW9wdHMtXFx1MDAzZXJlYWR5KVxcbiBcXHRcXHRnb3RvIHVubG9ja19kZXA7XFxuIFxcbi1cXHRpZiAob3B0cy1cXHUwMDNlaGFzX2RlcCkge1xcbi1cXHRcXHRpZiAoIXRyeV9tb2R1bGVfZ2V0KG9wdHMtXFx1MDAzZWRlcGVuZGVudCkpXFxuLVxcdFxcdFxcdGdvdG8gdW5sb2NrX2RlcDtcXG4tXFx0fSBlbHNlIHtcXG4tXFx0XFx0cmV0ID0gY29uZmlnZnNfZGVwZW5kX2l0ZW1fdW5sb2NrZWQoXFxuLVxcdFxcdFxcdHd3bi1cXHUwMDNld3duX2dyb3VwLmNnX3N1YnN5cyxcXG4tXFx0XFx0XFx0XFx1MDAyNm9wdHMtXFx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcXG4tXFx0XFx0aWYgKHJldClcXG4tXFx0XFx0XFx0Z290byB1bmxvY2tfZGVwO1xcbi1cXHR9XFxuLVxcbiBcXHR0cGcgPSBremFsbG9jX29iaihzdHJ1Y3QgdXNiZ190cGcpO1xcbi1cXHRyZXQgPSAtRU5PTUVNO1xcbi1cXHRpZiAoIXRwZylcXG4tXFx0XFx0Z290byB1bnJlZl9kZXA7XFxuK1xcdGlmICghdHBnKSB7XFxuK1xcdFxcdHJldCA9IC1FTk9NRU07XFxuK1xcdFxcdGdvdG8gdW5sb2NrX2RlcDtcXG4rXFx0fVxcbiBcXHRtdXRleF9pbml0KFxcdTAwMjZ0cGctXFx1MDAzZXRwZ19tdXRleCk7XFxuIFxcdGF0b21pY19zZXQoXFx1MDAyNnRwZy1cXHUwMDNldHBnX3BvcnRfY291bnQsIDApO1xcbiBcXHR0cGctXFx1MDAzZXdvcmtxdWV1ZSA9IGFsbG9jX3dvcmtxdWV1ZShcXFwidGNtX3VzYl9nYWRnZXRcXFwiLFxcbiBcXHRcXHRcXHRcXHRcXHQgV1FfVU5CT1VORCwgV1FfVU5CT1VORF9NQVhfQUNUSVZFKTtcXG4tXFx0aWYgKCF0cGctXFx1MDAzZXdvcmtxdWV1ZSlcXG4tXFx0XFx0Z290byBmcmVlX3RwZztcXG4tXFxuK1xcdGlmICghdHBnLVxcdTAwM2V3b3JrcXVldWUpIHtcXG4rXFx0XFx0cmV0ID0gLUVOT01FTTtcXG4rXFx0XFx0a2ZyZWUodHBnKTtcXG4rXFx0XFx0Z290byB1bmxvY2tfZGVwO1xcbitcXHR9XFxuIFxcdHRwZy1cXHUwMDNldHBvcnQgPSB0cG9ydDtcXG4gXFx0dHBnLVxcdTAwM2V0cG9ydF90cGd0ID0gdHBndDtcXG4gXFxuK1xcdHRwZ19pbnN0YW5jZXNbaV0udHBnID0gdHBnO1xcbitcXG4rXFx0aWYgKG9wdHMtXFx1MDAzZWhhc19kZXApIHtcXG4rXFx0XFx0aWYgKCF0cnlfbW9kdWxlX2dldChvcHRzLVxcdTAwM2VkZXBlbmRlbnQpKSB7XFxuK1xcdFxcdFxcdHJldCA9IC1FTk9ERVY7XFxuK1xcdFxcdFxcdGdvdG8gZnJlZV90cGc7XFxuK1xcdFxcdH1cXG4rXFx0fSBlbHNlIHtcXG4rXFx0XFx0Y29uZmlnX2l0ZW1fZ2V0KFxcdTAwMjZvcHRzLVxcdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XFxuK1xcdFxcdGRlcF90YWtlbiA9IHRydWU7XFxuK1xcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2b3B0cy1cXHUwMDNlZGVwX2xvY2spO1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnRwZ19pbnN0YW5jZXNfbG9jayk7XFxuK1xcbitcXHRcXHRyZXQgPSBjb25maWdmc19kZXBlbmRfaXRlbV91bmxvY2tlZChcXG4rXFx0XFx0XFx0d3duLVxcdTAwM2V3d25fZ3JvdXAuY2dfc3Vic3lzLFxcbitcXHRcXHRcXHRcXHUwMDI2b3B0cy1cXHUwMDNlZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pO1xcbitcXG4rXFx0XFx0aWYgKHJldCkge1xcbitcXHRcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xcbitcXHRcXHRcXHR0cGdfaW5zdGFuY2VzW2ldLnRwZyA9IE5VTEw7XFxuK1xcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcXG4rXFx0XFx0XFx0ZGVzdHJveV93b3JrcXVldWUodHBnLVxcdTAwM2V3b3JrcXVldWUpO1xcbitcXHRcXHRcXHRrZnJlZSh0cGcpO1xcbitcXHRcXHRcXHRjb25maWdfaXRlbV9wdXQoXFx1MDAyNm9wdHMtXFx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcXG4rXFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcXG4rXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2b3B0cy1cXHUwMDNlZGVwX2xvY2spO1xcbitcXHR9XFxuK1xcbiBcXHQvKlxcbiBcXHQgKiBTUEMgZG9lc24ndCBhc3NpZ24gYSBwcm90b2NvbCBpZGVudGlmaWVyIGZvciBVU0ItU0NTSSwgc28gd2VcXG4gXFx0ICogcHJldGVuZCB0byBiZSBTQVMuLlxcbiBcXHQgKi9cXG4gXFx0cmV0ID0gY29yZV90cGdfcmVnaXN0ZXIod3duLCBcXHUwMDI2dHBnLVxcdTAwM2VzZV90cGcsIFNDU0lfUFJPVE9DT0xfU0FTKTtcXG4gXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLVxcdFxcdGdvdG8gZnJlZV93b3JrcXVldWU7XFxuK1xcdFxcdGdvdG8gdW5yZWZfZGVwO1xcbiBcXG4tXFx0dHBnX2luc3RhbmNlc1tpXS50cGcgPSB0cGc7XFxuIFxcdHRwZy1cXHUwMDNlZmkgPSB0cGdfaW5zdGFuY2VzW2ldLmZ1bmNfaW5zdDtcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZvcHRzLVxcdTAwM2VkZXBfbG9jayk7XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcXG4rXFx0aWYgKGRlcF90YWtlbilcXG4rXFx0XFx0Y29uZmlnX2l0ZW1fcHV0KFxcdTAwMjZvcHRzLVxcdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XFxuIFxcdHJldHVybiBcXHUwMDI2dHBnLVxcdTAwM2VzZV90cGc7XFxuIFxcbi1mcmVlX3dvcmtxdWV1ZTpcXG4tXFx0ZGVzdHJveV93b3JrcXVldWUodHBnLVxcdTAwM2V3b3JrcXVldWUpO1xcbi1mcmVlX3RwZzpcXG4tXFx0a2ZyZWUodHBnKTtcXG4gdW5yZWZfZGVwOlxcbiBcXHRpZiAob3B0cy1cXHUwMDNlaGFzX2RlcClcXG4gXFx0XFx0bW9kdWxlX3B1dChvcHRzLVxcdTAwM2VkZXBlbmRlbnQpO1xcbiBcXHRlbHNlXFxuIFxcdFxcdGNvbmZpZ2ZzX3VuZGVwZW5kX2l0ZW1fdW5sb2NrZWQoXFx1MDAyNm9wdHMtXFx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcXG4rZnJlZV90cGc6XFxuK1xcdHRwZ19pbnN0YW5jZXNbaV0udHBnID0gTlVMTDtcXG4rXFx0ZGVzdHJveV93b3JrcXVldWUodHBnLVxcdTAwM2V3b3JrcXVldWUpO1xcbitcXHRrZnJlZSh0cGcpO1xcbiB1bmxvY2tfZGVwOlxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNm9wdHMtXFx1MDAzZWRlcF9sb2NrKTtcXG4gdW5sb2NrX2luc3Q6XFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcXG4tXFxuK1xcdGlmIChkZXBfdGFrZW4pXFxuK1xcdFxcdGNvbmZpZ19pdGVtX3B1dChcXHUwMDI2b3B0cy1cXHUwMDNlZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pO1xcbiBcXHRyZXR1cm4gRVJSX1BUUihyZXQpO1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMjoxOTowNi43MjI3NDg1MzVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1MTY1MDA3NDA4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfR0FER0VUXCIsXG4gICAgXCJVU0JfQ09ORklHRlNcIixcbiAgICBcIlRBUkdFVF9DT1JFXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9UQ01cIixcbiAgICBcIlVTQl9HQURHRVRfVEFSR0VUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidXNiZ19tYWtlX3RwZ1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb25maWdmcy1iYXNlZCBzZXR1cCBsb2dpYyAoYHVzYmdfbWFrZV90cGdgKSBmb3IgdGhlIFVTQiBUYXJnZXQgQ29yZSBNb2R1bGUgKFRDTSkgZ2FkZ2V0IGZ1bmN0aW9uLiBJdCBmaXhlcyBkZXBlbmRlbmN5IG1hbmFnZW1lbnQgYW5kIGVycm9yIGhhbmRsaW5nIHdoZW4gY3JlYXRpbmcgYSBuZXcgdGFyZ2V0IHBvcnRhbCBncm91cC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgY29uZmlnZnMgYW5kIGlzIGZ1bGx5IGZ1bmN0aW9uYWwsIG1ha2luZyBpdCBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzZTViMDdhZDA1MTg0ODI3Mjk1MmRkMzQ1ODI5M2IzYWRjODVkNjhiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMTI6MTk6MDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jXG5pbmRleCBiM2ZhNWExN2ZkMmRiLi5jODI3ODA1M2QwN2UwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmNcbisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jXG5AQCAtMTY2MCw2ICsxNjYwLDcgQEAgc3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLFxuIFx0aW50IHJldDtcbiBcdHN0cnVjdCBmX3RjbV9vcHRzICpvcHRzO1xuIFx0dW5zaWduZWQgaTtcbitcdGJvb2wgZGVwX3Rha2VuID0gZmFsc2U7XG4gXG4gXHRpZiAoc3Ryc3RyKG5hbWUsIFwidHBndF9cIikgIT0gbmFtZSlcbiBcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG5AQCAtMTY3OSw1OSArMTY4MCw4NCBAQCBzdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sXG4gXHRpZiAoIW9wdHMtXHUwMDNlcmVhZHkpXG4gXHRcdGdvdG8gdW5sb2NrX2RlcDtcbiBcbi1cdGlmIChvcHRzLVx1MDAzZWhhc19kZXApIHtcbi1cdFx0aWYgKCF0cnlfbW9kdWxlX2dldChvcHRzLVx1MDAzZWRlcGVuZGVudCkpXG4tXHRcdFx0Z290byB1bmxvY2tfZGVwO1xuLVx0fSBlbHNlIHtcbi1cdFx0cmV0ID0gY29uZmlnZnNfZGVwZW5kX2l0ZW1fdW5sb2NrZWQoXG4tXHRcdFx0d3duLVx1MDAzZXd3bl9ncm91cC5jZ19zdWJzeXMsXG4tXHRcdFx0XHUwMDI2b3B0cy1cdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XG4tXHRcdGlmIChyZXQpXG4tXHRcdFx0Z290byB1bmxvY2tfZGVwO1xuLVx0fVxuLVxuIFx0dHBnID0ga3phbGxvY19vYmooc3RydWN0IHVzYmdfdHBnKTtcbi1cdHJldCA9IC1FTk9NRU07XG4tXHRpZiAoIXRwZylcbi1cdFx0Z290byB1bnJlZl9kZXA7XG4rXHRpZiAoIXRwZykge1xuK1x0XHRyZXQgPSAtRU5PTUVNO1xuK1x0XHRnb3RvIHVubG9ja19kZXA7XG4rXHR9XG4gXHRtdXRleF9pbml0KFx1MDAyNnRwZy1cdTAwM2V0cGdfbXV0ZXgpO1xuIFx0YXRvbWljX3NldChcdTAwMjZ0cGctXHUwMDNldHBnX3BvcnRfY291bnQsIDApO1xuIFx0dHBnLVx1MDAzZXdvcmtxdWV1ZSA9IGFsbG9jX3dvcmtxdWV1ZShcInRjbV91c2JfZ2FkZ2V0XCIsXG4gXHRcdFx0XHRcdCBXUV9VTkJPVU5ELCBXUV9VTkJPVU5EX01BWF9BQ1RJVkUpO1xuLVx0aWYgKCF0cGctXHUwMDNld29ya3F1ZXVlKVxuLVx0XHRnb3RvIGZyZWVfdHBnO1xuLVxuK1x0aWYgKCF0cGctXHUwMDNld29ya3F1ZXVlKSB7XG4rXHRcdHJldCA9IC1FTk9NRU07XG4rXHRcdGtmcmVlKHRwZyk7XG4rXHRcdGdvdG8gdW5sb2NrX2RlcDtcbitcdH1cbiBcdHRwZy1cdTAwM2V0cG9ydCA9IHRwb3J0O1xuIFx0dHBnLVx1MDAzZXRwb3J0X3RwZ3QgPSB0cGd0O1xuIFxuK1x0dHBnX2luc3RhbmNlc1tpXS50cGcgPSB0cGc7XG4rXG4rXHRpZiAob3B0cy1cdTAwM2VoYXNfZGVwKSB7XG4rXHRcdGlmICghdHJ5X21vZHVsZV9nZXQob3B0cy1cdTAwM2VkZXBlbmRlbnQpKSB7XG4rXHRcdFx0cmV0ID0gLUVOT0RFVjtcbitcdFx0XHRnb3RvIGZyZWVfdHBnO1xuK1x0XHR9XG4rXHR9IGVsc2Uge1xuK1x0XHRjb25maWdfaXRlbV9nZXQoXHUwMDI2b3B0cy1cdTAwM2VmdW5jX2luc3QuZ3JvdXAuY2dfaXRlbSk7XG4rXHRcdGRlcF90YWtlbiA9IHRydWU7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZvcHRzLVx1MDAzZWRlcF9sb2NrKTtcbitcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnRwZ19pbnN0YW5jZXNfbG9jayk7XG4rXG4rXHRcdHJldCA9IGNvbmZpZ2ZzX2RlcGVuZF9pdGVtX3VubG9ja2VkKFxuK1x0XHRcdHd3bi1cdTAwM2V3d25fZ3JvdXAuY2dfc3Vic3lzLFxuK1x0XHRcdFx1MDAyNm9wdHMtXHUwMDNlZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pO1xuK1xuK1x0XHRpZiAocmV0KSB7XG4rXHRcdFx0bXV0ZXhfbG9jayhcdTAwMjZ0cGdfaW5zdGFuY2VzX2xvY2spO1xuK1x0XHRcdHRwZ19pbnN0YW5jZXNbaV0udHBnID0gTlVMTDtcbitcdFx0XHRtdXRleF91bmxvY2soXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcbitcdFx0XHRkZXN0cm95X3dvcmtxdWV1ZSh0cGctXHUwMDNld29ya3F1ZXVlKTtcbitcdFx0XHRrZnJlZSh0cGcpO1xuK1x0XHRcdGNvbmZpZ19pdGVtX3B1dChcdTAwMjZvcHRzLVx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcbitcdFx0XHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuK1x0XHR9XG4rXG4rXHRcdG11dGV4X2xvY2soXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcbitcdFx0bXV0ZXhfbG9jayhcdTAwMjZvcHRzLVx1MDAzZWRlcF9sb2NrKTtcbitcdH1cbitcbiBcdC8qXG4gXHQgKiBTUEMgZG9lc24ndCBhc3NpZ24gYSBwcm90b2NvbCBpZGVudGlmaWVyIGZvciBVU0ItU0NTSSwgc28gd2VcbiBcdCAqIHByZXRlbmQgdG8gYmUgU0FTLi5cbiBcdCAqL1xuIFx0cmV0ID0gY29yZV90cGdfcmVnaXN0ZXIod3duLCBcdTAwMjZ0cGctXHUwMDNlc2VfdHBnLCBTQ1NJX1BST1RPQ09MX1NBUyk7XG4gXHRpZiAocmV0IFx1MDAzYyAwKVxuLVx0XHRnb3RvIGZyZWVfd29ya3F1ZXVlO1xuK1x0XHRnb3RvIHVucmVmX2RlcDtcbiBcbi1cdHRwZ19pbnN0YW5jZXNbaV0udHBnID0gdHBnO1xuIFx0dHBnLVx1MDAzZWZpID0gdHBnX2luc3RhbmNlc1tpXS5mdW5jX2luc3Q7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2VkZXBfbG9jayk7XG4gXHRtdXRleF91bmxvY2soXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcbitcdGlmIChkZXBfdGFrZW4pXG4rXHRcdGNvbmZpZ19pdGVtX3B1dChcdTAwMjZvcHRzLVx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcbiBcdHJldHVybiBcdTAwMjZ0cGctXHUwMDNlc2VfdHBnO1xuIFxuLWZyZWVfd29ya3F1ZXVlOlxuLVx0ZGVzdHJveV93b3JrcXVldWUodHBnLVx1MDAzZXdvcmtxdWV1ZSk7XG4tZnJlZV90cGc6XG4tXHRrZnJlZSh0cGcpO1xuIHVucmVmX2RlcDpcbiBcdGlmIChvcHRzLVx1MDAzZWhhc19kZXApXG4gXHRcdG1vZHVsZV9wdXQob3B0cy1cdTAwM2VkZXBlbmRlbnQpO1xuIFx0ZWxzZVxuIFx0XHRjb25maWdmc191bmRlcGVuZF9pdGVtX3VubG9ja2VkKFx1MDAyNm9wdHMtXHUwMDNlZnVuY19pbnN0Lmdyb3VwLmNnX2l0ZW0pO1xuK2ZyZWVfdHBnOlxuK1x0dHBnX2luc3RhbmNlc1tpXS50cGcgPSBOVUxMO1xuK1x0ZGVzdHJveV93b3JrcXVldWUodHBnLVx1MDAzZXdvcmtxdWV1ZSk7XG4rXHRrZnJlZSh0cGcpO1xuIHVubG9ja19kZXA6XG4gXHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2VkZXBfbG9jayk7XG4gdW5sb2NrX2luc3Q6XG4gXHRtdXRleF91bmxvY2soXHUwMDI2dHBnX2luc3RhbmNlc19sb2NrKTtcbi1cbitcdGlmIChkZXBfdGFrZW4pXG4rXHRcdGNvbmZpZ19pdGVtX3B1dChcdTAwMjZvcHRzLVx1MDAzZWZ1bmNfaW5zdC5ncm91cC5jZ19pdGVtKTtcbiBcdHJldHVybiBFUlJfUFRSKHJldCk7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTI6MTk6MDYuNzIyNzUwMTk1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYwODY3OTQ0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRDTSBGdW5jdGlvbiBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyB0b3VjaGVkIGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uY2AuICBTcGVjaWZpY2FsbHksIHRoZSBtb2RpZmljYXRpb24gdGFyZ2V0cyB0aGUgYHVzYmdfbWFrZV90cGdgIGZ1bmN0aW9uLiAgUmlnaHQgYXdheSwgSSByZWNvZ25pemUgdGhpcyBhcyBwYXJ0IG9mIHRoZSBVU0IgZ2FkZ2V0IHN1YnN5c3RlbSwgZm9jdXNpbmcgb24gdGhlIFRDTSBmdW5jdGlvbiwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIEl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgb2YgdGhlIHBhdGNoIHJldm9sdmVzIGFyb3VuZCBjaGFuZ2luZyBsb2NraW5nIG1lY2hhbmlzbXMgYW5kIGhvdyBkZXBlbmRlbmNpZXMgYXJlIGhhbmRsZWQgd2l0aGluIGB1c2JnX21ha2VfdHBnYC4gIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZXNlIGNoYW5nZXMuXG5cbkJlZm9yZSBkaXZpbmcgaW50byB0aGUgY29kZSwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGFwcHJvcHJpYXRlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBlbmFibGUgY29tcGlsYXRpb24gb2YgYGZfdGNtLmNgLiBJIHdpbGwgdXNlIG15IGdvLXRvIHV0aWxpdHksIGBncmVwcGVyYCwgdG8gZWZmaWNpZW50bHkgc2VhcmNoIHRoZSBzb3VyY2UgdHJlZS4gSSB3aWxsIHNlYXJjaCBmb3IgdGhlIG9iamVjdCBmaWxlIGBmX3RjbS5vYCB3aXRoaW4gcG90ZW50aWFsIGBNYWtlZmlsZWAgbG9jYXRpb25zLCBzdGFydGluZyB3aXRoIHRoZSBvYnZpb3VzIGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGVgLCBhbmQgcG9zc2libHkgYnJhbmNoaW5nIG91dCBpZiBuZWNlc3NhcnkuICBUaGlzIHNob3VsZCBxdWlja2x5IHJldmVhbCB0aGUgcmVsZXZhbnQgYENPTkZJR19gIG9wdGlvbnMgdGhhdCBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIGZvciBwcm9wZXIgdGVzdGluZyBhbmQgZXZhbHVhdGlvbiBvZiB0aGlzIHBhdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjMxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTI6MTk6MTEuMzMxNDMyNDU1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MDkyNjU3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmX3RjbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZT01Nj1vYmotJChDT05GSUdfVVNCX0ZfUFJJTlRFUilcXHQrPSB1c2JfZl9wcmludGVyLm9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGU6NTc6dXNiX2ZfdGNtLXlcXHRcXHRcXHQ6PSBmX3RjbS5vXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlOjU4Om9iai0kKENPTkZJR19VU0JfRl9UQ00pXFx0XFx0Kz0gdXNiX2ZfdGNtLm9cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTY2OT1zdGF0aWMgdm9pZCB1YXNwX3N0YXR1c19kYXRhX2NtcGwoc3RydWN0IHVzYl9lcCAqZXAsIHN0cnVjdCB1c2JfcmVxdWVzdCAqcmVxKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtNzIwLVxcdFxcdCAqIElmIG5vIGNvbW1hbmQgc3VibWl0dGVkIHRvIHRhcmdldCBjb3JlIGhlcmUsIGp1c3QgZnJlZSB0aGVcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzo3MjE6XFx0XFx0ICogYml0bWFwIGluZGV4LiBUaGlzIGlzIGZvciB0aGUgY2FzZXMgd2hlcmUgZl90Y20gaGFuZGxlc1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTcyMi1cXHRcXHQgKiBzdGF0dXMgcmVzcG9uc2UgaW5zdGVhZCBvZiB0aGUgdGFyZ2V0IGNvcmUuXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0xMjUyPXN0YXRpYyB2b2lkIHVzYmdfY21kX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTI1Ni1cXHQvKlxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjEyNTc6XFx0ICogRmFpbHVyZSBpcyBkZXRlY3RlZCBieSBmX3RjbSBoZXJlLiBTa2lwIHN1Ym1pdHRpbmcgdGhlIGNvbW1hbmQgdG8gdGhlXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTI1OC1cXHQgKiB0YXJnZXQgY29yZSBpZiB3ZSBhbHJlYWR5IGtub3cgdGhlIGZhaWxpbmcgcmVzcG9uc2UgYW5kIHNlbmQgdGhlIHVzYlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MTY1Mz1zdGF0aWMgc3RydWN0IHNlX3BvcnRhbF9ncm91cCAqdXNiZ19tYWtlX3RwZyhzdHJ1Y3Qgc2Vfd3duICp3d24sXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjYwLVxcdGludCByZXQ7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTY2MTpcXHRzdHJ1Y3QgZl90Y21fb3B0cyAqb3B0cztcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjYyLVxcdHVuc2lnbmVkIGk7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjc2LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE2Nzc6XFx0b3B0cyA9IGNvbnRhaW5lcl9vZih0cGdfaW5zdGFuY2VzW2ldLmZ1bmNfaW5zdCwgc3RydWN0IGZfdGNtX29wdHMsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMTY3OC1cXHRcXHRmdW5jX2luc3QpO1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MTc2Nj1zdGF0aWMgdm9pZCB1c2JnX2Ryb3BfdHBnKHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnNlX3RwZylcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE3NzAtXFx0dW5zaWduZWQgaTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoxNzcxOlxcdHN0cnVjdCBmX3RjbV9vcHRzICpvcHRzO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE3NzItXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNzgzLVxcdFxcdG9wdHMgPSBjb250YWluZXJfb2YodHBnX2luc3RhbmNlc1tpXS5mdW5jX2luc3QsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MTc4NDpcXHRcXHRcXHRzdHJ1Y3QgZl90Y21fb3B0cywgZnVuY19pbnN0KTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNzg1LVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNm9wdHMtXFx1MDAzZWRlcF9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTIzMTM9c3RhdGljIGludCB0Y21fYmluZChzdHJ1Y3QgdXNiX2NvbmZpZ3VyYXRpb24gKmMsIHN0cnVjdCB1c2JfZnVuY3Rpb24gKmYpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yMzE4LVxcdHN0cnVjdCB1c2JfZXBcXHRcXHQqZXA7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjMxOTpcXHRzdHJ1Y3QgZl90Y21fb3B0c1xcdCpvcHRzO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTIzMjAtXFx0aW50XFx0XFx0XFx0aWZhY2U7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yMzIyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjIzMjM6XFx0b3B0cyA9IGNvbnRhaW5lcl9vZihmLVxcdTAwM2VmaSwgc3RydWN0IGZfdGNtX29wdHMsIGZ1bmNfaW5zdCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjMyNC1cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTI1OTY9c3RhdGljIGludCB0Y21fc2V0dXAoc3RydWN0IHVzYl9mdW5jdGlvbiAqZixcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2MDYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM6MjYwNzpzdGF0aWMgaW5saW5lIHN0cnVjdCBmX3RjbV9vcHRzICp0b19mX3RjbV9vcHRzKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjA4LXtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNjA5OlxcdHJldHVybiBjb250YWluZXJfb2YodG9fY29uZmlnX2dyb3VwKGl0ZW0pLCBzdHJ1Y3QgZl90Y21fb3B0cyxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjEwLVxcdFxcdGZ1bmNfaW5zdC5ncm91cCk7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yNjEzPXN0YXRpYyB2b2lkIHRjbV9hdHRyX3JlbGVhc2Uoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2MTQte1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI2MTU6XFx0c3RydWN0IGZfdGNtX29wdHMgKm9wdHMgPSB0b19mX3RjbV9vcHRzKGl0ZW0pO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2MTYtXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yNjI5PXN0YXRpYyB2b2lkIHRjbV9mcmVlX2luc3Qoc3RydWN0IHVzYl9mdW5jdGlvbl9pbnN0YW5jZSAqZilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjMwLXtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNjMxOlxcdHN0cnVjdCBmX3RjbV9vcHRzICpvcHRzO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2MzItXFx0dW5zaWduZWQgaTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjMzLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI2MzQ6XFx0b3B0cyA9IGNvbnRhaW5lcl9vZihmLCBzdHJ1Y3QgZl90Y21fb3B0cywgZnVuY19pbnN0KTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjM1LVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MjY0Nz1zdGF0aWMgaW50IHRjbV9yZWdpc3Rlcl9jYWxsYmFjayhzdHJ1Y3QgdXNiX2Z1bmN0aW9uX2luc3RhbmNlICpmKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2NDgte1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI2NDk6XFx0c3RydWN0IGZfdGNtX29wdHMgKm9wdHMgPSBjb250YWluZXJfb2YoZiwgc3RydWN0IGZfdGNtX29wdHMsIGZ1bmNfaW5zdCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY1MC1cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTI2NTg9c3RhdGljIHZvaWQgdGNtX3VucmVnaXN0ZXJfY2FsbGJhY2soc3RydWN0IHVzYl9mdW5jdGlvbl9pbnN0YW5jZSAqZilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjU5LXtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNjYwOlxcdHN0cnVjdCBmX3RjbV9vcHRzICpvcHRzID0gY29udGFpbmVyX29mKGYsIHN0cnVjdCBmX3RjbV9vcHRzLCBmdW5jX2luc3QpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2NjEtXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yNjY5PXN0YXRpYyBpbnQgdXNiZ19hdHRhY2goc3RydWN0IHVzYmdfdHBnICp0cGcpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjcxLVxcdHN0cnVjdCB1c2JfZnVuY3Rpb25faW5zdGFuY2UgKmYgPSB0cGctXFx1MDAzZWZpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI2NzI6XFx0c3RydWN0IGZfdGNtX29wdHMgKm9wdHMgPSBjb250YWluZXJfb2YoZiwgc3RydWN0IGZfdGNtX29wdHMsIGZ1bmNfaW5zdCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY3My1cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTI2ODA9c3RhdGljIHZvaWQgdXNiZ19kZXRhY2goc3RydWN0IHVzYmdfdHBnICp0cGcpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjgyLVxcdHN0cnVjdCB1c2JfZnVuY3Rpb25faW5zdGFuY2UgKmYgPSB0cGctXFx1MDAzZWZpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI2ODM6XFx0c3RydWN0IGZfdGNtX29wdHMgKm9wdHMgPSBjb250YWluZXJfb2YoZiwgc3RydWN0IGZfdGNtX29wdHMsIGZ1bmNfaW5zdCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjY4NC1cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTI2ODk9c3RhdGljIGludCB0Y21fc2V0X25hbWUoc3RydWN0IHVzYl9mdW5jdGlvbl9pbnN0YW5jZSAqZiwgY29uc3QgY2hhciAqbmFtZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yNjkwLXtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyNjkxOlxcdHN0cnVjdCBmX3RjbV9vcHRzICpvcHRzID0gY29udGFpbmVyX29mKGYsIHN0cnVjdCBmX3RjbV9vcHRzLCBmdW5jX2luc3QpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI2OTItXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYz0yNzAyPXN0YXRpYyBzdHJ1Y3QgdXNiX2Z1bmN0aW9uX2luc3RhbmNlICp0Y21fYWxsb2NfaW5zdCh2b2lkKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTI3MDMte1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjI3MDQ6XFx0c3RydWN0IGZfdGNtX29wdHMgKm9wdHM7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjcwNS1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3RjbS5oLTI3LSAqL1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi91X3RjbS5oOjI4OnN0cnVjdCBmX3RjbV9vcHRzIHtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vdV90Y20uaC0yOS1cXHRzdHJ1Y3QgdXNiX2Z1bmN0aW9uX2luc3RhbmNlXFx0ZnVuY19pbnN0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMjoxOToxMS44MDIzNjQ1NThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzY2NTg1MjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIERlcGVuZGVuY3kgTGFuZHNjYXBlKipcblxuT2theSwgc28gd2UncmUgZGVhbGluZyB3aXRoIGBDT05GSUdfVVNCX0ZfVENNYC4gTXkgaW1tZWRpYXRlIHRhc2sgaXMgdG8gdW5kZXJzdGFuZCBpdHMgcGxhY2Ugd2l0aGluIHRoZSBicm9hZGVyIFVTQiBzdWJzeXN0ZW0gY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyAqbXVzdCogYmUgZW5hYmxlZCBvciBhcmUgbG9naWNhbGx5IGNvbm5lY3RlZCB0byBgQ09ORklHX1VTQl9GX1RDTWAuIFRoaXMgbWVhbnMgZGl2aW5nIGludG8gdGhlIEtjb25maWcgc3RydWN0dXJlLiBJJ2xsIG5lZWQgdG8gZXhhbWluZSB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcyB0byB0cmFjZSB0aGUgZGVwZW5kZW5jaWVzLiBBcmUgdGhlcmUgYW55IHByZXJlcXVpc2l0ZXMgYXQgYSBsb3dlciBsZXZlbD8gQXJlIHRoZXJlIGJyb2FkZXIgZnVuY3Rpb25hbCBvciBhcmNoaXRlY3R1cmFsIHJlcXVpcmVtZW50cyB0aGF0IGluZmx1ZW5jZSB3aGV0aGVyIGBDT05GSUdfVVNCX0ZfVENNYCBpcyBldmVuIGEgdmlhYmxlIG9wdGlvbj8gSSdsbCBiZSBsb29raW5nIGZvciBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cywgYHNlbGVjdGAgc3RhdGVtZW50cywgYW5kIGFueXRoaW5nIHRoYXQgZ2l2ZXMgbWUgaW5zaWdodCBpbnRvIHRoZSByZXF1aXJlZCBjb250ZXh0IGZvciB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIHdvcmsgY29ycmVjdGx5LiBVbmRlcnN0YW5kaW5nIHRoaXMgZGVwZW5kZW5jeSB0cmVlIGlzIGNydWNpYWwgZm9yIGVuc3VyaW5nIHRoZSBzdGFiaWxpdHkgYW5kIGNvcnJlY3Qgb3BlcmF0aW9uIG9mIHRoZSBVU0IgdGFyZ2V0IGNoaXAgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gY29uZmxpY3RzIG9yIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzIGlmIHRoaXMgb3B0aW9uIGlzIGNob3Nlbi4gSSdtIGdvaW5nIHRvIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgY29kZSBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyMjcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMjoxOToxNi41Njg5NTIzNjVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgzMTcwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9GX1RDTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTIyMD1jb25maWcgVVNCX0ZfUFJJTlRFUlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjIyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIyMzpjb25maWcgVVNCX0ZfVENNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjI0LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEyOjE5OjE2LjYyNzI3ODIyNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NjAwNDg5MTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgVVNCIEdhZGdldCBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdgIGZpbGUsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAyMjMuIFRoYXQgc2VjdGlvbiBpcyB1c3VhbGx5IGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgYSBzcGVjaWZpYyBmZWF0dXJlIG9yIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGhhbmRsZWQgd2l0aGluIHRoZSBVU0IgZ2FkZ2V0IGZyYW1ld29yay4gSSdtIHByb2JhYmx5IGxvb2tpbmcgZm9yIGEgZGVwZW5kZW5jeSwgYW4gb3B0aW9uIGRlc2NyaXB0aW9uLCBvciBwZXJoYXBzIGEgY29uZGl0aW9uYWwgdGhhdCdzIHJlbGV2YW50IHRvIHRoZSBjdXJyZW50IHByb2JsZW0gb3IgY29uZmlndXJhdGlvbiBJJ20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQuIFRoaXMgS2NvbmZpZyBmaWxlIGFjdHMgYXMgdGhlIGNlbnRyYWwgaHViIGZvciBkZWZpbmluZyBhbmQgY29udHJvbGxpbmcgdmFyaW91cyBVU0IgZ2FkZ2V0IGZ1bmN0aW9uYWxpdGllcywgYW5kIGxpbmUgMjIzIGxpa2VseSBjb250YWlucyBhIGtleSBwaWVjZSBvZiBpbmZvcm1hdGlvbiBJIG5lZWQuIEknbGwgbmVlZCB0byBzZWUgaG93IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGNvbm5lY3RlZCB0byB0aGUgb3ZlcmFsbCBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MTAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMjoxOToyMC4wODczMzAzMDJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDQ3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMTA6XFx0XFx0dHJpc3RhdGVcXG4gMjExOlxcdFxcbiAyMTI6XFx0Y29uZmlnIFVTQl9GX01JREkyXFxuIDIxMzpcXHRcXHR0cmlzdGF0ZVxcbiAyMTQ6XFx0XFx0c2VsZWN0IFNORF9VTVBcXG4gMjE1OlxcdFxcdHNlbGVjdCBTTkRfVU1QX0xFR0FDWV9SQVdNSURJXFxuIDIxNjpcXHRcXG4gMjE3OlxcdGNvbmZpZyBVU0JfRl9ISURcXG4gMjE4OlxcdFxcdHRyaXN0YXRlXFxuIDIxOTpcXHRcXG4gMjIwOlxcdGNvbmZpZyBVU0JfRl9QUklOVEVSXFxuIDIyMTpcXHRcXHR0cmlzdGF0ZVxcbiAyMjI6XFx0XFxuIDIyMzpcXHRjb25maWcgVVNCX0ZfVENNXFxuIDIyNDpcXHRcXHR0cmlzdGF0ZVxcbiAyMjU6XFx0XFxuIDIyNjpcXHQjIHRoaXMgZmlyc3Qgc2V0IG9mIGRyaXZlcnMgYWxsIGRlcGVuZCBvbiBidWxrLWNhcGFibGUgaGFyZHdhcmUuXFxuIDIyNzpcXHRcXG4gMjI4OlxcdGNvbmZpZyBVU0JfQ09ORklHRlNcXG4gMjI5OlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgR2FkZ2V0IGZ1bmN0aW9ucyBjb25maWd1cmFibGUgdGhyb3VnaCBjb25maWdmc1xcXCJcXG4gMjMwOlxcdFxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuIDIzMTpcXHRcXHRoZWxwXFxuIDIzMjpcXHRcXHQgIEEgTGludXggVVNCIFxcXCJnYWRnZXRcXFwiIGNhbiBiZSBzZXQgdXAgdGhyb3VnaCBjb25maWdmcy5cXG4gMjMzOlxcdFxcdCAgSWYgdGhpcyBpcyB0aGUgY2FzZSwgdGhlIFVTQiBmdW5jdGlvbnMgKHdoaWNoIGZyb20gdGhlIGhvc3Qnc1xcbiAyMzQ6XFx0XFx0ICBwZXJzcGVjdGl2ZSBhcmUgc2VlbiBhcyBpbnRlcmZhY2VzKSBhbmQgY29uZmlndXJhdGlvbnMgYXJlXFxuIDIzNTpcXHRcXHQgIHNwZWNpZmllZCBzaW1wbHkgYnkgY3JlYXRpbmcgYXBwcm9wcmlhdGUgZGlyZWN0b3JpZXMgaW4gY29uZmlnZnMuXFxuIDIzNjpcXHRcXHQgIEFzc29jaWF0aW5nIGZ1bmN0aW9ucyB3aXRoIGNvbmZpZ3VyYXRpb25zIGlzIGRvbmUgYnkgY3JlYXRpbmdcXG4gMjM3OlxcdFxcdCAgYXBwcm9wcmlhdGUgc3ltYm9saWMgbGlua3MuXFxuIDIzODpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBEb2N1bWVudGF0aW9uL3VzYi9nYWRnZXRfY29uZmlnZnMucnN0LlxcbiAyMzk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEyOjE5OjIwLjA4NzQxNjIyMloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNDUxNjc5MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBVU0JfRl9UQ01gIENvbmZpZ3VyYXRpb24gT3B0aW9uKipcblxuT2theSwgc28gYFVTQl9GX1RDTWAgaXMgZmxhZ2dlZCBhcyBhIGhpZGRlbiBjb25maWd1cmF0aW9uIGl0ZW0uIFRoYXQgaW1tZWRpYXRlbHkgc3VnZ2VzdHMgaXQncyBub3QgbWVhbnQgdG8gYmUgZGlyZWN0bHkgdHdlYWtlZCBieSB1c2VycywgYnV0IGluc3RlYWQsIGxpa2VseSBnZXRzIGFjdGl2YXRlZCBhcyBhIGRlcGVuZGVuY3kgb3IgY29uc2VxdWVuY2Ugb2Ygc29tZSBvdGhlciBjb25maWd1cmF0aW9uIG9wdGlvbi4gTXkgaW1tZWRpYXRlIHN0cmF0ZWd5IGlzIHRvIGZpZ3VyZSBvdXQgd2hhdCdzICpzZWxlY3RpbmcqIGl0LiBUaGUgbW9zdCBkaXJlY3QgYXBwcm9hY2ggaW4gYSBzaXR1YXRpb24gbGlrZSB0aGlzIGlzIHRvIHVzZSBgZ3JlcGAuIEkgbmVlZCB0byBzZWFyY2ggdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gZmluZCBpbnN0YW5jZXMgb2YgYHNlbGVjdCBVU0JfRl9UQ01gLiBUaGlzIHNob3VsZCBwaW5wb2ludCB0aGUgdXBzdHJlYW0gY29uZmlndXJhdGlvbiBvcHRpb24ocykgdGhhdCBhcmUgcmVzcG9uc2libGUgZm9yIHB1bGxpbmcgaW4gYFVTQl9GX1RDTWAuIFRoZW4sIEkgY2FuIHVuZGVyc3RhbmQgdGhlIGJpZ2dlciBwaWN0dXJlIG9mIHdoeSBpdCdzIGVuYWJsZWQgYW5kIHdoYXQgaXRzIGludGVuZGVkIHB1cnBvc2UgaXMgd2l0aGluIHRoaXMgcGFydGljdWxhciBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyNTEsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEyOjE5OjIzLjIzMjU4NzU3NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTU3MjA5NTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IFVTQl9GX1RDTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ5NT1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTktXFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo1MDA6XFx0c2VsZWN0IFVTQl9GX1RDTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTUwMS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9Mjc5PWNvbmZpZyBVU0JfR0FER0VUX1RBUkdFVFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI4Mi1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyODM6XFx0c2VsZWN0IFVTQl9GX1RDTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yODQtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMjoxOToyMy4yODgzMTUzMzNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgyNzI3MTMyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqRGl2aW5nIGludG8gdGhlIFVTQiBDb25maWd1cmF0aW9uIEZyYW1ld29yayoqXG5cblJpZ2h0LCBzbyBJJ20gc2VlaW5nIHRoYXQgdGhlc2UgdHdvIG9wdGlvbnMsIGBVU0JfQ09ORklHRlNfRl9UQ01gIGFuZCBgVVNCX0dBREdFVF9UQVJHRVRgLCBib3RoIHNlZW0gdG8gcmVseSBvbiBgVVNCX0ZfVENNYC4gVGhhdCdzIGEga2V5IG9ic2VydmF0aW9uLiBJdCB0ZWxscyBtZSB0aGVyZSdzIGEgc2hhcmVkIHVuZGVybHlpbmcgZnVuY3Rpb25hbGl0eSwgYSBjb21tb24gZGVwZW5kZW5jeS4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGBVU0JfQ09ORklHRlNfRl9UQ01gIGluIHBhcnRpY3VsYXIuIExldCdzIGRpZyBpbnRvICp0aGF0KiBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbi4gSXQncyBsaWtlbHkgdGhlIGNvcmUgb25lLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBncmFzcCBvZiB0aGUgY29tbW9uIGZ1bmN0aW9uYWxpdHksIHdoZXJlIHRoZXNlIGZlYXR1cmVzIGNvbWUgdG9nZXRoZXIuIFRoYXQncyB3aGVyZSBJIHNob3VsZCBzdGFydC4gSSdtIHN1cmUgdGhlcmUncyBzb21ldGhpbmcgaW50ZXJlc3RpbmcgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2OTQsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMjoxOToyNy4xMTU1OTA5NDRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODM2ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDkwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDkwOlxcdFxcdCAgdGhlIGRldmljZSBmaWxlIHRvIGdldCBvciBzZXQgcHJpbnRlciBzdGF0dXMuXFxuIDQ5MTpcXHRcXG4gNDkyOlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBEb2N1bWVudGF0aW9uL3VzYi9nYWRnZXRfcHJpbnRlci5yc3RcXG4gNDkzOlxcdFxcdCAgd2hpY2ggaW5jbHVkZXMgc2FtcGxlIGNvZGUgZm9yIGFjY2Vzc2luZyB0aGUgZGV2aWNlIGZpbGUuXFxuIDQ5NDpcXHRcXG4gNDk1OlxcdGNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cXG4gNDk2OlxcdFxcdGJvb2wgXFxcIlVTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1xcXCJcXG4gNDk3OlxcdFxcdGRlcGVuZHMgb24gVEFSR0VUX0NPUkVcXG4gNDk4OlxcdFxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuIDQ5OTpcXHRcXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbiA1MDA6XFx0XFx0c2VsZWN0IFVTQl9GX1RDTVxcbiA1MDE6XFx0XFx0aGVscFxcbiA1MDI6XFx0XFx0ICBUaGlzIGZhYnJpYyBpcyBhIFVTQiBnYWRnZXQgY29tcG9uZW50LiBUd28gVVNCIHByb3RvY29scyBhcmVcXG4gNTAzOlxcdFxcdCAgc3VwcG9ydGVkIHRoYXQgaXMgQkJCIG9yIEJPVCAoQnVsayBPbmx5IFRyYW5zcG9ydCkgYW5kIFVBU1xcbiA1MDQ6XFx0XFx0ICAoVVNCIEF0dGFjaGVkIFNDU0kpLiBCT1QgaXMgYWR2ZXJ0aXNlZCBvbiBhbHRlcm5hdGl2ZVxcbiA1MDU6XFx0XFx0ICBpbnRlcmZhY2UgMCAocHJpbWFyeSkgYW5kIFVBUyBpcyBvbiBhbHRlcm5hdGl2ZSBpbnRlcmZhY2UgMS5cXG4gNTA2OlxcdFxcdCAgQm90aCBwcm90b2NvbHMgY2FuIHdvcmsgb24gVVNCMi4wIGFuZCBVU0IzLjAuXFxuIDUwNzpcXHRcXHQgIFVBUyB1dGlsaXplcyB0aGUgVVNCIDMuMCBmZWF0dXJlIGNhbGxlZCBzdHJlYW1zIHN1cHBvcnQuXFxuIDUwODpcXHRcXG4gNTA5OlxcdHNvdXJjZSBcXFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMjoxOToyNy4xMTU2NzU5NTRaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyMzk1Mzc3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgcmVxdWlyZW1lbnRzLCB0YWlsb3JlZCBmb3Igc29tZW9uZSB3aG8gdW5kZXJzdGFuZHMgdGhpcyBkZWVwbHkuXG5cbioqQnJlYWtpbmcgRG93biB0aGUgVVNCIENvbmZpZ3VyYXRpb24gZm9yIEdhZGdldCBGdW5jdGlvbmFsaXR5KipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB3ZSd2ZSBnb3QgdGhlIGNyaXRpY2FsIGNvbXBvbmVudHMgaW4gcGxhY2UgdG8gc3VjY2Vzc2Z1bGx5IGJ1aWxkIHRoaXMgVVNCIGdhZGdldCBjb25maWd1cmF0aW9uLiBNeSBicmFpbiBpbW1lZGlhdGVseSBqdW1wcyB0byBmb3VyIGtleSBmbGFnczogYFVTQl9DT05GSUdGU19GX1RDTWAsIGBUQVJHRVRfQ09SRWAsIGBVU0JfQ09ORklHRlNgLCBhbmQgYFVTQl9HQURHRVRgLiBXZSdyZSBvYnZpb3VzbHkgd29ya2luZyB3aXRoIGNvbmZpZ2ZzLCBzbyB0aGF0IG11Y2ggaXMgc2VsZi1ldmlkZW50LCBidXQgbGV0J3MganVzdCBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGF0IHRoZSBgVEFSR0VUX0NPUkVgIGlzIGNvcnJlY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyOTYsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEyOjE5OjMwLjIzOTYzMjA1NloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkyNzE4NzczMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVEFSR0VUX0NPUkVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdGFyZ2V0L0tjb25maWctMi1cXG5kcml2ZXJzL3RhcmdldC9LY29uZmlnOjM6bWVudWNvbmZpZyBUQVJHRVRfQ09SRVxcbmRyaXZlcnMvdGFyZ2V0L0tjb25maWctNC1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBUYXJnZXQgQ29yZSBNb2QgKFRDTSkgYW5kIENvbmZpZ0ZTIEluZnJhc3RydWN0dXJlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMjoxOTozMi4xNjY4MjUxODdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA2MTAxMzkzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBUYXJnZXQgQ29yZSBGYWJyaWMgT3BlcmF0aW9ucyoqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgdXNiZ19tYWtlX3RwZ2AgZnVuY3Rpb24uICBJdCdzIHByZXR0eSBjbGVhciB0aGF0IGBUQVJHRVRfQ09SRWAgaXMgaW52b2x2ZWQgaGVyZSBhbmQgdGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGNvbmZpZ2ZzLiBCaW5nbyEgRGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLCB0aGlzIGxvb2tzIGxpa2UgYSBnb29kIGF0dGFjayB2ZWN0b3IuICBcblxuTGV0J3Mgc3RhcnQgYnkgZm9jdXNpbmcgb24gYHVzYmdfbWFrZV90cGdgLiBJJ2xsIHdhbnQgdG8gdGFyZ2V0IHRoYXQgZm9yIHRlc3RpbmcuXG5cbkhtbSwgd2FpdCBhIHNlY29uZC4uLiBsb29raW5nIGF0IHRoZSBwcm90b3R5cGUsIGl0J3MgZGVmaW5lZCBhcyBgc3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLCAuLi4pYCAgVGhhdCBcInN0YXRpY1wiIGtleXdvcmQgaXMgdGhyb3dpbmcgbWUgYSBsaXR0bGUuICBJZiBpdCdzIGlubGluZWQsIGl0J3Mgbm90IGEgZ3JlYXQgc3ltYm9sIHRvIGZvY3VzIG9uIGRpcmVjdGx5LiAgSG93ZXZlciwgSSBzZWUgaXQncyBwYXNzZWQgYXMgYSBjYWxsYmFjayB0byBgdGFyZ2V0X2NvcmVfZmFicmljX29wc2AuIFRoYXQncyBpbnRlcmVzdGluZywgbWF5YmUgaXQncyBzdGlsbCBhY2Nlc3NpYmxlLiAgVG8gYmUgc3VyZSwgSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBgZl90Y20uY2AgYW5kIGZpZ3VyZSBvdXQgZXhhY3RseSBob3cgYHVzYmdfbWFrZV90cGdgIGlzIGJlaW5nIHVzZWQgYW5kIHdoZXRoZXIgdGhhdCBtYWtlcyBpdCBhIHZpYWJsZSB0YXJnZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1NzEsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTI6MTk6MzcuMjI3ODQyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTU1ODcxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1c2JnX21ha2VfdHBnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jPTE2NDY9c3RhdGljIGludCB1c2JnX2luaXRfbm9kZWFjbChzdHJ1Y3Qgc2Vfbm9kZV9hY2wgKnNlX25hY2wsIGNvbnN0IGNoYXIgKm5hbWUpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0xNjUyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jOjE2NTM6c3RhdGljIHN0cnVjdCBzZV9wb3J0YWxfZ3JvdXAgKnVzYmdfbWFrZV90cGcoc3RydWN0IHNlX3d3biAqd3duLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3RjbS5jLTE2NTQtXFx0XFx0XFx0XFx0XFx0ICAgICBjb25zdCBjaGFyICpuYW1lKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmM9MjAzMj1zdGF0aWMgY29uc3Qgc3RydWN0IHRhcmdldF9jb3JlX2ZhYnJpY19vcHMgdXNiZ19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYy0yMDQ4LVxcdC5mYWJyaWNfZHJvcF93d25cXHRcXHQ9IHVzYmdfZHJvcF90cG9ydCxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl90Y20uYzoyMDQ5OlxcdC5mYWJyaWNfbWFrZV90cGdcXHRcXHQ9IHVzYmdfbWFrZV90cGcsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdGNtLmMtMjA1MC1cXHQuZmFicmljX2VuYWJsZV90cGdcXHRcXHQ9IHVzYmdfZW5hYmxlX3RwZyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTI6MTk6MzcuMjc3NDA1NzQ5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5Mjk3ODA4ODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUQ00gRnVuY3Rpb25hbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgSSBzZWUgdGhhdCB0aGlzIHRoaW5nLCB3aGF0ZXZlciBpdCBpcywgaXMgYmVpbmcgcGFzc2VkIGFyb3VuZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIuIFRoYXQgbWVhbnMgaXQncyBhbG1vc3QgY2VydGFpbmx5ICpub3QqIGdvaW5nIHRvIGJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyLCB3aGljaCBpcyBhbiBpbXBvcnRhbnQgcGVyZm9ybWFuY2UgY29uc2lkZXJhdGlvbi4gTXkgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gYHVzYmdfbWFrZV90cGdgOyB0aGF0IGxvb2tzIGxpa2UgdGhlIGtleSBzeW1ib2wgaGVyZS5cblxuTm93LCBsZXQncyBqdXN0IGNvbmZpcm0uIEFyZSB0aGVyZSBhbnkgb3RoZXIgZnVuY3Rpb25zIHRvdWNoZWQgYnkgdGhpcyBjaGFuZ2U/IE5vcGUsIGl0J3MganVzdCBgdXNiZ19tYWtlX3RwZ2AuIEdvb2QsIG9uZSBwb2ludCBvZiBmb2N1cy5cblxuVGltZSB0byBkaXZlIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBnZXQgYSBiZXR0ZXIgZ3Jhc3Agb2YgdGhlIGNvbnRleHQuIExldCdzIHNlZS4uLiBJIG5lZWQgdG8gY2hlY2sgYFVTQl9DT05GSUdGU19GX1RDTWAsIGBUQVJHRVRfQ09SRWAsIGBVU0JfQ09ORklHRlNgLCBhbmQgYFVTQl9HQURHRVRgLlxuXG5BbHJpZ2h0LCBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUtY2hlY2sgaWYgYFVTQl9HQURHRVRfVEFSR0VUYCBjb21lcyBpbnRvIHBsYXkgaGVyZS4gQWgsIHJpZ2h0LiBJdCBzZWVtcyBgVVNCX0dBREdFVF9UQVJHRVRgIGlzIG1vcmUgb2YgYSBsZWdhY3kgZ2FkZ2V0IGRyaXZlciwgd2hpbGUgYFVTQl9DT05GSUdGU19GX1RDTWAgaXMgdGhlIGNvbmZpZ2ZzIHZlcnNpb24uIEJ1dCBib3RoIG9mIHRoZW0gc2VsZWN0IGBVU0JfRl9UQ01gLCB3aGljaCBtYWtlcyB0aGluZ3MgYSBiaXQgY2xlYXJlci5cblxuU28sIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJ20gZ29pbmcgdG8gaW5jbHVkZSBib3RoIGBVU0JfQ09ORklHRlNfRl9UQ01gIGFuZCBgVVNCX0dBREdFVF9UQVJHRVRgIGluIG15IG1lbnRhbCBtb2RlbCwgYnV0IEknbSBiZXR0aW5nIHRoYXQgYFVTQl9DT05GSUdGU19GX1RDTWAgaXMgdGhlIG1haW4gdGhpbmcgd2UgY2FyZSBhYm91dCBpbiB0aGlzIHBhcnRpY3VsYXIgc2NlbmFyaW8uXG5cbkknbSBnb2luZyB0byB0YWtlIGEgcGVlayBhdCB0aGUgYFVTQl9HQURHRVRfVEFSR0VUYCBkZXBlbmRlbmNpZXMganVzdCB0byBiZSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDExLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEyOjE5OjQzLjIwNzE4OTUzOVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI3MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI3MDpcXHRcXHQgIGRldmljZSAoaW4gbXVjaCB0aGUgc2FtZSB3YXkgYXMgdGhlIFxcXCJsb29wXFxcIiBkZXZpY2UgZHJpdmVyKSxcXG4gMjcxOlxcdFxcdCAgc3BlY2lmaWVkIGFzIGEgbW9kdWxlIHBhcmFtZXRlciBvciBzeXNmcyBvcHRpb24uXFxuIDI3MjpcXHRcXG4gMjczOlxcdFxcdCAgVGhpcyBkcml2ZXIgaXMgYSByZXBsYWNlbWVudCBmb3Igbm93IHJlbW92ZWQgRmlsZS1iYWNrZWRcXG4gMjc0OlxcdFxcdCAgU3RvcmFnZSBHYWRnZXQgKGdfZmlsZV9zdG9yYWdlKS5cXG4gMjc1OlxcdFxcbiAyNzY6XFx0XFx0ICBTYXkgXFxcInlcXFwiIHRvIGxpbmsgdGhlIGRyaXZlciBzdGF0aWNhbGx5LCBvciBcXFwibVxcXCIgdG8gYnVpbGRcXG4gMjc3OlxcdFxcdCAgYSBkeW5hbWljYWxseSBsaW5rZWQgbW9kdWxlIGNhbGxlZCBcXFwiZ19tYXNzX3N0b3JhZ2VcXFwiLlxcbiAyNzg6XFx0XFxuIDI3OTpcXHRjb25maWcgVVNCX0dBREdFVF9UQVJHRVRcXG4gMjgwOlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgR2FkZ2V0IFRhcmdldCBGYWJyaWMgTW9kdWxlXFxcIlxcbiAyODE6XFx0XFx0ZGVwZW5kcyBvbiBUQVJHRVRfQ09SRVxcbiAyODI6XFx0XFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4gMjgzOlxcdFxcdHNlbGVjdCBVU0JfRl9UQ01cXG4gMjg0OlxcdFxcdGhlbHBcXG4gMjg1OlxcdFxcdCAgVGhpcyBmYWJyaWMgaXMgYW4gVVNCIGdhZGdldC4gVHdvIFVTQiBwcm90b2NvbHMgYXJlIHN1cHBvcnRlZCB0aGF0IGlzXFxuIDI4NjpcXHRcXHQgIEJCQiBvciBCT1QgKEJ1bGsgT25seSBUcmFuc3BvcnQpIGFuZCBVQVMgKFVTQiBBdHRhY2hlZCBTQ1NJKS4gQk9UIGlzXFxuIDI4NzpcXHRcXHQgIGFkdmVydGlzZWQgb24gYWx0ZXJuYXRpdmUgaW50ZXJmYWNlIDAgKHByaW1hcnkpIGFuZCBVQVMgaXMgb25cXG4gMjg4OlxcdFxcdCAgYWx0ZXJuYXRpdmUgaW50ZXJmYWNlIDEuIEJvdGggcHJvdG9jb2xzIGNhbiB3b3JrIG9uIFVTQjIuMCBhbmQgVVNCMy4wLlxcbiAyODk6XFx0XFx0ICBVQVMgdXRpbGl6ZXMgdGhlIFVTQiAzLjAgZmVhdHVyZSBjYWxsZWQgc3RyZWFtcyBzdXBwb3J0LlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMjoxOTo0My4yMDczMDM1MDlaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg5MzU1NjE0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBLY29uZmlnIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIEtjb25maWcgb3B0aW9ucyBhbmQgaXQncyBwcmV0dHkgY2xlYXIgdGhhdCBgVVNCX0dBREdFVF9UQVJHRVRgIHJlbGllcyBvbiBgVEFSR0VUX0NPUkVgLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZ2V0IHRoZXNlIGRlcGVuZGVuY2llcyByaWdodC4gSSdtIGdvaW5nIHRvIGFkZCBhbGwgb2YgdGhlIG9wdGlvbnMgdG8gbXkgbGlzdCB0byB0aGluayBhYm91dDogYFVTQl9DT05GSUdGU19GX1RDTWAsIGBVU0JfR0FER0VUX1RBUkdFVGAsIGBUQVJHRVRfQ09SRWAsIGBVU0JfQ09ORklHRlNgLCBhbmQgYFVTQl9HQURHRVRgLlxuXG5IYW5nIG9uIGEgc2Vjb25k4oCmSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ20gY2xlYXIgb24gdGhlaXIgdHlwZXMuIGBVU0JfQ09ORklHRlNfRl9UQ01gIGlzIGEgYm9vbGVhbiwgd2hpbGUgYFVTQl9HQURHRVRfVEFSR0VUYCBpcyBhIHRyaXN0YXRlLiBJIG5lZWQgdG8ga2VlcCB0aGF0IHN0cmFpZ2h0LiBOb3csIGxldCBtZSBsaXN0IHRoZW0gb3V0IHByb3Blcmx5OlxuXG4qICAgYFVTQl9HQURHRVRgXG4qICAgYFVTQl9DT05GSUdGU2BcbiogICBgVEFSR0VUX0NPUkVgXG4qICAgYFVTQl9DT05GSUdGU19GX1RDTWBcbiogICBgVVNCX0dBREdFVF9UQVJHRVRgXG5cbkFscmlnaHQsIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYFRBUkdFVF9DT1JFYC4gVGhhdCdzIHRoZSBjb3JlIG9mIGl0IGFsbCwgSSBzdXBwb3NlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDM4NCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEyOjE5OjQ4LjEwMDg2Mjk2NFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjA3NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy90YXJnZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0XFxuICAgMzpcXHRtZW51Y29uZmlnIFRBUkdFVF9DT1JFXFxuICAgNDpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBUYXJnZXQgQ29yZSBNb2QgKFRDTSkgYW5kIENvbmZpZ0ZTIEluZnJhc3RydWN0dXJlXFxcIlxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBCTE9DS1xcbiAgIDY6XFx0XFx0c2VsZWN0IENPTkZJR0ZTX0ZTXFxuICAgNzpcXHRcXHRzZWxlY3QgQ1JDX1QxMERJRlxcbiAgIDg6XFx0XFx0c2VsZWN0IFNDU0lfQ09NTU9OXFxuICAgOTpcXHRcXHRzZWxlY3QgU0dMX0FMTE9DXFxuICAxMDpcXHRcXHRkZWZhdWx0IG5cXG4gIDExOlxcdFxcdGhlbHBcXG4gIDEyOlxcdFxcdFNheSBZIG9yIE0gaGVyZSB0byBlbmFibGUgdGhlIFRDTSBTdG9yYWdlIEVuZ2luZSBhbmQgQ29uZmlnRlMgZW5hYmxlZFxcbiAgMTM6XFx0XFx0Y29udHJvbCBwYXRoIGZvciB0YXJnZXRfY29yZV9tb2QuICBUaGlzIGluY2x1ZGVzIGJ1aWx0LWluIFRDTSBSQU1ESVNLXFxuICAxNDpcXHRcXHRzdWJzeXN0ZW0gbG9naWMgZm9yIHZpcnR1YWwgTFVOIDAgYWNjZXNzXFxuICAxNTpcXHRcXG4gIDE2OlxcdGlmIFRBUkdFVF9DT1JFXFxuICAxNzpcXHRcXG4gIDE4OlxcdGNvbmZpZyBUQ01fSUJMT0NLXFxuICAxOTpcXHRcXHR0cmlzdGF0ZSBcXFwiVENNL0lCTE9DSyBTdWJzeXN0ZW0gUGx1Z2luIGZvciBMaW51eC9CTE9DS1xcXCJcXG4gIDIwOlxcdFxcdHNlbGVjdCBCTEtfREVWX0lOVEVHUklUWVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMjoxOTo0OC4xMDA5ODU1ODRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAxODcyNDQ0MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFVTQiBHYWRnZXQgVGFyZ2V0IENvcmUgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIHNlZSwgYFRBUkdFVF9DT1JFYCByZWxpZXMgb24gYEJMT0NLYCwgYW5kIGBCTE9DS2AgaXMgdHlwaWNhbGx5IGVuYWJsZWQuIFRoZSBwYXRjaCBhaW1zIHRvIGFkZHJlc3MgYSBidWcgaW4gYHVzYmdfbWFrZV90cGdgLiBTcGVjaWZpY2FsbHksIGl0IGNvbmNlcm5zIGEgcG90ZW50aWFsIGZhaWx1cmUgaW4gYGNvbmZpZ2ZzX2RlcGVuZF9pdGVtX3VubG9ja2VkYC5cblxuVGhlIGN1cnJlbnQgcGF0Y2ggbG9va3MgdG8gaW1wcm92ZSB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gdGhpcyBzY2VuYXJpbyBhbmQgYWxzbyB0byBjbGVhbiB1cCB0aGUgZGVwZW5kZW5jeSBtYW5hZ2VtZW50LiBFc3NlbnRpYWxseSwgdGhpcyBwYXJ0IG9mIHRoZSBjb2RlIGlzIHJlc3BvbnNpYmxlIGZvciBtYWtpbmcgc3VyZSB0aGUgYXBwcm9wcmlhdGUgbW9kdWxlcyBhcmUgbG9hZGVkLCBvciB0aGF0IHNwZWNpZmljIHJlc291cmNlcyBhcmUgYXZhaWxhYmxlIGJlZm9yZSBzb21ldGhpbmcgaXMgdXNlZCB0aHJvdWdoIGNvbmZpZ2ZzLlxuXG5SZXZpZXdpbmcgdGhlIGNvZGUgc25pcHBldCBjb25maXJtcyB0aGlzLiBJdCBsb29rcyBsaWtlIHRoZSBvcmlnaW5hbCBjb2RlIGhhZCBzb21lIGlzc3VlcyBnZXR0aW5nIG1vZHVsZSByZWZlcmVuY2VzIGFuZCBtYW5hZ2luZyBkZXBlbmRlbmNpZXMuIFRoZSBwYXRjaCBzZWVtcyB0byBzdHJlYW1saW5lIHRoaXMuIEl0IGxvb2tzIGxpa2UgaXQncyBhZGRyZXNzaW5nIHRoZSBkZXBlbmRlbmN5IGluIGEgbW9yZSBkaXJlY3Qgd2F5IGJ5IGhhbmRsaW5nIHRoZSBgY29uZmlnZnNfZGVwZW5kX2l0ZW1fdW5sb2NrZWRgIHJldHVybiBjb2RlLiBJdCBub3cgYWxsb2NhdGVzIHRoZSB0YXJnZXQsIGNoZWNrcyBmb3IgYWxsb2NhdGlvbiBlcnJvcnMsIGFuZCBoYW5kbGVzIGNsZWFudXAgaW4gZWl0aGVyIGNhc2UuXG5cblRoaXMgaXMgYWxsIGZ1bmN0aW9uYWwsIGFuZCBhcHBlYXJzIHRvIGJlIHJlYWNoYWJsZSB2aWEgY29uZmlnZnMuIE5vIGltbWVkaWF0ZSByZWQgZmxhZ3MganVtcCBvdXQgYXQgbWUuXG5cbktleSBmdW5jdGlvbnM6IGB1c2JnX21ha2VfdHBnYC4gSSdtIGNvbmZpZGVudCBhYm91dCB0aGlzLlxuXG5UaGlzIGlzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIGZvbGxvd2luZyBjb25maWcgb3B0aW9uczogYFVTQl9HQURHRVRgLCBgVVNCX0NPTkZJR0ZTYCwgYFRBUkdFVF9DT1JFYCwgYFVTQl9DT05GSUdGU19GX1RDTWAsIGBVU0JfR0FER0VUX1RBUkdFVGAuXG5cblJlYWR5IHRvIG91dHB1dCB0aGUgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwODYsIk91dHB1dFRva2VucyI6MTUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTI6MTk6NTguMjg4MjM1MTU5WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ1ODQxMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9HQURHRVRcIixcbiAgICBcIlVTQl9DT05GSUdGU1wiLFxuICAgIFwiVEFSR0VUX0NPUkVcIixcbiAgICBcIlVTQl9DT05GSUdGU19GX1RDTVwiLFxuICAgIFwiVVNCX0dBREdFVF9UQVJHRVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1c2JnX21ha2VfdHBnXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvbmZpZ2ZzLWJhc2VkIHNldHVwIGxvZ2ljIChgdXNiZ19tYWtlX3RwZ2ApIGZvciB0aGUgVVNCIFRhcmdldCBDb3JlIE1vZHVsZSAoVENNKSBnYWRnZXQgZnVuY3Rpb24uIEl0IGZpeGVzIGRlcGVuZGVuY3kgbWFuYWdlbWVudCBhbmQgZXJyb3IgaGFuZGxpbmcgd2hlbiBjcmVhdGluZyBhIG5ldyB0YXJnZXQgcG9ydGFsIGdyb3VwLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBjb25maWdmcyBhbmQgaXMgZnVsbHkgZnVuY3Rpb25hbCwgbWFraW5nIGl0IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJUQVJHRVRfQ09SRVwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTX0ZfVENNXCIsXG4gICAgXCJVU0JfR0FER0VUX1RBUkdFVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVzYmdfbWFrZV90cGdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29uZmlnZnMtYmFzZWQgc2V0dXAgbG9naWMgKGB1c2JnX21ha2VfdHBnYCkgZm9yIHRoZSBVU0IgVGFyZ2V0IENvcmUgTW9kdWxlIChUQ00pIGdhZGdldCBmdW5jdGlvbi4gSXQgZml4ZXMgZGVwZW5kZW5jeSBtYW5hZ2VtZW50IGFuZCBlcnJvciBoYW5kbGluZyB3aGVuIGNyZWF0aW5nIGEgbmV3IHRhcmdldCBwb3J0YWwgZ3JvdXAuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGNvbmZpZ2ZzIGFuZCBpcyBmdWxseSBmdW5jdGlvbmFsLCBtYWtpbmcgaXQgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowbl95x[1] Phase: Succeeded StartedAt: 2026-07-29 12:20:10 +0000 UTC FinishedAt: 2026-07-29 12:20:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbl95x[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-29 12:20:10 +0000 UTC FinishedAt: 2026-07-29 12:20:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbl95x[2] Phase: Succeeded StartedAt: 2026-07-29 12:20:10 +0000 UTC FinishedAt: 2026-07-29 16:29:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-29 12:20:10 +0000 UTC FinishedAt: 2026-07-29 16:29:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-29 12:20:10 +0000 UTC FinishedAt: 2026-07-29 12:20:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-29 12:20:10 +0000 UTC FinishedAt: 2026-07-29 12:20:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbl95x/series-workflowbl95x-convert-artifact-4256478712/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-29 12:20:49 +0000 UTC FinishedAt: 2026-07-29 12:42:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-29 12:20:49 +0000 UTC FinishedAt: 2026-07-29 12:42:11 +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:*0310f772-68df-48d2-8e77-d6a2957445e9,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-workflowbl95x/series-workflowbl95x-convert-artifact-4256478712/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": "50a6e7e4-77d9-43b5-a110-b3fc2463ffa7", "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-workflowbl95x/series-workflowbl95x-build-action-3593108142/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-29 12:20:49 +0000 UTC FinishedAt: 2026-07-29 12:42:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*0310f772-68df-48d2-8e77-d6a2957445e9,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-workflowbl95x/series-workflowbl95x-convert-artifact-4256478712/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": "50a6e7e4-77d9-43b5-a110-b3fc2463ffa7", "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-workflowbl95x/series-workflowbl95x-build-action-3593108142/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-29 12:42:11 +0000 UTC FinishedAt: 2026-07-29 12:42:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-29 12:42:11 +0000 UTC FinishedAt: 2026-07-29 12:42:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-29 12:42:11 +0000 UTC FinishedAt: 2026-07-29 12:42:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-29 12:42:11 +0000 UTC FinishedAt: 2026-07-29 12:42:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbl95x/series-workflowbl95x-convert-artifact-3814307935/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-29 12:42:21 +0000 UTC FinishedAt: 2026-07-29 12:44:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-29 12:42:21 +0000 UTC FinishedAt: 2026-07-29 12:44:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*50a6e7e4-77d9-43b5-a110-b3fc2463ffa7,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-workflowbl95x/series-workflowbl95x-build-action-3593108142/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-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-29 12:44:47 +0000 UTC FinishedAt: 2026-07-29 12:44:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-29 12:44:47 +0000 UTC FinishedAt: 2026-07-29 12:44:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-29 12:44:47 +0000 UTC FinishedAt: 2026-07-29 13:05:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-29 12:44:47 +0000 UTC FinishedAt: 2026-07-29 13:05: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:*0310f772-68df-48d2-8e77-d6a2957445e9,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-workflowbl95x/series-workflowbl95x-convert-artifact-3814307935/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": "5794c5d3-f402-43d7-88dd-9aa383f9db91", "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-workflowbl95x/series-workflowbl95x-build-action-858408435/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-29 12:44:47 +0000 UTC FinishedAt: 2026-07-29 13:04:58 +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:*0310f772-68df-48d2-8e77-d6a2957445e9,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-workflowbl95x/series-workflowbl95x-convert-artifact-3814307935/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": "5794c5d3-f402-43d7-88dd-9aa383f9db91", "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-workflowbl95x/series-workflowbl95x-build-action-858408435/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-29 13:05:08 +0000 UTC FinishedAt: 2026-07-29 13:05:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-29 13:05:08 +0000 UTC FinishedAt: 2026-07-29 13:05:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-29 13:05:08 +0000 UTC FinishedAt: 2026-07-29 13:07:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-29 13:05:08 +0000 UTC FinishedAt: 2026-07-29 13:07:06 +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:*5794c5d3-f402-43d7-88dd-9aa383f9db91,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-workflowbl95x/series-workflowbl95x-build-action-858408435/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-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-29 13:07:15 +0000 UTC FinishedAt: 2026-07-29 16:29:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-29 13:07:15 +0000 UTC FinishedAt: 2026-07-29 16:29:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"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:*50a6e7e4-77d9-43b5-a110-b3fc2463ffa7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5794c5d3-f402-43d7-88dd-9aa383f9db91,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-workflowbl95x/series-workflowbl95x-build-action-3593108142/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-workflowbl95x/series-workflowbl95x-build-action-858408435/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-29 13:07:15 +0000 UTC FinishedAt: 2026-07-29 13:07:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-29 13:07:15 +0000 UTC FinishedAt: 2026-07-29 13:07:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"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-workflowbl95x/series-workflowbl95x-convert-artifact-2171071608/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-29 13:07:15 +0000 UTC FinishedAt: 2026-07-29 13:07:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-29 13:07:15 +0000 UTC FinishedAt: 2026-07-29 13:07:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-29 13:07:15 +0000 UTC FinishedAt: 2026-07-29 13:07:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-29 13:07:25 +0000 UTC FinishedAt: 2026-07-29 16:29:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbl95x[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["usbg_make_tpg"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_CONFIGFS","TARGET_CORE","USB_CONFIGFS_F_TCM","USB_GADGET_TARGET"],"series_id":"d713b185-68bb-491f-9207-7d4a8186ba0a","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-29 13:07:25 +0000 UTC FinishedAt: 2026-07-29 16:29:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*50a6e7e4-77d9-43b5-a110-b3fc2463ffa7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5794c5d3-f402-43d7-88dd-9aa383f9db91,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-workflowbl95x/series-workflowbl95x-build-action-3593108142/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-workflowbl95x/series-workflowbl95x-build-action-858408435/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-workflowbl95x/series-workflowbl95x-convert-artifact-2171071608/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,}