Name: series-workflowsb65z Phase: Succeeded StartedAt: 2026-08-03 13:01:19 +0000 UTC FinishedAt: 2026-08-03 16:51:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsb65z[0] Phase: Succeeded StartedAt: 2026-08-03 13:01:19 +0000 UTC FinishedAt: 2026-08-03 13:05:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsb65z[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 13:01:19 +0000 UTC FinishedAt: 2026-08-03 13:05:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGET", "USB_DUMMY_HCD", "USB_CONFIGFS", "USB_CONFIGFS_F_UAC1", "USB_CONFIGFS_F_UAC2", "SND" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGET", "USB_DUMMY_HCD", "USB_CONFIGFS", "USB_CONFIGFS_F_UAC1", "USB_CONFIGFS_F_UAC2", "SND" ], "series_id": "f4adac11-1bec-4fc0-9af5-6657d17a9e2c" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "f_uac1_opts_c_srate_store", "f_uac1_opts_p_srate_store", "f_uac2_opts_c_srate_store", "f_uac2_opts_p_srate_store" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0RVTU1ZX0hDRCYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlMmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTX0ZfVUFDMSYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlNfRl9VQUMyJiMzNDssCiAgICAmIzM0O1NORCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ZfdWFjMV9vcHRzX2Nfc3JhdGVfc3RvcmUmIzM0OywKICAgICYjMzQ7Zl91YWMxX29wdHNfcF9zcmF0ZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtmX3VhYzJfb3B0c19jX3NyYXRlX3N0b3JlJiMzNDssCiAgICAmIzM0O2ZfdWFjMl9vcHRzX3Bfc3JhdGVfc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgY29uZmlnZnMgc3RvcmUgY2FsbGJhY2tzIGZvciBVU0IgQXVkaW8gQ2xhc3MgMSBhbmQgMiBnYWRnZXQgZHJpdmVycy4gVGhlIGxlYWsgb2NjdXJzIGJlY2F1c2UgYHN0cnNlcGAgbW9kaWZpZXMgdGhlIHBvaW50ZXIsIGNhdXNpbmcgYGtmcmVlYCB0byBmcmVlIHRoZSB3cm9uZyBhZGRyZXNzLiBCeSBrZWVwaW5nIHRoZSBvcmlnaW5hbCBwb2ludGVyLCB0aGUgbWVtb3J5IGlzIGNvcnJlY3RseSBmcmVlZC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgY29uZmlnZnMgd2hlbiBjb25maWd1cmluZyBVU0IgZ2FkZ2V0cywgd2hpY2ggaXMgc3VwcG9ydGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB0aGUgZHVtbXkgSENELiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjAzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgM2JkZmYxNGI2YTdhYTNmMzE3MDc5MDA3NmNhOTcxYjU0ZjZkZDUwOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMTM6MDM6MDIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jXG5pbmRleCA4NWM1MDJlOThmNTc3Li5iYTFhOWY1MWM1NDRjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmNcbkBAIC0xNTk1LDYgJiM0MzsxNTk1LDcgQEAgc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbiB7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdHN0cnVjdCBmX3VhYzFfb3B0cyAqb3B0cyA9IHRvX2ZfdWFjMV9vcHRzKGl0ZW0pO1x0XHRcXFxuIFx0Y2hhciAqc3BsaXRfcGFnZSA9IE5VTEw7XHRcdFx0XHRcdFxcXG4mIzQzO1x0Y2hhciAqc3BsaXRfcGFnZV9hbGxvYyA9IE5VTEw7XHRcdFx0XHRcdFxcXG4gXHRpbnQgcmV0ID0gLUVJTlZBTDtcdFx0XHRcdFx0XHRcXFxuIFx0Y2hhciAqdG9rZW47XHRcdFx0XHRcdFx0XHRcXFxuIFx0dTMyIG51bTtcdFx0XHRcdFx0XHRcdFxcXG5AQCAtMTYwOCw3ICYjNDM7MTYwOSwxMiBAQCBzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXHRcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRpID0gMDtcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdG1lbXNldChvcHRzLVx1MDAzZW5hbWUjI3MsIDB4MDAsIHNpemVvZihvcHRzLVx1MDAzZW5hbWUjI3MpKTtcdFx0XFxcbi1cdHNwbGl0X3BhZ2UgPSBrc3RyZHVwKHBhZ2UsIEdGUF9LRVJORUwpO1x0XHRcdFx0XFxcbiYjNDM7XHRzcGxpdF9wYWdlX2FsbG9jID0ga3N0cmR1cChwYWdlLCBHRlBfS0VSTkVMKTtcdFx0XHRcXFxuJiM0MztcdGlmICghc3BsaXRfcGFnZV9hbGxvYykge1x0XHRcdFx0XHRcXFxuJiM0MztcdFx0cmV0ID0gLUVOT01FTTtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0Z290byBlbmQ7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHR9XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0c3BsaXRfcGFnZSA9IHNwbGl0X3BhZ2VfYWxsb2M7XHRcdFx0XHRcdFxcXG4gXHR3aGlsZSAoKHRva2VuID0gc3Ryc2VwKFx1MDAyNnNwbGl0X3BhZ2UsIFwmIzM0OyxcJiMzNDspKSAhPSBOVUxMKSB7XHRcdFxcXG4gXHRcdHJldCA9IGtzdHJ0b3UzMih0b2tlbiwgMCwgXHUwMDI2bnVtKTtcdFx0XHRcXFxuIFx0XHRpZiAocmV0KVx0XHRcdFx0XHRcdFxcXG5AQCAtMTYxOSw3ICYjNDM7MTYyNSw3IEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4gXHR9O1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gZW5kOlx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRrZnJlZShzcGxpdF9wYWdlKTtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGtmcmVlKHNwbGl0X3BhZ2VfYWxsb2MpO1x0XHRcdFx0XHRcXFxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wdHMtXHUwMDNlbG9jayk7XHRcdFx0XHRcdFxcXG4gXHRyZXR1cm4gcmV0O1x0XHRcdFx0XHRcdFx0XFxcbiB9XHRcdFx0XHRcdFx0XHRcdFx0XFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmNcbmluZGV4IDg5Nzc4N2QwODAzYzEuLmM5MmNhYTE0OTQyOGEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuY1xuQEAgLTIwMTMsNiAmIzQzOzIwMTMsNyBAQCBzdGF0aWMgc3NpemVfdCBmX3VhYzJfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXHRcXFxuIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0c3RydWN0IGZfdWFjMl9vcHRzICpvcHRzID0gdG9fZl91YWMyX29wdHMoaXRlbSk7XHRcdFxcXG4gXHRjaGFyICpzcGxpdF9wYWdlID0gTlVMTDtcdFx0XHRcdFx0XFxcbiYjNDM7XHRjaGFyICpzcGxpdF9wYWdlX2FsbG9jID0gTlVMTDtcdFx0XHRcdFx0XFxcbiBcdGludCByZXQgPSAtRUlOVkFMO1x0XHRcdFx0XHRcdFxcXG4gXHRjaGFyICp0b2tlbjtcdFx0XHRcdFx0XHRcdFxcXG4gXHR1MzIgbnVtO1x0XHRcdFx0XHRcdFx0XFxcbkBAIC0yMDI2LDcgJiM0MzsyMDI3LDEyIEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4gXHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdGkgPSAwO1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0bWVtc2V0KG9wdHMtXHUwMDNlbmFtZSMjcywgMHgwMCwgc2l6ZW9mKG9wdHMtXHUwMDNlbmFtZSMjcykpO1x0XHRcXFxuLVx0c3BsaXRfcGFnZSA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7XHRcdFx0XHRcXFxuJiM0MztcdHNwbGl0X3BhZ2VfYWxsb2MgPSBrc3RyZHVwKHBhZ2UsIEdGUF9LRVJORUwpO1x0XHRcdFxcXG4mIzQzO1x0aWYgKCFzcGxpdF9wYWdlX2FsbG9jKSB7XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRyZXQgPSAtRU5PTUVNO1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRnb3RvIGVuZDtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdH1cdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRzcGxpdF9wYWdlID0gc3BsaXRfcGFnZV9hbGxvYztcdFx0XHRcdFx0XFxcbiBcdHdoaWxlICgodG9rZW4gPSBzdHJzZXAoXHUwMDI2c3BsaXRfcGFnZSwgXCYjMzQ7LFwmIzM0OykpICE9IE5VTEwpIHtcdFx0XFxcbiBcdFx0cmV0ID0ga3N0cnRvdTMyKHRva2VuLCAwLCBcdTAwMjZudW0pO1x0XHRcdFxcXG4gXHRcdGlmIChyZXQpXHRcdFx0XHRcdFx0XFxcbkBAIC0yMDM3LDcgJiM0MzsyMDQzLDcgQEAgc3RhdGljIHNzaXplX3QgZl91YWMyX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbiBcdH07XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBlbmQ6XHRcdFx0XHRcdFx0XHRcdFx0XFxcbi1cdGtmcmVlKHNwbGl0X3BhZ2UpO1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0a2ZyZWUoc3BsaXRfcGFnZV9hbGxvYyk7XHRcdFx0XHRcdFxcXG4gXHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2Vsb2NrKTtcdFx0XHRcdFx0XFxcbiBcdHJldHVybiByZXQ7XHRcdFx0XHRcdFx0XHRcXFxuIH1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjAzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9EVU1NWV9IQ0QmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGU19GX1VBQzEmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTX0ZfVUFDMiYjMzQ7LAogICAgJiMzNDtTTkQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmX3VhYzFfb3B0c19jX3NyYXRlX3N0b3JlJiMzNDssCiAgICAmIzM0O2ZfdWFjMV9vcHRzX3Bfc3JhdGVfc3RvcmUmIzM0OywKICAgICYjMzQ7Zl91YWMyX29wdHNfY19zcmF0ZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtmX3VhYzJfb3B0c19wX3NyYXRlX3N0b3JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGNvbmZpZ2ZzIHN0b3JlIGNhbGxiYWNrcyBmb3IgVVNCIEF1ZGlvIENsYXNzIDEgYW5kIDIgZ2FkZ2V0IGRyaXZlcnMuIFRoZSBsZWFrIG9jY3VycyBiZWNhdXNlIGBzdHJzZXBgIG1vZGlmaWVzIHRoZSBwb2ludGVyLCBjYXVzaW5nIGBrZnJlZWAgdG8gZnJlZSB0aGUgd3JvbmcgYWRkcmVzcy4gQnkga2VlcGluZyB0aGUgb3JpZ2luYWwgcG9pbnRlciwgdGhlIG1lbW9yeSBpcyBjb3JyZWN0bHkgZnJlZWQuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIGNvbmZpZ2ZzIHdoZW4gY29uZmlndXJpbmcgVVNCIGdhZGdldHMsIHdoaWNoIGlzIHN1cHBvcnRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgdGhlIGR1bW15IEhDRC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNiZGZmMTRiNmE3YWEzZjMxNzA3OTAwNzZjYTk3MWI1NGY2ZGQ1MDkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAzIDEzOjAzOjAyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jCmluZGV4IDg1YzUwMmU5OGY1NzcuLmJhMWE5ZjUxYzU0NGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMKQEAgLTE1OTUsNiAmIzQzOzE1OTUsNyBAQCBzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sCVwKIHsJCQkJCQkJCQlcCiAJc3RydWN0IGZfdWFjMV9vcHRzICpvcHRzID0gdG9fZl91YWMxX29wdHMoaXRlbSk7CQlcCiAJY2hhciAqc3BsaXRfcGFnZSA9IE5VTEw7CQkJCQlcCiYjNDM7CWNoYXIgKnNwbGl0X3BhZ2VfYWxsb2MgPSBOVUxMOwkJCQkJXAogCWludCByZXQgPSAtRUlOVkFMOwkJCQkJCVwKIAljaGFyICp0b2tlbjsJCQkJCQkJXAogCXUzMiBudW07CQkJCQkJCVwKQEAgLTE2MDgsNyAmIzQzOzE2MDksMTIgQEAgc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLAlcCiAJCQkJCQkJCQlcCiAJaSA9IDA7CQkJCQkJCQlcCiAJbWVtc2V0KG9wdHMtJmd0O25hbWUjI3MsIDB4MDAsIHNpemVvZihvcHRzLSZndDtuYW1lIyNzKSk7CQlcCi0Jc3BsaXRfcGFnZSA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7CQkJCVwKJiM0MzsJc3BsaXRfcGFnZV9hbGxvYyA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7CQkJXAomIzQzOwlpZiAoIXNwbGl0X3BhZ2VfYWxsb2MpIHsJCQkJCVwKJiM0MzsJCXJldCA9IC1FTk9NRU07CQkJCQkJXAomIzQzOwkJZ290byBlbmQ7CQkJCQkJXAomIzQzOwl9CQkJCQkJCQlcCiYjNDM7CXNwbGl0X3BhZ2UgPSBzcGxpdF9wYWdlX2FsbG9jOwkJCQkJXAogCXdoaWxlICgodG9rZW4gPSBzdHJzZXAoJmFtcDtzcGxpdF9wYWdlLCAmIzM0OywmIzM0OykpICE9IE5VTEwpIHsJCVwKIAkJcmV0ID0ga3N0cnRvdTMyKHRva2VuLCAwLCAmYW1wO251bSk7CQkJXAogCQlpZiAocmV0KQkJCQkJCVwKQEAgLTE2MTksNyAmIzQzOzE2MjUsNyBAQCBzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sCVwKIAl9OwkJCQkJCQkJXAogCQkJCQkJCQkJXAogZW5kOgkJCQkJCQkJCVwKLQlrZnJlZShzcGxpdF9wYWdlKTsJCQkJCQlcCiYjNDM7CWtmcmVlKHNwbGl0X3BhZ2VfYWxsb2MpOwkJCQkJXAogCW11dGV4X3VubG9jaygmYW1wO29wdHMtJmd0O2xvY2spOwkJCQkJXAogCXJldHVybiByZXQ7CQkJCQkJCVwKIH0JCQkJCQkJCQlcCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMKaW5kZXggODk3Nzg3ZDA4MDNjMS4uYzkyY2FhMTQ5NDI4YSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYwpAQCAtMjAxMyw2ICYjNDM7MjAxMyw3IEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwJXAogewkJCQkJCQkJCVwKIAlzdHJ1Y3QgZl91YWMyX29wdHMgKm9wdHMgPSB0b19mX3VhYzJfb3B0cyhpdGVtKTsJCVwKIAljaGFyICpzcGxpdF9wYWdlID0gTlVMTDsJCQkJCVwKJiM0MzsJY2hhciAqc3BsaXRfcGFnZV9hbGxvYyA9IE5VTEw7CQkJCQlcCiAJaW50IHJldCA9IC1FSU5WQUw7CQkJCQkJXAogCWNoYXIgKnRva2VuOwkJCQkJCQlcCiAJdTMyIG51bTsJCQkJCQkJXApAQCAtMjAyNiw3ICYjNDM7MjAyNywxMiBAQCBzdGF0aWMgc3NpemVfdCBmX3VhYzJfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sCVwKIAkJCQkJCQkJCVwKIAlpID0gMDsJCQkJCQkJCVwKIAltZW1zZXQob3B0cy0mZ3Q7bmFtZSMjcywgMHgwMCwgc2l6ZW9mKG9wdHMtJmd0O25hbWUjI3MpKTsJCVwKLQlzcGxpdF9wYWdlID0ga3N0cmR1cChwYWdlLCBHRlBfS0VSTkVMKTsJCQkJXAomIzQzOwlzcGxpdF9wYWdlX2FsbG9jID0ga3N0cmR1cChwYWdlLCBHRlBfS0VSTkVMKTsJCQlcCiYjNDM7CWlmICghc3BsaXRfcGFnZV9hbGxvYykgewkJCQkJXAomIzQzOwkJcmV0ID0gLUVOT01FTTsJCQkJCQlcCiYjNDM7CQlnb3RvIGVuZDsJCQkJCQlcCiYjNDM7CX0JCQkJCQkJCVwKJiM0MzsJc3BsaXRfcGFnZSA9IHNwbGl0X3BhZ2VfYWxsb2M7CQkJCQlcCiAJd2hpbGUgKCh0b2tlbiA9IHN0cnNlcCgmYW1wO3NwbGl0X3BhZ2UsICYjMzQ7LCYjMzQ7KSkgIT0gTlVMTCkgewkJXAogCQlyZXQgPSBrc3RydG91MzIodG9rZW4sIDAsICZhbXA7bnVtKTsJCQlcCiAJCWlmIChyZXQpCQkJCQkJXApAQCAtMjAzNyw3ICYjNDM7MjA0Myw3IEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwJXAogCX07CQkJCQkJCQlcCiAJCQkJCQkJCQlcCiBlbmQ6CQkJCQkJCQkJXAotCWtmcmVlKHNwbGl0X3BhZ2UpOwkJCQkJCVwKJiM0MzsJa2ZyZWUoc3BsaXRfcGFnZV9hbGxvYyk7CQkJCQlcCiAJbXV0ZXhfdW5sb2NrKCZhbXA7b3B0cy0mZ3Q7bG9jayk7CQkJCQlcCiAJcmV0dXJuIHJldDsJCQkJCQkJXAogfQkJCQkJCQkJCVwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAyNwoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDIwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBVU0IgQXVkaW8gR2FkZ2V0IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0b3VjaGluZyBgZl91YWMxLmNgIGFuZCBgZl91YWMyLmNgIOKAkyB0aGF04oCZcyBVU0IgQXVkaW8gQ2xhc3MgZ2FkZ2V0IGNvZGUuIFN0cmFpZ2h0IGF3YXksIEkgc2VlIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBhIG1lbW9yeSBsZWFrLCB3aGljaCBpcyBhbHdheXMgd29ydGggYSBjbG9zZXIgbG9vay4gSXQgc2VlbXMgdGhpcyBsZWFrIGlzIHRpZWQgdG8gYSBtYWNybywgc29tZXRoaW5nIGxpa2UgYFVBQzFfQVRUUklCVVRFX1NUUklOR2AuIFRoaXMgbWFjcm8gaXMgZ2VuZXJhdGluZyBmdW5jdGlvbnMsIHByb2JhYmx5IHRvIGhhbmRsZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFuZCB0aGV5IGFyZSBuYW1lZCBgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmVgIGFuZCBgZl91YWMyX29wdHNfIyNuYW1lIyNfc3RvcmVgLgoKVGhlIGNydXggb2YgdGhlIHByb2JsZW0gc2VlbXMgdG8gYmUgYHN0cnNlcGAuIEFoLCB5ZXMsIEkga25vdyB0aGlzIG9uZSwgaXQgbW9kaWZpZXMgdGhlIGlucHV0IHN0cmluZyBpbiBwbGFjZS4gU28gdGhlIG9yaWdpbmFsIGNvZGUgd2FzIHByb2JhYmx5IHBhc3NpbmcgYHNwbGl0X3BhZ2VgIHRvIGBzdHJzZXBgLCBhbmQgdGhlbiBsYXRlciBjYWxsaW5nIGBrZnJlZShzcGxpdF9wYWdlKWAuIFRoZSBpc3N1ZSBpcywgYHN0cnNlcGAgaXMgY2hhbmdpbmcgdGhlIGNvbnRlbnRzIG9mIGBzcGxpdF9wYWdlYCwgc28gYGtmcmVlYCB3b3VsZCBmcmVlIGFuIGluY29ycmVjdCBwb2ludGVyIG9yLCBwb3RlbnRpYWxseSwgdHJ5IHRvIGZyZWUgTlVMTCBpZiB0aGUgc3RyaW5nIHdhcyBleGhhdXN0ZWQuIFRoaXMgcGF0Y2ggYWRkcmVzc2VzIHRoYXQgYnkga2VlcGluZyBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIHBvaW50ZXIsIGxldCYjMzk7cyBjYWxsIGl0IGBzcGxpdF9wYWdlX2FsbG9jYCwgYW5kIGVuc3VyaW5nIHRoYXQmIzM5O3Mgd2hhdCBnZXRzIHBhc3NlZCB0byBga2ZyZWVgLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBhbmQgc29saWQgZml4LgoKTm93LCBJJiMzOTtkIGxpa2UgdG8gdW5kZXJzdGFuZCB0aGUgKnNjb3BlKiBvZiB0aGlzIGNoYW5nZSBiZXR0ZXIuIEl0IHdvdWxkIGJlIGhlbHBmdWwgdG8gc2VlIGV4YWN0bHkgKndoYXQqIHRob3NlIGdlbmVyYXRlZCBgX3N0b3JlYCBmdW5jdGlvbnMgYXJlIGRvaW5nLiBJJiMzOTtsbCBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VhcmNoIGZvciBhbGwgb2NjdXJyZW5jZXMgb2YgZnVuY3Rpb25zIG1hdGNoaW5nIHRoZSBwYXR0ZXJuIGBmX3VhYzFfb3B0c18uKl9zdG9yZWAgYW5kIGBmX3VhYzJfb3B0c18uKl9zdG9yZWAuIFNlZWluZyB0aGUgZ2VuZXJhdGVkIGZ1bmN0aW9ucyB3aWxsIHByb3ZpZGUgY3J1Y2lhbCBjb250ZXh0IGFuZCBhbGxvdyBtZSB0byBhc3Nlc3MgdGhlIG92ZXJhbGwgaW1wYWN0IG9mIHRoaXMgZml4LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZfdWFjMV9vcHRzXy4qX3N0b3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNTI4PXN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3Nob3coXHRcdFx0XHRcXFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNTQxLVx0XHRcdFx0XHRcdFx0XHRcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTU0MjpzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShcdFx0XHRcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU0My1cdFx0XHRcdFx0ICBzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXHRcXFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNTcxPXN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU5Mi1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE1OTM6c3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNTk0LVx0XHRcdFx0XHQgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBsZW4pXHRcXFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNjM2PXN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY0OC1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2NDk6c3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjUwLVx0XHRcdFx0XHQgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBsZW4pXHRcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNjYKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgTWFjcm8tR2VuZXJhdGVkIEZ1bmN0aW9uIENvZGUqKgoKQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIFRoZSBpbml0aWFsIHF1ZXN0aW9uIGlzICYjMzQ7d2hhdCYjMzk7cyB0aGUgdW5kZXJseWluZyBjb2RlIGJlaW5nIGdlbmVyYXRlZCBieSB0aGVzZSBtYWNyb3M/JiMzNDsgSSYjMzk7bSB0aGlua2luZywgJiMzNDtMZXQmIzM5O3MgY3V0IHJpZ2h0IHRvIHRoZSBjaGFzZSBhbmQgZmluZCBvdXQuJiMzNDsgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlICphY3R1YWwqIGltcGxlbWVudGF0aW9uIG9mIHRoZXNlIGZ1bmN0aW9ucy4gSSYjMzk7bSBub3QgY29udGVudCB3aXRoIGp1c3Qga25vd2luZyB0aGUgZnVuY3Rpb24mIzM5O3Mgc2lnbmF0dXJlIGFuZCBkb2N1bWVudGF0aW9uOyBJIG5lZWQgdG8gc2VlIHRoZSBuaXR0eS1ncml0dHkgZGV0YWlscyBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUuIEtub3dpbmcgdGhlIHNvdXJjZSwgSSBjYW4gZGVkdWNlIG9wdGltaXphdGlvbiBwb3NzaWJpbGl0aWVzIGFuZCBpbmhlcmVudCBsaW1pdGF0aW9ucyBvZiB0aGUgY29kZSwgYXMgd2VsbCBhcyB3aGVyZSB0byBzdGFydCBkZWJ1Z2dpbmcgaW4gdGhlIHVuZm9ydHVuYXRlIGV2ZW50IHRoYXQgdGhlcmUmIzM5O3MgYSBwcm9ibGVtLiBUaGlzIG1lYW5zIEkgbmVlZCB0byBieXBhc3MgdGhlIGFic3RyYWN0aW9uIG9mIHRoZSBtYWNybywgYW5kIGRlY29uc3RydWN0IHRoZSBjb2RlIGZvciBkZXRhaWxlZCBhbmFseXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtVQUMxX0FUVFJJQlVURSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTUyNT1zdGF0aWMgY29uc3QgY2hhciAqYm9vbF9mbXQgPSBcJiMzNDsldVxcblwmIzM0OztcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNTI2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE1Mjc6I2RlZmluZSBVQUMxX0FUVFJJQlVURSh0eXBlLCBuYW1lKVx0XHRcdFx0XHRcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1Mjgtc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc2hvdyhcdFx0XHRcdFxcXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jPTE2MzM9Q09ORklHRlNfQVRUUihmX3VhYzFfb3B0c18sIG5hbWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTYzNC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjM1OiNkZWZpbmUgVUFDMV9BVFRSSUJVVEVfU1RSSU5HKG5hbWUpXHRcdFx0XHRcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTYzNi1zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jPTE2Njk9Q09ORklHRlNfQVRUUihmX3VhYzFfb3B0c18sIG5hbWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY3MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjcxOlVBQzFfQVRUUklCVVRFKHUzMiwgY19jaG1hc2spO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NzItVUFDMV9SQVRFX0FUVFJJQlVURShjX3NyYXRlKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjczOlVBQzFfQVRUUklCVVRFKHUzMiwgY19zc2l6ZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY3NDpVQUMxX0FUVFJJQlVURSh1MzIsIHBfY2htYXNrKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjc1LVVBQzFfUkFURV9BVFRSSUJVVEUocF9zcmF0ZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY3NjpVQUMxX0FUVFJJQlVURSh1MzIsIHBfc3NpemUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2Nzc6VUFDMV9BVFRSSUJVVEUodTMyLCByZXFfbnVtYmVyKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjc4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2Nzk6VUFDMV9BVFRSSUJVVEUoYm9vbCwgcF9tdXRlX3ByZXNlbnQpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2ODA6VUFDMV9BVFRSSUJVVEUoYm9vbCwgcF92b2x1bWVfcHJlc2VudCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY4MTpVQUMxX0FUVFJJQlVURShzMTYsIHBfdm9sdW1lX21pbik7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY4MjpVQUMxX0FUVFJJQlVURShzMTYsIHBfdm9sdW1lX21heCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY4MzpVQUMxX0FUVFJJQlVURShzMTYsIHBfdm9sdW1lX3Jlcyk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY4NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjg1OlVBQzFfQVRUUklCVVRFKGJvb2wsIGNfbXV0ZV9wcmVzZW50KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjg2OlVBQzFfQVRUUklCVVRFKGJvb2wsIGNfdm9sdW1lX3ByZXNlbnQpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2ODc6VUFDMV9BVFRSSUJVVEUoczE2LCBjX3ZvbHVtZV9taW4pO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2ODg6VUFDMV9BVFRSSUJVVEUoczE2LCBjX3ZvbHVtZV9tYXgpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2ODk6VUFDMV9BVFRSSUJVVEUoczE2LCBjX3ZvbHVtZV9yZXMpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2OTAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY5MTpVQUMxX0FUVFJJQlVURV9TVFJJTkcoZnVuY3Rpb25fbmFtZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY5Mi1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjkzOlVBQzFfQVRUUklCVVRFX1NUUklORyhwX2l0X25hbWUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2OTQ6VUFDMV9BVFRSSUJVVEVfU1RSSU5HKHBfaXRfY2hfbmFtZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY5NTpVQUMxX0FUVFJJQlVURV9TVFJJTkcocF9vdF9uYW1lKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjk2OlVBQzFfQVRUUklCVVRFX1NUUklORyhwX2Z1X3ZvbF9uYW1lKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjk3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2OTg6VUFDMV9BVFRSSUJVVEVfU1RSSU5HKGNfaXRfbmFtZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY5OTpVQUMxX0FUVFJJQlVURV9TVFJJTkcoY19pdF9jaF9uYW1lKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNzAwOlVBQzFfQVRUUklCVVRFX1NUUklORyhjX290X25hbWUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE3MDE6VUFDMV9BVFRSSUJVVEVfU1RSSU5HKGNfZnVfdm9sX25hbWUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE3MDItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg3MQoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2gmIzM5O3MgSW1wYWN0KioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIGBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZWAgZnVuY3Rpb24uIFJpZ2h0LCBhbmQgdGhhdCBmdW5jdGlvbiBpcyBnZW5lcmF0ZWQgYnkgdGhlIGBVQUMxX1JBVEVfQVRUUklCVVRFYCBtYWNyby4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhbmQgd2hhdCB0aGlzIG1hY3JvIGlzIGRvaW5nLCBzbyBJJiMzOTtsbCBqdW1wIHN0cmFpZ2h0IHRvIGxpbmUgMTU5NSB3aXRoaW4gYGZfdWFjMS5jYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgbWFjcm8gZGVmaW5pdGlvbiBzaG91bGQgYmUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBoYXBwZW5pbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlYCBmdW5jdGlvbiBhbmQgaG93IHRoZSBtYWNybyBpbnRlcmFjdHMgdG8gZGV0ZXJtaW5lIHdoYXQgaW1wbGljYXRpb25zIHRoaXMgcGF0Y2ggaGFzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTU3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTU3MDpcdCNkZWZpbmUgVUFDMV9SQVRFX0FUVFJJQlVURShuYW1lKVx0XHRcdFx0XHRcXFxuMTU3MTpcdHN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbjE1NzI6XHRcdFx0XHRcdFx0IGNoYXIgKnBhZ2UpXHRcdFx0XFxcbjE1NzM6XHR7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbjE1NzQ6XHRcdHN0cnVjdCBmX3VhYzFfb3B0cyAqb3B0cyA9IHRvX2ZfdWFjMV9vcHRzKGl0ZW0pO1x0XHRcXFxuMTU3NTpcdFx0aW50IHJlc3VsdCA9IDA7XHRcdFx0XHRcdFx0XHRcXFxuMTU3NjpcdFx0aW50IGk7XHRcdFx0XHRcdFx0XHRcdFxcXG4xNTc3Olx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbjE1Nzg6XHRcdG11dGV4X2xvY2soXHUwMDI2b3B0cy1cdTAwM2Vsb2NrKTtcdFx0XHRcdFx0XFxcbjE1Nzk6XHRcdHBhZ2VbMF0gPSAmIzM5O1xcMCYjMzk7O1x0XHRcdFx0XHRcdFx0XFxcbjE1ODA6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFVBQ19NQVhfUkFURVM7IGkmIzQzOyYjNDM7KSB7XHRcdFx0XHRcXFxuMTU4MTpcdFx0XHRpZiAob3B0cy1cdTAwM2VuYW1lIyNzW2ldID09IDApXHRcdFx0XHRcXFxuMTU4MjpcdFx0XHRcdGJyZWFrO1x0XHRcdFx0XHRcdFxcXG4xNTgzOlx0XHRcdHJlc3VsdCAmIzQzOz0gc3ByaW50ZihwYWdlICYjNDM7IHN0cmxlbihwYWdlKSwgXCYjMzQ7JXUsXCYjMzQ7LFx0XHRcXFxuMTU4NDpcdFx0XHRcdFx0b3B0cy1cdTAwM2VuYW1lIyNzW2ldKTtcdFx0XHRcXFxuMTU4NTpcdFx0fVx0XHRcdFx0XHRcdFx0XHRcXFxuMTU4NjpcdFx0aWYgKHN0cmxlbihwYWdlKSBcdTAwM2UgMClcdFx0XHRcdFx0XHRcXFxuMTU4NzpcdFx0XHRwYWdlW3N0cmxlbihwYWdlKSAtIDFdID0gJiMzOTtcXG4mIzM5OztcdFx0XHRcdFxcXG4xNTg4Olx0XHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2Vsb2NrKTtcdFx0XHRcdFx0XFxcbjE1ODk6XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuMTU5MDpcdFx0cmV0dXJuIHJlc3VsdDtcdFx0XHRcdFx0XHRcdFxcXG4xNTkxOlx0fVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4xNTkyOlx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbjE1OTM6XHRzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXHRcXFxuMTU5NDpcdFx0XHRcdFx0XHQgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBsZW4pXHRcXFxuMTU5NTpcdHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuMTU5NjpcdFx0c3RydWN0IGZfdWFjMV9vcHRzICpvcHRzID0gdG9fZl91YWMxX29wdHMoaXRlbSk7XHRcdFxcXG4xNTk3Olx0XHRjaGFyICpzcGxpdF9wYWdlID0gTlVMTDtcdFx0XHRcdFx0XFxcbjE1OTg6XHRcdGNoYXIgKnNwbGl0X3BhZ2VfYWxsb2MgPSBOVUxMO1x0XHRcdFx0XHRcXFxuMTU5OTpcdFx0aW50IHJldCA9IC1FSU5WQUw7XHRcdFx0XHRcdFx0XFxcbjE2MDA6XHRcdGNoYXIgKnRva2VuO1x0XHRcdFx0XHRcdFx0XFxcbjE2MDE6XHRcdHUzMiBudW07XHRcdFx0XHRcdFx0XHRcXFxuMTYwMjpcdFx0aW50IGk7XHRcdFx0XHRcdFx0XHRcdFxcXG4xNjAzOlx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbjE2MDQ6XHRcdG11dGV4X2xvY2soXHUwMDI2b3B0cy1cdTAwM2Vsb2NrKTtcdFx0XHRcdFx0XFxcbjE2MDU6XHRcdGlmIChvcHRzLVx1MDAzZXJlZmNudCkge1x0XHRcdFx0XHRcdFxcXG4xNjA2Olx0XHRcdHJldCA9IC1FQlVTWTtcdFx0XHRcdFx0XHRcXFxuMTYwNzpcdFx0XHRnb3RvIGVuZDtcdFx0XHRcdFx0XHRcXFxuMTYwODpcdFx0fVx0XHRcdFx0XHRcdFx0XHRcXFxuMTYwOTpcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4xNjEwOlx0XHRpID0gMDtcdFx0XHRcdFx0XHRcdFx0XFxcbjE2MTE6XHRcdG1lbXNldChvcHRzLVx1MDAzZW5hbWUjI3MsIDB4MDAsIHNpemVvZihvcHRzLVx1MDAzZW5hbWUjI3MpKTtcdFx0XFxcbjE2MTI6XHRcdHNwbGl0X3BhZ2VfYWxsb2MgPSBrc3RyZHVwKHBhZ2UsIEdGUF9LRVJORUwpO1x0XHRcdFxcXG4xNjEzOlx0XHRpZiAoIXNwbGl0X3BhZ2VfYWxsb2MpIHtcdFx0XHRcdFx0XFxcbjE2MTQ6XHRcdFx0cmV0ID0gLUVOT01FTTtcdFx0XHRcdFx0XHRcXFxuMTYxNTpcdFx0XHRnb3RvIGVuZDtcdFx0XHRcdFx0XHRcXFxuMTYxNjpcdFx0fVx0XHRcdFx0XHRcdFx0XHRcXFxuMTYxNzpcdFx0c3BsaXRfcGFnZSA9IHNwbGl0X3BhZ2VfYWxsb2M7XHRcdFx0XHRcdFxcXG4xNjE4Olx0XHR3aGlsZSAoKHRva2VuID0gc3Ryc2VwKFx1MDAyNnNwbGl0X3BhZ2UsIFwmIzM0OyxcJiMzNDspKSAhPSBOVUxMKSB7XHRcdFxcXG4xNjE5Olx0XHRcdHJldCA9IGtzdHJ0b3UzMih0b2tlbiwgMCwgXHUwMDI2bnVtKTtcdFx0XHRcXFxuMTYyMDpcdFx0XHRpZiAocmV0KVx0XHRcdFx0XHRcdFxcXG4xNjIxOlx0XHRcdFx0Z290byBlbmQ7XHRcdFx0XHRcdFxcXG4xNjIyOlx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbjE2MjM6XHRcdFx0b3B0cy1cdTAwM2VuYW1lIyNzW2kmIzQzOyYjNDM7XSA9IG51bTtcdFx0XHRcdFxcXG4xNjI0Olx0XHRcdHJldCA9IGxlbjtcdFx0XHRcdFx0XHRcXFxuMTYyNTpcdFx0fTtcdFx0XHRcdFx0XHRcdFx0XFxcbjE2MjY6XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuMTYyNzpcdGVuZDpcdFx0XHRcdFx0XHRcdFx0XHRcXFxuMTYyODpcdFx0a2ZyZWUoc3BsaXRfcGFnZV9hbGxvYyk7XHRcdFx0XHRcdFxcXG4xNjI5Olx0XHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2Vsb2NrKTtcdFx0XHRcdFx0XFxcbjE2MzA6XHRcdHJldHVybiByZXQ7XHRcdFx0XHRcdFx0XHRcXFxuMTYzMTpcdH1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuMTYzMjpcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4xNjMzOlx0Q09ORklHRlNfQVRUUihmX3VhYzFfb3B0c18sIG5hbWUpXG4xNjM0Olx0XG4xNjM1Olx0I2RlZmluZSBVQUMxX0FUVFJJQlVURV9TVFJJTkcobmFtZSlcdFx0XHRcdFx0XFxcbjE2MzY6XHRzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4xNjM3Olx0XHRcdFx0XHRcdCBjaGFyICpwYWdlKVx0XHRcdFxcXG4xNjM4Olx0e1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4xNjM5Olx0XHRzdHJ1Y3QgZl91YWMxX29wdHMgKm9wdHMgPSB0b19mX3VhYzFfb3B0cyhpdGVtKTtcdFx0XFxcbjE2NDA6XHRcdGludCByZXN1bHQ7XHRcdFx0XHRcdFx0XHRcXFxuMTY0MTpcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4xNjQyOlx0XHRtdXRleF9sb2NrKFx1MDAyNm9wdHMtXHUwMDNlbG9jayk7XHRcdFx0XHRcdFxcXG4xNjQzOlx0XHRyZXN1bHQgPSBzeXNmc19lbWl0KHBhZ2UsIFwmIzM0OyVzXCYjMzQ7LCBvcHRzLVx1MDAzZW5hbWUpOyAgICAgICAgXHQgICAgICAgIFxcXG4xNjQ0Olx0XHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2Vsb2NrKTtcdFx0XHRcdFx0XFxcbjE2NDU6XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuMTY0NjpcdFx0cmV0dXJuIHJlc3VsdDtcdFx0XHRcdFx0XHRcdFxcXG4xNjQ3Olx0fVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4xNjQ4Olx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbjE2NDk6XHRzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXHRcXFxuMTY1MDpcdFx0XHRcdFx0XHQgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBsZW4pXHRcXFxuMTY1MTpcdHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuMTY1MjpcdFx0c3RydWN0IGZfdWFjMV9vcHRzICpvcHRzID0gdG9fZl91YWMxX29wdHMoaXRlbSk7XHRcdFxcXG4xNjUzOlx0XHRpbnQgcmV0ID0gMDtcdFx0XHRcdFx0XHRcdFxcXG4xNjU0Olx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbjE2NTU6XHRcdG11dGV4X2xvY2soXHUwMDI2b3B0cy1cdTAwM2Vsb2NrKTtcdFx0XHRcdFx0XFxcbjE2NTY6XHRcdGlmIChvcHRzLVx1MDAzZXJlZmNudCkge1x0XHRcdFx0XHRcdFxcXG4xNjU3Olx0XHRcdHJldCA9IC1FQlVTWTtcdFx0XHRcdFx0XHRcXFxuMTY1ODpcdFx0XHRnb3RvIGVuZDtcdFx0XHRcdFx0XHRcXFxuMTY1OTpcdFx0fVx0XHRcdFx0XHRcdFx0XHRcXFxuMTY2MDpcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4xNjYxOlx0XHRyZXQgPSBzY25wcmludGYob3B0cy1cdTAwM2VuYW1lLCBtaW4oc2l6ZW9mKG9wdHMtXHUwMDNlbmFtZSksIGxlbiksXHRcXFxuMTY2MjpcdFx0XHRcdFwmIzM0OyVzXCYjMzQ7LCBwYWdlKTtcdFx0XHRcdFx0XFxcbjE2NjM6XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuMTY2NDpcdGVuZDpcdFx0XHRcdFx0XHRcdFx0XHRcXFxuMTY2NTpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wdHMtXHUwMDNlbG9jayk7XHRcdFx0XHRcdFxcXG4xNjY2Olx0XHRyZXR1cm4gcmV0O1x0XHRcdFx0XHRcdFx0XFxcbjE2Njc6XHR9XHRcdFx0XHRcdFx0XHRcdFx0XFxcbjE2Njg6XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuMTY2OTpcdENPTkZJR0ZTX0FUVFIoZl91YWMxX29wdHNfLCBuYW1lKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3NTIKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVQUMxIFJhdGUgQXR0cmlidXRlcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBzcGVjaWZpYyByYXRlIGF0dHJpYnV0ZSBkZWZpbmVkIGFzIGBVQUMxX1JBVEVfQVRUUklCVVRFKG5hbWUpYC4gUmlnaHQgYXdheSwgSSBzZWUgdHdvIGtleSBpbnN0YW5jZXMgb2YgdGhpcyBhdHRyaWJ1dGU6IGBVQUMxX1JBVEVfQVRUUklCVVRFKGNfc3JhdGUpYCBhbmQgYFVBQzFfUkFURV9BVFRSSUJVVEUocF9zcmF0ZSlgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoZXNlIGFyZSBsaWtlbHkgcmVsYXRlZCB0byBzb21lIGtpbmQgb2Ygc2FtcGxlIHJhdGUg4oCTIHBlcmhhcHMgJiMzOTtjJiMzOTsgZm9yIGNhcHR1cmUgYW5kICYjMzk7cCYjMzk7IGZvciBwbGF5YmFjaywgb3Igc29tZXRoaW5nIGFsb25nIHRob3NlIGxpbmVzLgoKTm93LCB3aXRoIHRob3NlIGF0dHJpYnV0ZXMgaW4gcGxhY2UsIHRoZSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9ucyBtdXN0IGJlIGBmX3VhYzFfb3B0c19jX3NyYXRlX3N0b3JlYCBhbmQgYGZfdWFjMV9vcHRzX3Bfc3JhdGVfc3RvcmVgLiBUaGUgbmFtaW5nIGNvbnZlbnRpb24gaXMgcHJldHR5IGNsZWFyOiBgZl91YWMxX29wdHNfLi4uX3N0b3JlYCwgd2l0aCAmIzM0Oy4uLl9zdG9yZSYjMzQ7IGZ1bmN0aW9ucy4gVGhlc2UgZnVuY3Rpb25zIGFyZSB1bmRvdWJ0ZWRseSBoYW5kbGluZyB0aGUgc3RvcmFnZSBvciBzZXR0aW5nIG9mIHRoZSBjYXB0dXJlIGFuZCBwbGF5YmFjayBzYW1wbGUgcmF0ZXMsIHByZXN1bWFibHkgd2l0aGluIHNvbWUga2luZCBvZiBvcHRpb25zIHN0cnVjdHVyZSBzcGVjaWZpYyB0byBVQUMxLiBUaGF0JiMzOTtzIGdvb2QgcHJhY3RpY2UuCgpJIGFsc28gaGF2ZSBhbiBpbmRpY2F0b3IgZm9yIGBmX3VhYzIuY2AsIHNvIHRoZXJlIGFyZSBsaWtlbHkgc2ltaWxhciByYXRlIGF0dHJpYnV0ZXMgYW5kIGZ1bmN0aW9ucyBpbiBgZl91YWMyLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtVQUMyX1JBVEVfQVRUUklCVVRFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYz0xOTg2PUNPTkZJR0ZTX0FUVFIoZl91YWMyX29wdHNfLCBuYW1lKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jLTE5ODctXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM6MTk4ODojZGVmaW5lIFVBQzJfUkFURV9BVFRSSUJVVEUobmFtZSlcdFx0XHRcdFx0XFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0xOTg5LXN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM9MjA5Mj1VQUMyX0FUVFJJQlVURSh1MzIsIHBfY2htYXNrKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYzoyMDkzOlVBQzJfUkFURV9BVFRSSUJVVEUocF9zcmF0ZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMtMjA5NC1VQUMyX0FUVFJJQlVURSh1MzIsIHBfc3NpemUpO1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYz0yMDk2PVVBQzJfQVRUUklCVVRFKHUzMiwgY19jaG1hc2spO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jOjIwOTc6VUFDMl9SQVRFX0FUVFJJQlVURShjX3NyYXRlKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0yMDk4LVVBQzJfQVRUUklCVVRFX1NZTkMoY19zeW5jKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODU1MQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFVTQiBBdWRpbyBDbGFzcyBHYWRnZXQgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGVzZSBmdW5jdGlvbnMgaW4gbWluZDogYGZfdWFjMV9vcHRzX2Nfc3JhdGVfc3RvcmVgLCBgZl91YWMxX29wdHNfcF9zcmF0ZV9zdG9yZWAsIGBmX3VhYzJfb3B0c19jX3NyYXRlX3N0b3JlYCwgYW5kIGBmX3VhYzJfb3B0c19wX3NyYXRlX3N0b3JlYC4gSW1tZWRpYXRlbHksIEkgc2VlIHRoYXQgdGhleSYjMzk7cmUgYWxsIGBjb25maWdmc2Agc3RvcmUgY2FsbGJhY2tzLCBzcGVjaWZpY2FsbHkgZm9yIFVTQiBBdWRpbyBDbGFzcyAxIGFuZCAyIGdhZGdldHMuIFRoaXMgbWVhbnMgdGhleSBhcmUgaW52b2x2ZWQgaW4gaG93IHRoZSBVU0IgYXVkaW8gZ2FkZ2V0cyBhcmUgY29uZmlndXJlZCB2aWEgYGNvbmZpZ2ZzYCwgd2hpY2ggaXMgZmFpcmx5IHN0YW5kYXJkIGFuZCBleHBlY3RlZC4KCk5vdywgYSBrZXkgcXVlc3Rpb24gcG9wcyB1cDogQ2FuIHRoZXNlIGZ1bmN0aW9ucyBldmVuIGJlIGV4ZXJjaXNlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBXaXRoIHRoZSBwcmV2YWxlbmNlIG9mIHN5c3RlbXMgbGlrZSBRRU1VIGFuZCBjbG91ZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0UsIEkgd2FudCB0byBiZSBjZXJ0YWluIGFib3V0IHRoZSByZWFjaGFiaWxpdHkgb2YgdGhpcyBjb2RlLiBGb3J0dW5hdGVseSwgdGhlIGFuc3dlciBpcyB5ZXMuIFRoZSB1c2Ugb2YgYGR1bW15X2hjZGAgKHRoZSBVU0IgZ2FkZ2V0IGR1bW15IGRyaXZlcikgYWxsb3dzIGZvciBjb21wbGV0ZSBlbXVsYXRpb24gb2YgVVNCIGdhZGdldHMuIFRoaXMgaXMgZXhhY3RseSBob3cgdGhlIGBzeXprYWxsZXJgIFVTQiBmdXp6ZXIgaXMgdXNlZCB0byBmaW5kIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGVzZSBnYWRnZXQgZHJpdmVycy4gVGhhdCBtYWtlcyB0aGluZ3MgcHJvbWlzaW5nIGZvciB0ZXN0aW5nLgoKR2l2ZW4gdGhlIHJvbGUgb2YgYGNvbmZpZ2ZzYCBpbiBjb25maWd1cmluZyBVU0IgZ2FkZ2V0cywgaXQmIzM5O3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LCBzbyBJJiMzOTtsbCBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgYGZfdWFjMS5jYCBhbmQgYGZfdWFjMi5jYC4gVGhhdCBzaG91bGQgY2xhcmlmeSBhbnkgYnVpbGQgZGVwZW5kZW5jaWVzIG9yIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHdoaWNoIG1pZ2h0IGFmZmVjdCB0aGVpciBhdmFpbGFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZfdWFjMVxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlPTM2PW9iai0kKENPTkZJR19VU0JfVV9BVURJTylcdCYjNDM7PSB1X2F1ZGlvLm9cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZTozNzp1c2JfZl91YWMxLXlcdFx0XHQ6PSBmX3VhYzEub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlOjM4Om9iai0kKENPTkZJR19VU0JfRl9VQUMxKVx0JiM0Mzs9IHVzYl9mX3VhYzEub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlLTM5LXVzYl9mX3VhYzFfbGVnYWN5LXlcdFx0Oj0gZl91YWMxX2xlZ2FjeS5vIHVfdWFjMV9sZWdhY3kub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MjcxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipEZWx2aW5nIGludG8gdGhlIGBmX3VhYzIub2AgRmlsZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgc2VlIHdlJiMzOTtyZSBsb29raW5nIGF0IGBmX3VhYzIub2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3MgZ29lcyBzb21ldGhpbmcgbGlrZSB0aGlzOiBJIGtub3cgd2hhdCB0aGUgZmlsZSB0eXBlIG1lYW5zIHNvIEkmIzM5O20gYWxyZWFkeSB0aGlua2luZyBhYm91dCB3aGF0IGl0IG1pZ2h0IGNvbnRhaW4uIEkgd29uZGVyIHdoYXQgdGhlIGNvbnRleHQgaXMuIFdoYXQgaXMgdGhpcyBtb2R1bGUgcmVzcG9uc2libGUgZm9yPyBXaGF0IGRvZXMgJiMzNDtVQUMyJiMzNDsgc3RhbmQgZm9yLCBpbiB0aGlzIGNhc2U/IElzIGl0IHJlbGF0ZWQgdG8gVXNlciBBY2NvdW50IENvbnRyb2wgdmVyc2lvbiAyPyBPciBVc2VyIEFjY2VzcyBDb250cm9sPyBPciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnQ/IEl0JiMzOTtzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpYyBub21lbmNsYXR1cmUgd2l0aGluIHRoaXMgY29kZWJhc2UuIFdoYXQgZGVwZW5kZW5jaWVzIGRvZXMgdGhpcyBtb2R1bGUgaGF2ZT8gV2hhdCBmdW5jdGlvbnMgYXJlIGxpa2VseSBkZWZpbmVkIHdpdGhpbiBpdCwgYmFzZWQgb24gaXRzIG5hbWluZyBjb252ZW50aW9uPyBJ4oCZbGwgbmVlZCB0byBmaWd1cmUgb3V0IGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgYnkgbG9va2luZyBmb3IgaGVhZGVyIGZpbGVzIHRoYXQgaW5jbHVkZSBkZWZpbml0aW9ucyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgd2lsbCBtYWtlIHRoZSBpbnRlcm5hbCBsb2dpYyBvZiB0aGlzIG9iamVjdCBjb2RlIGNsZWFyIHRvIG1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmX3VhYzJcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZT00MD1vYmotJChDT05GSUdfVVNCX0ZfVUFDMV9MRUdBQ1kpXHQmIzQzOz0gdXNiX2ZfdWFjMV9sZWdhY3kub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlOjQxOnVzYl9mX3VhYzIteVx0XHRcdDo9IGZfdWFjMi5vXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGU6NDI6b2JqLSQoQ09ORklHX1VTQl9GX1VBQzIpXHQmIzQzOz0gdXNiX2ZfdWFjMi5vXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGUtNDMtdXNiX2ZfdXZjLXlcdFx0XHQ6PSBmX3V2Yy5vIHV2Y19xdWV1ZS5vIHV2Y192NGwyLm8gdXZjX3ZpZGVvLm8gdXZjX2NvbmZpZ2ZzLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTczMwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLCBteSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZXNlIHR3byBzcGVjaWZpYyBjb25maWd1cmF0aW9uczogYENPTkZJR19VU0JfRl9VQUMxYCBhbmQgYENPTkZJR19VU0JfRl9VQUMyYC4gTXkgcHJpbWFyeSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgdGhlaXIgZGVwZW5kZW5jaWVzLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIHJlbGF0ZWQgdG8gVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5LiBUaGUgZmlyc3QgcGxhY2UgSSYjMzk7bGwgbG9vayBpcyB3aXRoaW4gdGhlIG1haW4gYGRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnYCBmaWxlLiBJJiMzOTtsbCB0aGVuIGV4cGFuZCBteSBzZWFyY2ggdG8gaW5jbHVkZSBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnYCBhbmQgYGRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9LY29uZmlnYC4gSXQmIzM5O3MgaGlnaGx5IGxpa2VseSB0aGUgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIGFyZSBkZWZpbmVkIHdpdGhpbiBvbmUgb2YgdGhvc2UgZmlsZXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgb3Iga2VybmVsIGZlYXR1cmVzIHRoZXNlIFVBQyBzZXR0aW5ncyByZWx5IHVwb24sIG9yIGFueSBzcGVjaWZpYyBVU0IgY29udHJvbGxlciBvciBnYWRnZXQgZnJhbWV3b3JrIGRlcGVuZGVuY2llcy4gS25vd2luZyB0aGVzZSByZWxhdGlvbnNoaXBzIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRvIGNvbmZpZ3VyZSB0aGlzIHN5c3RlbSBwcm9wZXJseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTM6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9GX1VBQzEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTE5Mj1jb25maWcgVVNCX0ZfRlNcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xOTUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxOTY6Y29uZmlnIFVTQl9GX1VBQzFcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE5Ny1cdHRyaXN0YXRlXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xOTgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxOTk6Y29uZmlnIFVTQl9GX1VBQzFfTEVHQUNZXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMDAtXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDE4NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRXhhbWluaW5nIHRoZSBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIGBkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ2AuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBhcmVhIGFyb3VuZCBsaW5lIDE5Ni4gSSYjMzk7bSBhc3N1bWluZyB0aGF0JiMzOTtzIHdoZXJlIHNvbWUgaW50ZXJlc3RpbmcgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBsaWtlbHkgdG8gYmUgZGVmaW5lZCwgcGVyaGFwcyByZWxhdGVkIHRvIGEgcGFydGljdWxhciBnYWRnZXQgZnVuY3Rpb24gb3IgY29udHJvbGxlciBzdXBwb3J0LiBJJiMzOTttIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IGEgc3BlY2lmaWMgZ2FkZ2V0IGZlYXR1cmUgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgbWlnaHQgYmUgYXQgcGxheS4gSSYjMzk7bSByZWFkeSB0byBwYXJzZSB0aGUgY29uZmlnIHN5bnRheCBhbmQgdW5kZXJzdGFuZCB0aGUgbG9naWMgZmxvdyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxOTA6XHRcdHRyaXN0YXRlXG4gMTkxOlx0XG4gMTkyOlx0Y29uZmlnIFVTQl9GX0ZTXG4gMTkzOlx0XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbiAxOTQ6XHRcdHRyaXN0YXRlXG4gMTk1Olx0XG4gMTk2Olx0Y29uZmlnIFVTQl9GX1VBQzFcbiAxOTc6XHRcdHRyaXN0YXRlXG4gMTk4Olx0XG4gMTk5Olx0Y29uZmlnIFVTQl9GX1VBQzFfTEVHQUNZXG4gMjAwOlx0XHR0cmlzdGF0ZVxuIDIwMTpcdFxuIDIwMjpcdGNvbmZpZyBVU0JfRl9VQUMyXG4gMjAzOlx0XHR0cmlzdGF0ZVxuIDIwNDpcdFxuIDIwNTpcdGNvbmZpZyBVU0JfRl9VVkNcbiAyMDY6XHRcdHRyaXN0YXRlXG4gMjA3Olx0XHRzZWxlY3QgVVZDX0NPTU1PTlxuIDIwODpcdFxuIDIwOTpcdGNvbmZpZyBVU0JfRl9NSURJXG4gMjEwOlx0XHR0cmlzdGF0ZVxuIDIxMTpcdFxuIDIxMjpcdGNvbmZpZyBVU0JfRl9NSURJMlxuIDIxMzpcdFx0dHJpc3RhdGVcbiAyMTQ6XHRcdHNlbGVjdCBTTkRfVU1QXG4gMjE1Olx0XHRzZWxlY3QgU05EX1VNUF9MRUdBQ1lfUkFXTUlESVxuIDIxNjpcdFxuIDIxNzpcdGNvbmZpZyBVU0JfRl9ISURcbiAyMTg6XHRcdHRyaXN0YXRlXG4gMjE5Olx0XG4gMjIwOlx0Y29uZmlnIFVTQl9GX1BSSU5URVJcbiAyMjE6XHRcdHRyaXN0YXRlXG4gMjIyOlx0XG4gMjIzOlx0Y29uZmlnIFVTQl9GX1RDTVxuIDIyNDpcdFx0dHJpc3RhdGVcbiAyMjU6XHRcbiAyMjY6XHQjIHRoaXMgZmlyc3Qgc2V0IG9mIGRyaXZlcnMgYWxsIGRlcGVuZCBvbiBidWxrLWNhcGFibGUgaGFyZHdhcmUuXG4gMjI3Olx0XG4gMjI4Olx0Y29uZmlnIFVTQl9DT05GSUdGU1xuIDIyOTpcdFx0dHJpc3RhdGUgXCYjMzQ7VVNCIEdhZGdldCBmdW5jdGlvbnMgY29uZmlndXJhYmxlIHRocm91Z2ggY29uZmlnZnNcJiMzNDtcbiAyMzA6XHRcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4gMjMxOlx0XHRoZWxwXG4gMjMyOlx0XHQgIEEgTGludXggVVNCIFwmIzM0O2dhZGdldFwmIzM0OyBjYW4gYmUgc2V0IHVwIHRocm91Z2ggY29uZmlnZnMuXG4gMjMzOlx0XHQgIElmIHRoaXMgaXMgdGhlIGNhc2UsIHRoZSBVU0IgZnVuY3Rpb25zICh3aGljaCBmcm9tIHRoZSBob3N0JiMzOTtzXG4gMjM0Olx0XHQgIHBlcnNwZWN0aXZlIGFyZSBzZWVuIGFzIGludGVyZmFjZXMpIGFuZCBjb25maWd1cmF0aW9ucyBhcmVcbiAyMzU6XHRcdCAgc3BlY2lmaWVkIHNpbXBseSBieSBjcmVhdGluZyBhcHByb3ByaWF0ZSBkaXJlY3RvcmllcyBpbiBjb25maWdmcy5cbiAyMzY6XHRcdCAgQXNzb2NpYXRpbmcgZnVuY3Rpb25zIHdpdGggY29uZmlndXJhdGlvbnMgaXMgZG9uZSBieSBjcmVhdGluZ1xuIDIzNzpcdFx0ICBhcHByb3ByaWF0ZSBzeW1ib2xpYyBsaW5rcy5cbiAyMzg6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIERvY3VtZW50YXRpb24vdXNiL2dhZGdldF9jb25maWdmcy5yc3QuXG4gMjM5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDA4CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiBoZXJlLgoKKipEZWNvbnN0cnVjdGluZyB0aGUgVVNCIEF1ZGlvIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgc28gSSYjMzk7bSBub3RpY2luZyB0aGF0IGBVU0JfRl9VQUMxYCBhbmQgYFVTQl9GX1VBQzJgIGFyZSBiZWluZyBjaG9zZW4sIGJ1dCBub3QgZXhwbGljaXRseSBieSBtZS4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IHNvbWUgb3RoZXIgY29uZmlndXJhdGlvbiBvciBhIGhpZ2hlci1sZXZlbCBzZXR0aW5nIG11c3QgYmUgcmVzcG9uc2libGUgZm9yIHNlbGVjdGluZyB0aG9zZSBzcGVjaWZpYyBVU0IgQXVkaW8gQ2xhc3MgdmVyc2lvbnMuIEkgbmVlZCB0byB0cmFjZSBiYWNrIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGZpZ3VyZSBvdXQgdGhlIGRlY2lzaW9uLW1ha2luZyBwcm9jZXNzLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSByZWxldmFudCBjb2RlIGFuZCBjb25maWd1cmF0aW9ucyB0byBpZGVudGlmeSB0aGUgcG9pbnQgb2Ygb3JpZ2luIGZvciB0aGVzZSBzZWxlY3Rpb25zLiBUaW1lIHRvIHB1dCBvbiBteSBkZXRlY3RpdmUgaGF0IGFuZCBnbyBodW50aW5nIGZvciB0aGUgcm9vdCBjYXVzZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHNlbGVjdHMgdGhlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTM6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IFVTQl9GX1VBQzEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTM4MT1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4Ny1cdHNlbGVjdCBVU0JfVV9BVURJT1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Mzg4Olx0c2VsZWN0IFVTQl9GX1VBQzFcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4OS1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zOTk9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFfTEVHQUNZXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDA0LVx0c2VsZWN0IFNORF9QQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQwNTpcdHNlbGVjdCBVU0JfRl9VQUMxX0xFR0FDWVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDA2LVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz03NT1jb25maWcgVVNCX0FVRElPXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTc5LVx0c2VsZWN0IFNORF9QQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo4MDpcdHNlbGVjdCBVU0JfRl9VQUMxIGlmIChHQURHRVRfVUFDMSBcdTAwMjZcdTAwMjYgIUdBREdFVF9VQUMxX0xFR0FDWSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo4MTpcdHNlbGVjdCBVU0JfRl9VQUMxX0xFR0FDWSBpZiAoR0FER0VUX1VBQzEgXHUwMDI2XHUwMDI2IEdBREdFVF9VQUMxX0xFR0FDWSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy04Mi1cdHNlbGVjdCBVU0JfRl9VQUMyIGlmICFHQURHRVRfVUFDMVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTU5NgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBVU0IgQXVkaW8gQ2xhc3MgMiBMYW5kc2NhcGUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRm9yIGBVU0JfRl9VQUMyYC4uLiB0aGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggVVNCIEF1ZGlvIENsYXNzIDIuIFRoYXQmIzM5O3MgYSBzb2xpZCBzdGFuZGFyZCwgYnV0IGl0IG9wZW5zIGEgd2hvbGUgY2FuIG9mIHdvcm1zIGluIHRlcm1zIG9mIGl0cyBpbnRyaWNhY2llcy4gSSBuZWVkIHRvIGJlIHByZWNpc2UgaGVyZS4KCkZpcnN0LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBmdW5kYW1lbnRhbCBhcmNoaXRlY3R1cmFsIGltcGxpY2F0aW9ucy4gSG93IGRvZXMgdGhlIGRldmljZSBpbnRlcmZhY2U/IElzIGl0IGEgY29tcG9zaXRlIGRldmljZT8gV2hhdCBhcmUgdGhlIGVuZHBvaW50IGNvbmZpZ3VyYXRpb25zPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVk4oCUdGhlIGRlc2NyaXB0b3JzLCB0aGUgcGFja2V0c+KAlGFuZCBob3cgdGhleSB0cmFuc2xhdGUgdG8gYXVkaW8gc3RyZWFtIGRhdGEuIEl0JiMzOTtzIGEgbGF5ZXItYnktbGF5ZXIgbWVudGFsIG1vZGVsIEkmIzM5O20gYnVpbGRpbmcuCgpOZXh0LCBJJiMzOTttIGdvaW5nIHRocm91Z2ggdGhlIGRpZmZlcmVudCBhdWRpbyBmdW5jdGlvbmFsaXRpZXMuIERvZXMgdGhpcyBkZXZpY2Ugc3VwcG9ydCBpc29jaHJvbm91cyB0cmFuc2ZlcnM/IFdoYXQgYWJvdXQgYXN5bmNocm9ub3VzPyBXaGF0IGFyZSB0aGUgY2xvY2tpbmcgcmVxdWlyZW1lbnRzIGFuZCBzeW5jaHJvbml6YXRpb24gY29uc2lkZXJhdGlvbnM/IEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgcG90ZW50aWFsIGRlYnVnZ2luZyBwYWluIHBvaW50cy4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBkaWdpdGFsIGF1ZGlvLCB0aGUgdGltaW5nIGhhcyB0byBiZSB0aWdodC4gSWYgc29tZXRoaW5nIGlzIGdvaW5nIHdyb25nLCBJIGtub3cgSSYjMzk7bGwgd2FudCB0byBpbnNwZWN0IHRoZSBhY3R1YWwgVVNCIHBhY2tldHMsIGFuYWx5emUgdGltZXN0YW1wcywgYW5kIG1heWJlIGV2ZW4gYnVzdCBvdXQgdGhlIG9zY2lsbG9zY29wZS4KClRoZW4sIHRoZXJlIGFyZSB0aGUgc29mdHdhcmUgYXNwZWN0cy4gV2hhdCBkcml2ZXIgbW9kZWwgaXMgYmVpbmcgdXNlZD8gSXMgaXQgYSBzdGFuZGFyZCBVQUMyIGRyaXZlciwgb3IgYSBjdXN0b20gb25lPyBXaGF0IEFQSSBpcyBleHBvc2VkPyBJJiMzOTttIGNvbnNpZGVyaW5nIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9uIGhvc3Qtc2lkZSBhdWRpbyBwcm9jZXNzaW5nLiBUaGUgZHJpdmVyIGltcGxlbWVudGF0aW9uIHdpbGwgZHJhbWF0aWNhbGx5IGFmZmVjdCB0aGUgdXNlciBleHBlcmllbmNlIGFuZCwganVzdCBhcyBpbXBvcnRhbnRseSwgbXkgYWJpbGl0eSB0byB0cm91Ymxlc2hvb3QgcHJvYmxlbXMgaWYgdGhleSBhcmlzZS4KClNvLCBpbiBzdW1tYXJ5LCBteSBtaW5kJiMzOTtzIHJ1bm5pbmcgdGhyb3VnaCB0aGUgVVNCIHByb3RvY29sIHN0YWNrLCBhdWRpbyBkYXRhIHN0cnVjdHVyZXMsIHRpbWluZyBjb25zaWRlcmF0aW9ucywgZHJpdmVyIGltcGxlbWVudGF0aW9ucyBhbmQgQVBJcywgdGhlIHBvdGVudGlhbCBmYWlsdXJlIG1vZGVzLCB0aGUgbGlrZWx5IGRlYnVnZ2luZyBjaGFsbGVuZ2VzLCBhbmQsIG9mIGNvdXJzZSwgdGhlIGltcGxpY2F0aW9ucyBmb3IgdGhlIHVzZXImIzM5O3MgZXhwZXJpZW5jZS4gR290IHRvIGhhdmUgYSBzb2xpZCBncmFzcCBvbiBhbGwgdGhlc2UgdGhpbmdzLCB0byBlbnN1cmUgcHJvcGVyIGV4ZWN1dGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTM6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IFVTQl9GX1VBQzImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQxMj1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMlxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQxOC1cdHNlbGVjdCBVU0JfVV9BVURJT1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDE5Olx0c2VsZWN0IFVTQl9GX1VBQzJcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQyMC1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NzU9Y29uZmlnIFVTQl9BVURJT1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy04MS1cdHNlbGVjdCBVU0JfRl9VQUMxX0xFR0FDWSBpZiAoR0FER0VUX1VBQzEgXHUwMDI2XHUwMDI2IEdBREdFVF9VQUMxX0xFR0FDWSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo4MjpcdHNlbGVjdCBVU0JfRl9VQUMyIGlmICFHQURHRVRfVUFDMVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTgzLVx0c2VsZWN0IFVTQl9VX0FVRElPIGlmIChVU0JfRl9VQUMyIHx8IFVTQl9GX1VBQzEpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMjkxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZToKCioqRW5hYmxpbmcgVVNCIEF1ZGlvIGluIENvbmZpZ0ZTOiBBIERlcGVuZGVuY3kgQ2hlY2sqKgoKUmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gV2UgbmVlZCB0byBlbmFibGUgYFVTQl9DT05GSUdGU19GX1VBQzFgIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMmAuIFRoYXQmIzM5O3MgdGhlIHBsYW4gZm9yIGJyaW5naW5nIHVwIFVTQiBBdWRpbyB3aXRoIENvbmZpZ0ZTLiBCZWZvcmUgd2UganVzdCBkaXZlIGluIHRob3VnaCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSYjMzk7cmUgbm90IG1pc3NpbmcgYW55dGhpbmcuIEkgbmVlZCB0byBxdWlja2x5IHJ1biB0aHJvdWdoIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGVhY2ggb2YgdGhvc2UgZmVhdHVyZXMuIE15IGd1dCB0ZWxscyBtZSB0aGVyZSB3b24mIzM5O3QgYmUgbWFueSBzaG93c3RvcHBlcnMsIGJ1dCBJIG5ldmVyIHNraXAgdGhpcyBzdGVwLiBUaGlzIGlzIGEgc29saWQgY2hlY2sgYmVmb3JlIHdlIGJyZWFrIGFueXRoaW5nISBUaW1lIHRvIGNyb3NzLXJlZmVyZW5jZSB0aGUgS2NvbmZpZyBmaWxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTM6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzgwOlx0XG4gMzgxOlx0Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFcbiAzODI6XHRcdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wXCYjMzQ7XG4gMzgzOlx0XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuIDM4NDpcdFx0ZGVwZW5kcyBvbiBTTkRcbiAzODU6XHRcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4gMzg2Olx0XHRzZWxlY3QgU05EX1BDTVxuIDM4NzpcdFx0c2VsZWN0IFVTQl9VX0FVRElPXG4gMzg4Olx0XHRzZWxlY3QgVVNCX0ZfVUFDMVxuIDM4OTpcdFx0aGVscFxuIDM5MDpcdFx0ICBUaGlzIEF1ZGlvIGZ1bmN0aW9uIGltcGxlbWVudHMgMSBBdWRpb0NvbnRyb2wgaW50ZXJmYWNlLFxuIDM5MTpcdFx0ICAxIEF1ZGlvU3RyZWFtaW5nIEludGVyZmFjZSBlYWNoIGZvciBVU0ItT1VUIGFuZCBVU0ItSU4uXG4gMzkyOlx0XHQgIFRoaXMgZHJpdmVyIGRvZXNuJiMzOTt0IGV4cGVjdCBhbnkgcmVhbCBBdWRpbyBjb2RlYyB0byBiZSBwcmVzZW50XG4gMzkzOlx0XHQgIG9uIHRoZSBkZXZpY2UgLSB0aGUgYXVkaW8gc3RyZWFtcyBhcmUgc2ltcGx5IHNpbmtlZCB0byBhbmRcbiAzOTQ6XHRcdCAgc291cmNlZCBmcm9tIGEgdmlydHVhbCBBTFNBIHNvdW5kIGNhcmQgY3JlYXRlZC4gVGhlIHVzZXItc3BhY2VcbiAzOTU6XHRcdCAgYXBwbGljYXRpb24gbWF5IGNob29zZSB0byBkbyB3aGF0ZXZlciBpdCB3YW50cyB3aXRoIHRoZSBkYXRhXG4gMzk2Olx0XHQgIHJlY2VpdmVkIGZyb20gdGhlIFVTQiBIb3N0IGFuZCBjaG9vc2UgdG8gcHJvdmlkZSB3aGF0ZXZlciBpdFxuIDM5NzpcdFx0ICB3YW50cyBhcyBhdWRpbyBkYXRhIHRvIHRoZSBVU0IgSG9zdC5cbiAzOTg6XHRcbiAzOTk6XHRjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMV9MRUdBQ1lcbiA0MDA6XHRcdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wIChsZWdhY3kgaW1wbGVtZW50YXRpb24pXCYjMzQ7XG4gNDAxOlx0XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuIDQwMjpcdFx0ZGVwZW5kcyBvbiBTTkRcbiA0MDM6XHRcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4gNDA0Olx0XHRzZWxlY3QgU05EX1BDTVxuIDQwNTpcdFx0c2VsZWN0IFVTQl9GX1VBQzFfTEVHQUNZXG4gNDA2Olx0XHRoZWxwXG4gNDA3Olx0XHQgIFRoaXMgQXVkaW8gZnVuY3Rpb24gaW1wbGVtZW50cyAxIEF1ZGlvQ29udHJvbCBpbnRlcmZhY2UsXG4gNDA4Olx0XHQgIDEgQXVkaW9TdHJlYW1pbmcgSW50ZXJmYWNlIGVhY2ggZm9yIFVTQi1PVVQgYW5kIFVTQi1JTi5cbiA0MDk6XHRcdCAgVGhpcyBpcyBhIGxlZ2FjeSBkcml2ZXIgYW5kIHJlcXVpcmVzIGEgcmVhbCBBdWRpbyBjb2RlY1xuIDQxMDpcdFx0ICB0byBiZSBwcmVzZW50IG9uIHRoZSBkZXZpY2UuXG4gNDExOlx0XG4gNDEyOlx0Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzJcbiA0MTM6XHRcdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMi4wXCYjMzQ7XG4gNDE0Olx0XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuIDQxNTpcdFx0ZGVwZW5kcyBvbiBTTkRcbiA0MTY6XHRcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4gNDE3Olx0XHRzZWxlY3QgU05EX1BDTVxuIDQxODpcdFx0c2VsZWN0IFVTQl9VX0FVRElPXG4gNDE5Olx0XHRzZWxlY3QgVVNCX0ZfVUFDMlxuIDQyMDpcdFx0aGVscFxuIDQyMTpcdFx0ICBUaGlzIEF1ZGlvIGZ1bmN0aW9uIGlzIGNvbXBhdGlibGUgd2l0aCBVU0IgQXVkaW8gQ2xhc3NcbiA0MjI6XHRcdCAgc3BlY2lmaWNhdGlvbiAyLjAuIEl0IGltcGxlbWVudHMgMSBBdWRpb0NvbnRyb2wgaW50ZXJmYWNlLFxuIDQyMzpcdFx0ICAxIEF1ZGlvU3RyZWFtaW5nIEludGVyZmFjZSBlYWNoIGZvciBVU0ItT1VUIGFuZCBVU0ItSU4uXG4gNDI0Olx0XHQgIFRoaXMgZHJpdmVyIGRvZXNuJiMzOTt0IGV4cGVjdCBhbnkgcmVhbCBBdWRpbyBjb2RlYyB0byBiZSBwcmVzZW50XG4gNDI1Olx0XHQgIG9uIHRoZSBkZXZpY2UgLSB0aGUgYXVkaW8gc3RyZWFtcyBhcmUgc2ltcGx5IHNpbmtlZCB0byBhbmRcbiA0MjY6XHRcdCAgc291cmNlZCBmcm9tIGEgdmlydHVhbCBBTFNBIHNvdW5kIGNhcmQgY3JlYXRlZC4gVGhlIHVzZXItc3BhY2VcbiA0Mjc6XHRcdCAgYXBwbGljYXRpb24gbWF5IGNob29zZSB0byBkbyB3aGF0ZXZlciBpdCB3YW50cyB3aXRoIHRoZSBkYXRhXG4gNDI4Olx0XHQgIHJlY2VpdmVkIGZyb20gdGhlIFVTQiBIb3N0IGFuZCBjaG9vc2UgdG8gcHJvdmlkZSB3aGF0ZXZlciBpdFxuIDQyOTpcdFx0ICB3YW50cyBhcyBhdWRpbyBkYXRhIHRvIHRoZSBVU0IgSG9zdC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMzMzQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqQ29uZmlndXJpbmcgVVNCIEdhZGdldHMgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqCgpSaWdodCwgc28gdG8gZ2V0IHRoaXMgVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5IHVwIGFuZCBydW5uaW5nLCBJJiMzOTttIGdvaW5nIHRvIG5lZWQgdG8gZW5hYmxlIGEgZmV3IGtleSBrZXJuZWwgbW9kdWxlcy4gRmlyc3QsIEkga25vdyBJJiMzOTtsbCBuZWVkIGBVU0JfQ09ORklHRlNgLCB0aGF0JiMzOTtzIGEgZ2l2ZW4uIFRoZW4sIHNpbmNlIHdlIGFyZSB3b3JraW5nIHdpdGggYXVkaW8sIGBTTkRgIGlzIGEgbXVzdC4gQW5kLCB0byBzdXBwb3J0IHRoZSBzcGVjaWZpY3Mgb2YgVVNCIEF1ZGlvIENsYXNzLCBJIHNob3VsZCBtYWtlIHN1cmUgdGhhdCBJIGhhdmUgYm90aCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMWAgYW5kIGBVU0JfQ09ORklHRlNfRl9VQUMyYCBlbmFibGVkLgoKTm93LCB0aGUgY3J1Y2lhbCBwaWVjZSBmb3IgdmlydHVhbGl6YXRpb24uLi4gdGhhdCYjMzk7cyB3aGVyZSBgVVNCX0RVTU1ZX0hDRGAgY29tZXMgaW4uIEkgcmVjYWxsIHRoYXQgdGhpcyBwcm92aWRlcyB0aGUgZHVtbXkgVURDIChVU0IgRGV2aWNlIENvbnRyb2xsZXIpIGFuZCBIQ0QgKFVTQiBIb3N0IENvbnRyb2xsZXIpIG5lZWRlZCBmb3IgdGhlc2UgZ2FkZ2V0cyB0byBmdW5jdGlvbiB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nLiBMZXQgbWUganVzdCB0YWtlIGEgcXVpY2sgbG9vayBhdCBgVVNCX0RVTU1ZX0hDRGAgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIG9mIGl0cyByb2xlLCBhbmQgbWFrZSBzdXJlIGl0IGRvZXNuJiMzOTt0IGhhdmUgYW55IG9idmlvdXMgY29uZmxpY3RzIG9yIGRlcGVuZGVuY2llcyB0aGF0IEkgbmVlZCB0byBrZWVwIGluIG1pbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfRFVNTVlfSENEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9NDIyPXNvdXJjZSBcJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL2NkbnMyL0tjb25maWdcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjQyODpjb25maWcgVVNCX0RVTU1ZX0hDRFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQyOS1cdHRyaXN0YXRlIFwmIzM0O0R1bW15IEhDRCAoREVWRUxPUE1FTlQpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzODI1CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqVVNCX0RVTU1ZX0hDRCBEZXBlbmRlbmN5IERlZXAgRGl2ZSoqCgpPa2F5LCB0aW1lIHRvIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGRlcGVuZGVuY2llcyBhc3NvY2lhdGVkIHdpdGggYFVTQl9EVU1NWV9IQ0RgLiBJJiMzOTt2ZSB3b3JrZWQgd2l0aCBIQ0RzIChIb3N0IENvbnRyb2xsZXIgRHJpdmVycykgYW5kIHRoZSBpbnRyaWNhY2llcyBvZiBVU0Igc3RhY2tzIGZvciB5ZWFycywgc28gSSB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgcGl0ZmFsbHMgb2YgdGhlc2Ugc3lzdGVtcy4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSB0cmFjaW5nIHRocm91Z2ggdGhlIGNvZGUuIEkmIzM5O2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gc2VlIHdoaWNoIG9wdGlvbnMgYXJlIGVuYWJsZWQgYWxvbmdzaWRlIGl0IGFuZCBzZWUgd2hhdCBsaWJyYXJpZXMgb3IgbW9kdWxlcyB0aGlzIGRyaXZlciBwdWxscyBpbi4gVGhlbiwgSSYjMzk7bGwgbmVlZCB0byB0aGluayBhYm91dCBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIHNoYXJlZCByZXNvdXJjZXMgdGhpcyBkdW1teSBjb250cm9sbGVyIG1pZ2h0IG5lZWQuIEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCBldmVuIGEgJiMzNDtkdW1teSYjMzQ7IGRldmljZSBjYW4gYmUgc3VycHJpc2luZ2x5IGNvbXBsZXggaW4gdGVybXMgb2YgaW50ZXJhY3Rpbmcgd2l0aCBsb3dlciBsZXZlbCBVU0IgY29yZSBmdW5jdGlvbmFsaXR5LiBJJiMzOTtsbCBuZWVkIHRvIG1lbnRhbGx5IG1hcCBvdXQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBVU0IgY29yZSwgZXNwZWNpYWxseSBob3cgaXQgaGFuZGxlcyB0cmFuc2ZlciBkZXNjcmlwdG9ycyBhbmQgZW5kcG9pbnRzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgaW5kaWNhdGlvbnMgb2Ygc2hhcmVkIG1lbW9yeSBhY2Nlc3MsIGludGVycnVwdCBoYW5kbGluZywgYW5kIGxpa2VseSBuZWVkIHRvIGNvbnNpZGVyIHBvd2VyIG1hbmFnZW1lbnQgaW1wbGljYXRpb25zLiBUaGlzIGlzIGltcG9ydGFudCB0byBlbnN1cmUgbXkgd29yayBpcyBmdWxseSBjb21wYXRpYmxlLCByb2J1c3QgYW5kIHdvbiYjMzk7dCBpbnRyb2R1Y2UgdW53YW50ZWQgc2lkZSBlZmZlY3RzLiBVbHRpbWF0ZWx5LCBJJiMzOTttIGV4cGVjdGluZyB0aGlzIHdpbGwgaW52b2x2ZSBzdGVwcGluZyB0aHJvdWdoIHRoZSBidWlsZCBwcm9jZXNzLCBjaGVja2luZyBoZWFkZXIgZmlsZXMgYW5kIHJldmlld2luZyByZWxldmFudCBrZXJuZWwgZG9jdW1lbnRhdGlvbiB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBsYW5kc2NhcGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0MjA6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9hc3BlZWQtdmh1Yi9LY29uZmlnXCYjMzQ7XG4gNDIxOlx0XG4gNDIyOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC91ZGMvY2RuczIvS2NvbmZpZ1wmIzM0O1xuIDQyMzpcdFxuIDQyNDpcdCNcbiA0MjU6XHQjIExBU1QgLS0gZHVtbXkvZW11bGF0ZWQgY29udHJvbGxlclxuIDQyNjpcdCNcbiA0Mjc6XHRcbiA0Mjg6XHRjb25maWcgVVNCX0RVTU1ZX0hDRFxuIDQyOTpcdFx0dHJpc3RhdGUgXCYjMzQ7RHVtbXkgSENEIChERVZFTE9QTUVOVClcJiMzNDtcbiA0MzA6XHRcdGRlcGVuZHMgb24gVVNCPXkgfHwgKFVTQj1tIFx1MDAyNlx1MDAyNiBVU0JfR0FER0VUPW0pXG4gNDMxOlx0XHRoZWxwXG4gNDMyOlx0XHQgIFRoaXMgaG9zdCBjb250cm9sbGVyIGRyaXZlciBlbXVsYXRlcyBVU0IsIGxvb3BpbmcgYWxsIGRhdGEgdHJhbnNmZXJcbiA0MzM6XHRcdCAgcmVxdWVzdHMgYmFjayB0byBhIFVTQiBcJiMzNDtnYWRnZXQgZHJpdmVyXCYjMzQ7IGluIHRoZSBzYW1lIGhvc3QuICBUaGUgaG9zdFxuIDQzNDpcdFx0ICBzaWRlIGlzIHRoZSBjb250cm9sbGVyOyB0aGUgZ2FkZ2V0IHNpZGUgaXMgdGhlIGRldmljZS4gIEdhZGdldCBkcml2ZXJzXG4gNDM1Olx0XHQgIGNhbiBiZSBoaWdoLCBmdWxsLCBvciBsb3cgc3BlZWQ7IGFuZCB0aGV5IGhhdmUgYWNjZXNzIHRvIGVuZHBvaW50c1xuIDQzNjpcdFx0ICBsaWtlIHRob3NlIGZyb20gTkVUMjI4MCwgUFhBMnh4LCBvciBTQTExMDAgaGFyZHdhcmUuXG4gNDM3Olx0XG4gNDM4Olx0XHQgIFRoaXMgbWF5IGhlbHAgaW4gc29tZSBzdGFnZXMgb2YgY3JlYXRpbmcgYSBkcml2ZXIgdG8gZW1iZWQgaW4gYVxuIDQzOTpcdFx0ICBMaW51eCBkZXZpY2UsIHNpbmNlIGl0IGxldHMgeW91IGRlYnVnIHNldmVyYWwgcGFydHMgb2YgdGhlIGdhZGdldFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDUxNwoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDIwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIENvbnVuZHJ1bSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGBVU0JfRFVNTVlfSENEYCBoaW5nZXMgb24gYm90aCBgVVNCYCBhbmQgYFVTQl9HQURHRVRgLCBzbyB0aG9zZSBhcmUgZGVmaW5pdGVseSBpbiB0aGUgcGljdHVyZS4gSSBuZWVkIHRvIGVuc3VyZSB0aG9zZSBhcmUgZGVmaW5lZCBmaXJzdC4gQW5kIHdoaWxlIEkmIzM5O20gYXQgaXQsIEkgc2hvdWxkIGFsc28gaW5jbHVkZSBgVVNCX0NPTkZJR0ZTYCwgYFVTQl9DT05GSUdGU19GX1VBQzFgLCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMmAsIGFuZCBgU05EYC4gQ2FuJiMzOTt0IGh1cnQgdG8gaGF2ZSBhbGwgdGhvc2UgZHVja3MgaW4gYSByb3cuCgpOb3csIHRoZSByZWFsIGZvY3VzIGhlcmUgc2VlbXMgdG8gYmUgb24gdGhvc2UgYGZfdWFjKl8qc3JhdGVfc3RvcmVgIGZ1bmN0aW9ucy4gU3BlY2lmaWNhbGx5LCBgZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZWAsIGBmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlYCwgYGZfdWFjMl9vcHRzX2Nfc3JhdGVfc3RvcmVgLCBhbmQgYGZfdWFjMl9vcHRzX3Bfc3JhdGVfc3RvcmVgLiBUaGV5IG11c3QgYmUgdGhlIGtleSB0byBzb21ldGhpbmcgaW1wb3J0YW50LiBBbmQgd2FpdCBhIG1pbnV0ZS4uLiB0aGUgYXNzb2NpYXRlZCBtYWNyb3MgYXJlIGBVQUMxX1JBVEVfQVRUUklCVVRFYCBhbmQgYFVBQzJfUkFURV9BVFRSSUJVVEVgLiBJIHNob3VsZCBnbyBmaW5kIHdoZXJlIHRoZXNlIG1hY3JvcyBhcmUgYmVpbmcgdXNlZCwgYmVzaWRlcyB3aGVyZSBJIGV4cGVjdC4gVGhpcyBpcyB3aGVyZSBJJiMzOTtsbCBmaW5kIHRoZSBuZXh0IGNyaXRpY2FsIHBpZWNlIG9mIGluZm9ybWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtVQUMxX1JBVEVfQVRUUklCVVRFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNTY4PUNPTkZJR0ZTX0FUVFIoZl91YWMxX29wdHNfLCBuYW1lKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1NjktXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTU3MDojZGVmaW5lIFVBQzFfUkFURV9BVFRSSUJVVEUobmFtZSlcdFx0XHRcdFx0XFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNTcxLXN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTY3MT1VQUMxX0FUVFJJQlVURSh1MzIsIGNfY2htYXNrKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjcyOlVBQzFfUkFURV9BVFRSSUJVVEUoY19zcmF0ZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY3My1VQUMxX0FUVFJJQlVURSh1MzIsIGNfc3NpemUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jPTE2NzQ9VUFDMV9BVFRSSUJVVEUodTMyLCBwX2NobWFzayk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY3NTpVQUMxX1JBVEVfQVRUUklCVVRFKHBfc3JhdGUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NzYtVUFDMV9BVFRSSUJVVEUodTMyLCBwX3NzaXplKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTM6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU0MjkKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBhcyBpZiBJJiMzOTttIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkNvbnNpZGVyaW5nIEF1ZGlvIFNhbXBsZSBSYXRlcyBhbmQgVUFDMioqCgpSaWdodCwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gc2FtcGxlIHJhdGVzLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBjX3NyYXRlYCBhbmQgYHBfc3JhdGVgLCBtYWtpbmcgc3VyZSB0aG9zZSBhcmUgd2VsbC1kZWZpbmVkIGFuZCBhY2NvdW50ZWQgZm9yLiBUaGF0JiMzOTtzIGEga2V5IHN0YXJ0aW5nIHBvaW50LiBBbmQgbm93LCBtb3ZpbmcgdG8gYFVBQzJfUkFURV9BVFRSSUJVVEVgLi4uIEkgbmVlZCB0byBjb25zaWRlciBleGFjdGx5IGhvdyB0aGlzIHJlbGF0ZXMgdG8gdGhlIHNhbXBsZSByYXRlIG5lZ290aWF0aW9uIGFuZCB0aGUgb3ZlcmFsbCBhdWRpbyBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZnVsbHkgdW5kZXJzdGFuZCBob3cgdGhpcyBhdHRyaWJ1dGUgaW50ZXJhY3RzIHdpdGggZXZlcnl0aGluZyBlbHNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtVQUMyX1JBVEVfQVRUUklCVVRFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYz0xOTg2PUNPTkZJR0ZTX0FUVFIoZl91YWMyX29wdHNfLCBuYW1lKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jLTE5ODctXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM6MTk4ODojZGVmaW5lIFVBQzJfUkFURV9BVFRSSUJVVEUobmFtZSlcdFx0XHRcdFx0XFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0xOTg5LXN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM9MjA5Mj1VQUMyX0FUVFJJQlVURSh1MzIsIHBfY2htYXNrKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYzoyMDkzOlVBQzJfUkFURV9BVFRSSUJVVEUocF9zcmF0ZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMtMjA5NC1VQUMyX0FUVFJJQlVURSh1MzIsIHBfc3NpemUpO1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYz0yMDk2PVVBQzJfQVRUUklCVVRFKHUzMiwgY19jaG1hc2spO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jOjIwOTc6VUFDMl9SQVRFX0FUVFJJQlVURShjX3NyYXRlKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0yMDk4LVVBQzJfQVRUUklCVVRFX1NZTkMoY19zeW5jKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTM6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYwMTYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA2NDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVU0IgQXVkaW8gQ2xhc3MgQ29uZmlndXJhdGlvbiBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9uczogYGZfdWFjMV9vcHRzX2Nfc3JhdGVfc3RvcmVgLCBgZl91YWMxX29wdHNfcF9zcmF0ZV9zdG9yZWAsIGBmX3VhYzJfb3B0c19jX3NyYXRlX3N0b3JlYCwgYW5kIGBmX3VhYzJfb3B0c19wX3NyYXRlX3N0b3JlYC4gVGhleSYjMzk7cmUgdGhlIG9uZXMgYmVpbmcgdXNlZCBmb3IgdGhlIGBjX3NyYXRlYCBhbmQgYHBfc3JhdGVgIHNldHRpbmdzLiBJIHNlZSB0aGF0IHRoZXkmIzM5O3JlIHN0YXRpYywgYW5kIHRoYXQmIzM5O3MgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0LiBJIHJlY2FsbCB0aGV5JiMzOTtyZSBhc3NpZ25lZCB0byBjb25maWdmcyBhdHRyaWJ1dGVzIHVzaW5nIGBDT05GSUdGU19BVFRSYC4gUmlnaHQsIHNvIGBDT05GSUdGU19BVFRSYCBjcmVhdGVzLCBmb3IgZXhhbXBsZSwgYGZfdWFjMV9vcHRzX2F0dHJfY19zcmF0ZWAsIHdoaWNoIHBvaW50cyB0byBgZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZWAuCgpCZWNhdXNlIHRoZXNlIGFyZSBzdGF0aWMgZnVuY3Rpb25zLCBJIGltbWVkaWF0ZWx5IGNvbnNpZGVyIHBvdGVudGlhbCBpc3N1ZXMuIFRoZXkgKm1pZ2h0KiBub3QgYmUgZXhwb3J0ZWQgYXMgZ2xvYmFsIHN5bWJvbHMsIGJ1dCBzaW5jZSB0aGV5JiMzOTtyZSBkZWZpbml0ZWx5IHJlYWNoYWJsZSB2aWEgY29uZmlnZnMgKGJlaW5nIHBhc3NlZCBhcyBmdW5jdGlvbiBwb2ludGVycyBpbiBjb25maWdmcyBzdHJ1Y3R1cmVzKSwgdGhleSBhcmUgYXZhaWxhYmxlLiBJIHdhcyB3b25kZXJpbmcgaWYgdGhleSBhcmUgaW5saW5lZCwgYnV0IHRoYXQgd29uJiMzOTt0IGhhcHBlbiBiZWNhdXNlIHRoZXkgYXJlIHBhc3NlZCBhcyBmdW5jdGlvbiBwb2ludGVycyB0byBjb25maWdmcyBzdHJ1Y3R1cmVzLiBTbywgZXZlbiB0aG91Z2ggdGhleSBhcmUgc3RhdGljLCBJIGtub3cgdGhleSB3aWxsIGhhdmUgZGlzdGluY3QgYWRkcmVzc2VzLiBTeXprYWxsZXIgY291bGQgaGF2ZSB0cm91YmxlIHJlc29sdmluZyB0aGUgbmFtZXMsIGJ1dCB0aGF0JiMzOTtzIG5vdCBhIHByb2JsZW0sIGJlY2F1c2UgdGhleSBhcmUgaW4gYGthbGxzeW1zYCBhbmQgaXQgY2FuIHJlc29sdmUgdGhlIG5hbWVzLiBBY3R1YWxseSwgSSB3YXMganVzdCByZWFkaW5nIHRoZSBwcm9tcHQgYWJvdXQgcHJlZmVycmluZyBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeXBvaW50IGZ1bmN0aW9ucywgYnV0IHNpbmNlIHRoZXNlIGFyZSB1c2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzLCB0aGV5IGFyZSAqbm90KiBpbmxpbmVkIGFuZCBhcmUgZmluZSB0byB1c2UuCgpOb3csIGxldCBtZSB6b29tIG91dC4gVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlc2UgYGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlYCBhbmQgYGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlYCBmdW5jdGlvbnMgaW4gdGhlIGBVQUMxX1JBVEVfQVRUUklCVVRFYCBhbmQgYFVBQzJfUkFURV9BVFRSSUJVVEVgIHN0cnVjdHVyZXMuIFRoaXMgcG9pbnRzIHRvIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGNvbmZpZ2ZzIHN0b3JlIGNhbGxiYWNrcyBmb3IgVVNCIEF1ZGlvIENsYXNzIDEgYW5kIDIgZ2FkZ2V0IGRyaXZlcnMuIFRoZSBsZWFrIGNvbWVzIGZyb20gYHN0cnNlcGAgbW9kaWZ5aW5nIHRoZSBwb2ludGVyLCB3aGljaCBjYXVzZXMgdGhlIGBrZnJlZWAgdG8gZnJlZSB0aGUgd3JvbmcgbWVtb3J5IGFkZHJlc3MuIFRoZSBmaXgsIHRoZW4sIGlzIHRvIHByZXNlcnZlIHRoZSBvcmlnaW5hbCBwb2ludGVyIHNvIHRoZSBjb3JyZWN0IG1lbW9yeSBnZXRzIGZyZWVkLiBUaGlzIGNvZGUmIzM5O3MgcmVhY2hhYmxlIHdoZW4gY29uZmlndXJpbmcgVVNCIGdhZGdldHMgdXNpbmcgY29uZmlnZnMgYW5kIHRoZSBkdW1teSBIQ0QuCgpUbyB0ZXN0IHRoaXMsIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIHRoZXNlIGNvbmZpZ3VyYXRpb25zOiBgVVNCX0dBREdFVGAsIGBVU0JfRFVNTVlfSENEYCwgYFVTQl9DT05GSUdGU2AsIGBVU0JfQ09ORklHRlNfRl9VQUMxYCwgYFVTQl9DT05GSUdGU19GX1VBQzJgLCBhbmQgYFNORGAuIEkmIzM5O2xsIGRvdWJsZSBjaGVjayBgQ09ORklHX1VTQl9DT05GSUdGU19GX1VBQzFgLCBhbmQsIHllcywgdGhhdCBpcyB0aGUgY29ycmVjdCBuYW1lLiBJdCBkZXBlbmRzIG9uIGBVU0JfQ09ORklHRlNgIGFuZCBgU05EYC4gTm8gb3RoZXIgZGVwZW5kZW5jaWVzPyBMZXQgbWUgZG91YmxlLWNoZWNrIGBVU0JfQ09ORklHRlNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0NPTkZJR0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMjM9Y29uZmlnIFVTQl9GX1RDTVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIyNy1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIyODpjb25maWcgVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMjktXHR0cmlzdGF0ZSBcJiMzNDtVU0IgR2FkZ2V0IGZ1bmN0aW9ucyBjb25maWd1cmFibGUgdGhyb3VnaCBjb25maWdmc1wmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIzOS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0MDpjb25maWcgVVNCX0NPTkZJR0ZTX1NFUklBTFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjQxLVx0Ym9vbCBcJiMzNDtHZW5lcmljIHNlcmlhbCBidWxrIGluL291dFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI0OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0OTpjb25maWcgVVNCX0NPTkZJR0ZTX0FDTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjUwLVx0Ym9vbCBcJiMzNDtBYnN0cmFjdCBDb250cm9sIE1vZGVsIChDREMgQUNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI1OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI1OTpjb25maWcgVVNCX0NPTkZJR0ZTX09CRVhcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7T2JqZWN0IEV4Y2hhbmdlIE1vZGVsIChDREMgT0JFWClcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNjk6Y29uZmlnIFVTQl9DT05GSUdGU19OQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI3MC1cdGJvb2wgXCYjMzQ7TmV0d29yayBDb250cm9sIE1vZGVsIChDREMgTkNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI4MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtFdGhlcm5ldCBDb250cm9sIE1vZGVsIChDREMgRUNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5Mi1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI5Mzpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTV9TVUJTRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5NC1cdGJvb2wgXCYjMzQ7RXRoZXJuZXQgQ29udHJvbCBNb2RlbCAoQ0RDIEVDTSkgc3Vic2V0XCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzAyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzAzOmNvbmZpZyBVU0JfQ09ORklHRlNfUk5ESVNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMwNC1cdGJvb2wgXCYjMzQ7Uk5ESVNcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMTgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMTk6Y29uZmlnIFVTQl9DT05GSUdGU19FRU1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMyMC1cdGJvb2wgXCYjMzQ7RXRoZXJuZXQgRW11bGF0aW9uIE1vZGVsIChFRU0pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzM0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM1OmNvbmZpZyBVU0JfQ09ORklHRlNfUEhPTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzYtXHRib29sIFwmIzM0O1Bob25ldCBwcm90b2NvbFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM0NTpjb25maWcgVVNCX0NPTkZJR0ZTX01BU1NfU1RPUkFHRVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQ2LVx0Ym9vbCBcJiMzNDtNYXNzIHN0b3JhZ2VcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNTY6Y29uZmlnIFVTQl9DT05GSUdGU19GX0xCX1NTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTctXHRib29sIFwmIzM0O0xvb3BiYWNrIGFuZCBzb3VyY2VzaW5rIGZ1bmN0aW9uIChmb3IgdGVzdGluZylcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNjgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNjk6Y29uZmlnIFVTQl9DT05GSUdGU19GX0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNzAtXHRib29sIFwmIzM0O0Z1bmN0aW9uIGZpbGVzeXN0ZW0gKEZ1bmN0aW9uRlMpXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzgwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODItXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDEuMFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM5OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM5OTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMV9MRUdBQ1lcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wIChsZWdhY3kgaW1wbGVtZW50YXRpb24pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDExLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDEyOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMyXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTMtXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDIuMFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQzMC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQzMTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTUlESVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDMyLVx0Ym9vbCBcJiMzNDtNSURJIGZ1bmN0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDQ1OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9NSURJMlxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ2LVx0Ym9vbCBcJiMzNDtNSURJIDIuMCBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ1Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ1ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NTktXHRib29sIFwmIzM0O0hJRCBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ2ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVVZDXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NjktXHRib29sIFwmIzM0O1VTQiBXZWJjYW0gZnVuY3Rpb25cJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00ODAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0ODE6Y29uZmlnIFVTQl9DT05GSUdGU19GX1BSSU5URVJcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4Mi1cdGJvb2wgXCYjMzQ7UHJpbnRlciBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ5NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5NTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTYtXHRib29sIFwmIzM0O1VTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODgxMwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDUwNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVVNCIENvbmZpZ0ZTIGZvciBTb3VuZCBTdXBwb3J0KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCBgVVNCX0NPTkZJR0ZTYCByZXF1aXJlcyBgVVNCX0dBREdFVGAsIHNvIHRob3NlIGFyZSBkZWZpbml0ZWx5IGluIHRoZSBtaXguIFRoZW4sIHdlIGhhdmUgYFVTQl9EVU1NWV9IQ0RgIGFuZCB0aGUgYWN0dWFsIGBVU0JfQ09ORklHRlNgIGl0c2VsZi4gRnVydGhlciwgd2Ugc2VlIGBVU0JfQ09ORklHRlNfRl9VQUMxYCwgYFVTQl9DT05GSUdGU19GX1VBQzJgLCBhbmQgYFNORGAuCgpOb3csIGhlcmUmIzM5O3Mgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gYFVTQl9DT05GSUdGU2AgaXMgdHJpc3RhdGUsIG1lYW5pbmcgaXQgY2FuIGJlIGEgbW9kdWxlIG9yIGJ1aWx0LWluLCBvciBkaXNhYmxlZC4gQnV0IGBVU0JfQ09ORklHRlNfRl9VQUMxYCBpcyBhIGJvb2xlYW4uIFRoYXQgbWVhbnMgYFVTQl9DT05GSUdGU19GX1VBQzFgIGlzIGdvaW5nIHRvIGVpdGhlciBiZSBidWlsdCBpbnRvIHRoZSBgdXNiX2ZfdWFjMWAgbW9kdWxlLCBvciBkaXJlY3RseSBpbnRvIHRoZSBrZXJuZWwuCgpJIG5lZWQgdG8gY29uZmlybSB0aGUgZnVuY3Rpb24gbmFtZXMuIEl0IGxvb2tzIGxpa2UgYGZfdWFjMV9vcHRzX2Nfc3JhdGVfc3RvcmVgIGlzIGluZGVlZCB0aGUgYWN0dWFsIG5hbWUuIExldCYjMzk7cyBzZWUuLi4gWXVwLCBoZXJlJiMzOTtzIHRoZSBtYWNybzoKCmBgYGMKI2RlZmluZSBVQUMxX1JBVEVfQVRUUklCVVRFKG5hbWUpCQkJCQlcCnN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLAlcCgkJCQkJIGNoYXIgKnBhZ2UpCQkJXAouLi4Kc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLAlcCgkJCQkJICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgbGVuKQlcCmBgYAoKT2theSwgYW5kIGl0JiMzOTtzIGJlaW5nIHVzZWQgd2l0aCBgY19zcmF0ZWAgYW5kIGBwX3NyYXRlYC4gU28gd2UgaGF2ZSBgZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZWAsIGBmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlYCwgYGZfdWFjMl9vcHRzX2Nfc3JhdGVfc3RvcmVgLCBhbmQgYGZfdWFjMl9vcHRzX3Bfc3JhdGVfc3RvcmVgLgoKVGhlc2UgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBmdW5jdGlvbmFsLCBhbmQgYXJlIGZpeGluZyBhIG1lbW9yeSBsZWFrISBUaGlzIG1lcml0cyBzb21lIGZ1enppbmcgZm9yIHN1cmUuCgpMZXQmIzM5O3MgZG8gYSBxdWljayBzd2VlcCB0byBzZWUgaWYgYW55IG90aGVyIGZ1bmN0aW9ucyBhcmUgdG91Y2hlZC4uLiBObywgdGhlIHBhdGNoIGFwcGVhcnMgdG8gc29sZWx5IG1vZGlmeSB0aGUgYGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlYCBhbmQgYGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlYCBmdW5jdGlvbnMgd2l0aGluIHRoZSBgVUFDMV9SQVRFX0FUVFJJQlVURWAgYW5kIGBVQUMyX1JBVEVfQVRUUklCVVRFYCBtYWNyb3MuCgpGaW5hbGx5LCBJIHdvbmRlciBpZiBgQ09ORklHRlNfRlNgIGlzIHJlcXVpcmVkLiBJJiMzOTtsbCBiZXQgYFVTQl9DT05GSUdGU2AgZWl0aGVyIHNlbGVjdHMgb3IgZGVwZW5kcyBvbiBpdC4gSSBzaG91bGQgdmVyaWZ5IHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfQ09ORklHRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTIyMz1jb25maWcgVVNCX0ZfVENNXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjI3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjI4OmNvbmZpZyBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIyOS1cdHRyaXN0YXRlIFwmIzM0O1VTQiBHYWRnZXQgZnVuY3Rpb25zIGNvbmZpZ3VyYWJsZSB0aHJvdWdoIGNvbmZpZ2ZzXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjM5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjQwOmNvbmZpZyBVU0JfQ09ORklHRlNfU0VSSUFMXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNDEtXHRib29sIFwmIzM0O0dlbmVyaWMgc2VyaWFsIGJ1bGsgaW4vb3V0XCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjQ4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjQ5OmNvbmZpZyBVU0JfQ09ORklHRlNfQUNNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNTAtXHRib29sIFwmIzM0O0Fic3RyYWN0IENvbnRyb2wgTW9kZWwgKENEQyBBQ00pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjU4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjU5OmNvbmZpZyBVU0JfQ09ORklHRlNfT0JFWFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjYwLVx0Ym9vbCBcJiMzNDtPYmplY3QgRXhjaGFuZ2UgTW9kZWwgKENEQyBPQkVYKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI2OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI2OTpjb25maWcgVVNCX0NPTkZJR0ZTX05DTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjcwLVx0Ym9vbCBcJiMzNDtOZXR3b3JrIENvbnRyb2wgTW9kZWwgKENEQyBOQ00pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjgwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRUNNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yODItXHRib29sIFwmIzM0O0V0aGVybmV0IENvbnRyb2wgTW9kZWwgKENEQyBFQ00pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjkyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjkzOmNvbmZpZyBVU0JfQ09ORklHRlNfRUNNX1NVQlNFVFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFdGhlcm5ldCBDb250cm9sIE1vZGVsIChDREMgRUNNKSBzdWJzZXRcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMDItXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMDM6Y29uZmlnIFVTQl9DT05GSUdGU19STkRJU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzA0LVx0Ym9vbCBcJiMzNDtSTkRJU1wmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMxOC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMxOTpjb25maWcgVVNCX0NPTkZJR0ZTX0VFTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzIwLVx0Ym9vbCBcJiMzNDtFdGhlcm5ldCBFbXVsYXRpb24gTW9kZWwgKEVFTSlcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzQtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMzU6Y29uZmlnIFVTQl9DT05GSUdGU19QSE9ORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMzNi1cdGJvb2wgXCYjMzQ7UGhvbmV0IHByb3RvY29sXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQ0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzQ1OmNvbmZpZyBVU0JfQ09ORklHRlNfTUFTU19TVE9SQUdFXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNDYtXHRib29sIFwmIzM0O01hc3Mgc3RvcmFnZVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM1NS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM1Njpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTEJfU1NcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM1Ny1cdGJvb2wgXCYjMzQ7TG9vcGJhY2sgYW5kIHNvdXJjZXNpbmsgZnVuY3Rpb24gKGZvciB0ZXN0aW5nKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM2OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM2OTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM3MC1cdGJvb2wgXCYjMzQ7RnVuY3Rpb24gZmlsZXN5c3RlbSAoRnVuY3Rpb25GUylcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozODE6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4Mi1cdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzk4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Mzk5OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxX0xFR0FDWVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDAwLVx0Ym9vbCBcJiMzNDtBdWRpbyBDbGFzcyAxLjAgKGxlZ2FjeSBpbXBsZW1lbnRhdGlvbilcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTEtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MTI6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzJcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQxMy1cdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMi4wXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDMwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDMxOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9NSURJXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MzItXHRib29sIFwmIzM0O01JREkgZnVuY3Rpb25cJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NDQtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0NDU6Y29uZmlnIFVTQl9DT05GSUdGU19GX01JREkyXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NDYtXHRib29sIFwmIzM0O01JREkgMi4wIGZ1bmN0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDU3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDU4OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9ISURcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ1OS1cdGJvb2wgXCYjMzQ7SElEIGZ1bmN0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDY3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDY4OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VVkNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2OS1cdGJvb2wgXCYjMzQ7VVNCIFdlYmNhbSBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfUFJJTlRFUlxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDgyLVx0Ym9vbCBcJiMzNDtQcmludGVyIGZ1bmN0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDk1OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ5Ni1cdGJvb2wgXCYjMzQ7VVNCIEdhZGdldCBUYXJnZXQgRmFicmljXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNDA2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBVU0JfQ09ORklHRlMgRGVwZW5kZW5jaWVzKioKCk9rYXksIHRpbWUgdG8gZ2V0IHRvIHRoZSBjb3JlIG9mIHRoaXMuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGltbWVkaWF0ZWx5IGdyYXZpdGF0ZXMgdG93YXJkcyB0aGUgZGVwZW5kZW5jaWVzIGFzc29jaWF0ZWQgd2l0aCBgVVNCX0NPTkZJR0ZTYC4gSSBrbm93IHRoZSBiYXNpY3MsIHRoZSBoaWdoLWxldmVsIGFyY2hpdGVjdHVyZSwgYnV0IEkgd2FudCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbCBsdXJraW5nIGluIHRoZSB1bmRlcmx5aW5nIG1vZHVsZXMgb3Igc3Vic3lzdGVtcy4gSXQmIzM5O3MgYSBxdWljayBtZW50YWwgc2NhbiwgY3Jvc3MtcmVmZXJlbmNpbmcgbXkga25vd2xlZGdlIG9mIHRoZSByZWxldmFudCBrZXJuZWwgbW9kdWxlczogYGdhZGdldGZzYCwgYHVkY2AsIGBnX2V0aGVyYCwgYW5kIG1heWJlIGV2ZW4gc29tZSBvZiB0aGUgbW9yZSBlc290ZXJpYyBVU0IgZnVuY3Rpb24gZHJpdmVycyBkZXBlbmRpbmcgb24gdGhlIHNwZWNpZmljIHVzZSBjYXNlLiBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHBvdGVudGlhbCBjb25mbGljdHMgb3IgaW50ZXJhY3Rpb24gaXNzdWVzLiBJIHdhbnQgdG8gcnVsZSBvdXQgYW55IGdvdGNoYXMgd2l0aCB0aGUgVVNCIGNvbnRyb2xsZXIgZHJpdmVyLCB0aGUgcGxhdGZvcm0tc3BlY2lmaWMgZ2x1ZSBjb2RlLCBvciBldmVuIHNvbWV0aGluZyBsZXNzIG9idmlvdXMgbGlrZSBhIHBvd2VyIG1hbmFnZW1lbnQgaW50ZXJhY3Rpb24uIFRoaXMgaXNuJiMzOTt0IGp1c3QgYWJvdXQgZnVuY3Rpb25hbGl0eTsgaXQmIzM5O3MgYWJvdXQgc3RhYmlsaXR5IGFuZCBwZXJmb3JtYW5jZSwgZW5zdXJpbmcgdGhhdCB0aGlzIGNvbmZpZ3VyYXRpb24gaW50ZWdyYXRlcyBjbGVhbmx5IHdpdGggZXZlcnl0aGluZyBlbHNlLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoIFVTQiBwb3dlciBtYW5hZ2VtZW50IGFuZCBzeXN0ZW0td2lkZSByZXNvdXJjZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIyNTpcdFxuIDIyNjpcdCMgdGhpcyBmaXJzdCBzZXQgb2YgZHJpdmVycyBhbGwgZGVwZW5kIG9uIGJ1bGstY2FwYWJsZSBoYXJkd2FyZS5cbiAyMjc6XHRcbiAyMjg6XHRjb25maWcgVVNCX0NPTkZJR0ZTXG4gMjI5Olx0XHR0cmlzdGF0ZSBcJiMzNDtVU0IgR2FkZ2V0IGZ1bmN0aW9ucyBjb25maWd1cmFibGUgdGhyb3VnaCBjb25maWdmc1wmIzM0O1xuIDIzMDpcdFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcbiAyMzE6XHRcdGhlbHBcbiAyMzI6XHRcdCAgQSBMaW51eCBVU0IgXCYjMzQ7Z2FkZ2V0XCYjMzQ7IGNhbiBiZSBzZXQgdXAgdGhyb3VnaCBjb25maWdmcy5cbiAyMzM6XHRcdCAgSWYgdGhpcyBpcyB0aGUgY2FzZSwgdGhlIFVTQiBmdW5jdGlvbnMgKHdoaWNoIGZyb20gdGhlIGhvc3QmIzM5O3NcbiAyMzQ6XHRcdCAgcGVyc3BlY3RpdmUgYXJlIHNlZW4gYXMgaW50ZXJmYWNlcykgYW5kIGNvbmZpZ3VyYXRpb25zIGFyZVxuIDIzNTpcdFx0ICBzcGVjaWZpZWQgc2ltcGx5IGJ5IGNyZWF0aW5nIGFwcHJvcHJpYXRlIGRpcmVjdG9yaWVzIGluIGNvbmZpZ2ZzLlxuIDIzNjpcdFx0ICBBc3NvY2lhdGluZyBmdW5jdGlvbnMgd2l0aCBjb25maWd1cmF0aW9ucyBpcyBkb25lIGJ5IGNyZWF0aW5nXG4gMjM3Olx0XHQgIGFwcHJvcHJpYXRlIHN5bWJvbGljIGxpbmtzLlxuIDIzODpcdFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgRG9jdW1lbnRhdGlvbi91c2IvZ2FkZ2V0X2NvbmZpZ2ZzLnJzdC5cbiAyMzk6XHRcbiAyNDA6XHRjb25maWcgVVNCX0NPTkZJR0ZTX1NFUklBTFxuIDI0MTpcdFx0Ym9vbCBcJiMzNDtHZW5lcmljIHNlcmlhbCBidWxrIGluL291dFwmIzM0O1xuIDI0MjpcdFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbiAyNDM6XHRcdGRlcGVuZHMgb24gVFRZXG4gMjQ0Olx0XHRzZWxlY3QgVVNCX1VfU0VSSUFMXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTk4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqSW52ZXN0aWdhdGluZyBVU0JfQ09ORklHRlMgRGVwZW5kZW5jeSBvbiBDT05GSUdGU19GUyoqCgpIbW0sIHRoaXMgaXMgaW50ZXJlc3RpbmcuIEkmIzM5O20gdGFraW5nIGEgY2xvc2UgbG9vayBhdCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYFVTQl9DT05GSUdGU2AgYW5kIGBDT05GSUdGU19GU2AuIEl0JiMzOTtzIG5vdCBpbW1lZGlhdGVseSBvYnZpb3VzIHRoYXQgYFVTQl9DT05GSUdGU2AgKnJlcXVpcmVzKiBgQ09ORklHRlNfRlNgIGRpcmVjdGx5LiBUaGF0JiMzOTtzIGEgYml0IHN1cnByaXNpbmcsIEkgZmlndXJlZCBpdCB3b3VsZCBiZSBhIGhhcmQgZGVwZW5kZW5jeS4gU28sIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHRvIHNlZSBpZiBgQ09ORklHRlNfRlNgIGlzIGltcGxpY2l0bHkgcHVsbGVkIGluIGJ5IHNvbWUgb3RoZXIgY29tcG9uZW50IG9yIGlmIGl0JiMzOTtzIHN0cmljdGx5IG5lY2Vzc2FyeSBmb3IgYFVTQl9DT05GSUdGU2AgdG8gZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXJlJiMzOTtzIGFuIGluZGlyZWN0IGRlcGVuZGVuY3kgaGVyZSwgb3IgaWYgdGhlIGRvY3VtZW50YXRpb24gaXMganVzdCB2YWd1ZS4gVGltZSB0byBpbnZlc3RpZ2F0ZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTM6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IENPTkZJR0ZTX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0xNDU9Y29uZmlnIFVTQl9MSUJDT01QT1NJVEVcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE0Ni1cdHRyaXN0YXRlXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNDc6XHRzZWxlY3QgQ09ORklHRlNfRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE0OC1cdGRlcGVuZHMgb24gVVNCX0dBREdFVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjM0MAoJCQkJCQkJb3V0cHV0OiAyMzcKCQkJCQkJCXRob3VnaHRzOiAyNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgVVNCIENvbmZpZ2ZzIGFuZCBVQUMgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBzZWUgdGhhdCBgVVNCX0xJQkNPTVBPU0lURWAgZGlyZWN0bHkgc2VsZWN0cyBgQ09ORklHRlNfRlNgLCBhbmQsIGluIHR1cm4sIGBVU0JfQ09ORklHRlNgIHNlbGVjdHMgYFVTQl9MSUJDT01QT1NJVEVgLiBUaGlzIG1lYW5zIGBDT05GSUdGU19GU2AgaXMgZWZmZWN0aXZlbHkgZ3VhcmFudGVlZCB0byBiZSBlbmFibGVkIGFzIGEgZGVwZW5kZW5jeS4gTm93LCBJIGhhdmUgd2hhdCBJIG5lZWQgdG8gc3VtbWFyaXplIHRoZSByZXN1bHRzLgoKVGhpcyBpcyBhIHNjZW5hcmlvIHdvcnRoIGZ1enppbmcsIHRoYXQgbXVjaCBpcyBjbGVhci4gVGhlIGtleSBmdW5jdGlvbnMgdG8gdGFyZ2V0IGFyZSB0aGUgYGZfdWFjMV9vcHRzX2Nfc3JhdGVfc3RvcmVgLCBgZl91YWMxX29wdHNfcF9zcmF0ZV9zdG9yZWAsIGBmX3VhYzJfb3B0c19jX3NyYXRlX3N0b3JlYCwgYW5kIGBmX3VhYzJfb3B0c19wX3NyYXRlX3N0b3JlYCBmdW5jdGlvbnMsIGFzIGlkZW50aWZpZWQuCgpUbyB0cmlnZ2VyIHRoZSB2dWxuZXJhYmlsaXR5LCBJJiMzOTtsbCBuZWVkIHRvIGVuYWJsZSBhIHN1aXRlIG9mIGNvbmZpZ3VyYXRpb25zOiBgVVNCX0dBREdFVGAsIGBVU0JfRFVNTVlfSENEYCwgYFVTQl9DT05GSUdGU2AsIGBVU0JfQ09ORklHRlNfRl9VQUMxYCwgYFVTQl9DT05GSUdGU19GX1VBQzJgLCBhbmQgYFNORGAuIFRoaXMgY29tYmluYXRpb24gbGlrZWx5IHNldHMgdXAgdGhlIG5lY2Vzc2FyeSBpbmZyYXN0cnVjdHVyZTogYSBVU0IgZ2FkZ2V0IGZyYW1ld29yaywgYSBkdW1teSBob3N0IGNvbnRyb2xsZXIgZm9yIHZpcnR1YWxpemVkIHRlc3RpbmcsIGFuZCB0aGUgY29uZmlnZnMgVUFDIChVU0IgQXVkaW8gQ2xhc3MpIGZ1bmN0aW9uYWxpdGllcy4gVGhlIGBTTkRgIGNvbmZpZ3VyYXRpb24gaXMgbGlrZWx5IHJlbGF0ZWQgdG8gdGhlIHNvdW5kIGluZnJhc3RydWN0dXJlIGFuZCBVQUMgZHJpdmVycy4KClRoZSBjcnV4IG9mIHRoZSBtYXR0ZXIgaXMgdGhlIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBtZW1vcnkgbGVhay4gU3BlY2lmaWNhbGx5LCB0aGUgcHJvYmxlbWF0aWMgbG9naWMgaXMgcm9vdGVkIGluIGNvbmZpZ2ZzIHN0b3JlIGNhbGxiYWNrcyBmb3IgVVNCIEF1ZGlvIENsYXNzIDEgYW5kIDIgZ2FkZ2V0IGRyaXZlcnMuIFRoZSBgc3Ryc2VwYCBmdW5jdGlvbiBpcyB0aGUgY3VscHJpdC4gSXQgbW9kaWZpZXMgdGhlIHBvaW50ZXIgaXQmIzM5O3Mgb3BlcmF0aW5nIG9uLCBsZWFkaW5nIHRvIGFuIGluY29ycmVjdCBga2ZyZWVgIGNhbGwgYW5kIG1lbW9yeSBjb3JydXB0aW9uLiBUaGUgdnVsbmVyYWJpbGl0eSBpcyB0cmlnZ2VyZWQgd2hlbiBjb25maWd1cmluZyBVU0IgZ2FkZ2V0cyB0aHJvdWdoIGNvbmZpZ2ZzLiBHaXZlbiB0aGUgcHJlc2VuY2Ugb2YgYFVTQl9EVU1NWV9IQ0RgLCBJIGNhbiBpbmZlciB0aGlzIGlzIGV4cGxvaXRhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgd2hpY2ggaXMgZXhhY3RseSB0aGUga2luZCBvZiB0ZXN0IGVudmlyb25tZW50IEkmIzM5O20gYWx3YXlzIGxvb2tpbmcgZm9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVNCX0dBREdFVCYjMzQ7LAogICAgJiMzNDtVU0JfRFVNTVlfSENEJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGUyYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlNfRl9VQUMxJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGU19GX1VBQzImIzM0OywKICAgICYjMzQ7U05EJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Zl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlJiMzNDssCiAgICAmIzM0O2ZfdWFjMl9vcHRzX2Nfc3JhdGVfc3RvcmUmIzM0OywKICAgICYjMzQ7Zl91YWMyX29wdHNfcF9zcmF0ZV9zdG9yZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBjb25maWdmcyBzdG9yZSBjYWxsYmFja3MgZm9yIFVTQiBBdWRpbyBDbGFzcyAxIGFuZCAyIGdhZGdldCBkcml2ZXJzLiBUaGUgbGVhayBvY2N1cnMgYmVjYXVzZSBgc3Ryc2VwYCBtb2RpZmllcyB0aGUgcG9pbnRlciwgY2F1c2luZyBga2ZyZWVgIHRvIGZyZWUgdGhlIHdyb25nIGFkZHJlc3MuIEJ5IGtlZXBpbmcgdGhlIG9yaWdpbmFsIHBvaW50ZXIsIHRoZSBtZW1vcnkgaXMgY29ycmVjdGx5IGZyZWVkLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBjb25maWdmcyB3aGVuIGNvbmZpZ3VyaW5nIFVTQiBnYWRnZXRzLCB3aGljaCBpcyBzdXBwb3J0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHRoZSBkdW1teSBIQ0QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0RVTU1ZX0hDRCYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlMmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTX0ZfVUFDMSYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlNfRl9VQUMyJiMzNDssCiAgICAmIzM0O1NORCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ZfdWFjMV9vcHRzX2Nfc3JhdGVfc3RvcmUmIzM0OywKICAgICYjMzQ7Zl91YWMxX29wdHNfcF9zcmF0ZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtmX3VhYzJfb3B0c19jX3NyYXRlX3N0b3JlJiMzNDssCiAgICAmIzM0O2ZfdWFjMl9vcHRzX3Bfc3JhdGVfc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgY29uZmlnZnMgc3RvcmUgY2FsbGJhY2tzIGZvciBVU0IgQXVkaW8gQ2xhc3MgMSBhbmQgMiBnYWRnZXQgZHJpdmVycy4gVGhlIGxlYWsgb2NjdXJzIGJlY2F1c2UgYHN0cnNlcGAgbW9kaWZpZXMgdGhlIHBvaW50ZXIsIGNhdXNpbmcgYGtmcmVlYCB0byBmcmVlIHRoZSB3cm9uZyBhZGRyZXNzLiBCeSBrZWVwaW5nIHRoZSBvcmlnaW5hbCBwb2ludGVyLCB0aGUgbWVtb3J5IGlzIGNvcnJlY3RseSBmcmVlZC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgY29uZmlnZnMgd2hlbiBjb25maWd1cmluZyBVU0IgZ2FkZ2V0cywgd2hpY2ggaXMgc3VwcG9ydGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB0aGUgZHVtbXkgSENELiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDM6MDMuNTg0NjUxMjgzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwODA2OTg1NzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9HQURHRVRcIixcbiAgICBcIlVTQl9EVU1NWV9IQ0RcIixcbiAgICBcIlVTQl9DT05GSUdGU1wiLFxuICAgIFwiVVNCX0NPTkZJR0ZTX0ZfVUFDMVwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTX0ZfVUFDMlwiLFxuICAgIFwiU05EXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZVwiLFxuICAgIFwiZl91YWMxX29wdHNfcF9zcmF0ZV9zdG9yZVwiLFxuICAgIFwiZl91YWMyX29wdHNfY19zcmF0ZV9zdG9yZVwiLFxuICAgIFwiZl91YWMyX29wdHNfcF9zcmF0ZV9zdG9yZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGNvbmZpZ2ZzIHN0b3JlIGNhbGxiYWNrcyBmb3IgVVNCIEF1ZGlvIENsYXNzIDEgYW5kIDIgZ2FkZ2V0IGRyaXZlcnMuIFRoZSBsZWFrIG9jY3VycyBiZWNhdXNlIGBzdHJzZXBgIG1vZGlmaWVzIHRoZSBwb2ludGVyLCBjYXVzaW5nIGBrZnJlZWAgdG8gZnJlZSB0aGUgd3JvbmcgYWRkcmVzcy4gQnkga2VlcGluZyB0aGUgb3JpZ2luYWwgcG9pbnRlciwgdGhlIG1lbW9yeSBpcyBjb3JyZWN0bHkgZnJlZWQuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIGNvbmZpZ2ZzIHdoZW4gY29uZmlndXJpbmcgVVNCIGdhZGdldHMsIHdoaWNoIGlzIHN1cHBvcnRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgdGhlIGR1bW15IEhDRC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDM6MDMuNTg0NjU2NDcyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjA0MjIyMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzYmRmZjE0YjZhN2FhM2YzMTcwNzkwMDc2Y2E5NzFiNTRmNmRkNTA5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMgMTM6MDM6MDIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jXFxuaW5kZXggODVjNTAyZTk4ZjU3Ny4uYmExYTlmNTFjNTQ0YyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmNcXG4rKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmNcXG5AQCAtMTU5NSw2ICsxNTk1LDcgQEAgc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcdFxcXFxcXG4ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0c3RydWN0IGZfdWFjMV9vcHRzICpvcHRzID0gdG9fZl91YWMxX29wdHMoaXRlbSk7XFx0XFx0XFxcXFxcbiBcXHRjaGFyICpzcGxpdF9wYWdlID0gTlVMTDtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGNoYXIgKnNwbGl0X3BhZ2VfYWxsb2MgPSBOVUxMO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0aW50IHJldCA9IC1FSU5WQUw7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRjaGFyICp0b2tlbjtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdHUzMiBudW07XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbkBAIC0xNjA4LDcgKzE2MDksMTIgQEAgc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcdFxcXFxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRpID0gMDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdG1lbXNldChvcHRzLVxcdTAwM2VuYW1lIyNzLCAweDAwLCBzaXplb2Yob3B0cy1cXHUwMDNlbmFtZSMjcykpO1xcdFxcdFxcXFxcXG4tXFx0c3BsaXRfcGFnZSA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRzcGxpdF9wYWdlX2FsbG9jID0ga3N0cmR1cChwYWdlLCBHRlBfS0VSTkVMKTtcXHRcXHRcXHRcXFxcXFxuK1xcdGlmICghc3BsaXRfcGFnZV9hbGxvYykge1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0cmV0ID0gLUVOT01FTTtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdGdvdG8gZW5kO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0fVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0c3BsaXRfcGFnZSA9IHNwbGl0X3BhZ2VfYWxsb2M7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHR3aGlsZSAoKHRva2VuID0gc3Ryc2VwKFxcdTAwMjZzcGxpdF9wYWdlLCBcXFwiLFxcXCIpKSAhPSBOVUxMKSB7XFx0XFx0XFxcXFxcbiBcXHRcXHRyZXQgPSBrc3RydG91MzIodG9rZW4sIDAsIFxcdTAwMjZudW0pO1xcdFxcdFxcdFxcXFxcXG4gXFx0XFx0aWYgKHJldClcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuQEAgLTE2MTksNyArMTYyNSw3IEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuIFxcdH07XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIGVuZDpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdGtmcmVlKHNwbGl0X3BhZ2UpO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0a2ZyZWUoc3BsaXRfcGFnZV9hbGxvYyk7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNm9wdHMtXFx1MDAzZWxvY2spO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0cmV0dXJuIHJldDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIH1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuY1xcbmluZGV4IDg5Nzc4N2QwODAzYzEuLmM5MmNhYTE0OTQyOGEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jXFxuKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jXFxuQEAgLTIwMTMsNiArMjAxMyw3IEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdHN0cnVjdCBmX3VhYzJfb3B0cyAqb3B0cyA9IHRvX2ZfdWFjMl9vcHRzKGl0ZW0pO1xcdFxcdFxcXFxcXG4gXFx0Y2hhciAqc3BsaXRfcGFnZSA9IE5VTEw7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRjaGFyICpzcGxpdF9wYWdlX2FsbG9jID0gTlVMTDtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGludCByZXQgPSAtRUlOVkFMO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0Y2hhciAqdG9rZW47XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHR1MzIgbnVtO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5AQCAtMjAyNiw3ICsyMDI3LDEyIEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0aSA9IDA7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRtZW1zZXQob3B0cy1cXHUwMDNlbmFtZSMjcywgMHgwMCwgc2l6ZW9mKG9wdHMtXFx1MDAzZW5hbWUjI3MpKTtcXHRcXHRcXFxcXFxuLVxcdHNwbGl0X3BhZ2UgPSBrc3RyZHVwKHBhZ2UsIEdGUF9LRVJORUwpO1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0c3BsaXRfcGFnZV9hbGxvYyA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7XFx0XFx0XFx0XFxcXFxcbitcXHRpZiAoIXNwbGl0X3BhZ2VfYWxsb2MpIHtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdHJldCA9IC1FTk9NRU07XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRnb3RvIGVuZDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdH1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHNwbGl0X3BhZ2UgPSBzcGxpdF9wYWdlX2FsbG9jO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0d2hpbGUgKCh0b2tlbiA9IHN0cnNlcChcXHUwMDI2c3BsaXRfcGFnZSwgXFxcIixcXFwiKSkgIT0gTlVMTCkge1xcdFxcdFxcXFxcXG4gXFx0XFx0cmV0ID0ga3N0cnRvdTMyKHRva2VuLCAwLCBcXHUwMDI2bnVtKTtcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdGlmIChyZXQpXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbkBAIC0yMDM3LDcgKzIwNDMsNyBAQCBzdGF0aWMgc3NpemVfdCBmX3VhYzJfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFx0XFxcXFxcbiBcXHR9O1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBlbmQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRrZnJlZShzcGxpdF9wYWdlKTtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGtmcmVlKHNwbGl0X3BhZ2VfYWxsb2MpO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZvcHRzLVxcdTAwM2Vsb2NrKTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdHJldHVybiByZXQ7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiB9XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMzowMzowMy45NDU3Mjk3NjdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMTA0NDU4OTgyNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0RVTU1ZX0hDRFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VQUMxXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VQUMyXCIsXG4gICAgXCJTTkRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmX3VhYzFfb3B0c19jX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzJfb3B0c19jX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzJfb3B0c19wX3NyYXRlX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgY29uZmlnZnMgc3RvcmUgY2FsbGJhY2tzIGZvciBVU0IgQXVkaW8gQ2xhc3MgMSBhbmQgMiBnYWRnZXQgZHJpdmVycy4gVGhlIGxlYWsgb2NjdXJzIGJlY2F1c2UgYHN0cnNlcGAgbW9kaWZpZXMgdGhlIHBvaW50ZXIsIGNhdXNpbmcgYGtmcmVlYCB0byBmcmVlIHRoZSB3cm9uZyBhZGRyZXNzLiBCeSBrZWVwaW5nIHRoZSBvcmlnaW5hbCBwb2ludGVyLCB0aGUgbWVtb3J5IGlzIGNvcnJlY3RseSBmcmVlZC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgY29uZmlnZnMgd2hlbiBjb25maWd1cmluZyBVU0IgZ2FkZ2V0cywgd2hpY2ggaXMgc3VwcG9ydGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB0aGUgZHVtbXkgSENELlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzYmRmZjE0YjZhN2FhM2YzMTcwNzkwMDc2Y2E5NzFiNTRmNmRkNTA5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAxMzowMzowMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuY1xuaW5kZXggODVjNTAyZTk4ZjU3Ny4uYmExYTlmNTFjNTQ0YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuY1xuKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jXG5AQCAtMTU5NSw2ICsxNTk1LDcgQEAgc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbiB7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdHN0cnVjdCBmX3VhYzFfb3B0cyAqb3B0cyA9IHRvX2ZfdWFjMV9vcHRzKGl0ZW0pO1x0XHRcXFxuIFx0Y2hhciAqc3BsaXRfcGFnZSA9IE5VTEw7XHRcdFx0XHRcdFxcXG4rXHRjaGFyICpzcGxpdF9wYWdlX2FsbG9jID0gTlVMTDtcdFx0XHRcdFx0XFxcbiBcdGludCByZXQgPSAtRUlOVkFMO1x0XHRcdFx0XHRcdFxcXG4gXHRjaGFyICp0b2tlbjtcdFx0XHRcdFx0XHRcdFxcXG4gXHR1MzIgbnVtO1x0XHRcdFx0XHRcdFx0XFxcbkBAIC0xNjA4LDcgKzE2MDksMTIgQEAgc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbiBcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0aSA9IDA7XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRtZW1zZXQob3B0cy1cdTAwM2VuYW1lIyNzLCAweDAwLCBzaXplb2Yob3B0cy1cdTAwM2VuYW1lIyNzKSk7XHRcdFxcXG4tXHRzcGxpdF9wYWdlID0ga3N0cmR1cChwYWdlLCBHRlBfS0VSTkVMKTtcdFx0XHRcdFxcXG4rXHRzcGxpdF9wYWdlX2FsbG9jID0ga3N0cmR1cChwYWdlLCBHRlBfS0VSTkVMKTtcdFx0XHRcXFxuK1x0aWYgKCFzcGxpdF9wYWdlX2FsbG9jKSB7XHRcdFx0XHRcdFxcXG4rXHRcdHJldCA9IC1FTk9NRU07XHRcdFx0XHRcdFx0XFxcbitcdFx0Z290byBlbmQ7XHRcdFx0XHRcdFx0XFxcbitcdH1cdFx0XHRcdFx0XHRcdFx0XFxcbitcdHNwbGl0X3BhZ2UgPSBzcGxpdF9wYWdlX2FsbG9jO1x0XHRcdFx0XHRcXFxuIFx0d2hpbGUgKCh0b2tlbiA9IHN0cnNlcChcdTAwMjZzcGxpdF9wYWdlLCBcIixcIikpICE9IE5VTEwpIHtcdFx0XFxcbiBcdFx0cmV0ID0ga3N0cnRvdTMyKHRva2VuLCAwLCBcdTAwMjZudW0pO1x0XHRcdFxcXG4gXHRcdGlmIChyZXQpXHRcdFx0XHRcdFx0XFxcbkBAIC0xNjE5LDcgKzE2MjUsNyBAQCBzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXHRcXFxuIFx0fTtcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIGVuZDpcdFx0XHRcdFx0XHRcdFx0XHRcXFxuLVx0a2ZyZWUoc3BsaXRfcGFnZSk7XHRcdFx0XHRcdFx0XFxcbitcdGtmcmVlKHNwbGl0X3BhZ2VfYWxsb2MpO1x0XHRcdFx0XHRcXFxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wdHMtXHUwMDNlbG9jayk7XHRcdFx0XHRcdFxcXG4gXHRyZXR1cm4gcmV0O1x0XHRcdFx0XHRcdFx0XFxcbiB9XHRcdFx0XHRcdFx0XHRcdFx0XFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmNcbmluZGV4IDg5Nzc4N2QwODAzYzEuLmM5MmNhYTE0OTQyOGEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmNcbisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuY1xuQEAgLTIwMTMsNiArMjAxMyw3IEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRzdHJ1Y3QgZl91YWMyX29wdHMgKm9wdHMgPSB0b19mX3VhYzJfb3B0cyhpdGVtKTtcdFx0XFxcbiBcdGNoYXIgKnNwbGl0X3BhZ2UgPSBOVUxMO1x0XHRcdFx0XHRcXFxuK1x0Y2hhciAqc3BsaXRfcGFnZV9hbGxvYyA9IE5VTEw7XHRcdFx0XHRcdFxcXG4gXHRpbnQgcmV0ID0gLUVJTlZBTDtcdFx0XHRcdFx0XHRcXFxuIFx0Y2hhciAqdG9rZW47XHRcdFx0XHRcdFx0XHRcXFxuIFx0dTMyIG51bTtcdFx0XHRcdFx0XHRcdFxcXG5AQCAtMjAyNiw3ICsyMDI3LDEyIEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4gXHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdGkgPSAwO1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0bWVtc2V0KG9wdHMtXHUwMDNlbmFtZSMjcywgMHgwMCwgc2l6ZW9mKG9wdHMtXHUwMDNlbmFtZSMjcykpO1x0XHRcXFxuLVx0c3BsaXRfcGFnZSA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7XHRcdFx0XHRcXFxuK1x0c3BsaXRfcGFnZV9hbGxvYyA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7XHRcdFx0XFxcbitcdGlmICghc3BsaXRfcGFnZV9hbGxvYykge1x0XHRcdFx0XHRcXFxuK1x0XHRyZXQgPSAtRU5PTUVNO1x0XHRcdFx0XHRcdFxcXG4rXHRcdGdvdG8gZW5kO1x0XHRcdFx0XHRcdFxcXG4rXHR9XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRzcGxpdF9wYWdlID0gc3BsaXRfcGFnZV9hbGxvYztcdFx0XHRcdFx0XFxcbiBcdHdoaWxlICgodG9rZW4gPSBzdHJzZXAoXHUwMDI2c3BsaXRfcGFnZSwgXCIsXCIpKSAhPSBOVUxMKSB7XHRcdFxcXG4gXHRcdHJldCA9IGtzdHJ0b3UzMih0b2tlbiwgMCwgXHUwMDI2bnVtKTtcdFx0XHRcXFxuIFx0XHRpZiAocmV0KVx0XHRcdFx0XHRcdFxcXG5AQCAtMjAzNyw3ICsyMDQzLDcgQEAgc3RhdGljIHNzaXplX3QgZl91YWMyX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbiBcdH07XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBlbmQ6XHRcdFx0XHRcdFx0XHRcdFx0XFxcbi1cdGtmcmVlKHNwbGl0X3BhZ2UpO1x0XHRcdFx0XHRcdFxcXG4rXHRrZnJlZShzcGxpdF9wYWdlX2FsbG9jKTtcdFx0XHRcdFx0XFxcbiBcdG11dGV4X3VubG9jayhcdTAwMjZvcHRzLVx1MDAzZWxvY2spO1x0XHRcdFx0XHRcXFxuIFx0cmV0dXJuIHJldDtcdFx0XHRcdFx0XHRcdFxcXG4gfVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMzowMzowMy45NDU3MzEwODdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDM5MzMzODU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFVTQiBBdWRpbyBHYWRnZXQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIHRvdWNoaW5nIGBmX3VhYzEuY2AgYW5kIGBmX3VhYzIuY2Ag4oCTIHRoYXTigJlzIFVTQiBBdWRpbyBDbGFzcyBnYWRnZXQgY29kZS4gU3RyYWlnaHQgYXdheSwgSSBzZWUgaXQncyBkZWFsaW5nIHdpdGggYSBtZW1vcnkgbGVhaywgd2hpY2ggaXMgYWx3YXlzIHdvcnRoIGEgY2xvc2VyIGxvb2suIEl0IHNlZW1zIHRoaXMgbGVhayBpcyB0aWVkIHRvIGEgbWFjcm8sIHNvbWV0aGluZyBsaWtlIGBVQUMxX0FUVFJJQlVURV9TVFJJTkdgLiBUaGlzIG1hY3JvIGlzIGdlbmVyYXRpbmcgZnVuY3Rpb25zLCBwcm9iYWJseSB0byBoYW5kbGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQgdGhleSBhcmUgbmFtZWQgYGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlYCBhbmQgYGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlYC5cblxuVGhlIGNydXggb2YgdGhlIHByb2JsZW0gc2VlbXMgdG8gYmUgYHN0cnNlcGAuIEFoLCB5ZXMsIEkga25vdyB0aGlzIG9uZSwgaXQgbW9kaWZpZXMgdGhlIGlucHV0IHN0cmluZyBpbiBwbGFjZS4gU28gdGhlIG9yaWdpbmFsIGNvZGUgd2FzIHByb2JhYmx5IHBhc3NpbmcgYHNwbGl0X3BhZ2VgIHRvIGBzdHJzZXBgLCBhbmQgdGhlbiBsYXRlciBjYWxsaW5nIGBrZnJlZShzcGxpdF9wYWdlKWAuIFRoZSBpc3N1ZSBpcywgYHN0cnNlcGAgaXMgY2hhbmdpbmcgdGhlIGNvbnRlbnRzIG9mIGBzcGxpdF9wYWdlYCwgc28gYGtmcmVlYCB3b3VsZCBmcmVlIGFuIGluY29ycmVjdCBwb2ludGVyIG9yLCBwb3RlbnRpYWxseSwgdHJ5IHRvIGZyZWUgTlVMTCBpZiB0aGUgc3RyaW5nIHdhcyBleGhhdXN0ZWQuIFRoaXMgcGF0Y2ggYWRkcmVzc2VzIHRoYXQgYnkga2VlcGluZyBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIHBvaW50ZXIsIGxldCdzIGNhbGwgaXQgYHNwbGl0X3BhZ2VfYWxsb2NgLCBhbmQgZW5zdXJpbmcgdGhhdCdzIHdoYXQgZ2V0cyBwYXNzZWQgdG8gYGtmcmVlYC4gVGhhdCdzIGEgY2xhc3NpYyBhbmQgc29saWQgZml4LlxuXG5Ob3csIEknZCBsaWtlIHRvIHVuZGVyc3RhbmQgdGhlICpzY29wZSogb2YgdGhpcyBjaGFuZ2UgYmV0dGVyLiBJdCB3b3VsZCBiZSBoZWxwZnVsIHRvIHNlZSBleGFjdGx5ICp3aGF0KiB0aG9zZSBnZW5lcmF0ZWQgYF9zdG9yZWAgZnVuY3Rpb25zIGFyZSBkb2luZy4gSSdsbCBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VhcmNoIGZvciBhbGwgb2NjdXJyZW5jZXMgb2YgZnVuY3Rpb25zIG1hdGNoaW5nIHRoZSBwYXR0ZXJuIGBmX3VhYzFfb3B0c18uKl9zdG9yZWAgYW5kIGBmX3VhYzJfb3B0c18uKl9zdG9yZWAuIFNlZWluZyB0aGUgZ2VuZXJhdGVkIGZ1bmN0aW9ucyB3aWxsIHByb3ZpZGUgY3J1Y2lhbCBjb250ZXh0IGFuZCBhbGxvdyBtZSB0byBhc3Nlc3MgdGhlIG92ZXJhbGwgaW1wYWN0IG9mIHRoaXMgZml4LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDI3LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDM6MDkuMzg1MDY2OTQxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMjg3NzU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZfdWFjMV9vcHRzXy4qX3N0b3JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTUyOD1zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNTQxLVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTU0MjpzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1NDMtXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFx0XFxcXFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jPTE1NzE9c3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFx0XFxcXFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1OTItXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNTkzOnN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1OTQtXFx0XFx0XFx0XFx0XFx0ICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgbGVuKVxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNjM2PXN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjQ4LVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY0OTpzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFx0XFxcXFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjUwLVxcdFxcdFxcdFxcdFxcdCAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGxlbilcXHRcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDEzOjAzOjA5LjQyODM2NTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTY0MDI3MjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgTWFjcm8tR2VuZXJhdGVkIEZ1bmN0aW9uIENvZGUqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbi4gVGhlIGluaXRpYWwgcXVlc3Rpb24gaXMgXCJ3aGF0J3MgdGhlIHVuZGVybHlpbmcgY29kZSBiZWluZyBnZW5lcmF0ZWQgYnkgdGhlc2UgbWFjcm9zP1wiIEknbSB0aGlua2luZywgXCJMZXQncyBjdXQgcmlnaHQgdG8gdGhlIGNoYXNlIGFuZCBmaW5kIG91dC5cIiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgKmFjdHVhbCogaW1wbGVtZW50YXRpb24gb2YgdGhlc2UgZnVuY3Rpb25zLiBJJ20gbm90IGNvbnRlbnQgd2l0aCBqdXN0IGtub3dpbmcgdGhlIGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlIGFuZCBkb2N1bWVudGF0aW9uOyBJIG5lZWQgdG8gc2VlIHRoZSBuaXR0eS1ncml0dHkgZGV0YWlscyBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUuIEtub3dpbmcgdGhlIHNvdXJjZSwgSSBjYW4gZGVkdWNlIG9wdGltaXphdGlvbiBwb3NzaWJpbGl0aWVzIGFuZCBpbmhlcmVudCBsaW1pdGF0aW9ucyBvZiB0aGUgY29kZSwgYXMgd2VsbCBhcyB3aGVyZSB0byBzdGFydCBkZWJ1Z2dpbmcgaW4gdGhlIHVuZm9ydHVuYXRlIGV2ZW50IHRoYXQgdGhlcmUncyBhIHByb2JsZW0uIFRoaXMgbWVhbnMgSSBuZWVkIHRvIGJ5cGFzcyB0aGUgYWJzdHJhY3Rpb24gb2YgdGhlIG1hY3JvLCBhbmQgZGVjb25zdHJ1Y3QgdGhlIGNvZGUgZm9yIGRldGFpbGVkIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTY2LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDM6MTIuMzkyMzk1NDgzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MjY1NDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlVBQzFfQVRUUklCVVRFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTUyNT1zdGF0aWMgY29uc3QgY2hhciAqYm9vbF9mbXQgPSBcXFwiJXVcXFxcblxcXCI7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1MjYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE1Mjc6I2RlZmluZSBVQUMxX0FUVFJJQlVURSh0eXBlLCBuYW1lKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTUyOC1zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNjMzPUNPTkZJR0ZTX0FUVFIoZl91YWMxX29wdHNfLCBuYW1lKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjM0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjM1OiNkZWZpbmUgVUFDMV9BVFRSSUJVVEVfU1RSSU5HKG5hbWUpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjM2LXN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNjY5PUNPTkZJR0ZTX0FUVFIoZl91YWMxX29wdHNfLCBuYW1lKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjcwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjcxOlVBQzFfQVRUUklCVVRFKHUzMiwgY19jaG1hc2spO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjcyLVVBQzFfUkFURV9BVFRSSUJVVEUoY19zcmF0ZSk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2NzM6VUFDMV9BVFRSSUJVVEUodTMyLCBjX3NzaXplKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY3NDpVQUMxX0FUVFJJQlVURSh1MzIsIHBfY2htYXNrKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY3NS1VQUMxX1JBVEVfQVRUUklCVVRFKHBfc3JhdGUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjc2OlVBQzFfQVRUUklCVVRFKHUzMiwgcF9zc2l6ZSk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2Nzc6VUFDMV9BVFRSSUJVVEUodTMyLCByZXFfbnVtYmVyKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY3OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY3OTpVQUMxX0FUVFJJQlVURShib29sLCBwX211dGVfcHJlc2VudCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2ODA6VUFDMV9BVFRSSUJVVEUoYm9vbCwgcF92b2x1bWVfcHJlc2VudCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2ODE6VUFDMV9BVFRSSUJVVEUoczE2LCBwX3ZvbHVtZV9taW4pO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjgyOlVBQzFfQVRUUklCVVRFKHMxNiwgcF92b2x1bWVfbWF4KTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY4MzpVQUMxX0FUVFJJQlVURShzMTYsIHBfdm9sdW1lX3Jlcyk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2ODQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2ODU6VUFDMV9BVFRSSUJVVEUoYm9vbCwgY19tdXRlX3ByZXNlbnQpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjg2OlVBQzFfQVRUUklCVVRFKGJvb2wsIGNfdm9sdW1lX3ByZXNlbnQpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjg3OlVBQzFfQVRUUklCVVRFKHMxNiwgY192b2x1bWVfbWluKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY4ODpVQUMxX0FUVFJJQlVURShzMTYsIGNfdm9sdW1lX21heCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2ODk6VUFDMV9BVFRSSUJVVEUoczE2LCBjX3ZvbHVtZV9yZXMpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjkwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjkxOlVBQzFfQVRUUklCVVRFX1NUUklORyhmdW5jdGlvbl9uYW1lKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY5Mi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY5MzpVQUMxX0FUVFJJQlVURV9TVFJJTkcocF9pdF9uYW1lKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY5NDpVQUMxX0FUVFJJQlVURV9TVFJJTkcocF9pdF9jaF9uYW1lKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY5NTpVQUMxX0FUVFJJQlVURV9TVFJJTkcocF9vdF9uYW1lKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY5NjpVQUMxX0FUVFJJQlVURV9TVFJJTkcocF9mdV92b2xfbmFtZSk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2OTctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2OTg6VUFDMV9BVFRSSUJVVEVfU1RSSU5HKGNfaXRfbmFtZSk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2OTk6VUFDMV9BVFRSSUJVVEVfU1RSSU5HKGNfaXRfY2hfbmFtZSk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE3MDA6VUFDMV9BVFRSSUJVVEVfU1RSSU5HKGNfb3RfbmFtZSk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE3MDE6VUFDMV9BVFRSSUJVVEVfU1RSSU5HKGNfZnVfdm9sX25hbWUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNzAyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMzowMzoxMi40NDA2NjcwNjJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTQ2ODYwNTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2gncyBJbXBhY3QqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSBgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmVgIGZ1bmN0aW9uLiBSaWdodCwgYW5kIHRoYXQgZnVuY3Rpb24gaXMgZ2VuZXJhdGVkIGJ5IHRoZSBgVUFDMV9SQVRFX0FUVFJJQlVURWAgbWFjcm8uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgYW5kIHdoYXQgdGhpcyBtYWNybyBpcyBkb2luZywgc28gSSdsbCBqdW1wIHN0cmFpZ2h0IHRvIGxpbmUgMTU5NSB3aXRoaW4gYGZfdWFjMS5jYC4gVGhhdCdzIHdoZXJlIHRoZSBtYWNybyBkZWZpbml0aW9uIHNob3VsZCBiZS4gTGV0J3Mgc2VlIHdoYXQncyBoYXBwZW5pbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlYCBmdW5jdGlvbiBhbmQgaG93IHRoZSBtYWNybyBpbnRlcmFjdHMgdG8gZGV0ZXJtaW5lIHdoYXQgaW1wbGljYXRpb25zIHRoaXMgcGF0Y2ggaGFzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODcxLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDM6MTUuNTg3NTMwNzgxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0MTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNTcwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTU3MDpcXHQjZGVmaW5lIFVBQzFfUkFURV9BVFRSSUJVVEUobmFtZSlcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTU3MTpcXHRzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuMTU3MjpcXHRcXHRcXHRcXHRcXHRcXHQgY2hhciAqcGFnZSlcXHRcXHRcXHRcXFxcXFxuMTU3MzpcXHR7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1NzQ6XFx0XFx0c3RydWN0IGZfdWFjMV9vcHRzICpvcHRzID0gdG9fZl91YWMxX29wdHMoaXRlbSk7XFx0XFx0XFxcXFxcbjE1NzU6XFx0XFx0aW50IHJlc3VsdCA9IDA7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1NzY6XFx0XFx0aW50IGk7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1Nzc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1Nzg6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2b3B0cy1cXHUwMDNlbG9jayk7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1Nzk6XFx0XFx0cGFnZVswXSA9ICdcXFxcMCc7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1ODA6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFVBQ19NQVhfUkFURVM7IGkrKykge1xcdFxcdFxcdFxcdFxcXFxcXG4xNTgxOlxcdFxcdFxcdGlmIChvcHRzLVxcdTAwM2VuYW1lIyNzW2ldID09IDApXFx0XFx0XFx0XFx0XFxcXFxcbjE1ODI6XFx0XFx0XFx0XFx0YnJlYWs7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1ODM6XFx0XFx0XFx0cmVzdWx0ICs9IHNwcmludGYocGFnZSArIHN0cmxlbihwYWdlKSwgXFxcIiV1LFxcXCIsXFx0XFx0XFxcXFxcbjE1ODQ6XFx0XFx0XFx0XFx0XFx0b3B0cy1cXHUwMDNlbmFtZSMjc1tpXSk7XFx0XFx0XFx0XFxcXFxcbjE1ODU6XFx0XFx0fVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNTg2OlxcdFxcdGlmIChzdHJsZW4ocGFnZSkgXFx1MDAzZSAwKVxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNTg3OlxcdFxcdFxcdHBhZ2Vbc3RybGVuKHBhZ2UpIC0gMV0gPSAnXFxcXG4nO1xcdFxcdFxcdFxcdFxcXFxcXG4xNTg4OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2b3B0cy1cXHUwMDNlbG9jayk7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1ODk6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1OTA6XFx0XFx0cmV0dXJuIHJlc3VsdDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTU5MTpcXHR9XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1OTI6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1OTM6XFx0c3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcdFxcXFxcXG4xNTk0OlxcdFxcdFxcdFxcdFxcdFxcdCAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGxlbilcXHRcXFxcXFxuMTU5NTpcXHR7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1OTY6XFx0XFx0c3RydWN0IGZfdWFjMV9vcHRzICpvcHRzID0gdG9fZl91YWMxX29wdHMoaXRlbSk7XFx0XFx0XFxcXFxcbjE1OTc6XFx0XFx0Y2hhciAqc3BsaXRfcGFnZSA9IE5VTEw7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1OTg6XFx0XFx0Y2hhciAqc3BsaXRfcGFnZV9hbGxvYyA9IE5VTEw7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1OTk6XFx0XFx0aW50IHJldCA9IC1FSU5WQUw7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE2MDA6XFx0XFx0Y2hhciAqdG9rZW47XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE2MDE6XFx0XFx0dTMyIG51bTtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYwMjpcXHRcXHRpbnQgaTtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYwMzpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYwNDpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZvcHRzLVxcdTAwM2Vsb2NrKTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYwNTpcXHRcXHRpZiAob3B0cy1cXHUwMDNlcmVmY250KSB7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE2MDY6XFx0XFx0XFx0cmV0ID0gLUVCVVNZO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjA3OlxcdFxcdFxcdGdvdG8gZW5kO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjA4OlxcdFxcdH1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYwOTpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYxMDpcXHRcXHRpID0gMDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYxMTpcXHRcXHRtZW1zZXQob3B0cy1cXHUwMDNlbmFtZSMjcywgMHgwMCwgc2l6ZW9mKG9wdHMtXFx1MDAzZW5hbWUjI3MpKTtcXHRcXHRcXFxcXFxuMTYxMjpcXHRcXHRzcGxpdF9wYWdlX2FsbG9jID0ga3N0cmR1cChwYWdlLCBHRlBfS0VSTkVMKTtcXHRcXHRcXHRcXFxcXFxuMTYxMzpcXHRcXHRpZiAoIXNwbGl0X3BhZ2VfYWxsb2MpIHtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYxNDpcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjE1OlxcdFxcdFxcdGdvdG8gZW5kO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjE2OlxcdFxcdH1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYxNzpcXHRcXHRzcGxpdF9wYWdlID0gc3BsaXRfcGFnZV9hbGxvYztcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYxODpcXHRcXHR3aGlsZSAoKHRva2VuID0gc3Ryc2VwKFxcdTAwMjZzcGxpdF9wYWdlLCBcXFwiLFxcXCIpKSAhPSBOVUxMKSB7XFx0XFx0XFxcXFxcbjE2MTk6XFx0XFx0XFx0cmV0ID0ga3N0cnRvdTMyKHRva2VuLCAwLCBcXHUwMDI2bnVtKTtcXHRcXHRcXHRcXFxcXFxuMTYyMDpcXHRcXHRcXHRpZiAocmV0KVxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjIxOlxcdFxcdFxcdFxcdGdvdG8gZW5kO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjIyOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjIzOlxcdFxcdFxcdG9wdHMtXFx1MDAzZW5hbWUjI3NbaSsrXSA9IG51bTtcXHRcXHRcXHRcXHRcXFxcXFxuMTYyNDpcXHRcXHRcXHRyZXQgPSBsZW47XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE2MjU6XFx0XFx0fTtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYyNjpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYyNzpcXHRlbmQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE2Mjg6XFx0XFx0a2ZyZWUoc3BsaXRfcGFnZV9hbGxvYyk7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE2Mjk6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZvcHRzLVxcdTAwM2Vsb2NrKTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYzMDpcXHRcXHRyZXR1cm4gcmV0O1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjMxOlxcdH1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYzMjpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYzMzpcXHRDT05GSUdGU19BVFRSKGZfdWFjMV9vcHRzXywgbmFtZSlcXG4xNjM0OlxcdFxcbjE2MzU6XFx0I2RlZmluZSBVQUMxX0FUVFJJQlVURV9TVFJJTkcobmFtZSlcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYzNjpcXHRzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuMTYzNzpcXHRcXHRcXHRcXHRcXHRcXHQgY2hhciAqcGFnZSlcXHRcXHRcXHRcXFxcXFxuMTYzODpcXHR7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE2Mzk6XFx0XFx0c3RydWN0IGZfdWFjMV9vcHRzICpvcHRzID0gdG9fZl91YWMxX29wdHMoaXRlbSk7XFx0XFx0XFxcXFxcbjE2NDA6XFx0XFx0aW50IHJlc3VsdDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTY0MTpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTY0MjpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZvcHRzLVxcdTAwM2Vsb2NrKTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTY0MzpcXHRcXHRyZXN1bHQgPSBzeXNmc19lbWl0KHBhZ2UsIFxcXCIlc1xcXCIsIG9wdHMtXFx1MDAzZW5hbWUpOyAgICAgICAgXFx0ICAgICAgICBcXFxcXFxuMTY0NDpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm9wdHMtXFx1MDAzZWxvY2spO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjQ1OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjQ2OlxcdFxcdHJldHVybiByZXN1bHQ7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE2NDc6XFx0fVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjQ4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjQ5OlxcdHN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuMTY1MDpcXHRcXHRcXHRcXHRcXHRcXHQgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBsZW4pXFx0XFxcXFxcbjE2NTE6XFx0e1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjUyOlxcdFxcdHN0cnVjdCBmX3VhYzFfb3B0cyAqb3B0cyA9IHRvX2ZfdWFjMV9vcHRzKGl0ZW0pO1xcdFxcdFxcXFxcXG4xNjUzOlxcdFxcdGludCByZXQgPSAwO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjU0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjU1OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNm9wdHMtXFx1MDAzZWxvY2spO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjU2OlxcdFxcdGlmIChvcHRzLVxcdTAwM2VyZWZjbnQpIHtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTY1NzpcXHRcXHRcXHRyZXQgPSAtRUJVU1k7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE2NTg6XFx0XFx0XFx0Z290byBlbmQ7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE2NTk6XFx0XFx0fVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjYwOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjYxOlxcdFxcdHJldCA9IHNjbnByaW50ZihvcHRzLVxcdTAwM2VuYW1lLCBtaW4oc2l6ZW9mKG9wdHMtXFx1MDAzZW5hbWUpLCBsZW4pLFxcdFxcXFxcXG4xNjYyOlxcdFxcdFxcdFxcdFxcXCIlc1xcXCIsIHBhZ2UpO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjYzOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjY0OlxcdGVuZDpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTY2NTpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm9wdHMtXFx1MDAzZWxvY2spO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjY2OlxcdFxcdHJldHVybiByZXQ7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE2Njc6XFx0fVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjY4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjY5OlxcdENPTkZJR0ZTX0FUVFIoZl91YWMxX29wdHNfLCBuYW1lKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMzowMzoxNS41ODc2NjYyMTJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTQ5NzIyNzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVUFDMSBSYXRlIEF0dHJpYnV0ZXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIGEgc3BlY2lmaWMgcmF0ZSBhdHRyaWJ1dGUgZGVmaW5lZCBhcyBgVUFDMV9SQVRFX0FUVFJJQlVURShuYW1lKWAuIFJpZ2h0IGF3YXksIEkgc2VlIHR3byBrZXkgaW5zdGFuY2VzIG9mIHRoaXMgYXR0cmlidXRlOiBgVUFDMV9SQVRFX0FUVFJJQlVURShjX3NyYXRlKWAgYW5kIGBVQUMxX1JBVEVfQVRUUklCVVRFKHBfc3JhdGUpYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGVzZSBhcmUgbGlrZWx5IHJlbGF0ZWQgdG8gc29tZSBraW5kIG9mIHNhbXBsZSByYXRlIOKAkyBwZXJoYXBzICdjJyBmb3IgY2FwdHVyZSBhbmQgJ3AnIGZvciBwbGF5YmFjaywgb3Igc29tZXRoaW5nIGFsb25nIHRob3NlIGxpbmVzLlxuXG5Ob3csIHdpdGggdGhvc2UgYXR0cmlidXRlcyBpbiBwbGFjZSwgdGhlIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb25zIG11c3QgYmUgYGZfdWFjMV9vcHRzX2Nfc3JhdGVfc3RvcmVgIGFuZCBgZl91YWMxX29wdHNfcF9zcmF0ZV9zdG9yZWAuIFRoZSBuYW1pbmcgY29udmVudGlvbiBpcyBwcmV0dHkgY2xlYXI6IGBmX3VhYzFfb3B0c18uLi5fc3RvcmVgLCB3aXRoIFwiLi4uX3N0b3JlXCIgZnVuY3Rpb25zLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHVuZG91YnRlZGx5IGhhbmRsaW5nIHRoZSBzdG9yYWdlIG9yIHNldHRpbmcgb2YgdGhlIGNhcHR1cmUgYW5kIHBsYXliYWNrIHNhbXBsZSByYXRlcywgcHJlc3VtYWJseSB3aXRoaW4gc29tZSBraW5kIG9mIG9wdGlvbnMgc3RydWN0dXJlIHNwZWNpZmljIHRvIFVBQzEuIFRoYXQncyBnb29kIHByYWN0aWNlLlxuXG5JIGFsc28gaGF2ZSBhbiBpbmRpY2F0b3IgZm9yIGBmX3VhYzIuY2AsIHNvIHRoZXJlIGFyZSBsaWtlbHkgc2ltaWxhciByYXRlIGF0dHJpYnV0ZXMgYW5kIGZ1bmN0aW9ucyBpbiBgZl91YWMyLmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzUyLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDM6MjAuMTM3MzkwOThaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MjE5MTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlVBQzJfUkFURV9BVFRSSUJVVEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYz0xOTg2PUNPTkZJR0ZTX0FUVFIoZl91YWMyX29wdHNfLCBuYW1lKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0xOTg3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYzoxOTg4OiNkZWZpbmUgVUFDMl9SQVRFX0FUVFJJQlVURShuYW1lKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMtMTk4OS1zdGF0aWMgc3NpemVfdCBmX3VhYzJfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM9MjA5Mj1VQUMyX0FUVFJJQlVURSh1MzIsIHBfY2htYXNrKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM6MjA5MzpVQUMyX1JBVEVfQVRUUklCVVRFKHBfc3JhdGUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0yMDk0LVVBQzJfQVRUUklCVVRFKHUzMiwgcF9zc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM9MjA5Nj1VQUMyX0FUVFJJQlVURSh1MzIsIGNfY2htYXNrKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM6MjA5NzpVQUMyX1JBVEVfQVRUUklCVVRFKGNfc3JhdGUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0yMDk4LVVBQzJfQVRUUklCVVRFX1NZTkMoY19zeW5jKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDM6MjAuMTg2NjE5MTc5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MDk0Mzc2NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBVU0IgQXVkaW8gQ2xhc3MgR2FkZ2V0IEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoZXNlIGZ1bmN0aW9ucyBpbiBtaW5kOiBgZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZWAsIGBmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlYCwgYGZfdWFjMl9vcHRzX2Nfc3JhdGVfc3RvcmVgLCBhbmQgYGZfdWFjMl9vcHRzX3Bfc3JhdGVfc3RvcmVgLiBJbW1lZGlhdGVseSwgSSBzZWUgdGhhdCB0aGV5J3JlIGFsbCBgY29uZmlnZnNgIHN0b3JlIGNhbGxiYWNrcywgc3BlY2lmaWNhbGx5IGZvciBVU0IgQXVkaW8gQ2xhc3MgMSBhbmQgMiBnYWRnZXRzLiBUaGlzIG1lYW5zIHRoZXkgYXJlIGludm9sdmVkIGluIGhvdyB0aGUgVVNCIGF1ZGlvIGdhZGdldHMgYXJlIGNvbmZpZ3VyZWQgdmlhIGBjb25maWdmc2AsIHdoaWNoIGlzIGZhaXJseSBzdGFuZGFyZCBhbmQgZXhwZWN0ZWQuXG5cbk5vdywgYSBrZXkgcXVlc3Rpb24gcG9wcyB1cDogQ2FuIHRoZXNlIGZ1bmN0aW9ucyBldmVuIGJlIGV4ZXJjaXNlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBXaXRoIHRoZSBwcmV2YWxlbmNlIG9mIHN5c3RlbXMgbGlrZSBRRU1VIGFuZCBjbG91ZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0UsIEkgd2FudCB0byBiZSBjZXJ0YWluIGFib3V0IHRoZSByZWFjaGFiaWxpdHkgb2YgdGhpcyBjb2RlLiBGb3J0dW5hdGVseSwgdGhlIGFuc3dlciBpcyB5ZXMuIFRoZSB1c2Ugb2YgYGR1bW15X2hjZGAgKHRoZSBVU0IgZ2FkZ2V0IGR1bW15IGRyaXZlcikgYWxsb3dzIGZvciBjb21wbGV0ZSBlbXVsYXRpb24gb2YgVVNCIGdhZGdldHMuIFRoaXMgaXMgZXhhY3RseSBob3cgdGhlIGBzeXprYWxsZXJgIFVTQiBmdXp6ZXIgaXMgdXNlZCB0byBmaW5kIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGVzZSBnYWRnZXQgZHJpdmVycy4gVGhhdCBtYWtlcyB0aGluZ3MgcHJvbWlzaW5nIGZvciB0ZXN0aW5nLlxuXG5HaXZlbiB0aGUgcm9sZSBvZiBgY29uZmlnZnNgIGluIGNvbmZpZ3VyaW5nIFVTQiBnYWRnZXRzLCBpdCdzIGEgZ29vZCBwbGFjZSB0byBzdGFydCwgc28gSSdsbCBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgYGZfdWFjMS5jYCBhbmQgYGZfdWFjMi5jYC4gVGhhdCBzaG91bGQgY2xhcmlmeSBhbnkgYnVpbGQgZGVwZW5kZW5jaWVzIG9yIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHdoaWNoIG1pZ2h0IGFmZmVjdCB0aGVpciBhdmFpbGFiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1NTEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDM6MjUuMDk2MDU5MzEyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTk4NDkxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmX3VhYzFcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZT0zNj1vYmotJChDT05GSUdfVVNCX1VfQVVESU8pXFx0Kz0gdV9hdWRpby5vXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlOjM3OnVzYl9mX3VhYzEteVxcdFxcdFxcdDo9IGZfdWFjMS5vXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlOjM4Om9iai0kKENPTkZJR19VU0JfRl9VQUMxKVxcdCs9IHVzYl9mX3VhYzEub1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZS0zOS11c2JfZl91YWMxX2xlZ2FjeS15XFx0XFx0Oj0gZl91YWMxX2xlZ2FjeS5vIHVfdWFjMV9sZWdhY3kub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMzowMzoyNS4xNDIwNTA0MDFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMxNTk1NDA2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCBJJ20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKkRlbHZpbmcgaW50byB0aGUgYGZfdWFjMi5vYCBGaWxlKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgc2VlIHdlJ3JlIGxvb2tpbmcgYXQgYGZfdWFjMi5vYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzcyBnb2VzIHNvbWV0aGluZyBsaWtlIHRoaXM6IEkga25vdyB3aGF0IHRoZSBmaWxlIHR5cGUgbWVhbnMgc28gSSdtIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgd2hhdCBpdCBtaWdodCBjb250YWluLiBJIHdvbmRlciB3aGF0IHRoZSBjb250ZXh0IGlzLiBXaGF0IGlzIHRoaXMgbW9kdWxlIHJlc3BvbnNpYmxlIGZvcj8gV2hhdCBkb2VzIFwiVUFDMlwiIHN0YW5kIGZvciwgaW4gdGhpcyBjYXNlPyBJcyBpdCByZWxhdGVkIHRvIFVzZXIgQWNjb3VudCBDb250cm9sIHZlcnNpb24gMj8gT3IgVXNlciBBY2Nlc3MgQ29udHJvbD8gT3Igc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50PyBJdCdzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpYyBub21lbmNsYXR1cmUgd2l0aGluIHRoaXMgY29kZWJhc2UuIFdoYXQgZGVwZW5kZW5jaWVzIGRvZXMgdGhpcyBtb2R1bGUgaGF2ZT8gV2hhdCBmdW5jdGlvbnMgYXJlIGxpa2VseSBkZWZpbmVkIHdpdGhpbiBpdCwgYmFzZWQgb24gaXRzIG5hbWluZyBjb252ZW50aW9uPyBJ4oCZbGwgbmVlZCB0byBmaWd1cmUgb3V0IGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gSSdsbCBwcm9iYWJseSBzdGFydCBieSBsb29raW5nIGZvciBoZWFkZXIgZmlsZXMgdGhhdCBpbmNsdWRlIGRlZmluaXRpb25zIGFuZCBkYXRhIHN0cnVjdHVyZXMgdGhhdCB3aWxsIG1ha2UgdGhlIGludGVybmFsIGxvZ2ljIG9mIHRoaXMgb2JqZWN0IGNvZGUgY2xlYXIgdG8gbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyNzEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMzowMzoyOC40NTgwMDY5NjhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTI2MjY3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmX3VhYzJcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZT00MD1vYmotJChDT05GSUdfVVNCX0ZfVUFDMV9MRUdBQ1kpXFx0Kz0gdXNiX2ZfdWFjMV9sZWdhY3kub1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZTo0MTp1c2JfZl91YWMyLXlcXHRcXHRcXHQ6PSBmX3VhYzIub1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZTo0MjpvYmotJChDT05GSUdfVVNCX0ZfVUFDMilcXHQrPSB1c2JfZl91YWMyLm9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGUtNDMtdXNiX2ZfdXZjLXlcXHRcXHRcXHQ6PSBmX3V2Yy5vIHV2Y19xdWV1ZS5vIHV2Y192NGwyLm8gdXZjX3ZpZGVvLm8gdXZjX2NvbmZpZ2ZzLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDM6MjguNjk5Mjc0MzM0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2Mjg3ODM4MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSwgbXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGVzZSB0d28gc3BlY2lmaWMgY29uZmlndXJhdGlvbnM6IGBDT05GSUdfVVNCX0ZfVUFDMWAgYW5kIGBDT05GSUdfVVNCX0ZfVUFDMmAuIE15IHByaW1hcnkgZ29hbCBpcyB0byB1bmRlcnN0YW5kIHRoZWlyIGRlcGVuZGVuY2llcy4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIHJlbGF0ZWQgdG8gVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5LiBUaGUgZmlyc3QgcGxhY2UgSSdsbCBsb29rIGlzIHdpdGhpbiB0aGUgbWFpbiBgZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdgIGZpbGUuIEknbGwgdGhlbiBleHBhbmQgbXkgc2VhcmNoIHRvIGluY2x1ZGUgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ2AgYW5kIGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vS2NvbmZpZ2AuIEl0J3MgaGlnaGx5IGxpa2VseSB0aGUgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIGFyZSBkZWZpbmVkIHdpdGhpbiBvbmUgb2YgdGhvc2UgZmlsZXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgb3Iga2VybmVsIGZlYXR1cmVzIHRoZXNlIFVBQyBzZXR0aW5ncyByZWx5IHVwb24sIG9yIGFueSBzcGVjaWZpYyBVU0IgY29udHJvbGxlciBvciBnYWRnZXQgZnJhbWV3b3JrIGRlcGVuZGVuY2llcy4gS25vd2luZyB0aGVzZSByZWxhdGlvbnNoaXBzIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRvIGNvbmZpZ3VyZSB0aGlzIHN5c3RlbSBwcm9wZXJseS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTczMywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDEzOjAzOjMyLjMyODA2MDYzN1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg3NjAzMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9GX1VBQzFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0xOTI9Y29uZmlnIFVTQl9GX0ZTXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xOTUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTk2OmNvbmZpZyBVU0JfRl9VQUMxXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTk3LVxcdHRyaXN0YXRlXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTk4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjE5OTpjb25maWcgVVNCX0ZfVUFDMV9MRUdBQ1lcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMDAtXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDM6MzIuMzc2ODI2MjI2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1ODg1NzQ1NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIHRoZSBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBzdHJhaWdodCB0byBgZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdgLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBhcmVhIGFyb3VuZCBsaW5lIDE5Ni4gSSdtIGFzc3VtaW5nIHRoYXQncyB3aGVyZSBzb21lIGludGVyZXN0aW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgbGlrZWx5IHRvIGJlIGRlZmluZWQsIHBlcmhhcHMgcmVsYXRlZCB0byBhIHBhcnRpY3VsYXIgZ2FkZ2V0IGZ1bmN0aW9uIG9yIGNvbnRyb2xsZXIgc3VwcG9ydC4gSSdtIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IGEgc3BlY2lmaWMgZ2FkZ2V0IGZlYXR1cmUgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgbWlnaHQgYmUgYXQgcGxheS4gSSdtIHJlYWR5IHRvIHBhcnNlIHRoZSBjb25maWcgc3ludGF4IGFuZCB1bmRlcnN0YW5kIHRoZSBsb2dpYyBmbG93IGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTg3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDM6MzYuOTY1NDAzNTAzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3MzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE5MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE5MDpcXHRcXHR0cmlzdGF0ZVxcbiAxOTE6XFx0XFxuIDE5MjpcXHRjb25maWcgVVNCX0ZfRlNcXG4gMTkzOlxcdFxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbiAxOTQ6XFx0XFx0dHJpc3RhdGVcXG4gMTk1OlxcdFxcbiAxOTY6XFx0Y29uZmlnIFVTQl9GX1VBQzFcXG4gMTk3OlxcdFxcdHRyaXN0YXRlXFxuIDE5ODpcXHRcXG4gMTk5OlxcdGNvbmZpZyBVU0JfRl9VQUMxX0xFR0FDWVxcbiAyMDA6XFx0XFx0dHJpc3RhdGVcXG4gMjAxOlxcdFxcbiAyMDI6XFx0Y29uZmlnIFVTQl9GX1VBQzJcXG4gMjAzOlxcdFxcdHRyaXN0YXRlXFxuIDIwNDpcXHRcXG4gMjA1OlxcdGNvbmZpZyBVU0JfRl9VVkNcXG4gMjA2OlxcdFxcdHRyaXN0YXRlXFxuIDIwNzpcXHRcXHRzZWxlY3QgVVZDX0NPTU1PTlxcbiAyMDg6XFx0XFxuIDIwOTpcXHRjb25maWcgVVNCX0ZfTUlESVxcbiAyMTA6XFx0XFx0dHJpc3RhdGVcXG4gMjExOlxcdFxcbiAyMTI6XFx0Y29uZmlnIFVTQl9GX01JREkyXFxuIDIxMzpcXHRcXHR0cmlzdGF0ZVxcbiAyMTQ6XFx0XFx0c2VsZWN0IFNORF9VTVBcXG4gMjE1OlxcdFxcdHNlbGVjdCBTTkRfVU1QX0xFR0FDWV9SQVdNSURJXFxuIDIxNjpcXHRcXG4gMjE3OlxcdGNvbmZpZyBVU0JfRl9ISURcXG4gMjE4OlxcdFxcdHRyaXN0YXRlXFxuIDIxOTpcXHRcXG4gMjIwOlxcdGNvbmZpZyBVU0JfRl9QUklOVEVSXFxuIDIyMTpcXHRcXHR0cmlzdGF0ZVxcbiAyMjI6XFx0XFxuIDIyMzpcXHRjb25maWcgVVNCX0ZfVENNXFxuIDIyNDpcXHRcXHR0cmlzdGF0ZVxcbiAyMjU6XFx0XFxuIDIyNjpcXHQjIHRoaXMgZmlyc3Qgc2V0IG9mIGRyaXZlcnMgYWxsIGRlcGVuZCBvbiBidWxrLWNhcGFibGUgaGFyZHdhcmUuXFxuIDIyNzpcXHRcXG4gMjI4OlxcdGNvbmZpZyBVU0JfQ09ORklHRlNcXG4gMjI5OlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgR2FkZ2V0IGZ1bmN0aW9ucyBjb25maWd1cmFibGUgdGhyb3VnaCBjb25maWdmc1xcXCJcXG4gMjMwOlxcdFxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuIDIzMTpcXHRcXHRoZWxwXFxuIDIzMjpcXHRcXHQgIEEgTGludXggVVNCIFxcXCJnYWRnZXRcXFwiIGNhbiBiZSBzZXQgdXAgdGhyb3VnaCBjb25maWdmcy5cXG4gMjMzOlxcdFxcdCAgSWYgdGhpcyBpcyB0aGUgY2FzZSwgdGhlIFVTQiBmdW5jdGlvbnMgKHdoaWNoIGZyb20gdGhlIGhvc3Qnc1xcbiAyMzQ6XFx0XFx0ICBwZXJzcGVjdGl2ZSBhcmUgc2VlbiBhcyBpbnRlcmZhY2VzKSBhbmQgY29uZmlndXJhdGlvbnMgYXJlXFxuIDIzNTpcXHRcXHQgIHNwZWNpZmllZCBzaW1wbHkgYnkgY3JlYXRpbmcgYXBwcm9wcmlhdGUgZGlyZWN0b3JpZXMgaW4gY29uZmlnZnMuXFxuIDIzNjpcXHRcXHQgIEFzc29jaWF0aW5nIGZ1bmN0aW9ucyB3aXRoIGNvbmZpZ3VyYXRpb25zIGlzIGRvbmUgYnkgY3JlYXRpbmdcXG4gMjM3OlxcdFxcdCAgYXBwcm9wcmlhdGUgc3ltYm9saWMgbGlua3MuXFxuIDIzODpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBEb2N1bWVudGF0aW9uL3VzYi9nYWRnZXRfY29uZmlnZnMucnN0LlxcbiAyMzk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDEzOjAzOjM2Ljk2NTQ5MjkyM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTExODk1NTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUgd2hhdCdzIGdvaW5nIG9uIGhlcmUuXG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIFVTQiBBdWRpbyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgc28gSSdtIG5vdGljaW5nIHRoYXQgYFVTQl9GX1VBQzFgIGFuZCBgVVNCX0ZfVUFDMmAgYXJlIGJlaW5nIGNob3NlbiwgYnV0IG5vdCBleHBsaWNpdGx5IGJ5IG1lLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgc29tZSBvdGhlciBjb25maWd1cmF0aW9uIG9yIGEgaGlnaGVyLWxldmVsIHNldHRpbmcgbXVzdCBiZSByZXNwb25zaWJsZSBmb3Igc2VsZWN0aW5nIHRob3NlIHNwZWNpZmljIFVTQiBBdWRpbyBDbGFzcyB2ZXJzaW9ucy4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgdGhlIGRlcGVuZGVuY2llcyBhbmQgZmlndXJlIG91dCB0aGUgZGVjaXNpb24tbWFraW5nIHByb2Nlc3MuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgcmVsZXZhbnQgY29kZSBhbmQgY29uZmlndXJhdGlvbnMgdG8gaWRlbnRpZnkgdGhlIHBvaW50IG9mIG9yaWdpbiBmb3IgdGhlc2Ugc2VsZWN0aW9ucy4gVGltZSB0byBwdXQgb24gbXkgZGV0ZWN0aXZlIGhhdCBhbmQgZ28gaHVudGluZyBmb3IgdGhlIHJvb3QgY2F1c2UuIExldCdzIHNlZSB3aGF0IHNlbGVjdHMgdGhlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwMDgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDEzOjAzOjQ0Ljg3NzM5MTM3OVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE0NDExMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IFVTQl9GX1VBQzFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zODE9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4Ny1cXHRzZWxlY3QgVVNCX1VfQVVESU9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozODg6XFx0c2VsZWN0IFVTQl9GX1VBQzFcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODktXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9Mzk5PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxX0xFR0FDWVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDA0LVxcdHNlbGVjdCBTTkRfUENNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDA1OlxcdHNlbGVjdCBVU0JfRl9VQUMxX0xFR0FDWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwNi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NzU9Y29uZmlnIFVTQl9BVURJT1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTc5LVxcdHNlbGVjdCBTTkRfUENNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjgwOlxcdHNlbGVjdCBVU0JfRl9VQUMxIGlmIChHQURHRVRfVUFDMSBcXHUwMDI2XFx1MDAyNiAhR0FER0VUX1VBQzFfTEVHQUNZKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo4MTpcXHRzZWxlY3QgVVNCX0ZfVUFDMV9MRUdBQ1kgaWYgKEdBREdFVF9VQUMxIFxcdTAwMjZcXHUwMDI2IEdBREdFVF9VQUMxX0xFR0FDWSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctODItXFx0c2VsZWN0IFVTQl9GX1VBQzIgaWYgIUdBREdFVF9VQUMxXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDEzOjAzOjQ0LjkyODgzNjk3OFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODUyMDE5MDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFraW5nIG9uIHRoZSBwZXJzb25hIHlvdSByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgVVNCIEF1ZGlvIENsYXNzIDIgTGFuZHNjYXBlKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGb3IgYFVTQl9GX1VBQzJgLi4uIHRoaXMgaXMgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gV2UncmUgZGVhbGluZyB3aXRoIFVTQiBBdWRpbyBDbGFzcyAyLiBUaGF0J3MgYSBzb2xpZCBzdGFuZGFyZCwgYnV0IGl0IG9wZW5zIGEgd2hvbGUgY2FuIG9mIHdvcm1zIGluIHRlcm1zIG9mIGl0cyBpbnRyaWNhY2llcy4gSSBuZWVkIHRvIGJlIHByZWNpc2UgaGVyZS5cblxuRmlyc3QsIEknbSB0aGlua2luZyBhYm91dCB0aGUgZnVuZGFtZW50YWwgYXJjaGl0ZWN0dXJhbCBpbXBsaWNhdGlvbnMuIEhvdyBkb2VzIHRoZSBkZXZpY2UgaW50ZXJmYWNlPyBJcyBpdCBhIGNvbXBvc2l0ZSBkZXZpY2U/IFdoYXQgYXJlIHRoZSBlbmRwb2ludCBjb25maWd1cmF0aW9ucz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZOKAlHRoZSBkZXNjcmlwdG9ycywgdGhlIHBhY2tldHPigJRhbmQgaG93IHRoZXkgdHJhbnNsYXRlIHRvIGF1ZGlvIHN0cmVhbSBkYXRhLiBJdCdzIGEgbGF5ZXItYnktbGF5ZXIgbWVudGFsIG1vZGVsIEknbSBidWlsZGluZy5cblxuTmV4dCwgSSdtIGdvaW5nIHRocm91Z2ggdGhlIGRpZmZlcmVudCBhdWRpbyBmdW5jdGlvbmFsaXRpZXMuIERvZXMgdGhpcyBkZXZpY2Ugc3VwcG9ydCBpc29jaHJvbm91cyB0cmFuc2ZlcnM/IFdoYXQgYWJvdXQgYXN5bmNocm9ub3VzPyBXaGF0IGFyZSB0aGUgY2xvY2tpbmcgcmVxdWlyZW1lbnRzIGFuZCBzeW5jaHJvbml6YXRpb24gY29uc2lkZXJhdGlvbnM/IEknbSBhbHJlYWR5IGFudGljaXBhdGluZyBwb3RlbnRpYWwgZGVidWdnaW5nIHBhaW4gcG9pbnRzLiBXZSdyZSBkZWFsaW5nIHdpdGggZGlnaXRhbCBhdWRpbywgdGhlIHRpbWluZyBoYXMgdG8gYmUgdGlnaHQuIElmIHNvbWV0aGluZyBpcyBnb2luZyB3cm9uZywgSSBrbm93IEknbGwgd2FudCB0byBpbnNwZWN0IHRoZSBhY3R1YWwgVVNCIHBhY2tldHMsIGFuYWx5emUgdGltZXN0YW1wcywgYW5kIG1heWJlIGV2ZW4gYnVzdCBvdXQgdGhlIG9zY2lsbG9zY29wZS5cblxuVGhlbiwgdGhlcmUgYXJlIHRoZSBzb2Z0d2FyZSBhc3BlY3RzLiBXaGF0IGRyaXZlciBtb2RlbCBpcyBiZWluZyB1c2VkPyBJcyBpdCBhIHN0YW5kYXJkIFVBQzIgZHJpdmVyLCBvciBhIGN1c3RvbSBvbmU/IFdoYXQgQVBJIGlzIGV4cG9zZWQ/IEknbSBjb25zaWRlcmluZyB0aGUgcG90ZW50aWFsIGltcGFjdCBvbiBob3N0LXNpZGUgYXVkaW8gcHJvY2Vzc2luZy4gVGhlIGRyaXZlciBpbXBsZW1lbnRhdGlvbiB3aWxsIGRyYW1hdGljYWxseSBhZmZlY3QgdGhlIHVzZXIgZXhwZXJpZW5jZSBhbmQsIGp1c3QgYXMgaW1wb3J0YW50bHksIG15IGFiaWxpdHkgdG8gdHJvdWJsZXNob290IHByb2JsZW1zIGlmIHRoZXkgYXJpc2UuXG5cblNvLCBpbiBzdW1tYXJ5LCBteSBtaW5kJ3MgcnVubmluZyB0aHJvdWdoIHRoZSBVU0IgcHJvdG9jb2wgc3RhY2ssIGF1ZGlvIGRhdGEgc3RydWN0dXJlcywgdGltaW5nIGNvbnNpZGVyYXRpb25zLCBkcml2ZXIgaW1wbGVtZW50YXRpb25zIGFuZCBBUElzLCB0aGUgcG90ZW50aWFsIGZhaWx1cmUgbW9kZXMsIHRoZSBsaWtlbHkgZGVidWdnaW5nIGNoYWxsZW5nZXMsIGFuZCwgb2YgY291cnNlLCB0aGUgaW1wbGljYXRpb25zIGZvciB0aGUgdXNlcidzIGV4cGVyaWVuY2UuIEdvdCB0byBoYXZlIGEgc29saWQgZ3Jhc3Agb24gYWxsIHRoZXNlIHRoaW5ncywgdG8gZW5zdXJlIHByb3BlciBleGVjdXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNTk2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDM6NDkuNzgwODU4NzUyWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTkyMDM2NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IFVTQl9GX1VBQzJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00MTI9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQxOC1cXHRzZWxlY3QgVVNCX1VfQVVESU9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MTk6XFx0c2VsZWN0IFVTQl9GX1VBQzJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MjAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTc1PWNvbmZpZyBVU0JfQVVESU9cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy04MS1cXHRzZWxlY3QgVVNCX0ZfVUFDMV9MRUdBQ1kgaWYgKEdBREdFVF9VQUMxIFxcdTAwMjZcXHUwMDI2IEdBREdFVF9VQUMxX0xFR0FDWSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6ODI6XFx0c2VsZWN0IFVTQl9GX1VBQzIgaWYgIUdBREdFVF9VQUMxXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTgzLVxcdHNlbGVjdCBVU0JfVV9BVURJTyBpZiAoVVNCX0ZfVUFDMiB8fCBVU0JfRl9VQUMxKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMzowMzo0OS45MDAwNjc0N1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjAxMDA3Njk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipFbmFibGluZyBVU0IgQXVkaW8gaW4gQ29uZmlnRlM6IEEgRGVwZW5kZW5jeSBDaGVjayoqXG5cblJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gV2UgbmVlZCB0byBlbmFibGUgYFVTQl9DT05GSUdGU19GX1VBQzFgIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMmAuIFRoYXQncyB0aGUgcGxhbiBmb3IgYnJpbmdpbmcgdXAgVVNCIEF1ZGlvIHdpdGggQ29uZmlnRlMuIEJlZm9yZSB3ZSBqdXN0IGRpdmUgaW4gdGhvdWdoLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHdlJ3JlIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIG5lZWQgdG8gcXVpY2tseSBydW4gdGhyb3VnaCB0aGUgZGVwZW5kZW5jaWVzIGZvciBlYWNoIG9mIHRob3NlIGZlYXR1cmVzLiBNeSBndXQgdGVsbHMgbWUgdGhlcmUgd29uJ3QgYmUgbWFueSBzaG93c3RvcHBlcnMsIGJ1dCBJIG5ldmVyIHNraXAgdGhpcyBzdGVwLiBUaGlzIGlzIGEgc29saWQgY2hlY2sgYmVmb3JlIHdlIGJyZWFrIGFueXRoaW5nISBUaW1lIHRvIGNyb3NzLXJlZmVyZW5jZSB0aGUgS2NvbmZpZyBmaWxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIyOTEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMzowMzo1NS4xMDEwNzc2MzhaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4MjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM4MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM4MDpcXHRcXG4gMzgxOlxcdGNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxXFxuIDM4MjpcXHRcXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjBcXFwiXFxuIDM4MzpcXHRcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbiAzODQ6XFx0XFx0ZGVwZW5kcyBvbiBTTkRcXG4gMzg1OlxcdFxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuIDM4NjpcXHRcXHRzZWxlY3QgU05EX1BDTVxcbiAzODc6XFx0XFx0c2VsZWN0IFVTQl9VX0FVRElPXFxuIDM4ODpcXHRcXHRzZWxlY3QgVVNCX0ZfVUFDMVxcbiAzODk6XFx0XFx0aGVscFxcbiAzOTA6XFx0XFx0ICBUaGlzIEF1ZGlvIGZ1bmN0aW9uIGltcGxlbWVudHMgMSBBdWRpb0NvbnRyb2wgaW50ZXJmYWNlLFxcbiAzOTE6XFx0XFx0ICAxIEF1ZGlvU3RyZWFtaW5nIEludGVyZmFjZSBlYWNoIGZvciBVU0ItT1VUIGFuZCBVU0ItSU4uXFxuIDM5MjpcXHRcXHQgIFRoaXMgZHJpdmVyIGRvZXNuJ3QgZXhwZWN0IGFueSByZWFsIEF1ZGlvIGNvZGVjIHRvIGJlIHByZXNlbnRcXG4gMzkzOlxcdFxcdCAgb24gdGhlIGRldmljZSAtIHRoZSBhdWRpbyBzdHJlYW1zIGFyZSBzaW1wbHkgc2lua2VkIHRvIGFuZFxcbiAzOTQ6XFx0XFx0ICBzb3VyY2VkIGZyb20gYSB2aXJ0dWFsIEFMU0Egc291bmQgY2FyZCBjcmVhdGVkLiBUaGUgdXNlci1zcGFjZVxcbiAzOTU6XFx0XFx0ICBhcHBsaWNhdGlvbiBtYXkgY2hvb3NlIHRvIGRvIHdoYXRldmVyIGl0IHdhbnRzIHdpdGggdGhlIGRhdGFcXG4gMzk2OlxcdFxcdCAgcmVjZWl2ZWQgZnJvbSB0aGUgVVNCIEhvc3QgYW5kIGNob29zZSB0byBwcm92aWRlIHdoYXRldmVyIGl0XFxuIDM5NzpcXHRcXHQgIHdhbnRzIGFzIGF1ZGlvIGRhdGEgdG8gdGhlIFVTQiBIb3N0LlxcbiAzOTg6XFx0XFxuIDM5OTpcXHRjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMV9MRUdBQ1lcXG4gNDAwOlxcdFxcdGJvb2wgXFxcIkF1ZGlvIENsYXNzIDEuMCAobGVnYWN5IGltcGxlbWVudGF0aW9uKVxcXCJcXG4gNDAxOlxcdFxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuIDQwMjpcXHRcXHRkZXBlbmRzIG9uIFNORFxcbiA0MDM6XFx0XFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4gNDA0OlxcdFxcdHNlbGVjdCBTTkRfUENNXFxuIDQwNTpcXHRcXHRzZWxlY3QgVVNCX0ZfVUFDMV9MRUdBQ1lcXG4gNDA2OlxcdFxcdGhlbHBcXG4gNDA3OlxcdFxcdCAgVGhpcyBBdWRpbyBmdW5jdGlvbiBpbXBsZW1lbnRzIDEgQXVkaW9Db250cm9sIGludGVyZmFjZSxcXG4gNDA4OlxcdFxcdCAgMSBBdWRpb1N0cmVhbWluZyBJbnRlcmZhY2UgZWFjaCBmb3IgVVNCLU9VVCBhbmQgVVNCLUlOLlxcbiA0MDk6XFx0XFx0ICBUaGlzIGlzIGEgbGVnYWN5IGRyaXZlciBhbmQgcmVxdWlyZXMgYSByZWFsIEF1ZGlvIGNvZGVjXFxuIDQxMDpcXHRcXHQgIHRvIGJlIHByZXNlbnQgb24gdGhlIGRldmljZS5cXG4gNDExOlxcdFxcbiA0MTI6XFx0Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzJcXG4gNDEzOlxcdFxcdGJvb2wgXFxcIkF1ZGlvIENsYXNzIDIuMFxcXCJcXG4gNDE0OlxcdFxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuIDQxNTpcXHRcXHRkZXBlbmRzIG9uIFNORFxcbiA0MTY6XFx0XFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4gNDE3OlxcdFxcdHNlbGVjdCBTTkRfUENNXFxuIDQxODpcXHRcXHRzZWxlY3QgVVNCX1VfQVVESU9cXG4gNDE5OlxcdFxcdHNlbGVjdCBVU0JfRl9VQUMyXFxuIDQyMDpcXHRcXHRoZWxwXFxuIDQyMTpcXHRcXHQgIFRoaXMgQXVkaW8gZnVuY3Rpb24gaXMgY29tcGF0aWJsZSB3aXRoIFVTQiBBdWRpbyBDbGFzc1xcbiA0MjI6XFx0XFx0ICBzcGVjaWZpY2F0aW9uIDIuMC4gSXQgaW1wbGVtZW50cyAxIEF1ZGlvQ29udHJvbCBpbnRlcmZhY2UsXFxuIDQyMzpcXHRcXHQgIDEgQXVkaW9TdHJlYW1pbmcgSW50ZXJmYWNlIGVhY2ggZm9yIFVTQi1PVVQgYW5kIFVTQi1JTi5cXG4gNDI0OlxcdFxcdCAgVGhpcyBkcml2ZXIgZG9lc24ndCBleHBlY3QgYW55IHJlYWwgQXVkaW8gY29kZWMgdG8gYmUgcHJlc2VudFxcbiA0MjU6XFx0XFx0ICBvbiB0aGUgZGV2aWNlIC0gdGhlIGF1ZGlvIHN0cmVhbXMgYXJlIHNpbXBseSBzaW5rZWQgdG8gYW5kXFxuIDQyNjpcXHRcXHQgIHNvdXJjZWQgZnJvbSBhIHZpcnR1YWwgQUxTQSBzb3VuZCBjYXJkIGNyZWF0ZWQuIFRoZSB1c2VyLXNwYWNlXFxuIDQyNzpcXHRcXHQgIGFwcGxpY2F0aW9uIG1heSBjaG9vc2UgdG8gZG8gd2hhdGV2ZXIgaXQgd2FudHMgd2l0aCB0aGUgZGF0YVxcbiA0Mjg6XFx0XFx0ICByZWNlaXZlZCBmcm9tIHRoZSBVU0IgSG9zdCBhbmQgY2hvb3NlIHRvIHByb3ZpZGUgd2hhdGV2ZXIgaXRcXG4gNDI5OlxcdFxcdCAgd2FudHMgYXMgYXVkaW8gZGF0YSB0byB0aGUgVVNCIEhvc3QuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDEzOjAzOjU1LjEwMTE4NzMyOFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTAwODQwMDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqQ29uZmlndXJpbmcgVVNCIEdhZGdldHMgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqXG5cblJpZ2h0LCBzbyB0byBnZXQgdGhpcyBVU0IgZ2FkZ2V0IGZ1bmN0aW9uYWxpdHkgdXAgYW5kIHJ1bm5pbmcsIEknbSBnb2luZyB0byBuZWVkIHRvIGVuYWJsZSBhIGZldyBrZXkga2VybmVsIG1vZHVsZXMuIEZpcnN0LCBJIGtub3cgSSdsbCBuZWVkIGBVU0JfQ09ORklHRlNgLCB0aGF0J3MgYSBnaXZlbi4gVGhlbiwgc2luY2Ugd2UgYXJlIHdvcmtpbmcgd2l0aCBhdWRpbywgYFNORGAgaXMgYSBtdXN0LiBBbmQsIHRvIHN1cHBvcnQgdGhlIHNwZWNpZmljcyBvZiBVU0IgQXVkaW8gQ2xhc3MsIEkgc2hvdWxkIG1ha2Ugc3VyZSB0aGF0IEkgaGF2ZSBib3RoIGBVU0JfQ09ORklHRlNfRl9VQUMxYCBhbmQgYFVTQl9DT05GSUdGU19GX1VBQzJgIGVuYWJsZWQuXG5cbk5vdywgdGhlIGNydWNpYWwgcGllY2UgZm9yIHZpcnR1YWxpemF0aW9uLi4uIHRoYXQncyB3aGVyZSBgVVNCX0RVTU1ZX0hDRGAgY29tZXMgaW4uIEkgcmVjYWxsIHRoYXQgdGhpcyBwcm92aWRlcyB0aGUgZHVtbXkgVURDIChVU0IgRGV2aWNlIENvbnRyb2xsZXIpIGFuZCBIQ0QgKFVTQiBIb3N0IENvbnRyb2xsZXIpIG5lZWRlZCBmb3IgdGhlc2UgZ2FkZ2V0cyB0byBmdW5jdGlvbiB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nLiBMZXQgbWUganVzdCB0YWtlIGEgcXVpY2sgbG9vayBhdCBgVVNCX0RVTU1ZX0hDRGAgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIG9mIGl0cyByb2xlLCBhbmQgbWFrZSBzdXJlIGl0IGRvZXNuJ3QgaGF2ZSBhbnkgb2J2aW91cyBjb25mbGljdHMgb3IgZGVwZW5kZW5jaWVzIHRoYXQgSSBuZWVkIHRvIGtlZXAgaW4gbWluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMzMzQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDEzOjAzOjU5LjIwMjAzMDc3MloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAyNjgzNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9EVU1NWV9IQ0RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9NDIyPXNvdXJjZSBcXFwiZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9jZG5zMi9LY29uZmlnXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQyNy1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6NDI4OmNvbmZpZyBVU0JfRFVNTVlfSENEXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQyOS1cXHR0cmlzdGF0ZSBcXFwiRHVtbXkgSENEIChERVZFTE9QTUVOVClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDEzOjAzOjU5LjI1MjMwNTY1MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTUwNDA4MjUxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqVVNCX0RVTU1ZX0hDRCBEZXBlbmRlbmN5IERlZXAgRGl2ZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgZGVwZW5kZW5jaWVzIGFzc29jaWF0ZWQgd2l0aCBgVVNCX0RVTU1ZX0hDRGAuIEkndmUgd29ya2VkIHdpdGggSENEcyAoSG9zdCBDb250cm9sbGVyIERyaXZlcnMpIGFuZCB0aGUgaW50cmljYWNpZXMgb2YgVVNCIHN0YWNrcyBmb3IgeWVhcnMsIHNvIEkgdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIHBpdGZhbGxzIG9mIHRoZXNlIHN5c3RlbXMuIEknbSBnb2luZyB0byBzdGFydCBieSB0cmFjaW5nIHRocm91Z2ggdGhlIGNvZGUuIEknbGwgcHJvYmFibHkgc3RhcnQgd2l0aCB0aGUgY29uZmlndXJhdGlvbiBmaWxlcyB0byBzZWUgd2hpY2ggb3B0aW9ucyBhcmUgZW5hYmxlZCBhbG9uZ3NpZGUgaXQgYW5kIHNlZSB3aGF0IGxpYnJhcmllcyBvciBtb2R1bGVzIHRoaXMgZHJpdmVyIHB1bGxzIGluLiBUaGVuLCBJJ2xsIG5lZWQgdG8gdGhpbmsgYWJvdXQgcG90ZW50aWFsIGNvbmZsaWN0cyBvciBzaGFyZWQgcmVzb3VyY2VzIHRoaXMgZHVtbXkgY29udHJvbGxlciBtaWdodCBuZWVkLiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgZXZlbiBhIFwiZHVtbXlcIiBkZXZpY2UgY2FuIGJlIHN1cnByaXNpbmdseSBjb21wbGV4IGluIHRlcm1zIG9mIGludGVyYWN0aW5nIHdpdGggbG93ZXIgbGV2ZWwgVVNCIGNvcmUgZnVuY3Rpb25hbGl0eS4gSSdsbCBuZWVkIHRvIG1lbnRhbGx5IG1hcCBvdXQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBVU0IgY29yZSwgZXNwZWNpYWxseSBob3cgaXQgaGFuZGxlcyB0cmFuc2ZlciBkZXNjcmlwdG9ycyBhbmQgZW5kcG9pbnRzLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGFueSBpbmRpY2F0aW9ucyBvZiBzaGFyZWQgbWVtb3J5IGFjY2VzcywgaW50ZXJydXB0IGhhbmRsaW5nLCBhbmQgbGlrZWx5IG5lZWQgdG8gY29uc2lkZXIgcG93ZXIgbWFuYWdlbWVudCBpbXBsaWNhdGlvbnMuIFRoaXMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSBteSB3b3JrIGlzIGZ1bGx5IGNvbXBhdGlibGUsIHJvYnVzdCBhbmQgd29uJ3QgaW50cm9kdWNlIHVud2FudGVkIHNpZGUgZWZmZWN0cy4gVWx0aW1hdGVseSwgSSdtIGV4cGVjdGluZyB0aGlzIHdpbGwgaW52b2x2ZSBzdGVwcGluZyB0aHJvdWdoIHRoZSBidWlsZCBwcm9jZXNzLCBjaGVja2luZyBoZWFkZXIgZmlsZXMgYW5kIHJldmlld2luZyByZWxldmFudCBrZXJuZWwgZG9jdW1lbnRhdGlvbiB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBsYW5kc2NhcGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzODI1LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDQ6MTAuNzU2MzkxMDYxWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0MjA6XFx0c291cmNlIFxcXCJkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL2FzcGVlZC12aHViL0tjb25maWdcXFwiXFxuIDQyMTpcXHRcXG4gNDIyOlxcdHNvdXJjZSBcXFwiZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9jZG5zMi9LY29uZmlnXFxcIlxcbiA0MjM6XFx0XFxuIDQyNDpcXHQjXFxuIDQyNTpcXHQjIExBU1QgLS0gZHVtbXkvZW11bGF0ZWQgY29udHJvbGxlclxcbiA0MjY6XFx0I1xcbiA0Mjc6XFx0XFxuIDQyODpcXHRjb25maWcgVVNCX0RVTU1ZX0hDRFxcbiA0Mjk6XFx0XFx0dHJpc3RhdGUgXFxcIkR1bW15IEhDRCAoREVWRUxPUE1FTlQpXFxcIlxcbiA0MzA6XFx0XFx0ZGVwZW5kcyBvbiBVU0I9eSB8fCAoVVNCPW0gXFx1MDAyNlxcdTAwMjYgVVNCX0dBREdFVD1tKVxcbiA0MzE6XFx0XFx0aGVscFxcbiA0MzI6XFx0XFx0ICBUaGlzIGhvc3QgY29udHJvbGxlciBkcml2ZXIgZW11bGF0ZXMgVVNCLCBsb29waW5nIGFsbCBkYXRhIHRyYW5zZmVyXFxuIDQzMzpcXHRcXHQgIHJlcXVlc3RzIGJhY2sgdG8gYSBVU0IgXFxcImdhZGdldCBkcml2ZXJcXFwiIGluIHRoZSBzYW1lIGhvc3QuICBUaGUgaG9zdFxcbiA0MzQ6XFx0XFx0ICBzaWRlIGlzIHRoZSBjb250cm9sbGVyOyB0aGUgZ2FkZ2V0IHNpZGUgaXMgdGhlIGRldmljZS4gIEdhZGdldCBkcml2ZXJzXFxuIDQzNTpcXHRcXHQgIGNhbiBiZSBoaWdoLCBmdWxsLCBvciBsb3cgc3BlZWQ7IGFuZCB0aGV5IGhhdmUgYWNjZXNzIHRvIGVuZHBvaW50c1xcbiA0MzY6XFx0XFx0ICBsaWtlIHRob3NlIGZyb20gTkVUMjI4MCwgUFhBMnh4LCBvciBTQTExMDAgaGFyZHdhcmUuXFxuIDQzNzpcXHRcXG4gNDM4OlxcdFxcdCAgVGhpcyBtYXkgaGVscCBpbiBzb21lIHN0YWdlcyBvZiBjcmVhdGluZyBhIGRyaXZlciB0byBlbWJlZCBpbiBhXFxuIDQzOTpcXHRcXHQgIExpbnV4IGRldmljZSwgc2luY2UgaXQgbGV0cyB5b3UgZGVidWcgc2V2ZXJhbCBwYXJ0cyBvZiB0aGUgZ2FkZ2V0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDEzOjA0OjEwLjc1NjQ3MzU3MVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Nzc1NDY0ODA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gQ29udW5kcnVtKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGBVU0JfRFVNTVlfSENEYCBoaW5nZXMgb24gYm90aCBgVVNCYCBhbmQgYFVTQl9HQURHRVRgLCBzbyB0aG9zZSBhcmUgZGVmaW5pdGVseSBpbiB0aGUgcGljdHVyZS4gSSBuZWVkIHRvIGVuc3VyZSB0aG9zZSBhcmUgZGVmaW5lZCBmaXJzdC4gQW5kIHdoaWxlIEknbSBhdCBpdCwgSSBzaG91bGQgYWxzbyBpbmNsdWRlIGBVU0JfQ09ORklHRlNgLCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMWAsIGBVU0JfQ09ORklHRlNfRl9VQUMyYCwgYW5kIGBTTkRgLiBDYW4ndCBodXJ0IHRvIGhhdmUgYWxsIHRob3NlIGR1Y2tzIGluIGEgcm93LlxuXG5Ob3csIHRoZSByZWFsIGZvY3VzIGhlcmUgc2VlbXMgdG8gYmUgb24gdGhvc2UgYGZfdWFjKl8qc3JhdGVfc3RvcmVgIGZ1bmN0aW9ucy4gU3BlY2lmaWNhbGx5LCBgZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZWAsIGBmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlYCwgYGZfdWFjMl9vcHRzX2Nfc3JhdGVfc3RvcmVgLCBhbmQgYGZfdWFjMl9vcHRzX3Bfc3JhdGVfc3RvcmVgLiBUaGV5IG11c3QgYmUgdGhlIGtleSB0byBzb21ldGhpbmcgaW1wb3J0YW50LiBBbmQgd2FpdCBhIG1pbnV0ZS4uLiB0aGUgYXNzb2NpYXRlZCBtYWNyb3MgYXJlIGBVQUMxX1JBVEVfQVRUUklCVVRFYCBhbmQgYFVBQzJfUkFURV9BVFRSSUJVVEVgLiBJIHNob3VsZCBnbyBmaW5kIHdoZXJlIHRoZXNlIG1hY3JvcyBhcmUgYmVpbmcgdXNlZCwgYmVzaWRlcyB3aGVyZSBJIGV4cGVjdC4gVGhpcyBpcyB3aGVyZSBJJ2xsIGZpbmQgdGhlIG5leHQgY3JpdGljYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NTE3LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDQ6MTUuNTMxOTQwOTQ1WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTIyMjM5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJVQUMxX1JBVEVfQVRUUklCVVRFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTU2OD1DT05GSUdGU19BVFRSKGZfdWFjMV9vcHRzXywgbmFtZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU2OS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTU3MDojZGVmaW5lIFVBQzFfUkFURV9BVFRSSUJVVEUobmFtZSlcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1NzEtc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFx0XFxcXFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jPTE2NzE9VUFDMV9BVFRSSUJVVEUodTMyLCBjX2NobWFzayk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2NzI6VUFDMV9SQVRFX0FUVFJJQlVURShjX3NyYXRlKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY3My1VQUMxX0FUVFJJQlVURSh1MzIsIGNfc3NpemUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNjc0PVVBQzFfQVRUUklCVVRFKHUzMiwgcF9jaG1hc2spO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjc1OlVBQzFfUkFURV9BVFRSSUJVVEUocF9zcmF0ZSk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NzYtVUFDMV9BVFRSSUJVVEUodTMyLCBwX3NzaXplKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDQ6MTUuNTgzMTY4MDI0WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1OTM3Mzg4MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBhcyBpZiBJJ20gdGhlIG9uZSB0aGlua2luZyBpdDpcblxuKipDb25zaWRlcmluZyBBdWRpbyBTYW1wbGUgUmF0ZXMgYW5kIFVBQzIqKlxuXG5SaWdodCwgc28gSSdtIGZvY3VzaW5nIG9uIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBzYW1wbGUgcmF0ZXMuIEknbSB0aGlua2luZyBhYm91dCBgY19zcmF0ZWAgYW5kIGBwX3NyYXRlYCwgbWFraW5nIHN1cmUgdGhvc2UgYXJlIHdlbGwtZGVmaW5lZCBhbmQgYWNjb3VudGVkIGZvci4gVGhhdCdzIGEga2V5IHN0YXJ0aW5nIHBvaW50LiBBbmQgbm93LCBtb3ZpbmcgdG8gYFVBQzJfUkFURV9BVFRSSUJVVEVgLi4uIEkgbmVlZCB0byBjb25zaWRlciBleGFjdGx5IGhvdyB0aGlzIHJlbGF0ZXMgdG8gdGhlIHNhbXBsZSByYXRlIG5lZ290aWF0aW9uIGFuZCB0aGUgb3ZlcmFsbCBhdWRpbyBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZnVsbHkgdW5kZXJzdGFuZCBob3cgdGhpcyBhdHRyaWJ1dGUgaW50ZXJhY3RzIHdpdGggZXZlcnl0aGluZyBlbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTQyOSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDEzOjA0OjE5LjE3NjkxMDgzN1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjExMTc3Nzg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlVBQzJfUkFURV9BVFRSSUJVVEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYz0xOTg2PUNPTkZJR0ZTX0FUVFIoZl91YWMyX29wdHNfLCBuYW1lKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0xOTg3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYzoxOTg4OiNkZWZpbmUgVUFDMl9SQVRFX0FUVFJJQlVURShuYW1lKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMtMTk4OS1zdGF0aWMgc3NpemVfdCBmX3VhYzJfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM9MjA5Mj1VQUMyX0FUVFJJQlVURSh1MzIsIHBfY2htYXNrKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM6MjA5MzpVQUMyX1JBVEVfQVRUUklCVVRFKHBfc3JhdGUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0yMDk0LVVBQzJfQVRUUklCVVRFKHUzMiwgcF9zc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM9MjA5Nj1VQUMyX0FUVFJJQlVURSh1MzIsIGNfY2htYXNrKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM6MjA5NzpVQUMyX1JBVEVfQVRUUklCVVRFKGNfc3JhdGUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0yMDk4LVVBQzJfQVRUUklCVVRFX1NZTkMoY19zeW5jKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDQ6MTkuMzg4MDk0MzQ0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk2MDY4MzQ3NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBVU0IgQXVkaW8gQ2xhc3MgQ29uZmlndXJhdGlvbiBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnM6IGBmX3VhYzFfb3B0c19jX3NyYXRlX3N0b3JlYCwgYGZfdWFjMV9vcHRzX3Bfc3JhdGVfc3RvcmVgLCBgZl91YWMyX29wdHNfY19zcmF0ZV9zdG9yZWAsIGFuZCBgZl91YWMyX29wdHNfcF9zcmF0ZV9zdG9yZWAuIFRoZXkncmUgdGhlIG9uZXMgYmVpbmcgdXNlZCBmb3IgdGhlIGBjX3NyYXRlYCBhbmQgYHBfc3JhdGVgIHNldHRpbmdzLiBJIHNlZSB0aGF0IHRoZXkncmUgc3RhdGljLCBhbmQgdGhhdCdzIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dC4gSSByZWNhbGwgdGhleSdyZSBhc3NpZ25lZCB0byBjb25maWdmcyBhdHRyaWJ1dGVzIHVzaW5nIGBDT05GSUdGU19BVFRSYC4gUmlnaHQsIHNvIGBDT05GSUdGU19BVFRSYCBjcmVhdGVzLCBmb3IgZXhhbXBsZSwgYGZfdWFjMV9vcHRzX2F0dHJfY19zcmF0ZWAsIHdoaWNoIHBvaW50cyB0byBgZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZWAuXG5cbkJlY2F1c2UgdGhlc2UgYXJlIHN0YXRpYyBmdW5jdGlvbnMsIEkgaW1tZWRpYXRlbHkgY29uc2lkZXIgcG90ZW50aWFsIGlzc3Vlcy4gVGhleSAqbWlnaHQqIG5vdCBiZSBleHBvcnRlZCBhcyBnbG9iYWwgc3ltYm9scywgYnV0IHNpbmNlIHRoZXkncmUgZGVmaW5pdGVseSByZWFjaGFibGUgdmlhIGNvbmZpZ2ZzIChiZWluZyBwYXNzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMgaW4gY29uZmlnZnMgc3RydWN0dXJlcyksIHRoZXkgYXJlIGF2YWlsYWJsZS4gSSB3YXMgd29uZGVyaW5nIGlmIHRoZXkgYXJlIGlubGluZWQsIGJ1dCB0aGF0IHdvbid0IGhhcHBlbiBiZWNhdXNlIHRoZXkgYXJlIHBhc3NlZCBhcyBmdW5jdGlvbiBwb2ludGVycyB0byBjb25maWdmcyBzdHJ1Y3R1cmVzLiBTbywgZXZlbiB0aG91Z2ggdGhleSBhcmUgc3RhdGljLCBJIGtub3cgdGhleSB3aWxsIGhhdmUgZGlzdGluY3QgYWRkcmVzc2VzLiBTeXprYWxsZXIgY291bGQgaGF2ZSB0cm91YmxlIHJlc29sdmluZyB0aGUgbmFtZXMsIGJ1dCB0aGF0J3Mgbm90IGEgcHJvYmxlbSwgYmVjYXVzZSB0aGV5IGFyZSBpbiBga2FsbHN5bXNgIGFuZCBpdCBjYW4gcmVzb2x2ZSB0aGUgbmFtZXMuIEFjdHVhbGx5LCBJIHdhcyBqdXN0IHJlYWRpbmcgdGhlIHByb21wdCBhYm91dCBwcmVmZXJyaW5nIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5cG9pbnQgZnVuY3Rpb25zLCBidXQgc2luY2UgdGhlc2UgYXJlIHVzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMsIHRoZXkgYXJlICpub3QqIGlubGluZWQgYW5kIGFyZSBmaW5lIHRvIHVzZS5cblxuTm93LCBsZXQgbWUgem9vbSBvdXQuIFRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRoZXNlIGBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZWAgYW5kIGBmX3VhYzJfb3B0c18jI25hbWUjI19zdG9yZWAgZnVuY3Rpb25zIGluIHRoZSBgVUFDMV9SQVRFX0FUVFJJQlVURWAgYW5kIGBVQUMyX1JBVEVfQVRUUklCVVRFYCBzdHJ1Y3R1cmVzLiBUaGlzIHBvaW50cyB0byBhIG1lbW9yeSBsZWFrIGluIHRoZSBjb25maWdmcyBzdG9yZSBjYWxsYmFja3MgZm9yIFVTQiBBdWRpbyBDbGFzcyAxIGFuZCAyIGdhZGdldCBkcml2ZXJzLiBUaGUgbGVhayBjb21lcyBmcm9tIGBzdHJzZXBgIG1vZGlmeWluZyB0aGUgcG9pbnRlciwgd2hpY2ggY2F1c2VzIHRoZSBga2ZyZWVgIHRvIGZyZWUgdGhlIHdyb25nIG1lbW9yeSBhZGRyZXNzLiBUaGUgZml4LCB0aGVuLCBpcyB0byBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgcG9pbnRlciBzbyB0aGUgY29ycmVjdCBtZW1vcnkgZ2V0cyBmcmVlZC4gVGhpcyBjb2RlJ3MgcmVhY2hhYmxlIHdoZW4gY29uZmlndXJpbmcgVVNCIGdhZGdldHMgdXNpbmcgY29uZmlnZnMgYW5kIHRoZSBkdW1teSBIQ0QuXG5cblRvIHRlc3QgdGhpcywgSSdsbCBuZWVkIHRvIGVuYWJsZSB0aGVzZSBjb25maWd1cmF0aW9uczogYFVTQl9HQURHRVRgLCBgVVNCX0RVTU1ZX0hDRGAsIGBVU0JfQ09ORklHRlNgLCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMWAsIGBVU0JfQ09ORklHRlNfRl9VQUMyYCwgYW5kIGBTTkRgLiBJJ2xsIGRvdWJsZSBjaGVjayBgQ09ORklHX1VTQl9DT05GSUdGU19GX1VBQzFgLCBhbmQsIHllcywgdGhhdCBpcyB0aGUgY29ycmVjdCBuYW1lLiBJdCBkZXBlbmRzIG9uIGBVU0JfQ09ORklHRlNgIGFuZCBgU05EYC4gTm8gb3RoZXIgZGVwZW5kZW5jaWVzPyBMZXQgbWUgZG91YmxlLWNoZWNrIGBVU0JfQ09ORklHRlNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjAxNiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMzowNDoyOC45OTQ5MzIxNzJaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NTMzMzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfQ09ORklHRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMjM9Y29uZmlnIFVTQl9GX1RDTVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjI3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIyODpjb25maWcgVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjI5LVxcdHRyaXN0YXRlIFxcXCJVU0IgR2FkZ2V0IGZ1bmN0aW9ucyBjb25maWd1cmFibGUgdGhyb3VnaCBjb25maWdmc1xcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIzOS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNDA6Y29uZmlnIFVTQl9DT05GSUdGU19TRVJJQUxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNDEtXFx0Ym9vbCBcXFwiR2VuZXJpYyBzZXJpYWwgYnVsayBpbi9vdXRcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNDgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjQ5OmNvbmZpZyBVU0JfQ09ORklHRlNfQUNNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjUwLVxcdGJvb2wgXFxcIkFic3RyYWN0IENvbnRyb2wgTW9kZWwgKENEQyBBQ00pXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjU4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI1OTpjb25maWcgVVNCX0NPTkZJR0ZTX09CRVhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiT2JqZWN0IEV4Y2hhbmdlIE1vZGVsIChDREMgT0JFWClcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjY5OmNvbmZpZyBVU0JfQ09ORklHRlNfTkNNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjcwLVxcdGJvb2wgXFxcIk5ldHdvcmsgQ29udHJvbCBNb2RlbCAoQ0RDIE5DTSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yODAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRUNNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjgyLVxcdGJvb2wgXFxcIkV0aGVybmV0IENvbnRyb2wgTW9kZWwgKENEQyBFQ00pXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjkyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI5Mzpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTV9TVUJTRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yOTQtXFx0Ym9vbCBcXFwiRXRoZXJuZXQgQ29udHJvbCBNb2RlbCAoQ0RDIEVDTSkgc3Vic2V0XFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzAyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMwMzpjb25maWcgVVNCX0NPTkZJR0ZTX1JORElTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzA0LVxcdGJvb2wgXFxcIlJORElTXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzE4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMxOTpjb25maWcgVVNCX0NPTkZJR0ZTX0VFTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMyMC1cXHRib29sIFxcXCJFdGhlcm5ldCBFbXVsYXRpb24gTW9kZWwgKEVFTSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM1OmNvbmZpZyBVU0JfQ09ORklHRlNfUEhPTkVUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzM2LVxcdGJvb2wgXFxcIlBob25ldCBwcm90b2NvbFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNDU6Y29uZmlnIFVTQl9DT05GSUdGU19NQVNTX1NUT1JBR0VcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNDYtXFx0Ym9vbCBcXFwiTWFzcyBzdG9yYWdlXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzU1LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM1Njpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTEJfU1NcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTctXFx0Ym9vbCBcXFwiTG9vcGJhY2sgYW5kIHNvdXJjZXNpbmsgZnVuY3Rpb24gKGZvciB0ZXN0aW5nKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM2OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNjk6Y29uZmlnIFVTQl9DT05GSUdGU19GX0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzcwLVxcdGJvb2wgXFxcIkZ1bmN0aW9uIGZpbGVzeXN0ZW0gKEZ1bmN0aW9uRlMpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzgwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4Mi1cXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjBcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zOTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Mzk5OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxX0xFR0FDWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjAgKGxlZ2FjeSBpbXBsZW1lbnRhdGlvbilcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTEtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDEyOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMyXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDEzLVxcdGJvb2wgXFxcIkF1ZGlvIENsYXNzIDIuMFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQzMC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MzE6Y29uZmlnIFVTQl9DT05GSUdGU19GX01JRElcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MzItXFx0Ym9vbCBcXFwiTUlESSBmdW5jdGlvblxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ0NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0NDU6Y29uZmlnIFVTQl9DT05GSUdGU19GX01JREkyXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ2LVxcdGJvb2wgXFxcIk1JREkgMi4wIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDU3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ1ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDU5LVxcdGJvb2wgXFxcIkhJRCBmdW5jdGlvblxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0Njg6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VWQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2OS1cXHRib29sIFxcXCJVU0IgV2ViY2FtIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDgwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfUFJJTlRFUlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4Mi1cXHRib29sIFxcXCJQcmludGVyIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5NTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk2LVxcdGJvb2wgXFxcIlVTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDQ6MjkuMDQ0NDcxOTYxWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5OTgzNjAxMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFVTQiBDb25maWdGUyBmb3IgU291bmQgU3VwcG9ydCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IGBVU0JfQ09ORklHRlNgIHJlcXVpcmVzIGBVU0JfR0FER0VUYCwgc28gdGhvc2UgYXJlIGRlZmluaXRlbHkgaW4gdGhlIG1peC4gVGhlbiwgd2UgaGF2ZSBgVVNCX0RVTU1ZX0hDRGAgYW5kIHRoZSBhY3R1YWwgYFVTQl9DT05GSUdGU2AgaXRzZWxmLiBGdXJ0aGVyLCB3ZSBzZWUgYFVTQl9DT05GSUdGU19GX1VBQzFgLCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMmAsIGFuZCBgU05EYC5cblxuTm93LCBoZXJlJ3Mgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gYFVTQl9DT05GSUdGU2AgaXMgdHJpc3RhdGUsIG1lYW5pbmcgaXQgY2FuIGJlIGEgbW9kdWxlIG9yIGJ1aWx0LWluLCBvciBkaXNhYmxlZC4gQnV0IGBVU0JfQ09ORklHRlNfRl9VQUMxYCBpcyBhIGJvb2xlYW4uIFRoYXQgbWVhbnMgYFVTQl9DT05GSUdGU19GX1VBQzFgIGlzIGdvaW5nIHRvIGVpdGhlciBiZSBidWlsdCBpbnRvIHRoZSBgdXNiX2ZfdWFjMWAgbW9kdWxlLCBvciBkaXJlY3RseSBpbnRvIHRoZSBrZXJuZWwuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoZSBmdW5jdGlvbiBuYW1lcy4gSXQgbG9va3MgbGlrZSBgZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZWAgaXMgaW5kZWVkIHRoZSBhY3R1YWwgbmFtZS4gTGV0J3Mgc2VlLi4uIFl1cCwgaGVyZSdzIHRoZSBtYWNybzpcblxuYGBgY1xuI2RlZmluZSBVQUMxX1JBVEVfQVRUUklCVVRFKG5hbWUpXHRcdFx0XHRcdFxcXG5zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG5cdFx0XHRcdFx0IGNoYXIgKnBhZ2UpXHRcdFx0XFxcbi4uLlxuc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcblx0XHRcdFx0XHQgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBsZW4pXHRcXFxuYGBgXG5cbk9rYXksIGFuZCBpdCdzIGJlaW5nIHVzZWQgd2l0aCBgY19zcmF0ZWAgYW5kIGBwX3NyYXRlYC4gU28gd2UgaGF2ZSBgZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZWAsIGBmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlYCwgYGZfdWFjMl9vcHRzX2Nfc3JhdGVfc3RvcmVgLCBhbmQgYGZfdWFjMl9vcHRzX3Bfc3JhdGVfc3RvcmVgLlxuXG5UaGVzZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IGZ1bmN0aW9uYWwsIGFuZCBhcmUgZml4aW5nIGEgbWVtb3J5IGxlYWshIFRoaXMgbWVyaXRzIHNvbWUgZnV6emluZyBmb3Igc3VyZS5cblxuTGV0J3MgZG8gYSBxdWljayBzd2VlcCB0byBzZWUgaWYgYW55IG90aGVyIGZ1bmN0aW9ucyBhcmUgdG91Y2hlZC4uLiBObywgdGhlIHBhdGNoIGFwcGVhcnMgdG8gc29sZWx5IG1vZGlmeSB0aGUgYGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlYCBhbmQgYGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlYCBmdW5jdGlvbnMgd2l0aGluIHRoZSBgVUFDMV9SQVRFX0FUVFJJQlVURWAgYW5kIGBVQUMyX1JBVEVfQVRUUklCVVRFYCBtYWNyb3MuXG5cbkZpbmFsbHksIEkgd29uZGVyIGlmIGBDT05GSUdGU19GU2AgaXMgcmVxdWlyZWQuIEknbGwgYmV0IGBVU0JfQ09ORklHRlNgIGVpdGhlciBzZWxlY3RzIG9yIGRlcGVuZHMgb24gaXQuIEkgc2hvdWxkIHZlcmlmeSB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODgxMywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMzowNDozNy4wNDI4MzYxNjRaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyNDUzNTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfQ09ORklHRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMjM9Y29uZmlnIFVTQl9GX1RDTVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjI3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIyODpjb25maWcgVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjI5LVxcdHRyaXN0YXRlIFxcXCJVU0IgR2FkZ2V0IGZ1bmN0aW9ucyBjb25maWd1cmFibGUgdGhyb3VnaCBjb25maWdmc1xcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIzOS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNDA6Y29uZmlnIFVTQl9DT05GSUdGU19TRVJJQUxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNDEtXFx0Ym9vbCBcXFwiR2VuZXJpYyBzZXJpYWwgYnVsayBpbi9vdXRcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNDgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjQ5OmNvbmZpZyBVU0JfQ09ORklHRlNfQUNNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjUwLVxcdGJvb2wgXFxcIkFic3RyYWN0IENvbnRyb2wgTW9kZWwgKENEQyBBQ00pXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjU4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI1OTpjb25maWcgVVNCX0NPTkZJR0ZTX09CRVhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiT2JqZWN0IEV4Y2hhbmdlIE1vZGVsIChDREMgT0JFWClcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjY5OmNvbmZpZyBVU0JfQ09ORklHRlNfTkNNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjcwLVxcdGJvb2wgXFxcIk5ldHdvcmsgQ29udHJvbCBNb2RlbCAoQ0RDIE5DTSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yODAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRUNNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjgyLVxcdGJvb2wgXFxcIkV0aGVybmV0IENvbnRyb2wgTW9kZWwgKENEQyBFQ00pXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjkyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI5Mzpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTV9TVUJTRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yOTQtXFx0Ym9vbCBcXFwiRXRoZXJuZXQgQ29udHJvbCBNb2RlbCAoQ0RDIEVDTSkgc3Vic2V0XFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzAyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMwMzpjb25maWcgVVNCX0NPTkZJR0ZTX1JORElTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzA0LVxcdGJvb2wgXFxcIlJORElTXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzE4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMxOTpjb25maWcgVVNCX0NPTkZJR0ZTX0VFTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMyMC1cXHRib29sIFxcXCJFdGhlcm5ldCBFbXVsYXRpb24gTW9kZWwgKEVFTSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM1OmNvbmZpZyBVU0JfQ09ORklHRlNfUEhPTkVUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzM2LVxcdGJvb2wgXFxcIlBob25ldCBwcm90b2NvbFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNDU6Y29uZmlnIFVTQl9DT05GSUdGU19NQVNTX1NUT1JBR0VcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNDYtXFx0Ym9vbCBcXFwiTWFzcyBzdG9yYWdlXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzU1LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM1Njpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTEJfU1NcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTctXFx0Ym9vbCBcXFwiTG9vcGJhY2sgYW5kIHNvdXJjZXNpbmsgZnVuY3Rpb24gKGZvciB0ZXN0aW5nKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM2OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNjk6Y29uZmlnIFVTQl9DT05GSUdGU19GX0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzcwLVxcdGJvb2wgXFxcIkZ1bmN0aW9uIGZpbGVzeXN0ZW0gKEZ1bmN0aW9uRlMpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzgwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4Mi1cXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjBcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zOTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Mzk5OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxX0xFR0FDWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjAgKGxlZ2FjeSBpbXBsZW1lbnRhdGlvbilcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTEtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDEyOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMyXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDEzLVxcdGJvb2wgXFxcIkF1ZGlvIENsYXNzIDIuMFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQzMC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MzE6Y29uZmlnIFVTQl9DT05GSUdGU19GX01JRElcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MzItXFx0Ym9vbCBcXFwiTUlESSBmdW5jdGlvblxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ0NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0NDU6Y29uZmlnIFVTQl9DT05GSUdGU19GX01JREkyXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ2LVxcdGJvb2wgXFxcIk1JREkgMi4wIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDU3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ1ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDU5LVxcdGJvb2wgXFxcIkhJRCBmdW5jdGlvblxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0Njg6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VWQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2OS1cXHRib29sIFxcXCJVU0IgV2ViY2FtIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDgwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfUFJJTlRFUlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4Mi1cXHRib29sIFxcXCJQcmludGVyIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5NTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk2LVxcdGJvb2wgXFxcIlVTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDQ6MzcuMDk1Mjk1Njg0WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDE2NTU3ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gVVNCX0NPTkZJR0ZTIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IHRvIHRoZSBjb3JlIG9mIHRoaXMuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGltbWVkaWF0ZWx5IGdyYXZpdGF0ZXMgdG93YXJkcyB0aGUgZGVwZW5kZW5jaWVzIGFzc29jaWF0ZWQgd2l0aCBgVVNCX0NPTkZJR0ZTYC4gSSBrbm93IHRoZSBiYXNpY3MsIHRoZSBoaWdoLWxldmVsIGFyY2hpdGVjdHVyZSwgYnV0IEkgd2FudCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsIGx1cmtpbmcgaW4gdGhlIHVuZGVybHlpbmcgbW9kdWxlcyBvciBzdWJzeXN0ZW1zLiBJdCdzIGEgcXVpY2sgbWVudGFsIHNjYW4sIGNyb3NzLXJlZmVyZW5jaW5nIG15IGtub3dsZWRnZSBvZiB0aGUgcmVsZXZhbnQga2VybmVsIG1vZHVsZXM6IGBnYWRnZXRmc2AsIGB1ZGNgLCBgZ19ldGhlcmAsIGFuZCBtYXliZSBldmVuIHNvbWUgb2YgdGhlIG1vcmUgZXNvdGVyaWMgVVNCIGZ1bmN0aW9uIGRyaXZlcnMgZGVwZW5kaW5nIG9uIHRoZSBzcGVjaWZpYyB1c2UgY2FzZS4gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHBvdGVudGlhbCBjb25mbGljdHMgb3IgaW50ZXJhY3Rpb24gaXNzdWVzLiBJIHdhbnQgdG8gcnVsZSBvdXQgYW55IGdvdGNoYXMgd2l0aCB0aGUgVVNCIGNvbnRyb2xsZXIgZHJpdmVyLCB0aGUgcGxhdGZvcm0tc3BlY2lmaWMgZ2x1ZSBjb2RlLCBvciBldmVuIHNvbWV0aGluZyBsZXNzIG9idmlvdXMgbGlrZSBhIHBvd2VyIG1hbmFnZW1lbnQgaW50ZXJhY3Rpb24uIFRoaXMgaXNuJ3QganVzdCBhYm91dCBmdW5jdGlvbmFsaXR5OyBpdCdzIGFib3V0IHN0YWJpbGl0eSBhbmQgcGVyZm9ybWFuY2UsIGVuc3VyaW5nIHRoYXQgdGhpcyBjb25maWd1cmF0aW9uIGludGVncmF0ZXMgY2xlYW5seSB3aXRoIGV2ZXJ5dGhpbmcgZWxzZS4gSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoIFVTQiBwb3dlciBtYW5hZ2VtZW50IGFuZCBzeXN0ZW0td2lkZSByZXNvdXJjZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNDA2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDQ6NDAuODM2OTU0Njk0WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIyNSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIyNTpcXHRcXG4gMjI2OlxcdCMgdGhpcyBmaXJzdCBzZXQgb2YgZHJpdmVycyBhbGwgZGVwZW5kIG9uIGJ1bGstY2FwYWJsZSBoYXJkd2FyZS5cXG4gMjI3OlxcdFxcbiAyMjg6XFx0Y29uZmlnIFVTQl9DT05GSUdGU1xcbiAyMjk6XFx0XFx0dHJpc3RhdGUgXFxcIlVTQiBHYWRnZXQgZnVuY3Rpb25zIGNvbmZpZ3VyYWJsZSB0aHJvdWdoIGNvbmZpZ2ZzXFxcIlxcbiAyMzA6XFx0XFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4gMjMxOlxcdFxcdGhlbHBcXG4gMjMyOlxcdFxcdCAgQSBMaW51eCBVU0IgXFxcImdhZGdldFxcXCIgY2FuIGJlIHNldCB1cCB0aHJvdWdoIGNvbmZpZ2ZzLlxcbiAyMzM6XFx0XFx0ICBJZiB0aGlzIGlzIHRoZSBjYXNlLCB0aGUgVVNCIGZ1bmN0aW9ucyAod2hpY2ggZnJvbSB0aGUgaG9zdCdzXFxuIDIzNDpcXHRcXHQgIHBlcnNwZWN0aXZlIGFyZSBzZWVuIGFzIGludGVyZmFjZXMpIGFuZCBjb25maWd1cmF0aW9ucyBhcmVcXG4gMjM1OlxcdFxcdCAgc3BlY2lmaWVkIHNpbXBseSBieSBjcmVhdGluZyBhcHByb3ByaWF0ZSBkaXJlY3RvcmllcyBpbiBjb25maWdmcy5cXG4gMjM2OlxcdFxcdCAgQXNzb2NpYXRpbmcgZnVuY3Rpb25zIHdpdGggY29uZmlndXJhdGlvbnMgaXMgZG9uZSBieSBjcmVhdGluZ1xcbiAyMzc6XFx0XFx0ICBhcHByb3ByaWF0ZSBzeW1ib2xpYyBsaW5rcy5cXG4gMjM4OlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIERvY3VtZW50YXRpb24vdXNiL2dhZGdldF9jb25maWdmcy5yc3QuXFxuIDIzOTpcXHRcXG4gMjQwOlxcdGNvbmZpZyBVU0JfQ09ORklHRlNfU0VSSUFMXFxuIDI0MTpcXHRcXHRib29sIFxcXCJHZW5lcmljIHNlcmlhbCBidWxrIGluL291dFxcXCJcXG4gMjQyOlxcdFxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuIDI0MzpcXHRcXHRkZXBlbmRzIG9uIFRUWVxcbiAyNDQ6XFx0XFx0c2VsZWN0IFVTQl9VX1NFUklBTFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMzowNDo0MC44MzcwMzU3NjRaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY3OTgwOTQ1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLi4uXG5cbioqSW52ZXN0aWdhdGluZyBVU0JfQ09ORklHRlMgRGVwZW5kZW5jeSBvbiBDT05GSUdGU19GUyoqXG5cbkhtbSwgdGhpcyBpcyBpbnRlcmVzdGluZy4gSSdtIHRha2luZyBhIGNsb3NlIGxvb2sgYXQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBVU0JfQ09ORklHRlNgIGFuZCBgQ09ORklHRlNfRlNgLiBJdCdzIG5vdCBpbW1lZGlhdGVseSBvYnZpb3VzIHRoYXQgYFVTQl9DT05GSUdGU2AgKnJlcXVpcmVzKiBgQ09ORklHRlNfRlNgIGRpcmVjdGx5LiBUaGF0J3MgYSBiaXQgc3VycHJpc2luZywgSSBmaWd1cmVkIGl0IHdvdWxkIGJlIGEgaGFyZCBkZXBlbmRlbmN5LiBTbywgSSBuZWVkIHRvIGRpZyBkZWVwZXIuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiB0byBzZWUgaWYgYENPTkZJR0ZTX0ZTYCBpcyBpbXBsaWNpdGx5IHB1bGxlZCBpbiBieSBzb21lIG90aGVyIGNvbXBvbmVudCBvciBpZiBpdCdzIHN0cmljdGx5IG5lY2Vzc2FyeSBmb3IgYFVTQl9DT05GSUdGU2AgdG8gZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXJlJ3MgYW4gaW5kaXJlY3QgZGVwZW5kZW5jeSBoZXJlLCBvciBpZiB0aGUgZG9jdW1lbnRhdGlvbiBpcyBqdXN0IHZhZ3VlLiBUaW1lIHRvIGludmVzdGlnYXRlIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTk5OCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDQ6NDYuNTE2ODQ3ODE1WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTQ3MTkxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgQ09ORklHRlNfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0xNDU9Y29uZmlnIFVTQl9MSUJDT01QT1NJVEVcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xNDYtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNDc6XFx0c2VsZWN0IENPTkZJR0ZTX0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTQ4LVxcdGRlcGVuZHMgb24gVVNCX0dBREdFVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMzowNDo0Ni41NjYzMjQ2NjRaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzc0NTc1OTcxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBVU0IgQ29uZmlnZnMgYW5kIFVBQyBHYWRnZXQgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYFVTQl9MSUJDT01QT1NJVEVgIGRpcmVjdGx5IHNlbGVjdHMgYENPTkZJR0ZTX0ZTYCwgYW5kLCBpbiB0dXJuLCBgVVNCX0NPTkZJR0ZTYCBzZWxlY3RzIGBVU0JfTElCQ09NUE9TSVRFYC4gVGhpcyBtZWFucyBgQ09ORklHRlNfRlNgIGlzIGVmZmVjdGl2ZWx5IGd1YXJhbnRlZWQgdG8gYmUgZW5hYmxlZCBhcyBhIGRlcGVuZGVuY3kuIE5vdywgSSBoYXZlIHdoYXQgSSBuZWVkIHRvIHN1bW1hcml6ZSB0aGUgcmVzdWx0cy5cblxuVGhpcyBpcyBhIHNjZW5hcmlvIHdvcnRoIGZ1enppbmcsIHRoYXQgbXVjaCBpcyBjbGVhci4gVGhlIGtleSBmdW5jdGlvbnMgdG8gdGFyZ2V0IGFyZSB0aGUgYGZfdWFjMV9vcHRzX2Nfc3JhdGVfc3RvcmVgLCBgZl91YWMxX29wdHNfcF9zcmF0ZV9zdG9yZWAsIGBmX3VhYzJfb3B0c19jX3NyYXRlX3N0b3JlYCwgYW5kIGBmX3VhYzJfb3B0c19wX3NyYXRlX3N0b3JlYCBmdW5jdGlvbnMsIGFzIGlkZW50aWZpZWQuXG5cblRvIHRyaWdnZXIgdGhlIHZ1bG5lcmFiaWxpdHksIEknbGwgbmVlZCB0byBlbmFibGUgYSBzdWl0ZSBvZiBjb25maWd1cmF0aW9uczogYFVTQl9HQURHRVRgLCBgVVNCX0RVTU1ZX0hDRGAsIGBVU0JfQ09ORklHRlNgLCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMWAsIGBVU0JfQ09ORklHRlNfRl9VQUMyYCwgYW5kIGBTTkRgLiBUaGlzIGNvbWJpbmF0aW9uIGxpa2VseSBzZXRzIHVwIHRoZSBuZWNlc3NhcnkgaW5mcmFzdHJ1Y3R1cmU6IGEgVVNCIGdhZGdldCBmcmFtZXdvcmssIGEgZHVtbXkgaG9zdCBjb250cm9sbGVyIGZvciB2aXJ0dWFsaXplZCB0ZXN0aW5nLCBhbmQgdGhlIGNvbmZpZ2ZzIFVBQyAoVVNCIEF1ZGlvIENsYXNzKSBmdW5jdGlvbmFsaXRpZXMuIFRoZSBgU05EYCBjb25maWd1cmF0aW9uIGlzIGxpa2VseSByZWxhdGVkIHRvIHRoZSBzb3VuZCBpbmZyYXN0cnVjdHVyZSBhbmQgVUFDIGRyaXZlcnMuXG5cblRoZSBjcnV4IG9mIHRoZSBtYXR0ZXIgaXMgdGhlIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBtZW1vcnkgbGVhay4gU3BlY2lmaWNhbGx5LCB0aGUgcHJvYmxlbWF0aWMgbG9naWMgaXMgcm9vdGVkIGluIGNvbmZpZ2ZzIHN0b3JlIGNhbGxiYWNrcyBmb3IgVVNCIEF1ZGlvIENsYXNzIDEgYW5kIDIgZ2FkZ2V0IGRyaXZlcnMuIFRoZSBgc3Ryc2VwYCBmdW5jdGlvbiBpcyB0aGUgY3VscHJpdC4gSXQgbW9kaWZpZXMgdGhlIHBvaW50ZXIgaXQncyBvcGVyYXRpbmcgb24sIGxlYWRpbmcgdG8gYW4gaW5jb3JyZWN0IGBrZnJlZWAgY2FsbCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24uIFRoZSB2dWxuZXJhYmlsaXR5IGlzIHRyaWdnZXJlZCB3aGVuIGNvbmZpZ3VyaW5nIFVTQiBnYWRnZXRzIHRocm91Z2ggY29uZmlnZnMuIEdpdmVuIHRoZSBwcmVzZW5jZSBvZiBgVVNCX0RVTU1ZX0hDRGAsIEkgY2FuIGluZmVyIHRoaXMgaXMgZXhwbG9pdGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB3aGljaCBpcyBleGFjdGx5IHRoZSBraW5kIG9mIHRlc3QgZW52aXJvbm1lbnQgSSdtIGFsd2F5cyBsb29raW5nIGZvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIzNDAsIk91dHB1dFRva2VucyI6MjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDEzOjA0OjU0LjMxMjA4Nzg5MloiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NTM3NDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfR0FER0VUXCIsXG4gICAgXCJVU0JfRFVNTVlfSENEXCIsXG4gICAgXCJVU0JfQ09ORklHRlNcIixcbiAgICBcIlVTQl9DT05GSUdGU19GX1VBQzFcIixcbiAgICBcIlVTQl9DT05GSUdGU19GX1VBQzJcIixcbiAgICBcIlNORFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZfdWFjMV9vcHRzX2Nfc3JhdGVfc3RvcmVcIixcbiAgICBcImZfdWFjMV9vcHRzX3Bfc3JhdGVfc3RvcmVcIixcbiAgICBcImZfdWFjMl9vcHRzX2Nfc3JhdGVfc3RvcmVcIixcbiAgICBcImZfdWFjMl9vcHRzX3Bfc3JhdGVfc3RvcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBjb25maWdmcyBzdG9yZSBjYWxsYmFja3MgZm9yIFVTQiBBdWRpbyBDbGFzcyAxIGFuZCAyIGdhZGdldCBkcml2ZXJzLiBUaGUgbGVhayBvY2N1cnMgYmVjYXVzZSBgc3Ryc2VwYCBtb2RpZmllcyB0aGUgcG9pbnRlciwgY2F1c2luZyBga2ZyZWVgIHRvIGZyZWUgdGhlIHdyb25nIGFkZHJlc3MuIEJ5IGtlZXBpbmcgdGhlIG9yaWdpbmFsIHBvaW50ZXIsIHRoZSBtZW1vcnkgaXMgY29ycmVjdGx5IGZyZWVkLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBjb25maWdmcyB3aGVuIGNvbmZpZ3VyaW5nIFVTQiBnYWRnZXRzLCB3aGljaCBpcyBzdXBwb3J0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHRoZSBkdW1teSBIQ0QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0RVTU1ZX0hDRFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VQUMxXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VQUMyXCIsXG4gICAgXCJTTkRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmX3VhYzFfb3B0c19jX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzJfb3B0c19jX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzJfb3B0c19wX3NyYXRlX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgY29uZmlnZnMgc3RvcmUgY2FsbGJhY2tzIGZvciBVU0IgQXVkaW8gQ2xhc3MgMSBhbmQgMiBnYWRnZXQgZHJpdmVycy4gVGhlIGxlYWsgb2NjdXJzIGJlY2F1c2UgYHN0cnNlcGAgbW9kaWZpZXMgdGhlIHBvaW50ZXIsIGNhdXNpbmcgYGtmcmVlYCB0byBmcmVlIHRoZSB3cm9uZyBhZGRyZXNzLiBCeSBrZWVwaW5nIHRoZSBvcmlnaW5hbCBwb2ludGVyLCB0aGUgbWVtb3J5IGlzIGNvcnJlY3RseSBmcmVlZC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgY29uZmlnZnMgd2hlbiBjb25maWd1cmluZyBVU0IgZ2FkZ2V0cywgd2hpY2ggaXMgc3VwcG9ydGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB0aGUgZHVtbXkgSENELlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowsb65z[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 13:01:19 +0000 UTC FinishedAt: 2026-08-03 13:04:56 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGET", "USB_DUMMY_HCD", "USB_CONFIGFS", "USB_CONFIGFS_F_UAC1", "USB_CONFIGFS_F_UAC2", "SND" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGET", "USB_DUMMY_HCD", "USB_CONFIGFS", "USB_CONFIGFS_F_UAC1", "USB_CONFIGFS_F_UAC2", "SND" ], "series_id": "f4adac11-1bec-4fc0-9af5-6657d17a9e2c" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "f_uac1_opts_c_srate_store", "f_uac1_opts_p_srate_store", "f_uac2_opts_c_srate_store", "f_uac2_opts_p_srate_store" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0RVTU1ZX0hDRCYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlMmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTX0ZfVUFDMSYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlNfRl9VQUMyJiMzNDssCiAgICAmIzM0O1NORCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ZfdWFjMV9vcHRzX2Nfc3JhdGVfc3RvcmUmIzM0OywKICAgICYjMzQ7Zl91YWMxX29wdHNfcF9zcmF0ZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtmX3VhYzJfb3B0c19jX3NyYXRlX3N0b3JlJiMzNDssCiAgICAmIzM0O2ZfdWFjMl9vcHRzX3Bfc3JhdGVfc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgY29uZmlnZnMgc3RvcmUgY2FsbGJhY2tzIGZvciBVU0IgQXVkaW8gQ2xhc3MgMSBhbmQgMiBnYWRnZXQgZHJpdmVycy4gVGhlIGxlYWsgb2NjdXJzIGJlY2F1c2UgYHN0cnNlcGAgbW9kaWZpZXMgdGhlIHBvaW50ZXIsIGNhdXNpbmcgYGtmcmVlYCB0byBmcmVlIHRoZSB3cm9uZyBhZGRyZXNzLiBCeSBrZWVwaW5nIHRoZSBvcmlnaW5hbCBwb2ludGVyLCB0aGUgbWVtb3J5IGlzIGNvcnJlY3RseSBmcmVlZC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgY29uZmlnZnMgd2hlbiBjb25maWd1cmluZyBVU0IgZ2FkZ2V0cywgd2hpY2ggaXMgc3VwcG9ydGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB0aGUgZHVtbXkgSENELiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjAzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgM2JkZmYxNGI2YTdhYTNmMzE3MDc5MDA3NmNhOTcxYjU0ZjZkZDUwOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMTM6MDM6MDIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jXG5pbmRleCA4NWM1MDJlOThmNTc3Li5iYTFhOWY1MWM1NDRjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmNcbkBAIC0xNTk1LDYgJiM0MzsxNTk1LDcgQEAgc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbiB7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdHN0cnVjdCBmX3VhYzFfb3B0cyAqb3B0cyA9IHRvX2ZfdWFjMV9vcHRzKGl0ZW0pO1x0XHRcXFxuIFx0Y2hhciAqc3BsaXRfcGFnZSA9IE5VTEw7XHRcdFx0XHRcdFxcXG4mIzQzO1x0Y2hhciAqc3BsaXRfcGFnZV9hbGxvYyA9IE5VTEw7XHRcdFx0XHRcdFxcXG4gXHRpbnQgcmV0ID0gLUVJTlZBTDtcdFx0XHRcdFx0XHRcXFxuIFx0Y2hhciAqdG9rZW47XHRcdFx0XHRcdFx0XHRcXFxuIFx0dTMyIG51bTtcdFx0XHRcdFx0XHRcdFxcXG5AQCAtMTYwOCw3ICYjNDM7MTYwOSwxMiBAQCBzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXHRcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRpID0gMDtcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdG1lbXNldChvcHRzLVx1MDAzZW5hbWUjI3MsIDB4MDAsIHNpemVvZihvcHRzLVx1MDAzZW5hbWUjI3MpKTtcdFx0XFxcbi1cdHNwbGl0X3BhZ2UgPSBrc3RyZHVwKHBhZ2UsIEdGUF9LRVJORUwpO1x0XHRcdFx0XFxcbiYjNDM7XHRzcGxpdF9wYWdlX2FsbG9jID0ga3N0cmR1cChwYWdlLCBHRlBfS0VSTkVMKTtcdFx0XHRcXFxuJiM0MztcdGlmICghc3BsaXRfcGFnZV9hbGxvYykge1x0XHRcdFx0XHRcXFxuJiM0MztcdFx0cmV0ID0gLUVOT01FTTtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdFx0Z290byBlbmQ7XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHR9XHRcdFx0XHRcdFx0XHRcdFxcXG4mIzQzO1x0c3BsaXRfcGFnZSA9IHNwbGl0X3BhZ2VfYWxsb2M7XHRcdFx0XHRcdFxcXG4gXHR3aGlsZSAoKHRva2VuID0gc3Ryc2VwKFx1MDAyNnNwbGl0X3BhZ2UsIFwmIzM0OyxcJiMzNDspKSAhPSBOVUxMKSB7XHRcdFxcXG4gXHRcdHJldCA9IGtzdHJ0b3UzMih0b2tlbiwgMCwgXHUwMDI2bnVtKTtcdFx0XHRcXFxuIFx0XHRpZiAocmV0KVx0XHRcdFx0XHRcdFxcXG5AQCAtMTYxOSw3ICYjNDM7MTYyNSw3IEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4gXHR9O1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4gZW5kOlx0XHRcdFx0XHRcdFx0XHRcdFxcXG4tXHRrZnJlZShzcGxpdF9wYWdlKTtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdGtmcmVlKHNwbGl0X3BhZ2VfYWxsb2MpO1x0XHRcdFx0XHRcXFxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wdHMtXHUwMDNlbG9jayk7XHRcdFx0XHRcdFxcXG4gXHRyZXR1cm4gcmV0O1x0XHRcdFx0XHRcdFx0XFxcbiB9XHRcdFx0XHRcdFx0XHRcdFx0XFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmNcbmluZGV4IDg5Nzc4N2QwODAzYzEuLmM5MmNhYTE0OTQyOGEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuY1xuQEAgLTIwMTMsNiAmIzQzOzIwMTMsNyBAQCBzdGF0aWMgc3NpemVfdCBmX3VhYzJfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXHRcXFxuIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0c3RydWN0IGZfdWFjMl9vcHRzICpvcHRzID0gdG9fZl91YWMyX29wdHMoaXRlbSk7XHRcdFxcXG4gXHRjaGFyICpzcGxpdF9wYWdlID0gTlVMTDtcdFx0XHRcdFx0XFxcbiYjNDM7XHRjaGFyICpzcGxpdF9wYWdlX2FsbG9jID0gTlVMTDtcdFx0XHRcdFx0XFxcbiBcdGludCByZXQgPSAtRUlOVkFMO1x0XHRcdFx0XHRcdFxcXG4gXHRjaGFyICp0b2tlbjtcdFx0XHRcdFx0XHRcdFxcXG4gXHR1MzIgbnVtO1x0XHRcdFx0XHRcdFx0XFxcbkBAIC0yMDI2LDcgJiM0MzsyMDI3LDEyIEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4gXHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdGkgPSAwO1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0bWVtc2V0KG9wdHMtXHUwMDNlbmFtZSMjcywgMHgwMCwgc2l6ZW9mKG9wdHMtXHUwMDNlbmFtZSMjcykpO1x0XHRcXFxuLVx0c3BsaXRfcGFnZSA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7XHRcdFx0XHRcXFxuJiM0MztcdHNwbGl0X3BhZ2VfYWxsb2MgPSBrc3RyZHVwKHBhZ2UsIEdGUF9LRVJORUwpO1x0XHRcdFxcXG4mIzQzO1x0aWYgKCFzcGxpdF9wYWdlX2FsbG9jKSB7XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRyZXQgPSAtRU5PTUVNO1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0XHRnb3RvIGVuZDtcdFx0XHRcdFx0XHRcXFxuJiM0MztcdH1cdFx0XHRcdFx0XHRcdFx0XFxcbiYjNDM7XHRzcGxpdF9wYWdlID0gc3BsaXRfcGFnZV9hbGxvYztcdFx0XHRcdFx0XFxcbiBcdHdoaWxlICgodG9rZW4gPSBzdHJzZXAoXHUwMDI2c3BsaXRfcGFnZSwgXCYjMzQ7LFwmIzM0OykpICE9IE5VTEwpIHtcdFx0XFxcbiBcdFx0cmV0ID0ga3N0cnRvdTMyKHRva2VuLCAwLCBcdTAwMjZudW0pO1x0XHRcdFxcXG4gXHRcdGlmIChyZXQpXHRcdFx0XHRcdFx0XFxcbkBAIC0yMDM3LDcgJiM0MzsyMDQzLDcgQEAgc3RhdGljIHNzaXplX3QgZl91YWMyX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbiBcdH07XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBlbmQ6XHRcdFx0XHRcdFx0XHRcdFx0XFxcbi1cdGtmcmVlKHNwbGl0X3BhZ2UpO1x0XHRcdFx0XHRcdFxcXG4mIzQzO1x0a2ZyZWUoc3BsaXRfcGFnZV9hbGxvYyk7XHRcdFx0XHRcdFxcXG4gXHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2Vsb2NrKTtcdFx0XHRcdFx0XFxcbiBcdHJldHVybiByZXQ7XHRcdFx0XHRcdFx0XHRcXFxuIH1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjAzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9EVU1NWV9IQ0QmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGU19GX1VBQzEmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTX0ZfVUFDMiYjMzQ7LAogICAgJiMzNDtTTkQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmX3VhYzFfb3B0c19jX3NyYXRlX3N0b3JlJiMzNDssCiAgICAmIzM0O2ZfdWFjMV9vcHRzX3Bfc3JhdGVfc3RvcmUmIzM0OywKICAgICYjMzQ7Zl91YWMyX29wdHNfY19zcmF0ZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtmX3VhYzJfb3B0c19wX3NyYXRlX3N0b3JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGNvbmZpZ2ZzIHN0b3JlIGNhbGxiYWNrcyBmb3IgVVNCIEF1ZGlvIENsYXNzIDEgYW5kIDIgZ2FkZ2V0IGRyaXZlcnMuIFRoZSBsZWFrIG9jY3VycyBiZWNhdXNlIGBzdHJzZXBgIG1vZGlmaWVzIHRoZSBwb2ludGVyLCBjYXVzaW5nIGBrZnJlZWAgdG8gZnJlZSB0aGUgd3JvbmcgYWRkcmVzcy4gQnkga2VlcGluZyB0aGUgb3JpZ2luYWwgcG9pbnRlciwgdGhlIG1lbW9yeSBpcyBjb3JyZWN0bHkgZnJlZWQuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIGNvbmZpZ2ZzIHdoZW4gY29uZmlndXJpbmcgVVNCIGdhZGdldHMsIHdoaWNoIGlzIHN1cHBvcnRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgdGhlIGR1bW15IEhDRC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDNiZGZmMTRiNmE3YWEzZjMxNzA3OTAwNzZjYTk3MWI1NGY2ZGQ1MDkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAzIDEzOjAzOjAyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jCmluZGV4IDg1YzUwMmU5OGY1NzcuLmJhMWE5ZjUxYzU0NGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMKQEAgLTE1OTUsNiAmIzQzOzE1OTUsNyBAQCBzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sCVwKIHsJCQkJCQkJCQlcCiAJc3RydWN0IGZfdWFjMV9vcHRzICpvcHRzID0gdG9fZl91YWMxX29wdHMoaXRlbSk7CQlcCiAJY2hhciAqc3BsaXRfcGFnZSA9IE5VTEw7CQkJCQlcCiYjNDM7CWNoYXIgKnNwbGl0X3BhZ2VfYWxsb2MgPSBOVUxMOwkJCQkJXAogCWludCByZXQgPSAtRUlOVkFMOwkJCQkJCVwKIAljaGFyICp0b2tlbjsJCQkJCQkJXAogCXUzMiBudW07CQkJCQkJCVwKQEAgLTE2MDgsNyAmIzQzOzE2MDksMTIgQEAgc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLAlcCiAJCQkJCQkJCQlcCiAJaSA9IDA7CQkJCQkJCQlcCiAJbWVtc2V0KG9wdHMtJmd0O25hbWUjI3MsIDB4MDAsIHNpemVvZihvcHRzLSZndDtuYW1lIyNzKSk7CQlcCi0Jc3BsaXRfcGFnZSA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7CQkJCVwKJiM0MzsJc3BsaXRfcGFnZV9hbGxvYyA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7CQkJXAomIzQzOwlpZiAoIXNwbGl0X3BhZ2VfYWxsb2MpIHsJCQkJCVwKJiM0MzsJCXJldCA9IC1FTk9NRU07CQkJCQkJXAomIzQzOwkJZ290byBlbmQ7CQkJCQkJXAomIzQzOwl9CQkJCQkJCQlcCiYjNDM7CXNwbGl0X3BhZ2UgPSBzcGxpdF9wYWdlX2FsbG9jOwkJCQkJXAogCXdoaWxlICgodG9rZW4gPSBzdHJzZXAoJmFtcDtzcGxpdF9wYWdlLCAmIzM0OywmIzM0OykpICE9IE5VTEwpIHsJCVwKIAkJcmV0ID0ga3N0cnRvdTMyKHRva2VuLCAwLCAmYW1wO251bSk7CQkJXAogCQlpZiAocmV0KQkJCQkJCVwKQEAgLTE2MTksNyAmIzQzOzE2MjUsNyBAQCBzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sCVwKIAl9OwkJCQkJCQkJXAogCQkJCQkJCQkJXAogZW5kOgkJCQkJCQkJCVwKLQlrZnJlZShzcGxpdF9wYWdlKTsJCQkJCQlcCiYjNDM7CWtmcmVlKHNwbGl0X3BhZ2VfYWxsb2MpOwkJCQkJXAogCW11dGV4X3VubG9jaygmYW1wO29wdHMtJmd0O2xvY2spOwkJCQkJXAogCXJldHVybiByZXQ7CQkJCQkJCVwKIH0JCQkJCQkJCQlcCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMKaW5kZXggODk3Nzg3ZDA4MDNjMS4uYzkyY2FhMTQ5NDI4YSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYwpAQCAtMjAxMyw2ICYjNDM7MjAxMyw3IEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwJXAogewkJCQkJCQkJCVwKIAlzdHJ1Y3QgZl91YWMyX29wdHMgKm9wdHMgPSB0b19mX3VhYzJfb3B0cyhpdGVtKTsJCVwKIAljaGFyICpzcGxpdF9wYWdlID0gTlVMTDsJCQkJCVwKJiM0MzsJY2hhciAqc3BsaXRfcGFnZV9hbGxvYyA9IE5VTEw7CQkJCQlcCiAJaW50IHJldCA9IC1FSU5WQUw7CQkJCQkJXAogCWNoYXIgKnRva2VuOwkJCQkJCQlcCiAJdTMyIG51bTsJCQkJCQkJXApAQCAtMjAyNiw3ICYjNDM7MjAyNywxMiBAQCBzdGF0aWMgc3NpemVfdCBmX3VhYzJfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sCVwKIAkJCQkJCQkJCVwKIAlpID0gMDsJCQkJCQkJCVwKIAltZW1zZXQob3B0cy0mZ3Q7bmFtZSMjcywgMHgwMCwgc2l6ZW9mKG9wdHMtJmd0O25hbWUjI3MpKTsJCVwKLQlzcGxpdF9wYWdlID0ga3N0cmR1cChwYWdlLCBHRlBfS0VSTkVMKTsJCQkJXAomIzQzOwlzcGxpdF9wYWdlX2FsbG9jID0ga3N0cmR1cChwYWdlLCBHRlBfS0VSTkVMKTsJCQlcCiYjNDM7CWlmICghc3BsaXRfcGFnZV9hbGxvYykgewkJCQkJXAomIzQzOwkJcmV0ID0gLUVOT01FTTsJCQkJCQlcCiYjNDM7CQlnb3RvIGVuZDsJCQkJCQlcCiYjNDM7CX0JCQkJCQkJCVwKJiM0MzsJc3BsaXRfcGFnZSA9IHNwbGl0X3BhZ2VfYWxsb2M7CQkJCQlcCiAJd2hpbGUgKCh0b2tlbiA9IHN0cnNlcCgmYW1wO3NwbGl0X3BhZ2UsICYjMzQ7LCYjMzQ7KSkgIT0gTlVMTCkgewkJXAogCQlyZXQgPSBrc3RydG91MzIodG9rZW4sIDAsICZhbXA7bnVtKTsJCQlcCiAJCWlmIChyZXQpCQkJCQkJXApAQCAtMjAzNyw3ICYjNDM7MjA0Myw3IEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSwJXAogCX07CQkJCQkJCQlcCiAJCQkJCQkJCQlcCiBlbmQ6CQkJCQkJCQkJXAotCWtmcmVlKHNwbGl0X3BhZ2UpOwkJCQkJCVwKJiM0MzsJa2ZyZWUoc3BsaXRfcGFnZV9hbGxvYyk7CQkJCQlcCiAJbXV0ZXhfdW5sb2NrKCZhbXA7b3B0cy0mZ3Q7bG9jayk7CQkJCQlcCiAJcmV0dXJuIHJldDsJCQkJCQkJXAogfQkJCQkJCQkJCVwKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAyNwoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDIwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBVU0IgQXVkaW8gR2FkZ2V0IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0b3VjaGluZyBgZl91YWMxLmNgIGFuZCBgZl91YWMyLmNgIOKAkyB0aGF04oCZcyBVU0IgQXVkaW8gQ2xhc3MgZ2FkZ2V0IGNvZGUuIFN0cmFpZ2h0IGF3YXksIEkgc2VlIGl0JiMzOTtzIGRlYWxpbmcgd2l0aCBhIG1lbW9yeSBsZWFrLCB3aGljaCBpcyBhbHdheXMgd29ydGggYSBjbG9zZXIgbG9vay4gSXQgc2VlbXMgdGhpcyBsZWFrIGlzIHRpZWQgdG8gYSBtYWNybywgc29tZXRoaW5nIGxpa2UgYFVBQzFfQVRUUklCVVRFX1NUUklOR2AuIFRoaXMgbWFjcm8gaXMgZ2VuZXJhdGluZyBmdW5jdGlvbnMsIHByb2JhYmx5IHRvIGhhbmRsZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFuZCB0aGV5IGFyZSBuYW1lZCBgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmVgIGFuZCBgZl91YWMyX29wdHNfIyNuYW1lIyNfc3RvcmVgLgoKVGhlIGNydXggb2YgdGhlIHByb2JsZW0gc2VlbXMgdG8gYmUgYHN0cnNlcGAuIEFoLCB5ZXMsIEkga25vdyB0aGlzIG9uZSwgaXQgbW9kaWZpZXMgdGhlIGlucHV0IHN0cmluZyBpbiBwbGFjZS4gU28gdGhlIG9yaWdpbmFsIGNvZGUgd2FzIHByb2JhYmx5IHBhc3NpbmcgYHNwbGl0X3BhZ2VgIHRvIGBzdHJzZXBgLCBhbmQgdGhlbiBsYXRlciBjYWxsaW5nIGBrZnJlZShzcGxpdF9wYWdlKWAuIFRoZSBpc3N1ZSBpcywgYHN0cnNlcGAgaXMgY2hhbmdpbmcgdGhlIGNvbnRlbnRzIG9mIGBzcGxpdF9wYWdlYCwgc28gYGtmcmVlYCB3b3VsZCBmcmVlIGFuIGluY29ycmVjdCBwb2ludGVyIG9yLCBwb3RlbnRpYWxseSwgdHJ5IHRvIGZyZWUgTlVMTCBpZiB0aGUgc3RyaW5nIHdhcyBleGhhdXN0ZWQuIFRoaXMgcGF0Y2ggYWRkcmVzc2VzIHRoYXQgYnkga2VlcGluZyBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIHBvaW50ZXIsIGxldCYjMzk7cyBjYWxsIGl0IGBzcGxpdF9wYWdlX2FsbG9jYCwgYW5kIGVuc3VyaW5nIHRoYXQmIzM5O3Mgd2hhdCBnZXRzIHBhc3NlZCB0byBga2ZyZWVgLiBUaGF0JiMzOTtzIGEgY2xhc3NpYyBhbmQgc29saWQgZml4LgoKTm93LCBJJiMzOTtkIGxpa2UgdG8gdW5kZXJzdGFuZCB0aGUgKnNjb3BlKiBvZiB0aGlzIGNoYW5nZSBiZXR0ZXIuIEl0IHdvdWxkIGJlIGhlbHBmdWwgdG8gc2VlIGV4YWN0bHkgKndoYXQqIHRob3NlIGdlbmVyYXRlZCBgX3N0b3JlYCBmdW5jdGlvbnMgYXJlIGRvaW5nLiBJJiMzOTtsbCBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VhcmNoIGZvciBhbGwgb2NjdXJyZW5jZXMgb2YgZnVuY3Rpb25zIG1hdGNoaW5nIHRoZSBwYXR0ZXJuIGBmX3VhYzFfb3B0c18uKl9zdG9yZWAgYW5kIGBmX3VhYzJfb3B0c18uKl9zdG9yZWAuIFNlZWluZyB0aGUgZ2VuZXJhdGVkIGZ1bmN0aW9ucyB3aWxsIHByb3ZpZGUgY3J1Y2lhbCBjb250ZXh0IGFuZCBhbGxvdyBtZSB0byBhc3Nlc3MgdGhlIG92ZXJhbGwgaW1wYWN0IG9mIHRoaXMgZml4LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZfdWFjMV9vcHRzXy4qX3N0b3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNTI4PXN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3Nob3coXHRcdFx0XHRcXFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNTQxLVx0XHRcdFx0XHRcdFx0XHRcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTU0MjpzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShcdFx0XHRcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU0My1cdFx0XHRcdFx0ICBzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXHRcXFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNTcxPXN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU5Mi1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE1OTM6c3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNTk0LVx0XHRcdFx0XHQgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBsZW4pXHRcXFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNjM2PXN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY0OC1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2NDk6c3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjUwLVx0XHRcdFx0XHQgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBsZW4pXHRcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxNjYKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgTWFjcm8tR2VuZXJhdGVkIEZ1bmN0aW9uIENvZGUqKgoKQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIFRoZSBpbml0aWFsIHF1ZXN0aW9uIGlzICYjMzQ7d2hhdCYjMzk7cyB0aGUgdW5kZXJseWluZyBjb2RlIGJlaW5nIGdlbmVyYXRlZCBieSB0aGVzZSBtYWNyb3M/JiMzNDsgSSYjMzk7bSB0aGlua2luZywgJiMzNDtMZXQmIzM5O3MgY3V0IHJpZ2h0IHRvIHRoZSBjaGFzZSBhbmQgZmluZCBvdXQuJiMzNDsgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlICphY3R1YWwqIGltcGxlbWVudGF0aW9uIG9mIHRoZXNlIGZ1bmN0aW9ucy4gSSYjMzk7bSBub3QgY29udGVudCB3aXRoIGp1c3Qga25vd2luZyB0aGUgZnVuY3Rpb24mIzM5O3Mgc2lnbmF0dXJlIGFuZCBkb2N1bWVudGF0aW9uOyBJIG5lZWQgdG8gc2VlIHRoZSBuaXR0eS1ncml0dHkgZGV0YWlscyBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUuIEtub3dpbmcgdGhlIHNvdXJjZSwgSSBjYW4gZGVkdWNlIG9wdGltaXphdGlvbiBwb3NzaWJpbGl0aWVzIGFuZCBpbmhlcmVudCBsaW1pdGF0aW9ucyBvZiB0aGUgY29kZSwgYXMgd2VsbCBhcyB3aGVyZSB0byBzdGFydCBkZWJ1Z2dpbmcgaW4gdGhlIHVuZm9ydHVuYXRlIGV2ZW50IHRoYXQgdGhlcmUmIzM5O3MgYSBwcm9ibGVtLiBUaGlzIG1lYW5zIEkgbmVlZCB0byBieXBhc3MgdGhlIGFic3RyYWN0aW9uIG9mIHRoZSBtYWNybywgYW5kIGRlY29uc3RydWN0IHRoZSBjb2RlIGZvciBkZXRhaWxlZCBhbmFseXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtVQUMxX0FUVFJJQlVURSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTUyNT1zdGF0aWMgY29uc3QgY2hhciAqYm9vbF9mbXQgPSBcJiMzNDsldVxcblwmIzM0OztcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNTI2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE1Mjc6I2RlZmluZSBVQUMxX0FUVFJJQlVURSh0eXBlLCBuYW1lKVx0XHRcdFx0XHRcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1Mjgtc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc2hvdyhcdFx0XHRcdFxcXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jPTE2MzM9Q09ORklHRlNfQVRUUihmX3VhYzFfb3B0c18sIG5hbWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTYzNC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjM1OiNkZWZpbmUgVUFDMV9BVFRSSUJVVEVfU1RSSU5HKG5hbWUpXHRcdFx0XHRcdFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTYzNi1zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jPTE2Njk9Q09ORklHRlNfQVRUUihmX3VhYzFfb3B0c18sIG5hbWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY3MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjcxOlVBQzFfQVRUUklCVVRFKHUzMiwgY19jaG1hc2spO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NzItVUFDMV9SQVRFX0FUVFJJQlVURShjX3NyYXRlKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjczOlVBQzFfQVRUUklCVVRFKHUzMiwgY19zc2l6ZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY3NDpVQUMxX0FUVFJJQlVURSh1MzIsIHBfY2htYXNrKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjc1LVVBQzFfUkFURV9BVFRSSUJVVEUocF9zcmF0ZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY3NjpVQUMxX0FUVFJJQlVURSh1MzIsIHBfc3NpemUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2Nzc6VUFDMV9BVFRSSUJVVEUodTMyLCByZXFfbnVtYmVyKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjc4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2Nzk6VUFDMV9BVFRSSUJVVEUoYm9vbCwgcF9tdXRlX3ByZXNlbnQpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2ODA6VUFDMV9BVFRSSUJVVEUoYm9vbCwgcF92b2x1bWVfcHJlc2VudCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY4MTpVQUMxX0FUVFJJQlVURShzMTYsIHBfdm9sdW1lX21pbik7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY4MjpVQUMxX0FUVFJJQlVURShzMTYsIHBfdm9sdW1lX21heCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY4MzpVQUMxX0FUVFJJQlVURShzMTYsIHBfdm9sdW1lX3Jlcyk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY4NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjg1OlVBQzFfQVRUUklCVVRFKGJvb2wsIGNfbXV0ZV9wcmVzZW50KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjg2OlVBQzFfQVRUUklCVVRFKGJvb2wsIGNfdm9sdW1lX3ByZXNlbnQpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2ODc6VUFDMV9BVFRSSUJVVEUoczE2LCBjX3ZvbHVtZV9taW4pO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2ODg6VUFDMV9BVFRSSUJVVEUoczE2LCBjX3ZvbHVtZV9tYXgpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2ODk6VUFDMV9BVFRSSUJVVEUoczE2LCBjX3ZvbHVtZV9yZXMpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2OTAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY5MTpVQUMxX0FUVFJJQlVURV9TVFJJTkcoZnVuY3Rpb25fbmFtZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY5Mi1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjkzOlVBQzFfQVRUUklCVVRFX1NUUklORyhwX2l0X25hbWUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2OTQ6VUFDMV9BVFRSSUJVVEVfU1RSSU5HKHBfaXRfY2hfbmFtZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY5NTpVQUMxX0FUVFJJQlVURV9TVFJJTkcocF9vdF9uYW1lKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjk2OlVBQzFfQVRUUklCVVRFX1NUUklORyhwX2Z1X3ZvbF9uYW1lKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjk3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2OTg6VUFDMV9BVFRSSUJVVEVfU1RSSU5HKGNfaXRfbmFtZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY5OTpVQUMxX0FUVFJJQlVURV9TVFJJTkcoY19pdF9jaF9uYW1lKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNzAwOlVBQzFfQVRUUklCVVRFX1NUUklORyhjX290X25hbWUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE3MDE6VUFDMV9BVFRSSUJVVEVfU1RSSU5HKGNfZnVfdm9sX25hbWUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE3MDItXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg3MQoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDY5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2gmIzM5O3MgSW1wYWN0KioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIGBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZWAgZnVuY3Rpb24uIFJpZ2h0LCBhbmQgdGhhdCBmdW5jdGlvbiBpcyBnZW5lcmF0ZWQgYnkgdGhlIGBVQUMxX1JBVEVfQVRUUklCVVRFYCBtYWNyby4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhbmQgd2hhdCB0aGlzIG1hY3JvIGlzIGRvaW5nLCBzbyBJJiMzOTtsbCBqdW1wIHN0cmFpZ2h0IHRvIGxpbmUgMTU5NSB3aXRoaW4gYGZfdWFjMS5jYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgbWFjcm8gZGVmaW5pdGlvbiBzaG91bGQgYmUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBoYXBwZW5pbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlYCBmdW5jdGlvbiBhbmQgaG93IHRoZSBtYWNybyBpbnRlcmFjdHMgdG8gZGV0ZXJtaW5lIHdoYXQgaW1wbGljYXRpb25zIHRoaXMgcGF0Y2ggaGFzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTU3MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTU3MDpcdCNkZWZpbmUgVUFDMV9SQVRFX0FUVFJJQlVURShuYW1lKVx0XHRcdFx0XHRcXFxuMTU3MTpcdHN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbjE1NzI6XHRcdFx0XHRcdFx0IGNoYXIgKnBhZ2UpXHRcdFx0XFxcbjE1NzM6XHR7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbjE1NzQ6XHRcdHN0cnVjdCBmX3VhYzFfb3B0cyAqb3B0cyA9IHRvX2ZfdWFjMV9vcHRzKGl0ZW0pO1x0XHRcXFxuMTU3NTpcdFx0aW50IHJlc3VsdCA9IDA7XHRcdFx0XHRcdFx0XHRcXFxuMTU3NjpcdFx0aW50IGk7XHRcdFx0XHRcdFx0XHRcdFxcXG4xNTc3Olx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbjE1Nzg6XHRcdG11dGV4X2xvY2soXHUwMDI2b3B0cy1cdTAwM2Vsb2NrKTtcdFx0XHRcdFx0XFxcbjE1Nzk6XHRcdHBhZ2VbMF0gPSAmIzM5O1xcMCYjMzk7O1x0XHRcdFx0XHRcdFx0XFxcbjE1ODA6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFVBQ19NQVhfUkFURVM7IGkmIzQzOyYjNDM7KSB7XHRcdFx0XHRcXFxuMTU4MTpcdFx0XHRpZiAob3B0cy1cdTAwM2VuYW1lIyNzW2ldID09IDApXHRcdFx0XHRcXFxuMTU4MjpcdFx0XHRcdGJyZWFrO1x0XHRcdFx0XHRcdFxcXG4xNTgzOlx0XHRcdHJlc3VsdCAmIzQzOz0gc3ByaW50ZihwYWdlICYjNDM7IHN0cmxlbihwYWdlKSwgXCYjMzQ7JXUsXCYjMzQ7LFx0XHRcXFxuMTU4NDpcdFx0XHRcdFx0b3B0cy1cdTAwM2VuYW1lIyNzW2ldKTtcdFx0XHRcXFxuMTU4NTpcdFx0fVx0XHRcdFx0XHRcdFx0XHRcXFxuMTU4NjpcdFx0aWYgKHN0cmxlbihwYWdlKSBcdTAwM2UgMClcdFx0XHRcdFx0XHRcXFxuMTU4NzpcdFx0XHRwYWdlW3N0cmxlbihwYWdlKSAtIDFdID0gJiMzOTtcXG4mIzM5OztcdFx0XHRcdFxcXG4xNTg4Olx0XHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2Vsb2NrKTtcdFx0XHRcdFx0XFxcbjE1ODk6XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuMTU5MDpcdFx0cmV0dXJuIHJlc3VsdDtcdFx0XHRcdFx0XHRcdFxcXG4xNTkxOlx0fVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4xNTkyOlx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbjE1OTM6XHRzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXHRcXFxuMTU5NDpcdFx0XHRcdFx0XHQgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBsZW4pXHRcXFxuMTU5NTpcdHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuMTU5NjpcdFx0c3RydWN0IGZfdWFjMV9vcHRzICpvcHRzID0gdG9fZl91YWMxX29wdHMoaXRlbSk7XHRcdFxcXG4xNTk3Olx0XHRjaGFyICpzcGxpdF9wYWdlID0gTlVMTDtcdFx0XHRcdFx0XFxcbjE1OTg6XHRcdGNoYXIgKnNwbGl0X3BhZ2VfYWxsb2MgPSBOVUxMO1x0XHRcdFx0XHRcXFxuMTU5OTpcdFx0aW50IHJldCA9IC1FSU5WQUw7XHRcdFx0XHRcdFx0XFxcbjE2MDA6XHRcdGNoYXIgKnRva2VuO1x0XHRcdFx0XHRcdFx0XFxcbjE2MDE6XHRcdHUzMiBudW07XHRcdFx0XHRcdFx0XHRcXFxuMTYwMjpcdFx0aW50IGk7XHRcdFx0XHRcdFx0XHRcdFxcXG4xNjAzOlx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbjE2MDQ6XHRcdG11dGV4X2xvY2soXHUwMDI2b3B0cy1cdTAwM2Vsb2NrKTtcdFx0XHRcdFx0XFxcbjE2MDU6XHRcdGlmIChvcHRzLVx1MDAzZXJlZmNudCkge1x0XHRcdFx0XHRcdFxcXG4xNjA2Olx0XHRcdHJldCA9IC1FQlVTWTtcdFx0XHRcdFx0XHRcXFxuMTYwNzpcdFx0XHRnb3RvIGVuZDtcdFx0XHRcdFx0XHRcXFxuMTYwODpcdFx0fVx0XHRcdFx0XHRcdFx0XHRcXFxuMTYwOTpcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4xNjEwOlx0XHRpID0gMDtcdFx0XHRcdFx0XHRcdFx0XFxcbjE2MTE6XHRcdG1lbXNldChvcHRzLVx1MDAzZW5hbWUjI3MsIDB4MDAsIHNpemVvZihvcHRzLVx1MDAzZW5hbWUjI3MpKTtcdFx0XFxcbjE2MTI6XHRcdHNwbGl0X3BhZ2VfYWxsb2MgPSBrc3RyZHVwKHBhZ2UsIEdGUF9LRVJORUwpO1x0XHRcdFxcXG4xNjEzOlx0XHRpZiAoIXNwbGl0X3BhZ2VfYWxsb2MpIHtcdFx0XHRcdFx0XFxcbjE2MTQ6XHRcdFx0cmV0ID0gLUVOT01FTTtcdFx0XHRcdFx0XHRcXFxuMTYxNTpcdFx0XHRnb3RvIGVuZDtcdFx0XHRcdFx0XHRcXFxuMTYxNjpcdFx0fVx0XHRcdFx0XHRcdFx0XHRcXFxuMTYxNzpcdFx0c3BsaXRfcGFnZSA9IHNwbGl0X3BhZ2VfYWxsb2M7XHRcdFx0XHRcdFxcXG4xNjE4Olx0XHR3aGlsZSAoKHRva2VuID0gc3Ryc2VwKFx1MDAyNnNwbGl0X3BhZ2UsIFwmIzM0OyxcJiMzNDspKSAhPSBOVUxMKSB7XHRcdFxcXG4xNjE5Olx0XHRcdHJldCA9IGtzdHJ0b3UzMih0b2tlbiwgMCwgXHUwMDI2bnVtKTtcdFx0XHRcXFxuMTYyMDpcdFx0XHRpZiAocmV0KVx0XHRcdFx0XHRcdFxcXG4xNjIxOlx0XHRcdFx0Z290byBlbmQ7XHRcdFx0XHRcdFxcXG4xNjIyOlx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbjE2MjM6XHRcdFx0b3B0cy1cdTAwM2VuYW1lIyNzW2kmIzQzOyYjNDM7XSA9IG51bTtcdFx0XHRcdFxcXG4xNjI0Olx0XHRcdHJldCA9IGxlbjtcdFx0XHRcdFx0XHRcXFxuMTYyNTpcdFx0fTtcdFx0XHRcdFx0XHRcdFx0XFxcbjE2MjY6XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuMTYyNzpcdGVuZDpcdFx0XHRcdFx0XHRcdFx0XHRcXFxuMTYyODpcdFx0a2ZyZWUoc3BsaXRfcGFnZV9hbGxvYyk7XHRcdFx0XHRcdFxcXG4xNjI5Olx0XHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2Vsb2NrKTtcdFx0XHRcdFx0XFxcbjE2MzA6XHRcdHJldHVybiByZXQ7XHRcdFx0XHRcdFx0XHRcXFxuMTYzMTpcdH1cdFx0XHRcdFx0XHRcdFx0XHRcXFxuMTYzMjpcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4xNjMzOlx0Q09ORklHRlNfQVRUUihmX3VhYzFfb3B0c18sIG5hbWUpXG4xNjM0Olx0XG4xNjM1Olx0I2RlZmluZSBVQUMxX0FUVFJJQlVURV9TVFJJTkcobmFtZSlcdFx0XHRcdFx0XFxcbjE2MzY6XHRzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4xNjM3Olx0XHRcdFx0XHRcdCBjaGFyICpwYWdlKVx0XHRcdFxcXG4xNjM4Olx0e1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4xNjM5Olx0XHRzdHJ1Y3QgZl91YWMxX29wdHMgKm9wdHMgPSB0b19mX3VhYzFfb3B0cyhpdGVtKTtcdFx0XFxcbjE2NDA6XHRcdGludCByZXN1bHQ7XHRcdFx0XHRcdFx0XHRcXFxuMTY0MTpcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4xNjQyOlx0XHRtdXRleF9sb2NrKFx1MDAyNm9wdHMtXHUwMDNlbG9jayk7XHRcdFx0XHRcdFxcXG4xNjQzOlx0XHRyZXN1bHQgPSBzeXNmc19lbWl0KHBhZ2UsIFwmIzM0OyVzXCYjMzQ7LCBvcHRzLVx1MDAzZW5hbWUpOyAgICAgICAgXHQgICAgICAgIFxcXG4xNjQ0Olx0XHRtdXRleF91bmxvY2soXHUwMDI2b3B0cy1cdTAwM2Vsb2NrKTtcdFx0XHRcdFx0XFxcbjE2NDU6XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuMTY0NjpcdFx0cmV0dXJuIHJlc3VsdDtcdFx0XHRcdFx0XHRcdFxcXG4xNjQ3Olx0fVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4xNjQ4Olx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbjE2NDk6XHRzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXHRcXFxuMTY1MDpcdFx0XHRcdFx0XHQgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBsZW4pXHRcXFxuMTY1MTpcdHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuMTY1MjpcdFx0c3RydWN0IGZfdWFjMV9vcHRzICpvcHRzID0gdG9fZl91YWMxX29wdHMoaXRlbSk7XHRcdFxcXG4xNjUzOlx0XHRpbnQgcmV0ID0gMDtcdFx0XHRcdFx0XHRcdFxcXG4xNjU0Olx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbjE2NTU6XHRcdG11dGV4X2xvY2soXHUwMDI2b3B0cy1cdTAwM2Vsb2NrKTtcdFx0XHRcdFx0XFxcbjE2NTY6XHRcdGlmIChvcHRzLVx1MDAzZXJlZmNudCkge1x0XHRcdFx0XHRcdFxcXG4xNjU3Olx0XHRcdHJldCA9IC1FQlVTWTtcdFx0XHRcdFx0XHRcXFxuMTY1ODpcdFx0XHRnb3RvIGVuZDtcdFx0XHRcdFx0XHRcXFxuMTY1OTpcdFx0fVx0XHRcdFx0XHRcdFx0XHRcXFxuMTY2MDpcdFx0XHRcdFx0XHRcdFx0XHRcdFxcXG4xNjYxOlx0XHRyZXQgPSBzY25wcmludGYob3B0cy1cdTAwM2VuYW1lLCBtaW4oc2l6ZW9mKG9wdHMtXHUwMDNlbmFtZSksIGxlbiksXHRcXFxuMTY2MjpcdFx0XHRcdFwmIzM0OyVzXCYjMzQ7LCBwYWdlKTtcdFx0XHRcdFx0XFxcbjE2NjM6XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuMTY2NDpcdGVuZDpcdFx0XHRcdFx0XHRcdFx0XHRcXFxuMTY2NTpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wdHMtXHUwMDNlbG9jayk7XHRcdFx0XHRcdFxcXG4xNjY2Olx0XHRyZXR1cm4gcmV0O1x0XHRcdFx0XHRcdFx0XFxcbjE2Njc6XHR9XHRcdFx0XHRcdFx0XHRcdFx0XFxcbjE2Njg6XHRcdFx0XHRcdFx0XHRcdFx0XHRcXFxuMTY2OTpcdENPTkZJR0ZTX0FUVFIoZl91YWMxX29wdHNfLCBuYW1lKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3NTIKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVQUMxIFJhdGUgQXR0cmlidXRlcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYSBzcGVjaWZpYyByYXRlIGF0dHJpYnV0ZSBkZWZpbmVkIGFzIGBVQUMxX1JBVEVfQVRUUklCVVRFKG5hbWUpYC4gUmlnaHQgYXdheSwgSSBzZWUgdHdvIGtleSBpbnN0YW5jZXMgb2YgdGhpcyBhdHRyaWJ1dGU6IGBVQUMxX1JBVEVfQVRUUklCVVRFKGNfc3JhdGUpYCBhbmQgYFVBQzFfUkFURV9BVFRSSUJVVEUocF9zcmF0ZSlgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoZXNlIGFyZSBsaWtlbHkgcmVsYXRlZCB0byBzb21lIGtpbmQgb2Ygc2FtcGxlIHJhdGUg4oCTIHBlcmhhcHMgJiMzOTtjJiMzOTsgZm9yIGNhcHR1cmUgYW5kICYjMzk7cCYjMzk7IGZvciBwbGF5YmFjaywgb3Igc29tZXRoaW5nIGFsb25nIHRob3NlIGxpbmVzLgoKTm93LCB3aXRoIHRob3NlIGF0dHJpYnV0ZXMgaW4gcGxhY2UsIHRoZSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9ucyBtdXN0IGJlIGBmX3VhYzFfb3B0c19jX3NyYXRlX3N0b3JlYCBhbmQgYGZfdWFjMV9vcHRzX3Bfc3JhdGVfc3RvcmVgLiBUaGUgbmFtaW5nIGNvbnZlbnRpb24gaXMgcHJldHR5IGNsZWFyOiBgZl91YWMxX29wdHNfLi4uX3N0b3JlYCwgd2l0aCAmIzM0Oy4uLl9zdG9yZSYjMzQ7IGZ1bmN0aW9ucy4gVGhlc2UgZnVuY3Rpb25zIGFyZSB1bmRvdWJ0ZWRseSBoYW5kbGluZyB0aGUgc3RvcmFnZSBvciBzZXR0aW5nIG9mIHRoZSBjYXB0dXJlIGFuZCBwbGF5YmFjayBzYW1wbGUgcmF0ZXMsIHByZXN1bWFibHkgd2l0aGluIHNvbWUga2luZCBvZiBvcHRpb25zIHN0cnVjdHVyZSBzcGVjaWZpYyB0byBVQUMxLiBUaGF0JiMzOTtzIGdvb2QgcHJhY3RpY2UuCgpJIGFsc28gaGF2ZSBhbiBpbmRpY2F0b3IgZm9yIGBmX3VhYzIuY2AsIHNvIHRoZXJlIGFyZSBsaWtlbHkgc2ltaWxhciByYXRlIGF0dHJpYnV0ZXMgYW5kIGZ1bmN0aW9ucyBpbiBgZl91YWMyLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtVQUMyX1JBVEVfQVRUUklCVVRFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYz0xOTg2PUNPTkZJR0ZTX0FUVFIoZl91YWMyX29wdHNfLCBuYW1lKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jLTE5ODctXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM6MTk4ODojZGVmaW5lIFVBQzJfUkFURV9BVFRSSUJVVEUobmFtZSlcdFx0XHRcdFx0XFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0xOTg5LXN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM9MjA5Mj1VQUMyX0FUVFJJQlVURSh1MzIsIHBfY2htYXNrKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYzoyMDkzOlVBQzJfUkFURV9BVFRSSUJVVEUocF9zcmF0ZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMtMjA5NC1VQUMyX0FUVFJJQlVURSh1MzIsIHBfc3NpemUpO1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYz0yMDk2PVVBQzJfQVRUUklCVVRFKHUzMiwgY19jaG1hc2spO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jOjIwOTc6VUFDMl9SQVRFX0FUVFJJQlVURShjX3NyYXRlKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0yMDk4LVVBQzJfQVRUUklCVVRFX1NZTkMoY19zeW5jKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODU1MQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFVTQiBBdWRpbyBDbGFzcyBHYWRnZXQgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGVzZSBmdW5jdGlvbnMgaW4gbWluZDogYGZfdWFjMV9vcHRzX2Nfc3JhdGVfc3RvcmVgLCBgZl91YWMxX29wdHNfcF9zcmF0ZV9zdG9yZWAsIGBmX3VhYzJfb3B0c19jX3NyYXRlX3N0b3JlYCwgYW5kIGBmX3VhYzJfb3B0c19wX3NyYXRlX3N0b3JlYC4gSW1tZWRpYXRlbHksIEkgc2VlIHRoYXQgdGhleSYjMzk7cmUgYWxsIGBjb25maWdmc2Agc3RvcmUgY2FsbGJhY2tzLCBzcGVjaWZpY2FsbHkgZm9yIFVTQiBBdWRpbyBDbGFzcyAxIGFuZCAyIGdhZGdldHMuIFRoaXMgbWVhbnMgdGhleSBhcmUgaW52b2x2ZWQgaW4gaG93IHRoZSBVU0IgYXVkaW8gZ2FkZ2V0cyBhcmUgY29uZmlndXJlZCB2aWEgYGNvbmZpZ2ZzYCwgd2hpY2ggaXMgZmFpcmx5IHN0YW5kYXJkIGFuZCBleHBlY3RlZC4KCk5vdywgYSBrZXkgcXVlc3Rpb24gcG9wcyB1cDogQ2FuIHRoZXNlIGZ1bmN0aW9ucyBldmVuIGJlIGV4ZXJjaXNlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBXaXRoIHRoZSBwcmV2YWxlbmNlIG9mIHN5c3RlbXMgbGlrZSBRRU1VIGFuZCBjbG91ZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0UsIEkgd2FudCB0byBiZSBjZXJ0YWluIGFib3V0IHRoZSByZWFjaGFiaWxpdHkgb2YgdGhpcyBjb2RlLiBGb3J0dW5hdGVseSwgdGhlIGFuc3dlciBpcyB5ZXMuIFRoZSB1c2Ugb2YgYGR1bW15X2hjZGAgKHRoZSBVU0IgZ2FkZ2V0IGR1bW15IGRyaXZlcikgYWxsb3dzIGZvciBjb21wbGV0ZSBlbXVsYXRpb24gb2YgVVNCIGdhZGdldHMuIFRoaXMgaXMgZXhhY3RseSBob3cgdGhlIGBzeXprYWxsZXJgIFVTQiBmdXp6ZXIgaXMgdXNlZCB0byBmaW5kIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGVzZSBnYWRnZXQgZHJpdmVycy4gVGhhdCBtYWtlcyB0aGluZ3MgcHJvbWlzaW5nIGZvciB0ZXN0aW5nLgoKR2l2ZW4gdGhlIHJvbGUgb2YgYGNvbmZpZ2ZzYCBpbiBjb25maWd1cmluZyBVU0IgZ2FkZ2V0cywgaXQmIzM5O3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LCBzbyBJJiMzOTtsbCBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgYGZfdWFjMS5jYCBhbmQgYGZfdWFjMi5jYC4gVGhhdCBzaG91bGQgY2xhcmlmeSBhbnkgYnVpbGQgZGVwZW5kZW5jaWVzIG9yIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHdoaWNoIG1pZ2h0IGFmZmVjdCB0aGVpciBhdmFpbGFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZfdWFjMVxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlPTM2PW9iai0kKENPTkZJR19VU0JfVV9BVURJTylcdCYjNDM7PSB1X2F1ZGlvLm9cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZTozNzp1c2JfZl91YWMxLXlcdFx0XHQ6PSBmX3VhYzEub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlOjM4Om9iai0kKENPTkZJR19VU0JfRl9VQUMxKVx0JiM0Mzs9IHVzYl9mX3VhYzEub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlLTM5LXVzYl9mX3VhYzFfbGVnYWN5LXlcdFx0Oj0gZl91YWMxX2xlZ2FjeS5vIHVfdWFjMV9sZWdhY3kub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MjcxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNyYWZ0ZWQgd2l0aCB0aGUgdW5kZXJzdGFuZGluZyB0aGF0IEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipEZWx2aW5nIGludG8gdGhlIGBmX3VhYzIub2AgRmlsZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgc2VlIHdlJiMzOTtyZSBsb29raW5nIGF0IGBmX3VhYzIub2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IHByb2Nlc3MgZ29lcyBzb21ldGhpbmcgbGlrZSB0aGlzOiBJIGtub3cgd2hhdCB0aGUgZmlsZSB0eXBlIG1lYW5zIHNvIEkmIzM5O20gYWxyZWFkeSB0aGlua2luZyBhYm91dCB3aGF0IGl0IG1pZ2h0IGNvbnRhaW4uIEkgd29uZGVyIHdoYXQgdGhlIGNvbnRleHQgaXMuIFdoYXQgaXMgdGhpcyBtb2R1bGUgcmVzcG9uc2libGUgZm9yPyBXaGF0IGRvZXMgJiMzNDtVQUMyJiMzNDsgc3RhbmQgZm9yLCBpbiB0aGlzIGNhc2U/IElzIGl0IHJlbGF0ZWQgdG8gVXNlciBBY2NvdW50IENvbnRyb2wgdmVyc2lvbiAyPyBPciBVc2VyIEFjY2VzcyBDb250cm9sPyBPciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnQ/IEl0JiMzOTtzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpYyBub21lbmNsYXR1cmUgd2l0aGluIHRoaXMgY29kZWJhc2UuIFdoYXQgZGVwZW5kZW5jaWVzIGRvZXMgdGhpcyBtb2R1bGUgaGF2ZT8gV2hhdCBmdW5jdGlvbnMgYXJlIGxpa2VseSBkZWZpbmVkIHdpdGhpbiBpdCwgYmFzZWQgb24gaXRzIG5hbWluZyBjb252ZW50aW9uPyBJ4oCZbGwgbmVlZCB0byBmaWd1cmUgb3V0IGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gSSYjMzk7bGwgcHJvYmFibHkgc3RhcnQgYnkgbG9va2luZyBmb3IgaGVhZGVyIGZpbGVzIHRoYXQgaW5jbHVkZSBkZWZpbml0aW9ucyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgd2lsbCBtYWtlIHRoZSBpbnRlcm5hbCBsb2dpYyBvZiB0aGlzIG9iamVjdCBjb2RlIGNsZWFyIHRvIG1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmX3VhYzJcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZT00MD1vYmotJChDT05GSUdfVVNCX0ZfVUFDMV9MRUdBQ1kpXHQmIzQzOz0gdXNiX2ZfdWFjMV9sZWdhY3kub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlOjQxOnVzYl9mX3VhYzIteVx0XHRcdDo9IGZfdWFjMi5vXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGU6NDI6b2JqLSQoQ09ORklHX1VTQl9GX1VBQzIpXHQmIzQzOz0gdXNiX2ZfdWFjMi5vXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGUtNDMtdXNiX2ZfdXZjLXlcdFx0XHQ6PSBmX3V2Yy5vIHV2Y19xdWV1ZS5vIHV2Y192NGwyLm8gdXZjX3ZpZGVvLm8gdXZjX2NvbmZpZ2ZzLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTczMwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLCBteSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZXNlIHR3byBzcGVjaWZpYyBjb25maWd1cmF0aW9uczogYENPTkZJR19VU0JfRl9VQUMxYCBhbmQgYENPTkZJR19VU0JfRl9VQUMyYC4gTXkgcHJpbWFyeSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgdGhlaXIgZGVwZW5kZW5jaWVzLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIHJlbGF0ZWQgdG8gVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5LiBUaGUgZmlyc3QgcGxhY2UgSSYjMzk7bGwgbG9vayBpcyB3aXRoaW4gdGhlIG1haW4gYGRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnYCBmaWxlLiBJJiMzOTtsbCB0aGVuIGV4cGFuZCBteSBzZWFyY2ggdG8gaW5jbHVkZSBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnYCBhbmQgYGRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9LY29uZmlnYC4gSXQmIzM5O3MgaGlnaGx5IGxpa2VseSB0aGUgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIGFyZSBkZWZpbmVkIHdpdGhpbiBvbmUgb2YgdGhvc2UgZmlsZXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgb3Iga2VybmVsIGZlYXR1cmVzIHRoZXNlIFVBQyBzZXR0aW5ncyByZWx5IHVwb24sIG9yIGFueSBzcGVjaWZpYyBVU0IgY29udHJvbGxlciBvciBnYWRnZXQgZnJhbWV3b3JrIGRlcGVuZGVuY2llcy4gS25vd2luZyB0aGVzZSByZWxhdGlvbnNoaXBzIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRvIGNvbmZpZ3VyZSB0aGlzIHN5c3RlbSBwcm9wZXJseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTM6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9GX1VBQzEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTE5Mj1jb25maWcgVVNCX0ZfRlNcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xOTUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxOTY6Y29uZmlnIFVTQl9GX1VBQzFcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE5Ny1cdHRyaXN0YXRlXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xOTgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxOTk6Y29uZmlnIFVTQl9GX1VBQzFfTEVHQUNZXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMDAtXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDE4NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRXhhbWluaW5nIHRoZSBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGdvIHN0cmFpZ2h0IHRvIGBkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ2AuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBhcmVhIGFyb3VuZCBsaW5lIDE5Ni4gSSYjMzk7bSBhc3N1bWluZyB0aGF0JiMzOTtzIHdoZXJlIHNvbWUgaW50ZXJlc3RpbmcgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBsaWtlbHkgdG8gYmUgZGVmaW5lZCwgcGVyaGFwcyByZWxhdGVkIHRvIGEgcGFydGljdWxhciBnYWRnZXQgZnVuY3Rpb24gb3IgY29udHJvbGxlciBzdXBwb3J0LiBJJiMzOTttIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IGEgc3BlY2lmaWMgZ2FkZ2V0IGZlYXR1cmUgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgbWlnaHQgYmUgYXQgcGxheS4gSSYjMzk7bSByZWFkeSB0byBwYXJzZSB0aGUgY29uZmlnIHN5bnRheCBhbmQgdW5kZXJzdGFuZCB0aGUgbG9naWMgZmxvdyBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxOTA6XHRcdHRyaXN0YXRlXG4gMTkxOlx0XG4gMTkyOlx0Y29uZmlnIFVTQl9GX0ZTXG4gMTkzOlx0XHRzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVJcbiAxOTQ6XHRcdHRyaXN0YXRlXG4gMTk1Olx0XG4gMTk2Olx0Y29uZmlnIFVTQl9GX1VBQzFcbiAxOTc6XHRcdHRyaXN0YXRlXG4gMTk4Olx0XG4gMTk5Olx0Y29uZmlnIFVTQl9GX1VBQzFfTEVHQUNZXG4gMjAwOlx0XHR0cmlzdGF0ZVxuIDIwMTpcdFxuIDIwMjpcdGNvbmZpZyBVU0JfRl9VQUMyXG4gMjAzOlx0XHR0cmlzdGF0ZVxuIDIwNDpcdFxuIDIwNTpcdGNvbmZpZyBVU0JfRl9VVkNcbiAyMDY6XHRcdHRyaXN0YXRlXG4gMjA3Olx0XHRzZWxlY3QgVVZDX0NPTU1PTlxuIDIwODpcdFxuIDIwOTpcdGNvbmZpZyBVU0JfRl9NSURJXG4gMjEwOlx0XHR0cmlzdGF0ZVxuIDIxMTpcdFxuIDIxMjpcdGNvbmZpZyBVU0JfRl9NSURJMlxuIDIxMzpcdFx0dHJpc3RhdGVcbiAyMTQ6XHRcdHNlbGVjdCBTTkRfVU1QXG4gMjE1Olx0XHRzZWxlY3QgU05EX1VNUF9MRUdBQ1lfUkFXTUlESVxuIDIxNjpcdFxuIDIxNzpcdGNvbmZpZyBVU0JfRl9ISURcbiAyMTg6XHRcdHRyaXN0YXRlXG4gMjE5Olx0XG4gMjIwOlx0Y29uZmlnIFVTQl9GX1BSSU5URVJcbiAyMjE6XHRcdHRyaXN0YXRlXG4gMjIyOlx0XG4gMjIzOlx0Y29uZmlnIFVTQl9GX1RDTVxuIDIyNDpcdFx0dHJpc3RhdGVcbiAyMjU6XHRcbiAyMjY6XHQjIHRoaXMgZmlyc3Qgc2V0IG9mIGRyaXZlcnMgYWxsIGRlcGVuZCBvbiBidWxrLWNhcGFibGUgaGFyZHdhcmUuXG4gMjI3Olx0XG4gMjI4Olx0Y29uZmlnIFVTQl9DT05GSUdGU1xuIDIyOTpcdFx0dHJpc3RhdGUgXCYjMzQ7VVNCIEdhZGdldCBmdW5jdGlvbnMgY29uZmlndXJhYmxlIHRocm91Z2ggY29uZmlnZnNcJiMzNDtcbiAyMzA6XHRcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4gMjMxOlx0XHRoZWxwXG4gMjMyOlx0XHQgIEEgTGludXggVVNCIFwmIzM0O2dhZGdldFwmIzM0OyBjYW4gYmUgc2V0IHVwIHRocm91Z2ggY29uZmlnZnMuXG4gMjMzOlx0XHQgIElmIHRoaXMgaXMgdGhlIGNhc2UsIHRoZSBVU0IgZnVuY3Rpb25zICh3aGljaCBmcm9tIHRoZSBob3N0JiMzOTtzXG4gMjM0Olx0XHQgIHBlcnNwZWN0aXZlIGFyZSBzZWVuIGFzIGludGVyZmFjZXMpIGFuZCBjb25maWd1cmF0aW9ucyBhcmVcbiAyMzU6XHRcdCAgc3BlY2lmaWVkIHNpbXBseSBieSBjcmVhdGluZyBhcHByb3ByaWF0ZSBkaXJlY3RvcmllcyBpbiBjb25maWdmcy5cbiAyMzY6XHRcdCAgQXNzb2NpYXRpbmcgZnVuY3Rpb25zIHdpdGggY29uZmlndXJhdGlvbnMgaXMgZG9uZSBieSBjcmVhdGluZ1xuIDIzNzpcdFx0ICBhcHByb3ByaWF0ZSBzeW1ib2xpYyBsaW5rcy5cbiAyMzg6XHRcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIERvY3VtZW50YXRpb24vdXNiL2dhZGdldF9jb25maWdmcy5yc3QuXG4gMjM5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDA4CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiBoZXJlLgoKKipEZWNvbnN0cnVjdGluZyB0aGUgVVNCIEF1ZGlvIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgc28gSSYjMzk7bSBub3RpY2luZyB0aGF0IGBVU0JfRl9VQUMxYCBhbmQgYFVTQl9GX1VBQzJgIGFyZSBiZWluZyBjaG9zZW4sIGJ1dCBub3QgZXhwbGljaXRseSBieSBtZS4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IHNvbWUgb3RoZXIgY29uZmlndXJhdGlvbiBvciBhIGhpZ2hlci1sZXZlbCBzZXR0aW5nIG11c3QgYmUgcmVzcG9uc2libGUgZm9yIHNlbGVjdGluZyB0aG9zZSBzcGVjaWZpYyBVU0IgQXVkaW8gQ2xhc3MgdmVyc2lvbnMuIEkgbmVlZCB0byB0cmFjZSBiYWNrIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGZpZ3VyZSBvdXQgdGhlIGRlY2lzaW9uLW1ha2luZyBwcm9jZXNzLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSByZWxldmFudCBjb2RlIGFuZCBjb25maWd1cmF0aW9ucyB0byBpZGVudGlmeSB0aGUgcG9pbnQgb2Ygb3JpZ2luIGZvciB0aGVzZSBzZWxlY3Rpb25zLiBUaW1lIHRvIHB1dCBvbiBteSBkZXRlY3RpdmUgaGF0IGFuZCBnbyBodW50aW5nIGZvciB0aGUgcm9vdCBjYXVzZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHNlbGVjdHMgdGhlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTM6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IFVTQl9GX1VBQzEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTM4MT1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4Ny1cdHNlbGVjdCBVU0JfVV9BVURJT1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Mzg4Olx0c2VsZWN0IFVTQl9GX1VBQzFcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4OS1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zOTk9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFfTEVHQUNZXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDA0LVx0c2VsZWN0IFNORF9QQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQwNTpcdHNlbGVjdCBVU0JfRl9VQUMxX0xFR0FDWVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDA2LVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz03NT1jb25maWcgVVNCX0FVRElPXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTc5LVx0c2VsZWN0IFNORF9QQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo4MDpcdHNlbGVjdCBVU0JfRl9VQUMxIGlmIChHQURHRVRfVUFDMSBcdTAwMjZcdTAwMjYgIUdBREdFVF9VQUMxX0xFR0FDWSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo4MTpcdHNlbGVjdCBVU0JfRl9VQUMxX0xFR0FDWSBpZiAoR0FER0VUX1VBQzEgXHUwMDI2XHUwMDI2IEdBREdFVF9VQUMxX0xFR0FDWSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy04Mi1cdHNlbGVjdCBVU0JfRl9VQUMyIGlmICFHQURHRVRfVUFDMVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTU5NgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyBvbiB0aGUgcGVyc29uYSB5b3UgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBVU0IgQXVkaW8gQ2xhc3MgMiBMYW5kc2NhcGUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRm9yIGBVU0JfRl9VQUMyYC4uLiB0aGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggVVNCIEF1ZGlvIENsYXNzIDIuIFRoYXQmIzM5O3MgYSBzb2xpZCBzdGFuZGFyZCwgYnV0IGl0IG9wZW5zIGEgd2hvbGUgY2FuIG9mIHdvcm1zIGluIHRlcm1zIG9mIGl0cyBpbnRyaWNhY2llcy4gSSBuZWVkIHRvIGJlIHByZWNpc2UgaGVyZS4KCkZpcnN0LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBmdW5kYW1lbnRhbCBhcmNoaXRlY3R1cmFsIGltcGxpY2F0aW9ucy4gSG93IGRvZXMgdGhlIGRldmljZSBpbnRlcmZhY2U/IElzIGl0IGEgY29tcG9zaXRlIGRldmljZT8gV2hhdCBhcmUgdGhlIGVuZHBvaW50IGNvbmZpZ3VyYXRpb25zPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVk4oCUdGhlIGRlc2NyaXB0b3JzLCB0aGUgcGFja2V0c+KAlGFuZCBob3cgdGhleSB0cmFuc2xhdGUgdG8gYXVkaW8gc3RyZWFtIGRhdGEuIEl0JiMzOTtzIGEgbGF5ZXItYnktbGF5ZXIgbWVudGFsIG1vZGVsIEkmIzM5O20gYnVpbGRpbmcuCgpOZXh0LCBJJiMzOTttIGdvaW5nIHRocm91Z2ggdGhlIGRpZmZlcmVudCBhdWRpbyBmdW5jdGlvbmFsaXRpZXMuIERvZXMgdGhpcyBkZXZpY2Ugc3VwcG9ydCBpc29jaHJvbm91cyB0cmFuc2ZlcnM/IFdoYXQgYWJvdXQgYXN5bmNocm9ub3VzPyBXaGF0IGFyZSB0aGUgY2xvY2tpbmcgcmVxdWlyZW1lbnRzIGFuZCBzeW5jaHJvbml6YXRpb24gY29uc2lkZXJhdGlvbnM/IEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgcG90ZW50aWFsIGRlYnVnZ2luZyBwYWluIHBvaW50cy4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBkaWdpdGFsIGF1ZGlvLCB0aGUgdGltaW5nIGhhcyB0byBiZSB0aWdodC4gSWYgc29tZXRoaW5nIGlzIGdvaW5nIHdyb25nLCBJIGtub3cgSSYjMzk7bGwgd2FudCB0byBpbnNwZWN0IHRoZSBhY3R1YWwgVVNCIHBhY2tldHMsIGFuYWx5emUgdGltZXN0YW1wcywgYW5kIG1heWJlIGV2ZW4gYnVzdCBvdXQgdGhlIG9zY2lsbG9zY29wZS4KClRoZW4sIHRoZXJlIGFyZSB0aGUgc29mdHdhcmUgYXNwZWN0cy4gV2hhdCBkcml2ZXIgbW9kZWwgaXMgYmVpbmcgdXNlZD8gSXMgaXQgYSBzdGFuZGFyZCBVQUMyIGRyaXZlciwgb3IgYSBjdXN0b20gb25lPyBXaGF0IEFQSSBpcyBleHBvc2VkPyBJJiMzOTttIGNvbnNpZGVyaW5nIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9uIGhvc3Qtc2lkZSBhdWRpbyBwcm9jZXNzaW5nLiBUaGUgZHJpdmVyIGltcGxlbWVudGF0aW9uIHdpbGwgZHJhbWF0aWNhbGx5IGFmZmVjdCB0aGUgdXNlciBleHBlcmllbmNlIGFuZCwganVzdCBhcyBpbXBvcnRhbnRseSwgbXkgYWJpbGl0eSB0byB0cm91Ymxlc2hvb3QgcHJvYmxlbXMgaWYgdGhleSBhcmlzZS4KClNvLCBpbiBzdW1tYXJ5LCBteSBtaW5kJiMzOTtzIHJ1bm5pbmcgdGhyb3VnaCB0aGUgVVNCIHByb3RvY29sIHN0YWNrLCBhdWRpbyBkYXRhIHN0cnVjdHVyZXMsIHRpbWluZyBjb25zaWRlcmF0aW9ucywgZHJpdmVyIGltcGxlbWVudGF0aW9ucyBhbmQgQVBJcywgdGhlIHBvdGVudGlhbCBmYWlsdXJlIG1vZGVzLCB0aGUgbGlrZWx5IGRlYnVnZ2luZyBjaGFsbGVuZ2VzLCBhbmQsIG9mIGNvdXJzZSwgdGhlIGltcGxpY2F0aW9ucyBmb3IgdGhlIHVzZXImIzM5O3MgZXhwZXJpZW5jZS4gR290IHRvIGhhdmUgYSBzb2xpZCBncmFzcCBvbiBhbGwgdGhlc2UgdGhpbmdzLCB0byBlbnN1cmUgcHJvcGVyIGV4ZWN1dGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTM6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IFVTQl9GX1VBQzImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQxMj1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMlxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQxOC1cdHNlbGVjdCBVU0JfVV9BVURJT1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDE5Olx0c2VsZWN0IFVTQl9GX1VBQzJcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQyMC1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NzU9Y29uZmlnIFVTQl9BVURJT1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy04MS1cdHNlbGVjdCBVU0JfRl9VQUMxX0xFR0FDWSBpZiAoR0FER0VUX1VBQzEgXHUwMDI2XHUwMDI2IEdBREdFVF9VQUMxX0xFR0FDWSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo4MjpcdHNlbGVjdCBVU0JfRl9VQUMyIGlmICFHQURHRVRfVUFDMVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTgzLVx0c2VsZWN0IFVTQl9VX0FVRElPIGlmIChVU0JfRl9VQUMyIHx8IFVTQl9GX1VBQzEpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMjkxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZToKCioqRW5hYmxpbmcgVVNCIEF1ZGlvIGluIENvbmZpZ0ZTOiBBIERlcGVuZGVuY3kgQ2hlY2sqKgoKUmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gV2UgbmVlZCB0byBlbmFibGUgYFVTQl9DT05GSUdGU19GX1VBQzFgIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMmAuIFRoYXQmIzM5O3MgdGhlIHBsYW4gZm9yIGJyaW5naW5nIHVwIFVTQiBBdWRpbyB3aXRoIENvbmZpZ0ZTLiBCZWZvcmUgd2UganVzdCBkaXZlIGluIHRob3VnaCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSYjMzk7cmUgbm90IG1pc3NpbmcgYW55dGhpbmcuIEkgbmVlZCB0byBxdWlja2x5IHJ1biB0aHJvdWdoIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGVhY2ggb2YgdGhvc2UgZmVhdHVyZXMuIE15IGd1dCB0ZWxscyBtZSB0aGVyZSB3b24mIzM5O3QgYmUgbWFueSBzaG93c3RvcHBlcnMsIGJ1dCBJIG5ldmVyIHNraXAgdGhpcyBzdGVwLiBUaGlzIGlzIGEgc29saWQgY2hlY2sgYmVmb3JlIHdlIGJyZWFrIGFueXRoaW5nISBUaW1lIHRvIGNyb3NzLXJlZmVyZW5jZSB0aGUgS2NvbmZpZyBmaWxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTM6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzgwOlx0XG4gMzgxOlx0Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFcbiAzODI6XHRcdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wXCYjMzQ7XG4gMzgzOlx0XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuIDM4NDpcdFx0ZGVwZW5kcyBvbiBTTkRcbiAzODU6XHRcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4gMzg2Olx0XHRzZWxlY3QgU05EX1BDTVxuIDM4NzpcdFx0c2VsZWN0IFVTQl9VX0FVRElPXG4gMzg4Olx0XHRzZWxlY3QgVVNCX0ZfVUFDMVxuIDM4OTpcdFx0aGVscFxuIDM5MDpcdFx0ICBUaGlzIEF1ZGlvIGZ1bmN0aW9uIGltcGxlbWVudHMgMSBBdWRpb0NvbnRyb2wgaW50ZXJmYWNlLFxuIDM5MTpcdFx0ICAxIEF1ZGlvU3RyZWFtaW5nIEludGVyZmFjZSBlYWNoIGZvciBVU0ItT1VUIGFuZCBVU0ItSU4uXG4gMzkyOlx0XHQgIFRoaXMgZHJpdmVyIGRvZXNuJiMzOTt0IGV4cGVjdCBhbnkgcmVhbCBBdWRpbyBjb2RlYyB0byBiZSBwcmVzZW50XG4gMzkzOlx0XHQgIG9uIHRoZSBkZXZpY2UgLSB0aGUgYXVkaW8gc3RyZWFtcyBhcmUgc2ltcGx5IHNpbmtlZCB0byBhbmRcbiAzOTQ6XHRcdCAgc291cmNlZCBmcm9tIGEgdmlydHVhbCBBTFNBIHNvdW5kIGNhcmQgY3JlYXRlZC4gVGhlIHVzZXItc3BhY2VcbiAzOTU6XHRcdCAgYXBwbGljYXRpb24gbWF5IGNob29zZSB0byBkbyB3aGF0ZXZlciBpdCB3YW50cyB3aXRoIHRoZSBkYXRhXG4gMzk2Olx0XHQgIHJlY2VpdmVkIGZyb20gdGhlIFVTQiBIb3N0IGFuZCBjaG9vc2UgdG8gcHJvdmlkZSB3aGF0ZXZlciBpdFxuIDM5NzpcdFx0ICB3YW50cyBhcyBhdWRpbyBkYXRhIHRvIHRoZSBVU0IgSG9zdC5cbiAzOTg6XHRcbiAzOTk6XHRjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMV9MRUdBQ1lcbiA0MDA6XHRcdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wIChsZWdhY3kgaW1wbGVtZW50YXRpb24pXCYjMzQ7XG4gNDAxOlx0XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuIDQwMjpcdFx0ZGVwZW5kcyBvbiBTTkRcbiA0MDM6XHRcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4gNDA0Olx0XHRzZWxlY3QgU05EX1BDTVxuIDQwNTpcdFx0c2VsZWN0IFVTQl9GX1VBQzFfTEVHQUNZXG4gNDA2Olx0XHRoZWxwXG4gNDA3Olx0XHQgIFRoaXMgQXVkaW8gZnVuY3Rpb24gaW1wbGVtZW50cyAxIEF1ZGlvQ29udHJvbCBpbnRlcmZhY2UsXG4gNDA4Olx0XHQgIDEgQXVkaW9TdHJlYW1pbmcgSW50ZXJmYWNlIGVhY2ggZm9yIFVTQi1PVVQgYW5kIFVTQi1JTi5cbiA0MDk6XHRcdCAgVGhpcyBpcyBhIGxlZ2FjeSBkcml2ZXIgYW5kIHJlcXVpcmVzIGEgcmVhbCBBdWRpbyBjb2RlY1xuIDQxMDpcdFx0ICB0byBiZSBwcmVzZW50IG9uIHRoZSBkZXZpY2UuXG4gNDExOlx0XG4gNDEyOlx0Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzJcbiA0MTM6XHRcdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMi4wXCYjMzQ7XG4gNDE0Olx0XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuIDQxNTpcdFx0ZGVwZW5kcyBvbiBTTkRcbiA0MTY6XHRcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4gNDE3Olx0XHRzZWxlY3QgU05EX1BDTVxuIDQxODpcdFx0c2VsZWN0IFVTQl9VX0FVRElPXG4gNDE5Olx0XHRzZWxlY3QgVVNCX0ZfVUFDMlxuIDQyMDpcdFx0aGVscFxuIDQyMTpcdFx0ICBUaGlzIEF1ZGlvIGZ1bmN0aW9uIGlzIGNvbXBhdGlibGUgd2l0aCBVU0IgQXVkaW8gQ2xhc3NcbiA0MjI6XHRcdCAgc3BlY2lmaWNhdGlvbiAyLjAuIEl0IGltcGxlbWVudHMgMSBBdWRpb0NvbnRyb2wgaW50ZXJmYWNlLFxuIDQyMzpcdFx0ICAxIEF1ZGlvU3RyZWFtaW5nIEludGVyZmFjZSBlYWNoIGZvciBVU0ItT1VUIGFuZCBVU0ItSU4uXG4gNDI0Olx0XHQgIFRoaXMgZHJpdmVyIGRvZXNuJiMzOTt0IGV4cGVjdCBhbnkgcmVhbCBBdWRpbyBjb2RlYyB0byBiZSBwcmVzZW50XG4gNDI1Olx0XHQgIG9uIHRoZSBkZXZpY2UgLSB0aGUgYXVkaW8gc3RyZWFtcyBhcmUgc2ltcGx5IHNpbmtlZCB0byBhbmRcbiA0MjY6XHRcdCAgc291cmNlZCBmcm9tIGEgdmlydHVhbCBBTFNBIHNvdW5kIGNhcmQgY3JlYXRlZC4gVGhlIHVzZXItc3BhY2VcbiA0Mjc6XHRcdCAgYXBwbGljYXRpb24gbWF5IGNob29zZSB0byBkbyB3aGF0ZXZlciBpdCB3YW50cyB3aXRoIHRoZSBkYXRhXG4gNDI4Olx0XHQgIHJlY2VpdmVkIGZyb20gdGhlIFVTQiBIb3N0IGFuZCBjaG9vc2UgdG8gcHJvdmlkZSB3aGF0ZXZlciBpdFxuIDQyOTpcdFx0ICB3YW50cyBhcyBhdWRpbyBkYXRhIHRvIHRoZSBVU0IgSG9zdC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTM6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMzMzQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqQ29uZmlndXJpbmcgVVNCIEdhZGdldHMgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqCgpSaWdodCwgc28gdG8gZ2V0IHRoaXMgVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5IHVwIGFuZCBydW5uaW5nLCBJJiMzOTttIGdvaW5nIHRvIG5lZWQgdG8gZW5hYmxlIGEgZmV3IGtleSBrZXJuZWwgbW9kdWxlcy4gRmlyc3QsIEkga25vdyBJJiMzOTtsbCBuZWVkIGBVU0JfQ09ORklHRlNgLCB0aGF0JiMzOTtzIGEgZ2l2ZW4uIFRoZW4sIHNpbmNlIHdlIGFyZSB3b3JraW5nIHdpdGggYXVkaW8sIGBTTkRgIGlzIGEgbXVzdC4gQW5kLCB0byBzdXBwb3J0IHRoZSBzcGVjaWZpY3Mgb2YgVVNCIEF1ZGlvIENsYXNzLCBJIHNob3VsZCBtYWtlIHN1cmUgdGhhdCBJIGhhdmUgYm90aCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMWAgYW5kIGBVU0JfQ09ORklHRlNfRl9VQUMyYCBlbmFibGVkLgoKTm93LCB0aGUgY3J1Y2lhbCBwaWVjZSBmb3IgdmlydHVhbGl6YXRpb24uLi4gdGhhdCYjMzk7cyB3aGVyZSBgVVNCX0RVTU1ZX0hDRGAgY29tZXMgaW4uIEkgcmVjYWxsIHRoYXQgdGhpcyBwcm92aWRlcyB0aGUgZHVtbXkgVURDIChVU0IgRGV2aWNlIENvbnRyb2xsZXIpIGFuZCBIQ0QgKFVTQiBIb3N0IENvbnRyb2xsZXIpIG5lZWRlZCBmb3IgdGhlc2UgZ2FkZ2V0cyB0byBmdW5jdGlvbiB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nLiBMZXQgbWUganVzdCB0YWtlIGEgcXVpY2sgbG9vayBhdCBgVVNCX0RVTU1ZX0hDRGAgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIG9mIGl0cyByb2xlLCBhbmQgbWFrZSBzdXJlIGl0IGRvZXNuJiMzOTt0IGhhdmUgYW55IG9idmlvdXMgY29uZmxpY3RzIG9yIGRlcGVuZGVuY2llcyB0aGF0IEkgbmVlZCB0byBrZWVwIGluIG1pbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfRFVNTVlfSENEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9NDIyPXNvdXJjZSBcJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL2NkbnMyL0tjb25maWdcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjQyODpjb25maWcgVVNCX0RVTU1ZX0hDRFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQyOS1cdHRyaXN0YXRlIFwmIzM0O0R1bW15IEhDRCAoREVWRUxPUE1FTlQpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzODI1CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqVVNCX0RVTU1ZX0hDRCBEZXBlbmRlbmN5IERlZXAgRGl2ZSoqCgpPa2F5LCB0aW1lIHRvIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGRlcGVuZGVuY2llcyBhc3NvY2lhdGVkIHdpdGggYFVTQl9EVU1NWV9IQ0RgLiBJJiMzOTt2ZSB3b3JrZWQgd2l0aCBIQ0RzIChIb3N0IENvbnRyb2xsZXIgRHJpdmVycykgYW5kIHRoZSBpbnRyaWNhY2llcyBvZiBVU0Igc3RhY2tzIGZvciB5ZWFycywgc28gSSB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgcGl0ZmFsbHMgb2YgdGhlc2Ugc3lzdGVtcy4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSB0cmFjaW5nIHRocm91Z2ggdGhlIGNvZGUuIEkmIzM5O2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gc2VlIHdoaWNoIG9wdGlvbnMgYXJlIGVuYWJsZWQgYWxvbmdzaWRlIGl0IGFuZCBzZWUgd2hhdCBsaWJyYXJpZXMgb3IgbW9kdWxlcyB0aGlzIGRyaXZlciBwdWxscyBpbi4gVGhlbiwgSSYjMzk7bGwgbmVlZCB0byB0aGluayBhYm91dCBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIHNoYXJlZCByZXNvdXJjZXMgdGhpcyBkdW1teSBjb250cm9sbGVyIG1pZ2h0IG5lZWQuIEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCBldmVuIGEgJiMzNDtkdW1teSYjMzQ7IGRldmljZSBjYW4gYmUgc3VycHJpc2luZ2x5IGNvbXBsZXggaW4gdGVybXMgb2YgaW50ZXJhY3Rpbmcgd2l0aCBsb3dlciBsZXZlbCBVU0IgY29yZSBmdW5jdGlvbmFsaXR5LiBJJiMzOTtsbCBuZWVkIHRvIG1lbnRhbGx5IG1hcCBvdXQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBVU0IgY29yZSwgZXNwZWNpYWxseSBob3cgaXQgaGFuZGxlcyB0cmFuc2ZlciBkZXNjcmlwdG9ycyBhbmQgZW5kcG9pbnRzLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBhbnkgaW5kaWNhdGlvbnMgb2Ygc2hhcmVkIG1lbW9yeSBhY2Nlc3MsIGludGVycnVwdCBoYW5kbGluZywgYW5kIGxpa2VseSBuZWVkIHRvIGNvbnNpZGVyIHBvd2VyIG1hbmFnZW1lbnQgaW1wbGljYXRpb25zLiBUaGlzIGlzIGltcG9ydGFudCB0byBlbnN1cmUgbXkgd29yayBpcyBmdWxseSBjb21wYXRpYmxlLCByb2J1c3QgYW5kIHdvbiYjMzk7dCBpbnRyb2R1Y2UgdW53YW50ZWQgc2lkZSBlZmZlY3RzLiBVbHRpbWF0ZWx5LCBJJiMzOTttIGV4cGVjdGluZyB0aGlzIHdpbGwgaW52b2x2ZSBzdGVwcGluZyB0aHJvdWdoIHRoZSBidWlsZCBwcm9jZXNzLCBjaGVja2luZyBoZWFkZXIgZmlsZXMgYW5kIHJldmlld2luZyByZWxldmFudCBrZXJuZWwgZG9jdW1lbnRhdGlvbiB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBsYW5kc2NhcGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0MjA6XHRzb3VyY2UgXCYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9hc3BlZWQtdmh1Yi9LY29uZmlnXCYjMzQ7XG4gNDIxOlx0XG4gNDIyOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC91ZGMvY2RuczIvS2NvbmZpZ1wmIzM0O1xuIDQyMzpcdFxuIDQyNDpcdCNcbiA0MjU6XHQjIExBU1QgLS0gZHVtbXkvZW11bGF0ZWQgY29udHJvbGxlclxuIDQyNjpcdCNcbiA0Mjc6XHRcbiA0Mjg6XHRjb25maWcgVVNCX0RVTU1ZX0hDRFxuIDQyOTpcdFx0dHJpc3RhdGUgXCYjMzQ7RHVtbXkgSENEIChERVZFTE9QTUVOVClcJiMzNDtcbiA0MzA6XHRcdGRlcGVuZHMgb24gVVNCPXkgfHwgKFVTQj1tIFx1MDAyNlx1MDAyNiBVU0JfR0FER0VUPW0pXG4gNDMxOlx0XHRoZWxwXG4gNDMyOlx0XHQgIFRoaXMgaG9zdCBjb250cm9sbGVyIGRyaXZlciBlbXVsYXRlcyBVU0IsIGxvb3BpbmcgYWxsIGRhdGEgdHJhbnNmZXJcbiA0MzM6XHRcdCAgcmVxdWVzdHMgYmFjayB0byBhIFVTQiBcJiMzNDtnYWRnZXQgZHJpdmVyXCYjMzQ7IGluIHRoZSBzYW1lIGhvc3QuICBUaGUgaG9zdFxuIDQzNDpcdFx0ICBzaWRlIGlzIHRoZSBjb250cm9sbGVyOyB0aGUgZ2FkZ2V0IHNpZGUgaXMgdGhlIGRldmljZS4gIEdhZGdldCBkcml2ZXJzXG4gNDM1Olx0XHQgIGNhbiBiZSBoaWdoLCBmdWxsLCBvciBsb3cgc3BlZWQ7IGFuZCB0aGV5IGhhdmUgYWNjZXNzIHRvIGVuZHBvaW50c1xuIDQzNjpcdFx0ICBsaWtlIHRob3NlIGZyb20gTkVUMjI4MCwgUFhBMnh4LCBvciBTQTExMDAgaGFyZHdhcmUuXG4gNDM3Olx0XG4gNDM4Olx0XHQgIFRoaXMgbWF5IGhlbHAgaW4gc29tZSBzdGFnZXMgb2YgY3JlYXRpbmcgYSBkcml2ZXIgdG8gZW1iZWQgaW4gYVxuIDQzOTpcdFx0ICBMaW51eCBkZXZpY2UsIHNpbmNlIGl0IGxldHMgeW91IGRlYnVnIHNldmVyYWwgcGFydHMgb2YgdGhlIGdhZGdldFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDUxNwoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDIwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIENvbnVuZHJ1bSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGBVU0JfRFVNTVlfSENEYCBoaW5nZXMgb24gYm90aCBgVVNCYCBhbmQgYFVTQl9HQURHRVRgLCBzbyB0aG9zZSBhcmUgZGVmaW5pdGVseSBpbiB0aGUgcGljdHVyZS4gSSBuZWVkIHRvIGVuc3VyZSB0aG9zZSBhcmUgZGVmaW5lZCBmaXJzdC4gQW5kIHdoaWxlIEkmIzM5O20gYXQgaXQsIEkgc2hvdWxkIGFsc28gaW5jbHVkZSBgVVNCX0NPTkZJR0ZTYCwgYFVTQl9DT05GSUdGU19GX1VBQzFgLCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMmAsIGFuZCBgU05EYC4gQ2FuJiMzOTt0IGh1cnQgdG8gaGF2ZSBhbGwgdGhvc2UgZHVja3MgaW4gYSByb3cuCgpOb3csIHRoZSByZWFsIGZvY3VzIGhlcmUgc2VlbXMgdG8gYmUgb24gdGhvc2UgYGZfdWFjKl8qc3JhdGVfc3RvcmVgIGZ1bmN0aW9ucy4gU3BlY2lmaWNhbGx5LCBgZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZWAsIGBmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlYCwgYGZfdWFjMl9vcHRzX2Nfc3JhdGVfc3RvcmVgLCBhbmQgYGZfdWFjMl9vcHRzX3Bfc3JhdGVfc3RvcmVgLiBUaGV5IG11c3QgYmUgdGhlIGtleSB0byBzb21ldGhpbmcgaW1wb3J0YW50LiBBbmQgd2FpdCBhIG1pbnV0ZS4uLiB0aGUgYXNzb2NpYXRlZCBtYWNyb3MgYXJlIGBVQUMxX1JBVEVfQVRUUklCVVRFYCBhbmQgYFVBQzJfUkFURV9BVFRSSUJVVEVgLiBJIHNob3VsZCBnbyBmaW5kIHdoZXJlIHRoZXNlIG1hY3JvcyBhcmUgYmVpbmcgdXNlZCwgYmVzaWRlcyB3aGVyZSBJIGV4cGVjdC4gVGhpcyBpcyB3aGVyZSBJJiMzOTtsbCBmaW5kIHRoZSBuZXh0IGNyaXRpY2FsIHBpZWNlIG9mIGluZm9ybWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtVQUMxX1JBVEVfQVRUUklCVVRFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNTY4PUNPTkZJR0ZTX0FUVFIoZl91YWMxX29wdHNfLCBuYW1lKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1NjktXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTU3MDojZGVmaW5lIFVBQzFfUkFURV9BVFRSSUJVVEUobmFtZSlcdFx0XHRcdFx0XFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNTcxLXN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTY3MT1VQUMxX0FUVFJJQlVURSh1MzIsIGNfY2htYXNrKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjcyOlVBQzFfUkFURV9BVFRSSUJVVEUoY19zcmF0ZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY3My1VQUMxX0FUVFJJQlVURSh1MzIsIGNfc3NpemUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jPTE2NzQ9VUFDMV9BVFRSSUJVVEUodTMyLCBwX2NobWFzayk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY3NTpVQUMxX1JBVEVfQVRUUklCVVRFKHBfc3JhdGUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NzYtVUFDMV9BVFRSSUJVVEUodTMyLCBwX3NzaXplKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTM6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU0MjkKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBhcyBpZiBJJiMzOTttIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkNvbnNpZGVyaW5nIEF1ZGlvIFNhbXBsZSBSYXRlcyBhbmQgVUFDMioqCgpSaWdodCwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gc2FtcGxlIHJhdGVzLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBjX3NyYXRlYCBhbmQgYHBfc3JhdGVgLCBtYWtpbmcgc3VyZSB0aG9zZSBhcmUgd2VsbC1kZWZpbmVkIGFuZCBhY2NvdW50ZWQgZm9yLiBUaGF0JiMzOTtzIGEga2V5IHN0YXJ0aW5nIHBvaW50LiBBbmQgbm93LCBtb3ZpbmcgdG8gYFVBQzJfUkFURV9BVFRSSUJVVEVgLi4uIEkgbmVlZCB0byBjb25zaWRlciBleGFjdGx5IGhvdyB0aGlzIHJlbGF0ZXMgdG8gdGhlIHNhbXBsZSByYXRlIG5lZ290aWF0aW9uIGFuZCB0aGUgb3ZlcmFsbCBhdWRpbyBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZnVsbHkgdW5kZXJzdGFuZCBob3cgdGhpcyBhdHRyaWJ1dGUgaW50ZXJhY3RzIHdpdGggZXZlcnl0aGluZyBlbHNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtVQUMyX1JBVEVfQVRUUklCVVRFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYz0xOTg2PUNPTkZJR0ZTX0FUVFIoZl91YWMyX29wdHNfLCBuYW1lKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jLTE5ODctXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM6MTk4ODojZGVmaW5lIFVBQzJfUkFURV9BVFRSSUJVVEUobmFtZSlcdFx0XHRcdFx0XFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0xOTg5LXN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM9MjA5Mj1VQUMyX0FUVFJJQlVURSh1MzIsIHBfY2htYXNrKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYzoyMDkzOlVBQzJfUkFURV9BVFRSSUJVVEUocF9zcmF0ZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMtMjA5NC1VQUMyX0FUVFJJQlVURSh1MzIsIHBfc3NpemUpO1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYz0yMDk2PVVBQzJfQVRUUklCVVRFKHUzMiwgY19jaG1hc2spO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jOjIwOTc6VUFDMl9SQVRFX0FUVFJJQlVURShjX3NyYXRlKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0yMDk4LVVBQzJfQVRUUklCVVRFX1NZTkMoY19zeW5jKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTM6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYwMTYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA2NDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVU0IgQXVkaW8gQ2xhc3MgQ29uZmlndXJhdGlvbiBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9uczogYGZfdWFjMV9vcHRzX2Nfc3JhdGVfc3RvcmVgLCBgZl91YWMxX29wdHNfcF9zcmF0ZV9zdG9yZWAsIGBmX3VhYzJfb3B0c19jX3NyYXRlX3N0b3JlYCwgYW5kIGBmX3VhYzJfb3B0c19wX3NyYXRlX3N0b3JlYC4gVGhleSYjMzk7cmUgdGhlIG9uZXMgYmVpbmcgdXNlZCBmb3IgdGhlIGBjX3NyYXRlYCBhbmQgYHBfc3JhdGVgIHNldHRpbmdzLiBJIHNlZSB0aGF0IHRoZXkmIzM5O3JlIHN0YXRpYywgYW5kIHRoYXQmIzM5O3MgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0LiBJIHJlY2FsbCB0aGV5JiMzOTtyZSBhc3NpZ25lZCB0byBjb25maWdmcyBhdHRyaWJ1dGVzIHVzaW5nIGBDT05GSUdGU19BVFRSYC4gUmlnaHQsIHNvIGBDT05GSUdGU19BVFRSYCBjcmVhdGVzLCBmb3IgZXhhbXBsZSwgYGZfdWFjMV9vcHRzX2F0dHJfY19zcmF0ZWAsIHdoaWNoIHBvaW50cyB0byBgZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZWAuCgpCZWNhdXNlIHRoZXNlIGFyZSBzdGF0aWMgZnVuY3Rpb25zLCBJIGltbWVkaWF0ZWx5IGNvbnNpZGVyIHBvdGVudGlhbCBpc3N1ZXMuIFRoZXkgKm1pZ2h0KiBub3QgYmUgZXhwb3J0ZWQgYXMgZ2xvYmFsIHN5bWJvbHMsIGJ1dCBzaW5jZSB0aGV5JiMzOTtyZSBkZWZpbml0ZWx5IHJlYWNoYWJsZSB2aWEgY29uZmlnZnMgKGJlaW5nIHBhc3NlZCBhcyBmdW5jdGlvbiBwb2ludGVycyBpbiBjb25maWdmcyBzdHJ1Y3R1cmVzKSwgdGhleSBhcmUgYXZhaWxhYmxlLiBJIHdhcyB3b25kZXJpbmcgaWYgdGhleSBhcmUgaW5saW5lZCwgYnV0IHRoYXQgd29uJiMzOTt0IGhhcHBlbiBiZWNhdXNlIHRoZXkgYXJlIHBhc3NlZCBhcyBmdW5jdGlvbiBwb2ludGVycyB0byBjb25maWdmcyBzdHJ1Y3R1cmVzLiBTbywgZXZlbiB0aG91Z2ggdGhleSBhcmUgc3RhdGljLCBJIGtub3cgdGhleSB3aWxsIGhhdmUgZGlzdGluY3QgYWRkcmVzc2VzLiBTeXprYWxsZXIgY291bGQgaGF2ZSB0cm91YmxlIHJlc29sdmluZyB0aGUgbmFtZXMsIGJ1dCB0aGF0JiMzOTtzIG5vdCBhIHByb2JsZW0sIGJlY2F1c2UgdGhleSBhcmUgaW4gYGthbGxzeW1zYCBhbmQgaXQgY2FuIHJlc29sdmUgdGhlIG5hbWVzLiBBY3R1YWxseSwgSSB3YXMganVzdCByZWFkaW5nIHRoZSBwcm9tcHQgYWJvdXQgcHJlZmVycmluZyBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeXBvaW50IGZ1bmN0aW9ucywgYnV0IHNpbmNlIHRoZXNlIGFyZSB1c2VkIGFzIGZ1bmN0aW9uIHBvaW50ZXJzLCB0aGV5IGFyZSAqbm90KiBpbmxpbmVkIGFuZCBhcmUgZmluZSB0byB1c2UuCgpOb3csIGxldCBtZSB6b29tIG91dC4gVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgdGhlc2UgYGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlYCBhbmQgYGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlYCBmdW5jdGlvbnMgaW4gdGhlIGBVQUMxX1JBVEVfQVRUUklCVVRFYCBhbmQgYFVBQzJfUkFURV9BVFRSSUJVVEVgIHN0cnVjdHVyZXMuIFRoaXMgcG9pbnRzIHRvIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGNvbmZpZ2ZzIHN0b3JlIGNhbGxiYWNrcyBmb3IgVVNCIEF1ZGlvIENsYXNzIDEgYW5kIDIgZ2FkZ2V0IGRyaXZlcnMuIFRoZSBsZWFrIGNvbWVzIGZyb20gYHN0cnNlcGAgbW9kaWZ5aW5nIHRoZSBwb2ludGVyLCB3aGljaCBjYXVzZXMgdGhlIGBrZnJlZWAgdG8gZnJlZSB0aGUgd3JvbmcgbWVtb3J5IGFkZHJlc3MuIFRoZSBmaXgsIHRoZW4sIGlzIHRvIHByZXNlcnZlIHRoZSBvcmlnaW5hbCBwb2ludGVyIHNvIHRoZSBjb3JyZWN0IG1lbW9yeSBnZXRzIGZyZWVkLiBUaGlzIGNvZGUmIzM5O3MgcmVhY2hhYmxlIHdoZW4gY29uZmlndXJpbmcgVVNCIGdhZGdldHMgdXNpbmcgY29uZmlnZnMgYW5kIHRoZSBkdW1teSBIQ0QuCgpUbyB0ZXN0IHRoaXMsIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIHRoZXNlIGNvbmZpZ3VyYXRpb25zOiBgVVNCX0dBREdFVGAsIGBVU0JfRFVNTVlfSENEYCwgYFVTQl9DT05GSUdGU2AsIGBVU0JfQ09ORklHRlNfRl9VQUMxYCwgYFVTQl9DT05GSUdGU19GX1VBQzJgLCBhbmQgYFNORGAuIEkmIzM5O2xsIGRvdWJsZSBjaGVjayBgQ09ORklHX1VTQl9DT05GSUdGU19GX1VBQzFgLCBhbmQsIHllcywgdGhhdCBpcyB0aGUgY29ycmVjdCBuYW1lLiBJdCBkZXBlbmRzIG9uIGBVU0JfQ09ORklHRlNgIGFuZCBgU05EYC4gTm8gb3RoZXIgZGVwZW5kZW5jaWVzPyBMZXQgbWUgZG91YmxlLWNoZWNrIGBVU0JfQ09ORklHRlNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0NPTkZJR0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMjM9Y29uZmlnIFVTQl9GX1RDTVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIyNy1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIyODpjb25maWcgVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMjktXHR0cmlzdGF0ZSBcJiMzNDtVU0IgR2FkZ2V0IGZ1bmN0aW9ucyBjb25maWd1cmFibGUgdGhyb3VnaCBjb25maWdmc1wmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIzOS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0MDpjb25maWcgVVNCX0NPTkZJR0ZTX1NFUklBTFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjQxLVx0Ym9vbCBcJiMzNDtHZW5lcmljIHNlcmlhbCBidWxrIGluL291dFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI0OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0OTpjb25maWcgVVNCX0NPTkZJR0ZTX0FDTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjUwLVx0Ym9vbCBcJiMzNDtBYnN0cmFjdCBDb250cm9sIE1vZGVsIChDREMgQUNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI1OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI1OTpjb25maWcgVVNCX0NPTkZJR0ZTX09CRVhcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7T2JqZWN0IEV4Y2hhbmdlIE1vZGVsIChDREMgT0JFWClcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNjk6Y29uZmlnIFVTQl9DT05GSUdGU19OQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI3MC1cdGJvb2wgXCYjMzQ7TmV0d29yayBDb250cm9sIE1vZGVsIChDREMgTkNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI4MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtFdGhlcm5ldCBDb250cm9sIE1vZGVsIChDREMgRUNNKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5Mi1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI5Mzpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTV9TVUJTRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5NC1cdGJvb2wgXCYjMzQ7RXRoZXJuZXQgQ29udHJvbCBNb2RlbCAoQ0RDIEVDTSkgc3Vic2V0XCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzAyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzAzOmNvbmZpZyBVU0JfQ09ORklHRlNfUk5ESVNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMwNC1cdGJvb2wgXCYjMzQ7Uk5ESVNcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMTgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMTk6Y29uZmlnIFVTQl9DT05GSUdGU19FRU1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMyMC1cdGJvb2wgXCYjMzQ7RXRoZXJuZXQgRW11bGF0aW9uIE1vZGVsIChFRU0pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzM0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM1OmNvbmZpZyBVU0JfQ09ORklHRlNfUEhPTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzYtXHRib29sIFwmIzM0O1Bob25ldCBwcm90b2NvbFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM0NTpjb25maWcgVVNCX0NPTkZJR0ZTX01BU1NfU1RPUkFHRVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQ2LVx0Ym9vbCBcJiMzNDtNYXNzIHN0b3JhZ2VcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNTY6Y29uZmlnIFVTQl9DT05GSUdGU19GX0xCX1NTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTctXHRib29sIFwmIzM0O0xvb3BiYWNrIGFuZCBzb3VyY2VzaW5rIGZ1bmN0aW9uIChmb3IgdGVzdGluZylcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNjgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNjk6Y29uZmlnIFVTQl9DT05GSUdGU19GX0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNzAtXHRib29sIFwmIzM0O0Z1bmN0aW9uIGZpbGVzeXN0ZW0gKEZ1bmN0aW9uRlMpXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzgwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODItXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDEuMFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM5OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM5OTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMV9MRUdBQ1lcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wIChsZWdhY3kgaW1wbGVtZW50YXRpb24pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDExLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDEyOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMyXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTMtXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDIuMFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQzMC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQzMTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTUlESVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDMyLVx0Ym9vbCBcJiMzNDtNSURJIGZ1bmN0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDQ1OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9NSURJMlxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ2LVx0Ym9vbCBcJiMzNDtNSURJIDIuMCBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ1Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ1ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NTktXHRib29sIFwmIzM0O0hJRCBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ2ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVVZDXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NjktXHRib29sIFwmIzM0O1VTQiBXZWJjYW0gZnVuY3Rpb25cJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00ODAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0ODE6Y29uZmlnIFVTQl9DT05GSUdGU19GX1BSSU5URVJcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4Mi1cdGJvb2wgXCYjMzQ7UHJpbnRlciBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ5NC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5NTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTYtXHRib29sIFwmIzM0O1VTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODgxMwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDUwNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgVVNCIENvbmZpZ0ZTIGZvciBTb3VuZCBTdXBwb3J0KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCBgVVNCX0NPTkZJR0ZTYCByZXF1aXJlcyBgVVNCX0dBREdFVGAsIHNvIHRob3NlIGFyZSBkZWZpbml0ZWx5IGluIHRoZSBtaXguIFRoZW4sIHdlIGhhdmUgYFVTQl9EVU1NWV9IQ0RgIGFuZCB0aGUgYWN0dWFsIGBVU0JfQ09ORklHRlNgIGl0c2VsZi4gRnVydGhlciwgd2Ugc2VlIGBVU0JfQ09ORklHRlNfRl9VQUMxYCwgYFVTQl9DT05GSUdGU19GX1VBQzJgLCBhbmQgYFNORGAuCgpOb3csIGhlcmUmIzM5O3Mgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gYFVTQl9DT05GSUdGU2AgaXMgdHJpc3RhdGUsIG1lYW5pbmcgaXQgY2FuIGJlIGEgbW9kdWxlIG9yIGJ1aWx0LWluLCBvciBkaXNhYmxlZC4gQnV0IGBVU0JfQ09ORklHRlNfRl9VQUMxYCBpcyBhIGJvb2xlYW4uIFRoYXQgbWVhbnMgYFVTQl9DT05GSUdGU19GX1VBQzFgIGlzIGdvaW5nIHRvIGVpdGhlciBiZSBidWlsdCBpbnRvIHRoZSBgdXNiX2ZfdWFjMWAgbW9kdWxlLCBvciBkaXJlY3RseSBpbnRvIHRoZSBrZXJuZWwuCgpJIG5lZWQgdG8gY29uZmlybSB0aGUgZnVuY3Rpb24gbmFtZXMuIEl0IGxvb2tzIGxpa2UgYGZfdWFjMV9vcHRzX2Nfc3JhdGVfc3RvcmVgIGlzIGluZGVlZCB0aGUgYWN0dWFsIG5hbWUuIExldCYjMzk7cyBzZWUuLi4gWXVwLCBoZXJlJiMzOTtzIHRoZSBtYWNybzoKCmBgYGMKI2RlZmluZSBVQUMxX1JBVEVfQVRUUklCVVRFKG5hbWUpCQkJCQlcCnN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLAlcCgkJCQkJIGNoYXIgKnBhZ2UpCQkJXAouLi4Kc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLAlcCgkJCQkJICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgbGVuKQlcCmBgYAoKT2theSwgYW5kIGl0JiMzOTtzIGJlaW5nIHVzZWQgd2l0aCBgY19zcmF0ZWAgYW5kIGBwX3NyYXRlYC4gU28gd2UgaGF2ZSBgZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZWAsIGBmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlYCwgYGZfdWFjMl9vcHRzX2Nfc3JhdGVfc3RvcmVgLCBhbmQgYGZfdWFjMl9vcHRzX3Bfc3JhdGVfc3RvcmVgLgoKVGhlc2UgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBmdW5jdGlvbmFsLCBhbmQgYXJlIGZpeGluZyBhIG1lbW9yeSBsZWFrISBUaGlzIG1lcml0cyBzb21lIGZ1enppbmcgZm9yIHN1cmUuCgpMZXQmIzM5O3MgZG8gYSBxdWljayBzd2VlcCB0byBzZWUgaWYgYW55IG90aGVyIGZ1bmN0aW9ucyBhcmUgdG91Y2hlZC4uLiBObywgdGhlIHBhdGNoIGFwcGVhcnMgdG8gc29sZWx5IG1vZGlmeSB0aGUgYGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlYCBhbmQgYGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlYCBmdW5jdGlvbnMgd2l0aGluIHRoZSBgVUFDMV9SQVRFX0FUVFJJQlVURWAgYW5kIGBVQUMyX1JBVEVfQVRUUklCVVRFYCBtYWNyb3MuCgpGaW5hbGx5LCBJIHdvbmRlciBpZiBgQ09ORklHRlNfRlNgIGlzIHJlcXVpcmVkLiBJJiMzOTtsbCBiZXQgYFVTQl9DT05GSUdGU2AgZWl0aGVyIHNlbGVjdHMgb3IgZGVwZW5kcyBvbiBpdC4gSSBzaG91bGQgdmVyaWZ5IHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfQ09ORklHRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTIyMz1jb25maWcgVVNCX0ZfVENNXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjI3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjI4OmNvbmZpZyBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIyOS1cdHRyaXN0YXRlIFwmIzM0O1VTQiBHYWRnZXQgZnVuY3Rpb25zIGNvbmZpZ3VyYWJsZSB0aHJvdWdoIGNvbmZpZ2ZzXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjM5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjQwOmNvbmZpZyBVU0JfQ09ORklHRlNfU0VSSUFMXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNDEtXHRib29sIFwmIzM0O0dlbmVyaWMgc2VyaWFsIGJ1bGsgaW4vb3V0XCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjQ4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjQ5OmNvbmZpZyBVU0JfQ09ORklHRlNfQUNNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNTAtXHRib29sIFwmIzM0O0Fic3RyYWN0IENvbnRyb2wgTW9kZWwgKENEQyBBQ00pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjU4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjU5OmNvbmZpZyBVU0JfQ09ORklHRlNfT0JFWFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjYwLVx0Ym9vbCBcJiMzNDtPYmplY3QgRXhjaGFuZ2UgTW9kZWwgKENEQyBPQkVYKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI2OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI2OTpjb25maWcgVVNCX0NPTkZJR0ZTX05DTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjcwLVx0Ym9vbCBcJiMzNDtOZXR3b3JrIENvbnRyb2wgTW9kZWwgKENEQyBOQ00pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjgwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRUNNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yODItXHRib29sIFwmIzM0O0V0aGVybmV0IENvbnRyb2wgTW9kZWwgKENEQyBFQ00pXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjkyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjkzOmNvbmZpZyBVU0JfQ09ORklHRlNfRUNNX1NVQlNFVFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFdGhlcm5ldCBDb250cm9sIE1vZGVsIChDREMgRUNNKSBzdWJzZXRcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMDItXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMDM6Y29uZmlnIFVTQl9DT05GSUdGU19STkRJU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzA0LVx0Ym9vbCBcJiMzNDtSTkRJU1wmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMxOC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMxOTpjb25maWcgVVNCX0NPTkZJR0ZTX0VFTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzIwLVx0Ym9vbCBcJiMzNDtFdGhlcm5ldCBFbXVsYXRpb24gTW9kZWwgKEVFTSlcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzQtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMzU6Y29uZmlnIFVTQl9DT05GSUdGU19QSE9ORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMzNi1cdGJvb2wgXCYjMzQ7UGhvbmV0IHByb3RvY29sXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQ0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzQ1OmNvbmZpZyBVU0JfQ09ORklHRlNfTUFTU19TVE9SQUdFXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNDYtXHRib29sIFwmIzM0O01hc3Mgc3RvcmFnZVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM1NS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM1Njpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTEJfU1NcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM1Ny1cdGJvb2wgXCYjMzQ7TG9vcGJhY2sgYW5kIHNvdXJjZXNpbmsgZnVuY3Rpb24gKGZvciB0ZXN0aW5nKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM2OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM2OTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM3MC1cdGJvb2wgXCYjMzQ7RnVuY3Rpb24gZmlsZXN5c3RlbSAoRnVuY3Rpb25GUylcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozODE6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4Mi1cdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzk4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Mzk5OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxX0xFR0FDWVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDAwLVx0Ym9vbCBcJiMzNDtBdWRpbyBDbGFzcyAxLjAgKGxlZ2FjeSBpbXBsZW1lbnRhdGlvbilcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTEtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MTI6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzJcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQxMy1cdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMi4wXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDMwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDMxOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9NSURJXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MzItXHRib29sIFwmIzM0O01JREkgZnVuY3Rpb25cJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NDQtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0NDU6Y29uZmlnIFVTQl9DT05GSUdGU19GX01JREkyXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NDYtXHRib29sIFwmIzM0O01JREkgMi4wIGZ1bmN0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDU3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDU4OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9ISURcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ1OS1cdGJvb2wgXCYjMzQ7SElEIGZ1bmN0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDY3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDY4OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VVkNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2OS1cdGJvb2wgXCYjMzQ7VVNCIFdlYmNhbSBmdW5jdGlvblwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfUFJJTlRFUlxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDgyLVx0Ym9vbCBcJiMzNDtQcmludGVyIGZ1bmN0aW9uXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDk1OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ5Ni1cdGJvb2wgXCYjMzQ7VVNCIEdhZGdldCBUYXJnZXQgRmFicmljXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNDA2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byBVU0JfQ09ORklHRlMgRGVwZW5kZW5jaWVzKioKCk9rYXksIHRpbWUgdG8gZ2V0IHRvIHRoZSBjb3JlIG9mIHRoaXMuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGltbWVkaWF0ZWx5IGdyYXZpdGF0ZXMgdG93YXJkcyB0aGUgZGVwZW5kZW5jaWVzIGFzc29jaWF0ZWQgd2l0aCBgVVNCX0NPTkZJR0ZTYC4gSSBrbm93IHRoZSBiYXNpY3MsIHRoZSBoaWdoLWxldmVsIGFyY2hpdGVjdHVyZSwgYnV0IEkgd2FudCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbCBsdXJraW5nIGluIHRoZSB1bmRlcmx5aW5nIG1vZHVsZXMgb3Igc3Vic3lzdGVtcy4gSXQmIzM5O3MgYSBxdWljayBtZW50YWwgc2NhbiwgY3Jvc3MtcmVmZXJlbmNpbmcgbXkga25vd2xlZGdlIG9mIHRoZSByZWxldmFudCBrZXJuZWwgbW9kdWxlczogYGdhZGdldGZzYCwgYHVkY2AsIGBnX2V0aGVyYCwgYW5kIG1heWJlIGV2ZW4gc29tZSBvZiB0aGUgbW9yZSBlc290ZXJpYyBVU0IgZnVuY3Rpb24gZHJpdmVycyBkZXBlbmRpbmcgb24gdGhlIHNwZWNpZmljIHVzZSBjYXNlLiBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHBvdGVudGlhbCBjb25mbGljdHMgb3IgaW50ZXJhY3Rpb24gaXNzdWVzLiBJIHdhbnQgdG8gcnVsZSBvdXQgYW55IGdvdGNoYXMgd2l0aCB0aGUgVVNCIGNvbnRyb2xsZXIgZHJpdmVyLCB0aGUgcGxhdGZvcm0tc3BlY2lmaWMgZ2x1ZSBjb2RlLCBvciBldmVuIHNvbWV0aGluZyBsZXNzIG9idmlvdXMgbGlrZSBhIHBvd2VyIG1hbmFnZW1lbnQgaW50ZXJhY3Rpb24uIFRoaXMgaXNuJiMzOTt0IGp1c3QgYWJvdXQgZnVuY3Rpb25hbGl0eTsgaXQmIzM5O3MgYWJvdXQgc3RhYmlsaXR5IGFuZCBwZXJmb3JtYW5jZSwgZW5zdXJpbmcgdGhhdCB0aGlzIGNvbmZpZ3VyYXRpb24gaW50ZWdyYXRlcyBjbGVhbmx5IHdpdGggZXZlcnl0aGluZyBlbHNlLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoIFVTQiBwb3dlciBtYW5hZ2VtZW50IGFuZCBzeXN0ZW0td2lkZSByZXNvdXJjZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIyNTpcdFxuIDIyNjpcdCMgdGhpcyBmaXJzdCBzZXQgb2YgZHJpdmVycyBhbGwgZGVwZW5kIG9uIGJ1bGstY2FwYWJsZSBoYXJkd2FyZS5cbiAyMjc6XHRcbiAyMjg6XHRjb25maWcgVVNCX0NPTkZJR0ZTXG4gMjI5Olx0XHR0cmlzdGF0ZSBcJiMzNDtVU0IgR2FkZ2V0IGZ1bmN0aW9ucyBjb25maWd1cmFibGUgdGhyb3VnaCBjb25maWdmc1wmIzM0O1xuIDIzMDpcdFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcbiAyMzE6XHRcdGhlbHBcbiAyMzI6XHRcdCAgQSBMaW51eCBVU0IgXCYjMzQ7Z2FkZ2V0XCYjMzQ7IGNhbiBiZSBzZXQgdXAgdGhyb3VnaCBjb25maWdmcy5cbiAyMzM6XHRcdCAgSWYgdGhpcyBpcyB0aGUgY2FzZSwgdGhlIFVTQiBmdW5jdGlvbnMgKHdoaWNoIGZyb20gdGhlIGhvc3QmIzM5O3NcbiAyMzQ6XHRcdCAgcGVyc3BlY3RpdmUgYXJlIHNlZW4gYXMgaW50ZXJmYWNlcykgYW5kIGNvbmZpZ3VyYXRpb25zIGFyZVxuIDIzNTpcdFx0ICBzcGVjaWZpZWQgc2ltcGx5IGJ5IGNyZWF0aW5nIGFwcHJvcHJpYXRlIGRpcmVjdG9yaWVzIGluIGNvbmZpZ2ZzLlxuIDIzNjpcdFx0ICBBc3NvY2lhdGluZyBmdW5jdGlvbnMgd2l0aCBjb25maWd1cmF0aW9ucyBpcyBkb25lIGJ5IGNyZWF0aW5nXG4gMjM3Olx0XHQgIGFwcHJvcHJpYXRlIHN5bWJvbGljIGxpbmtzLlxuIDIzODpcdFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgRG9jdW1lbnRhdGlvbi91c2IvZ2FkZ2V0X2NvbmZpZ2ZzLnJzdC5cbiAyMzk6XHRcbiAyNDA6XHRjb25maWcgVVNCX0NPTkZJR0ZTX1NFUklBTFxuIDI0MTpcdFx0Ym9vbCBcJiMzNDtHZW5lcmljIHNlcmlhbCBidWxrIGluL291dFwmIzM0O1xuIDI0MjpcdFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbiAyNDM6XHRcdGRlcGVuZHMgb24gVFRZXG4gMjQ0Olx0XHRzZWxlY3QgVVNCX1VfU0VSSUFMXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDEzOjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTk4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUuLi4KCioqSW52ZXN0aWdhdGluZyBVU0JfQ09ORklHRlMgRGVwZW5kZW5jeSBvbiBDT05GSUdGU19GUyoqCgpIbW0sIHRoaXMgaXMgaW50ZXJlc3RpbmcuIEkmIzM5O20gdGFraW5nIGEgY2xvc2UgbG9vayBhdCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYFVTQl9DT05GSUdGU2AgYW5kIGBDT05GSUdGU19GU2AuIEl0JiMzOTtzIG5vdCBpbW1lZGlhdGVseSBvYnZpb3VzIHRoYXQgYFVTQl9DT05GSUdGU2AgKnJlcXVpcmVzKiBgQ09ORklHRlNfRlNgIGRpcmVjdGx5LiBUaGF0JiMzOTtzIGEgYml0IHN1cnByaXNpbmcsIEkgZmlndXJlZCBpdCB3b3VsZCBiZSBhIGhhcmQgZGVwZW5kZW5jeS4gU28sIEkgbmVlZCB0byBkaWcgZGVlcGVyLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHRvIHNlZSBpZiBgQ09ORklHRlNfRlNgIGlzIGltcGxpY2l0bHkgcHVsbGVkIGluIGJ5IHNvbWUgb3RoZXIgY29tcG9uZW50IG9yIGlmIGl0JiMzOTtzIHN0cmljdGx5IG5lY2Vzc2FyeSBmb3IgYFVTQl9DT05GSUdGU2AgdG8gZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXJlJiMzOTtzIGFuIGluZGlyZWN0IGRlcGVuZGVuY3kgaGVyZSwgb3IgaWYgdGhlIGRvY3VtZW50YXRpb24gaXMganVzdCB2YWd1ZS4gVGltZSB0byBpbnZlc3RpZ2F0ZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMTM6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IENPTkZJR0ZTX0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0xNDU9Y29uZmlnIFVTQl9MSUJDT01QT1NJVEVcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE0Ni1cdHRyaXN0YXRlXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNDc6XHRzZWxlY3QgQ09ORklHRlNfRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE0OC1cdGRlcGVuZHMgb24gVVNCX0dBREdFVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjM0MAoJCQkJCQkJb3V0cHV0OiAyMzcKCQkJCQkJCXRob3VnaHRzOiAyNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgVVNCIENvbmZpZ2ZzIGFuZCBVQUMgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBzZWUgdGhhdCBgVVNCX0xJQkNPTVBPU0lURWAgZGlyZWN0bHkgc2VsZWN0cyBgQ09ORklHRlNfRlNgLCBhbmQsIGluIHR1cm4sIGBVU0JfQ09ORklHRlNgIHNlbGVjdHMgYFVTQl9MSUJDT01QT1NJVEVgLiBUaGlzIG1lYW5zIGBDT05GSUdGU19GU2AgaXMgZWZmZWN0aXZlbHkgZ3VhcmFudGVlZCB0byBiZSBlbmFibGVkIGFzIGEgZGVwZW5kZW5jeS4gTm93LCBJIGhhdmUgd2hhdCBJIG5lZWQgdG8gc3VtbWFyaXplIHRoZSByZXN1bHRzLgoKVGhpcyBpcyBhIHNjZW5hcmlvIHdvcnRoIGZ1enppbmcsIHRoYXQgbXVjaCBpcyBjbGVhci4gVGhlIGtleSBmdW5jdGlvbnMgdG8gdGFyZ2V0IGFyZSB0aGUgYGZfdWFjMV9vcHRzX2Nfc3JhdGVfc3RvcmVgLCBgZl91YWMxX29wdHNfcF9zcmF0ZV9zdG9yZWAsIGBmX3VhYzJfb3B0c19jX3NyYXRlX3N0b3JlYCwgYW5kIGBmX3VhYzJfb3B0c19wX3NyYXRlX3N0b3JlYCBmdW5jdGlvbnMsIGFzIGlkZW50aWZpZWQuCgpUbyB0cmlnZ2VyIHRoZSB2dWxuZXJhYmlsaXR5LCBJJiMzOTtsbCBuZWVkIHRvIGVuYWJsZSBhIHN1aXRlIG9mIGNvbmZpZ3VyYXRpb25zOiBgVVNCX0dBREdFVGAsIGBVU0JfRFVNTVlfSENEYCwgYFVTQl9DT05GSUdGU2AsIGBVU0JfQ09ORklHRlNfRl9VQUMxYCwgYFVTQl9DT05GSUdGU19GX1VBQzJgLCBhbmQgYFNORGAuIFRoaXMgY29tYmluYXRpb24gbGlrZWx5IHNldHMgdXAgdGhlIG5lY2Vzc2FyeSBpbmZyYXN0cnVjdHVyZTogYSBVU0IgZ2FkZ2V0IGZyYW1ld29yaywgYSBkdW1teSBob3N0IGNvbnRyb2xsZXIgZm9yIHZpcnR1YWxpemVkIHRlc3RpbmcsIGFuZCB0aGUgY29uZmlnZnMgVUFDIChVU0IgQXVkaW8gQ2xhc3MpIGZ1bmN0aW9uYWxpdGllcy4gVGhlIGBTTkRgIGNvbmZpZ3VyYXRpb24gaXMgbGlrZWx5IHJlbGF0ZWQgdG8gdGhlIHNvdW5kIGluZnJhc3RydWN0dXJlIGFuZCBVQUMgZHJpdmVycy4KClRoZSBjcnV4IG9mIHRoZSBtYXR0ZXIgaXMgdGhlIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBtZW1vcnkgbGVhay4gU3BlY2lmaWNhbGx5LCB0aGUgcHJvYmxlbWF0aWMgbG9naWMgaXMgcm9vdGVkIGluIGNvbmZpZ2ZzIHN0b3JlIGNhbGxiYWNrcyBmb3IgVVNCIEF1ZGlvIENsYXNzIDEgYW5kIDIgZ2FkZ2V0IGRyaXZlcnMuIFRoZSBgc3Ryc2VwYCBmdW5jdGlvbiBpcyB0aGUgY3VscHJpdC4gSXQgbW9kaWZpZXMgdGhlIHBvaW50ZXIgaXQmIzM5O3Mgb3BlcmF0aW5nIG9uLCBsZWFkaW5nIHRvIGFuIGluY29ycmVjdCBga2ZyZWVgIGNhbGwgYW5kIG1lbW9yeSBjb3JydXB0aW9uLiBUaGUgdnVsbmVyYWJpbGl0eSBpcyB0cmlnZ2VyZWQgd2hlbiBjb25maWd1cmluZyBVU0IgZ2FkZ2V0cyB0aHJvdWdoIGNvbmZpZ2ZzLiBHaXZlbiB0aGUgcHJlc2VuY2Ugb2YgYFVTQl9EVU1NWV9IQ0RgLCBJIGNhbiBpbmZlciB0aGlzIGlzIGV4cGxvaXRhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgd2hpY2ggaXMgZXhhY3RseSB0aGUga2luZCBvZiB0ZXN0IGVudmlyb25tZW50IEkmIzM5O20gYWx3YXlzIGxvb2tpbmcgZm9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAxMzowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVNCX0dBREdFVCYjMzQ7LAogICAgJiMzNDtVU0JfRFVNTVlfSENEJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGUyYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlNfRl9VQUMxJiMzNDssCiAgICAmIzM0O1VTQl9DT05GSUdGU19GX1VBQzImIzM0OywKICAgICYjMzQ7U05EJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Zl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlJiMzNDssCiAgICAmIzM0O2ZfdWFjMl9vcHRzX2Nfc3JhdGVfc3RvcmUmIzM0OywKICAgICYjMzQ7Zl91YWMyX29wdHNfcF9zcmF0ZV9zdG9yZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBjb25maWdmcyBzdG9yZSBjYWxsYmFja3MgZm9yIFVTQiBBdWRpbyBDbGFzcyAxIGFuZCAyIGdhZGdldCBkcml2ZXJzLiBUaGUgbGVhayBvY2N1cnMgYmVjYXVzZSBgc3Ryc2VwYCBtb2RpZmllcyB0aGUgcG9pbnRlciwgY2F1c2luZyBga2ZyZWVgIHRvIGZyZWUgdGhlIHdyb25nIGFkZHJlc3MuIEJ5IGtlZXBpbmcgdGhlIG9yaWdpbmFsIHBvaW50ZXIsIHRoZSBtZW1vcnkgaXMgY29ycmVjdGx5IGZyZWVkLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBjb25maWdmcyB3aGVuIGNvbmZpZ3VyaW5nIFVTQiBnYWRnZXRzLCB3aGljaCBpcyBzdXBwb3J0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHRoZSBkdW1teSBIQ0QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0RVTU1ZX0hDRCYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlMmIzM0OywKICAgICYjMzQ7VVNCX0NPTkZJR0ZTX0ZfVUFDMSYjMzQ7LAogICAgJiMzNDtVU0JfQ09ORklHRlNfRl9VQUMyJiMzNDssCiAgICAmIzM0O1NORCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ZfdWFjMV9vcHRzX2Nfc3JhdGVfc3RvcmUmIzM0OywKICAgICYjMzQ7Zl91YWMxX29wdHNfcF9zcmF0ZV9zdG9yZSYjMzQ7LAogICAgJiMzNDtmX3VhYzJfb3B0c19jX3NyYXRlX3N0b3JlJiMzNDssCiAgICAmIzM0O2ZfdWFjMl9vcHRzX3Bfc3JhdGVfc3RvcmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgY29uZmlnZnMgc3RvcmUgY2FsbGJhY2tzIGZvciBVU0IgQXVkaW8gQ2xhc3MgMSBhbmQgMiBnYWRnZXQgZHJpdmVycy4gVGhlIGxlYWsgb2NjdXJzIGJlY2F1c2UgYHN0cnNlcGAgbW9kaWZpZXMgdGhlIHBvaW50ZXIsIGNhdXNpbmcgYGtmcmVlYCB0byBmcmVlIHRoZSB3cm9uZyBhZGRyZXNzLiBCeSBrZWVwaW5nIHRoZSBvcmlnaW5hbCBwb2ludGVyLCB0aGUgbWVtb3J5IGlzIGNvcnJlY3RseSBmcmVlZC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgY29uZmlnZnMgd2hlbiBjb25maWd1cmluZyBVU0IgZ2FkZ2V0cywgd2hpY2ggaXMgc3VwcG9ydGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB0aGUgZHVtbXkgSENELiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDM6MDMuNTg0NjUxMjgzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwODA2OTg1NzE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9HQURHRVRcIixcbiAgICBcIlVTQl9EVU1NWV9IQ0RcIixcbiAgICBcIlVTQl9DT05GSUdGU1wiLFxuICAgIFwiVVNCX0NPTkZJR0ZTX0ZfVUFDMVwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTX0ZfVUFDMlwiLFxuICAgIFwiU05EXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZVwiLFxuICAgIFwiZl91YWMxX29wdHNfcF9zcmF0ZV9zdG9yZVwiLFxuICAgIFwiZl91YWMyX29wdHNfY19zcmF0ZV9zdG9yZVwiLFxuICAgIFwiZl91YWMyX29wdHNfcF9zcmF0ZV9zdG9yZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGNvbmZpZ2ZzIHN0b3JlIGNhbGxiYWNrcyBmb3IgVVNCIEF1ZGlvIENsYXNzIDEgYW5kIDIgZ2FkZ2V0IGRyaXZlcnMuIFRoZSBsZWFrIG9jY3VycyBiZWNhdXNlIGBzdHJzZXBgIG1vZGlmaWVzIHRoZSBwb2ludGVyLCBjYXVzaW5nIGBrZnJlZWAgdG8gZnJlZSB0aGUgd3JvbmcgYWRkcmVzcy4gQnkga2VlcGluZyB0aGUgb3JpZ2luYWwgcG9pbnRlciwgdGhlIG1lbW9yeSBpcyBjb3JyZWN0bHkgZnJlZWQuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgdmlhIGNvbmZpZ2ZzIHdoZW4gY29uZmlndXJpbmcgVVNCIGdhZGdldHMsIHdoaWNoIGlzIHN1cHBvcnRlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdXNpbmcgdGhlIGR1bW15IEhDRC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDM6MDMuNTg0NjU2NDcyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjA0MjIyMzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzYmRmZjE0YjZhN2FhM2YzMTcwNzkwMDc2Y2E5NzFiNTRmNmRkNTA5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMgMTM6MDM6MDIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jXFxuaW5kZXggODVjNTAyZTk4ZjU3Ny4uYmExYTlmNTFjNTQ0YyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmNcXG4rKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmNcXG5AQCAtMTU5NSw2ICsxNTk1LDcgQEAgc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcdFxcXFxcXG4ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0c3RydWN0IGZfdWFjMV9vcHRzICpvcHRzID0gdG9fZl91YWMxX29wdHMoaXRlbSk7XFx0XFx0XFxcXFxcbiBcXHRjaGFyICpzcGxpdF9wYWdlID0gTlVMTDtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGNoYXIgKnNwbGl0X3BhZ2VfYWxsb2MgPSBOVUxMO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0aW50IHJldCA9IC1FSU5WQUw7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRjaGFyICp0b2tlbjtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdHUzMiBudW07XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbkBAIC0xNjA4LDcgKzE2MDksMTIgQEAgc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcdFxcXFxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRpID0gMDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdG1lbXNldChvcHRzLVxcdTAwM2VuYW1lIyNzLCAweDAwLCBzaXplb2Yob3B0cy1cXHUwMDNlbmFtZSMjcykpO1xcdFxcdFxcXFxcXG4tXFx0c3BsaXRfcGFnZSA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRzcGxpdF9wYWdlX2FsbG9jID0ga3N0cmR1cChwYWdlLCBHRlBfS0VSTkVMKTtcXHRcXHRcXHRcXFxcXFxuK1xcdGlmICghc3BsaXRfcGFnZV9hbGxvYykge1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0XFx0cmV0ID0gLUVOT01FTTtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdGdvdG8gZW5kO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0fVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0c3BsaXRfcGFnZSA9IHNwbGl0X3BhZ2VfYWxsb2M7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHR3aGlsZSAoKHRva2VuID0gc3Ryc2VwKFxcdTAwMjZzcGxpdF9wYWdlLCBcXFwiLFxcXCIpKSAhPSBOVUxMKSB7XFx0XFx0XFxcXFxcbiBcXHRcXHRyZXQgPSBrc3RydG91MzIodG9rZW4sIDAsIFxcdTAwMjZudW0pO1xcdFxcdFxcdFxcXFxcXG4gXFx0XFx0aWYgKHJldClcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuQEAgLTE2MTksNyArMTYyNSw3IEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuIFxcdH07XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIGVuZDpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLVxcdGtmcmVlKHNwbGl0X3BhZ2UpO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4rXFx0a2ZyZWUoc3BsaXRfcGFnZV9hbGxvYyk7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNm9wdHMtXFx1MDAzZWxvY2spO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0cmV0dXJuIHJldDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIH1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuY1xcbmluZGV4IDg5Nzc4N2QwODAzYzEuLmM5MmNhYTE0OTQyOGEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jXFxuKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jXFxuQEAgLTIwMTMsNiArMjAxMyw3IEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdHN0cnVjdCBmX3VhYzJfb3B0cyAqb3B0cyA9IHRvX2ZfdWFjMl9vcHRzKGl0ZW0pO1xcdFxcdFxcXFxcXG4gXFx0Y2hhciAqc3BsaXRfcGFnZSA9IE5VTEw7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRjaGFyICpzcGxpdF9wYWdlX2FsbG9jID0gTlVMTDtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdGludCByZXQgPSAtRUlOVkFMO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0Y2hhciAqdG9rZW47XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHR1MzIgbnVtO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5AQCAtMjAyNiw3ICsyMDI3LDEyIEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0aSA9IDA7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBcXHRtZW1zZXQob3B0cy1cXHUwMDNlbmFtZSMjcywgMHgwMCwgc2l6ZW9mKG9wdHMtXFx1MDAzZW5hbWUjI3MpKTtcXHRcXHRcXFxcXFxuLVxcdHNwbGl0X3BhZ2UgPSBrc3RyZHVwKHBhZ2UsIEdGUF9LRVJORUwpO1xcdFxcdFxcdFxcdFxcXFxcXG4rXFx0c3BsaXRfcGFnZV9hbGxvYyA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7XFx0XFx0XFx0XFxcXFxcbitcXHRpZiAoIXNwbGl0X3BhZ2VfYWxsb2MpIHtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdFxcdHJldCA9IC1FTk9NRU07XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbitcXHRcXHRnb3RvIGVuZDtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdH1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdHNwbGl0X3BhZ2UgPSBzcGxpdF9wYWdlX2FsbG9jO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0d2hpbGUgKCh0b2tlbiA9IHN0cnNlcChcXHUwMDI2c3BsaXRfcGFnZSwgXFxcIixcXFwiKSkgIT0gTlVMTCkge1xcdFxcdFxcXFxcXG4gXFx0XFx0cmV0ID0ga3N0cnRvdTMyKHRva2VuLCAwLCBcXHUwMDI2bnVtKTtcXHRcXHRcXHRcXFxcXFxuIFxcdFxcdGlmIChyZXQpXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbkBAIC0yMDM3LDcgKzIwNDMsNyBAQCBzdGF0aWMgc3NpemVfdCBmX3VhYzJfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFx0XFxcXFxcbiBcXHR9O1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiBlbmQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi1cXHRrZnJlZShzcGxpdF9wYWdlKTtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuK1xcdGtmcmVlKHNwbGl0X3BhZ2VfYWxsb2MpO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZvcHRzLVxcdTAwM2Vsb2NrKTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIFxcdHJldHVybiByZXQ7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbiB9XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMzowMzowMy45NDU3Mjk3NjdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMTA0NDU4OTgyNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0RVTU1ZX0hDRFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VQUMxXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VQUMyXCIsXG4gICAgXCJTTkRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmX3VhYzFfb3B0c19jX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzJfb3B0c19jX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzJfb3B0c19wX3NyYXRlX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgY29uZmlnZnMgc3RvcmUgY2FsbGJhY2tzIGZvciBVU0IgQXVkaW8gQ2xhc3MgMSBhbmQgMiBnYWRnZXQgZHJpdmVycy4gVGhlIGxlYWsgb2NjdXJzIGJlY2F1c2UgYHN0cnNlcGAgbW9kaWZpZXMgdGhlIHBvaW50ZXIsIGNhdXNpbmcgYGtmcmVlYCB0byBmcmVlIHRoZSB3cm9uZyBhZGRyZXNzLiBCeSBrZWVwaW5nIHRoZSBvcmlnaW5hbCBwb2ludGVyLCB0aGUgbWVtb3J5IGlzIGNvcnJlY3RseSBmcmVlZC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgY29uZmlnZnMgd2hlbiBjb25maWd1cmluZyBVU0IgZ2FkZ2V0cywgd2hpY2ggaXMgc3VwcG9ydGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB0aGUgZHVtbXkgSENELlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzYmRmZjE0YjZhN2FhM2YzMTcwNzkwMDc2Y2E5NzFiNTRmNmRkNTA5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAxMzowMzowMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuY1xuaW5kZXggODVjNTAyZTk4ZjU3Ny4uYmExYTlmNTFjNTQ0YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuY1xuKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jXG5AQCAtMTU5NSw2ICsxNTk1LDcgQEAgc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbiB7XHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdHN0cnVjdCBmX3VhYzFfb3B0cyAqb3B0cyA9IHRvX2ZfdWFjMV9vcHRzKGl0ZW0pO1x0XHRcXFxuIFx0Y2hhciAqc3BsaXRfcGFnZSA9IE5VTEw7XHRcdFx0XHRcdFxcXG4rXHRjaGFyICpzcGxpdF9wYWdlX2FsbG9jID0gTlVMTDtcdFx0XHRcdFx0XFxcbiBcdGludCByZXQgPSAtRUlOVkFMO1x0XHRcdFx0XHRcdFxcXG4gXHRjaGFyICp0b2tlbjtcdFx0XHRcdFx0XHRcdFxcXG4gXHR1MzIgbnVtO1x0XHRcdFx0XHRcdFx0XFxcbkBAIC0xNjA4LDcgKzE2MDksMTIgQEAgc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbiBcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIFx0aSA9IDA7XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRtZW1zZXQob3B0cy1cdTAwM2VuYW1lIyNzLCAweDAwLCBzaXplb2Yob3B0cy1cdTAwM2VuYW1lIyNzKSk7XHRcdFxcXG4tXHRzcGxpdF9wYWdlID0ga3N0cmR1cChwYWdlLCBHRlBfS0VSTkVMKTtcdFx0XHRcdFxcXG4rXHRzcGxpdF9wYWdlX2FsbG9jID0ga3N0cmR1cChwYWdlLCBHRlBfS0VSTkVMKTtcdFx0XHRcXFxuK1x0aWYgKCFzcGxpdF9wYWdlX2FsbG9jKSB7XHRcdFx0XHRcdFxcXG4rXHRcdHJldCA9IC1FTk9NRU07XHRcdFx0XHRcdFx0XFxcbitcdFx0Z290byBlbmQ7XHRcdFx0XHRcdFx0XFxcbitcdH1cdFx0XHRcdFx0XHRcdFx0XFxcbitcdHNwbGl0X3BhZ2UgPSBzcGxpdF9wYWdlX2FsbG9jO1x0XHRcdFx0XHRcXFxuIFx0d2hpbGUgKCh0b2tlbiA9IHN0cnNlcChcdTAwMjZzcGxpdF9wYWdlLCBcIixcIikpICE9IE5VTEwpIHtcdFx0XFxcbiBcdFx0cmV0ID0ga3N0cnRvdTMyKHRva2VuLCAwLCBcdTAwMjZudW0pO1x0XHRcdFxcXG4gXHRcdGlmIChyZXQpXHRcdFx0XHRcdFx0XFxcbkBAIC0xNjE5LDcgKzE2MjUsNyBAQCBzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXHRcXFxuIFx0fTtcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdFx0XHRcdFx0XHRcdFx0XHRcXFxuIGVuZDpcdFx0XHRcdFx0XHRcdFx0XHRcXFxuLVx0a2ZyZWUoc3BsaXRfcGFnZSk7XHRcdFx0XHRcdFx0XFxcbitcdGtmcmVlKHNwbGl0X3BhZ2VfYWxsb2MpO1x0XHRcdFx0XHRcXFxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm9wdHMtXHUwMDNlbG9jayk7XHRcdFx0XHRcdFxcXG4gXHRyZXR1cm4gcmV0O1x0XHRcdFx0XHRcdFx0XFxcbiB9XHRcdFx0XHRcdFx0XHRcdFx0XFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmNcbmluZGV4IDg5Nzc4N2QwODAzYzEuLmM5MmNhYTE0OTQyOGEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmNcbisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuY1xuQEAgLTIwMTMsNiArMjAxMyw3IEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRzdHJ1Y3QgZl91YWMyX29wdHMgKm9wdHMgPSB0b19mX3VhYzJfb3B0cyhpdGVtKTtcdFx0XFxcbiBcdGNoYXIgKnNwbGl0X3BhZ2UgPSBOVUxMO1x0XHRcdFx0XHRcXFxuK1x0Y2hhciAqc3BsaXRfcGFnZV9hbGxvYyA9IE5VTEw7XHRcdFx0XHRcdFxcXG4gXHRpbnQgcmV0ID0gLUVJTlZBTDtcdFx0XHRcdFx0XHRcXFxuIFx0Y2hhciAqdG9rZW47XHRcdFx0XHRcdFx0XHRcXFxuIFx0dTMyIG51bTtcdFx0XHRcdFx0XHRcdFxcXG5AQCAtMjAyNiw3ICsyMDI3LDEyIEBAIHN0YXRpYyBzc2l6ZV90IGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG4gXHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBcdGkgPSAwO1x0XHRcdFx0XHRcdFx0XHRcXFxuIFx0bWVtc2V0KG9wdHMtXHUwMDNlbmFtZSMjcywgMHgwMCwgc2l6ZW9mKG9wdHMtXHUwMDNlbmFtZSMjcykpO1x0XHRcXFxuLVx0c3BsaXRfcGFnZSA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7XHRcdFx0XHRcXFxuK1x0c3BsaXRfcGFnZV9hbGxvYyA9IGtzdHJkdXAocGFnZSwgR0ZQX0tFUk5FTCk7XHRcdFx0XFxcbitcdGlmICghc3BsaXRfcGFnZV9hbGxvYykge1x0XHRcdFx0XHRcXFxuK1x0XHRyZXQgPSAtRU5PTUVNO1x0XHRcdFx0XHRcdFxcXG4rXHRcdGdvdG8gZW5kO1x0XHRcdFx0XHRcdFxcXG4rXHR9XHRcdFx0XHRcdFx0XHRcdFxcXG4rXHRzcGxpdF9wYWdlID0gc3BsaXRfcGFnZV9hbGxvYztcdFx0XHRcdFx0XFxcbiBcdHdoaWxlICgodG9rZW4gPSBzdHJzZXAoXHUwMDI2c3BsaXRfcGFnZSwgXCIsXCIpKSAhPSBOVUxMKSB7XHRcdFxcXG4gXHRcdHJldCA9IGtzdHJ0b3UzMih0b2tlbiwgMCwgXHUwMDI2bnVtKTtcdFx0XHRcXFxuIFx0XHRpZiAocmV0KVx0XHRcdFx0XHRcdFxcXG5AQCAtMjAzNyw3ICsyMDQzLDcgQEAgc3RhdGljIHNzaXplX3QgZl91YWMyX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcbiBcdH07XHRcdFx0XHRcdFx0XHRcdFxcXG4gXHRcdFx0XHRcdFx0XHRcdFx0XFxcbiBlbmQ6XHRcdFx0XHRcdFx0XHRcdFx0XFxcbi1cdGtmcmVlKHNwbGl0X3BhZ2UpO1x0XHRcdFx0XHRcdFxcXG4rXHRrZnJlZShzcGxpdF9wYWdlX2FsbG9jKTtcdFx0XHRcdFx0XFxcbiBcdG11dGV4X3VubG9jayhcdTAwMjZvcHRzLVx1MDAzZWxvY2spO1x0XHRcdFx0XHRcXFxuIFx0cmV0dXJuIHJldDtcdFx0XHRcdFx0XHRcdFxcXG4gfVx0XHRcdFx0XHRcdFx0XHRcdFxcXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMzowMzowMy45NDU3MzEwODdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDM5MzMzODU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFVTQiBBdWRpbyBHYWRnZXQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCdzIHRvdWNoaW5nIGBmX3VhYzEuY2AgYW5kIGBmX3VhYzIuY2Ag4oCTIHRoYXTigJlzIFVTQiBBdWRpbyBDbGFzcyBnYWRnZXQgY29kZS4gU3RyYWlnaHQgYXdheSwgSSBzZWUgaXQncyBkZWFsaW5nIHdpdGggYSBtZW1vcnkgbGVhaywgd2hpY2ggaXMgYWx3YXlzIHdvcnRoIGEgY2xvc2VyIGxvb2suIEl0IHNlZW1zIHRoaXMgbGVhayBpcyB0aWVkIHRvIGEgbWFjcm8sIHNvbWV0aGluZyBsaWtlIGBVQUMxX0FUVFJJQlVURV9TVFJJTkdgLiBUaGlzIG1hY3JvIGlzIGdlbmVyYXRpbmcgZnVuY3Rpb25zLCBwcm9iYWJseSB0byBoYW5kbGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQgdGhleSBhcmUgbmFtZWQgYGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlYCBhbmQgYGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlYC5cblxuVGhlIGNydXggb2YgdGhlIHByb2JsZW0gc2VlbXMgdG8gYmUgYHN0cnNlcGAuIEFoLCB5ZXMsIEkga25vdyB0aGlzIG9uZSwgaXQgbW9kaWZpZXMgdGhlIGlucHV0IHN0cmluZyBpbiBwbGFjZS4gU28gdGhlIG9yaWdpbmFsIGNvZGUgd2FzIHByb2JhYmx5IHBhc3NpbmcgYHNwbGl0X3BhZ2VgIHRvIGBzdHJzZXBgLCBhbmQgdGhlbiBsYXRlciBjYWxsaW5nIGBrZnJlZShzcGxpdF9wYWdlKWAuIFRoZSBpc3N1ZSBpcywgYHN0cnNlcGAgaXMgY2hhbmdpbmcgdGhlIGNvbnRlbnRzIG9mIGBzcGxpdF9wYWdlYCwgc28gYGtmcmVlYCB3b3VsZCBmcmVlIGFuIGluY29ycmVjdCBwb2ludGVyIG9yLCBwb3RlbnRpYWxseSwgdHJ5IHRvIGZyZWUgTlVMTCBpZiB0aGUgc3RyaW5nIHdhcyBleGhhdXN0ZWQuIFRoaXMgcGF0Y2ggYWRkcmVzc2VzIHRoYXQgYnkga2VlcGluZyBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIHBvaW50ZXIsIGxldCdzIGNhbGwgaXQgYHNwbGl0X3BhZ2VfYWxsb2NgLCBhbmQgZW5zdXJpbmcgdGhhdCdzIHdoYXQgZ2V0cyBwYXNzZWQgdG8gYGtmcmVlYC4gVGhhdCdzIGEgY2xhc3NpYyBhbmQgc29saWQgZml4LlxuXG5Ob3csIEknZCBsaWtlIHRvIHVuZGVyc3RhbmQgdGhlICpzY29wZSogb2YgdGhpcyBjaGFuZ2UgYmV0dGVyLiBJdCB3b3VsZCBiZSBoZWxwZnVsIHRvIHNlZSBleGFjdGx5ICp3aGF0KiB0aG9zZSBnZW5lcmF0ZWQgYF9zdG9yZWAgZnVuY3Rpb25zIGFyZSBkb2luZy4gSSdsbCBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VhcmNoIGZvciBhbGwgb2NjdXJyZW5jZXMgb2YgZnVuY3Rpb25zIG1hdGNoaW5nIHRoZSBwYXR0ZXJuIGBmX3VhYzFfb3B0c18uKl9zdG9yZWAgYW5kIGBmX3VhYzJfb3B0c18uKl9zdG9yZWAuIFNlZWluZyB0aGUgZ2VuZXJhdGVkIGZ1bmN0aW9ucyB3aWxsIHByb3ZpZGUgY3J1Y2lhbCBjb250ZXh0IGFuZCBhbGxvdyBtZSB0byBhc3Nlc3MgdGhlIG92ZXJhbGwgaW1wYWN0IG9mIHRoaXMgZml4LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDI3LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDM6MDkuMzg1MDY2OTQxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzMjg3NzU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZfdWFjMV9vcHRzXy4qX3N0b3JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTUyOD1zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNTQxLVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTU0MjpzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1NDMtXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFx0XFxcXFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jPTE1NzE9c3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFx0XFxcXFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1OTItXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNTkzOnN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1OTQtXFx0XFx0XFx0XFx0XFx0ICBjb25zdCBjaGFyICpwYWdlLCBzaXplX3QgbGVuKVxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNjM2PXN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjQ4LVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY0OTpzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZShzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFx0XFxcXFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjUwLVxcdFxcdFxcdFxcdFxcdCAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGxlbilcXHRcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDEzOjAzOjA5LjQyODM2NTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTY0MDI3MjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgTWFjcm8tR2VuZXJhdGVkIEZ1bmN0aW9uIENvZGUqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbi4gVGhlIGluaXRpYWwgcXVlc3Rpb24gaXMgXCJ3aGF0J3MgdGhlIHVuZGVybHlpbmcgY29kZSBiZWluZyBnZW5lcmF0ZWQgYnkgdGhlc2UgbWFjcm9zP1wiIEknbSB0aGlua2luZywgXCJMZXQncyBjdXQgcmlnaHQgdG8gdGhlIGNoYXNlIGFuZCBmaW5kIG91dC5cIiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgKmFjdHVhbCogaW1wbGVtZW50YXRpb24gb2YgdGhlc2UgZnVuY3Rpb25zLiBJJ20gbm90IGNvbnRlbnQgd2l0aCBqdXN0IGtub3dpbmcgdGhlIGZ1bmN0aW9uJ3Mgc2lnbmF0dXJlIGFuZCBkb2N1bWVudGF0aW9uOyBJIG5lZWQgdG8gc2VlIHRoZSBuaXR0eS1ncml0dHkgZGV0YWlscyBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUuIEtub3dpbmcgdGhlIHNvdXJjZSwgSSBjYW4gZGVkdWNlIG9wdGltaXphdGlvbiBwb3NzaWJpbGl0aWVzIGFuZCBpbmhlcmVudCBsaW1pdGF0aW9ucyBvZiB0aGUgY29kZSwgYXMgd2VsbCBhcyB3aGVyZSB0byBzdGFydCBkZWJ1Z2dpbmcgaW4gdGhlIHVuZm9ydHVuYXRlIGV2ZW50IHRoYXQgdGhlcmUncyBhIHByb2JsZW0uIFRoaXMgbWVhbnMgSSBuZWVkIHRvIGJ5cGFzcyB0aGUgYWJzdHJhY3Rpb24gb2YgdGhlIG1hY3JvLCBhbmQgZGVjb25zdHJ1Y3QgdGhlIGNvZGUgZm9yIGRldGFpbGVkIGFuYWx5c2lzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTY2LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDM6MTIuMzkyMzk1NDgzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MjY1NDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlVBQzFfQVRUUklCVVRFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTUyNT1zdGF0aWMgY29uc3QgY2hhciAqYm9vbF9mbXQgPSBcXFwiJXVcXFxcblxcXCI7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1MjYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE1Mjc6I2RlZmluZSBVQUMxX0FUVFJJQlVURSh0eXBlLCBuYW1lKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTUyOC1zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KFxcdFxcdFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNjMzPUNPTkZJR0ZTX0FUVFIoZl91YWMxX29wdHNfLCBuYW1lKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjM0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjM1OiNkZWZpbmUgVUFDMV9BVFRSSUJVVEVfU1RSSU5HKG5hbWUpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjM2LXN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3Nob3coc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNjY5PUNPTkZJR0ZTX0FUVFIoZl91YWMxX29wdHNfLCBuYW1lKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjcwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjcxOlVBQzFfQVRUUklCVVRFKHUzMiwgY19jaG1hc2spO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjcyLVVBQzFfUkFURV9BVFRSSUJVVEUoY19zcmF0ZSk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2NzM6VUFDMV9BVFRSSUJVVEUodTMyLCBjX3NzaXplKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY3NDpVQUMxX0FUVFJJQlVURSh1MzIsIHBfY2htYXNrKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY3NS1VQUMxX1JBVEVfQVRUUklCVVRFKHBfc3JhdGUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjc2OlVBQzFfQVRUUklCVVRFKHUzMiwgcF9zc2l6ZSk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2Nzc6VUFDMV9BVFRSSUJVVEUodTMyLCByZXFfbnVtYmVyKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY3OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY3OTpVQUMxX0FUVFJJQlVURShib29sLCBwX211dGVfcHJlc2VudCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2ODA6VUFDMV9BVFRSSUJVVEUoYm9vbCwgcF92b2x1bWVfcHJlc2VudCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2ODE6VUFDMV9BVFRSSUJVVEUoczE2LCBwX3ZvbHVtZV9taW4pO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjgyOlVBQzFfQVRUUklCVVRFKHMxNiwgcF92b2x1bWVfbWF4KTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY4MzpVQUMxX0FUVFJJQlVURShzMTYsIHBfdm9sdW1lX3Jlcyk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2ODQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2ODU6VUFDMV9BVFRSSUJVVEUoYm9vbCwgY19tdXRlX3ByZXNlbnQpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjg2OlVBQzFfQVRUUklCVVRFKGJvb2wsIGNfdm9sdW1lX3ByZXNlbnQpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjg3OlVBQzFfQVRUUklCVVRFKHMxNiwgY192b2x1bWVfbWluKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY4ODpVQUMxX0FUVFJJQlVURShzMTYsIGNfdm9sdW1lX21heCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2ODk6VUFDMV9BVFRSSUJVVEUoczE2LCBjX3ZvbHVtZV9yZXMpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNjkwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjkxOlVBQzFfQVRUUklCVVRFX1NUUklORyhmdW5jdGlvbl9uYW1lKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY5Mi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY5MzpVQUMxX0FUVFJJQlVURV9TVFJJTkcocF9pdF9uYW1lKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY5NDpVQUMxX0FUVFJJQlVURV9TVFJJTkcocF9pdF9jaF9uYW1lKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY5NTpVQUMxX0FUVFJJQlVURV9TVFJJTkcocF9vdF9uYW1lKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTY5NjpVQUMxX0FUVFJJQlVURV9TVFJJTkcocF9mdV92b2xfbmFtZSk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2OTctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2OTg6VUFDMV9BVFRSSUJVVEVfU1RSSU5HKGNfaXRfbmFtZSk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2OTk6VUFDMV9BVFRSSUJVVEVfU1RSSU5HKGNfaXRfY2hfbmFtZSk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE3MDA6VUFDMV9BVFRSSUJVVEVfU1RSSU5HKGNfb3RfbmFtZSk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE3MDE6VUFDMV9BVFRSSUJVVEVfU1RSSU5HKGNfZnVfdm9sX25hbWUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYy0xNzAyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMzowMzoxMi40NDA2NjcwNjJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTQ2ODYwNTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2gncyBJbXBhY3QqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSBgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmVgIGZ1bmN0aW9uLiBSaWdodCwgYW5kIHRoYXQgZnVuY3Rpb24gaXMgZ2VuZXJhdGVkIGJ5IHRoZSBgVUFDMV9SQVRFX0FUVFJJQlVURWAgbWFjcm8uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgYW5kIHdoYXQgdGhpcyBtYWNybyBpcyBkb2luZywgc28gSSdsbCBqdW1wIHN0cmFpZ2h0IHRvIGxpbmUgMTU5NSB3aXRoaW4gYGZfdWFjMS5jYC4gVGhhdCdzIHdoZXJlIHRoZSBtYWNybyBkZWZpbml0aW9uIHNob3VsZCBiZS4gTGV0J3Mgc2VlIHdoYXQncyBoYXBwZW5pbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlYCBmdW5jdGlvbiBhbmQgaG93IHRoZSBtYWNybyBpbnRlcmFjdHMgdG8gZGV0ZXJtaW5lIHdoYXQgaW1wbGljYXRpb25zIHRoaXMgcGF0Y2ggaGFzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODcxLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDM6MTUuNTg3NTMwNzgxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0MTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNTcwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTU3MDpcXHQjZGVmaW5lIFVBQzFfUkFURV9BVFRSSUJVVEUobmFtZSlcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTU3MTpcXHRzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuMTU3MjpcXHRcXHRcXHRcXHRcXHRcXHQgY2hhciAqcGFnZSlcXHRcXHRcXHRcXFxcXFxuMTU3MzpcXHR7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1NzQ6XFx0XFx0c3RydWN0IGZfdWFjMV9vcHRzICpvcHRzID0gdG9fZl91YWMxX29wdHMoaXRlbSk7XFx0XFx0XFxcXFxcbjE1NzU6XFx0XFx0aW50IHJlc3VsdCA9IDA7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1NzY6XFx0XFx0aW50IGk7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1Nzc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1Nzg6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2b3B0cy1cXHUwMDNlbG9jayk7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1Nzk6XFx0XFx0cGFnZVswXSA9ICdcXFxcMCc7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1ODA6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFVBQ19NQVhfUkFURVM7IGkrKykge1xcdFxcdFxcdFxcdFxcXFxcXG4xNTgxOlxcdFxcdFxcdGlmIChvcHRzLVxcdTAwM2VuYW1lIyNzW2ldID09IDApXFx0XFx0XFx0XFx0XFxcXFxcbjE1ODI6XFx0XFx0XFx0XFx0YnJlYWs7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1ODM6XFx0XFx0XFx0cmVzdWx0ICs9IHNwcmludGYocGFnZSArIHN0cmxlbihwYWdlKSwgXFxcIiV1LFxcXCIsXFx0XFx0XFxcXFxcbjE1ODQ6XFx0XFx0XFx0XFx0XFx0b3B0cy1cXHUwMDNlbmFtZSMjc1tpXSk7XFx0XFx0XFx0XFxcXFxcbjE1ODU6XFx0XFx0fVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNTg2OlxcdFxcdGlmIChzdHJsZW4ocGFnZSkgXFx1MDAzZSAwKVxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNTg3OlxcdFxcdFxcdHBhZ2Vbc3RybGVuKHBhZ2UpIC0gMV0gPSAnXFxcXG4nO1xcdFxcdFxcdFxcdFxcXFxcXG4xNTg4OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2b3B0cy1cXHUwMDNlbG9jayk7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1ODk6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1OTA6XFx0XFx0cmV0dXJuIHJlc3VsdDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTU5MTpcXHR9XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1OTI6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1OTM6XFx0c3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFxcdFxcXFxcXG4xNTk0OlxcdFxcdFxcdFxcdFxcdFxcdCAgY29uc3QgY2hhciAqcGFnZSwgc2l6ZV90IGxlbilcXHRcXFxcXFxuMTU5NTpcXHR7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1OTY6XFx0XFx0c3RydWN0IGZfdWFjMV9vcHRzICpvcHRzID0gdG9fZl91YWMxX29wdHMoaXRlbSk7XFx0XFx0XFxcXFxcbjE1OTc6XFx0XFx0Y2hhciAqc3BsaXRfcGFnZSA9IE5VTEw7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1OTg6XFx0XFx0Y2hhciAqc3BsaXRfcGFnZV9hbGxvYyA9IE5VTEw7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE1OTk6XFx0XFx0aW50IHJldCA9IC1FSU5WQUw7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE2MDA6XFx0XFx0Y2hhciAqdG9rZW47XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE2MDE6XFx0XFx0dTMyIG51bTtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYwMjpcXHRcXHRpbnQgaTtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYwMzpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYwNDpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZvcHRzLVxcdTAwM2Vsb2NrKTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYwNTpcXHRcXHRpZiAob3B0cy1cXHUwMDNlcmVmY250KSB7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE2MDY6XFx0XFx0XFx0cmV0ID0gLUVCVVNZO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjA3OlxcdFxcdFxcdGdvdG8gZW5kO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjA4OlxcdFxcdH1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYwOTpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYxMDpcXHRcXHRpID0gMDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYxMTpcXHRcXHRtZW1zZXQob3B0cy1cXHUwMDNlbmFtZSMjcywgMHgwMCwgc2l6ZW9mKG9wdHMtXFx1MDAzZW5hbWUjI3MpKTtcXHRcXHRcXFxcXFxuMTYxMjpcXHRcXHRzcGxpdF9wYWdlX2FsbG9jID0ga3N0cmR1cChwYWdlLCBHRlBfS0VSTkVMKTtcXHRcXHRcXHRcXFxcXFxuMTYxMzpcXHRcXHRpZiAoIXNwbGl0X3BhZ2VfYWxsb2MpIHtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYxNDpcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjE1OlxcdFxcdFxcdGdvdG8gZW5kO1xcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjE2OlxcdFxcdH1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYxNzpcXHRcXHRzcGxpdF9wYWdlID0gc3BsaXRfcGFnZV9hbGxvYztcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYxODpcXHRcXHR3aGlsZSAoKHRva2VuID0gc3Ryc2VwKFxcdTAwMjZzcGxpdF9wYWdlLCBcXFwiLFxcXCIpKSAhPSBOVUxMKSB7XFx0XFx0XFxcXFxcbjE2MTk6XFx0XFx0XFx0cmV0ID0ga3N0cnRvdTMyKHRva2VuLCAwLCBcXHUwMDI2bnVtKTtcXHRcXHRcXHRcXFxcXFxuMTYyMDpcXHRcXHRcXHRpZiAocmV0KVxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjIxOlxcdFxcdFxcdFxcdGdvdG8gZW5kO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjIyOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjIzOlxcdFxcdFxcdG9wdHMtXFx1MDAzZW5hbWUjI3NbaSsrXSA9IG51bTtcXHRcXHRcXHRcXHRcXFxcXFxuMTYyNDpcXHRcXHRcXHRyZXQgPSBsZW47XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE2MjU6XFx0XFx0fTtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYyNjpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYyNzpcXHRlbmQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE2Mjg6XFx0XFx0a2ZyZWUoc3BsaXRfcGFnZV9hbGxvYyk7XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE2Mjk6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZvcHRzLVxcdTAwM2Vsb2NrKTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYzMDpcXHRcXHRyZXR1cm4gcmV0O1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjMxOlxcdH1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYzMjpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYzMzpcXHRDT05GSUdGU19BVFRSKGZfdWFjMV9vcHRzXywgbmFtZSlcXG4xNjM0OlxcdFxcbjE2MzU6XFx0I2RlZmluZSBVQUMxX0FUVFJJQlVURV9TVFJJTkcobmFtZSlcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTYzNjpcXHRzdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuMTYzNzpcXHRcXHRcXHRcXHRcXHRcXHQgY2hhciAqcGFnZSlcXHRcXHRcXHRcXFxcXFxuMTYzODpcXHR7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE2Mzk6XFx0XFx0c3RydWN0IGZfdWFjMV9vcHRzICpvcHRzID0gdG9fZl91YWMxX29wdHMoaXRlbSk7XFx0XFx0XFxcXFxcbjE2NDA6XFx0XFx0aW50IHJlc3VsdDtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTY0MTpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTY0MjpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZvcHRzLVxcdTAwM2Vsb2NrKTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTY0MzpcXHRcXHRyZXN1bHQgPSBzeXNmc19lbWl0KHBhZ2UsIFxcXCIlc1xcXCIsIG9wdHMtXFx1MDAzZW5hbWUpOyAgICAgICAgXFx0ICAgICAgICBcXFxcXFxuMTY0NDpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm9wdHMtXFx1MDAzZWxvY2spO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjQ1OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjQ2OlxcdFxcdHJldHVybiByZXN1bHQ7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE2NDc6XFx0fVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjQ4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjQ5OlxcdHN0YXRpYyBzc2l6ZV90IGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlKHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuMTY1MDpcXHRcXHRcXHRcXHRcXHRcXHQgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBsZW4pXFx0XFxcXFxcbjE2NTE6XFx0e1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjUyOlxcdFxcdHN0cnVjdCBmX3VhYzFfb3B0cyAqb3B0cyA9IHRvX2ZfdWFjMV9vcHRzKGl0ZW0pO1xcdFxcdFxcXFxcXG4xNjUzOlxcdFxcdGludCByZXQgPSAwO1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjU0OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjU1OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNm9wdHMtXFx1MDAzZWxvY2spO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjU2OlxcdFxcdGlmIChvcHRzLVxcdTAwM2VyZWZjbnQpIHtcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTY1NzpcXHRcXHRcXHRyZXQgPSAtRUJVU1k7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE2NTg6XFx0XFx0XFx0Z290byBlbmQ7XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE2NTk6XFx0XFx0fVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjYwOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjYxOlxcdFxcdHJldCA9IHNjbnByaW50ZihvcHRzLVxcdTAwM2VuYW1lLCBtaW4oc2l6ZW9mKG9wdHMtXFx1MDAzZW5hbWUpLCBsZW4pLFxcdFxcXFxcXG4xNjYyOlxcdFxcdFxcdFxcdFxcXCIlc1xcXCIsIHBhZ2UpO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjYzOlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjY0OlxcdGVuZDpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuMTY2NTpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNm9wdHMtXFx1MDAzZWxvY2spO1xcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjY2OlxcdFxcdHJldHVybiByZXQ7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbjE2Njc6XFx0fVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjY4OlxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG4xNjY5OlxcdENPTkZJR0ZTX0FUVFIoZl91YWMxX29wdHNfLCBuYW1lKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMzowMzoxNS41ODc2NjYyMTJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTQ5NzIyNzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVUFDMSBSYXRlIEF0dHJpYnV0ZXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIGEgc3BlY2lmaWMgcmF0ZSBhdHRyaWJ1dGUgZGVmaW5lZCBhcyBgVUFDMV9SQVRFX0FUVFJJQlVURShuYW1lKWAuIFJpZ2h0IGF3YXksIEkgc2VlIHR3byBrZXkgaW5zdGFuY2VzIG9mIHRoaXMgYXR0cmlidXRlOiBgVUFDMV9SQVRFX0FUVFJJQlVURShjX3NyYXRlKWAgYW5kIGBVQUMxX1JBVEVfQVRUUklCVVRFKHBfc3JhdGUpYC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGVzZSBhcmUgbGlrZWx5IHJlbGF0ZWQgdG8gc29tZSBraW5kIG9mIHNhbXBsZSByYXRlIOKAkyBwZXJoYXBzICdjJyBmb3IgY2FwdHVyZSBhbmQgJ3AnIGZvciBwbGF5YmFjaywgb3Igc29tZXRoaW5nIGFsb25nIHRob3NlIGxpbmVzLlxuXG5Ob3csIHdpdGggdGhvc2UgYXR0cmlidXRlcyBpbiBwbGFjZSwgdGhlIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb25zIG11c3QgYmUgYGZfdWFjMV9vcHRzX2Nfc3JhdGVfc3RvcmVgIGFuZCBgZl91YWMxX29wdHNfcF9zcmF0ZV9zdG9yZWAuIFRoZSBuYW1pbmcgY29udmVudGlvbiBpcyBwcmV0dHkgY2xlYXI6IGBmX3VhYzFfb3B0c18uLi5fc3RvcmVgLCB3aXRoIFwiLi4uX3N0b3JlXCIgZnVuY3Rpb25zLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHVuZG91YnRlZGx5IGhhbmRsaW5nIHRoZSBzdG9yYWdlIG9yIHNldHRpbmcgb2YgdGhlIGNhcHR1cmUgYW5kIHBsYXliYWNrIHNhbXBsZSByYXRlcywgcHJlc3VtYWJseSB3aXRoaW4gc29tZSBraW5kIG9mIG9wdGlvbnMgc3RydWN0dXJlIHNwZWNpZmljIHRvIFVBQzEuIFRoYXQncyBnb29kIHByYWN0aWNlLlxuXG5JIGFsc28gaGF2ZSBhbiBpbmRpY2F0b3IgZm9yIGBmX3VhYzIuY2AsIHNvIHRoZXJlIGFyZSBsaWtlbHkgc2ltaWxhciByYXRlIGF0dHJpYnV0ZXMgYW5kIGZ1bmN0aW9ucyBpbiBgZl91YWMyLmNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NzUyLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDM6MjAuMTM3MzkwOThaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MjE5MTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlVBQzJfUkFURV9BVFRSSUJVVEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYz0xOTg2PUNPTkZJR0ZTX0FUVFIoZl91YWMyX29wdHNfLCBuYW1lKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0xOTg3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYzoxOTg4OiNkZWZpbmUgVUFDMl9SQVRFX0FUVFJJQlVURShuYW1lKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMtMTk4OS1zdGF0aWMgc3NpemVfdCBmX3VhYzJfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM9MjA5Mj1VQUMyX0FUVFJJQlVURSh1MzIsIHBfY2htYXNrKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM6MjA5MzpVQUMyX1JBVEVfQVRUUklCVVRFKHBfc3JhdGUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0yMDk0LVVBQzJfQVRUUklCVVRFKHUzMiwgcF9zc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM9MjA5Nj1VQUMyX0FUVFJJQlVURSh1MzIsIGNfY2htYXNrKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM6MjA5NzpVQUMyX1JBVEVfQVRUUklCVVRFKGNfc3JhdGUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0yMDk4LVVBQzJfQVRUUklCVVRFX1NZTkMoY19zeW5jKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDM6MjAuMTg2NjE5MTc5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MDk0Mzc2NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBVU0IgQXVkaW8gQ2xhc3MgR2FkZ2V0IEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoZXNlIGZ1bmN0aW9ucyBpbiBtaW5kOiBgZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZWAsIGBmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlYCwgYGZfdWFjMl9vcHRzX2Nfc3JhdGVfc3RvcmVgLCBhbmQgYGZfdWFjMl9vcHRzX3Bfc3JhdGVfc3RvcmVgLiBJbW1lZGlhdGVseSwgSSBzZWUgdGhhdCB0aGV5J3JlIGFsbCBgY29uZmlnZnNgIHN0b3JlIGNhbGxiYWNrcywgc3BlY2lmaWNhbGx5IGZvciBVU0IgQXVkaW8gQ2xhc3MgMSBhbmQgMiBnYWRnZXRzLiBUaGlzIG1lYW5zIHRoZXkgYXJlIGludm9sdmVkIGluIGhvdyB0aGUgVVNCIGF1ZGlvIGdhZGdldHMgYXJlIGNvbmZpZ3VyZWQgdmlhIGBjb25maWdmc2AsIHdoaWNoIGlzIGZhaXJseSBzdGFuZGFyZCBhbmQgZXhwZWN0ZWQuXG5cbk5vdywgYSBrZXkgcXVlc3Rpb24gcG9wcyB1cDogQ2FuIHRoZXNlIGZ1bmN0aW9ucyBldmVuIGJlIGV4ZXJjaXNlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBXaXRoIHRoZSBwcmV2YWxlbmNlIG9mIHN5c3RlbXMgbGlrZSBRRU1VIGFuZCBjbG91ZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0UsIEkgd2FudCB0byBiZSBjZXJ0YWluIGFib3V0IHRoZSByZWFjaGFiaWxpdHkgb2YgdGhpcyBjb2RlLiBGb3J0dW5hdGVseSwgdGhlIGFuc3dlciBpcyB5ZXMuIFRoZSB1c2Ugb2YgYGR1bW15X2hjZGAgKHRoZSBVU0IgZ2FkZ2V0IGR1bW15IGRyaXZlcikgYWxsb3dzIGZvciBjb21wbGV0ZSBlbXVsYXRpb24gb2YgVVNCIGdhZGdldHMuIFRoaXMgaXMgZXhhY3RseSBob3cgdGhlIGBzeXprYWxsZXJgIFVTQiBmdXp6ZXIgaXMgdXNlZCB0byBmaW5kIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGVzZSBnYWRnZXQgZHJpdmVycy4gVGhhdCBtYWtlcyB0aGluZ3MgcHJvbWlzaW5nIGZvciB0ZXN0aW5nLlxuXG5HaXZlbiB0aGUgcm9sZSBvZiBgY29uZmlnZnNgIGluIGNvbmZpZ3VyaW5nIFVTQiBnYWRnZXRzLCBpdCdzIGEgZ29vZCBwbGFjZSB0byBzdGFydCwgc28gSSdsbCBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgYGZfdWFjMS5jYCBhbmQgYGZfdWFjMi5jYC4gVGhhdCBzaG91bGQgY2xhcmlmeSBhbnkgYnVpbGQgZGVwZW5kZW5jaWVzIG9yIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHdoaWNoIG1pZ2h0IGFmZmVjdCB0aGVpciBhdmFpbGFiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1NTEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDM6MjUuMDk2MDU5MzEyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTk4NDkxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmX3VhYzFcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZT0zNj1vYmotJChDT05GSUdfVVNCX1VfQVVESU8pXFx0Kz0gdV9hdWRpby5vXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlOjM3OnVzYl9mX3VhYzEteVxcdFxcdFxcdDo9IGZfdWFjMS5vXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlOjM4Om9iai0kKENPTkZJR19VU0JfRl9VQUMxKVxcdCs9IHVzYl9mX3VhYzEub1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZS0zOS11c2JfZl91YWMxX2xlZ2FjeS15XFx0XFx0Oj0gZl91YWMxX2xlZ2FjeS5vIHVfdWFjMV9sZWdhY3kub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMzowMzoyNS4xNDIwNTA0MDFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMxNTk1NDA2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCBJJ20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKkRlbHZpbmcgaW50byB0aGUgYGZfdWFjMi5vYCBGaWxlKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgc2VlIHdlJ3JlIGxvb2tpbmcgYXQgYGZfdWFjMi5vYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzcyBnb2VzIHNvbWV0aGluZyBsaWtlIHRoaXM6IEkga25vdyB3aGF0IHRoZSBmaWxlIHR5cGUgbWVhbnMgc28gSSdtIGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgd2hhdCBpdCBtaWdodCBjb250YWluLiBJIHdvbmRlciB3aGF0IHRoZSBjb250ZXh0IGlzLiBXaGF0IGlzIHRoaXMgbW9kdWxlIHJlc3BvbnNpYmxlIGZvcj8gV2hhdCBkb2VzIFwiVUFDMlwiIHN0YW5kIGZvciwgaW4gdGhpcyBjYXNlPyBJcyBpdCByZWxhdGVkIHRvIFVzZXIgQWNjb3VudCBDb250cm9sIHZlcnNpb24gMj8gT3IgVXNlciBBY2Nlc3MgQ29udHJvbD8gT3Igc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50PyBJdCdzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpYyBub21lbmNsYXR1cmUgd2l0aGluIHRoaXMgY29kZWJhc2UuIFdoYXQgZGVwZW5kZW5jaWVzIGRvZXMgdGhpcyBtb2R1bGUgaGF2ZT8gV2hhdCBmdW5jdGlvbnMgYXJlIGxpa2VseSBkZWZpbmVkIHdpdGhpbiBpdCwgYmFzZWQgb24gaXRzIG5hbWluZyBjb252ZW50aW9uPyBJ4oCZbGwgbmVlZCB0byBmaWd1cmUgb3V0IGl0cyByb2xlIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbS4gSSdsbCBwcm9iYWJseSBzdGFydCBieSBsb29raW5nIGZvciBoZWFkZXIgZmlsZXMgdGhhdCBpbmNsdWRlIGRlZmluaXRpb25zIGFuZCBkYXRhIHN0cnVjdHVyZXMgdGhhdCB3aWxsIG1ha2UgdGhlIGludGVybmFsIGxvZ2ljIG9mIHRoaXMgb2JqZWN0IGNvZGUgY2xlYXIgdG8gbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyNzEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMzowMzoyOC40NTgwMDY5NjhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTI2MjY3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmX3VhYzJcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZT00MD1vYmotJChDT05GSUdfVVNCX0ZfVUFDMV9MRUdBQ1kpXFx0Kz0gdXNiX2ZfdWFjMV9sZWdhY3kub1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZTo0MTp1c2JfZl91YWMyLXlcXHRcXHRcXHQ6PSBmX3VhYzIub1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9NYWtlZmlsZTo0MjpvYmotJChDT05GSUdfVVNCX0ZfVUFDMilcXHQrPSB1c2JfZl91YWMyLm9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vTWFrZWZpbGUtNDMtdXNiX2ZfdXZjLXlcXHRcXHRcXHQ6PSBmX3V2Yy5vIHV2Y19xdWV1ZS5vIHV2Y192NGwyLm8gdXZjX3ZpZGVvLm8gdXZjX2NvbmZpZ2ZzLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDM6MjguNjk5Mjc0MzM0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2Mjg3ODM4MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSwgbXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGVzZSB0d28gc3BlY2lmaWMgY29uZmlndXJhdGlvbnM6IGBDT05GSUdfVVNCX0ZfVUFDMWAgYW5kIGBDT05GSUdfVVNCX0ZfVUFDMmAuIE15IHByaW1hcnkgZ29hbCBpcyB0byB1bmRlcnN0YW5kIHRoZWlyIGRlcGVuZGVuY2llcy4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIHJlbGF0ZWQgdG8gVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5LiBUaGUgZmlyc3QgcGxhY2UgSSdsbCBsb29rIGlzIHdpdGhpbiB0aGUgbWFpbiBgZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdgIGZpbGUuIEknbGwgdGhlbiBleHBhbmQgbXkgc2VhcmNoIHRvIGluY2x1ZGUgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ2AgYW5kIGBkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vS2NvbmZpZ2AuIEl0J3MgaGlnaGx5IGxpa2VseSB0aGUgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIGFyZSBkZWZpbmVkIHdpdGhpbiBvbmUgb2YgdGhvc2UgZmlsZXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgb3RoZXIgY29uZmlndXJhdGlvbnMgb3Iga2VybmVsIGZlYXR1cmVzIHRoZXNlIFVBQyBzZXR0aW5ncyByZWx5IHVwb24sIG9yIGFueSBzcGVjaWZpYyBVU0IgY29udHJvbGxlciBvciBnYWRnZXQgZnJhbWV3b3JrIGRlcGVuZGVuY2llcy4gS25vd2luZyB0aGVzZSByZWxhdGlvbnNoaXBzIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRvIGNvbmZpZ3VyZSB0aGlzIHN5c3RlbSBwcm9wZXJseS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTczMywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDEzOjAzOjMyLjMyODA2MDYzN1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg3NjAzMzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9GX1VBQzFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0xOTI9Y29uZmlnIFVTQl9GX0ZTXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xOTUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTk2OmNvbmZpZyBVU0JfRl9VQUMxXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTk3LVxcdHRyaXN0YXRlXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTk4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjE5OTpjb25maWcgVVNCX0ZfVUFDMV9MRUdBQ1lcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yMDAtXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDM6MzIuMzc2ODI2MjI2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1ODg1NzQ1NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIHRoZSBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBnbyBzdHJhaWdodCB0byBgZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdgLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHRoZSBhcmVhIGFyb3VuZCBsaW5lIDE5Ni4gSSdtIGFzc3VtaW5nIHRoYXQncyB3aGVyZSBzb21lIGludGVyZXN0aW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgbGlrZWx5IHRvIGJlIGRlZmluZWQsIHBlcmhhcHMgcmVsYXRlZCB0byBhIHBhcnRpY3VsYXIgZ2FkZ2V0IGZ1bmN0aW9uIG9yIGNvbnRyb2xsZXIgc3VwcG9ydC4gSSdtIGhvcGluZyB0byBnZXQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgaG93IGEgc3BlY2lmaWMgZ2FkZ2V0IGZlYXR1cmUgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgbWlnaHQgYmUgYXQgcGxheS4gSSdtIHJlYWR5IHRvIHBhcnNlIHRoZSBjb25maWcgc3ludGF4IGFuZCB1bmRlcnN0YW5kIHRoZSBsb2dpYyBmbG93IGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTg3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDM6MzYuOTY1NDAzNTAzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3MzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE5MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE5MDpcXHRcXHR0cmlzdGF0ZVxcbiAxOTE6XFx0XFxuIDE5MjpcXHRjb25maWcgVVNCX0ZfRlNcXG4gMTkzOlxcdFxcdHNlbGVjdCBETUFfU0hBUkVEX0JVRkZFUlxcbiAxOTQ6XFx0XFx0dHJpc3RhdGVcXG4gMTk1OlxcdFxcbiAxOTY6XFx0Y29uZmlnIFVTQl9GX1VBQzFcXG4gMTk3OlxcdFxcdHRyaXN0YXRlXFxuIDE5ODpcXHRcXG4gMTk5OlxcdGNvbmZpZyBVU0JfRl9VQUMxX0xFR0FDWVxcbiAyMDA6XFx0XFx0dHJpc3RhdGVcXG4gMjAxOlxcdFxcbiAyMDI6XFx0Y29uZmlnIFVTQl9GX1VBQzJcXG4gMjAzOlxcdFxcdHRyaXN0YXRlXFxuIDIwNDpcXHRcXG4gMjA1OlxcdGNvbmZpZyBVU0JfRl9VVkNcXG4gMjA2OlxcdFxcdHRyaXN0YXRlXFxuIDIwNzpcXHRcXHRzZWxlY3QgVVZDX0NPTU1PTlxcbiAyMDg6XFx0XFxuIDIwOTpcXHRjb25maWcgVVNCX0ZfTUlESVxcbiAyMTA6XFx0XFx0dHJpc3RhdGVcXG4gMjExOlxcdFxcbiAyMTI6XFx0Y29uZmlnIFVTQl9GX01JREkyXFxuIDIxMzpcXHRcXHR0cmlzdGF0ZVxcbiAyMTQ6XFx0XFx0c2VsZWN0IFNORF9VTVBcXG4gMjE1OlxcdFxcdHNlbGVjdCBTTkRfVU1QX0xFR0FDWV9SQVdNSURJXFxuIDIxNjpcXHRcXG4gMjE3OlxcdGNvbmZpZyBVU0JfRl9ISURcXG4gMjE4OlxcdFxcdHRyaXN0YXRlXFxuIDIxOTpcXHRcXG4gMjIwOlxcdGNvbmZpZyBVU0JfRl9QUklOVEVSXFxuIDIyMTpcXHRcXHR0cmlzdGF0ZVxcbiAyMjI6XFx0XFxuIDIyMzpcXHRjb25maWcgVVNCX0ZfVENNXFxuIDIyNDpcXHRcXHR0cmlzdGF0ZVxcbiAyMjU6XFx0XFxuIDIyNjpcXHQjIHRoaXMgZmlyc3Qgc2V0IG9mIGRyaXZlcnMgYWxsIGRlcGVuZCBvbiBidWxrLWNhcGFibGUgaGFyZHdhcmUuXFxuIDIyNzpcXHRcXG4gMjI4OlxcdGNvbmZpZyBVU0JfQ09ORklHRlNcXG4gMjI5OlxcdFxcdHRyaXN0YXRlIFxcXCJVU0IgR2FkZ2V0IGZ1bmN0aW9ucyBjb25maWd1cmFibGUgdGhyb3VnaCBjb25maWdmc1xcXCJcXG4gMjMwOlxcdFxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuIDIzMTpcXHRcXHRoZWxwXFxuIDIzMjpcXHRcXHQgIEEgTGludXggVVNCIFxcXCJnYWRnZXRcXFwiIGNhbiBiZSBzZXQgdXAgdGhyb3VnaCBjb25maWdmcy5cXG4gMjMzOlxcdFxcdCAgSWYgdGhpcyBpcyB0aGUgY2FzZSwgdGhlIFVTQiBmdW5jdGlvbnMgKHdoaWNoIGZyb20gdGhlIGhvc3Qnc1xcbiAyMzQ6XFx0XFx0ICBwZXJzcGVjdGl2ZSBhcmUgc2VlbiBhcyBpbnRlcmZhY2VzKSBhbmQgY29uZmlndXJhdGlvbnMgYXJlXFxuIDIzNTpcXHRcXHQgIHNwZWNpZmllZCBzaW1wbHkgYnkgY3JlYXRpbmcgYXBwcm9wcmlhdGUgZGlyZWN0b3JpZXMgaW4gY29uZmlnZnMuXFxuIDIzNjpcXHRcXHQgIEFzc29jaWF0aW5nIGZ1bmN0aW9ucyB3aXRoIGNvbmZpZ3VyYXRpb25zIGlzIGRvbmUgYnkgY3JlYXRpbmdcXG4gMjM3OlxcdFxcdCAgYXBwcm9wcmlhdGUgc3ltYm9saWMgbGlua3MuXFxuIDIzODpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBEb2N1bWVudGF0aW9uL3VzYi9nYWRnZXRfY29uZmlnZnMucnN0LlxcbiAyMzk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDEzOjAzOjM2Ljk2NTQ5MjkyM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTExODk1NTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUgd2hhdCdzIGdvaW5nIG9uIGhlcmUuXG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIFVTQiBBdWRpbyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgc28gSSdtIG5vdGljaW5nIHRoYXQgYFVTQl9GX1VBQzFgIGFuZCBgVVNCX0ZfVUFDMmAgYXJlIGJlaW5nIGNob3NlbiwgYnV0IG5vdCBleHBsaWNpdGx5IGJ5IG1lLiBNeSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgc29tZSBvdGhlciBjb25maWd1cmF0aW9uIG9yIGEgaGlnaGVyLWxldmVsIHNldHRpbmcgbXVzdCBiZSByZXNwb25zaWJsZSBmb3Igc2VsZWN0aW5nIHRob3NlIHNwZWNpZmljIFVTQiBBdWRpbyBDbGFzcyB2ZXJzaW9ucy4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgdGhlIGRlcGVuZGVuY2llcyBhbmQgZmlndXJlIG91dCB0aGUgZGVjaXNpb24tbWFraW5nIHByb2Nlc3MuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgcmVsZXZhbnQgY29kZSBhbmQgY29uZmlndXJhdGlvbnMgdG8gaWRlbnRpZnkgdGhlIHBvaW50IG9mIG9yaWdpbiBmb3IgdGhlc2Ugc2VsZWN0aW9ucy4gVGltZSB0byBwdXQgb24gbXkgZGV0ZWN0aXZlIGhhdCBhbmQgZ28gaHVudGluZyBmb3IgdGhlIHJvb3QgY2F1c2UuIExldCdzIHNlZSB3aGF0IHNlbGVjdHMgdGhlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwMDgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDEzOjAzOjQ0Ljg3NzM5MTM3OVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE0NDExMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IFVTQl9GX1VBQzFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zODE9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4Ny1cXHRzZWxlY3QgVVNCX1VfQVVESU9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozODg6XFx0c2VsZWN0IFVTQl9GX1VBQzFcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODktXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9Mzk5PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxX0xFR0FDWVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDA0LVxcdHNlbGVjdCBTTkRfUENNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDA1OlxcdHNlbGVjdCBVU0JfRl9VQUMxX0xFR0FDWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwNi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NzU9Y29uZmlnIFVTQl9BVURJT1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTc5LVxcdHNlbGVjdCBTTkRfUENNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjgwOlxcdHNlbGVjdCBVU0JfRl9VQUMxIGlmIChHQURHRVRfVUFDMSBcXHUwMDI2XFx1MDAyNiAhR0FER0VUX1VBQzFfTEVHQUNZKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo4MTpcXHRzZWxlY3QgVVNCX0ZfVUFDMV9MRUdBQ1kgaWYgKEdBREdFVF9VQUMxIFxcdTAwMjZcXHUwMDI2IEdBREdFVF9VQUMxX0xFR0FDWSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctODItXFx0c2VsZWN0IFVTQl9GX1VBQzIgaWYgIUdBREdFVF9VQUMxXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDEzOjAzOjQ0LjkyODgzNjk3OFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODUyMDE5MDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFraW5nIG9uIHRoZSBwZXJzb25hIHlvdSByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgVVNCIEF1ZGlvIENsYXNzIDIgTGFuZHNjYXBlKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGb3IgYFVTQl9GX1VBQzJgLi4uIHRoaXMgaXMgd2hlcmUgdGhpbmdzIGdldCBpbnRlcmVzdGluZy4gV2UncmUgZGVhbGluZyB3aXRoIFVTQiBBdWRpbyBDbGFzcyAyLiBUaGF0J3MgYSBzb2xpZCBzdGFuZGFyZCwgYnV0IGl0IG9wZW5zIGEgd2hvbGUgY2FuIG9mIHdvcm1zIGluIHRlcm1zIG9mIGl0cyBpbnRyaWNhY2llcy4gSSBuZWVkIHRvIGJlIHByZWNpc2UgaGVyZS5cblxuRmlyc3QsIEknbSB0aGlua2luZyBhYm91dCB0aGUgZnVuZGFtZW50YWwgYXJjaGl0ZWN0dXJhbCBpbXBsaWNhdGlvbnMuIEhvdyBkb2VzIHRoZSBkZXZpY2UgaW50ZXJmYWNlPyBJcyBpdCBhIGNvbXBvc2l0ZSBkZXZpY2U/IFdoYXQgYXJlIHRoZSBlbmRwb2ludCBjb25maWd1cmF0aW9ucz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZOKAlHRoZSBkZXNjcmlwdG9ycywgdGhlIHBhY2tldHPigJRhbmQgaG93IHRoZXkgdHJhbnNsYXRlIHRvIGF1ZGlvIHN0cmVhbSBkYXRhLiBJdCdzIGEgbGF5ZXItYnktbGF5ZXIgbWVudGFsIG1vZGVsIEknbSBidWlsZGluZy5cblxuTmV4dCwgSSdtIGdvaW5nIHRocm91Z2ggdGhlIGRpZmZlcmVudCBhdWRpbyBmdW5jdGlvbmFsaXRpZXMuIERvZXMgdGhpcyBkZXZpY2Ugc3VwcG9ydCBpc29jaHJvbm91cyB0cmFuc2ZlcnM/IFdoYXQgYWJvdXQgYXN5bmNocm9ub3VzPyBXaGF0IGFyZSB0aGUgY2xvY2tpbmcgcmVxdWlyZW1lbnRzIGFuZCBzeW5jaHJvbml6YXRpb24gY29uc2lkZXJhdGlvbnM/IEknbSBhbHJlYWR5IGFudGljaXBhdGluZyBwb3RlbnRpYWwgZGVidWdnaW5nIHBhaW4gcG9pbnRzLiBXZSdyZSBkZWFsaW5nIHdpdGggZGlnaXRhbCBhdWRpbywgdGhlIHRpbWluZyBoYXMgdG8gYmUgdGlnaHQuIElmIHNvbWV0aGluZyBpcyBnb2luZyB3cm9uZywgSSBrbm93IEknbGwgd2FudCB0byBpbnNwZWN0IHRoZSBhY3R1YWwgVVNCIHBhY2tldHMsIGFuYWx5emUgdGltZXN0YW1wcywgYW5kIG1heWJlIGV2ZW4gYnVzdCBvdXQgdGhlIG9zY2lsbG9zY29wZS5cblxuVGhlbiwgdGhlcmUgYXJlIHRoZSBzb2Z0d2FyZSBhc3BlY3RzLiBXaGF0IGRyaXZlciBtb2RlbCBpcyBiZWluZyB1c2VkPyBJcyBpdCBhIHN0YW5kYXJkIFVBQzIgZHJpdmVyLCBvciBhIGN1c3RvbSBvbmU/IFdoYXQgQVBJIGlzIGV4cG9zZWQ/IEknbSBjb25zaWRlcmluZyB0aGUgcG90ZW50aWFsIGltcGFjdCBvbiBob3N0LXNpZGUgYXVkaW8gcHJvY2Vzc2luZy4gVGhlIGRyaXZlciBpbXBsZW1lbnRhdGlvbiB3aWxsIGRyYW1hdGljYWxseSBhZmZlY3QgdGhlIHVzZXIgZXhwZXJpZW5jZSBhbmQsIGp1c3QgYXMgaW1wb3J0YW50bHksIG15IGFiaWxpdHkgdG8gdHJvdWJsZXNob290IHByb2JsZW1zIGlmIHRoZXkgYXJpc2UuXG5cblNvLCBpbiBzdW1tYXJ5LCBteSBtaW5kJ3MgcnVubmluZyB0aHJvdWdoIHRoZSBVU0IgcHJvdG9jb2wgc3RhY2ssIGF1ZGlvIGRhdGEgc3RydWN0dXJlcywgdGltaW5nIGNvbnNpZGVyYXRpb25zLCBkcml2ZXIgaW1wbGVtZW50YXRpb25zIGFuZCBBUElzLCB0aGUgcG90ZW50aWFsIGZhaWx1cmUgbW9kZXMsIHRoZSBsaWtlbHkgZGVidWdnaW5nIGNoYWxsZW5nZXMsIGFuZCwgb2YgY291cnNlLCB0aGUgaW1wbGljYXRpb25zIGZvciB0aGUgdXNlcidzIGV4cGVyaWVuY2UuIEdvdCB0byBoYXZlIGEgc29saWQgZ3Jhc3Agb24gYWxsIHRoZXNlIHRoaW5ncywgdG8gZW5zdXJlIHByb3BlciBleGVjdXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNTk2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDM6NDkuNzgwODU4NzUyWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTkyMDM2NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IFVTQl9GX1VBQzJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00MTI9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQxOC1cXHRzZWxlY3QgVVNCX1VfQVVESU9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MTk6XFx0c2VsZWN0IFVTQl9GX1VBQzJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MjAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTc1PWNvbmZpZyBVU0JfQVVESU9cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy04MS1cXHRzZWxlY3QgVVNCX0ZfVUFDMV9MRUdBQ1kgaWYgKEdBREdFVF9VQUMxIFxcdTAwMjZcXHUwMDI2IEdBREdFVF9VQUMxX0xFR0FDWSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6ODI6XFx0c2VsZWN0IFVTQl9GX1VBQzIgaWYgIUdBREdFVF9VQUMxXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTgzLVxcdHNlbGVjdCBVU0JfVV9BVURJTyBpZiAoVVNCX0ZfVUFDMiB8fCBVU0JfRl9VQUMxKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMzowMzo0OS45MDAwNjc0N1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjAxMDA3Njk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipFbmFibGluZyBVU0IgQXVkaW8gaW4gQ29uZmlnRlM6IEEgRGVwZW5kZW5jeSBDaGVjayoqXG5cblJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gV2UgbmVlZCB0byBlbmFibGUgYFVTQl9DT05GSUdGU19GX1VBQzFgIGFuZCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMmAuIFRoYXQncyB0aGUgcGxhbiBmb3IgYnJpbmdpbmcgdXAgVVNCIEF1ZGlvIHdpdGggQ29uZmlnRlMuIEJlZm9yZSB3ZSBqdXN0IGRpdmUgaW4gdGhvdWdoLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHdlJ3JlIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIG5lZWQgdG8gcXVpY2tseSBydW4gdGhyb3VnaCB0aGUgZGVwZW5kZW5jaWVzIGZvciBlYWNoIG9mIHRob3NlIGZlYXR1cmVzLiBNeSBndXQgdGVsbHMgbWUgdGhlcmUgd29uJ3QgYmUgbWFueSBzaG93c3RvcHBlcnMsIGJ1dCBJIG5ldmVyIHNraXAgdGhpcyBzdGVwLiBUaGlzIGlzIGEgc29saWQgY2hlY2sgYmVmb3JlIHdlIGJyZWFrIGFueXRoaW5nISBUaW1lIHRvIGNyb3NzLXJlZmVyZW5jZSB0aGUgS2NvbmZpZyBmaWxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIyOTEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMzowMzo1NS4xMDEwNzc2MzhaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4MjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM4MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM4MDpcXHRcXG4gMzgxOlxcdGNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxXFxuIDM4MjpcXHRcXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjBcXFwiXFxuIDM4MzpcXHRcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbiAzODQ6XFx0XFx0ZGVwZW5kcyBvbiBTTkRcXG4gMzg1OlxcdFxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuIDM4NjpcXHRcXHRzZWxlY3QgU05EX1BDTVxcbiAzODc6XFx0XFx0c2VsZWN0IFVTQl9VX0FVRElPXFxuIDM4ODpcXHRcXHRzZWxlY3QgVVNCX0ZfVUFDMVxcbiAzODk6XFx0XFx0aGVscFxcbiAzOTA6XFx0XFx0ICBUaGlzIEF1ZGlvIGZ1bmN0aW9uIGltcGxlbWVudHMgMSBBdWRpb0NvbnRyb2wgaW50ZXJmYWNlLFxcbiAzOTE6XFx0XFx0ICAxIEF1ZGlvU3RyZWFtaW5nIEludGVyZmFjZSBlYWNoIGZvciBVU0ItT1VUIGFuZCBVU0ItSU4uXFxuIDM5MjpcXHRcXHQgIFRoaXMgZHJpdmVyIGRvZXNuJ3QgZXhwZWN0IGFueSByZWFsIEF1ZGlvIGNvZGVjIHRvIGJlIHByZXNlbnRcXG4gMzkzOlxcdFxcdCAgb24gdGhlIGRldmljZSAtIHRoZSBhdWRpbyBzdHJlYW1zIGFyZSBzaW1wbHkgc2lua2VkIHRvIGFuZFxcbiAzOTQ6XFx0XFx0ICBzb3VyY2VkIGZyb20gYSB2aXJ0dWFsIEFMU0Egc291bmQgY2FyZCBjcmVhdGVkLiBUaGUgdXNlci1zcGFjZVxcbiAzOTU6XFx0XFx0ICBhcHBsaWNhdGlvbiBtYXkgY2hvb3NlIHRvIGRvIHdoYXRldmVyIGl0IHdhbnRzIHdpdGggdGhlIGRhdGFcXG4gMzk2OlxcdFxcdCAgcmVjZWl2ZWQgZnJvbSB0aGUgVVNCIEhvc3QgYW5kIGNob29zZSB0byBwcm92aWRlIHdoYXRldmVyIGl0XFxuIDM5NzpcXHRcXHQgIHdhbnRzIGFzIGF1ZGlvIGRhdGEgdG8gdGhlIFVTQiBIb3N0LlxcbiAzOTg6XFx0XFxuIDM5OTpcXHRjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMV9MRUdBQ1lcXG4gNDAwOlxcdFxcdGJvb2wgXFxcIkF1ZGlvIENsYXNzIDEuMCAobGVnYWN5IGltcGxlbWVudGF0aW9uKVxcXCJcXG4gNDAxOlxcdFxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuIDQwMjpcXHRcXHRkZXBlbmRzIG9uIFNORFxcbiA0MDM6XFx0XFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4gNDA0OlxcdFxcdHNlbGVjdCBTTkRfUENNXFxuIDQwNTpcXHRcXHRzZWxlY3QgVVNCX0ZfVUFDMV9MRUdBQ1lcXG4gNDA2OlxcdFxcdGhlbHBcXG4gNDA3OlxcdFxcdCAgVGhpcyBBdWRpbyBmdW5jdGlvbiBpbXBsZW1lbnRzIDEgQXVkaW9Db250cm9sIGludGVyZmFjZSxcXG4gNDA4OlxcdFxcdCAgMSBBdWRpb1N0cmVhbWluZyBJbnRlcmZhY2UgZWFjaCBmb3IgVVNCLU9VVCBhbmQgVVNCLUlOLlxcbiA0MDk6XFx0XFx0ICBUaGlzIGlzIGEgbGVnYWN5IGRyaXZlciBhbmQgcmVxdWlyZXMgYSByZWFsIEF1ZGlvIGNvZGVjXFxuIDQxMDpcXHRcXHQgIHRvIGJlIHByZXNlbnQgb24gdGhlIGRldmljZS5cXG4gNDExOlxcdFxcbiA0MTI6XFx0Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzJcXG4gNDEzOlxcdFxcdGJvb2wgXFxcIkF1ZGlvIENsYXNzIDIuMFxcXCJcXG4gNDE0OlxcdFxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuIDQxNTpcXHRcXHRkZXBlbmRzIG9uIFNORFxcbiA0MTY6XFx0XFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4gNDE3OlxcdFxcdHNlbGVjdCBTTkRfUENNXFxuIDQxODpcXHRcXHRzZWxlY3QgVVNCX1VfQVVESU9cXG4gNDE5OlxcdFxcdHNlbGVjdCBVU0JfRl9VQUMyXFxuIDQyMDpcXHRcXHRoZWxwXFxuIDQyMTpcXHRcXHQgIFRoaXMgQXVkaW8gZnVuY3Rpb24gaXMgY29tcGF0aWJsZSB3aXRoIFVTQiBBdWRpbyBDbGFzc1xcbiA0MjI6XFx0XFx0ICBzcGVjaWZpY2F0aW9uIDIuMC4gSXQgaW1wbGVtZW50cyAxIEF1ZGlvQ29udHJvbCBpbnRlcmZhY2UsXFxuIDQyMzpcXHRcXHQgIDEgQXVkaW9TdHJlYW1pbmcgSW50ZXJmYWNlIGVhY2ggZm9yIFVTQi1PVVQgYW5kIFVTQi1JTi5cXG4gNDI0OlxcdFxcdCAgVGhpcyBkcml2ZXIgZG9lc24ndCBleHBlY3QgYW55IHJlYWwgQXVkaW8gY29kZWMgdG8gYmUgcHJlc2VudFxcbiA0MjU6XFx0XFx0ICBvbiB0aGUgZGV2aWNlIC0gdGhlIGF1ZGlvIHN0cmVhbXMgYXJlIHNpbXBseSBzaW5rZWQgdG8gYW5kXFxuIDQyNjpcXHRcXHQgIHNvdXJjZWQgZnJvbSBhIHZpcnR1YWwgQUxTQSBzb3VuZCBjYXJkIGNyZWF0ZWQuIFRoZSB1c2VyLXNwYWNlXFxuIDQyNzpcXHRcXHQgIGFwcGxpY2F0aW9uIG1heSBjaG9vc2UgdG8gZG8gd2hhdGV2ZXIgaXQgd2FudHMgd2l0aCB0aGUgZGF0YVxcbiA0Mjg6XFx0XFx0ICByZWNlaXZlZCBmcm9tIHRoZSBVU0IgSG9zdCBhbmQgY2hvb3NlIHRvIHByb3ZpZGUgd2hhdGV2ZXIgaXRcXG4gNDI5OlxcdFxcdCAgd2FudHMgYXMgYXVkaW8gZGF0YSB0byB0aGUgVVNCIEhvc3QuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDEzOjAzOjU1LjEwMTE4NzMyOFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTAwODQwMDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqQ29uZmlndXJpbmcgVVNCIEdhZGdldHMgaW4gYSBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudCoqXG5cblJpZ2h0LCBzbyB0byBnZXQgdGhpcyBVU0IgZ2FkZ2V0IGZ1bmN0aW9uYWxpdHkgdXAgYW5kIHJ1bm5pbmcsIEknbSBnb2luZyB0byBuZWVkIHRvIGVuYWJsZSBhIGZldyBrZXkga2VybmVsIG1vZHVsZXMuIEZpcnN0LCBJIGtub3cgSSdsbCBuZWVkIGBVU0JfQ09ORklHRlNgLCB0aGF0J3MgYSBnaXZlbi4gVGhlbiwgc2luY2Ugd2UgYXJlIHdvcmtpbmcgd2l0aCBhdWRpbywgYFNORGAgaXMgYSBtdXN0LiBBbmQsIHRvIHN1cHBvcnQgdGhlIHNwZWNpZmljcyBvZiBVU0IgQXVkaW8gQ2xhc3MsIEkgc2hvdWxkIG1ha2Ugc3VyZSB0aGF0IEkgaGF2ZSBib3RoIGBVU0JfQ09ORklHRlNfRl9VQUMxYCBhbmQgYFVTQl9DT05GSUdGU19GX1VBQzJgIGVuYWJsZWQuXG5cbk5vdywgdGhlIGNydWNpYWwgcGllY2UgZm9yIHZpcnR1YWxpemF0aW9uLi4uIHRoYXQncyB3aGVyZSBgVVNCX0RVTU1ZX0hDRGAgY29tZXMgaW4uIEkgcmVjYWxsIHRoYXQgdGhpcyBwcm92aWRlcyB0aGUgZHVtbXkgVURDIChVU0IgRGV2aWNlIENvbnRyb2xsZXIpIGFuZCBIQ0QgKFVTQiBIb3N0IENvbnRyb2xsZXIpIG5lZWRlZCBmb3IgdGhlc2UgZ2FkZ2V0cyB0byBmdW5jdGlvbiB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nLiBMZXQgbWUganVzdCB0YWtlIGEgcXVpY2sgbG9vayBhdCBgVVNCX0RVTU1ZX0hDRGAgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIG9mIGl0cyByb2xlLCBhbmQgbWFrZSBzdXJlIGl0IGRvZXNuJ3QgaGF2ZSBhbnkgb2J2aW91cyBjb25mbGljdHMgb3IgZGVwZW5kZW5jaWVzIHRoYXQgSSBuZWVkIHRvIGtlZXAgaW4gbWluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMzMzQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDEzOjAzOjU5LjIwMjAzMDc3MloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAyNjgzNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9EVU1NWV9IQ0RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9NDIyPXNvdXJjZSBcXFwiZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9jZG5zMi9LY29uZmlnXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQyNy1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6NDI4OmNvbmZpZyBVU0JfRFVNTVlfSENEXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQyOS1cXHR0cmlzdGF0ZSBcXFwiRHVtbXkgSENEIChERVZFTE9QTUVOVClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDEzOjAzOjU5LjI1MjMwNTY1MVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTUwNDA4MjUxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqVVNCX0RVTU1ZX0hDRCBEZXBlbmRlbmN5IERlZXAgRGl2ZSoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgZGVwZW5kZW5jaWVzIGFzc29jaWF0ZWQgd2l0aCBgVVNCX0RVTU1ZX0hDRGAuIEkndmUgd29ya2VkIHdpdGggSENEcyAoSG9zdCBDb250cm9sbGVyIERyaXZlcnMpIGFuZCB0aGUgaW50cmljYWNpZXMgb2YgVVNCIHN0YWNrcyBmb3IgeWVhcnMsIHNvIEkgdW5kZXJzdGFuZCB0aGUgcG90ZW50aWFsIHBpdGZhbGxzIG9mIHRoZXNlIHN5c3RlbXMuIEknbSBnb2luZyB0byBzdGFydCBieSB0cmFjaW5nIHRocm91Z2ggdGhlIGNvZGUuIEknbGwgcHJvYmFibHkgc3RhcnQgd2l0aCB0aGUgY29uZmlndXJhdGlvbiBmaWxlcyB0byBzZWUgd2hpY2ggb3B0aW9ucyBhcmUgZW5hYmxlZCBhbG9uZ3NpZGUgaXQgYW5kIHNlZSB3aGF0IGxpYnJhcmllcyBvciBtb2R1bGVzIHRoaXMgZHJpdmVyIHB1bGxzIGluLiBUaGVuLCBJJ2xsIG5lZWQgdG8gdGhpbmsgYWJvdXQgcG90ZW50aWFsIGNvbmZsaWN0cyBvciBzaGFyZWQgcmVzb3VyY2VzIHRoaXMgZHVtbXkgY29udHJvbGxlciBtaWdodCBuZWVkLiBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgZXZlbiBhIFwiZHVtbXlcIiBkZXZpY2UgY2FuIGJlIHN1cnByaXNpbmdseSBjb21wbGV4IGluIHRlcm1zIG9mIGludGVyYWN0aW5nIHdpdGggbG93ZXIgbGV2ZWwgVVNCIGNvcmUgZnVuY3Rpb25hbGl0eS4gSSdsbCBuZWVkIHRvIG1lbnRhbGx5IG1hcCBvdXQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBVU0IgY29yZSwgZXNwZWNpYWxseSBob3cgaXQgaGFuZGxlcyB0cmFuc2ZlciBkZXNjcmlwdG9ycyBhbmQgZW5kcG9pbnRzLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGFueSBpbmRpY2F0aW9ucyBvZiBzaGFyZWQgbWVtb3J5IGFjY2VzcywgaW50ZXJydXB0IGhhbmRsaW5nLCBhbmQgbGlrZWx5IG5lZWQgdG8gY29uc2lkZXIgcG93ZXIgbWFuYWdlbWVudCBpbXBsaWNhdGlvbnMuIFRoaXMgaXMgaW1wb3J0YW50IHRvIGVuc3VyZSBteSB3b3JrIGlzIGZ1bGx5IGNvbXBhdGlibGUsIHJvYnVzdCBhbmQgd29uJ3QgaW50cm9kdWNlIHVud2FudGVkIHNpZGUgZWZmZWN0cy4gVWx0aW1hdGVseSwgSSdtIGV4cGVjdGluZyB0aGlzIHdpbGwgaW52b2x2ZSBzdGVwcGluZyB0aHJvdWdoIHRoZSBidWlsZCBwcm9jZXNzLCBjaGVja2luZyBoZWFkZXIgZmlsZXMgYW5kIHJldmlld2luZyByZWxldmFudCBrZXJuZWwgZG9jdW1lbnRhdGlvbiB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBsYW5kc2NhcGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzODI1LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDQ6MTAuNzU2MzkxMDYxWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgxMzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0MjA6XFx0c291cmNlIFxcXCJkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL2FzcGVlZC12aHViL0tjb25maWdcXFwiXFxuIDQyMTpcXHRcXG4gNDIyOlxcdHNvdXJjZSBcXFwiZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9jZG5zMi9LY29uZmlnXFxcIlxcbiA0MjM6XFx0XFxuIDQyNDpcXHQjXFxuIDQyNTpcXHQjIExBU1QgLS0gZHVtbXkvZW11bGF0ZWQgY29udHJvbGxlclxcbiA0MjY6XFx0I1xcbiA0Mjc6XFx0XFxuIDQyODpcXHRjb25maWcgVVNCX0RVTU1ZX0hDRFxcbiA0Mjk6XFx0XFx0dHJpc3RhdGUgXFxcIkR1bW15IEhDRCAoREVWRUxPUE1FTlQpXFxcIlxcbiA0MzA6XFx0XFx0ZGVwZW5kcyBvbiBVU0I9eSB8fCAoVVNCPW0gXFx1MDAyNlxcdTAwMjYgVVNCX0dBREdFVD1tKVxcbiA0MzE6XFx0XFx0aGVscFxcbiA0MzI6XFx0XFx0ICBUaGlzIGhvc3QgY29udHJvbGxlciBkcml2ZXIgZW11bGF0ZXMgVVNCLCBsb29waW5nIGFsbCBkYXRhIHRyYW5zZmVyXFxuIDQzMzpcXHRcXHQgIHJlcXVlc3RzIGJhY2sgdG8gYSBVU0IgXFxcImdhZGdldCBkcml2ZXJcXFwiIGluIHRoZSBzYW1lIGhvc3QuICBUaGUgaG9zdFxcbiA0MzQ6XFx0XFx0ICBzaWRlIGlzIHRoZSBjb250cm9sbGVyOyB0aGUgZ2FkZ2V0IHNpZGUgaXMgdGhlIGRldmljZS4gIEdhZGdldCBkcml2ZXJzXFxuIDQzNTpcXHRcXHQgIGNhbiBiZSBoaWdoLCBmdWxsLCBvciBsb3cgc3BlZWQ7IGFuZCB0aGV5IGhhdmUgYWNjZXNzIHRvIGVuZHBvaW50c1xcbiA0MzY6XFx0XFx0ICBsaWtlIHRob3NlIGZyb20gTkVUMjI4MCwgUFhBMnh4LCBvciBTQTExMDAgaGFyZHdhcmUuXFxuIDQzNzpcXHRcXG4gNDM4OlxcdFxcdCAgVGhpcyBtYXkgaGVscCBpbiBzb21lIHN0YWdlcyBvZiBjcmVhdGluZyBhIGRyaXZlciB0byBlbWJlZCBpbiBhXFxuIDQzOTpcXHRcXHQgIExpbnV4IGRldmljZSwgc2luY2UgaXQgbGV0cyB5b3UgZGVidWcgc2V2ZXJhbCBwYXJ0cyBvZiB0aGUgZ2FkZ2V0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDEzOjA0OjEwLjc1NjQ3MzU3MVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Nzc1NDY0ODA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gQ29udW5kcnVtKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGBVU0JfRFVNTVlfSENEYCBoaW5nZXMgb24gYm90aCBgVVNCYCBhbmQgYFVTQl9HQURHRVRgLCBzbyB0aG9zZSBhcmUgZGVmaW5pdGVseSBpbiB0aGUgcGljdHVyZS4gSSBuZWVkIHRvIGVuc3VyZSB0aG9zZSBhcmUgZGVmaW5lZCBmaXJzdC4gQW5kIHdoaWxlIEknbSBhdCBpdCwgSSBzaG91bGQgYWxzbyBpbmNsdWRlIGBVU0JfQ09ORklHRlNgLCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMWAsIGBVU0JfQ09ORklHRlNfRl9VQUMyYCwgYW5kIGBTTkRgLiBDYW4ndCBodXJ0IHRvIGhhdmUgYWxsIHRob3NlIGR1Y2tzIGluIGEgcm93LlxuXG5Ob3csIHRoZSByZWFsIGZvY3VzIGhlcmUgc2VlbXMgdG8gYmUgb24gdGhvc2UgYGZfdWFjKl8qc3JhdGVfc3RvcmVgIGZ1bmN0aW9ucy4gU3BlY2lmaWNhbGx5LCBgZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZWAsIGBmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlYCwgYGZfdWFjMl9vcHRzX2Nfc3JhdGVfc3RvcmVgLCBhbmQgYGZfdWFjMl9vcHRzX3Bfc3JhdGVfc3RvcmVgLiBUaGV5IG11c3QgYmUgdGhlIGtleSB0byBzb21ldGhpbmcgaW1wb3J0YW50LiBBbmQgd2FpdCBhIG1pbnV0ZS4uLiB0aGUgYXNzb2NpYXRlZCBtYWNyb3MgYXJlIGBVQUMxX1JBVEVfQVRUUklCVVRFYCBhbmQgYFVBQzJfUkFURV9BVFRSSUJVVEVgLiBJIHNob3VsZCBnbyBmaW5kIHdoZXJlIHRoZXNlIG1hY3JvcyBhcmUgYmVpbmcgdXNlZCwgYmVzaWRlcyB3aGVyZSBJIGV4cGVjdC4gVGhpcyBpcyB3aGVyZSBJJ2xsIGZpbmQgdGhlIG5leHQgY3JpdGljYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NTE3LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDQ6MTUuNTMxOTQwOTQ1WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTIyMjM5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJVQUMxX1JBVEVfQVRUUklCVVRFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM9MTU2OD1DT05GSUdGU19BVFRSKGZfdWFjMV9vcHRzXywgbmFtZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTU2OS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmM6MTU3MDojZGVmaW5lIFVBQzFfUkFURV9BVFRSSUJVVEUobmFtZSlcXHRcXHRcXHRcXHRcXHRcXFxcXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE1NzEtc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc2hvdyhzdHJ1Y3QgY29uZmlnX2l0ZW0gKml0ZW0sXFx0XFxcXFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jPTE2NzE9VUFDMV9BVFRSSUJVVEUodTMyLCBjX2NobWFzayk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jOjE2NzI6VUFDMV9SQVRFX0FUVFJJQlVURShjX3NyYXRlKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMxLmMtMTY3My1VQUMxX0FUVFJJQlVURSh1MzIsIGNfc3NpemUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYz0xNjc0PVVBQzFfQVRUUklCVVRFKHUzMiwgcF9jaG1hc2spO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzEuYzoxNjc1OlVBQzFfUkFURV9BVFRSSUJVVEUocF9zcmF0ZSk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMS5jLTE2NzYtVUFDMV9BVFRSSUJVVEUodTMyLCBwX3NzaXplKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDQ6MTUuNTgzMTY4MDI0WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1OTM3Mzg4MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBhcyBpZiBJJ20gdGhlIG9uZSB0aGlua2luZyBpdDpcblxuKipDb25zaWRlcmluZyBBdWRpbyBTYW1wbGUgUmF0ZXMgYW5kIFVBQzIqKlxuXG5SaWdodCwgc28gSSdtIGZvY3VzaW5nIG9uIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBzYW1wbGUgcmF0ZXMuIEknbSB0aGlua2luZyBhYm91dCBgY19zcmF0ZWAgYW5kIGBwX3NyYXRlYCwgbWFraW5nIHN1cmUgdGhvc2UgYXJlIHdlbGwtZGVmaW5lZCBhbmQgYWNjb3VudGVkIGZvci4gVGhhdCdzIGEga2V5IHN0YXJ0aW5nIHBvaW50LiBBbmQgbm93LCBtb3ZpbmcgdG8gYFVBQzJfUkFURV9BVFRSSUJVVEVgLi4uIEkgbmVlZCB0byBjb25zaWRlciBleGFjdGx5IGhvdyB0aGlzIHJlbGF0ZXMgdG8gdGhlIHNhbXBsZSByYXRlIG5lZ290aWF0aW9uIGFuZCB0aGUgb3ZlcmFsbCBhdWRpbyBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZnVsbHkgdW5kZXJzdGFuZCBob3cgdGhpcyBhdHRyaWJ1dGUgaW50ZXJhY3RzIHdpdGggZXZlcnl0aGluZyBlbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTQyOSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDEzOjA0OjE5LjE3NjkxMDgzN1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjExMTc3Nzg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlVBQzJfUkFURV9BVFRSSUJVVEVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uL2ZfdWFjMi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYz0xOTg2PUNPTkZJR0ZTX0FUVFIoZl91YWMyX29wdHNfLCBuYW1lKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0xOTg3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYzoxOTg4OiNkZWZpbmUgVUFDMl9SQVRFX0FUVFJJQlVURShuYW1lKVxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmMtMTk4OS1zdGF0aWMgc3NpemVfdCBmX3VhYzJfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM9MjA5Mj1VQUMyX0FUVFJJQlVURSh1MzIsIHBfY2htYXNrKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM6MjA5MzpVQUMyX1JBVEVfQVRUUklCVVRFKHBfc3JhdGUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0yMDk0LVVBQzJfQVRUUklCVVRFKHUzMiwgcF9zc2l6ZSk7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM9MjA5Nj1VQUMyX0FUVFJJQlVURSh1MzIsIGNfY2htYXNrKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvZnVuY3Rpb24vZl91YWMyLmM6MjA5NzpVQUMyX1JBVEVfQVRUUklCVVRFKGNfc3JhdGUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9mdW5jdGlvbi9mX3VhYzIuYy0yMDk4LVVBQzJfQVRUUklCVVRFX1NZTkMoY19zeW5jKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDQ6MTkuMzg4MDk0MzQ0WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk2MDY4MzQ3NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBVU0IgQXVkaW8gQ2xhc3MgQ29uZmlndXJhdGlvbiBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnM6IGBmX3VhYzFfb3B0c19jX3NyYXRlX3N0b3JlYCwgYGZfdWFjMV9vcHRzX3Bfc3JhdGVfc3RvcmVgLCBgZl91YWMyX29wdHNfY19zcmF0ZV9zdG9yZWAsIGFuZCBgZl91YWMyX29wdHNfcF9zcmF0ZV9zdG9yZWAuIFRoZXkncmUgdGhlIG9uZXMgYmVpbmcgdXNlZCBmb3IgdGhlIGBjX3NyYXRlYCBhbmQgYHBfc3JhdGVgIHNldHRpbmdzLiBJIHNlZSB0aGF0IHRoZXkncmUgc3RhdGljLCBhbmQgdGhhdCdzIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dC4gSSByZWNhbGwgdGhleSdyZSBhc3NpZ25lZCB0byBjb25maWdmcyBhdHRyaWJ1dGVzIHVzaW5nIGBDT05GSUdGU19BVFRSYC4gUmlnaHQsIHNvIGBDT05GSUdGU19BVFRSYCBjcmVhdGVzLCBmb3IgZXhhbXBsZSwgYGZfdWFjMV9vcHRzX2F0dHJfY19zcmF0ZWAsIHdoaWNoIHBvaW50cyB0byBgZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZWAuXG5cbkJlY2F1c2UgdGhlc2UgYXJlIHN0YXRpYyBmdW5jdGlvbnMsIEkgaW1tZWRpYXRlbHkgY29uc2lkZXIgcG90ZW50aWFsIGlzc3Vlcy4gVGhleSAqbWlnaHQqIG5vdCBiZSBleHBvcnRlZCBhcyBnbG9iYWwgc3ltYm9scywgYnV0IHNpbmNlIHRoZXkncmUgZGVmaW5pdGVseSByZWFjaGFibGUgdmlhIGNvbmZpZ2ZzIChiZWluZyBwYXNzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMgaW4gY29uZmlnZnMgc3RydWN0dXJlcyksIHRoZXkgYXJlIGF2YWlsYWJsZS4gSSB3YXMgd29uZGVyaW5nIGlmIHRoZXkgYXJlIGlubGluZWQsIGJ1dCB0aGF0IHdvbid0IGhhcHBlbiBiZWNhdXNlIHRoZXkgYXJlIHBhc3NlZCBhcyBmdW5jdGlvbiBwb2ludGVycyB0byBjb25maWdmcyBzdHJ1Y3R1cmVzLiBTbywgZXZlbiB0aG91Z2ggdGhleSBhcmUgc3RhdGljLCBJIGtub3cgdGhleSB3aWxsIGhhdmUgZGlzdGluY3QgYWRkcmVzc2VzLiBTeXprYWxsZXIgY291bGQgaGF2ZSB0cm91YmxlIHJlc29sdmluZyB0aGUgbmFtZXMsIGJ1dCB0aGF0J3Mgbm90IGEgcHJvYmxlbSwgYmVjYXVzZSB0aGV5IGFyZSBpbiBga2FsbHN5bXNgIGFuZCBpdCBjYW4gcmVzb2x2ZSB0aGUgbmFtZXMuIEFjdHVhbGx5LCBJIHdhcyBqdXN0IHJlYWRpbmcgdGhlIHByb21wdCBhYm91dCBwcmVmZXJyaW5nIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5cG9pbnQgZnVuY3Rpb25zLCBidXQgc2luY2UgdGhlc2UgYXJlIHVzZWQgYXMgZnVuY3Rpb24gcG9pbnRlcnMsIHRoZXkgYXJlICpub3QqIGlubGluZWQgYW5kIGFyZSBmaW5lIHRvIHVzZS5cblxuTm93LCBsZXQgbWUgem9vbSBvdXQuIFRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIHRoZXNlIGBmX3VhYzFfb3B0c18jI25hbWUjI19zdG9yZWAgYW5kIGBmX3VhYzJfb3B0c18jI25hbWUjI19zdG9yZWAgZnVuY3Rpb25zIGluIHRoZSBgVUFDMV9SQVRFX0FUVFJJQlVURWAgYW5kIGBVQUMyX1JBVEVfQVRUUklCVVRFYCBzdHJ1Y3R1cmVzLiBUaGlzIHBvaW50cyB0byBhIG1lbW9yeSBsZWFrIGluIHRoZSBjb25maWdmcyBzdG9yZSBjYWxsYmFja3MgZm9yIFVTQiBBdWRpbyBDbGFzcyAxIGFuZCAyIGdhZGdldCBkcml2ZXJzLiBUaGUgbGVhayBjb21lcyBmcm9tIGBzdHJzZXBgIG1vZGlmeWluZyB0aGUgcG9pbnRlciwgd2hpY2ggY2F1c2VzIHRoZSBga2ZyZWVgIHRvIGZyZWUgdGhlIHdyb25nIG1lbW9yeSBhZGRyZXNzLiBUaGUgZml4LCB0aGVuLCBpcyB0byBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgcG9pbnRlciBzbyB0aGUgY29ycmVjdCBtZW1vcnkgZ2V0cyBmcmVlZC4gVGhpcyBjb2RlJ3MgcmVhY2hhYmxlIHdoZW4gY29uZmlndXJpbmcgVVNCIGdhZGdldHMgdXNpbmcgY29uZmlnZnMgYW5kIHRoZSBkdW1teSBIQ0QuXG5cblRvIHRlc3QgdGhpcywgSSdsbCBuZWVkIHRvIGVuYWJsZSB0aGVzZSBjb25maWd1cmF0aW9uczogYFVTQl9HQURHRVRgLCBgVVNCX0RVTU1ZX0hDRGAsIGBVU0JfQ09ORklHRlNgLCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMWAsIGBVU0JfQ09ORklHRlNfRl9VQUMyYCwgYW5kIGBTTkRgLiBJJ2xsIGRvdWJsZSBjaGVjayBgQ09ORklHX1VTQl9DT05GSUdGU19GX1VBQzFgLCBhbmQsIHllcywgdGhhdCBpcyB0aGUgY29ycmVjdCBuYW1lLiBJdCBkZXBlbmRzIG9uIGBVU0JfQ09ORklHRlNgIGFuZCBgU05EYC4gTm8gb3RoZXIgZGVwZW5kZW5jaWVzPyBMZXQgbWUgZG91YmxlLWNoZWNrIGBVU0JfQ09ORklHRlNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjAxNiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMzowNDoyOC45OTQ5MzIxNzJaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NTMzMzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfQ09ORklHRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMjM9Y29uZmlnIFVTQl9GX1RDTVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjI3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIyODpjb25maWcgVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjI5LVxcdHRyaXN0YXRlIFxcXCJVU0IgR2FkZ2V0IGZ1bmN0aW9ucyBjb25maWd1cmFibGUgdGhyb3VnaCBjb25maWdmc1xcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIzOS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNDA6Y29uZmlnIFVTQl9DT05GSUdGU19TRVJJQUxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNDEtXFx0Ym9vbCBcXFwiR2VuZXJpYyBzZXJpYWwgYnVsayBpbi9vdXRcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNDgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjQ5OmNvbmZpZyBVU0JfQ09ORklHRlNfQUNNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjUwLVxcdGJvb2wgXFxcIkFic3RyYWN0IENvbnRyb2wgTW9kZWwgKENEQyBBQ00pXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjU4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI1OTpjb25maWcgVVNCX0NPTkZJR0ZTX09CRVhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiT2JqZWN0IEV4Y2hhbmdlIE1vZGVsIChDREMgT0JFWClcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjY5OmNvbmZpZyBVU0JfQ09ORklHRlNfTkNNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjcwLVxcdGJvb2wgXFxcIk5ldHdvcmsgQ29udHJvbCBNb2RlbCAoQ0RDIE5DTSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yODAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRUNNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjgyLVxcdGJvb2wgXFxcIkV0aGVybmV0IENvbnRyb2wgTW9kZWwgKENEQyBFQ00pXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjkyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI5Mzpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTV9TVUJTRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yOTQtXFx0Ym9vbCBcXFwiRXRoZXJuZXQgQ29udHJvbCBNb2RlbCAoQ0RDIEVDTSkgc3Vic2V0XFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzAyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMwMzpjb25maWcgVVNCX0NPTkZJR0ZTX1JORElTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzA0LVxcdGJvb2wgXFxcIlJORElTXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzE4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMxOTpjb25maWcgVVNCX0NPTkZJR0ZTX0VFTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMyMC1cXHRib29sIFxcXCJFdGhlcm5ldCBFbXVsYXRpb24gTW9kZWwgKEVFTSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM1OmNvbmZpZyBVU0JfQ09ORklHRlNfUEhPTkVUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzM2LVxcdGJvb2wgXFxcIlBob25ldCBwcm90b2NvbFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNDU6Y29uZmlnIFVTQl9DT05GSUdGU19NQVNTX1NUT1JBR0VcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNDYtXFx0Ym9vbCBcXFwiTWFzcyBzdG9yYWdlXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzU1LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM1Njpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTEJfU1NcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTctXFx0Ym9vbCBcXFwiTG9vcGJhY2sgYW5kIHNvdXJjZXNpbmsgZnVuY3Rpb24gKGZvciB0ZXN0aW5nKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM2OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNjk6Y29uZmlnIFVTQl9DT05GSUdGU19GX0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzcwLVxcdGJvb2wgXFxcIkZ1bmN0aW9uIGZpbGVzeXN0ZW0gKEZ1bmN0aW9uRlMpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzgwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4Mi1cXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjBcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zOTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Mzk5OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxX0xFR0FDWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjAgKGxlZ2FjeSBpbXBsZW1lbnRhdGlvbilcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTEtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDEyOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMyXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDEzLVxcdGJvb2wgXFxcIkF1ZGlvIENsYXNzIDIuMFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQzMC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MzE6Y29uZmlnIFVTQl9DT05GSUdGU19GX01JRElcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MzItXFx0Ym9vbCBcXFwiTUlESSBmdW5jdGlvblxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ0NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0NDU6Y29uZmlnIFVTQl9DT05GSUdGU19GX01JREkyXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ2LVxcdGJvb2wgXFxcIk1JREkgMi4wIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDU3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ1ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDU5LVxcdGJvb2wgXFxcIkhJRCBmdW5jdGlvblxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0Njg6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VWQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2OS1cXHRib29sIFxcXCJVU0IgV2ViY2FtIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDgwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfUFJJTlRFUlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4Mi1cXHRib29sIFxcXCJQcmludGVyIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5NTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk2LVxcdGJvb2wgXFxcIlVTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDQ6MjkuMDQ0NDcxOTYxWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc5OTgzNjAxMDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFVTQiBDb25maWdGUyBmb3IgU291bmQgU3VwcG9ydCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IGBVU0JfQ09ORklHRlNgIHJlcXVpcmVzIGBVU0JfR0FER0VUYCwgc28gdGhvc2UgYXJlIGRlZmluaXRlbHkgaW4gdGhlIG1peC4gVGhlbiwgd2UgaGF2ZSBgVVNCX0RVTU1ZX0hDRGAgYW5kIHRoZSBhY3R1YWwgYFVTQl9DT05GSUdGU2AgaXRzZWxmLiBGdXJ0aGVyLCB3ZSBzZWUgYFVTQl9DT05GSUdGU19GX1VBQzFgLCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMmAsIGFuZCBgU05EYC5cblxuTm93LCBoZXJlJ3Mgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gYFVTQl9DT05GSUdGU2AgaXMgdHJpc3RhdGUsIG1lYW5pbmcgaXQgY2FuIGJlIGEgbW9kdWxlIG9yIGJ1aWx0LWluLCBvciBkaXNhYmxlZC4gQnV0IGBVU0JfQ09ORklHRlNfRl9VQUMxYCBpcyBhIGJvb2xlYW4uIFRoYXQgbWVhbnMgYFVTQl9DT05GSUdGU19GX1VBQzFgIGlzIGdvaW5nIHRvIGVpdGhlciBiZSBidWlsdCBpbnRvIHRoZSBgdXNiX2ZfdWFjMWAgbW9kdWxlLCBvciBkaXJlY3RseSBpbnRvIHRoZSBrZXJuZWwuXG5cbkkgbmVlZCB0byBjb25maXJtIHRoZSBmdW5jdGlvbiBuYW1lcy4gSXQgbG9va3MgbGlrZSBgZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZWAgaXMgaW5kZWVkIHRoZSBhY3R1YWwgbmFtZS4gTGV0J3Mgc2VlLi4uIFl1cCwgaGVyZSdzIHRoZSBtYWNybzpcblxuYGBgY1xuI2RlZmluZSBVQUMxX1JBVEVfQVRUUklCVVRFKG5hbWUpXHRcdFx0XHRcdFxcXG5zdGF0aWMgc3NpemVfdCBmX3VhYzFfb3B0c18jI25hbWUjI19zaG93KHN0cnVjdCBjb25maWdfaXRlbSAqaXRlbSxcdFxcXG5cdFx0XHRcdFx0IGNoYXIgKnBhZ2UpXHRcdFx0XFxcbi4uLlxuc3RhdGljIHNzaXplX3QgZl91YWMxX29wdHNfIyNuYW1lIyNfc3RvcmUoc3RydWN0IGNvbmZpZ19pdGVtICppdGVtLFx0XFxcblx0XHRcdFx0XHQgIGNvbnN0IGNoYXIgKnBhZ2UsIHNpemVfdCBsZW4pXHRcXFxuYGBgXG5cbk9rYXksIGFuZCBpdCdzIGJlaW5nIHVzZWQgd2l0aCBgY19zcmF0ZWAgYW5kIGBwX3NyYXRlYC4gU28gd2UgaGF2ZSBgZl91YWMxX29wdHNfY19zcmF0ZV9zdG9yZWAsIGBmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlYCwgYGZfdWFjMl9vcHRzX2Nfc3JhdGVfc3RvcmVgLCBhbmQgYGZfdWFjMl9vcHRzX3Bfc3JhdGVfc3RvcmVgLlxuXG5UaGVzZSBmdW5jdGlvbnMgYXJlIGFjdHVhbGx5IGZ1bmN0aW9uYWwsIGFuZCBhcmUgZml4aW5nIGEgbWVtb3J5IGxlYWshIFRoaXMgbWVyaXRzIHNvbWUgZnV6emluZyBmb3Igc3VyZS5cblxuTGV0J3MgZG8gYSBxdWljayBzd2VlcCB0byBzZWUgaWYgYW55IG90aGVyIGZ1bmN0aW9ucyBhcmUgdG91Y2hlZC4uLiBObywgdGhlIHBhdGNoIGFwcGVhcnMgdG8gc29sZWx5IG1vZGlmeSB0aGUgYGZfdWFjMV9vcHRzXyMjbmFtZSMjX3N0b3JlYCBhbmQgYGZfdWFjMl9vcHRzXyMjbmFtZSMjX3N0b3JlYCBmdW5jdGlvbnMgd2l0aGluIHRoZSBgVUFDMV9SQVRFX0FUVFJJQlVURWAgYW5kIGBVQUMyX1JBVEVfQVRUUklCVVRFYCBtYWNyb3MuXG5cbkZpbmFsbHksIEkgd29uZGVyIGlmIGBDT05GSUdGU19GU2AgaXMgcmVxdWlyZWQuIEknbGwgYmV0IGBVU0JfQ09ORklHRlNgIGVpdGhlciBzZWxlY3RzIG9yIGRlcGVuZHMgb24gaXQuIEkgc2hvdWxkIHZlcmlmeSB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODgxMywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMzowNDozNy4wNDI4MzYxNjRaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyNDUzNTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfQ09ORklHRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yMjM9Y29uZmlnIFVTQl9GX1RDTVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjI3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjIyODpjb25maWcgVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjI5LVxcdHRyaXN0YXRlIFxcXCJVU0IgR2FkZ2V0IGZ1bmN0aW9ucyBjb25maWd1cmFibGUgdGhyb3VnaCBjb25maWdmc1xcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTIzOS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNDA6Y29uZmlnIFVTQl9DT05GSUdGU19TRVJJQUxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNDEtXFx0Ym9vbCBcXFwiR2VuZXJpYyBzZXJpYWwgYnVsayBpbi9vdXRcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNDgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjQ5OmNvbmZpZyBVU0JfQ09ORklHRlNfQUNNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjUwLVxcdGJvb2wgXFxcIkFic3RyYWN0IENvbnRyb2wgTW9kZWwgKENEQyBBQ00pXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjU4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI1OTpjb25maWcgVVNCX0NPTkZJR0ZTX09CRVhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiT2JqZWN0IEV4Y2hhbmdlIE1vZGVsIChDREMgT0JFWClcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjY5OmNvbmZpZyBVU0JfQ09ORklHRlNfTkNNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjcwLVxcdGJvb2wgXFxcIk5ldHdvcmsgQ29udHJvbCBNb2RlbCAoQ0RDIE5DTSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yODAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjgxOmNvbmZpZyBVU0JfQ09ORklHRlNfRUNNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjgyLVxcdGJvb2wgXFxcIkV0aGVybmV0IENvbnRyb2wgTW9kZWwgKENEQyBFQ00pXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjkyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI5Mzpjb25maWcgVVNCX0NPTkZJR0ZTX0VDTV9TVUJTRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yOTQtXFx0Ym9vbCBcXFwiRXRoZXJuZXQgQ29udHJvbCBNb2RlbCAoQ0RDIEVDTSkgc3Vic2V0XFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzAyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMwMzpjb25maWcgVVNCX0NPTkZJR0ZTX1JORElTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzA0LVxcdGJvb2wgXFxcIlJORElTXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzE4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMxOTpjb25maWcgVVNCX0NPTkZJR0ZTX0VFTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMyMC1cXHRib29sIFxcXCJFdGhlcm5ldCBFbXVsYXRpb24gTW9kZWwgKEVFTSlcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM1OmNvbmZpZyBVU0JfQ09ORklHRlNfUEhPTkVUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzM2LVxcdGJvb2wgXFxcIlBob25ldCBwcm90b2NvbFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNDU6Y29uZmlnIFVTQl9DT05GSUdGU19NQVNTX1NUT1JBR0VcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNDYtXFx0Ym9vbCBcXFwiTWFzcyBzdG9yYWdlXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzU1LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM1Njpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfTEJfU1NcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTctXFx0Ym9vbCBcXFwiTG9vcGJhY2sgYW5kIHNvdXJjZXNpbmsgZnVuY3Rpb24gKGZvciB0ZXN0aW5nKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM2OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNjk6Y29uZmlnIFVTQl9DT05GSUdGU19GX0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzcwLVxcdGJvb2wgXFxcIkZ1bmN0aW9uIGZpbGVzeXN0ZW0gKEZ1bmN0aW9uRlMpXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzgwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4Mi1cXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjBcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zOTgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Mzk5OmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxX0xFR0FDWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjAgKGxlZ2FjeSBpbXBsZW1lbnRhdGlvbilcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTEtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDEyOmNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMyXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDEzLVxcdGJvb2wgXFxcIkF1ZGlvIENsYXNzIDIuMFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQzMC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MzE6Y29uZmlnIFVTQl9DT05GSUdGU19GX01JRElcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MzItXFx0Ym9vbCBcXFwiTUlESSBmdW5jdGlvblxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ0NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0NDU6Y29uZmlnIFVTQl9DT05GSUdGU19GX01JREkyXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ2LVxcdGJvb2wgXFxcIk1JREkgMi4wIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDU3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ1ODpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDU5LVxcdGJvb2wgXFxcIkhJRCBmdW5jdGlvblxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0Njg6Y29uZmlnIFVTQl9DT05GSUdGU19GX1VWQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2OS1cXHRib29sIFxcXCJVU0IgV2ViY2FtIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDgwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ4MTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfUFJJTlRFUlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4Mi1cXHRib29sIFxcXCJQcmludGVyIGZ1bmN0aW9uXFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk0LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5NTpjb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk2LVxcdGJvb2wgXFxcIlVTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDQ6MzcuMDk1Mjk1Njg0WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDE2NTU3ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gVVNCX0NPTkZJR0ZTIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IHRvIHRoZSBjb3JlIG9mIHRoaXMuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGltbWVkaWF0ZWx5IGdyYXZpdGF0ZXMgdG93YXJkcyB0aGUgZGVwZW5kZW5jaWVzIGFzc29jaWF0ZWQgd2l0aCBgVVNCX0NPTkZJR0ZTYC4gSSBrbm93IHRoZSBiYXNpY3MsIHRoZSBoaWdoLWxldmVsIGFyY2hpdGVjdHVyZSwgYnV0IEkgd2FudCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsIGx1cmtpbmcgaW4gdGhlIHVuZGVybHlpbmcgbW9kdWxlcyBvciBzdWJzeXN0ZW1zLiBJdCdzIGEgcXVpY2sgbWVudGFsIHNjYW4sIGNyb3NzLXJlZmVyZW5jaW5nIG15IGtub3dsZWRnZSBvZiB0aGUgcmVsZXZhbnQga2VybmVsIG1vZHVsZXM6IGBnYWRnZXRmc2AsIGB1ZGNgLCBgZ19ldGhlcmAsIGFuZCBtYXliZSBldmVuIHNvbWUgb2YgdGhlIG1vcmUgZXNvdGVyaWMgVVNCIGZ1bmN0aW9uIGRyaXZlcnMgZGVwZW5kaW5nIG9uIHRoZSBzcGVjaWZpYyB1c2UgY2FzZS4gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHBvdGVudGlhbCBjb25mbGljdHMgb3IgaW50ZXJhY3Rpb24gaXNzdWVzLiBJIHdhbnQgdG8gcnVsZSBvdXQgYW55IGdvdGNoYXMgd2l0aCB0aGUgVVNCIGNvbnRyb2xsZXIgZHJpdmVyLCB0aGUgcGxhdGZvcm0tc3BlY2lmaWMgZ2x1ZSBjb2RlLCBvciBldmVuIHNvbWV0aGluZyBsZXNzIG9idmlvdXMgbGlrZSBhIHBvd2VyIG1hbmFnZW1lbnQgaW50ZXJhY3Rpb24uIFRoaXMgaXNuJ3QganVzdCBhYm91dCBmdW5jdGlvbmFsaXR5OyBpdCdzIGFib3V0IHN0YWJpbGl0eSBhbmQgcGVyZm9ybWFuY2UsIGVuc3VyaW5nIHRoYXQgdGhpcyBjb25maWd1cmF0aW9uIGludGVncmF0ZXMgY2xlYW5seSB3aXRoIGV2ZXJ5dGhpbmcgZWxzZS4gSSdsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyB3aXRoIFVTQiBwb3dlciBtYW5hZ2VtZW50IGFuZCBzeXN0ZW0td2lkZSByZXNvdXJjZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNDA2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDQ6NDAuODM2OTU0Njk0WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIyNSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIyNTpcXHRcXG4gMjI2OlxcdCMgdGhpcyBmaXJzdCBzZXQgb2YgZHJpdmVycyBhbGwgZGVwZW5kIG9uIGJ1bGstY2FwYWJsZSBoYXJkd2FyZS5cXG4gMjI3OlxcdFxcbiAyMjg6XFx0Y29uZmlnIFVTQl9DT05GSUdGU1xcbiAyMjk6XFx0XFx0dHJpc3RhdGUgXFxcIlVTQiBHYWRnZXQgZnVuY3Rpb25zIGNvbmZpZ3VyYWJsZSB0aHJvdWdoIGNvbmZpZ2ZzXFxcIlxcbiAyMzA6XFx0XFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4gMjMxOlxcdFxcdGhlbHBcXG4gMjMyOlxcdFxcdCAgQSBMaW51eCBVU0IgXFxcImdhZGdldFxcXCIgY2FuIGJlIHNldCB1cCB0aHJvdWdoIGNvbmZpZ2ZzLlxcbiAyMzM6XFx0XFx0ICBJZiB0aGlzIGlzIHRoZSBjYXNlLCB0aGUgVVNCIGZ1bmN0aW9ucyAod2hpY2ggZnJvbSB0aGUgaG9zdCdzXFxuIDIzNDpcXHRcXHQgIHBlcnNwZWN0aXZlIGFyZSBzZWVuIGFzIGludGVyZmFjZXMpIGFuZCBjb25maWd1cmF0aW9ucyBhcmVcXG4gMjM1OlxcdFxcdCAgc3BlY2lmaWVkIHNpbXBseSBieSBjcmVhdGluZyBhcHByb3ByaWF0ZSBkaXJlY3RvcmllcyBpbiBjb25maWdmcy5cXG4gMjM2OlxcdFxcdCAgQXNzb2NpYXRpbmcgZnVuY3Rpb25zIHdpdGggY29uZmlndXJhdGlvbnMgaXMgZG9uZSBieSBjcmVhdGluZ1xcbiAyMzc6XFx0XFx0ICBhcHByb3ByaWF0ZSBzeW1ib2xpYyBsaW5rcy5cXG4gMjM4OlxcdFxcdCAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIERvY3VtZW50YXRpb24vdXNiL2dhZGdldF9jb25maWdmcy5yc3QuXFxuIDIzOTpcXHRcXG4gMjQwOlxcdGNvbmZpZyBVU0JfQ09ORklHRlNfU0VSSUFMXFxuIDI0MTpcXHRcXHRib29sIFxcXCJHZW5lcmljIHNlcmlhbCBidWxrIGluL291dFxcXCJcXG4gMjQyOlxcdFxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuIDI0MzpcXHRcXHRkZXBlbmRzIG9uIFRUWVxcbiAyNDQ6XFx0XFx0c2VsZWN0IFVTQl9VX1NFUklBTFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMzowNDo0MC44MzcwMzU3NjRaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTY3OTgwOTQ1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLi4uXG5cbioqSW52ZXN0aWdhdGluZyBVU0JfQ09ORklHRlMgRGVwZW5kZW5jeSBvbiBDT05GSUdGU19GUyoqXG5cbkhtbSwgdGhpcyBpcyBpbnRlcmVzdGluZy4gSSdtIHRha2luZyBhIGNsb3NlIGxvb2sgYXQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBVU0JfQ09ORklHRlNgIGFuZCBgQ09ORklHRlNfRlNgLiBJdCdzIG5vdCBpbW1lZGlhdGVseSBvYnZpb3VzIHRoYXQgYFVTQl9DT05GSUdGU2AgKnJlcXVpcmVzKiBgQ09ORklHRlNfRlNgIGRpcmVjdGx5LiBUaGF0J3MgYSBiaXQgc3VycHJpc2luZywgSSBmaWd1cmVkIGl0IHdvdWxkIGJlIGEgaGFyZCBkZXBlbmRlbmN5LiBTbywgSSBuZWVkIHRvIGRpZyBkZWVwZXIuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiB0byBzZWUgaWYgYENPTkZJR0ZTX0ZTYCBpcyBpbXBsaWNpdGx5IHB1bGxlZCBpbiBieSBzb21lIG90aGVyIGNvbXBvbmVudCBvciBpZiBpdCdzIHN0cmljdGx5IG5lY2Vzc2FyeSBmb3IgYFVTQl9DT05GSUdGU2AgdG8gZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXJlJ3MgYW4gaW5kaXJlY3QgZGVwZW5kZW5jeSBoZXJlLCBvciBpZiB0aGUgZG9jdW1lbnRhdGlvbiBpcyBqdXN0IHZhZ3VlLiBUaW1lIHRvIGludmVzdGlnYXRlIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTk5OCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMTM6MDQ6NDYuNTE2ODQ3ODE1WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTQ3MTkxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgQ09ORklHRlNfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0xNDU9Y29uZmlnIFVTQl9MSUJDT01QT1NJVEVcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xNDYtXFx0dHJpc3RhdGVcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNDc6XFx0c2VsZWN0IENPTkZJR0ZTX0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTQ4LVxcdGRlcGVuZHMgb24gVVNCX0dBREdFVFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QxMzowNDo0Ni41NjYzMjQ2NjRaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzc0NTc1OTcxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBVU0IgQ29uZmlnZnMgYW5kIFVBQyBHYWRnZXQgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYFVTQl9MSUJDT01QT1NJVEVgIGRpcmVjdGx5IHNlbGVjdHMgYENPTkZJR0ZTX0ZTYCwgYW5kLCBpbiB0dXJuLCBgVVNCX0NPTkZJR0ZTYCBzZWxlY3RzIGBVU0JfTElCQ09NUE9TSVRFYC4gVGhpcyBtZWFucyBgQ09ORklHRlNfRlNgIGlzIGVmZmVjdGl2ZWx5IGd1YXJhbnRlZWQgdG8gYmUgZW5hYmxlZCBhcyBhIGRlcGVuZGVuY3kuIE5vdywgSSBoYXZlIHdoYXQgSSBuZWVkIHRvIHN1bW1hcml6ZSB0aGUgcmVzdWx0cy5cblxuVGhpcyBpcyBhIHNjZW5hcmlvIHdvcnRoIGZ1enppbmcsIHRoYXQgbXVjaCBpcyBjbGVhci4gVGhlIGtleSBmdW5jdGlvbnMgdG8gdGFyZ2V0IGFyZSB0aGUgYGZfdWFjMV9vcHRzX2Nfc3JhdGVfc3RvcmVgLCBgZl91YWMxX29wdHNfcF9zcmF0ZV9zdG9yZWAsIGBmX3VhYzJfb3B0c19jX3NyYXRlX3N0b3JlYCwgYW5kIGBmX3VhYzJfb3B0c19wX3NyYXRlX3N0b3JlYCBmdW5jdGlvbnMsIGFzIGlkZW50aWZpZWQuXG5cblRvIHRyaWdnZXIgdGhlIHZ1bG5lcmFiaWxpdHksIEknbGwgbmVlZCB0byBlbmFibGUgYSBzdWl0ZSBvZiBjb25maWd1cmF0aW9uczogYFVTQl9HQURHRVRgLCBgVVNCX0RVTU1ZX0hDRGAsIGBVU0JfQ09ORklHRlNgLCBgVVNCX0NPTkZJR0ZTX0ZfVUFDMWAsIGBVU0JfQ09ORklHRlNfRl9VQUMyYCwgYW5kIGBTTkRgLiBUaGlzIGNvbWJpbmF0aW9uIGxpa2VseSBzZXRzIHVwIHRoZSBuZWNlc3NhcnkgaW5mcmFzdHJ1Y3R1cmU6IGEgVVNCIGdhZGdldCBmcmFtZXdvcmssIGEgZHVtbXkgaG9zdCBjb250cm9sbGVyIGZvciB2aXJ0dWFsaXplZCB0ZXN0aW5nLCBhbmQgdGhlIGNvbmZpZ2ZzIFVBQyAoVVNCIEF1ZGlvIENsYXNzKSBmdW5jdGlvbmFsaXRpZXMuIFRoZSBgU05EYCBjb25maWd1cmF0aW9uIGlzIGxpa2VseSByZWxhdGVkIHRvIHRoZSBzb3VuZCBpbmZyYXN0cnVjdHVyZSBhbmQgVUFDIGRyaXZlcnMuXG5cblRoZSBjcnV4IG9mIHRoZSBtYXR0ZXIgaXMgdGhlIHBhdGNoIGlzIGFkZHJlc3NpbmcgYSBtZW1vcnkgbGVhay4gU3BlY2lmaWNhbGx5LCB0aGUgcHJvYmxlbWF0aWMgbG9naWMgaXMgcm9vdGVkIGluIGNvbmZpZ2ZzIHN0b3JlIGNhbGxiYWNrcyBmb3IgVVNCIEF1ZGlvIENsYXNzIDEgYW5kIDIgZ2FkZ2V0IGRyaXZlcnMuIFRoZSBgc3Ryc2VwYCBmdW5jdGlvbiBpcyB0aGUgY3VscHJpdC4gSXQgbW9kaWZpZXMgdGhlIHBvaW50ZXIgaXQncyBvcGVyYXRpbmcgb24sIGxlYWRpbmcgdG8gYW4gaW5jb3JyZWN0IGBrZnJlZWAgY2FsbCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24uIFRoZSB2dWxuZXJhYmlsaXR5IGlzIHRyaWdnZXJlZCB3aGVuIGNvbmZpZ3VyaW5nIFVTQiBnYWRnZXRzIHRocm91Z2ggY29uZmlnZnMuIEdpdmVuIHRoZSBwcmVzZW5jZSBvZiBgVVNCX0RVTU1ZX0hDRGAsIEkgY2FuIGluZmVyIHRoaXMgaXMgZXhwbG9pdGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB3aGljaCBpcyBleGFjdGx5IHRoZSBraW5kIG9mIHRlc3QgZW52aXJvbm1lbnQgSSdtIGFsd2F5cyBsb29raW5nIGZvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIzNDAsIk91dHB1dFRva2VucyI6MjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDEzOjA0OjU0LjMxMjA4Nzg5MloiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NTM3NDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfR0FER0VUXCIsXG4gICAgXCJVU0JfRFVNTVlfSENEXCIsXG4gICAgXCJVU0JfQ09ORklHRlNcIixcbiAgICBcIlVTQl9DT05GSUdGU19GX1VBQzFcIixcbiAgICBcIlVTQl9DT05GSUdGU19GX1VBQzJcIixcbiAgICBcIlNORFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZfdWFjMV9vcHRzX2Nfc3JhdGVfc3RvcmVcIixcbiAgICBcImZfdWFjMV9vcHRzX3Bfc3JhdGVfc3RvcmVcIixcbiAgICBcImZfdWFjMl9vcHRzX2Nfc3JhdGVfc3RvcmVcIixcbiAgICBcImZfdWFjMl9vcHRzX3Bfc3JhdGVfc3RvcmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBjb25maWdmcyBzdG9yZSBjYWxsYmFja3MgZm9yIFVTQiBBdWRpbyBDbGFzcyAxIGFuZCAyIGdhZGdldCBkcml2ZXJzLiBUaGUgbGVhayBvY2N1cnMgYmVjYXVzZSBgc3Ryc2VwYCBtb2RpZmllcyB0aGUgcG9pbnRlciwgY2F1c2luZyBga2ZyZWVgIHRvIGZyZWUgdGhlIHdyb25nIGFkZHJlc3MuIEJ5IGtlZXBpbmcgdGhlIG9yaWdpbmFsIHBvaW50ZXIsIHRoZSBtZW1vcnkgaXMgY29ycmVjdGx5IGZyZWVkLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBjb25maWdmcyB3aGVuIGNvbmZpZ3VyaW5nIFVTQiBnYWRnZXRzLCB3aGljaCBpcyBzdXBwb3J0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHVzaW5nIHRoZSBkdW1teSBIQ0QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0RVTU1ZX0hDRFwiLFxuICAgIFwiVVNCX0NPTkZJR0ZTXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VQUMxXCIsXG4gICAgXCJVU0JfQ09ORklHRlNfRl9VQUMyXCIsXG4gICAgXCJTTkRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmX3VhYzFfb3B0c19jX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzFfb3B0c19wX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzJfb3B0c19jX3NyYXRlX3N0b3JlXCIsXG4gICAgXCJmX3VhYzJfb3B0c19wX3NyYXRlX3N0b3JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgY29uZmlnZnMgc3RvcmUgY2FsbGJhY2tzIGZvciBVU0IgQXVkaW8gQ2xhc3MgMSBhbmQgMiBnYWRnZXQgZHJpdmVycy4gVGhlIGxlYWsgb2NjdXJzIGJlY2F1c2UgYHN0cnNlcGAgbW9kaWZpZXMgdGhlIHBvaW50ZXIsIGNhdXNpbmcgYGtmcmVlYCB0byBmcmVlIHRoZSB3cm9uZyBhZGRyZXNzLiBCeSBrZWVwaW5nIHRoZSBvcmlnaW5hbCBwb2ludGVyLCB0aGUgbWVtb3J5IGlzIGNvcnJlY3RseSBmcmVlZC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgY29uZmlnZnMgd2hlbiBjb25maWd1cmluZyBVU0IgZ2FkZ2V0cywgd2hpY2ggaXMgc3VwcG9ydGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB1c2luZyB0aGUgZHVtbXkgSENELlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowsb65z[1] Phase: Succeeded StartedAt: 2026-08-03 13:05:05 +0000 UTC FinishedAt: 2026-08-03 13:05:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsb65z[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-03 13:05:05 +0000 UTC FinishedAt: 2026-08-03 13:05:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsb65z[2] Phase: Succeeded StartedAt: 2026-08-03 13:05:05 +0000 UTC FinishedAt: 2026-08-03 16:51:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-03 13:05:05 +0000 UTC FinishedAt: 2026-08-03 16:51:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-03 13:05:05 +0000 UTC FinishedAt: 2026-08-03 13:05:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-03 13:05:05 +0000 UTC FinishedAt: 2026-08-03 13:05:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowsb65z/series-workflowsb65z-convert-artifact-2052067608/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-03 13:05:15 +0000 UTC FinishedAt: 2026-08-03 13:22:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-03 13:05:15 +0000 UTC FinishedAt: 2026-08-03 13:22:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*31f4c704-8426-4155-b1a2-aa2e284ffbec,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-workflowsb65z/series-workflowsb65z-convert-artifact-2052067608/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": "c1de38ba-437e-4de9-9d2c-41123541d458", "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-workflowsb65z/series-workflowsb65z-build-action-3632221774/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-03 13:05:15 +0000 UTC FinishedAt: 2026-08-03 13:22:02 +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:*31f4c704-8426-4155-b1a2-aa2e284ffbec,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-workflowsb65z/series-workflowsb65z-convert-artifact-2052067608/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": "c1de38ba-437e-4de9-9d2c-41123541d458", "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-workflowsb65z/series-workflowsb65z-build-action-3632221774/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-03 13:22:12 +0000 UTC FinishedAt: 2026-08-03 13:22:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-03 13:22:12 +0000 UTC FinishedAt: 2026-08-03 13:22:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-03 13:22:12 +0000 UTC FinishedAt: 2026-08-03 13:22:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-03 13:22:12 +0000 UTC FinishedAt: 2026-08-03 13:22:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowsb65z/series-workflowsb65z-convert-artifact-8483455/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-03 13:22:22 +0000 UTC FinishedAt: 2026-08-03 13:24:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-03 13:22:22 +0000 UTC FinishedAt: 2026-08-03 13:24:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c1de38ba-437e-4de9-9d2c-41123541d458,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-workflowsb65z/series-workflowsb65z-build-action-3632221774/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-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-03 13:24:11 +0000 UTC FinishedAt: 2026-08-03 13:24:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-03 13:24:11 +0000 UTC FinishedAt: 2026-08-03 13:24:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-03 13:24:11 +0000 UTC FinishedAt: 2026-08-03 13:42:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-03 13:24:11 +0000 UTC FinishedAt: 2026-08-03 13:42:51 +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:*31f4c704-8426-4155-b1a2-aa2e284ffbec,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-workflowsb65z/series-workflowsb65z-convert-artifact-8483455/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": "39011dcc-cd2e-4440-a3d4-0fefe2805867", "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-workflowsb65z/series-workflowsb65z-build-action-1553217683/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-03 13:24:11 +0000 UTC FinishedAt: 2026-08-03 13:42:41 +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:*31f4c704-8426-4155-b1a2-aa2e284ffbec,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-workflowsb65z/series-workflowsb65z-convert-artifact-8483455/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": "39011dcc-cd2e-4440-a3d4-0fefe2805867", "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-workflowsb65z/series-workflowsb65z-build-action-1553217683/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-03 13:42:51 +0000 UTC FinishedAt: 2026-08-03 13:42:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-03 13:42:51 +0000 UTC FinishedAt: 2026-08-03 13:42:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-03 13:42:51 +0000 UTC FinishedAt: 2026-08-03 13:44:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-03 13:42:51 +0000 UTC FinishedAt: 2026-08-03 13:44:45 +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:*39011dcc-cd2e-4440-a3d4-0fefe2805867,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-workflowsb65z/series-workflowsb65z-build-action-1553217683/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-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-03 13:44:54 +0000 UTC FinishedAt: 2026-08-03 16:51:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-03 13:44:54 +0000 UTC FinishedAt: 2026-08-03 16:51:58 +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":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"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:*c1de38ba-437e-4de9-9d2c-41123541d458,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*39011dcc-cd2e-4440-a3d4-0fefe2805867,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-workflowsb65z/series-workflowsb65z-build-action-3632221774/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-workflowsb65z/series-workflowsb65z-build-action-1553217683/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-03 13:44:54 +0000 UTC FinishedAt: 2026-08-03 13:45:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-03 13:44:54 +0000 UTC FinishedAt: 2026-08-03 13:44:59 +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":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"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-workflowsb65z/series-workflowsb65z-convert-artifact-3055036440/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-03 13:44:54 +0000 UTC FinishedAt: 2026-08-03 13:44:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-03 13:44:54 +0000 UTC FinishedAt: 2026-08-03 13:44:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-03 13:44:54 +0000 UTC FinishedAt: 2026-08-03 13:44:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-03 13:45:04 +0000 UTC FinishedAt: 2026-08-03 16:51:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsb65z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["f_uac1_opts_c_srate_store","f_uac1_opts_p_srate_store","f_uac2_opts_c_srate_store","f_uac2_opts_p_srate_store"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGET","USB_DUMMY_HCD","USB_CONFIGFS","USB_CONFIGFS_F_UAC1","USB_CONFIGFS_F_UAC2","SND"],"series_id":"f4adac11-1bec-4fc0-9af5-6657d17a9e2c","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-03 13:45:04 +0000 UTC FinishedAt: 2026-08-03 16:51:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c1de38ba-437e-4de9-9d2c-41123541d458,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*39011dcc-cd2e-4440-a3d4-0fefe2805867,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-workflowsb65z/series-workflowsb65z-build-action-3632221774/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-workflowsb65z/series-workflowsb65z-build-action-1553217683/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-workflowsb65z/series-workflowsb65z-convert-artifact-3055036440/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,}