Name: series-workflow78mk4 Phase: Succeeded StartedAt: 2026-06-27 07:16:57 +0000 UTC FinishedAt: 2026-06-27 09:06:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78mk4[0] Phase: Succeeded StartedAt: 2026-06-27 07:16:57 +0000 UTC FinishedAt: 2026-06-27 07:26:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78mk4[0].run-triage Phase: Succeeded StartedAt: 2026-06-27 07:16:57 +0000 UTC FinishedAt: 2026-06-27 07:26:34 +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": "5422e496b313b9b0b2f6df068902d6c79925d5e9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ZRAM", "ZRAM_MULTI_COMP", "ZRAM_BACKEND_LZ4", "ZRAM_BACKEND_LZ4HC", "ZRAM_BACKEND_ZSTD", "ZRAM_BACKEND_DEFLATE", "ZRAM_BACKEND_842", "ZRAM_BACKEND_LZO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "5422e496b313b9b0b2f6df068902d6c79925d5e9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ZRAM", "ZRAM_MULTI_COMP", "ZRAM_BACKEND_LZ4", "ZRAM_BACKEND_LZ4HC", "ZRAM_BACKEND_ZSTD", "ZRAM_BACKEND_DEFLATE", "ZRAM_BACKEND_842", "ZRAM_BACKEND_LZO" ], "series_id": "2a18db34-6e0a-4c05-b13c-6537f66d620b" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "algorithm_params_store", "comp_params_store", "__comp_algorithm_store", "zcomp_get_caps", "zcomp_validate_level", "zstd_create" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1pSQU0mIzM0OywKICAgICYjMzQ7WlJBTV9NVUxUSV9DT01QJiMzNDssCiAgICAmIzM0O1pSQU1fQkFDS0VORF9MWjQmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX0xaNEhDJiMzNDssCiAgICAmIzM0O1pSQU1fQkFDS0VORF9aU1REJiMzNDssCiAgICAmIzM0O1pSQU1fQkFDS0VORF9ERUZMQVRFJiMzNDssCiAgICAmIzM0O1pSQU1fQkFDS0VORF84NDImIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX0xaTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FsZ29yaXRobV9wYXJhbXNfc3RvcmUmIzM0OywKICAgICYjMzQ7Y29tcF9wYXJhbXNfc3RvcmUmIzM0OywKICAgICYjMzQ7X19jb21wX2FsZ29yaXRobV9zdG9yZSYjMzQ7LAogICAgJiMzNDt6Y29tcF9nZXRfY2FwcyYjMzQ7LAogICAgJiMzNDt6Y29tcF92YWxpZGF0ZV9sZXZlbCYjMzQ7LAogICAgJiMzNDt6c3RkX2NyZWF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB6cmFtIGNvbXByZXNzaW9uIHBhcmFtZXRlcnMgaGFuZGxpbmcuIEl0IGFkZHMgY2FwYWJpbGl0aWVzIGFuZCB2YWxpZGF0aW9uIGZvciBjb21wcmVzc2lvbiBsZXZlbHMgYW5kIGRpY3Rpb25hcnkgc3VwcG9ydC4gSXQgYWxzbyBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBjb21wX3BhcmFtc19zdG9yZWAgYW5kIHJlbW92ZXMgYSByZWR1bmRhbnQgcGFyYW1ldGVyIHJlbGVhc2UgaW4gYHpzdGRfY3JlYXRlYC4gVGhlc2UgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzeXNmcyBhdHRyaWJ1dGVzIGxpa2UgYGFsZ29yaXRobV9wYXJhbXNgLCBgY29tcF9hbGdvcml0aG1gLCBhbmQgYHJlY29tcF9hbGdvcml0aG1gLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMzRiZjY3NzBiYWE4NTIwNDY3ZmUzZjFhYzQzNTFmNDIxZGNjOTYzMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVuIDI3IDA3OjI1OjI0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmNcbmluZGV4IDEwZDlkNWM2MGY1MzEzLi5kNzk2ZWJkYTFmYTBkNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuY1xuQEAgLTU3LDUgJiM0Mzs1Nyw2IEBAIGNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF84NDIgPSB7XG4gXHQuZGVzdHJveV9jdHhcdD0gZGVzdHJveV84NDIsXG4gXHQuc2V0dXBfcGFyYW1zXHQ9IHNldHVwX3BhcmFtc184NDIsXG4gXHQucmVsZWFzZV9wYXJhbXNcdD0gcmVsZWFzZV9wYXJhbXNfODQyLFxuJiM0MztcdC5jYXBzXHRcdD0gMCxcbiBcdC5uYW1lXHRcdD0gXCYjMzQ7ODQyXCYjMzQ7LFxuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jXG5pbmRleCBmOTJhNTJhNzIwZDFlMi4uY2VkYzNkYWFkMzNhZjUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2RlZmxhdGUuY1xuQEAgLTE0NCw1ICYjNDM7MTQ0LDggQEAgY29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kX2RlZmxhdGUgPSB7XG4gXHQuZGVzdHJveV9jdHhcdD0gZGVmbGF0ZV9kZXN0cm95LFxuIFx0LnNldHVwX3BhcmFtc1x0PSBkZWZsYXRlX3NldHVwX3BhcmFtcyxcbiBcdC5yZWxlYXNlX3BhcmFtc1x0PSBkZWZsYXRlX3JlbGVhc2VfcGFyYW1zLFxuJiM0MztcdC5jYXBzXHRcdD0gWkNPTVBfQ0FQX0xFVkVMLFxuJiM0MztcdC5sZXZlbF9taW5cdD0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OLFxuJiM0MztcdC5sZXZlbF9tYXhcdD0gWl9CRVNUX0NPTVBSRVNTSU9OLFxuIFx0Lm5hbWVcdFx0PSBcJiMzNDtkZWZsYXRlXCYjMzQ7LFxuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuY1xuaW5kZXggYzQ0OWQ1MTFiYTg2ZmUuLmJkMWU1Y2E0ZDEzNDJiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NC5jXG5AQCAtMTQ2LDUgJiM0MzsxNDYsOCBAQCBjb25zdCBzdHJ1Y3QgemNvbXBfb3BzIGJhY2tlbmRfbHo0ID0ge1xuIFx0LmRlc3Ryb3lfY3R4XHQ9IGx6NF9kZXN0cm95LFxuIFx0LnNldHVwX3BhcmFtc1x0PSBsejRfc2V0dXBfcGFyYW1zLFxuIFx0LnJlbGVhc2VfcGFyYW1zXHQ9IGx6NF9yZWxlYXNlX3BhcmFtcyxcbiYjNDM7XHQuY2Fwc1x0XHQ9IFpDT01QX0NBUF9ESUNUIHwgWkNPTVBfQ0FQX0xFVkVMLFxuJiM0MztcdC5sZXZlbF9taW5cdD0gTFo0X0FDQ0VMRVJBVElPTl9ERUZBVUxULFxuJiM0MztcdC5sZXZlbF9tYXhcdD0gNjU1MzUsXG4gXHQubmFtZVx0XHQ9IFwmIzM0O2x6NFwmIzM0OyxcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jXG5pbmRleCBmNmEzMzZhY2ZlMjAyZS4uMGUwZDdjNjhhN2Q0MjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jXG5AQCAtMTI0LDUgJiM0MzsxMjQsOCBAQCBjb25zdCBzdHJ1Y3QgemNvbXBfb3BzIGJhY2tlbmRfbHo0aGMgPSB7XG4gXHQuZGVzdHJveV9jdHhcdD0gbHo0aGNfZGVzdHJveSxcbiBcdC5zZXR1cF9wYXJhbXNcdD0gbHo0aGNfc2V0dXBfcGFyYW1zLFxuIFx0LnJlbGVhc2VfcGFyYW1zXHQ9IGx6NGhjX3JlbGVhc2VfcGFyYW1zLFxuJiM0MztcdC5jYXBzXHRcdD0gWkNPTVBfQ0FQX0RJQ1QgfCBaQ09NUF9DQVBfTEVWRUwsXG4mIzQzO1x0LmxldmVsX21pblx0PSBMWjRIQ19NSU5fQ0xFVkVMLFxuJiM0MztcdC5sZXZlbF9tYXhcdD0gTFo0SENfTUFYX0NMRVZFTCxcbiBcdC5uYW1lXHRcdD0gXCYjMzQ7bHo0aGNcJiMzNDssXG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6by5jXG5pbmRleCA0YzkwNmJlYWFlNmIzMy4uOTY1ZjAwN2UyY2E4OTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmNcbkBAIC01NSw1ICYjNDM7NTUsNiBAQCBjb25zdCBzdHJ1Y3QgemNvbXBfb3BzIGJhY2tlbmRfbHpvID0ge1xuIFx0LmRlc3Ryb3lfY3R4XHQ9IGx6b19kZXN0cm95LFxuIFx0LnNldHVwX3BhcmFtc1x0PSBsem9fc2V0dXBfcGFyYW1zLFxuIFx0LnJlbGVhc2VfcGFyYW1zXHQ9IGx6b19yZWxlYXNlX3BhcmFtcyxcbiYjNDM7XHQuY2Fwc1x0XHQ9IDAsXG4gXHQubmFtZVx0XHQ9IFwmIzM0O2x6b1wmIzM0OyxcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6b3JsZS5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmNcbmluZGV4IDEwNjQwYzk2Y2JmY2FhLi43NTdiNDU5OGJlMDMwNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6b3JsZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuY1xuQEAgLTU1LDUgJiM0Mzs1NSw2IEBAIGNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF9sem9ybGUgPSB7XG4gXHQuZGVzdHJveV9jdHhcdD0gbHpvcmxlX2Rlc3Ryb3ksXG4gXHQuc2V0dXBfcGFyYW1zXHQ9IGx6b3JsZV9zZXR1cF9wYXJhbXMsXG4gXHQucmVsZWFzZV9wYXJhbXNcdD0gbHpvcmxlX3JlbGVhc2VfcGFyYW1zLFxuJiM0MztcdC5jYXBzXHRcdD0gMCxcbiBcdC5uYW1lXHRcdD0gXCYjMzQ7bHpvLXJsZVwmIzM0OyxcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuY1xuaW5kZXggZDAwYjU0ODA1NmRjMmUuLjBmYmQyNDYwODgzYTgyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmNcbkBAIC0xNjEsNyAmIzQzOzE2MSw2IEBAIHN0YXRpYyBpbnQgenN0ZF9jcmVhdGUoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zLCBzdHJ1Y3QgemNvbXBfY3R4ICpjdHgpXG4gXHRyZXR1cm4gMDtcbiBcbiBlcnJvcjpcbi1cdHpzdGRfcmVsZWFzZV9wYXJhbXMocGFyYW1zKTtcbiBcdHpzdGRfZGVzdHJveShjdHgpO1xuIFx0cmV0dXJuIC1FSU5WQUw7XG4gfVxuQEAgLTIxMyw1ICYjNDM7MjEyLDggQEAgY29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kX3pzdGQgPSB7XG4gXHQuZGVzdHJveV9jdHhcdD0genN0ZF9kZXN0cm95LFxuIFx0LnNldHVwX3BhcmFtc1x0PSB6c3RkX3NldHVwX3BhcmFtcyxcbiBcdC5yZWxlYXNlX3BhcmFtc1x0PSB6c3RkX3JlbGVhc2VfcGFyYW1zLFxuJiM0MztcdC5jYXBzXHRcdD0gWkNPTVBfQ0FQX0RJQ1QgfCBaQ09NUF9DQVBfTEVWRUwsXG4mIzQzO1x0LmxldmVsX21pblx0PSAoaW50KS1aU1REX1RBUkdFVExFTkdUSF9NQVgsXG4mIzQzO1x0LmxldmVsX21heFx0PSBaU1REX01BWF9DTEVWRUwsXG4gXHQubmFtZVx0XHQ9IFwmIzM0O3pzdGRcJiMzNDssXG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYyBiL2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jXG5pbmRleCA5NzRjNDY5MTg4N2U2Zi4uMTVkZTI4YjUwZDQyN2YgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmNcbkBAIC05LDYgJiM0Mzs5LDkgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jcHVob3RwbHVnLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC92bWFsbG9jLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zeXNmcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2x6NC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3psaWIuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC96c3RkLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcJiMzNDt6Y29tcC5oXCYjMzQ7XG4gXG5AQCAtOTQsNiAmIzQzOzk3LDI2IEBAIGNvbnN0IGNoYXIgKnpjb21wX2xvb2t1cF9iYWNrZW5kX25hbWUoY29uc3QgY2hhciAqY29tcClcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbiYjNDM7dW5zaWduZWQgaW50IHpjb21wX2dldF9jYXBzKGNvbnN0IGNoYXIgKmNvbXApXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgemNvbXBfb3BzICpiYWNrZW5kID0gbG9va3VwX2JhY2tlbmRfb3BzKGNvbXApO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gYmFja2VuZCA/IGJhY2tlbmQtXHUwMDNlY2FwcyA6IDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2ludCB6Y29tcF92YWxpZGF0ZV9sZXZlbChjb25zdCBjaGFyICpjb21wLCBzMzIgbGV2ZWwpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgemNvbXBfb3BzICpiYWNrZW5kID0gbG9va3VwX2JhY2tlbmRfb3BzKGNvbXApO1xuJiM0MztcbiYjNDM7XHRpZiAoIWJhY2tlbmQpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRpZiAoIShiYWNrZW5kLVx1MDAzZWNhcHMgXHUwMDI2IFpDT01QX0NBUF9MRVZFTCkpXG4mIzQzO1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4mIzQzO1x0aWYgKGxldmVsIFx1MDAzYyBiYWNrZW5kLVx1MDAzZWxldmVsX21pbiB8fCBsZXZlbCBcdTAwM2UgYmFja2VuZC1cdTAwM2VsZXZlbF9tYXgpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiAvKiBzaG93IGF2YWlsYWJsZSBjb21wcmVzc29ycyAqL1xuIHNzaXplX3QgemNvbXBfYXZhaWxhYmxlX3Nob3coY29uc3QgY2hhciAqY29tcCwgY2hhciAqYnVmLCBzc2l6ZV90IGF0KVxuIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuaCBiL2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oXG5pbmRleCA4MWEwZjNmNmZmNDg3MS4uMTZmODEyYTk0YzY3ZDQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmhcbkBAIC03LDYgJiM0Mzs3LDkgQEBcbiBcbiAjZGVmaW5lIFpDT01QX1BBUkFNX05PVF9TRVRcdElOVF9NSU5cbiBcbiYjNDM7I2RlZmluZSBaQ09NUF9DQVBfRElDVFx0XHRCSVQoMClcdC8qIGRpY3Rpb25hcnkgc3VwcG9ydCAqL1xuJiM0MzsjZGVmaW5lIFpDT01QX0NBUF9MRVZFTFx0XHRCSVQoMSlcdC8qIGFkanVzdGFibGUgY29tcHJlc3Npb24gbGV2ZWwgKi9cbiYjNDM7XG4gc3RydWN0IGRlZmxhdGVfcGFyYW1zIHtcbiBcdHMzMiB3aW5iaXRzO1xuIH07XG5AQCAtNjYsNiAmIzQzOzY5LDkgQEAgc3RydWN0IHpjb21wX29wcyB7XG4gXHRpbnQgKCpzZXR1cF9wYXJhbXMpKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcyk7XG4gXHR2b2lkICgqcmVsZWFzZV9wYXJhbXMpKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcyk7XG4gXG4mIzQzO1x0dW5zaWduZWQgaW50IGNhcHM7XG4mIzQzO1x0czMyIGxldmVsX21pbjtcbiYjNDM7XHRzMzIgbGV2ZWxfbWF4O1xuIFx0Y29uc3QgY2hhciAqbmFtZTtcbiB9O1xuIFxuQEAgLTgxLDYgJiM0Mzs4Nyw4IEBAIGludCB6Y29tcF9jcHVfdXBfcHJlcGFyZSh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9kZSk7XG4gaW50IHpjb21wX2NwdV9kZWFkKHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCBobGlzdF9ub2RlICpub2RlKTtcbiBzc2l6ZV90IHpjb21wX2F2YWlsYWJsZV9zaG93KGNvbnN0IGNoYXIgKmNvbXAsIGNoYXIgKmJ1Ziwgc3NpemVfdCBhdCk7XG4gY29uc3QgY2hhciAqemNvbXBfbG9va3VwX2JhY2tlbmRfbmFtZShjb25zdCBjaGFyICpjb21wKTtcbiYjNDM7dW5zaWduZWQgaW50IHpjb21wX2dldF9jYXBzKGNvbnN0IGNoYXIgKmNvbXApO1xuJiM0MztpbnQgemNvbXBfdmFsaWRhdGVfbGV2ZWwoY29uc3QgY2hhciAqY29tcCwgczMyIGxldmVsKTtcbiBcbiBzdHJ1Y3QgemNvbXAgKnpjb21wX2NyZWF0ZShjb25zdCBjaGFyICphbGcsIHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcyk7XG4gdm9pZCB6Y29tcF9kZXN0cm95KHN0cnVjdCB6Y29tcCAqY29tcCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1xuaW5kZXggYWNlNjVjNTg2MDcyYmEuLjZiNDc1ODZlODcxOGM4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jXG5AQCAtNTcsNiAmIzQzOzU3LDcgQEAgc3RhdGljIHNpemVfdCBodWdlX2NsYXNzX3NpemU7XG4gc3RhdGljIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB6cmFtX2Rldm9wcztcbiBcbiBzdGF0aWMgdm9pZCBzbG90X2ZyZWUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBpbmRleCk7XG4mIzQzO3N0YXRpYyB2b2lkIGNvbXBfcGFyYW1zX3Jlc2V0KHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbyk7XG4gI2RlZmluZSBzbG90X2RlcF9tYXAoenJhbSwgaW5kZXgpIChcdTAwMjYoenJhbSktXHUwMDNldGFibGVbKGluZGV4KV0uZGVwX21hcClcbiBcbiBzdGF0aWMgdm9pZCBzbG90X2xvY2tfaW5pdChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIGluZGV4KVxuQEAgLTE2ODEsNiAmIzQzOzE2ODIsNyBAQCBzdGF0aWMgaW50IF9fY29tcF9hbGdvcml0aG1fc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBjb25zdCBjaGFyICpidWYpXG4gXHR9XG4gXG4gXHRjb21wX2FsZ29yaXRobV9zZXQoenJhbSwgcHJpbywgYWxnKTtcbiYjNDM7XHRjb21wX3BhcmFtc19yZXNldCh6cmFtLCBwcmlvKTtcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC0xNjk5LDIxICYjNDM7MTcwMSwyNCBAQCBzdGF0aWMgaW50IGNvbXBfcGFyYW1zX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgczMyIGxldmVsLFxuIFx0XHRcdCAgICAgY29uc3QgY2hhciAqZGljdF9wYXRoLFxuIFx0XHRcdCAgICAgc3RydWN0IGRlZmxhdGVfcGFyYW1zICpkZWZsYXRlX3BhcmFtcylcbiB7XG4mIzQzO1x0dm9pZCAqbmV3X2RpY3QgPSBOVUxMO1xuIFx0c3NpemVfdCBzeiA9IDA7XG4gXG4tXHRjb21wX3BhcmFtc19yZXNldCh6cmFtLCBwcmlvKTtcbi1cbiBcdGlmIChkaWN0X3BhdGgpIHtcbi1cdFx0c3ogPSBrZXJuZWxfcmVhZF9maWxlX2Zyb21fcGF0aChkaWN0X3BhdGgsIDAsXG4tXHRcdFx0XHRcdFx0XHUwMDI2enJhbS1cdTAwM2VwYXJhbXNbcHJpb10uZGljdCxcbi1cdFx0XHRcdFx0XHRJTlRfTUFYLFxuLVx0XHRcdFx0XHRcdE5VTEwsXG4tXHRcdFx0XHRcdFx0UkVBRElOR19QT0xJQ1kpO1xuLVx0XHRpZiAoc3ogXHUwMDNjIDApXG4mIzQzO1x0XHRzeiA9IGtlcm5lbF9yZWFkX2ZpbGVfZnJvbV9wYXRoKGRpY3RfcGF0aCwgMCwgXHUwMDI2bmV3X2RpY3QsXG4mIzQzO1x0XHRcdFx0XHRcdElOVF9NQVgsIE5VTEwsIFJFQURJTkdfUE9MSUNZKTtcbiYjNDM7XHRcdGlmIChzeiBcdTAwM2MgMCkge1xuJiM0MztcdFx0XHR2ZnJlZShuZXdfZGljdCk7XG4mIzQzO1x0XHRcdHJldHVybiBzejtcbiYjNDM7XHRcdH0gZWxzZSBpZiAoc3ogPT0gMCkge1xuJiM0MztcdFx0XHR2ZnJlZShuZXdfZGljdCk7XG4gXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXG4mIzQzO1x0Y29tcF9wYXJhbXNfcmVzZXQoenJhbSwgcHJpbyk7XG4gXHR6cmFtLVx1MDAzZXBhcmFtc1twcmlvXS5kaWN0X3N6ID0gc3o7XG4mIzQzO1x0enJhbS1cdTAwM2VwYXJhbXNbcHJpb10uZGljdCA9IG5ld19kaWN0O1xuIFx0enJhbS1cdTAwM2VwYXJhbXNbcHJpb10ubGV2ZWwgPSBsZXZlbDtcbiBcdHpyYW0tXHUwMDNlcGFyYW1zW3ByaW9dLmRlZmxhdGUud2luYml0cyA9IGRlZmxhdGVfcGFyYW1zLVx1MDAzZXdpbmJpdHM7XG4gXHRyZXR1cm4gMDtcbkBAIC0xNzk0LDYgJiM0MzsxNzk5LDE5IEBAIHN0YXRpYyBzc2l6ZV90IGFsZ29yaXRobV9wYXJhbXNfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuJiM0MztcdGlmICh6cmFtLVx1MDAzZWNvbXBfYWxnc1twcmlvXSkge1xuJiM0MztcdFx0dW5zaWduZWQgaW50IGNhcHMgPSB6Y29tcF9nZXRfY2Fwcyh6cmFtLVx1MDAzZWNvbXBfYWxnc1twcmlvXSk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKGRpY3RfcGF0aCBcdTAwMjZcdTAwMjYgIShjYXBzIFx1MDAyNiBaQ09NUF9DQVBfRElDVCkpXG4mIzQzO1x0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiYjNDM7XG4mIzQzO1x0XHRpZiAobGV2ZWwgIT0gWkNPTVBfUEFSQU1fTk9UX1NFVCkge1xuJiM0MztcdFx0XHRyZXQgPSB6Y29tcF92YWxpZGF0ZV9sZXZlbCh6cmFtLVx1MDAzZWNvbXBfYWxnc1twcmlvXSwgbGV2ZWwpO1xuJiM0MztcdFx0XHRpZiAocmV0KVxuJiM0MztcdFx0XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJldCA9IGNvbXBfcGFyYW1zX3N0b3JlKHpyYW0sIHByaW8sIGxldmVsLCBkaWN0X3BhdGgsIFx1MDAyNmRlZmxhdGVfcGFyYW1zKTtcbiBcdHJldHVybiByZXQgPyByZXQgOiBsZW47XG4gfVxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvenN0ZF9saWIuaCBiL2luY2x1ZGUvbGludXgvenN0ZF9saWIuaFxuaW5kZXggZTI5NWQ0MTI1ZGRlODQuLmY0YjI2ODQ0ZTUzYWRlIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC96c3RkX2xpYi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3pzdGRfbGliLmhcbkBAIC0xMjQxLDYgJiM0MzsxMjQxLDcgQEAgWlNURExJQl9BUEkgc2l6ZV90IFpTVERfc2l6ZW9mX0REaWN0KGNvbnN0IFpTVERfRERpY3QqIGRkaWN0KTtcbiAjZGVmaW5lIFpTVERfU0VBUkNITE9HX01JTiAgICAgICAgMVxuICNkZWZpbmUgWlNURF9NSU5NQVRDSF9NQVggICAgICAgICA3ICAgLyogb25seSBmb3IgWlNURF9mYXN0LCBvdGhlciBzdHJhdGVnaWVzIGFyZSBsaW1pdGVkIHRvIDYgKi9cbiAjZGVmaW5lIFpTVERfTUlOTUFUQ0hfTUlOICAgICAgICAgMyAgIC8qIG9ubHkgZm9yIFpTVERfYnRvcHQmIzQzOywgZmFzdGVyIHN0cmF0ZWdpZXMgYXJlIGxpbWl0ZWQgdG8gNCAqL1xuJiM0MzsjZGVmaW5lIFpTVERfTUFYX0NMRVZFTFx0XHQyMlxuICNkZWZpbmUgWlNURF9UQVJHRVRMRU5HVEhfTUFYICAgIFpTVERfQkxPQ0tTSVpFX01BWFxuICNkZWZpbmUgWlNURF9UQVJHRVRMRU5HVEhfTUlOICAgICAwICAgLyogbm90ZSA6IGNvbXBhcmluZyB0aGlzIGNvbnN0YW50IHRvIGFuIHVuc2lnbmVkIHJlc3VsdHMgaW4gYSB0YXV0b2xvZ2ljYWwgdGVzdCAqL1xuICNkZWZpbmUgWlNURF9TVFJBVEVHWV9NSU4gICAgICAgIFpTVERfZmFzdFxuZGlmZiAtLWdpdCBhL2xpYi96c3RkL2NvbXByZXNzL2NsZXZlbHMuaCBiL2xpYi96c3RkL2NvbXByZXNzL2NsZXZlbHMuaFxuaW5kZXggNmFiOGJlNjUzMmVmYzAuLmRiM2IyNzViNTAyZTZjIDEwMDY0NFxuLS0tIGEvbGliL3pzdGQvY29tcHJlc3MvY2xldmVscy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9saWIvenN0ZC9jb21wcmVzcy9jbGV2ZWxzLmhcbkBAIC0xNyw3ICYjNDM7MTcsNiBAQFxuIFxuIC8qLT09PT09ICBQcmUtZGVmaW5lZCBjb21wcmVzc2lvbiBsZXZlbHMgID09PT09LSovXG4gXG4tI2RlZmluZSBaU1REX01BWF9DTEVWRUwgICAgIDIyXG4gXG4gX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpXG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WlJBTSYjMzQ7LAogICAgJiMzNDtaUkFNX01VTFRJX0NPTVAmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX0xaNCYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfTFo0SEMmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX1pTVEQmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX0RFRkxBVEUmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EXzg0MiYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfTFpPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWxnb3JpdGhtX3BhcmFtc19zdG9yZSYjMzQ7LAogICAgJiMzNDtjb21wX3BhcmFtc19zdG9yZSYjMzQ7LAogICAgJiMzNDtfX2NvbXBfYWxnb3JpdGhtX3N0b3JlJiMzNDssCiAgICAmIzM0O3pjb21wX2dldF9jYXBzJiMzNDssCiAgICAmIzM0O3pjb21wX3ZhbGlkYXRlX2xldmVsJiMzNDssCiAgICAmIzM0O3pzdGRfY3JlYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHpyYW0gY29tcHJlc3Npb24gcGFyYW1ldGVycyBoYW5kbGluZy4gSXQgYWRkcyBjYXBhYmlsaXRpZXMgYW5kIHZhbGlkYXRpb24gZm9yIGNvbXByZXNzaW9uIGxldmVscyBhbmQgZGljdGlvbmFyeSBzdXBwb3J0LiBJdCBhbHNvIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gYGNvbXBfcGFyYW1zX3N0b3JlYCBhbmQgcmVtb3ZlcyBhIHJlZHVuZGFudCBwYXJhbWV0ZXIgcmVsZWFzZSBpbiBgenN0ZF9jcmVhdGVgLiBUaGVzZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHN5c2ZzIGF0dHJpYnV0ZXMgbGlrZSBgYWxnb3JpdGhtX3BhcmFtc2AsIGBjb21wX2FsZ29yaXRobWAsIGFuZCBgcmVjb21wX2FsZ29yaXRobWAuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDM0YmY2NzcwYmFhODUyMDQ2N2ZlM2YxYWM0MzUxZjQyMWRjYzk2MzAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1biAyNyAwNzoyNToyNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmMKaW5kZXggMTBkOWQ1YzYwZjUzMTMuLmQ3OTZlYmRhMWZhMGQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuYwpAQCAtNTcsNSAmIzQzOzU3LDYgQEAgY29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kXzg0MiA9IHsKIAkuZGVzdHJveV9jdHgJPSBkZXN0cm95Xzg0MiwKIAkuc2V0dXBfcGFyYW1zCT0gc2V0dXBfcGFyYW1zXzg0MiwKIAkucmVsZWFzZV9wYXJhbXMJPSByZWxlYXNlX3BhcmFtc184NDIsCiYjNDM7CS5jYXBzCQk9IDAsCiAJLm5hbWUJCT0gJiMzNDs4NDImIzM0OywKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmMKaW5kZXggZjkyYTUyYTcyMGQxZTIuLmNlZGMzZGFhZDMzYWY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jCkBAIC0xNDQsNSAmIzQzOzE0NCw4IEBAIGNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF9kZWZsYXRlID0gewogCS5kZXN0cm95X2N0eAk9IGRlZmxhdGVfZGVzdHJveSwKIAkuc2V0dXBfcGFyYW1zCT0gZGVmbGF0ZV9zZXR1cF9wYXJhbXMsCiAJLnJlbGVhc2VfcGFyYW1zCT0gZGVmbGF0ZV9yZWxlYXNlX3BhcmFtcywKJiM0MzsJLmNhcHMJCT0gWkNPTVBfQ0FQX0xFVkVMLAomIzQzOwkubGV2ZWxfbWluCT0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OLAomIzQzOwkubGV2ZWxfbWF4CT0gWl9CRVNUX0NPTVBSRVNTSU9OLAogCS5uYW1lCQk9ICYjMzQ7ZGVmbGF0ZSYjMzQ7LAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NC5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmMKaW5kZXggYzQ0OWQ1MTFiYTg2ZmUuLmJkMWU1Y2E0ZDEzNDJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuYwpAQCAtMTQ2LDUgJiM0MzsxNDYsOCBAQCBjb25zdCBzdHJ1Y3QgemNvbXBfb3BzIGJhY2tlbmRfbHo0ID0gewogCS5kZXN0cm95X2N0eAk9IGx6NF9kZXN0cm95LAogCS5zZXR1cF9wYXJhbXMJPSBsejRfc2V0dXBfcGFyYW1zLAogCS5yZWxlYXNlX3BhcmFtcwk9IGx6NF9yZWxlYXNlX3BhcmFtcywKJiM0MzsJLmNhcHMJCT0gWkNPTVBfQ0FQX0RJQ1QgfCBaQ09NUF9DQVBfTEVWRUwsCiYjNDM7CS5sZXZlbF9taW4JPSBMWjRfQUNDRUxFUkFUSU9OX0RFRkFVTFQsCiYjNDM7CS5sZXZlbF9tYXgJPSA2NTUzNSwKIAkubmFtZQkJPSAmIzM0O2x6NCYjMzQ7LAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jCmluZGV4IGY2YTMzNmFjZmUyMDJlLi4wZTBkN2M2OGE3ZDQyMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0aGMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jCkBAIC0xMjQsNSAmIzQzOzEyNCw4IEBAIGNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF9sejRoYyA9IHsKIAkuZGVzdHJveV9jdHgJPSBsejRoY19kZXN0cm95LAogCS5zZXR1cF9wYXJhbXMJPSBsejRoY19zZXR1cF9wYXJhbXMsCiAJLnJlbGVhc2VfcGFyYW1zCT0gbHo0aGNfcmVsZWFzZV9wYXJhbXMsCiYjNDM7CS5jYXBzCQk9IFpDT01QX0NBUF9ESUNUIHwgWkNPTVBfQ0FQX0xFVkVMLAomIzQzOwkubGV2ZWxfbWluCT0gTFo0SENfTUlOX0NMRVZFTCwKJiM0MzsJLmxldmVsX21heAk9IExaNEhDX01BWF9DTEVWRUwsCiAJLm5hbWUJCT0gJiMzNDtsejRoYyYjMzQ7LAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6by5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmMKaW5kZXggNGM5MDZiZWFhZTZiMzMuLjk2NWYwMDdlMmNhODk4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uYwpAQCAtNTUsNSAmIzQzOzU1LDYgQEAgY29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kX2x6byA9IHsKIAkuZGVzdHJveV9jdHgJPSBsem9fZGVzdHJveSwKIAkuc2V0dXBfcGFyYW1zCT0gbHpvX3NldHVwX3BhcmFtcywKIAkucmVsZWFzZV9wYXJhbXMJPSBsem9fcmVsZWFzZV9wYXJhbXMsCiYjNDM7CS5jYXBzCQk9IDAsCiAJLm5hbWUJCT0gJiMzNDtsem8mIzM0OywKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6b3JsZS5jCmluZGV4IDEwNjQwYzk2Y2JmY2FhLi43NTdiNDU5OGJlMDMwNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmMKQEAgLTU1LDUgJiM0Mzs1NSw2IEBAIGNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF9sem9ybGUgPSB7CiAJLmRlc3Ryb3lfY3R4CT0gbHpvcmxlX2Rlc3Ryb3ksCiAJLnNldHVwX3BhcmFtcwk9IGx6b3JsZV9zZXR1cF9wYXJhbXMsCiAJLnJlbGVhc2VfcGFyYW1zCT0gbHpvcmxlX3JlbGVhc2VfcGFyYW1zLAomIzQzOwkuY2FwcwkJPSAwLAogCS5uYW1lCQk9ICYjMzQ7bHpvLXJsZSYjMzQ7LAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYwppbmRleCBkMDBiNTQ4MDU2ZGMyZS4uMGZiZDI0NjA4ODNhODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMKQEAgLTE2MSw3ICYjNDM7MTYxLDYgQEAgc3RhdGljIGludCB6c3RkX2NyZWF0ZShzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMsIHN0cnVjdCB6Y29tcF9jdHggKmN0eCkKIAlyZXR1cm4gMDsKIAogZXJyb3I6Ci0JenN0ZF9yZWxlYXNlX3BhcmFtcyhwYXJhbXMpOwogCXpzdGRfZGVzdHJveShjdHgpOwogCXJldHVybiAtRUlOVkFMOwogfQpAQCAtMjEzLDUgJiM0MzsyMTIsOCBAQCBjb25zdCBzdHJ1Y3QgemNvbXBfb3BzIGJhY2tlbmRfenN0ZCA9IHsKIAkuZGVzdHJveV9jdHgJPSB6c3RkX2Rlc3Ryb3ksCiAJLnNldHVwX3BhcmFtcwk9IHpzdGRfc2V0dXBfcGFyYW1zLAogCS5yZWxlYXNlX3BhcmFtcwk9IHpzdGRfcmVsZWFzZV9wYXJhbXMsCiYjNDM7CS5jYXBzCQk9IFpDT01QX0NBUF9ESUNUIHwgWkNPTVBfQ0FQX0xFVkVMLAomIzQzOwkubGV2ZWxfbWluCT0gKGludCktWlNURF9UQVJHRVRMRU5HVEhfTUFYLAomIzQzOwkubGV2ZWxfbWF4CT0gWlNURF9NQVhfQ0xFVkVMLAogCS5uYW1lCQk9ICYjMzQ7enN0ZCYjMzQ7LAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jIGIvZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmMKaW5kZXggOTc0YzQ2OTE4ODdlNmYuLjE1ZGUyOGI1MGQ0MjdmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYwpAQCAtOSw2ICYjNDM7OSw5IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvY3B1aG90cGx1Zy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3ZtYWxsb2MuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zeXNmcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9sejQuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvemxpYi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC96c3RkLmgmZ3Q7CiAKICNpbmNsdWRlICYjMzQ7emNvbXAuaCYjMzQ7CiAKQEAgLTk0LDYgJiM0Mzs5NywyNiBAQCBjb25zdCBjaGFyICp6Y29tcF9sb29rdXBfYmFja2VuZF9uYW1lKGNvbnN0IGNoYXIgKmNvbXApCiAJcmV0dXJuIE5VTEw7CiB9CiAKJiM0Mzt1bnNpZ25lZCBpbnQgemNvbXBfZ2V0X2NhcHMoY29uc3QgY2hhciAqY29tcCkKJiM0Mzt7CiYjNDM7CWNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgKmJhY2tlbmQgPSBsb29rdXBfYmFja2VuZF9vcHMoY29tcCk7CiYjNDM7CiYjNDM7CXJldHVybiBiYWNrZW5kID8gYmFja2VuZC0mZ3Q7Y2FwcyA6IDA7CiYjNDM7fQomIzQzOwomIzQzO2ludCB6Y29tcF92YWxpZGF0ZV9sZXZlbChjb25zdCBjaGFyICpjb21wLCBzMzIgbGV2ZWwpCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgemNvbXBfb3BzICpiYWNrZW5kID0gbG9va3VwX2JhY2tlbmRfb3BzKGNvbXApOwomIzQzOwomIzQzOwlpZiAoIWJhY2tlbmQpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJaWYgKCEoYmFja2VuZC0mZ3Q7Y2FwcyAmYW1wOyBaQ09NUF9DQVBfTEVWRUwpKQomIzQzOwkJcmV0dXJuIC1FT1BOT1RTVVBQOwomIzQzOwlpZiAobGV2ZWwgJmx0OyBiYWNrZW5kLSZndDtsZXZlbF9taW4gfHwgbGV2ZWwgJmd0OyBiYWNrZW5kLSZndDtsZXZlbF9tYXgpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogLyogc2hvdyBhdmFpbGFibGUgY29tcHJlc3NvcnMgKi8KIHNzaXplX3QgemNvbXBfYXZhaWxhYmxlX3Nob3coY29uc3QgY2hhciAqY29tcCwgY2hhciAqYnVmLCBzc2l6ZV90IGF0KQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmggYi9kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuaAppbmRleCA4MWEwZjNmNmZmNDg3MS4uMTZmODEyYTk0YzY3ZDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oCkBAIC03LDYgJiM0Mzs3LDkgQEAKIAogI2RlZmluZSBaQ09NUF9QQVJBTV9OT1RfU0VUCUlOVF9NSU4KIAomIzQzOyNkZWZpbmUgWkNPTVBfQ0FQX0RJQ1QJCUJJVCgwKQkvKiBkaWN0aW9uYXJ5IHN1cHBvcnQgKi8KJiM0MzsjZGVmaW5lIFpDT01QX0NBUF9MRVZFTAkJQklUKDEpCS8qIGFkanVzdGFibGUgY29tcHJlc3Npb24gbGV2ZWwgKi8KJiM0MzsKIHN0cnVjdCBkZWZsYXRlX3BhcmFtcyB7CiAJczMyIHdpbmJpdHM7CiB9OwpAQCAtNjYsNiAmIzQzOzY5LDkgQEAgc3RydWN0IHpjb21wX29wcyB7CiAJaW50ICgqc2V0dXBfcGFyYW1zKShzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpOwogCXZvaWQgKCpyZWxlYXNlX3BhcmFtcykoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKTsKIAomIzQzOwl1bnNpZ25lZCBpbnQgY2FwczsKJiM0MzsJczMyIGxldmVsX21pbjsKJiM0MzsJczMyIGxldmVsX21heDsKIAljb25zdCBjaGFyICpuYW1lOwogfTsKIApAQCAtODEsNiAmIzQzOzg3LDggQEAgaW50IHpjb21wX2NwdV91cF9wcmVwYXJlKHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCBobGlzdF9ub2RlICpub2RlKTsKIGludCB6Y29tcF9jcHVfZGVhZCh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9kZSk7CiBzc2l6ZV90IHpjb21wX2F2YWlsYWJsZV9zaG93KGNvbnN0IGNoYXIgKmNvbXAsIGNoYXIgKmJ1Ziwgc3NpemVfdCBhdCk7CiBjb25zdCBjaGFyICp6Y29tcF9sb29rdXBfYmFja2VuZF9uYW1lKGNvbnN0IGNoYXIgKmNvbXApOwomIzQzO3Vuc2lnbmVkIGludCB6Y29tcF9nZXRfY2Fwcyhjb25zdCBjaGFyICpjb21wKTsKJiM0MztpbnQgemNvbXBfdmFsaWRhdGVfbGV2ZWwoY29uc3QgY2hhciAqY29tcCwgczMyIGxldmVsKTsKIAogc3RydWN0IHpjb21wICp6Y29tcF9jcmVhdGUoY29uc3QgY2hhciAqYWxnLCBzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpOwogdm9pZCB6Y29tcF9kZXN0cm95KHN0cnVjdCB6Y29tcCAqY29tcCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyBiL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jCmluZGV4IGFjZTY1YzU4NjA3MmJhLi42YjQ3NTg2ZTg3MThjOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMKQEAgLTU3LDYgJiM0Mzs1Nyw3IEBAIHN0YXRpYyBzaXplX3QgaHVnZV9jbGFzc19zaXplOwogc3RhdGljIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB6cmFtX2Rldm9wczsKIAogc3RhdGljIHZvaWQgc2xvdF9mcmVlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgaW5kZXgpOwomIzQzO3N0YXRpYyB2b2lkIGNvbXBfcGFyYW1zX3Jlc2V0KHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbyk7CiAjZGVmaW5lIHNsb3RfZGVwX21hcCh6cmFtLCBpbmRleCkgKCZhbXA7KHpyYW0pLSZndDt0YWJsZVsoaW5kZXgpXS5kZXBfbWFwKQogCiBzdGF0aWMgdm9pZCBzbG90X2xvY2tfaW5pdChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIGluZGV4KQpAQCAtMTY4MSw2ICYjNDM7MTY4Miw3IEBAIHN0YXRpYyBpbnQgX19jb21wX2FsZ29yaXRobV9zdG9yZShzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIGNvbnN0IGNoYXIgKmJ1ZikKIAl9CiAKIAljb21wX2FsZ29yaXRobV9zZXQoenJhbSwgcHJpbywgYWxnKTsKJiM0MzsJY29tcF9wYXJhbXNfcmVzZXQoenJhbSwgcHJpbyk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTE2OTksMjEgJiM0MzsxNzAxLDI0IEBAIHN0YXRpYyBpbnQgY29tcF9wYXJhbXNfc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBzMzIgbGV2ZWwsCiAJCQkgICAgIGNvbnN0IGNoYXIgKmRpY3RfcGF0aCwKIAkJCSAgICAgc3RydWN0IGRlZmxhdGVfcGFyYW1zICpkZWZsYXRlX3BhcmFtcykKIHsKJiM0MzsJdm9pZCAqbmV3X2RpY3QgPSBOVUxMOwogCXNzaXplX3Qgc3ogPSAwOwogCi0JY29tcF9wYXJhbXNfcmVzZXQoenJhbSwgcHJpbyk7Ci0KIAlpZiAoZGljdF9wYXRoKSB7Ci0JCXN6ID0ga2VybmVsX3JlYWRfZmlsZV9mcm9tX3BhdGgoZGljdF9wYXRoLCAwLAotCQkJCQkJJmFtcDt6cmFtLSZndDtwYXJhbXNbcHJpb10uZGljdCwKLQkJCQkJCUlOVF9NQVgsCi0JCQkJCQlOVUxMLAotCQkJCQkJUkVBRElOR19QT0xJQ1kpOwotCQlpZiAoc3ogJmx0OyAwKQomIzQzOwkJc3ogPSBrZXJuZWxfcmVhZF9maWxlX2Zyb21fcGF0aChkaWN0X3BhdGgsIDAsICZhbXA7bmV3X2RpY3QsCiYjNDM7CQkJCQkJSU5UX01BWCwgTlVMTCwgUkVBRElOR19QT0xJQ1kpOwomIzQzOwkJaWYgKHN6ICZsdDsgMCkgewomIzQzOwkJCXZmcmVlKG5ld19kaWN0KTsKJiM0MzsJCQlyZXR1cm4gc3o7CiYjNDM7CQl9IGVsc2UgaWYgKHN6ID09IDApIHsKJiM0MzsJCQl2ZnJlZShuZXdfZGljdCk7CiAJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCX0KIAl9CiAKJiM0MzsJY29tcF9wYXJhbXNfcmVzZXQoenJhbSwgcHJpbyk7CiAJenJhbS0mZ3Q7cGFyYW1zW3ByaW9dLmRpY3Rfc3ogPSBzejsKJiM0MzsJenJhbS0mZ3Q7cGFyYW1zW3ByaW9dLmRpY3QgPSBuZXdfZGljdDsKIAl6cmFtLSZndDtwYXJhbXNbcHJpb10ubGV2ZWwgPSBsZXZlbDsKIAl6cmFtLSZndDtwYXJhbXNbcHJpb10uZGVmbGF0ZS53aW5iaXRzID0gZGVmbGF0ZV9wYXJhbXMtJmd0O3dpbmJpdHM7CiAJcmV0dXJuIDA7CkBAIC0xNzk0LDYgJiM0MzsxNzk5LDE5IEBAIHN0YXRpYyBzc2l6ZV90IGFsZ29yaXRobV9wYXJhbXNfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LAogCQkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCiYjNDM7CWlmICh6cmFtLSZndDtjb21wX2FsZ3NbcHJpb10pIHsKJiM0MzsJCXVuc2lnbmVkIGludCBjYXBzID0gemNvbXBfZ2V0X2NhcHMoenJhbS0mZ3Q7Y29tcF9hbGdzW3ByaW9dKTsKJiM0MzsKJiM0MzsJCWlmIChkaWN0X3BhdGggJmFtcDsmYW1wOyAhKGNhcHMgJmFtcDsgWkNPTVBfQ0FQX0RJQ1QpKQomIzQzOwkJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsKJiM0MzsJCWlmIChsZXZlbCAhPSBaQ09NUF9QQVJBTV9OT1RfU0VUKSB7CiYjNDM7CQkJcmV0ID0gemNvbXBfdmFsaWRhdGVfbGV2ZWwoenJhbS0mZ3Q7Y29tcF9hbGdzW3ByaW9dLCBsZXZlbCk7CiYjNDM7CQkJaWYgKHJldCkKJiM0MzsJCQkJcmV0dXJuIHJldDsKJiM0MzsJCX0KJiM0MzsJfQomIzQzOwogCXJldCA9IGNvbXBfcGFyYW1zX3N0b3JlKHpyYW0sIHByaW8sIGxldmVsLCBkaWN0X3BhdGgsICZhbXA7ZGVmbGF0ZV9wYXJhbXMpOwogCXJldHVybiByZXQgPyByZXQgOiBsZW47CiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3pzdGRfbGliLmggYi9pbmNsdWRlL2xpbnV4L3pzdGRfbGliLmgKaW5kZXggZTI5NWQ0MTI1ZGRlODQuLmY0YjI2ODQ0ZTUzYWRlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3pzdGRfbGliLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC96c3RkX2xpYi5oCkBAIC0xMjQxLDYgJiM0MzsxMjQxLDcgQEAgWlNURExJQl9BUEkgc2l6ZV90IFpTVERfc2l6ZW9mX0REaWN0KGNvbnN0IFpTVERfRERpY3QqIGRkaWN0KTsKICNkZWZpbmUgWlNURF9TRUFSQ0hMT0dfTUlOICAgICAgICAxCiAjZGVmaW5lIFpTVERfTUlOTUFUQ0hfTUFYICAgICAgICAgNyAgIC8qIG9ubHkgZm9yIFpTVERfZmFzdCwgb3RoZXIgc3RyYXRlZ2llcyBhcmUgbGltaXRlZCB0byA2ICovCiAjZGVmaW5lIFpTVERfTUlOTUFUQ0hfTUlOICAgICAgICAgMyAgIC8qIG9ubHkgZm9yIFpTVERfYnRvcHQmIzQzOywgZmFzdGVyIHN0cmF0ZWdpZXMgYXJlIGxpbWl0ZWQgdG8gNCAqLwomIzQzOyNkZWZpbmUgWlNURF9NQVhfQ0xFVkVMCQkyMgogI2RlZmluZSBaU1REX1RBUkdFVExFTkdUSF9NQVggICAgWlNURF9CTE9DS1NJWkVfTUFYCiAjZGVmaW5lIFpTVERfVEFSR0VUTEVOR1RIX01JTiAgICAgMCAgIC8qIG5vdGUgOiBjb21wYXJpbmcgdGhpcyBjb25zdGFudCB0byBhbiB1bnNpZ25lZCByZXN1bHRzIGluIGEgdGF1dG9sb2dpY2FsIHRlc3QgKi8KICNkZWZpbmUgWlNURF9TVFJBVEVHWV9NSU4gICAgICAgIFpTVERfZmFzdApkaWZmIC0tZ2l0IGEvbGliL3pzdGQvY29tcHJlc3MvY2xldmVscy5oIGIvbGliL3pzdGQvY29tcHJlc3MvY2xldmVscy5oCmluZGV4IDZhYjhiZTY1MzJlZmMwLi5kYjNiMjc1YjUwMmU2YyAxMDA2NDQKLS0tIGEvbGliL3pzdGQvY29tcHJlc3MvY2xldmVscy5oCiYjNDM7JiM0MzsmIzQzOyBiL2xpYi96c3RkL2NvbXByZXNzL2NsZXZlbHMuaApAQCAtMTcsNyAmIzQzOzE3LDYgQEAKIAogLyotPT09PT0gIFByZS1kZWZpbmVkIGNvbXByZXNzaW9uIGxldmVscyAgPT09PT0tKi8KIAotI2RlZmluZSBaU1REX01BWF9DTEVWRUwgICAgIDIyCiAKIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1ODQKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgWnJhbSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgbWFraW5nIHNvbWUgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZXMgdG8gdGhlIGB6cmFtYCBkcml2ZXIsIHNwZWNpZmljYWxseSB3aXRoaW4gYGRyaXZlcnMvYmxvY2svenJhbS9gLiBJdCYjMzk7cyBpbnRyb2R1Y2luZyBuZXcgY29tcHJlc3Npb24gYmFja2VuZCBjYXBhYmlsaXRpZXMgLSB0aGluayA4NDIsIGRlZmxhdGUsIGx6NCwgbHo0aGMsIGx6bywgbHpvcmxlLCBhbmQgenN0ZCAtIHdoaWNoIGlzIGdyZWF0IHRvIHNlZS4gVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSB0aGUgYWRkaXRpb24gb2YgYGNhcHNgLCBgbGV2ZWxfbWluYCwgYW5kIGBsZXZlbF9tYXhgIHRvIHRoZSBgc3RydWN0IHpjb21wX29wc2AsIGFsb25nIHdpdGggYHpjb21wX2dldF9jYXBzKClgIGFuZCBgemNvbXBfdmFsaWRhdGVfbGV2ZWwoKWAgZnVuY3Rpb25zIGluIGB6Y29tcC5jYC4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtYWtlIHN1cmUgdGhpcyBpcyBhbGwgdmFsaWQgYW5kIHdvcmtpbmcgYXMgaXQgc2hvdWxkLiBUaGUgY29yZSBvZiB0aGUgZnVuY3Rpb25hbGl0eSBoaW5nZXMgb24gYHpyYW1fZHJ2LmNgLCBzcGVjaWZpY2FsbHkgdGhlIHZhbGlkYXRpb24gcm91dGluZXMgaXQmIzM5O3MgYWRkaW5nIGZvciBjb21wcmVzc2lvbiBsZXZlbHMgYW5kIGRpY3Rpb25hcnkgc3VwcG9ydC4gSXTigJlzIGEgZ29vZCB0aGluZywgYSBzYW5pdHkgY2hlY2ssIHdoZW4gc3RvcmluZyBhbGdvcml0aG0gcGFyYW1ldGVycy4gUGx1cywgYW5kIHRoaXMgaXMgaW1wb3J0YW50LCBJIHNlZSBpdCYjMzk7cyBhbHNvIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgb3IgYSBzaW1pbGFyIGlzc3VlIHdpdGhpbiBgY29tcF9wYXJhbXNfc3RvcmVgLiBUaGV5JiMzOTtyZSBub3cgdXNpbmcgYG5ld19kaWN0YCBhbmQgZnJlZWluZyBpdCBvbiBlcnJvciwgYW5kIHRoZXkmIzM5O3JlIHJlc2V0dGluZyBwYXJhbWV0ZXJzIGNvcnJlY3RseS4gQW5kIHRoZXkmIzM5O3ZlIHNtYXJ0bHkgcmVtb3ZlZCBgenN0ZF9yZWxlYXNlX3BhcmFtcyhwYXJhbXMpYCBmcm9tIHRoZSBgenN0ZF9jcmVhdGVgIGVycm9yIHBhdGggLSB0aGF0JiMzOTtzIGEgY2xhc3NpYyB0cmFwLCBhbmQgdGhleSYjMzk7dmUgYXZvaWRlZCBpdCEKCk5vdywgbGV0JiMzOTtzIHNlZSBpZiB0aGlzIGlzIHJlYWNoYWJsZS4gKlllcyosIHRoZSBjaGFuZ2VzIHdpdGhpbiB0aGUgYHpyYW1gIGRyaXZlciBtZWFuIGl0JiMzOTtzIGFic29sdXRlbHkgcmVhY2hhYmxlIHZpYSBzeXNmcywgcGFydGljdWxhcmx5IHRocm91Z2ggYGFsZ29yaXRobV9wYXJhbXNfc3RvcmVgLiBGcm9tIGFuIGluaXRpYWwgZnVuY3Rpb25hbCBzdGFuZHBvaW50LCBpdCBsb29rcyBzb3VuZC4gVGhlIHZhbGlkYXRpb24gY2hlY2tzLCB0aGUgbWVtb3J5IGxlYWsgZml4Li4uIGFsbCBwb3NpdGl2ZSBzaWducy4KClJpZ2h0LCBzbyB0byBtYWtlIHN1cmUgaXQmIzM5O3MgYWxsIGhvb2tlZCBpbiBjb3JyZWN0bHksIEkgbmVlZCB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBMb29rcyBsaWtlIHRoZSBwcmltYXJ5IGNvbmZpZyB2YXJpYWJsZSBpcyBgQ09ORklHX1pSQU1gLCBvZiBjb3Vyc2UuIEkmIzM5O2xsIG5lZWQgdG8gZHJpbGwgZG93biBpbnRvIGVpdGhlciBgZHJpdmVycy9ibG9jay96cmFtL0tjb25maWdgIG9yIGBkcml2ZXJzL2Jsb2NrL0tjb25maWdgIHRvIGNvbmZpcm0gZXZlcnl0aGluZyBpcyBjb3JyZWN0bHkgZW5hYmxlZCBhbmQgY29uZmlndXJlZCBiYXNlZCBvbiB0aGlzIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBaUkFNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoyOmNvbmZpZyBaUkFNXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7Q29tcHJlc3NlZCBSQU0gYmxvY2sgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xNi1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjE3OmNvbmZpZyBaUkFNX0JBQ0tFTkRfTFo0XG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xOC1cdGJvb2wgXCYjMzQ7bHo0IGNvbXByZXNzaW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0yMi1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjIzOmNvbmZpZyBaUkFNX0JBQ0tFTkRfTFo0SENcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTI0LVx0Ym9vbCBcJiMzNDtsejRoYyBjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMjgtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoyOTpjb25maWcgWlJBTV9CQUNLRU5EX1pTVERcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTMwLVx0Ym9vbCBcJiMzNDt6c3RkIGNvbXByZXNzaW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zNC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjM1OmNvbmZpZyBaUkFNX0JBQ0tFTkRfREVGTEFURVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMzYtXHRib29sIFwmIzM0O2RlZmxhdGUgY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQwLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NDE6Y29uZmlnIFpSQU1fQkFDS0VORF84NDJcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDs4NDIgY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQ2LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NDc6Y29uZmlnIFpSQU1fQkFDS0VORF9GT1JDRV9MWk9cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQ4LVx0ZGVwZW5kcyBvbiBaUkFNXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNTItXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo1Mzpjb25maWcgWlJBTV9CQUNLRU5EX0xaT1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNTQtXHRib29sIFwmIzM0O2x6byBhbmQgbHpvLXJsZSBjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7IGlmICFaUkFNX0JBQ0tFTkRfRk9SQ0VfTFpPXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9NjA9Y2hvaWNlXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjQtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo2NTpjb25maWcgWlJBTV9ERUZfQ09NUF9MWk9STEVcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTY2LVx0Ym9vbCBcJiMzNDtsem8tcmxlXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjgtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo2OTpjb25maWcgWlJBTV9ERUZfQ09NUF9MWk9cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTcwLVx0Ym9vbCBcJiMzNDtsem9cJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03Mi1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjczOmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaNFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzQtXHRib29sIFwmIzM0O2x6NFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTc2LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6Nzc6Y29uZmlnIFpSQU1fREVGX0NPTVBfTFo0SENcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTc4LVx0Ym9vbCBcJiMzNDtsejRoY1wmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTgwLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6ODE6Y29uZmlnIFpSQU1fREVGX0NPTVBfWlNURFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODItXHRib29sIFwmIzM0O3pzdGRcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04NC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjg1OmNvbmZpZyBaUkFNX0RFRl9DT01QX0RFRkxBVEVcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTg2LVx0Ym9vbCBcJiMzNDtkZWZsYXRlXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODgtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo4OTpjb25maWcgWlJBTV9ERUZfQ09NUF84NDJcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTkwLVx0Ym9vbCBcJiMzNDs4NDJcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz05Mz1lbmRjaG9pY2VcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTk0LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6OTU6Y29uZmlnIFpSQU1fREVGX0NPTVBcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTk2LVx0c3RyaW5nXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTA2LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTA3OmNvbmZpZyBaUkFNX1dSSVRFQkFDS1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTA4LSAgICAgICBib29sIFwmIzM0O1dyaXRlIGJhY2sgaW5jb21wcmVzc2libGUgb3IgaWRsZSBwYWdlIHRvIGJhY2tpbmcgZGV2aWNlXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTIwLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTIxOmNvbmZpZyBaUkFNX1RSQUNLX0VOVFJZX0FDVElNRVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTIyLVx0Ym9vbCBcJiMzNDtUcmFjayBhY2Nlc3MgdGltZSBvZiB6cmFtIGVudHJpZXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMjgtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMjk6Y29uZmlnIFpSQU1fTUVNT1JZX1RSQUNLSU5HXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMzAtXHRib29sIFwmIzM0O1RyYWNrIHpSYW0gYmxvY2sgc3RhdHVzXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTM5LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTQwOmNvbmZpZyBaUkFNX01VTFRJX0NPTVBcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE0MS1cdGJvb2wgXCYjMzQ7RW5hYmxlIG11bHRpcGxlIGNvbXByZXNzaW9uIHN0cmVhbXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjYyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBtb2RpZmljYXRpb25zLgoKKipBbmFseXppbmcgdGhlIFpyYW0gUGF0Y2gqKgoKQWxyaWdodCwgc28gdGhpcyBwYXRjaCBoaXRzIGB6cmFtX2Rydi5jYCwgYHpjb21wLmNgLCBhbmQgYSBidW5jaCBvZiBiYWNrZW5kIGZpbGVzLiBUaGF0JiMzOTtzIGEgZ29vZCBwbGFjZSB0byBzdGFydCwgaGl0dGluZyB0aGUgY29yZSBkcml2ZXIsIHRoZSBjb21wcmVzc2lvbiByb3V0aW5lcywgYW5kIGxpa2VseSB0aGUgYmxvY2sgZGV2aWNlIGludGVyYWN0aW9uLiBMZXQmIzM5O3MgZGlnIGludG8gYHpyYW1fZHJ2LmNgIGZpcnN0LiBJIHdhbnQgdG8gc2VlIHdoaWNoIGZ1bmN0aW9ucyB3ZXJlIHRvdWNoZWQgdGhlcmUuIFRoYXQgZmlsZSBpcyB0aGUgaGVhcnQgb2YgdGhlIGJsb2NrIGRldmljZSBlbXVsYXRpb24sIHNvIGFueSBjaGFuZ2VzIHRoZXJlIGFyZSBnb2luZyB0byBiZSBjcml0aWNhbCB0byB1bmRlcnN0YW5kLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgKndoYXQqIHRoZXkgbW9kaWZpZWQgaW4gdGhhdCBjcnVjaWFsIGZpbGUgdG8gZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBhY3Jvc3MgdGhlIGVudGlyZSBzdWJzeXN0ZW0uIFRoaXMgaXMgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthbGdvcml0aG1fcGFyYW1zX3N0b3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTcwMD1zdGF0aWMgaW50IGNvbXBfcGFyYW1zX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgczMyIGxldmVsLFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE3MjYtXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxNzI3OnN0YXRpYyBzc2l6ZV90IGFsZ29yaXRobV9wYXJhbXNfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTcyOC1cdFx0XHRcdCAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwMzcKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgUGFyYW1ldGVyIGFuZCBBbGdvcml0aG0gU3RvcmFnZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdHdvIGtleSBzdG9yYWdlIGxvY2F0aW9uczogYGNvbXBfcGFyYW1zX3N0b3JlYCBhbmQgYF9fY29tcF9hbGdvcml0aG1fc3RvcmVgLiBJdCYjMzk7cyBwcmV0dHkgc3RhbmRhcmQgdG8ga2VlcCBwYXJhbWV0ZXJzIHNlcGFyYXRlIGZyb20gdGhlIGFsZ29yaXRobXMgdGhlbXNlbHZlcywgZXNwZWNpYWxseSBpbiBtb3JlIGNvbXBsZXggY29tcHV0YXRpb25hbCBzZXR1cHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcGFyYW1ldGVycyBhcmUgYmVpbmcgb3JnYW5pemVkIGluIGBjb21wX3BhcmFtc19zdG9yZWAuIElzIGl0IGEga2V5LXZhbHVlIHN0b3JlPyBTdHJ1Y3R1cmVkIGRhdGE/IEhvdyBpcyBpdCBpbmRleGVkLCBpZiBhdCBhbGw/IFRoZSBnb2FsIGlzIHRvIHNlZSBpZiBJIGNhbiB0cmFjZSBob3cgc3BlY2lmaWMgcGFyYW1ldGVyIHNldHMgYXJlIHRpZWQgdG8gcGFydGljdWxhciBjb21wdXRhdGlvbmFsIG1vZGVscy4KCk5leHQsIHRoZSBgX19jb21wX2FsZ29yaXRobV9zdG9yZWAuLi50aGUgZG91YmxlIHVuZGVyc2NvcmUgc3VnZ2VzdHMgaXQmIzM5O3MgYSBwcml2YXRlIG9yIGludGVybmFsIGNvbXBvbmVudC4gTm8gcHJvYmxlbSwgdGhhdCYjMzk7cyBmaW5lLiBXaGF04oCZcyBpbXBvcnRhbnQgaXMgaG93IGFsZ29yaXRobXMgYXJlICpyZXByZXNlbnRlZCogd2l0aGluIHRoaXMgc3RvcmUuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGZ1bmN0aW9uIHBvaW50ZXJzPyBTZXJpYWxpemVkIGNvZGUgb2JqZWN0cz8gQWJzdHJhY3QgcmVwcmVzZW50YXRpb25zIHRoYXQgbmVlZCB0byBiZSBpbnRlcnByZXRlZCBieSBhIHNwZWNpZmljIGVuZ2luZT8gVGhlIGxldmVsIG9mIGFic3RyYWN0aW9uIGhlcmUgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZsZXhpYmlsaXR5IGFuZCBleHRlbnNpYmlsaXR5IG9mIHRoZSBzeXN0ZW0uIEkgd2lsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3bywgaG93IHRoZSBwYXJhbWV0ZXJzIGluIHRoZSBmaXJzdCBhcmUgYXBwbGllZCB0byB0aGUgYWxnb3JpdGhtIGluIHRoZSBzZWNvbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29tcF9wYXJhbXNfc3RvcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xNjg5PXN0YXRpYyB2b2lkIGNvbXBfcGFyYW1zX3Jlc2V0KHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbylcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xNjk5LVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTcwMDpzdGF0aWMgaW50IGNvbXBfcGFyYW1zX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgczMyIGxldmVsLFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTcwMS1cdFx0XHQgICAgIGNvbnN0IGNoYXIgKmRpY3RfcGF0aCxcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xNzI3PXN0YXRpYyBzc2l6ZV90IGFsZ29yaXRobV9wYXJhbXNfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4MTQtXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxODE1Olx0cmV0ID0gY29tcF9wYXJhbXNfc3RvcmUoenJhbSwgcHJpbywgbGV2ZWwsIGRpY3RfcGF0aCwgXHUwMDI2ZGVmbGF0ZV9wYXJhbXMpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTgxNi1cdHJldHVybiByZXQgPyByZXQgOiBsZW47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODYzOAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgbGlrZSB5b3Vyc2VsZjoKCioqQW5hbHl6aW5nIHRoZSBBbGdvcml0aG0gU3RvcmUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgZXhhbWluZSB0aGUgYF9fY29tcF9hbGdvcml0aG1fc3RvcmVgLiBUaGF0JiMzOTtzIHdoZXJlIEkgd291bGQgZXhwZWN0IHRoZSBjb3JlIG9mIHRoaXMgd2hvbGUgdGhpbmcgdG8gbGl2ZSwgd291bGRuJiMzOTt0IHlvdT8gVGhpcyBpcyB0aGUgY2VudHJhbCByZXBvc2l0b3J5LCB0aGUgb3BlcmF0aW9uYWwgaGVhcnQgb2YgdGhlIHN5c3RlbSB3aGVuIGl0IGNvbWVzIHRvIGNvbXB1dGF0aW9uLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gbG9vayBhdCBob3cgaXQmIzM5O3Mgc3RydWN0dXJlZCwgaXRzIGFjY2VzcyBtZXRob2RzLCBhbmQsIG9mIGNvdXJzZSwgdGhlIGFsZ29yaXRobXMgdGhlbXNlbHZlcy4gV2hhdCBraW5kIG9mIG1ldGFkYXRhIGRvZXMgaXQgaGF2ZT8gVmVyc2lvbmluZz8gRGVwZW5kZW5jeSBtYW5hZ2VtZW50PyBBcmUgdGhlIGFsZ29yaXRobXMgZHluYW1pY2FsbHkgbG9hZGVkIG9yIHN0YXRpY2FsbHkgbGlua2VkPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MgaW4gdGhlIHN0b3JlIGl0c2VsZj8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgc3RvcmUmIzM5O3MgZGVzaWduIG9uIHN5c3RlbSBzY2FsYWJpbGl0eSBhbmQgbWFpbnRhaW5hYmlsaXR5PyBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHF1ZXN0aW9ucyBhYm91dCBwb3RlbnRpYWwgY29uY3VycmVuY3kgaXNzdWVzIGFuZCBzZWN1cml0eSBpbXBsaWNhdGlvbnMgaWYgdGhpcyBpcyBub3QgaGFuZGxlZCBjb3JyZWN0bHkuIFRoZSBkZXNpZ24gb2YgdGhpcyBzdG9yZSBpcyBwYXJhbW91bnQgdG8gdGhlIGVudGlyZSBvcGVyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fY29tcF9hbGdvcml0aG1fc3RvcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xNjYwPXN0YXRpYyB2b2lkIGNvbXBfYWxnb3JpdGhtX3NldChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIGNvbnN0IGNoYXIgKmFsZylcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xNjY0LVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTY2NTpzdGF0aWMgaW50IF9fY29tcF9hbGdvcml0aG1fc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBjb25zdCBjaGFyICpidWYpXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xNjY2LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xODMxPXN0YXRpYyBzc2l6ZV90IGNvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODM4LVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTgzOTpcdHJldCA9IF9fY29tcF9hbGdvcml0aG1fc3RvcmUoenJhbSwgWlJBTV9QUklNQVJZX0NPTVAsIGJ1Zik7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODQwLVx0cmV0dXJuIHJldCA/IHJldCA6IGxlbjtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xODYzPXN0YXRpYyBzc2l6ZV90IHJlY29tcF9hbGdvcml0aG1fc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4OTktXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxOTAwOlx0cmV0ID0gX19jb21wX2FsZ29yaXRobV9zdG9yZSh6cmFtLCBwcmlvLCBhbGcpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTkwMS1cdHJldHVybiByZXQgPyByZXQgOiBsZW47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyODgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBaUkFNIEFsZ29yaXRobSBQYXJhbWV0ZXIgSGFuZGxpbmcqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiByZXZpZXdpbmcgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IGV4cGVydCBleWUgZ29lcyB0byB0aGUgc3lzdGVtIGZpbGUgc3RvcmUgZnVuY3Rpb25zOiBgYWxnb3JpdGhtX3BhcmFtc19zdG9yZWAsIGBjb21wX2FsZ29yaXRobV9zdG9yZWAsIGFuZCBgcmVjb21wX2FsZ29yaXRobV9zdG9yZWAuIFRoZXNlIGFyZSB0aGUgZW50cnkgcG9pbnRzIOKAkyB0aGUgZ2F0ZXdheXMg4oCTIHVzZXJzcGFjZSB1dGlsaXplcyB2aWEgYC9zeXMvYmxvY2svenJhbVgvYWxnb19wYXJhbXNgIG9yIHNpbWlsYXIgc3lzZnMgbm9kZXMuCgpUaGlzIHBhdGNoLCBzcGVjaWZpY2FsbHksIGludHJvZHVjZXMgdHdvIG5ldyBmdW5jdGlvbnMsIGB6Y29tcF9nZXRfY2Fwc2AgYW5kIGB6Y29tcF92YWxpZGF0ZV9sZXZlbGAuIFBsdXMsIGl0IHRvdWNoZXMgYGNvbXBfcGFyYW1zX3N0b3JlYCB0byBhZGRyZXNzIGEgbWVtb3J5IGxlYWsgaXNzdWUuIEFwcGFyZW50bHksIHRoZXkgd2VyZSB1c2luZyBgbmV3X2RpY3RgIHdoZW4gdGhleSBzaG91bGQgaGF2ZSBiZWVuIHdyaXRpbmcgZGlyZWN0bHkgdG8gYHpyYW0tJmd0O3BhcmFtc1twcmlvXS5kaWN0YC4KClRoaXMgc2NyZWFtcyBmdXp6aW5nIHRhcmdldC4gVGhvc2Ugc3RvcmUgZnVuY3Rpb25zIGFuZCBuZXcgZnVuY3Rpb25zIGFyZSBwcmltZSBjYW5kaWRhdGVzIGZvciBmaW5kaW5nIHZ1bG5lcmFiaWxpdGllcy4gSSBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbjoKCiogICBgYWxnb3JpdGhtX3BhcmFtc19zdG9yZWAKKiAgIGBjb21wX3BhcmFtc19zdG9yZWAKKiAgIGBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlYCAoVGhhdCBkb3VibGUgdW5kZXJzY29yZSBpcyBhIGJpdCBvZiBhIGZsYWcsIHRvby4pCiogICBgemNvbXBfZ2V0X2NhcHNgCiogICBgemNvbXBfdmFsaWRhdGVfbGV2ZWxgCgpCZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byB0aGlzLCBJIHNob3VsZCB2ZXJpZnkgdGhlIGV4YWN0IG5hbWUgb2YgYGFsZ29yaXRobV9wYXJhbXNfc3RvcmVgLiBOZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIHdvcmtpbmcgd2l0aCB0aGUgY29ycmVjdCBzeW1ib2wuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FsZ29yaXRobV9wYXJhbXNfc3RvcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xNzAwPXN0YXRpYyBpbnQgY29tcF9wYXJhbXNfc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBzMzIgbGV2ZWwsXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTcyNi1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjE3Mjc6c3RhdGljIHNzaXplX3QgYWxnb3JpdGhtX3BhcmFtc19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xNzI4LVx0XHRcdFx0ICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk5NjUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUgZGVlcGx5IGZhbWlsaWFyIHdpdGggdGhpcyBraW5kIG9mIHN5c3RlbToKCioqQ2hlY2tpbmcgdGhlIE5vbWVuY2xhdHVyZSoqCgpBbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIGluLCBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhhdCB0aGUgdmFyaWFibGUgb3Igc3RvcmUgSSYjMzk7bSB3b3JraW5nIHdpdGggaXMsIGluIGZhY3QsIGNhbGxlZCBgY29tcF9hbGdvcml0aG1fc3RvcmVgLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHN0ZXAsIHJlYWxseS4gVHlwb3MgYW5kIGluY29ycmVjdCBuYW1pbmcgY29udmVudGlvbnMgYXJlIHRoZSBiYW5lIG9mIG15IGV4aXN0ZW5jZSwgYW5kIHRoZXkgY2FuIGxlYWQgdG8gaG91cnMgb2YgZGVidWdnaW5nIOKAkyBjb21wbGV0ZWx5IHVubmVjZXNzYXJ5IGhvdXJzLCBJIG1pZ2h0IGFkZC4gU28sIGxldCYjMzk7cyBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgdGhlIHByZWNpc2UsIGNhbm9uaWNhbCBuYW1lIHdlJiMzOTtyZSB1c2luZy4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBjaGFzaW5nIGEgcGhhbnRvbSByZWZlcmVuY2UgZG93biB0aGUgd3JvbmcgcGF0aC4gTm8gc2Vuc2UgaW4gd2FzdGluZyB0aW1lIG9uIGEgbWlzbmFtZWQgdmFyaWFibGUuIExldCYjMzk7cyBtYWtlIHN1cmUgdGhhdCYjMzk7cyBzcXVhcmVkIGF3YXkgZmlyc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbXBfYWxnb3JpdGhtX3N0b3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTY2MD1zdGF0aWMgdm9pZCBjb21wX2FsZ29yaXRobV9zZXQoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBjb25zdCBjaGFyICphbGcpXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTY2NC1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjE2NjU6c3RhdGljIGludCBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgY29uc3QgY2hhciAqYnVmKVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTY2Ni17XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTgxOT1zdGF0aWMgc3NpemVfdCBjb21wX2FsZ29yaXRobV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODMwLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTgzMTpzdGF0aWMgc3NpemVfdCBjb21wX2FsZ29yaXRobV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODMyLVx0XHRcdFx0ICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4MzgtXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxODM5Olx0cmV0ID0gX19jb21wX2FsZ29yaXRobV9zdG9yZSh6cmFtLCBaUkFNX1BSSU1BUllfQ09NUCwgYnVmKTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4NDAtXHRyZXR1cm4gcmV0ID8gcmV0IDogbGVuO1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTE4NDQ9c3RhdGljIHNzaXplX3QgcmVjb21wX2FsZ29yaXRobV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODYyLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTg2MzpzdGF0aWMgc3NpemVfdCByZWNvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4NjQtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODk5LVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTkwMDpcdHJldCA9IF9fY29tcF9hbGdvcml0aG1fc3RvcmUoenJhbSwgcHJpbywgYWxnKTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE5MDEtXHRyZXR1cm4gcmV0ID8gcmV0IDogbGVuO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDc2MAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIFpzaCBDb21wbGV0aW9uIEZ1bmN0aW9ucyoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgY29tcGxldGlvbiBzeXN0ZW0gaXMgYmVoYXZpbmcsIHNvIGxldCYjMzk7cyBzdGFydCB3aXRoIGEgZGVlcCBkaXZlIGludG8gdGhlIGNvZGUuIFRoZSBmaXJzdCBwbGFjZSB0byBsb29rIGlzIGRlZmluaXRlbHkgdGhlIGZ1bmN0aW9ucyBgemNvbXBfZ2V0X2NhcHNgIGFuZCBgemNvbXBfdmFsaWRhdGVfbGV2ZWxgLiBUaGVzZSBhcmUgZnVuZGFtZW50YWwuIFRoZXkgYXJlIHByb2JhYmx5IHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBjb21wbGV0aW9uIHN5c3RlbSBhbmQgZW5zdXJpbmcgdGhhdCB0aGUgY29tcGxldGlvbiBsZXZlbCBpcyBhcHByb3ByaWF0ZSBnaXZlbiB0aGUgY29udGV4dCwgcmVzcGVjdGl2ZWx5LiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBpbnB1dHMgdGhlc2UgZnVuY3Rpb25zIHRha2UsIHdoYXQgdGhleSByZXR1cm4sIGFuZCBob3cgdGhleSBpbnRlcmFjdC4gQXJlIHRoZXkgdGlnaHRseSBjb3VwbGVkLCBvciBpbmRlcGVuZGVudCBtb2R1bGVzPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGVkZ2UgY2FzZXMgSSBzaG91bGQgd2F0Y2ggZm9yIGluIHRoZWlyIGltcGxlbWVudGF0aW9uPyBMZXQmIzM5O3MgdHJhY2UgdGhlaXIgZXhlY3V0aW9uIHdpdGggZGlmZmVyZW50IHNjZW5hcmlvcyBhbmQgc2VlIHdoYXQgdGhlIHJlc3VsdHMgYXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6Y29tcF92YWxpZGF0ZV9sZXZlbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jPTEwMD11bnNpZ25lZCBpbnQgemNvbXBfZ2V0X2NhcHMoY29uc3QgY2hhciAqY29tcClcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYy0xMDYtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYzoxMDc6aW50IHpjb21wX3ZhbGlkYXRlX2xldmVsKGNvbnN0IGNoYXIgKmNvbXAsIHMzMiBsZXZlbClcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jLTEwOC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTA2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUsIHdoYXQgY29uZmlndXJhdGlvbnMgYXJlIGFic29sdXRlbHkgZXNzZW50aWFsIGhlcmU/IFRoZSBwcmltYXJ5IG9uZSB0aGF0IGp1bXBzIG91dCBhdCBtZSBpcywgb2YgY291cnNlLCBgWlJBTWAuIFRoYXQmIzM5O3MgdGhlIGNvcmUuIE5vdywgSSBuZWVkIHRvIGNvbnNpZGVyIGEgcG90ZW50aWFsIHdyaW5rbGUuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYHJlY29tcF9hbGdvcml0aG1fc3RvcmVgLCB3aGljaCBnaXZlcyBtZSBwYXVzZS4gSSBzaG91bGQgY2hlY2sgaWYgd2UgYWxzbyBuZWVkIGBaUkFNX01VTFRJX0NPTVBgIGFzIHBhcnQgb2YgdGhhdCBjb25maWd1cmF0aW9uLiBMZXQgbWUgdmVyaWZ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZWNvbXBfYWxnb3JpdGhtX3N0b3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTg0ND1zdGF0aWMgc3NpemVfdCByZWNvbXBfYWxnb3JpdGhtX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4NjItXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxODYzOnN0YXRpYyBzc2l6ZV90IHJlY29tcF9hbGdvcml0aG1fc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTg2NC1cdFx0XHRcdCAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQxMwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgbGlrZSB5b3U6CgoqKkNoZWNraW5nIGZvciBaUkFNIE11bHRpLUNvbXByZXNzaW9uIFN1cHBvcnQqKgoKT2theSwgc28gSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcgYWJvdXQgdGhlIHpyYW0gY29tcHJlc3Npb24gc2V0dXAuIE15IGluaXRpYWwgc3RlcCBpcyB0byBkZXRlcm1pbmUgaWYgdGhlIGByZWNvbXBfYWxnb3JpdGhtX3N0b3JlYCBmdW5jdGlvbmFsaXR5IGlzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQuIEkmIzM5O20gZm9jdXNpbmcgb24gd2hldGhlciBpdCYjMzk7cyBlbmFibGVkIHVuZGVyIHRoZSBgQ09ORklHX1pSQU1fTVVMVElfQ09NUGAgY29uZmlndXJhdGlvbiBvcHRpb24uIFRoaXMgaXMgYSBjb21tb24gcGF0dGVybiwgYW5kIGEgY3JpdGljYWwgaW5pdGlhbCBjaGVjay4gSSYjMzk7bSBlc3NlbnRpYWxseSB0cmFjaW5nIHRoZSBkZXBlbmRlbmNpZXMuIEtub3dpbmcgdGhhdCBgcmVjb21wX2FsZ29yaXRobV9zdG9yZWAgZGVwZW5kcyBvbiBgQ09ORklHX1pSQU1fTVVMVElfQ09NUGAgd2lsbCBmdW5kYW1lbnRhbGx5IGltcGFjdCBob3cgSSBhcHByb2FjaCB0aGUgcmVzdCBvZiB0aGUgYW5hbHlzaXMsIHNvIGl0IG5lZWRzIHRvIGJlIGVzdGFibGlzaGVkIGVhcmx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfWlJBTV9NVUxUSV9DT01QJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yMjc9c3RhdGljIGlubGluZSBib29sIGlzX3BhcnRpYWxfaW8oc3RydWN0IGJpb192ZWMgKmJ2ZWMpXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjMyLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MjMzOiNpZiBkZWZpbmVkIENPTkZJR19aUkFNX1dSSVRFQkFDSyB8fCBkZWZpbmVkIENPTkZJR19aUkFNX01VTFRJX0NPTVBcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTIzNC1zdHJ1Y3QgenJhbV9wcF9zbG90IHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xODMxPXN0YXRpYyBzc2l6ZV90IGNvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODQyLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTg0MzojaWZkZWYgQ09ORklHX1pSQU1fTVVMVElfQ09NUFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTg0NC1zdGF0aWMgc3NpemVfdCByZWNvbXBfYWxnb3JpdGhtX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTIzNzI9c3RhdGljIGludCB6cmFtX2J2ZWNfd3JpdGUoc3RydWN0IHpyYW0gKnpyYW0sIHN0cnVjdCBiaW9fdmVjICpidmVjLFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTIzNzktXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyMzgwOiNpZmRlZiBDT05GSUdfWlJBTV9NVUxUSV9DT01QXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yMzgxLSNkZWZpbmUgUkVDT01QUkVTU19JRExFXHRcdCgxIFx1MDAzY1x1MDAzYyAwKVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTMwMDQ9c3RhdGljIERFVklDRV9BVFRSX1JXKGNvbXByZXNzZWRfd3JpdGViYWNrKTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMwMDUtI2VuZGlmXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDA2OiNpZmRlZiBDT05GSUdfWlJBTV9NVUxUSV9DT01QXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMDA3LXN0YXRpYyBERVZJQ0VfQVRUUl9SVyhyZWNvbXBfYWxnb3JpdGhtKTtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0zMDEyPXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICp6cmFtX2Rpc2tfYXR0cnNbXSA9IHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMDMyLVx0XHUwMDI2ZGV2X2F0dHJfZGVidWdfc3RhdC5hdHRyLFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAzMzojaWZkZWYgQ09ORklHX1pSQU1fTVVMVElfQ09NUFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAzNC1cdFx1MDAyNmRldl9hdHRyX3JlY29tcF9hbGdvcml0aG0uYXR0cixcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaD04MD1zdHJ1Y3QgenJhbV9zdGF0cyB7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmgtOTctXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaDo5ODojaWZkZWYgQ09ORklHX1pSQU1fTVVMVElfQ09NUFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmgtOTktI2RlZmluZSBaUkFNX1BSSU1BUllfQ09NUFx0MFVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzNjMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzMDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqWlJBTSBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zKioKCkFscmlnaHQsIHNvIGBDT05GSUdfWlJBTV9NVUxUSV9DT01QYCBzZWVtcyBsaWtlIGEgbm8tYnJhaW5lciB0byBlbmFibGUuICBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgcG9zaXRpdmUuIE5vdywgdGhlIHJlYWwgcXVlc3Rpb24gaXMgYWJvdXQgdGhlIGNvbXByZXNzaW9uIGJhY2tlbmRzLiBJIHNlZSB0aGUgcGF0Y2ggdG91Y2hlcyBgYmFja2VuZF84NDIuY2AsIGBiYWNrZW5kX2RlZmxhdGUuY2AsIGBiYWNrZW5kX2x6NC5jYCwgYGJhY2tlbmRfbHo0aGMuY2AsIGBiYWNrZW5kX2x6by5jYCwgYGJhY2tlbmRfbHpvcmxlLmNgLCBhbmQgYGJhY2tlbmRfenN0ZC5jYC4gIFRoYXQgbWVhbnMgd2Ugc2hvdWxkIHByb2JhYmx5IGVuYWJsZSBhbGwgb2YgdGhlIHJlbGV2YW50IGJhY2tlbmQgb3B0aW9uczogIGBaUkFNX0JBQ0tFTkRfTFo0YCwgYFpSQU1fQkFDS0VORF9MWjRIQ2AsIGBaUkFNX0JBQ0tFTkRfWlNURGAsIGBaUkFNX0JBQ0tFTkRfREVGTEFURWAsIGBaUkFNX0JBQ0tFTkRfODQyYCwgYW5kIGBaUkFNX0JBQ0tFTkRfTFpPYC4KCkhvbGQgb24uLi4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcuICBSaWdodCwgYFpSQU1fQkFDS0VORF9MWk9gIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCB1bmxlc3MgYCFaUkFNX0JBQ0tFTkRfRk9SQ0VfTFpPYC4gT2theSwgc28gbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHdlJiMzOTtyZSBpbmNsdWRpbmcgYFpSQU1gIGFuZCBgWlJBTV9NVUxUSV9DT01QYC4KCkFjdHVhbGx5LCB3YWl0LCB0aGlua2luZyBhYm91dCBpdC4gZW5hYmxpbmcgYWxsIHRoZSBiYWNrZW5kIG9wdGlvbnMgc3VjaCBhcyBgWlJBTV9CQUNLRU5EX0xaNGAsIGBaUkFNX0JBQ0tFTkRfTFo0SENgLCBgWlJBTV9CQUNLRU5EX1pTVERgLCBgWlJBTV9CQUNLRU5EX0RFRkxBVEVgLCBgWlJBTV9CQUNLRU5EXzg0MmAsIGFuZCBgWlJBTV9CQUNLRU5EX0xaT2Agd2lsbCBiZSB1c2VmdWwgZm9yIHRlc3RpbmcgYW5kIGV2YWx1YXRpbmcgdGhlIHBlcmZvcm1hbmNlIG9mIGVhY2ggYmFja2VuZCBpbiBhIG11bHRpLWNvbXByZXNzaW9uIHNldHRpbmcuICBXZSBkZWZpbml0ZWx5IG5lZWQgdG8gbGlzdCB0aGVtIGFsbCBvdXQuCgpOb3csIGxldCBtZSBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBgYWxnb3JpdGhtX3BhcmFtc19zdG9yZWAgZnVuY3Rpb24gaW4gYHpyYW1fZHJ2LmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthbGdvcml0aG1fcGFyYW1zX3N0b3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTcwMD1zdGF0aWMgaW50IGNvbXBfcGFyYW1zX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgczMyIGxldmVsLFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE3MjYtXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxNzI3OnN0YXRpYyBzc2l6ZV90IGFsZ29yaXRobV9wYXJhbXNfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTcyOC1cdFx0XHRcdCAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzI1MAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLiBNeSBmaXJzdCB0aG91Z2h0IGlzOiAqKlN5c2ZzIEV4cG9ydCBDaGVjayoqLiBJIG5lZWQgdG8gdmVyaWZ5IGlmIHRoaXMgYGFsZ29yaXRobV9wYXJhbXNfc3RvcmVgIGNvbXBvbmVudCBoYXMgYmVlbiBwcm9wZXJseSBleHBvc2VkIHRocm91Z2ggc3lzZnMuIFRoYXQmIzM5O3MgdGhlIGNydWNpYWwgZmlyc3Qgc3RlcC4gSWYgaXQmIzM5O3Mgbm90IGV4cG9ydGVkIHRoZXJlLCB0aGVuIG15IGludGVyYWN0aW9uIHdpdGggaXQgaXMgaW1tZWRpYXRlbHkgZ29pbmcgdG8gYmUgbGltaXRlZC4gSSBuZWVkIHRvIGNvbmZpcm0gaXRzIGF2YWlsYWJpbGl0eSB2aWEgc3lzZnMgYmVmb3JlIEkgY2FuIGRvIGFueXRoaW5nIGZ1cnRoZXI7IHRoYXQgaXMsIGJlZm9yZSBJIGNhbiByZWFkIGZyb20sIHdyaXRlIHRvLCBvciBvdGhlcndpc2UgaW50ZXJhY3Qgd2l0aCBpdHMgZXhwb3NlZCBwYXJhbWV0ZXJzLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hldGhlciBvciBub3QgSSYjMzk7bSBldmVuICphbGxvd2VkKiB0byB1c2UgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FsZ29yaXRobV9wYXJhbXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xNzAwPXN0YXRpYyBpbnQgY29tcF9wYXJhbXNfc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBzMzIgbGV2ZWwsXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTcyNi1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjE3Mjc6c3RhdGljIHNzaXplX3QgYWxnb3JpdGhtX3BhcmFtc19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xNzI4LVx0XHRcdFx0ICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MzAwOD1zdGF0aWMgREVWSUNFX0FUVFJfV08ocmVjb21wcmVzcyk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMDA5LSNlbmRpZlxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAxMDpzdGF0aWMgREVWSUNFX0FUVFJfV08oYWxnb3JpdGhtX3BhcmFtcyk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMDExLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MzAxMj1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqenJhbV9kaXNrX2F0dHJzW10gPSB7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAzNi0jZW5kaWZcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMwMzc6XHRcdTAwMjZkZXZfYXR0cl9hbGdvcml0aG1fcGFyYW1zLmF0dHIsXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMDM4LVx0TlVMTCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDc6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM3ODgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFpSQU0gQWxnb3JpdGhtIFBhcmFtZXRlciBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBhbGdvcml0aG1fcGFyYW1zYCBhdHRyaWJ1dGUgd2l0aGluIHRoZSBzeXNmcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbmZpcm0gaXRzIHVzYWdlLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O20gbm90aWNpbmcgYGNvbXBfcGFyYW1zX3N0b3JlYCBpcyBiZWluZyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBgYWxnb3JpdGhtX3BhcmFtc19zdG9yZWAsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIGFsc28gc2VlIHRoYXQgYF9fY29tcF9hbGdvcml0aG1fc3RvcmVgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGJvdGggYGNvbXBfYWxnb3JpdGhtX3N0b3JlYCBhbmQgYHJlY29tcF9hbGdvcml0aG1fc3RvcmVgLiBUaGF0JiMzOTtzIGltcG9ydGFudCB0byBrZWVwIGluIG1pbmQsIGtub3dpbmcgdGhlIGNhbGxpbmcgY2hhaW5zIGFuZCBkZXBlbmRlbmNpZXMuIFNvIGZhciwgdGhlIGNhbGwgZmxvdyBpcyBsb2dpY2FsLCBhdCBsZWFzdCBvbiB0aGUgc3VyZmFjZS4KCkZyb20gdGhpcyBxdWljayBvdmVydmlldywgaXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaXMgZnVuY3Rpb25hbCBhbmQgZGVmaW5pdGVseSByZWFjaGFibGUgYmFzZWQgb24gdGhlIGNvbm5lY3Rpb25zIEkgY2FuIHNlZS4gTm93LCB0byByZWFsbHkgZGl2ZSBpbiwgSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aGVzZSBrZXkgc3ltYm9sczogYGFsZ29yaXRobV9wYXJhbXNfc3RvcmVgLCBgY29tcF9wYXJhbXNfc3RvcmVgLCBgX19jb21wX2FsZ29yaXRobV9zdG9yZWAsIGB6Y29tcF9nZXRfY2Fwc2AsIGFuZCBgemNvbXBfdmFsaWRhdGVfbGV2ZWxgLiBUaGF0IGdpdmVzIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBmb2xsb3cgdGhlIGNvbnRyb2wgZmxvdyBhbmQgdW5kZXJzdGFuZCB0aGUgZ3V0cyBvZiB0aGlzIGltcGxlbWVudGF0aW9uLgoKVGhlbiwgdGhlcmUgYXJlIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBaUkFNOiBgWlJBTWAsIGBaUkFNX01VTFRJX0NPTVBgLCBgWlJBTV9CQUNLRU5EX0xaNGAsIGBaUkFNX0JBQ0tFTkRfTFo0SENgLCBgWlJBTV9CQUNLRU5EX1pTVERgLCBgWlJBTV9CQUNLRU5EX0RFRkxBVEVgLCBgWlJBTV9CQUNLRU5EXzg0MmAgYW5kIGBaUkFNX0JBQ0tFTkRfTFpPYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGltcGFjdCB0aGUgb3ZlcmFsbCBiZWhhdmlvci4gV2FpdCwgaGFuZyBvbi4uLiBgWlJBTV9CQUNLRU5EX0xaT2AgaXMgYSBib29sZWFuLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoYXQgdGhhdCBpcyBjb3JyZWN0IGJ5IGNyb3NzLWNoZWNraW5nIGBkcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZ2AgdG8gY29uZmlybSB0aGF0IHRoZSB0eXBlIGlzIHNldCBjb3JyZWN0bHkgaW4gdGhlIEtjb25maWcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBaUkFNX0JBQ0tFTkRfTFpPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9NDc9Y29uZmlnIFpSQU1fQkFDS0VORF9GT1JDRV9MWk9cbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01Mi1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjUzOmNvbmZpZyBaUkFNX0JBQ0tFTkRfTFpPXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01NC1cdGJvb2wgXCYjMzQ7bHpvIGFuZCBsem8tcmxlIGNvbXByZXNzaW9uIHN1cHBvcnRcJiMzNDsgaWYgIVpSQU1fQkFDS0VORF9GT1JDRV9MWk9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDc6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ1OTgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBac3RhbmRhcmQgQ29kZWJhc2UqKgoKT2theSwgc28gdGhlIGluaXRpYWwgZmxhZyBJJiMzOTttIGxvb2tpbmcgYXQsIHRoYXQmIzM5O3MgYSBib29sZWFuLCBubyBzdXJwcmlzZXMgdGhlcmUuIE15IHByaW1hcnkgY29uY2VybiByaWdodCBub3cgaXMgaWRlbnRpZnlpbmcgdGhlIGZ1bGwgZXh0ZW50IG9mIHRoZSBjaGFuZ2VzIHJlbGF0ZWQgdG8gdGhlIHpzdGQgbGlicmFyeS4gSSBrbm93IHRoZXJlJiMzOTtzIGEgbW9kaWZpY2F0aW9uLCBidXQgSSBuZWVkIHRvIGVuc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBlbHNlLgoKSSByZWNhbGwgYSBzcGVjaWZpYyBjaGFuZ2UgdG8gYHpzdGRfY3JlYXRlYCB3aXRoaW4gYGJhY2tlbmRfenN0ZC5jYC4gVGhlIHJlbW92YWwgb2YgYHpzdGRfcmVsZWFzZV9wYXJhbXMocGFyYW1zKWAgaW4gdGhhdCBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlzIHNvbWV0aGluZyB0byBrZWVwIGluIG1pbmQuIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gTm93LCBnaXZlbiB0aGF0IGB6c3RkX2NyZWF0ZWAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLCBpdCYjMzk7cyBub3QgZGlyZWN0bHkgZXhwb3NlZCBleHRlcm5hbGx5LiBJdCBpcyBsaWtlbHkgY2FsbGVkIHRocm91Z2ggYHpjb21wX2NyZWF0ZWAuIEV2ZW4gc28sIEkgdGhpbmsgSSYjMzk7bGwgYWRkIGB6c3RkX2NyZWF0ZWAgdG8gdGhlIGZvY3VzIHN5bWJvbHMgdG8gbWFrZSBjZXJ0YWluIEkgY2FwdHVyZSBldmVyeXRoaW5nLiBJJiMzOTttIGdvaW5nIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgYHpzdGRfY3JlYXRlYCBmdW5jdGlvbiBpdHNlbGYgdG8gc29saWRpZnkgbXkgdW5kZXJzdGFuZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDc6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7enN0ZF9jcmVhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jPTUxPXN0YXRpYyBpbnQgenN0ZF9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYy03MS1cbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYzo3MjpcdHpwLVx1MDAzZWNkaWN0ID0genN0ZF9jcmVhdGVfY2RpY3RfYnlyZWZlcmVuY2UocGFyYW1zLVx1MDAzZWRpY3QsXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMtNzMtXHRcdFx0XHRcdFx0ICBwYXJhbXMtXHUwMDNlZGljdF9zeixcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMtNzgtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmM6Nzk6XHR6cC1cdTAwM2VkZGljdCA9IHpzdGRfY3JlYXRlX2RkaWN0X2J5cmVmZXJlbmNlKHBhcmFtcy1cdTAwM2VkaWN0LFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTgwLVx0XHRcdFx0XHRcdCAgcGFyYW1zLVx1MDAzZWRpY3Rfc3osXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jPTkyPXN0YXRpYyB2b2lkIHpzdGRfZGVzdHJveShzdHJ1Y3QgemNvbXBfY3R4ICpjdHgpXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTExOC1cbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYzoxMTk6c3RhdGljIGludCB6c3RkX2NyZWF0ZShzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMsIHN0cnVjdCB6Y29tcF9jdHggKmN0eClcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYy0xMjAte1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYy0xNTEtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmM6MTUyOlx0XHR6Y3R4LVx1MDAzZWNjdHggPSB6c3RkX2NyZWF0ZV9jY3R4X2FkdmFuY2VkKHpwLVx1MDAzZWN1c3RvbV9tZW0pO1xuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTE1My1cdFx0aWYgKCF6Y3R4LVx1MDAzZWNjdHgpXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTE1NS1cbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYzoxNTY6XHRcdHpjdHgtXHUwMDNlZGN0eCA9IHpzdGRfY3JlYXRlX2RjdHhfYWR2YW5jZWQoenAtXHUwMDNlY3VzdG9tX21lbSk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMtMTU3LVx0XHRpZiAoIXpjdHgtXHUwMDNlZGN0eClcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmM9MjA4PWNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF96c3RkID0ge1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYy0yMTAtXHQuZGVjb21wcmVzc1x0PSB6c3RkX2RlY29tcHJlc3MsXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmM6MjExOlx0LmNyZWF0ZV9jdHhcdD0genN0ZF9jcmVhdGUsXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMtMjEyLVx0LmRlc3Ryb3lfY3R4XHQ9IHpzdGRfZGVzdHJveSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDc6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU1OTEKCQkJCQkJCW91dHB1dDogMjQxCgkJCQkJCQl0aG91Z2h0czogMjY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBDb21wcmVzc2lvbiBQYXJhbWV0ZXIgQ2hhbmdlcyBpbiBaUkFNKioKCkFscmlnaHQsIGxldCYjMzk7cyB6ZXJvIGluIG9uIGB6c3RkX2NyZWF0ZWAuIFRoYXQgZmVlbHMgbGlrZSB0aGUga2V5IGZ1bmN0aW9uIGhlcmUuIEZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gY2xlYXIgb24gdGhlIHJlbGV2YW50IGZvY3VzIHN5bWJvbHM6IGBhbGdvcml0aG1fcGFyYW1zX3N0b3JlYCwgYGNvbXBfcGFyYW1zX3N0b3JlYCwgYF9fY29tcF9hbGdvcml0aG1fc3RvcmVgLCBgemNvbXBfZ2V0X2NhcHNgLCBgemNvbXBfdmFsaWRhdGVfbGV2ZWxgLCBhbmQgdGhlIGFscmVhZHkgZXN0YWJsaXNoZWQgYHpzdGRfY3JlYXRlYC4KCk5leHQsIEkmIzM5O2xsIHF1aWNrbHkgcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIFpSQU0gY29uZmlndXJhdGlvbiBvcHRpb25zIGludm9sdmVkLiBJIHNlZSBgWlJBTWAsIGBaUkFNX01VTFRJX0NPTVBgLCB0aGUgYmFja2VuZCBjaG9pY2VzIGBaUkFNX0JBQ0tFTkRfTFo0YCwgYFpSQU1fQkFDS0VORF9MWjRIQ2AsIGBaUkFNX0JBQ0tFTkRfWlNURGAsIGBaUkFNX0JBQ0tFTkRfREVGTEFURWAsIGBaUkFNX0JBQ0tFTkRfODQyYCwgYW5kIGBaUkFNX0JBQ0tFTkRfTFpPYC4KCk5vdywgcHV0dGluZyBpdCBhbGwgdG9nZXRoZXIsIHRoZSBwYXRjaCBzZWVtcyB0byBiZSByZWZpbmluZyBob3cgY29tcHJlc3Npb24gcGFyYW1ldGVycyBhcmUgaGFuZGxlZCB3aXRoaW4gWlJBTS4gSXQmIzM5O3MgZW5oYW5jaW5nIHRoZSBjb21wcmVzc2lvbiBsZXZlbCBjYXBhYmlsaXRpZXMgYW5kIGFkZGluZyBkaWN0aW9uYXJ5IHN1cHBvcnQsIHdoaWNoIGlzIGEgZ29vZCBtb3ZlLiBPbiB0b3Agb2YgdGhhdCwgSSBzZWUgYSBmaXggZm9yIGEgbWVtb3J5IGxlYWsgd2l0aGluIGBjb21wX3BhcmFtc19zdG9yZWAgYW5kIGEgYml0IG9mIHRpZHlpbmcgdXAgYnkgcmVtb3ZpbmcgYSByZWR1bmRhbnQgcGFyYW1ldGVyIHJlbGVhc2UgaW4gYHpzdGRfY3JlYXRlYC4gVGhlIGNoYW5nZXMgc2VlbSB0byBiZSBmdW5jdGlvbmFsbHkgc291bmQgYW5kIGRpcmVjdGx5IGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UuIEkgY2FuIHNlZSB0aGlzIGJlaW5nIHRyaWdnZXJlZCBieSBzeXNmcyBhdHRyaWJ1dGVzIGxpa2UgYGFsZ29yaXRobV9wYXJhbXNgLCBgY29tcF9hbGdvcml0aG1gLCBhbmQgYHJlY29tcF9hbGdvcml0aG1gLgoKT2theSwgSSB0aGluayBJIGhhdmUgYSBnb29kIGdyYXNwIG9uIHRoaXMuIEkgc2hvdWxkIGNhbGwgYHNldC1yZXN1bHRzYCBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtaUkFNJiMzNDssCiAgICAmIzM0O1pSQU1fTVVMVElfQ09NUCYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfTFo0JiMzNDssCiAgICAmIzM0O1pSQU1fQkFDS0VORF9MWjRIQyYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfWlNURCYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfREVGTEFURSYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfODQyJiMzNDssCiAgICAmIzM0O1pSQU1fQkFDS0VORF9MWk8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthbGdvcml0aG1fcGFyYW1zX3N0b3JlJiMzNDssCiAgICAmIzM0O2NvbXBfcGFyYW1zX3N0b3JlJiMzNDssCiAgICAmIzM0O19fY29tcF9hbGdvcml0aG1fc3RvcmUmIzM0OywKICAgICYjMzQ7emNvbXBfZ2V0X2NhcHMmIzM0OywKICAgICYjMzQ7emNvbXBfdmFsaWRhdGVfbGV2ZWwmIzM0OywKICAgICYjMzQ7enN0ZF9jcmVhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgenJhbSBjb21wcmVzc2lvbiBwYXJhbWV0ZXJzIGhhbmRsaW5nLiBJdCBhZGRzIGNhcGFiaWxpdGllcyBhbmQgdmFsaWRhdGlvbiBmb3IgY29tcHJlc3Npb24gbGV2ZWxzIGFuZCBkaWN0aW9uYXJ5IHN1cHBvcnQuIEl0IGFsc28gZml4ZXMgYSBtZW1vcnkgbGVhayBpbiBgY29tcF9wYXJhbXNfc3RvcmVgIGFuZCByZW1vdmVzIGEgcmVkdW5kYW50IHBhcmFtZXRlciByZWxlYXNlIGluIGB6c3RkX2NyZWF0ZWAuIFRoZXNlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc3lzZnMgYXR0cmlidXRlcyBsaWtlIGBhbGdvcml0aG1fcGFyYW1zYCwgYGNvbXBfYWxnb3JpdGhtYCwgYW5kIGByZWNvbXBfYWxnb3JpdGhtYC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WlJBTSYjMzQ7LAogICAgJiMzNDtaUkFNX01VTFRJX0NPTVAmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX0xaNCYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfTFo0SEMmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX1pTVEQmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX0RFRkxBVEUmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EXzg0MiYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfTFpPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWxnb3JpdGhtX3BhcmFtc19zdG9yZSYjMzQ7LAogICAgJiMzNDtjb21wX3BhcmFtc19zdG9yZSYjMzQ7LAogICAgJiMzNDtfX2NvbXBfYWxnb3JpdGhtX3N0b3JlJiMzNDssCiAgICAmIzM0O3pjb21wX2dldF9jYXBzJiMzNDssCiAgICAmIzM0O3pjb21wX3ZhbGlkYXRlX2xldmVsJiMzNDssCiAgICAmIzM0O3pzdGRfY3JlYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHpyYW0gY29tcHJlc3Npb24gcGFyYW1ldGVycyBoYW5kbGluZy4gSXQgYWRkcyBjYXBhYmlsaXRpZXMgYW5kIHZhbGlkYXRpb24gZm9yIGNvbXByZXNzaW9uIGxldmVscyBhbmQgZGljdGlvbmFyeSBzdXBwb3J0LiBJdCBhbHNvIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gYGNvbXBfcGFyYW1zX3N0b3JlYCBhbmQgcmVtb3ZlcyBhIHJlZHVuZGFudCBwYXJhbWV0ZXIgcmVsZWFzZSBpbiBgenN0ZF9jcmVhdGVgLiBUaGVzZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHN5c2ZzIGF0dHJpYnV0ZXMgbGlrZSBgYWxnb3JpdGhtX3BhcmFtc2AsIGBjb21wX2FsZ29yaXRobWAsIGFuZCBgcmVjb21wX2FsZ29yaXRobWAuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNToyNS44NTg5NjUxNDlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjU5MjM5MTYyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJaUkFNXCIsXG4gICAgXCJaUkFNX01VTFRJX0NPTVBcIixcbiAgICBcIlpSQU1fQkFDS0VORF9MWjRcIixcbiAgICBcIlpSQU1fQkFDS0VORF9MWjRIQ1wiLFxuICAgIFwiWlJBTV9CQUNLRU5EX1pTVERcIixcbiAgICBcIlpSQU1fQkFDS0VORF9ERUZMQVRFXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfODQyXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfTFpPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWxnb3JpdGhtX3BhcmFtc19zdG9yZVwiLFxuICAgIFwiY29tcF9wYXJhbXNfc3RvcmVcIixcbiAgICBcIl9fY29tcF9hbGdvcml0aG1fc3RvcmVcIixcbiAgICBcInpjb21wX2dldF9jYXBzXCIsXG4gICAgXCJ6Y29tcF92YWxpZGF0ZV9sZXZlbFwiLFxuICAgIFwienN0ZF9jcmVhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB6cmFtIGNvbXByZXNzaW9uIHBhcmFtZXRlcnMgaGFuZGxpbmcuIEl0IGFkZHMgY2FwYWJpbGl0aWVzIGFuZCB2YWxpZGF0aW9uIGZvciBjb21wcmVzc2lvbiBsZXZlbHMgYW5kIGRpY3Rpb25hcnkgc3VwcG9ydC4gSXQgYWxzbyBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBjb21wX3BhcmFtc19zdG9yZWAgYW5kIHJlbW92ZXMgYSByZWR1bmRhbnQgcGFyYW1ldGVyIHJlbGVhc2UgaW4gYHpzdGRfY3JlYXRlYC4gVGhlc2UgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzeXNmcyBhdHRyaWJ1dGVzIGxpa2UgYGFsZ29yaXRobV9wYXJhbXNgLCBgY29tcF9hbGdvcml0aG1gLCBhbmQgYHJlY29tcF9hbGdvcml0aG1gLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNToyNS44NTg5NzE1ODlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMTcxMTQ3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDM0YmY2NzcwYmFhODUyMDQ2N2ZlM2YxYWM0MzUxZjQyMWRjYzk2MzBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdW4gMjcgMDc6MjU6MjQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuY1xcbmluZGV4IDEwZDlkNWM2MGY1MzEzLi5kNzk2ZWJkYTFmYTBkNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuY1xcbisrKyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jXFxuQEAgLTU3LDUgKzU3LDYgQEAgY29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kXzg0MiA9IHtcXG4gXFx0LmRlc3Ryb3lfY3R4XFx0PSBkZXN0cm95Xzg0MixcXG4gXFx0LnNldHVwX3BhcmFtc1xcdD0gc2V0dXBfcGFyYW1zXzg0MixcXG4gXFx0LnJlbGVhc2VfcGFyYW1zXFx0PSByZWxlYXNlX3BhcmFtc184NDIsXFxuK1xcdC5jYXBzXFx0XFx0PSAwLFxcbiBcXHQubmFtZVxcdFxcdD0gXFxcIjg0MlxcXCIsXFxuIH07XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2RlZmxhdGUuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2RlZmxhdGUuY1xcbmluZGV4IGY5MmE1MmE3MjBkMWUyLi5jZWRjM2RhYWQzM2FmNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmNcXG5AQCAtMTQ0LDUgKzE0NCw4IEBAIGNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF9kZWZsYXRlID0ge1xcbiBcXHQuZGVzdHJveV9jdHhcXHQ9IGRlZmxhdGVfZGVzdHJveSxcXG4gXFx0LnNldHVwX3BhcmFtc1xcdD0gZGVmbGF0ZV9zZXR1cF9wYXJhbXMsXFxuIFxcdC5yZWxlYXNlX3BhcmFtc1xcdD0gZGVmbGF0ZV9yZWxlYXNlX3BhcmFtcyxcXG4rXFx0LmNhcHNcXHRcXHQ9IFpDT01QX0NBUF9MRVZFTCxcXG4rXFx0LmxldmVsX21pblxcdD0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OLFxcbitcXHQubGV2ZWxfbWF4XFx0PSBaX0JFU1RfQ09NUFJFU1NJT04sXFxuIFxcdC5uYW1lXFx0XFx0PSBcXFwiZGVmbGF0ZVxcXCIsXFxuIH07XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NC5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmNcXG5pbmRleCBjNDQ5ZDUxMWJhODZmZS4uYmQxZTVjYTRkMTM0MmIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuY1xcbkBAIC0xNDYsNSArMTQ2LDggQEAgY29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kX2x6NCA9IHtcXG4gXFx0LmRlc3Ryb3lfY3R4XFx0PSBsejRfZGVzdHJveSxcXG4gXFx0LnNldHVwX3BhcmFtc1xcdD0gbHo0X3NldHVwX3BhcmFtcyxcXG4gXFx0LnJlbGVhc2VfcGFyYW1zXFx0PSBsejRfcmVsZWFzZV9wYXJhbXMsXFxuK1xcdC5jYXBzXFx0XFx0PSBaQ09NUF9DQVBfRElDVCB8IFpDT01QX0NBUF9MRVZFTCxcXG4rXFx0LmxldmVsX21pblxcdD0gTFo0X0FDQ0VMRVJBVElPTl9ERUZBVUxULFxcbitcXHQubGV2ZWxfbWF4XFx0PSA2NTUzNSxcXG4gXFx0Lm5hbWVcXHRcXHQ9IFxcXCJsejRcXFwiLFxcbiB9O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0aGMuY1xcbmluZGV4IGY2YTMzNmFjZmUyMDJlLi4wZTBkN2M2OGE3ZDQyMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jXFxuKysrIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0aGMuY1xcbkBAIC0xMjQsNSArMTI0LDggQEAgY29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kX2x6NGhjID0ge1xcbiBcXHQuZGVzdHJveV9jdHhcXHQ9IGx6NGhjX2Rlc3Ryb3ksXFxuIFxcdC5zZXR1cF9wYXJhbXNcXHQ9IGx6NGhjX3NldHVwX3BhcmFtcyxcXG4gXFx0LnJlbGVhc2VfcGFyYW1zXFx0PSBsejRoY19yZWxlYXNlX3BhcmFtcyxcXG4rXFx0LmNhcHNcXHRcXHQ9IFpDT01QX0NBUF9ESUNUIHwgWkNPTVBfQ0FQX0xFVkVMLFxcbitcXHQubGV2ZWxfbWluXFx0PSBMWjRIQ19NSU5fQ0xFVkVMLFxcbitcXHQubGV2ZWxfbWF4XFx0PSBMWjRIQ19NQVhfQ0xFVkVMLFxcbiBcXHQubmFtZVxcdFxcdD0gXFxcImx6NGhjXFxcIixcXG4gfTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uY1xcbmluZGV4IDRjOTA2YmVhYWU2YjMzLi45NjVmMDA3ZTJjYTg5OCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uY1xcbisrKyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6by5jXFxuQEAgLTU1LDUgKzU1LDYgQEAgY29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kX2x6byA9IHtcXG4gXFx0LmRlc3Ryb3lfY3R4XFx0PSBsem9fZGVzdHJveSxcXG4gXFx0LnNldHVwX3BhcmFtc1xcdD0gbHpvX3NldHVwX3BhcmFtcyxcXG4gXFx0LnJlbGVhc2VfcGFyYW1zXFx0PSBsem9fcmVsZWFzZV9wYXJhbXMsXFxuK1xcdC5jYXBzXFx0XFx0PSAwLFxcbiBcXHQubmFtZVxcdFxcdD0gXFxcImx6b1xcXCIsXFxuIH07XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6b3JsZS5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmNcXG5pbmRleCAxMDY0MGM5NmNiZmNhYS4uNzU3YjQ1OThiZTAzMDQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuY1xcbkBAIC01NSw1ICs1NSw2IEBAIGNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF9sem9ybGUgPSB7XFxuIFxcdC5kZXN0cm95X2N0eFxcdD0gbHpvcmxlX2Rlc3Ryb3ksXFxuIFxcdC5zZXR1cF9wYXJhbXNcXHQ9IGx6b3JsZV9zZXR1cF9wYXJhbXMsXFxuIFxcdC5yZWxlYXNlX3BhcmFtc1xcdD0gbHpvcmxlX3JlbGVhc2VfcGFyYW1zLFxcbitcXHQuY2Fwc1xcdFxcdD0gMCxcXG4gXFx0Lm5hbWVcXHRcXHQ9IFxcXCJsem8tcmxlXFxcIixcXG4gfTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jXFxuaW5kZXggZDAwYjU0ODA1NmRjMmUuLjBmYmQyNDYwODgzYTgyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuY1xcbisrKyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuY1xcbkBAIC0xNjEsNyArMTYxLDYgQEAgc3RhdGljIGludCB6c3RkX2NyZWF0ZShzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMsIHN0cnVjdCB6Y29tcF9jdHggKmN0eClcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbiBlcnJvcjpcXG4tXFx0enN0ZF9yZWxlYXNlX3BhcmFtcyhwYXJhbXMpO1xcbiBcXHR6c3RkX2Rlc3Ryb3koY3R4KTtcXG4gXFx0cmV0dXJuIC1FSU5WQUw7XFxuIH1cXG5AQCAtMjEzLDUgKzIxMiw4IEBAIGNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF96c3RkID0ge1xcbiBcXHQuZGVzdHJveV9jdHhcXHQ9IHpzdGRfZGVzdHJveSxcXG4gXFx0LnNldHVwX3BhcmFtc1xcdD0genN0ZF9zZXR1cF9wYXJhbXMsXFxuIFxcdC5yZWxlYXNlX3BhcmFtc1xcdD0genN0ZF9yZWxlYXNlX3BhcmFtcyxcXG4rXFx0LmNhcHNcXHRcXHQ9IFpDT01QX0NBUF9ESUNUIHwgWkNPTVBfQ0FQX0xFVkVMLFxcbitcXHQubGV2ZWxfbWluXFx0PSAoaW50KS1aU1REX1RBUkdFVExFTkdUSF9NQVgsXFxuK1xcdC5sZXZlbF9tYXhcXHQ9IFpTVERfTUFYX0NMRVZFTCxcXG4gXFx0Lm5hbWVcXHRcXHQ9IFxcXCJ6c3RkXFxcIixcXG4gfTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuY1xcbmluZGV4IDk3NGM0NjkxODg3ZTZmLi4xNWRlMjhiNTBkNDI3ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuY1xcbisrKyBiL2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jXFxuQEAgLTksNiArOSw5IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9jcHVob3RwbHVnLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC92bWFsbG9jLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zeXNmcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbHo0LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC96bGliLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC96c3RkLmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXFwiemNvbXAuaFxcXCJcXG4gXFxuQEAgLTk0LDYgKzk3LDI2IEBAIGNvbnN0IGNoYXIgKnpjb21wX2xvb2t1cF9iYWNrZW5kX25hbWUoY29uc3QgY2hhciAqY29tcClcXG4gXFx0cmV0dXJuIE5VTEw7XFxuIH1cXG4gXFxuK3Vuc2lnbmVkIGludCB6Y29tcF9nZXRfY2Fwcyhjb25zdCBjaGFyICpjb21wKVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgKmJhY2tlbmQgPSBsb29rdXBfYmFja2VuZF9vcHMoY29tcCk7XFxuK1xcbitcXHRyZXR1cm4gYmFja2VuZCA/IGJhY2tlbmQtXFx1MDAzZWNhcHMgOiAwO1xcbit9XFxuK1xcbitpbnQgemNvbXBfdmFsaWRhdGVfbGV2ZWwoY29uc3QgY2hhciAqY29tcCwgczMyIGxldmVsKVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgKmJhY2tlbmQgPSBsb29rdXBfYmFja2VuZF9vcHMoY29tcCk7XFxuK1xcbitcXHRpZiAoIWJhY2tlbmQpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRpZiAoIShiYWNrZW5kLVxcdTAwM2VjYXBzIFxcdTAwMjYgWkNPTVBfQ0FQX0xFVkVMKSlcXG4rXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbitcXHRpZiAobGV2ZWwgXFx1MDAzYyBiYWNrZW5kLVxcdTAwM2VsZXZlbF9taW4gfHwgbGV2ZWwgXFx1MDAzZSBiYWNrZW5kLVxcdTAwM2VsZXZlbF9tYXgpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gLyogc2hvdyBhdmFpbGFibGUgY29tcHJlc3NvcnMgKi9cXG4gc3NpemVfdCB6Y29tcF9hdmFpbGFibGVfc2hvdyhjb25zdCBjaGFyICpjb21wLCBjaGFyICpidWYsIHNzaXplX3QgYXQpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmggYi9kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuaFxcbmluZGV4IDgxYTBmM2Y2ZmY0ODcxLi4xNmY4MTJhOTRjNjdkNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuaFxcbisrKyBiL2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oXFxuQEAgLTcsNiArNyw5IEBAXFxuIFxcbiAjZGVmaW5lIFpDT01QX1BBUkFNX05PVF9TRVRcXHRJTlRfTUlOXFxuIFxcbisjZGVmaW5lIFpDT01QX0NBUF9ESUNUXFx0XFx0QklUKDApXFx0LyogZGljdGlvbmFyeSBzdXBwb3J0ICovXFxuKyNkZWZpbmUgWkNPTVBfQ0FQX0xFVkVMXFx0XFx0QklUKDEpXFx0LyogYWRqdXN0YWJsZSBjb21wcmVzc2lvbiBsZXZlbCAqL1xcbitcXG4gc3RydWN0IGRlZmxhdGVfcGFyYW1zIHtcXG4gXFx0czMyIHdpbmJpdHM7XFxuIH07XFxuQEAgLTY2LDYgKzY5LDkgQEAgc3RydWN0IHpjb21wX29wcyB7XFxuIFxcdGludCAoKnNldHVwX3BhcmFtcykoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKTtcXG4gXFx0dm9pZCAoKnJlbGVhc2VfcGFyYW1zKShzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpO1xcbiBcXG4rXFx0dW5zaWduZWQgaW50IGNhcHM7XFxuK1xcdHMzMiBsZXZlbF9taW47XFxuK1xcdHMzMiBsZXZlbF9tYXg7XFxuIFxcdGNvbnN0IGNoYXIgKm5hbWU7XFxuIH07XFxuIFxcbkBAIC04MSw2ICs4Nyw4IEBAIGludCB6Y29tcF9jcHVfdXBfcHJlcGFyZSh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9kZSk7XFxuIGludCB6Y29tcF9jcHVfZGVhZCh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9kZSk7XFxuIHNzaXplX3QgemNvbXBfYXZhaWxhYmxlX3Nob3coY29uc3QgY2hhciAqY29tcCwgY2hhciAqYnVmLCBzc2l6ZV90IGF0KTtcXG4gY29uc3QgY2hhciAqemNvbXBfbG9va3VwX2JhY2tlbmRfbmFtZShjb25zdCBjaGFyICpjb21wKTtcXG4rdW5zaWduZWQgaW50IHpjb21wX2dldF9jYXBzKGNvbnN0IGNoYXIgKmNvbXApO1xcbitpbnQgemNvbXBfdmFsaWRhdGVfbGV2ZWwoY29uc3QgY2hhciAqY29tcCwgczMyIGxldmVsKTtcXG4gXFxuIHN0cnVjdCB6Y29tcCAqemNvbXBfY3JlYXRlKGNvbnN0IGNoYXIgKmFsZywgc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKTtcXG4gdm9pZCB6Y29tcF9kZXN0cm95KHN0cnVjdCB6Y29tcCAqY29tcCk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcXG5pbmRleCBhY2U2NWM1ODYwNzJiYS4uNmI0NzU4NmU4NzE4YzggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1xcbkBAIC01Nyw2ICs1Nyw3IEBAIHN0YXRpYyBzaXplX3QgaHVnZV9jbGFzc19zaXplO1xcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zIHpyYW1fZGV2b3BzO1xcbiBcXG4gc3RhdGljIHZvaWQgc2xvdF9mcmVlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgaW5kZXgpO1xcbitzdGF0aWMgdm9pZCBjb21wX3BhcmFtc19yZXNldChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8pO1xcbiAjZGVmaW5lIHNsb3RfZGVwX21hcCh6cmFtLCBpbmRleCkgKFxcdTAwMjYoenJhbSktXFx1MDAzZXRhYmxlWyhpbmRleCldLmRlcF9tYXApXFxuIFxcbiBzdGF0aWMgdm9pZCBzbG90X2xvY2tfaW5pdChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIGluZGV4KVxcbkBAIC0xNjgxLDYgKzE2ODIsNyBAQCBzdGF0aWMgaW50IF9fY29tcF9hbGdvcml0aG1fc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBjb25zdCBjaGFyICpidWYpXFxuIFxcdH1cXG4gXFxuIFxcdGNvbXBfYWxnb3JpdGhtX3NldCh6cmFtLCBwcmlvLCBhbGcpO1xcbitcXHRjb21wX3BhcmFtc19yZXNldCh6cmFtLCBwcmlvKTtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuQEAgLTE2OTksMjEgKzE3MDEsMjQgQEAgc3RhdGljIGludCBjb21wX3BhcmFtc19zdG9yZShzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIHMzMiBsZXZlbCxcXG4gXFx0XFx0XFx0ICAgICBjb25zdCBjaGFyICpkaWN0X3BhdGgsXFxuIFxcdFxcdFxcdCAgICAgc3RydWN0IGRlZmxhdGVfcGFyYW1zICpkZWZsYXRlX3BhcmFtcylcXG4ge1xcbitcXHR2b2lkICpuZXdfZGljdCA9IE5VTEw7XFxuIFxcdHNzaXplX3Qgc3ogPSAwO1xcbiBcXG4tXFx0Y29tcF9wYXJhbXNfcmVzZXQoenJhbSwgcHJpbyk7XFxuLVxcbiBcXHRpZiAoZGljdF9wYXRoKSB7XFxuLVxcdFxcdHN6ID0ga2VybmVsX3JlYWRfZmlsZV9mcm9tX3BhdGgoZGljdF9wYXRoLCAwLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2enJhbS1cXHUwMDNlcGFyYW1zW3ByaW9dLmRpY3QsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdElOVF9NQVgsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdE5VTEwsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdFJFQURJTkdfUE9MSUNZKTtcXG4tXFx0XFx0aWYgKHN6IFxcdTAwM2MgMClcXG4rXFx0XFx0c3ogPSBrZXJuZWxfcmVhZF9maWxlX2Zyb21fcGF0aChkaWN0X3BhdGgsIDAsIFxcdTAwMjZuZXdfZGljdCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0SU5UX01BWCwgTlVMTCwgUkVBRElOR19QT0xJQ1kpO1xcbitcXHRcXHRpZiAoc3ogXFx1MDAzYyAwKSB7XFxuK1xcdFxcdFxcdHZmcmVlKG5ld19kaWN0KTtcXG4rXFx0XFx0XFx0cmV0dXJuIHN6O1xcbitcXHRcXHR9IGVsc2UgaWYgKHN6ID09IDApIHtcXG4rXFx0XFx0XFx0dmZyZWUobmV3X2RpY3QpO1xcbiBcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbitcXHRjb21wX3BhcmFtc19yZXNldCh6cmFtLCBwcmlvKTtcXG4gXFx0enJhbS1cXHUwMDNlcGFyYW1zW3ByaW9dLmRpY3Rfc3ogPSBzejtcXG4rXFx0enJhbS1cXHUwMDNlcGFyYW1zW3ByaW9dLmRpY3QgPSBuZXdfZGljdDtcXG4gXFx0enJhbS1cXHUwMDNlcGFyYW1zW3ByaW9dLmxldmVsID0gbGV2ZWw7XFxuIFxcdHpyYW0tXFx1MDAzZXBhcmFtc1twcmlvXS5kZWZsYXRlLndpbmJpdHMgPSBkZWZsYXRlX3BhcmFtcy1cXHUwMDNld2luYml0cztcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTE3OTQsNiArMTc5OSwxOSBAQCBzdGF0aWMgc3NpemVfdCBhbGdvcml0aG1fcGFyYW1zX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdH1cXG4gXFxuK1xcdGlmICh6cmFtLVxcdTAwM2Vjb21wX2FsZ3NbcHJpb10pIHtcXG4rXFx0XFx0dW5zaWduZWQgaW50IGNhcHMgPSB6Y29tcF9nZXRfY2Fwcyh6cmFtLVxcdTAwM2Vjb21wX2FsZ3NbcHJpb10pO1xcbitcXG4rXFx0XFx0aWYgKGRpY3RfcGF0aCBcXHUwMDI2XFx1MDAyNiAhKGNhcHMgXFx1MDAyNiBaQ09NUF9DQVBfRElDVCkpXFxuK1xcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4rXFxuK1xcdFxcdGlmIChsZXZlbCAhPSBaQ09NUF9QQVJBTV9OT1RfU0VUKSB7XFxuK1xcdFxcdFxcdHJldCA9IHpjb21wX3ZhbGlkYXRlX2xldmVsKHpyYW0tXFx1MDAzZWNvbXBfYWxnc1twcmlvXSwgbGV2ZWwpO1xcbitcXHRcXHRcXHRpZiAocmV0KVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuIFxcdHJldCA9IGNvbXBfcGFyYW1zX3N0b3JlKHpyYW0sIHByaW8sIGxldmVsLCBkaWN0X3BhdGgsIFxcdTAwMjZkZWZsYXRlX3BhcmFtcyk7XFxuIFxcdHJldHVybiByZXQgPyByZXQgOiBsZW47XFxuIH1cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC96c3RkX2xpYi5oIGIvaW5jbHVkZS9saW51eC96c3RkX2xpYi5oXFxuaW5kZXggZTI5NWQ0MTI1ZGRlODQuLmY0YjI2ODQ0ZTUzYWRlIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvenN0ZF9saWIuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvenN0ZF9saWIuaFxcbkBAIC0xMjQxLDYgKzEyNDEsNyBAQCBaU1RETElCX0FQSSBzaXplX3QgWlNURF9zaXplb2ZfRERpY3QoY29uc3QgWlNURF9ERGljdCogZGRpY3QpO1xcbiAjZGVmaW5lIFpTVERfU0VBUkNITE9HX01JTiAgICAgICAgMVxcbiAjZGVmaW5lIFpTVERfTUlOTUFUQ0hfTUFYICAgICAgICAgNyAgIC8qIG9ubHkgZm9yIFpTVERfZmFzdCwgb3RoZXIgc3RyYXRlZ2llcyBhcmUgbGltaXRlZCB0byA2ICovXFxuICNkZWZpbmUgWlNURF9NSU5NQVRDSF9NSU4gICAgICAgICAzICAgLyogb25seSBmb3IgWlNURF9idG9wdCssIGZhc3RlciBzdHJhdGVnaWVzIGFyZSBsaW1pdGVkIHRvIDQgKi9cXG4rI2RlZmluZSBaU1REX01BWF9DTEVWRUxcXHRcXHQyMlxcbiAjZGVmaW5lIFpTVERfVEFSR0VUTEVOR1RIX01BWCAgICBaU1REX0JMT0NLU0laRV9NQVhcXG4gI2RlZmluZSBaU1REX1RBUkdFVExFTkdUSF9NSU4gICAgIDAgICAvKiBub3RlIDogY29tcGFyaW5nIHRoaXMgY29uc3RhbnQgdG8gYW4gdW5zaWduZWQgcmVzdWx0cyBpbiBhIHRhdXRvbG9naWNhbCB0ZXN0ICovXFxuICNkZWZpbmUgWlNURF9TVFJBVEVHWV9NSU4gICAgICAgIFpTVERfZmFzdFxcbmRpZmYgLS1naXQgYS9saWIvenN0ZC9jb21wcmVzcy9jbGV2ZWxzLmggYi9saWIvenN0ZC9jb21wcmVzcy9jbGV2ZWxzLmhcXG5pbmRleCA2YWI4YmU2NTMyZWZjMC4uZGIzYjI3NWI1MDJlNmMgMTAwNjQ0XFxuLS0tIGEvbGliL3pzdGQvY29tcHJlc3MvY2xldmVscy5oXFxuKysrIGIvbGliL3pzdGQvY29tcHJlc3MvY2xldmVscy5oXFxuQEAgLTE3LDcgKzE3LDYgQEBcXG4gXFxuIC8qLT09PT09ICBQcmUtZGVmaW5lZCBjb21wcmVzc2lvbiBsZXZlbHMgID09PT09LSovXFxuIFxcbi0jZGVmaW5lIFpTVERfTUFYX0NMRVZFTCAgICAgMjJcXG4gXFxuIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6MjU6MjYuMjgxNDkyODY4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjE2OTg1MzczOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJaUkFNXCIsXG4gICAgXCJaUkFNX01VTFRJX0NPTVBcIixcbiAgICBcIlpSQU1fQkFDS0VORF9MWjRcIixcbiAgICBcIlpSQU1fQkFDS0VORF9MWjRIQ1wiLFxuICAgIFwiWlJBTV9CQUNLRU5EX1pTVERcIixcbiAgICBcIlpSQU1fQkFDS0VORF9ERUZMQVRFXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfODQyXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfTFpPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWxnb3JpdGhtX3BhcmFtc19zdG9yZVwiLFxuICAgIFwiY29tcF9wYXJhbXNfc3RvcmVcIixcbiAgICBcIl9fY29tcF9hbGdvcml0aG1fc3RvcmVcIixcbiAgICBcInpjb21wX2dldF9jYXBzXCIsXG4gICAgXCJ6Y29tcF92YWxpZGF0ZV9sZXZlbFwiLFxuICAgIFwienN0ZF9jcmVhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB6cmFtIGNvbXByZXNzaW9uIHBhcmFtZXRlcnMgaGFuZGxpbmcuIEl0IGFkZHMgY2FwYWJpbGl0aWVzIGFuZCB2YWxpZGF0aW9uIGZvciBjb21wcmVzc2lvbiBsZXZlbHMgYW5kIGRpY3Rpb25hcnkgc3VwcG9ydC4gSXQgYWxzbyBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBjb21wX3BhcmFtc19zdG9yZWAgYW5kIHJlbW92ZXMgYSByZWR1bmRhbnQgcGFyYW1ldGVyIHJlbGVhc2UgaW4gYHpzdGRfY3JlYXRlYC4gVGhlc2UgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzeXNmcyBhdHRyaWJ1dGVzIGxpa2UgYGFsZ29yaXRobV9wYXJhbXNgLCBgY29tcF9hbGdvcml0aG1gLCBhbmQgYHJlY29tcF9hbGdvcml0aG1gLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDM0YmY2NzcwYmFhODUyMDQ2N2ZlM2YxYWM0MzUxZjQyMWRjYzk2MzBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1biAyNyAwNzoyNToyNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmNcbmluZGV4IDEwZDlkNWM2MGY1MzEzLi5kNzk2ZWJkYTFmYTBkNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuY1xuQEAgLTU3LDUgKzU3LDYgQEAgY29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kXzg0MiA9IHtcbiBcdC5kZXN0cm95X2N0eFx0PSBkZXN0cm95Xzg0MixcbiBcdC5zZXR1cF9wYXJhbXNcdD0gc2V0dXBfcGFyYW1zXzg0MixcbiBcdC5yZWxlYXNlX3BhcmFtc1x0PSByZWxlYXNlX3BhcmFtc184NDIsXG4rXHQuY2Fwc1x0XHQ9IDAsXG4gXHQubmFtZVx0XHQ9IFwiODQyXCIsXG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmNcbmluZGV4IGY5MmE1MmE3MjBkMWUyLi5jZWRjM2RhYWQzM2FmNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2RlZmxhdGUuY1xuKysrIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jXG5AQCAtMTQ0LDUgKzE0NCw4IEBAIGNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF9kZWZsYXRlID0ge1xuIFx0LmRlc3Ryb3lfY3R4XHQ9IGRlZmxhdGVfZGVzdHJveSxcbiBcdC5zZXR1cF9wYXJhbXNcdD0gZGVmbGF0ZV9zZXR1cF9wYXJhbXMsXG4gXHQucmVsZWFzZV9wYXJhbXNcdD0gZGVmbGF0ZV9yZWxlYXNlX3BhcmFtcyxcbitcdC5jYXBzXHRcdD0gWkNPTVBfQ0FQX0xFVkVMLFxuK1x0LmxldmVsX21pblx0PSBaX0RFRkFVTFRfQ09NUFJFU1NJT04sXG4rXHQubGV2ZWxfbWF4XHQ9IFpfQkVTVF9DT01QUkVTU0lPTixcbiBcdC5uYW1lXHRcdD0gXCJkZWZsYXRlXCIsXG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NC5jXG5pbmRleCBjNDQ5ZDUxMWJhODZmZS4uYmQxZTVjYTRkMTM0MmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuY1xuKysrIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmNcbkBAIC0xNDYsNSArMTQ2LDggQEAgY29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kX2x6NCA9IHtcbiBcdC5kZXN0cm95X2N0eFx0PSBsejRfZGVzdHJveSxcbiBcdC5zZXR1cF9wYXJhbXNcdD0gbHo0X3NldHVwX3BhcmFtcyxcbiBcdC5yZWxlYXNlX3BhcmFtc1x0PSBsejRfcmVsZWFzZV9wYXJhbXMsXG4rXHQuY2Fwc1x0XHQ9IFpDT01QX0NBUF9ESUNUIHwgWkNPTVBfQ0FQX0xFVkVMLFxuK1x0LmxldmVsX21pblx0PSBMWjRfQUNDRUxFUkFUSU9OX0RFRkFVTFQsXG4rXHQubGV2ZWxfbWF4XHQ9IDY1NTM1LFxuIFx0Lm5hbWVcdFx0PSBcImx6NFwiLFxuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0aGMuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmNcbmluZGV4IGY2YTMzNmFjZmUyMDJlLi4wZTBkN2M2OGE3ZDQyMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmNcbisrKyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmNcbkBAIC0xMjQsNSArMTI0LDggQEAgY29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kX2x6NGhjID0ge1xuIFx0LmRlc3Ryb3lfY3R4XHQ9IGx6NGhjX2Rlc3Ryb3ksXG4gXHQuc2V0dXBfcGFyYW1zXHQ9IGx6NGhjX3NldHVwX3BhcmFtcyxcbiBcdC5yZWxlYXNlX3BhcmFtc1x0PSBsejRoY19yZWxlYXNlX3BhcmFtcyxcbitcdC5jYXBzXHRcdD0gWkNPTVBfQ0FQX0RJQ1QgfCBaQ09NUF9DQVBfTEVWRUwsXG4rXHQubGV2ZWxfbWluXHQ9IExaNEhDX01JTl9DTEVWRUwsXG4rXHQubGV2ZWxfbWF4XHQ9IExaNEhDX01BWF9DTEVWRUwsXG4gXHQubmFtZVx0XHQ9IFwibHo0aGNcIixcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6by5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmNcbmluZGV4IDRjOTA2YmVhYWU2YjMzLi45NjVmMDA3ZTJjYTg5OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6by5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uY1xuQEAgLTU1LDUgKzU1LDYgQEAgY29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kX2x6byA9IHtcbiBcdC5kZXN0cm95X2N0eFx0PSBsem9fZGVzdHJveSxcbiBcdC5zZXR1cF9wYXJhbXNcdD0gbHpvX3NldHVwX3BhcmFtcyxcbiBcdC5yZWxlYXNlX3BhcmFtc1x0PSBsem9fcmVsZWFzZV9wYXJhbXMsXG4rXHQuY2Fwc1x0XHQ9IDAsXG4gXHQubmFtZVx0XHQ9IFwibHpvXCIsXG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6b3JsZS5jXG5pbmRleCAxMDY0MGM5NmNiZmNhYS4uNzU3YjQ1OThiZTAzMDQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuY1xuKysrIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmNcbkBAIC01NSw1ICs1NSw2IEBAIGNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF9sem9ybGUgPSB7XG4gXHQuZGVzdHJveV9jdHhcdD0gbHpvcmxlX2Rlc3Ryb3ksXG4gXHQuc2V0dXBfcGFyYW1zXHQ9IGx6b3JsZV9zZXR1cF9wYXJhbXMsXG4gXHQucmVsZWFzZV9wYXJhbXNcdD0gbHpvcmxlX3JlbGVhc2VfcGFyYW1zLFxuK1x0LmNhcHNcdFx0PSAwLFxuIFx0Lm5hbWVcdFx0PSBcImx6by1ybGVcIixcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuY1xuaW5kZXggZDAwYjU0ODA1NmRjMmUuLjBmYmQyNDYwODgzYTgyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmNcbkBAIC0xNjEsNyArMTYxLDYgQEAgc3RhdGljIGludCB6c3RkX2NyZWF0ZShzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMsIHN0cnVjdCB6Y29tcF9jdHggKmN0eClcbiBcdHJldHVybiAwO1xuIFxuIGVycm9yOlxuLVx0enN0ZF9yZWxlYXNlX3BhcmFtcyhwYXJhbXMpO1xuIFx0enN0ZF9kZXN0cm95KGN0eCk7XG4gXHRyZXR1cm4gLUVJTlZBTDtcbiB9XG5AQCAtMjEzLDUgKzIxMiw4IEBAIGNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF96c3RkID0ge1xuIFx0LmRlc3Ryb3lfY3R4XHQ9IHpzdGRfZGVzdHJveSxcbiBcdC5zZXR1cF9wYXJhbXNcdD0genN0ZF9zZXR1cF9wYXJhbXMsXG4gXHQucmVsZWFzZV9wYXJhbXNcdD0genN0ZF9yZWxlYXNlX3BhcmFtcyxcbitcdC5jYXBzXHRcdD0gWkNPTVBfQ0FQX0RJQ1QgfCBaQ09NUF9DQVBfTEVWRUwsXG4rXHQubGV2ZWxfbWluXHQ9IChpbnQpLVpTVERfVEFSR0VUTEVOR1RIX01BWCxcbitcdC5sZXZlbF9tYXhcdD0gWlNURF9NQVhfQ0xFVkVMLFxuIFx0Lm5hbWVcdFx0PSBcInpzdGRcIixcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jIGIvZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmNcbmluZGV4IDk3NGM0NjkxODg3ZTZmLi4xNWRlMjhiNTBkNDI3ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuY1xuQEAgLTksNiArOSw5IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY3B1aG90cGx1Zy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdm1hbGxvYy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3lzZnMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2x6NC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvemxpYi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvenN0ZC5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCJ6Y29tcC5oXCJcbiBcbkBAIC05NCw2ICs5NywyNiBAQCBjb25zdCBjaGFyICp6Y29tcF9sb29rdXBfYmFja2VuZF9uYW1lKGNvbnN0IGNoYXIgKmNvbXApXG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4rdW5zaWduZWQgaW50IHpjb21wX2dldF9jYXBzKGNvbnN0IGNoYXIgKmNvbXApXG4re1xuK1x0Y29uc3Qgc3RydWN0IHpjb21wX29wcyAqYmFja2VuZCA9IGxvb2t1cF9iYWNrZW5kX29wcyhjb21wKTtcbitcbitcdHJldHVybiBiYWNrZW5kID8gYmFja2VuZC1cdTAwM2VjYXBzIDogMDtcbit9XG4rXG4raW50IHpjb21wX3ZhbGlkYXRlX2xldmVsKGNvbnN0IGNoYXIgKmNvbXAsIHMzMiBsZXZlbClcbit7XG4rXHRjb25zdCBzdHJ1Y3QgemNvbXBfb3BzICpiYWNrZW5kID0gbG9va3VwX2JhY2tlbmRfb3BzKGNvbXApO1xuK1xuK1x0aWYgKCFiYWNrZW5kKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdGlmICghKGJhY2tlbmQtXHUwMDNlY2FwcyBcdTAwMjYgWkNPTVBfQ0FQX0xFVkVMKSlcbitcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1x0aWYgKGxldmVsIFx1MDAzYyBiYWNrZW5kLVx1MDAzZWxldmVsX21pbiB8fCBsZXZlbCBcdTAwM2UgYmFja2VuZC1cdTAwM2VsZXZlbF9tYXgpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIC8qIHNob3cgYXZhaWxhYmxlIGNvbXByZXNzb3JzICovXG4gc3NpemVfdCB6Y29tcF9hdmFpbGFibGVfc2hvdyhjb25zdCBjaGFyICpjb21wLCBjaGFyICpidWYsIHNzaXplX3QgYXQpXG4ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oIGIvZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmhcbmluZGV4IDgxYTBmM2Y2ZmY0ODcxLi4xNmY4MTJhOTRjNjdkNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuaFxuQEAgLTcsNiArNyw5IEBAXG4gXG4gI2RlZmluZSBaQ09NUF9QQVJBTV9OT1RfU0VUXHRJTlRfTUlOXG4gXG4rI2RlZmluZSBaQ09NUF9DQVBfRElDVFx0XHRCSVQoMClcdC8qIGRpY3Rpb25hcnkgc3VwcG9ydCAqL1xuKyNkZWZpbmUgWkNPTVBfQ0FQX0xFVkVMXHRcdEJJVCgxKVx0LyogYWRqdXN0YWJsZSBjb21wcmVzc2lvbiBsZXZlbCAqL1xuK1xuIHN0cnVjdCBkZWZsYXRlX3BhcmFtcyB7XG4gXHRzMzIgd2luYml0cztcbiB9O1xuQEAgLTY2LDYgKzY5LDkgQEAgc3RydWN0IHpjb21wX29wcyB7XG4gXHRpbnQgKCpzZXR1cF9wYXJhbXMpKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcyk7XG4gXHR2b2lkICgqcmVsZWFzZV9wYXJhbXMpKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcyk7XG4gXG4rXHR1bnNpZ25lZCBpbnQgY2FwcztcbitcdHMzMiBsZXZlbF9taW47XG4rXHRzMzIgbGV2ZWxfbWF4O1xuIFx0Y29uc3QgY2hhciAqbmFtZTtcbiB9O1xuIFxuQEAgLTgxLDYgKzg3LDggQEAgaW50IHpjb21wX2NwdV91cF9wcmVwYXJlKHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCBobGlzdF9ub2RlICpub2RlKTtcbiBpbnQgemNvbXBfY3B1X2RlYWQodW5zaWduZWQgaW50IGNwdSwgc3RydWN0IGhsaXN0X25vZGUgKm5vZGUpO1xuIHNzaXplX3QgemNvbXBfYXZhaWxhYmxlX3Nob3coY29uc3QgY2hhciAqY29tcCwgY2hhciAqYnVmLCBzc2l6ZV90IGF0KTtcbiBjb25zdCBjaGFyICp6Y29tcF9sb29rdXBfYmFja2VuZF9uYW1lKGNvbnN0IGNoYXIgKmNvbXApO1xuK3Vuc2lnbmVkIGludCB6Y29tcF9nZXRfY2Fwcyhjb25zdCBjaGFyICpjb21wKTtcbitpbnQgemNvbXBfdmFsaWRhdGVfbGV2ZWwoY29uc3QgY2hhciAqY29tcCwgczMyIGxldmVsKTtcbiBcbiBzdHJ1Y3QgemNvbXAgKnpjb21wX2NyZWF0ZShjb25zdCBjaGFyICphbGcsIHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcyk7XG4gdm9pZCB6Y29tcF9kZXN0cm95KHN0cnVjdCB6Y29tcCAqY29tcCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1xuaW5kZXggYWNlNjVjNTg2MDcyYmEuLjZiNDc1ODZlODcxOGM4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcbisrKyBiL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jXG5AQCAtNTcsNiArNTcsNyBAQCBzdGF0aWMgc2l6ZV90IGh1Z2VfY2xhc3Nfc2l6ZTtcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zIHpyYW1fZGV2b3BzO1xuIFxuIHN0YXRpYyB2b2lkIHNsb3RfZnJlZShzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIGluZGV4KTtcbitzdGF0aWMgdm9pZCBjb21wX3BhcmFtc19yZXNldChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8pO1xuICNkZWZpbmUgc2xvdF9kZXBfbWFwKHpyYW0sIGluZGV4KSAoXHUwMDI2KHpyYW0pLVx1MDAzZXRhYmxlWyhpbmRleCldLmRlcF9tYXApXG4gXG4gc3RhdGljIHZvaWQgc2xvdF9sb2NrX2luaXQoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBpbmRleClcbkBAIC0xNjgxLDYgKzE2ODIsNyBAQCBzdGF0aWMgaW50IF9fY29tcF9hbGdvcml0aG1fc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBjb25zdCBjaGFyICpidWYpXG4gXHR9XG4gXG4gXHRjb21wX2FsZ29yaXRobV9zZXQoenJhbSwgcHJpbywgYWxnKTtcbitcdGNvbXBfcGFyYW1zX3Jlc2V0KHpyYW0sIHByaW8pO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTE2OTksMjEgKzE3MDEsMjQgQEAgc3RhdGljIGludCBjb21wX3BhcmFtc19zdG9yZShzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIHMzMiBsZXZlbCxcbiBcdFx0XHQgICAgIGNvbnN0IGNoYXIgKmRpY3RfcGF0aCxcbiBcdFx0XHQgICAgIHN0cnVjdCBkZWZsYXRlX3BhcmFtcyAqZGVmbGF0ZV9wYXJhbXMpXG4ge1xuK1x0dm9pZCAqbmV3X2RpY3QgPSBOVUxMO1xuIFx0c3NpemVfdCBzeiA9IDA7XG4gXG4tXHRjb21wX3BhcmFtc19yZXNldCh6cmFtLCBwcmlvKTtcbi1cbiBcdGlmIChkaWN0X3BhdGgpIHtcbi1cdFx0c3ogPSBrZXJuZWxfcmVhZF9maWxlX2Zyb21fcGF0aChkaWN0X3BhdGgsIDAsXG4tXHRcdFx0XHRcdFx0XHUwMDI2enJhbS1cdTAwM2VwYXJhbXNbcHJpb10uZGljdCxcbi1cdFx0XHRcdFx0XHRJTlRfTUFYLFxuLVx0XHRcdFx0XHRcdE5VTEwsXG4tXHRcdFx0XHRcdFx0UkVBRElOR19QT0xJQ1kpO1xuLVx0XHRpZiAoc3ogXHUwMDNjIDApXG4rXHRcdHN6ID0ga2VybmVsX3JlYWRfZmlsZV9mcm9tX3BhdGgoZGljdF9wYXRoLCAwLCBcdTAwMjZuZXdfZGljdCxcbitcdFx0XHRcdFx0XHRJTlRfTUFYLCBOVUxMLCBSRUFESU5HX1BPTElDWSk7XG4rXHRcdGlmIChzeiBcdTAwM2MgMCkge1xuK1x0XHRcdHZmcmVlKG5ld19kaWN0KTtcbitcdFx0XHRyZXR1cm4gc3o7XG4rXHRcdH0gZWxzZSBpZiAoc3ogPT0gMCkge1xuK1x0XHRcdHZmcmVlKG5ld19kaWN0KTtcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0fVxuIFx0fVxuIFxuK1x0Y29tcF9wYXJhbXNfcmVzZXQoenJhbSwgcHJpbyk7XG4gXHR6cmFtLVx1MDAzZXBhcmFtc1twcmlvXS5kaWN0X3N6ID0gc3o7XG4rXHR6cmFtLVx1MDAzZXBhcmFtc1twcmlvXS5kaWN0ID0gbmV3X2RpY3Q7XG4gXHR6cmFtLVx1MDAzZXBhcmFtc1twcmlvXS5sZXZlbCA9IGxldmVsO1xuIFx0enJhbS1cdTAwM2VwYXJhbXNbcHJpb10uZGVmbGF0ZS53aW5iaXRzID0gZGVmbGF0ZV9wYXJhbXMtXHUwMDNld2luYml0cztcbiBcdHJldHVybiAwO1xuQEAgLTE3OTQsNiArMTc5OSwxOSBAQCBzdGF0aWMgc3NpemVfdCBhbGdvcml0aG1fcGFyYW1zX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbitcdGlmICh6cmFtLVx1MDAzZWNvbXBfYWxnc1twcmlvXSkge1xuK1x0XHR1bnNpZ25lZCBpbnQgY2FwcyA9IHpjb21wX2dldF9jYXBzKHpyYW0tXHUwMDNlY29tcF9hbGdzW3ByaW9dKTtcbitcbitcdFx0aWYgKGRpY3RfcGF0aCBcdTAwMjZcdTAwMjYgIShjYXBzIFx1MDAyNiBaQ09NUF9DQVBfRElDVCkpXG4rXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1xuK1x0XHRpZiAobGV2ZWwgIT0gWkNPTVBfUEFSQU1fTk9UX1NFVCkge1xuK1x0XHRcdHJldCA9IHpjb21wX3ZhbGlkYXRlX2xldmVsKHpyYW0tXHUwMDNlY29tcF9hbGdzW3ByaW9dLCBsZXZlbCk7XG4rXHRcdFx0aWYgKHJldClcbitcdFx0XHRcdHJldHVybiByZXQ7XG4rXHRcdH1cbitcdH1cbitcbiBcdHJldCA9IGNvbXBfcGFyYW1zX3N0b3JlKHpyYW0sIHByaW8sIGxldmVsLCBkaWN0X3BhdGgsIFx1MDAyNmRlZmxhdGVfcGFyYW1zKTtcbiBcdHJldHVybiByZXQgPyByZXQgOiBsZW47XG4gfVxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvenN0ZF9saWIuaCBiL2luY2x1ZGUvbGludXgvenN0ZF9saWIuaFxuaW5kZXggZTI5NWQ0MTI1ZGRlODQuLmY0YjI2ODQ0ZTUzYWRlIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC96c3RkX2xpYi5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3pzdGRfbGliLmhcbkBAIC0xMjQxLDYgKzEyNDEsNyBAQCBaU1RETElCX0FQSSBzaXplX3QgWlNURF9zaXplb2ZfRERpY3QoY29uc3QgWlNURF9ERGljdCogZGRpY3QpO1xuICNkZWZpbmUgWlNURF9TRUFSQ0hMT0dfTUlOICAgICAgICAxXG4gI2RlZmluZSBaU1REX01JTk1BVENIX01BWCAgICAgICAgIDcgICAvKiBvbmx5IGZvciBaU1REX2Zhc3QsIG90aGVyIHN0cmF0ZWdpZXMgYXJlIGxpbWl0ZWQgdG8gNiAqL1xuICNkZWZpbmUgWlNURF9NSU5NQVRDSF9NSU4gICAgICAgICAzICAgLyogb25seSBmb3IgWlNURF9idG9wdCssIGZhc3RlciBzdHJhdGVnaWVzIGFyZSBsaW1pdGVkIHRvIDQgKi9cbisjZGVmaW5lIFpTVERfTUFYX0NMRVZFTFx0XHQyMlxuICNkZWZpbmUgWlNURF9UQVJHRVRMRU5HVEhfTUFYICAgIFpTVERfQkxPQ0tTSVpFX01BWFxuICNkZWZpbmUgWlNURF9UQVJHRVRMRU5HVEhfTUlOICAgICAwICAgLyogbm90ZSA6IGNvbXBhcmluZyB0aGlzIGNvbnN0YW50IHRvIGFuIHVuc2lnbmVkIHJlc3VsdHMgaW4gYSB0YXV0b2xvZ2ljYWwgdGVzdCAqL1xuICNkZWZpbmUgWlNURF9TVFJBVEVHWV9NSU4gICAgICAgIFpTVERfZmFzdFxuZGlmZiAtLWdpdCBhL2xpYi96c3RkL2NvbXByZXNzL2NsZXZlbHMuaCBiL2xpYi96c3RkL2NvbXByZXNzL2NsZXZlbHMuaFxuaW5kZXggNmFiOGJlNjUzMmVmYzAuLmRiM2IyNzViNTAyZTZjIDEwMDY0NFxuLS0tIGEvbGliL3pzdGQvY29tcHJlc3MvY2xldmVscy5oXG4rKysgYi9saWIvenN0ZC9jb21wcmVzcy9jbGV2ZWxzLmhcbkBAIC0xNyw3ICsxNyw2IEBAXG4gXG4gLyotPT09PT0gIFByZS1kZWZpbmVkIGNvbXByZXNzaW9uIGxldmVscyAgPT09PT0tKi9cbiBcbi0jZGVmaW5lIFpTVERfTUFYX0NMRVZFTCAgICAgMjJcbiBcbiBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSlcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA3OjI1OjI2LjI4MTUxMTA5OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1MjczNTg0ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgWnJhbSBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3MgbWFraW5nIHNvbWUgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZXMgdG8gdGhlIGB6cmFtYCBkcml2ZXIsIHNwZWNpZmljYWxseSB3aXRoaW4gYGRyaXZlcnMvYmxvY2svenJhbS9gLiBJdCdzIGludHJvZHVjaW5nIG5ldyBjb21wcmVzc2lvbiBiYWNrZW5kIGNhcGFiaWxpdGllcyAtIHRoaW5rIDg0MiwgZGVmbGF0ZSwgbHo0LCBsejRoYywgbHpvLCBsem9ybGUsIGFuZCB6c3RkIC0gd2hpY2ggaXMgZ3JlYXQgdG8gc2VlLiBUaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIHRoZSBhZGRpdGlvbiBvZiBgY2Fwc2AsIGBsZXZlbF9taW5gLCBhbmQgYGxldmVsX21heGAgdG8gdGhlIGBzdHJ1Y3QgemNvbXBfb3BzYCwgYWxvbmcgd2l0aCBgemNvbXBfZ2V0X2NhcHMoKWAgYW5kIGB6Y29tcF92YWxpZGF0ZV9sZXZlbCgpYCBmdW5jdGlvbnMgaW4gYHpjb21wLmNgLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBzdXJlIHRoaXMgaXMgYWxsIHZhbGlkIGFuZCB3b3JraW5nIGFzIGl0IHNob3VsZC4gVGhlIGNvcmUgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgaGluZ2VzIG9uIGB6cmFtX2Rydi5jYCwgc3BlY2lmaWNhbGx5IHRoZSB2YWxpZGF0aW9uIHJvdXRpbmVzIGl0J3MgYWRkaW5nIGZvciBjb21wcmVzc2lvbiBsZXZlbHMgYW5kIGRpY3Rpb25hcnkgc3VwcG9ydC4gSXTigJlzIGEgZ29vZCB0aGluZywgYSBzYW5pdHkgY2hlY2ssIHdoZW4gc3RvcmluZyBhbGdvcml0aG0gcGFyYW1ldGVycy4gUGx1cywgYW5kIHRoaXMgaXMgaW1wb3J0YW50LCBJIHNlZSBpdCdzIGFsc28gYWRkcmVzc2luZyBhIHBvdGVudGlhbCBtZW1vcnkgbGVhayBvciBhIHNpbWlsYXIgaXNzdWUgd2l0aGluIGBjb21wX3BhcmFtc19zdG9yZWAuIFRoZXkncmUgbm93IHVzaW5nIGBuZXdfZGljdGAgYW5kIGZyZWVpbmcgaXQgb24gZXJyb3IsIGFuZCB0aGV5J3JlIHJlc2V0dGluZyBwYXJhbWV0ZXJzIGNvcnJlY3RseS4gQW5kIHRoZXkndmUgc21hcnRseSByZW1vdmVkIGB6c3RkX3JlbGVhc2VfcGFyYW1zKHBhcmFtcylgIGZyb20gdGhlIGB6c3RkX2NyZWF0ZWAgZXJyb3IgcGF0aCAtIHRoYXQncyBhIGNsYXNzaWMgdHJhcCwgYW5kIHRoZXkndmUgYXZvaWRlZCBpdCFcblxuTm93LCBsZXQncyBzZWUgaWYgdGhpcyBpcyByZWFjaGFibGUuICpZZXMqLCB0aGUgY2hhbmdlcyB3aXRoaW4gdGhlIGB6cmFtYCBkcml2ZXIgbWVhbiBpdCdzIGFic29sdXRlbHkgcmVhY2hhYmxlIHZpYSBzeXNmcywgcGFydGljdWxhcmx5IHRocm91Z2ggYGFsZ29yaXRobV9wYXJhbXNfc3RvcmVgLiBGcm9tIGFuIGluaXRpYWwgZnVuY3Rpb25hbCBzdGFuZHBvaW50LCBpdCBsb29rcyBzb3VuZC4gVGhlIHZhbGlkYXRpb24gY2hlY2tzLCB0aGUgbWVtb3J5IGxlYWsgZml4Li4uIGFsbCBwb3NpdGl2ZSBzaWducy5cblxuUmlnaHQsIHNvIHRvIG1ha2Ugc3VyZSBpdCdzIGFsbCBob29rZWQgaW4gY29ycmVjdGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTG9va3MgbGlrZSB0aGUgcHJpbWFyeSBjb25maWcgdmFyaWFibGUgaXMgYENPTkZJR19aUkFNYCwgb2YgY291cnNlLiBJJ2xsIG5lZWQgdG8gZHJpbGwgZG93biBpbnRvIGVpdGhlciBgZHJpdmVycy9ibG9jay96cmFtL0tjb25maWdgIG9yIGBkcml2ZXJzL2Jsb2NrL0tjb25maWdgIHRvIGNvbmZpcm0gZXZlcnl0aGluZyBpcyBjb3JyZWN0bHkgZW5hYmxlZCBhbmQgY29uZmlndXJlZCBiYXNlZCBvbiB0aGlzIHBhdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTg0LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6MjU6MzIuODA4ODcyNjk5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDU4OTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBaUkFNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjI6Y29uZmlnIFpSQU1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJDb21wcmVzc2VkIFJBTSBibG9jayBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE2LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjE3OmNvbmZpZyBaUkFNX0JBQ0tFTkRfTFo0XFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTgtXFx0Ym9vbCBcXFwibHo0IGNvbXByZXNzaW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0yMi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoyMzpjb25maWcgWlJBTV9CQUNLRU5EX0xaNEhDXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMjQtXFx0Ym9vbCBcXFwibHo0aGMgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTI4LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjI5OmNvbmZpZyBaUkFNX0JBQ0tFTkRfWlNURFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTMwLVxcdGJvb2wgXFxcInpzdGQgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTM0LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjM1OmNvbmZpZyBaUkFNX0JBQ0tFTkRfREVGTEFURVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTM2LVxcdGJvb2wgXFxcImRlZmxhdGUgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQwLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjQxOmNvbmZpZyBaUkFNX0JBQ0tFTkRfODQyXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDItXFx0Ym9vbCBcXFwiODQyIGNvbXByZXNzaW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy00Ni1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo0Nzpjb25maWcgWlJBTV9CQUNLRU5EX0ZPUkNFX0xaT1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQ4LVxcdGRlcGVuZHMgb24gWlJBTVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNTItXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NTM6Y29uZmlnIFpSQU1fQkFDS0VORF9MWk9cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01NC1cXHRib29sIFxcXCJsem8gYW5kIGx6by1ybGUgY29tcHJlc3Npb24gc3VwcG9ydFxcXCIgaWYgIVpSQU1fQkFDS0VORF9GT1JDRV9MWk9cXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTYwPWNob2ljZVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjQtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NjU6Y29uZmlnIFpSQU1fREVGX0NPTVBfTFpPUkxFXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjYtXFx0Ym9vbCBcXFwibHpvLXJsZVxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTY4LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjY5OmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaT1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTcwLVxcdGJvb2wgXFxcImx6b1xcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTcyLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjczOmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaNFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTc0LVxcdGJvb2wgXFxcImx6NFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTc2LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjc3OmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaNEhDXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzgtXFx0Ym9vbCBcXFwibHo0aGNcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04MC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo4MTpjb25maWcgWlJBTV9ERUZfQ09NUF9aU1REXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODItXFx0Ym9vbCBcXFwienN0ZFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTg0LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjg1OmNvbmZpZyBaUkFNX0RFRl9DT01QX0RFRkxBVEVcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04Ni1cXHRib29sIFxcXCJkZWZsYXRlXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODgtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6ODk6Y29uZmlnIFpSQU1fREVGX0NPTVBfODQyXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTAtXFx0Ym9vbCBcXFwiODQyXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9OTM9ZW5kY2hvaWNlXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTQtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6OTU6Y29uZmlnIFpSQU1fREVGX0NPTVBcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy05Ni1cXHRzdHJpbmdcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEwNi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMDc6Y29uZmlnIFpSQU1fV1JJVEVCQUNLXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTA4LSAgICAgICBib29sIFxcXCJXcml0ZSBiYWNrIGluY29tcHJlc3NpYmxlIG9yIGlkbGUgcGFnZSB0byBiYWNraW5nIGRldmljZVxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEyMC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMjE6Y29uZmlnIFpSQU1fVFJBQ0tfRU5UUllfQUNUSU1FXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTIyLVxcdGJvb2wgXFxcIlRyYWNrIGFjY2VzcyB0aW1lIG9mIHpyYW0gZW50cmllc1xcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEyOC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMjk6Y29uZmlnIFpSQU1fTUVNT1JZX1RSQUNLSU5HXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTMwLVxcdGJvb2wgXFxcIlRyYWNrIHpSYW0gYmxvY2sgc3RhdHVzXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTM5LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjE0MDpjb25maWcgWlJBTV9NVUxUSV9DT01QXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTQxLVxcdGJvb2wgXFxcIkVuYWJsZSBtdWx0aXBsZSBjb21wcmVzc2lvbiBzdHJlYW1zXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNTozMi44NjYzMzg1NDRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODIyOTk1ODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBtb2RpZmljYXRpb25zLlxuXG4qKkFuYWx5emluZyB0aGUgWnJhbSBQYXRjaCoqXG5cbkFscmlnaHQsIHNvIHRoaXMgcGF0Y2ggaGl0cyBgenJhbV9kcnYuY2AsIGB6Y29tcC5jYCwgYW5kIGEgYnVuY2ggb2YgYmFja2VuZCBmaWxlcy4gVGhhdCdzIGEgZ29vZCBwbGFjZSB0byBzdGFydCwgaGl0dGluZyB0aGUgY29yZSBkcml2ZXIsIHRoZSBjb21wcmVzc2lvbiByb3V0aW5lcywgYW5kIGxpa2VseSB0aGUgYmxvY2sgZGV2aWNlIGludGVyYWN0aW9uLiBMZXQncyBkaWcgaW50byBgenJhbV9kcnYuY2AgZmlyc3QuIEkgd2FudCB0byBzZWUgd2hpY2ggZnVuY3Rpb25zIHdlcmUgdG91Y2hlZCB0aGVyZS4gVGhhdCBmaWxlIGlzIHRoZSBoZWFydCBvZiB0aGUgYmxvY2sgZGV2aWNlIGVtdWxhdGlvbiwgc28gYW55IGNoYW5nZXMgdGhlcmUgYXJlIGdvaW5nIHRvIGJlIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQuIEknbGwgbmVlZCB0byBrbm93ICp3aGF0KiB0aGV5IG1vZGlmaWVkIGluIHRoYXQgY3J1Y2lhbCBmaWxlIHRvIGdyYXNwIHRoZSBpbXBsaWNhdGlvbnMgYWNyb3NzIHRoZSBlbnRpcmUgc3Vic3lzdGVtLiBUaGlzIGlzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2NjIsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNTozNS42ODkzMzY5MDFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU4NzUwODY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFsZ29yaXRobV9wYXJhbXNfc3RvcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTcwMD1zdGF0aWMgaW50IGNvbXBfcGFyYW1zX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgczMyIGxldmVsLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTcyNi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxNzI3OnN0YXRpYyBzc2l6ZV90IGFsZ29yaXRobV9wYXJhbXNfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE3MjgtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA3OjI1OjM1Ljk0ODA5NDE4N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1OTQ0MTQ4ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBQYXJhbWV0ZXIgYW5kIEFsZ29yaXRobSBTdG9yYWdlKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHR3byBrZXkgc3RvcmFnZSBsb2NhdGlvbnM6IGBjb21wX3BhcmFtc19zdG9yZWAgYW5kIGBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlYC4gSXQncyBwcmV0dHkgc3RhbmRhcmQgdG8ga2VlcCBwYXJhbWV0ZXJzIHNlcGFyYXRlIGZyb20gdGhlIGFsZ29yaXRobXMgdGhlbXNlbHZlcywgZXNwZWNpYWxseSBpbiBtb3JlIGNvbXBsZXggY29tcHV0YXRpb25hbCBzZXR1cHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcGFyYW1ldGVycyBhcmUgYmVpbmcgb3JnYW5pemVkIGluIGBjb21wX3BhcmFtc19zdG9yZWAuIElzIGl0IGEga2V5LXZhbHVlIHN0b3JlPyBTdHJ1Y3R1cmVkIGRhdGE/IEhvdyBpcyBpdCBpbmRleGVkLCBpZiBhdCBhbGw/IFRoZSBnb2FsIGlzIHRvIHNlZSBpZiBJIGNhbiB0cmFjZSBob3cgc3BlY2lmaWMgcGFyYW1ldGVyIHNldHMgYXJlIHRpZWQgdG8gcGFydGljdWxhciBjb21wdXRhdGlvbmFsIG1vZGVscy5cblxuTmV4dCwgdGhlIGBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlYC4uLnRoZSBkb3VibGUgdW5kZXJzY29yZSBzdWdnZXN0cyBpdCdzIGEgcHJpdmF0ZSBvciBpbnRlcm5hbCBjb21wb25lbnQuIE5vIHByb2JsZW0sIHRoYXQncyBmaW5lLiBXaGF04oCZcyBpbXBvcnRhbnQgaXMgaG93IGFsZ29yaXRobXMgYXJlICpyZXByZXNlbnRlZCogd2l0aGluIHRoaXMgc3RvcmUuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGZ1bmN0aW9uIHBvaW50ZXJzPyBTZXJpYWxpemVkIGNvZGUgb2JqZWN0cz8gQWJzdHJhY3QgcmVwcmVzZW50YXRpb25zIHRoYXQgbmVlZCB0byBiZSBpbnRlcnByZXRlZCBieSBhIHNwZWNpZmljIGVuZ2luZT8gVGhlIGxldmVsIG9mIGFic3RyYWN0aW9uIGhlcmUgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZsZXhpYmlsaXR5IGFuZCBleHRlbnNpYmlsaXR5IG9mIHRoZSBzeXN0ZW0uIEkgd2lsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3bywgaG93IHRoZSBwYXJhbWV0ZXJzIGluIHRoZSBmaXJzdCBhcmUgYXBwbGllZCB0byB0aGUgYWxnb3JpdGhtIGluIHRoZSBzZWNvbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwMzcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNTozOS41NDI1MTE0NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njc2MDU5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb21wX3BhcmFtc19zdG9yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xNjg5PXN0YXRpYyB2b2lkIGNvbXBfcGFyYW1zX3Jlc2V0KHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbylcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE2OTktXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTcwMDpzdGF0aWMgaW50IGNvbXBfcGFyYW1zX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgczMyIGxldmVsLFxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE3MDEtXFx0XFx0XFx0ICAgICBjb25zdCBjaGFyICpkaWN0X3BhdGgsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xNzI3PXN0YXRpYyBzc2l6ZV90IGFsZ29yaXRobV9wYXJhbXNfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTgxNC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxODE1OlxcdHJldCA9IGNvbXBfcGFyYW1zX3N0b3JlKHpyYW0sIHByaW8sIGxldmVsLCBkaWN0X3BhdGgsIFxcdTAwMjZkZWZsYXRlX3BhcmFtcyk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTgxNi1cXHRyZXR1cm4gcmV0ID8gcmV0IDogbGVuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNTozOS41OTkyODMxOTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDc0MzE2MTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBsaWtlIHlvdXJzZWxmOlxuXG4qKkFuYWx5emluZyB0aGUgQWxnb3JpdGhtIFN0b3JlKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSBleGFtaW5lIHRoZSBgX19jb21wX2FsZ29yaXRobV9zdG9yZWAuIFRoYXQncyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0aGUgY29yZSBvZiB0aGlzIHdob2xlIHRoaW5nIHRvIGxpdmUsIHdvdWxkbid0IHlvdT8gVGhpcyBpcyB0aGUgY2VudHJhbCByZXBvc2l0b3J5LCB0aGUgb3BlcmF0aW9uYWwgaGVhcnQgb2YgdGhlIHN5c3RlbSB3aGVuIGl0IGNvbWVzIHRvIGNvbXB1dGF0aW9uLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gbG9vayBhdCBob3cgaXQncyBzdHJ1Y3R1cmVkLCBpdHMgYWNjZXNzIG1ldGhvZHMsIGFuZCwgb2YgY291cnNlLCB0aGUgYWxnb3JpdGhtcyB0aGVtc2VsdmVzLiBXaGF0IGtpbmQgb2YgbWV0YWRhdGEgZG9lcyBpdCBoYXZlPyBWZXJzaW9uaW5nPyBEZXBlbmRlbmN5IG1hbmFnZW1lbnQ/IEFyZSB0aGUgYWxnb3JpdGhtcyBkeW5hbWljYWxseSBsb2FkZWQgb3Igc3RhdGljYWxseSBsaW5rZWQ/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBpbiB0aGUgc3RvcmUgaXRzZWxmPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBzdG9yZSdzIGRlc2lnbiBvbiBzeXN0ZW0gc2NhbGFiaWxpdHkgYW5kIG1haW50YWluYWJpbGl0eT8gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHF1ZXN0aW9ucyBhYm91dCBwb3RlbnRpYWwgY29uY3VycmVuY3kgaXNzdWVzIGFuZCBzZWN1cml0eSBpbXBsaWNhdGlvbnMgaWYgdGhpcyBpcyBub3QgaGFuZGxlZCBjb3JyZWN0bHkuIFRoZSBkZXNpZ24gb2YgdGhpcyBzdG9yZSBpcyBwYXJhbW91bnQgdG8gdGhlIGVudGlyZSBvcGVyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2MzgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNTo0My4wNzM2MDMxMloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc4ODIzNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19jb21wX2FsZ29yaXRobV9zdG9yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xNjYwPXN0YXRpYyB2b2lkIGNvbXBfYWxnb3JpdGhtX3NldChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIGNvbnN0IGNoYXIgKmFsZylcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE2NjQtXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTY2NTpzdGF0aWMgaW50IF9fY29tcF9hbGdvcml0aG1fc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBjb25zdCBjaGFyICpidWYpXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTY2Ni17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xODMxPXN0YXRpYyBzc2l6ZV90IGNvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4MzgtXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTgzOTpcXHRyZXQgPSBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlKHpyYW0sIFpSQU1fUFJJTUFSWV9DT01QLCBidWYpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4NDAtXFx0cmV0dXJuIHJldCA/IHJldCA6IGxlbjtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTE4NjM9c3RhdGljIHNzaXplX3QgcmVjb21wX2FsZ29yaXRobV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODk5LVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjE5MDA6XFx0cmV0ID0gX19jb21wX2FsZ29yaXRobV9zdG9yZSh6cmFtLCBwcmlvLCBhbGcpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE5MDEtXFx0cmV0dXJuIHJldCA/IHJldCA6IGxlbjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6MjU6NDMuMTMxNDg5MTU1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NDYzMjg0OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBaUkFNIEFsZ29yaXRobSBQYXJhbWV0ZXIgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gcmV2aWV3aW5nIHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBleHBlcnQgZXllIGdvZXMgdG8gdGhlIHN5c3RlbSBmaWxlIHN0b3JlIGZ1bmN0aW9uczogYGFsZ29yaXRobV9wYXJhbXNfc3RvcmVgLCBgY29tcF9hbGdvcml0aG1fc3RvcmVgLCBhbmQgYHJlY29tcF9hbGdvcml0aG1fc3RvcmVgLiBUaGVzZSBhcmUgdGhlIGVudHJ5IHBvaW50cyDigJMgdGhlIGdhdGV3YXlzIOKAkyB1c2Vyc3BhY2UgdXRpbGl6ZXMgdmlhIGAvc3lzL2Jsb2NrL3pyYW1YL2FsZ29fcGFyYW1zYCBvciBzaW1pbGFyIHN5c2ZzIG5vZGVzLlxuXG5UaGlzIHBhdGNoLCBzcGVjaWZpY2FsbHksIGludHJvZHVjZXMgdHdvIG5ldyBmdW5jdGlvbnMsIGB6Y29tcF9nZXRfY2Fwc2AgYW5kIGB6Y29tcF92YWxpZGF0ZV9sZXZlbGAuIFBsdXMsIGl0IHRvdWNoZXMgYGNvbXBfcGFyYW1zX3N0b3JlYCB0byBhZGRyZXNzIGEgbWVtb3J5IGxlYWsgaXNzdWUuIEFwcGFyZW50bHksIHRoZXkgd2VyZSB1c2luZyBgbmV3X2RpY3RgIHdoZW4gdGhleSBzaG91bGQgaGF2ZSBiZWVuIHdyaXRpbmcgZGlyZWN0bHkgdG8gYHpyYW0tXHUwMDNlcGFyYW1zW3ByaW9dLmRpY3RgLlxuXG5UaGlzIHNjcmVhbXMgZnV6emluZyB0YXJnZXQuIFRob3NlIHN0b3JlIGZ1bmN0aW9ucyBhbmQgbmV3IGZ1bmN0aW9ucyBhcmUgcHJpbWUgY2FuZGlkYXRlcyBmb3IgZmluZGluZyB2dWxuZXJhYmlsaXRpZXMuIEkgbmVlZCB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb246XG5cbiogICBgYWxnb3JpdGhtX3BhcmFtc19zdG9yZWBcbiogICBgY29tcF9wYXJhbXNfc3RvcmVgXG4qICAgYF9fY29tcF9hbGdvcml0aG1fc3RvcmVgIChUaGF0IGRvdWJsZSB1bmRlcnNjb3JlIGlzIGEgYml0IG9mIGEgZmxhZywgdG9vLilcbiogICBgemNvbXBfZ2V0X2NhcHNgXG4qICAgYHpjb21wX3ZhbGlkYXRlX2xldmVsYFxuXG5CZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byB0aGlzLCBJIHNob3VsZCB2ZXJpZnkgdGhlIGV4YWN0IG5hbWUgb2YgYGFsZ29yaXRobV9wYXJhbXNfc3RvcmVgLiBOZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIHdvcmtpbmcgd2l0aCB0aGUgY29ycmVjdCBzeW1ib2wuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyODgsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6MjU6NDcuNTc3ODIwMjM3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjQzODU4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhbGdvcml0aG1fcGFyYW1zX3N0b3JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTE3MDA9c3RhdGljIGludCBjb21wX3BhcmFtc19zdG9yZShzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIHMzMiBsZXZlbCxcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE3MjYtXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTcyNzpzdGF0aWMgc3NpemVfdCBhbGdvcml0aG1fcGFyYW1zX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xNzI4LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNTo0Ny42MzQyNjIzMDFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc4MjIzNTE3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRha2luZyB0aGUgcGVyc3BlY3RpdmUgb2Ygc29tZW9uZSBkZWVwbHkgZmFtaWxpYXIgd2l0aCB0aGlzIGtpbmQgb2Ygc3lzdGVtOlxuXG4qKkNoZWNraW5nIHRoZSBOb21lbmNsYXR1cmUqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIGluLCBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhhdCB0aGUgdmFyaWFibGUgb3Igc3RvcmUgSSdtIHdvcmtpbmcgd2l0aCBpcywgaW4gZmFjdCwgY2FsbGVkIGBjb21wX2FsZ29yaXRobV9zdG9yZWAuIEl0J3MgYSBmdW5kYW1lbnRhbCBzdGVwLCByZWFsbHkuIFR5cG9zIGFuZCBpbmNvcnJlY3QgbmFtaW5nIGNvbnZlbnRpb25zIGFyZSB0aGUgYmFuZSBvZiBteSBleGlzdGVuY2UsIGFuZCB0aGV5IGNhbiBsZWFkIHRvIGhvdXJzIG9mIGRlYnVnZ2luZyDigJMgY29tcGxldGVseSB1bm5lY2Vzc2FyeSBob3VycywgSSBtaWdodCBhZGQuIFNvLCBsZXQncyBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgdGhlIHByZWNpc2UsIGNhbm9uaWNhbCBuYW1lIHdlJ3JlIHVzaW5nLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEknbSBub3QgY2hhc2luZyBhIHBoYW50b20gcmVmZXJlbmNlIGRvd24gdGhlIHdyb25nIHBhdGguIE5vIHNlbnNlIGluIHdhc3RpbmcgdGltZSBvbiBhIG1pc25hbWVkIHZhcmlhYmxlLiBMZXQncyBtYWtlIHN1cmUgdGhhdCdzIHNxdWFyZWQgYXdheSBmaXJzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTk2NSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA3OjI1OjUwLjQxNjUwMTgxM1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgxODI0NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29tcF9hbGdvcml0aG1fc3RvcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTY2MD1zdGF0aWMgdm9pZCBjb21wX2FsZ29yaXRobV9zZXQoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBjb25zdCBjaGFyICphbGcpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xNjY0LVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjE2NjU6c3RhdGljIGludCBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgY29uc3QgY2hhciAqYnVmKVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE2NjYte1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTgxOT1zdGF0aWMgc3NpemVfdCBjb21wX2FsZ29yaXRobV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4MzAtXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTgzMTpzdGF0aWMgc3NpemVfdCBjb21wX2FsZ29yaXRobV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTgzMi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODM4LVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjE4Mzk6XFx0cmV0ID0gX19jb21wX2FsZ29yaXRobV9zdG9yZSh6cmFtLCBaUkFNX1BSSU1BUllfQ09NUCwgYnVmKTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODQwLVxcdHJldHVybiByZXQgPyByZXQgOiBsZW47XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xODQ0PXN0YXRpYyBzc2l6ZV90IHJlY29tcF9hbGdvcml0aG1fc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODYyLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjE4NjM6c3RhdGljIHNzaXplX3QgcmVjb21wX2FsZ29yaXRobV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTg2NC1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4OTktXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTkwMDpcXHRyZXQgPSBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlKHpyYW0sIHByaW8sIGFsZyk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTkwMS1cXHRyZXR1cm4gcmV0ID8gcmV0IDogbGVuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNTo1MC40NzQ2ODc4MDhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkzNTk2NDIwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gWnNoIENvbXBsZXRpb24gRnVuY3Rpb25zKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGNvbXBsZXRpb24gc3lzdGVtIGlzIGJlaGF2aW5nLCBzbyBsZXQncyBzdGFydCB3aXRoIGEgZGVlcCBkaXZlIGludG8gdGhlIGNvZGUuIFRoZSBmaXJzdCBwbGFjZSB0byBsb29rIGlzIGRlZmluaXRlbHkgdGhlIGZ1bmN0aW9ucyBgemNvbXBfZ2V0X2NhcHNgIGFuZCBgemNvbXBfdmFsaWRhdGVfbGV2ZWxgLiBUaGVzZSBhcmUgZnVuZGFtZW50YWwuIFRoZXkgYXJlIHByb2JhYmx5IHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBjb21wbGV0aW9uIHN5c3RlbSBhbmQgZW5zdXJpbmcgdGhhdCB0aGUgY29tcGxldGlvbiBsZXZlbCBpcyBhcHByb3ByaWF0ZSBnaXZlbiB0aGUgY29udGV4dCwgcmVzcGVjdGl2ZWx5LiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGlucHV0cyB0aGVzZSBmdW5jdGlvbnMgdGFrZSwgd2hhdCB0aGV5IHJldHVybiwgYW5kIGhvdyB0aGV5IGludGVyYWN0LiBBcmUgdGhleSB0aWdodGx5IGNvdXBsZWQsIG9yIGluZGVwZW5kZW50IG1vZHVsZXM/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBwb3RlbnRpYWwgYm90dGxlbmVja3Mgb3IgZWRnZSBjYXNlcyBJIHNob3VsZCB3YXRjaCBmb3IgaW4gdGhlaXIgaW1wbGVtZW50YXRpb24/IExldCdzIHRyYWNlIHRoZWlyIGV4ZWN1dGlvbiB3aXRoIGRpZmZlcmVudCBzY2VuYXJpb3MgYW5kIHNlZSB3aGF0IHRoZSByZXN1bHRzIGFyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA3NjAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNTo1My40MTA2NTU0OTVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MDgyNzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpjb21wX3ZhbGlkYXRlX2xldmVsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jPTEwMD11bnNpZ25lZCBpbnQgemNvbXBfZ2V0X2NhcHMoY29uc3QgY2hhciAqY29tcClcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jLTEwNi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYzoxMDc6aW50IHpjb21wX3ZhbGlkYXRlX2xldmVsKGNvbnN0IGNoYXIgKmNvbXAsIHMzMiBsZXZlbClcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYy0xMDgte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNTo1My40Njk3NDQ4OTlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc4NDM4NTc5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLCB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSBhYnNvbHV0ZWx5IGVzc2VudGlhbCBoZXJlPyBUaGUgcHJpbWFyeSBvbmUgdGhhdCBqdW1wcyBvdXQgYXQgbWUgaXMsIG9mIGNvdXJzZSwgYFpSQU1gLiBUaGF0J3MgdGhlIGNvcmUuIE5vdywgSSBuZWVkIHRvIGNvbnNpZGVyIGEgcG90ZW50aWFsIHdyaW5rbGUuIFdlJ3JlIGRlYWxpbmcgd2l0aCBgcmVjb21wX2FsZ29yaXRobV9zdG9yZWAsIHdoaWNoIGdpdmVzIG1lIHBhdXNlLiBJIHNob3VsZCBjaGVjayBpZiB3ZSBhbHNvIG5lZWQgYFpSQU1fTVVMVElfQ09NUGAgYXMgcGFydCBvZiB0aGF0IGNvbmZpZ3VyYXRpb24uIExldCBtZSB2ZXJpZnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMTA2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6MjU6NTYuMjU0MTMzODkxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTMyMzc5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZWNvbXBfYWxnb3JpdGhtX3N0b3JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTE4NDQ9c3RhdGljIHNzaXplX3QgcmVjb21wX2FsZ29yaXRobV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4NjItXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTg2MzpzdGF0aWMgc3NpemVfdCByZWNvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODY0LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNTo1Ni4zMTM0NjQ1OTVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgwNTM3OTU3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgbGlrZSB5b3U6XG5cbioqQ2hlY2tpbmcgZm9yIFpSQU0gTXVsdGktQ29tcHJlc3Npb24gU3VwcG9ydCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB2ZXJpZnkgc29tZXRoaW5nIGFib3V0IHRoZSB6cmFtIGNvbXByZXNzaW9uIHNldHVwLiBNeSBpbml0aWFsIHN0ZXAgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoZSBgcmVjb21wX2FsZ29yaXRobV9zdG9yZWAgZnVuY3Rpb25hbGl0eSBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkLiBJJ20gZm9jdXNpbmcgb24gd2hldGhlciBpdCdzIGVuYWJsZWQgdW5kZXIgdGhlIGBDT05GSUdfWlJBTV9NVUxUSV9DT01QYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gVGhpcyBpcyBhIGNvbW1vbiBwYXR0ZXJuLCBhbmQgYSBjcml0aWNhbCBpbml0aWFsIGNoZWNrLiBJJ20gZXNzZW50aWFsbHkgdHJhY2luZyB0aGUgZGVwZW5kZW5jaWVzLiBLbm93aW5nIHRoYXQgYHJlY29tcF9hbGdvcml0aG1fc3RvcmVgIGRlcGVuZHMgb24gYENPTkZJR19aUkFNX01VTFRJX0NPTVBgIHdpbGwgZnVuZGFtZW50YWxseSBpbXBhY3QgaG93IEkgYXBwcm9hY2ggdGhlIHJlc3Qgb2YgdGhlIGFuYWx5c2lzLCBzbyBpdCBuZWVkcyB0byBiZSBlc3RhYmxpc2hlZCBlYXJseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0MTMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNTo1OS4xMTg4NDcyNjVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2OTc0ODM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19aUkFNX01VTFRJX0NPTVBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yMjc9c3RhdGljIGlubGluZSBib29sIGlzX3BhcnRpYWxfaW8oc3RydWN0IGJpb192ZWMgKmJ2ZWMpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yMzItXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MjMzOiNpZiBkZWZpbmVkIENPTkZJR19aUkFNX1dSSVRFQkFDSyB8fCBkZWZpbmVkIENPTkZJR19aUkFNX01VTFRJX0NPTVBcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yMzQtc3RydWN0IHpyYW1fcHBfc2xvdCB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xODMxPXN0YXRpYyBzc2l6ZV90IGNvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4NDItXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTg0MzojaWZkZWYgQ09ORklHX1pSQU1fTVVMVElfQ09NUFxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4NDQtc3RhdGljIHNzaXplX3QgcmVjb21wX2FsZ29yaXRobV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTIzNzI9c3RhdGljIGludCB6cmFtX2J2ZWNfd3JpdGUoc3RydWN0IHpyYW0gKnpyYW0sIHN0cnVjdCBiaW9fdmVjICpidmVjLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjM3OS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyMzgwOiNpZmRlZiBDT05GSUdfWlJBTV9NVUxUSV9DT01QXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjM4MS0jZGVmaW5lIFJFQ09NUFJFU1NfSURMRVxcdFxcdCgxIFxcdTAwM2NcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0zMDA0PXN0YXRpYyBERVZJQ0VfQVRUUl9SVyhjb21wcmVzc2VkX3dyaXRlYmFjayk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAwNS0jZW5kaWZcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDA2OiNpZmRlZiBDT05GSUdfWlJBTV9NVUxUSV9DT01QXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAwNy1zdGF0aWMgREVWSUNFX0FUVFJfUlcocmVjb21wX2FsZ29yaXRobSk7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0zMDEyPXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICp6cmFtX2Rpc2tfYXR0cnNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMwMzItXFx0XFx1MDAyNmRldl9hdHRyX2RlYnVnX3N0YXQuYXR0cixcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDMzOiNpZmRlZiBDT05GSUdfWlJBTV9NVUxUSV9DT01QXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAzNC1cXHRcXHUwMDI2ZGV2X2F0dHJfcmVjb21wX2FsZ29yaXRobS5hdHRyLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2Lmg9ODA9c3RydWN0IHpyYW1fc3RhdHMge1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmgtOTctXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2Lmg6OTg6I2lmZGVmIENPTkZJR19aUkFNX01VTFRJX0NPTVBcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaC05OS0jZGVmaW5lIFpSQU1fUFJJTUFSWV9DT01QXFx0MFVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6MjU6NTkuMTc1ODMxNzE5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNTA5NzAxMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqWlJBTSBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zKipcblxuQWxyaWdodCwgc28gYENPTkZJR19aUkFNX01VTFRJX0NPTVBgIHNlZW1zIGxpa2UgYSBuby1icmFpbmVyIHRvIGVuYWJsZS4gIFRoYXQncyBhIGRlZmluaXRlIHBvc2l0aXZlLiBOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzIGFib3V0IHRoZSBjb21wcmVzc2lvbiBiYWNrZW5kcy4gSSBzZWUgdGhlIHBhdGNoIHRvdWNoZXMgYGJhY2tlbmRfODQyLmNgLCBgYmFja2VuZF9kZWZsYXRlLmNgLCBgYmFja2VuZF9sejQuY2AsIGBiYWNrZW5kX2x6NGhjLmNgLCBgYmFja2VuZF9sem8uY2AsIGBiYWNrZW5kX2x6b3JsZS5jYCwgYW5kIGBiYWNrZW5kX3pzdGQuY2AuICBUaGF0IG1lYW5zIHdlIHNob3VsZCBwcm9iYWJseSBlbmFibGUgYWxsIG9mIHRoZSByZWxldmFudCBiYWNrZW5kIG9wdGlvbnM6ICBgWlJBTV9CQUNLRU5EX0xaNGAsIGBaUkFNX0JBQ0tFTkRfTFo0SENgLCBgWlJBTV9CQUNLRU5EX1pTVERgLCBgWlJBTV9CQUNLRU5EX0RFRkxBVEVgLCBgWlJBTV9CQUNLRU5EXzg0MmAsIGFuZCBgWlJBTV9CQUNLRU5EX0xaT2AuXG5cbkhvbGQgb24uLi4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcuICBSaWdodCwgYFpSQU1fQkFDS0VORF9MWk9gIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCB1bmxlc3MgYCFaUkFNX0JBQ0tFTkRfRk9SQ0VfTFpPYC4gT2theSwgc28gbGV0J3MganVzdCBtYWtlIHN1cmUgd2UncmUgaW5jbHVkaW5nIGBaUkFNYCBhbmQgYFpSQU1fTVVMVElfQ09NUGAuXG5cbkFjdHVhbGx5LCB3YWl0LCB0aGlua2luZyBhYm91dCBpdC4gZW5hYmxpbmcgYWxsIHRoZSBiYWNrZW5kIG9wdGlvbnMgc3VjaCBhcyBgWlJBTV9CQUNLRU5EX0xaNGAsIGBaUkFNX0JBQ0tFTkRfTFo0SENgLCBgWlJBTV9CQUNLRU5EX1pTVERgLCBgWlJBTV9CQUNLRU5EX0RFRkxBVEVgLCBgWlJBTV9CQUNLRU5EXzg0MmAsIGFuZCBgWlJBTV9CQUNLRU5EX0xaT2Agd2lsbCBiZSB1c2VmdWwgZm9yIHRlc3RpbmcgYW5kIGV2YWx1YXRpbmcgdGhlIHBlcmZvcm1hbmNlIG9mIGVhY2ggYmFja2VuZCBpbiBhIG11bHRpLWNvbXByZXNzaW9uIHNldHRpbmcuICBXZSBkZWZpbml0ZWx5IG5lZWQgdG8gbGlzdCB0aGVtIGFsbCBvdXQuXG5cbk5vdywgbGV0IG1lIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGBhbGdvcml0aG1fcGFyYW1zX3N0b3JlYCBmdW5jdGlvbiBpbiBgenJhbV9kcnYuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzYzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA3OjI2OjA0LjIyNjgwNTE5M1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYzMTE2NzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWxnb3JpdGhtX3BhcmFtc19zdG9yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xNzAwPXN0YXRpYyBpbnQgY29tcF9wYXJhbXNfc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBzMzIgbGV2ZWwsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xNzI2LVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjE3Mjc6c3RhdGljIHNzaXplX3QgYWxnb3JpdGhtX3BhcmFtc19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTcyOC1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6MjY6MDQuMjgzMTIwOTc3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MTc5OTE1NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4gTXkgZmlyc3QgdGhvdWdodCBpczogKipTeXNmcyBFeHBvcnQgQ2hlY2sqKi4gSSBuZWVkIHRvIHZlcmlmeSBpZiB0aGlzIGBhbGdvcml0aG1fcGFyYW1zX3N0b3JlYCBjb21wb25lbnQgaGFzIGJlZW4gcHJvcGVybHkgZXhwb3NlZCB0aHJvdWdoIHN5c2ZzLiBUaGF0J3MgdGhlIGNydWNpYWwgZmlyc3Qgc3RlcC4gSWYgaXQncyBub3QgZXhwb3J0ZWQgdGhlcmUsIHRoZW4gbXkgaW50ZXJhY3Rpb24gd2l0aCBpdCBpcyBpbW1lZGlhdGVseSBnb2luZyB0byBiZSBsaW1pdGVkLiBJIG5lZWQgdG8gY29uZmlybSBpdHMgYXZhaWxhYmlsaXR5IHZpYSBzeXNmcyBiZWZvcmUgSSBjYW4gZG8gYW55dGhpbmcgZnVydGhlcjsgdGhhdCBpcywgYmVmb3JlIEkgY2FuIHJlYWQgZnJvbSwgd3JpdGUgdG8sIG9yIG90aGVyd2lzZSBpbnRlcmFjdCB3aXRoIGl0cyBleHBvc2VkIHBhcmFtZXRlcnMuIEknbGwgbmVlZCB0byBrbm93IHdoZXRoZXIgb3Igbm90IEknbSBldmVuICphbGxvd2VkKiB0byB1c2UgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMjUwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6MjY6MDcuMDAxMTE2MDg1WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzA3ODYzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhbGdvcml0aG1fcGFyYW1zXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTE3MDA9c3RhdGljIGludCBjb21wX3BhcmFtc19zdG9yZShzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIHMzMiBsZXZlbCxcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE3MjYtXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTcyNzpzdGF0aWMgc3NpemVfdCBhbGdvcml0aG1fcGFyYW1zX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xNzI4LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MzAwOD1zdGF0aWMgREVWSUNFX0FUVFJfV08ocmVjb21wcmVzcyk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAwOS0jZW5kaWZcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDEwOnN0YXRpYyBERVZJQ0VfQVRUUl9XTyhhbGdvcml0aG1fcGFyYW1zKTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMDExLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTMwMTI9c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKnpyYW1fZGlza19hdHRyc1tdID0ge1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAzNi0jZW5kaWZcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDM3OlxcdFxcdTAwMjZkZXZfYXR0cl9hbGdvcml0aG1fcGFyYW1zLmF0dHIsXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAzOC1cXHROVUxMLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNjowNy4wNTgxOTcyMVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDU4Mzc4NjMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBaUkFNIEFsZ29yaXRobSBQYXJhbWV0ZXIgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYGFsZ29yaXRobV9wYXJhbXNgIGF0dHJpYnV0ZSB3aXRoaW4gdGhlIHN5c2ZzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY29uZmlybSBpdHMgdXNhZ2UuIExldCdzIHNlZS4uLiBJJ20gbm90aWNpbmcgYGNvbXBfcGFyYW1zX3N0b3JlYCBpcyBiZWluZyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBgYWxnb3JpdGhtX3BhcmFtc19zdG9yZWAsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIGFsc28gc2VlIHRoYXQgYF9fY29tcF9hbGdvcml0aG1fc3RvcmVgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGJvdGggYGNvbXBfYWxnb3JpdGhtX3N0b3JlYCBhbmQgYHJlY29tcF9hbGdvcml0aG1fc3RvcmVgLiBUaGF0J3MgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZCwga25vd2luZyB0aGUgY2FsbGluZyBjaGFpbnMgYW5kIGRlcGVuZGVuY2llcy4gU28gZmFyLCB0aGUgY2FsbCBmbG93IGlzIGxvZ2ljYWwsIGF0IGxlYXN0IG9uIHRoZSBzdXJmYWNlLlxuXG5Gcm9tIHRoaXMgcXVpY2sgb3ZlcnZpZXcsIGl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGlzIGZ1bmN0aW9uYWwgYW5kIGRlZmluaXRlbHkgcmVhY2hhYmxlIGJhc2VkIG9uIHRoZSBjb25uZWN0aW9ucyBJIGNhbiBzZWUuIE5vdywgdG8gcmVhbGx5IGRpdmUgaW4sIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gdGhlc2Uga2V5IHN5bWJvbHM6IGBhbGdvcml0aG1fcGFyYW1zX3N0b3JlYCwgYGNvbXBfcGFyYW1zX3N0b3JlYCwgYF9fY29tcF9hbGdvcml0aG1fc3RvcmVgLCBgemNvbXBfZ2V0X2NhcHNgLCBhbmQgYHpjb21wX3ZhbGlkYXRlX2xldmVsYC4gVGhhdCBnaXZlcyBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZm9sbG93IHRoZSBjb250cm9sIGZsb3cgYW5kIHVuZGVyc3RhbmQgdGhlIGd1dHMgb2YgdGhpcyBpbXBsZW1lbnRhdGlvbi5cblxuVGhlbiwgdGhlcmUgYXJlIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBaUkFNOiBgWlJBTWAsIGBaUkFNX01VTFRJX0NPTVBgLCBgWlJBTV9CQUNLRU5EX0xaNGAsIGBaUkFNX0JBQ0tFTkRfTFo0SENgLCBgWlJBTV9CQUNLRU5EX1pTVERgLCBgWlJBTV9CQUNLRU5EX0RFRkxBVEVgLCBgWlJBTV9CQUNLRU5EXzg0MmAgYW5kIGBaUkFNX0JBQ0tFTkRfTFpPYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGltcGFjdCB0aGUgb3ZlcmFsbCBiZWhhdmlvci4gV2FpdCwgaGFuZyBvbi4uLiBgWlJBTV9CQUNLRU5EX0xaT2AgaXMgYSBib29sZWFuLiBMZXQncyBtYWtlIHN1cmUgdGhhdCB0aGF0IGlzIGNvcnJlY3QgYnkgY3Jvc3MtY2hlY2tpbmcgYGRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnYCB0byBjb25maXJtIHRoYXQgdGhlIHR5cGUgaXMgc2V0IGNvcnJlY3RseSBpbiB0aGUgS2NvbmZpZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM3ODgsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6MjY6MTIuMTE2NTc5MDAzWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzI5ODg1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWlJBTV9CQUNLRU5EX0xaT1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz00Nz1jb25maWcgWlJBTV9CQUNLRU5EX0ZPUkNFX0xaT1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNTItXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NTM6Y29uZmlnIFpSQU1fQkFDS0VORF9MWk9cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01NC1cXHRib29sIFxcXCJsem8gYW5kIGx6by1ybGUgY29tcHJlc3Npb24gc3VwcG9ydFxcXCIgaWYgIVpSQU1fQkFDS0VORF9GT1JDRV9MWk9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6MjY6MTIuMTczODgwNjI3WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxOTU1ODc2NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBac3RhbmRhcmQgQ29kZWJhc2UqKlxuXG5Pa2F5LCBzbyB0aGUgaW5pdGlhbCBmbGFnIEknbSBsb29raW5nIGF0LCB0aGF0J3MgYSBib29sZWFuLCBubyBzdXJwcmlzZXMgdGhlcmUuIE15IHByaW1hcnkgY29uY2VybiByaWdodCBub3cgaXMgaWRlbnRpZnlpbmcgdGhlIGZ1bGwgZXh0ZW50IG9mIHRoZSBjaGFuZ2VzIHJlbGF0ZWQgdG8gdGhlIHpzdGQgbGlicmFyeS4gSSBrbm93IHRoZXJlJ3MgYSBtb2RpZmljYXRpb24sIGJ1dCBJIG5lZWQgdG8gZW5zdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgZWxzZS5cblxuSSByZWNhbGwgYSBzcGVjaWZpYyBjaGFuZ2UgdG8gYHpzdGRfY3JlYXRlYCB3aXRoaW4gYGJhY2tlbmRfenN0ZC5jYC4gVGhlIHJlbW92YWwgb2YgYHpzdGRfcmVsZWFzZV9wYXJhbXMocGFyYW1zKWAgaW4gdGhhdCBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlzIHNvbWV0aGluZyB0byBrZWVwIGluIG1pbmQuIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gTm93LCBnaXZlbiB0aGF0IGB6c3RkX2NyZWF0ZWAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLCBpdCdzIG5vdCBkaXJlY3RseSBleHBvc2VkIGV4dGVybmFsbHkuIEl0IGlzIGxpa2VseSBjYWxsZWQgdGhyb3VnaCBgemNvbXBfY3JlYXRlYC4gRXZlbiBzbywgSSB0aGluayBJJ2xsIGFkZCBgenN0ZF9jcmVhdGVgIHRvIHRoZSBmb2N1cyBzeW1ib2xzIHRvIG1ha2UgY2VydGFpbiBJIGNhcHR1cmUgZXZlcnl0aGluZy4gSSdtIGdvaW5nIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgYHpzdGRfY3JlYXRlYCBmdW5jdGlvbiBpdHNlbGYgdG8gc29saWRpZnkgbXkgdW5kZXJzdGFuZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ1OTgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6MjY6MTYuMzY5NDcyODczWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjgwOTYyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6c3RkX2NyZWF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jPTUxPXN0YXRpYyBpbnQgenN0ZF9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTcxLVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYzo3MjpcXHR6cC1cXHUwMDNlY2RpY3QgPSB6c3RkX2NyZWF0ZV9jZGljdF9ieXJlZmVyZW5jZShwYXJhbXMtXFx1MDAzZWRpY3QsXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTczLVxcdFxcdFxcdFxcdFxcdFxcdCAgcGFyYW1zLVxcdTAwM2VkaWN0X3N6LFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTc4LVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYzo3OTpcXHR6cC1cXHUwMDNlZGRpY3QgPSB6c3RkX2NyZWF0ZV9kZGljdF9ieXJlZmVyZW5jZShwYXJhbXMtXFx1MDAzZWRpY3QsXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTgwLVxcdFxcdFxcdFxcdFxcdFxcdCAgcGFyYW1zLVxcdTAwM2VkaWN0X3N6LFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jPTkyPXN0YXRpYyB2b2lkIHpzdGRfZGVzdHJveShzdHJ1Y3QgemNvbXBfY3R4ICpjdHgpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMtMTE4LVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYzoxMTk6c3RhdGljIGludCB6c3RkX2NyZWF0ZShzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMsIHN0cnVjdCB6Y29tcF9jdHggKmN0eClcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMtMTIwLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYy0xNTEtXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jOjE1MjpcXHRcXHR6Y3R4LVxcdTAwM2VjY3R4ID0genN0ZF9jcmVhdGVfY2N0eF9hZHZhbmNlZCh6cC1cXHUwMDNlY3VzdG9tX21lbSk7XFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTE1My1cXHRcXHRpZiAoIXpjdHgtXFx1MDAzZWNjdHgpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMtMTU1LVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYzoxNTY6XFx0XFx0emN0eC1cXHUwMDNlZGN0eCA9IHpzdGRfY3JlYXRlX2RjdHhfYWR2YW5jZWQoenAtXFx1MDAzZWN1c3RvbV9tZW0pO1xcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYy0xNTctXFx0XFx0aWYgKCF6Y3R4LVxcdTAwM2VkY3R4KVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jPTIwOD1jb25zdCBzdHJ1Y3QgemNvbXBfb3BzIGJhY2tlbmRfenN0ZCA9IHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYy0yMTAtXFx0LmRlY29tcHJlc3NcXHQ9IHpzdGRfZGVjb21wcmVzcyxcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmM6MjExOlxcdC5jcmVhdGVfY3R4XFx0PSB6c3RkX2NyZWF0ZSxcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMtMjEyLVxcdC5kZXN0cm95X2N0eFxcdD0genN0ZF9kZXN0cm95LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNjoxNi40MjYyODc0MjdaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk0NDI5ODEwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQ29tcHJlc3Npb24gUGFyYW1ldGVyIENoYW5nZXMgaW4gWlJBTSoqXG5cbkFscmlnaHQsIGxldCdzIHplcm8gaW4gb24gYHpzdGRfY3JlYXRlYC4gVGhhdCBmZWVscyBsaWtlIHRoZSBrZXkgZnVuY3Rpb24gaGVyZS4gRmlyc3QsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIGNsZWFyIG9uIHRoZSByZWxldmFudCBmb2N1cyBzeW1ib2xzOiBgYWxnb3JpdGhtX3BhcmFtc19zdG9yZWAsIGBjb21wX3BhcmFtc19zdG9yZWAsIGBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlYCwgYHpjb21wX2dldF9jYXBzYCwgYHpjb21wX3ZhbGlkYXRlX2xldmVsYCwgYW5kIHRoZSBhbHJlYWR5IGVzdGFibGlzaGVkIGB6c3RkX2NyZWF0ZWAuXG5cbk5leHQsIEknbGwgcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgWlJBTSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW52b2x2ZWQuIEkgc2VlIGBaUkFNYCwgYFpSQU1fTVVMVElfQ09NUGAsIHRoZSBiYWNrZW5kIGNob2ljZXMgYFpSQU1fQkFDS0VORF9MWjRgLCBgWlJBTV9CQUNLRU5EX0xaNEhDYCwgYFpSQU1fQkFDS0VORF9aU1REYCwgYFpSQU1fQkFDS0VORF9ERUZMQVRFYCwgYFpSQU1fQkFDS0VORF84NDJgLCBhbmQgYFpSQU1fQkFDS0VORF9MWk9gLlxuXG5Ob3csIHB1dHRpbmcgaXQgYWxsIHRvZ2V0aGVyLCB0aGUgcGF0Y2ggc2VlbXMgdG8gYmUgcmVmaW5pbmcgaG93IGNvbXByZXNzaW9uIHBhcmFtZXRlcnMgYXJlIGhhbmRsZWQgd2l0aGluIFpSQU0uIEl0J3MgZW5oYW5jaW5nIHRoZSBjb21wcmVzc2lvbiBsZXZlbCBjYXBhYmlsaXRpZXMgYW5kIGFkZGluZyBkaWN0aW9uYXJ5IHN1cHBvcnQsIHdoaWNoIGlzIGEgZ29vZCBtb3ZlLiBPbiB0b3Agb2YgdGhhdCwgSSBzZWUgYSBmaXggZm9yIGEgbWVtb3J5IGxlYWsgd2l0aGluIGBjb21wX3BhcmFtc19zdG9yZWAgYW5kIGEgYml0IG9mIHRpZHlpbmcgdXAgYnkgcmVtb3ZpbmcgYSByZWR1bmRhbnQgcGFyYW1ldGVyIHJlbGVhc2UgaW4gYHpzdGRfY3JlYXRlYC4gVGhlIGNoYW5nZXMgc2VlbSB0byBiZSBmdW5jdGlvbmFsbHkgc291bmQgYW5kIGRpcmVjdGx5IGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UuIEkgY2FuIHNlZSB0aGlzIGJlaW5nIHRyaWdnZXJlZCBieSBzeXNmcyBhdHRyaWJ1dGVzIGxpa2UgYGFsZ29yaXRobV9wYXJhbXNgLCBgY29tcF9hbGdvcml0aG1gLCBhbmQgYHJlY29tcF9hbGdvcml0aG1gLlxuXG5Pa2F5LCBJIHRoaW5rIEkgaGF2ZSBhIGdvb2QgZ3Jhc3Agb24gdGhpcy4gSSBzaG91bGQgY2FsbCBgc2V0LXJlc3VsdHNgIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU1OTEsIk91dHB1dFRva2VucyI6MjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA3OjI2OjIyLjM3MDU4ODM0NVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwNzUzMzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJaUkFNXCIsXG4gICAgXCJaUkFNX01VTFRJX0NPTVBcIixcbiAgICBcIlpSQU1fQkFDS0VORF9MWjRcIixcbiAgICBcIlpSQU1fQkFDS0VORF9MWjRIQ1wiLFxuICAgIFwiWlJBTV9CQUNLRU5EX1pTVERcIixcbiAgICBcIlpSQU1fQkFDS0VORF9ERUZMQVRFXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfODQyXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfTFpPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWxnb3JpdGhtX3BhcmFtc19zdG9yZVwiLFxuICAgIFwiY29tcF9wYXJhbXNfc3RvcmVcIixcbiAgICBcIl9fY29tcF9hbGdvcml0aG1fc3RvcmVcIixcbiAgICBcInpjb21wX2dldF9jYXBzXCIsXG4gICAgXCJ6Y29tcF92YWxpZGF0ZV9sZXZlbFwiLFxuICAgIFwienN0ZF9jcmVhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB6cmFtIGNvbXByZXNzaW9uIHBhcmFtZXRlcnMgaGFuZGxpbmcuIEl0IGFkZHMgY2FwYWJpbGl0aWVzIGFuZCB2YWxpZGF0aW9uIGZvciBjb21wcmVzc2lvbiBsZXZlbHMgYW5kIGRpY3Rpb25hcnkgc3VwcG9ydC4gSXQgYWxzbyBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBjb21wX3BhcmFtc19zdG9yZWAgYW5kIHJlbW92ZXMgYSByZWR1bmRhbnQgcGFyYW1ldGVyIHJlbGVhc2UgaW4gYHpzdGRfY3JlYXRlYC4gVGhlc2UgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzeXNmcyBhdHRyaWJ1dGVzIGxpa2UgYGFsZ29yaXRobV9wYXJhbXNgLCBgY29tcF9hbGdvcml0aG1gLCBhbmQgYHJlY29tcF9hbGdvcml0aG1gLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlpSQU1cIixcbiAgICBcIlpSQU1fTVVMVElfQ09NUFwiLFxuICAgIFwiWlJBTV9CQUNLRU5EX0xaNFwiLFxuICAgIFwiWlJBTV9CQUNLRU5EX0xaNEhDXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfWlNURFwiLFxuICAgIFwiWlJBTV9CQUNLRU5EX0RFRkxBVEVcIixcbiAgICBcIlpSQU1fQkFDS0VORF84NDJcIixcbiAgICBcIlpSQU1fQkFDS0VORF9MWk9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhbGdvcml0aG1fcGFyYW1zX3N0b3JlXCIsXG4gICAgXCJjb21wX3BhcmFtc19zdG9yZVwiLFxuICAgIFwiX19jb21wX2FsZ29yaXRobV9zdG9yZVwiLFxuICAgIFwiemNvbXBfZ2V0X2NhcHNcIixcbiAgICBcInpjb21wX3ZhbGlkYXRlX2xldmVsXCIsXG4gICAgXCJ6c3RkX2NyZWF0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHpyYW0gY29tcHJlc3Npb24gcGFyYW1ldGVycyBoYW5kbGluZy4gSXQgYWRkcyBjYXBhYmlsaXRpZXMgYW5kIHZhbGlkYXRpb24gZm9yIGNvbXByZXNzaW9uIGxldmVscyBhbmQgZGljdGlvbmFyeSBzdXBwb3J0LiBJdCBhbHNvIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gYGNvbXBfcGFyYW1zX3N0b3JlYCBhbmQgcmVtb3ZlcyBhIHJlZHVuZGFudCBwYXJhbWV0ZXIgcmVsZWFzZSBpbiBgenN0ZF9jcmVhdGVgLiBUaGVzZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHN5c2ZzIGF0dHJpYnV0ZXMgbGlrZSBgYWxnb3JpdGhtX3BhcmFtc2AsIGBjb21wX2FsZ29yaXRobWAsIGFuZCBgcmVjb21wX2FsZ29yaXRobWAuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow78mk4[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-27 07:16:57 +0000 UTC FinishedAt: 2026-06-27 07:26:23 +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": "5422e496b313b9b0b2f6df068902d6c79925d5e9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ZRAM", "ZRAM_MULTI_COMP", "ZRAM_BACKEND_LZ4", "ZRAM_BACKEND_LZ4HC", "ZRAM_BACKEND_ZSTD", "ZRAM_BACKEND_DEFLATE", "ZRAM_BACKEND_842", "ZRAM_BACKEND_LZO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "5422e496b313b9b0b2f6df068902d6c79925d5e9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ZRAM", "ZRAM_MULTI_COMP", "ZRAM_BACKEND_LZ4", "ZRAM_BACKEND_LZ4HC", "ZRAM_BACKEND_ZSTD", "ZRAM_BACKEND_DEFLATE", "ZRAM_BACKEND_842", "ZRAM_BACKEND_LZO" ], "series_id": "2a18db34-6e0a-4c05-b13c-6537f66d620b" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "algorithm_params_store", "comp_params_store", "__comp_algorithm_store", "zcomp_get_caps", "zcomp_validate_level", "zstd_create" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1pSQU0mIzM0OywKICAgICYjMzQ7WlJBTV9NVUxUSV9DT01QJiMzNDssCiAgICAmIzM0O1pSQU1fQkFDS0VORF9MWjQmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX0xaNEhDJiMzNDssCiAgICAmIzM0O1pSQU1fQkFDS0VORF9aU1REJiMzNDssCiAgICAmIzM0O1pSQU1fQkFDS0VORF9ERUZMQVRFJiMzNDssCiAgICAmIzM0O1pSQU1fQkFDS0VORF84NDImIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX0xaTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2FsZ29yaXRobV9wYXJhbXNfc3RvcmUmIzM0OywKICAgICYjMzQ7Y29tcF9wYXJhbXNfc3RvcmUmIzM0OywKICAgICYjMzQ7X19jb21wX2FsZ29yaXRobV9zdG9yZSYjMzQ7LAogICAgJiMzNDt6Y29tcF9nZXRfY2FwcyYjMzQ7LAogICAgJiMzNDt6Y29tcF92YWxpZGF0ZV9sZXZlbCYjMzQ7LAogICAgJiMzNDt6c3RkX2NyZWF0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB6cmFtIGNvbXByZXNzaW9uIHBhcmFtZXRlcnMgaGFuZGxpbmcuIEl0IGFkZHMgY2FwYWJpbGl0aWVzIGFuZCB2YWxpZGF0aW9uIGZvciBjb21wcmVzc2lvbiBsZXZlbHMgYW5kIGRpY3Rpb25hcnkgc3VwcG9ydC4gSXQgYWxzbyBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBjb21wX3BhcmFtc19zdG9yZWAgYW5kIHJlbW92ZXMgYSByZWR1bmRhbnQgcGFyYW1ldGVyIHJlbGVhc2UgaW4gYHpzdGRfY3JlYXRlYC4gVGhlc2UgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzeXNmcyBhdHRyaWJ1dGVzIGxpa2UgYGFsZ29yaXRobV9wYXJhbXNgLCBgY29tcF9hbGdvcml0aG1gLCBhbmQgYHJlY29tcF9hbGdvcml0aG1gLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMzRiZjY3NzBiYWE4NTIwNDY3ZmUzZjFhYzQzNTFmNDIxZGNjOTYzMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVuIDI3IDA3OjI1OjI0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmNcbmluZGV4IDEwZDlkNWM2MGY1MzEzLi5kNzk2ZWJkYTFmYTBkNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuY1xuQEAgLTU3LDUgJiM0Mzs1Nyw2IEBAIGNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF84NDIgPSB7XG4gXHQuZGVzdHJveV9jdHhcdD0gZGVzdHJveV84NDIsXG4gXHQuc2V0dXBfcGFyYW1zXHQ9IHNldHVwX3BhcmFtc184NDIsXG4gXHQucmVsZWFzZV9wYXJhbXNcdD0gcmVsZWFzZV9wYXJhbXNfODQyLFxuJiM0MztcdC5jYXBzXHRcdD0gMCxcbiBcdC5uYW1lXHRcdD0gXCYjMzQ7ODQyXCYjMzQ7LFxuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jXG5pbmRleCBmOTJhNTJhNzIwZDFlMi4uY2VkYzNkYWFkMzNhZjUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2RlZmxhdGUuY1xuQEAgLTE0NCw1ICYjNDM7MTQ0LDggQEAgY29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kX2RlZmxhdGUgPSB7XG4gXHQuZGVzdHJveV9jdHhcdD0gZGVmbGF0ZV9kZXN0cm95LFxuIFx0LnNldHVwX3BhcmFtc1x0PSBkZWZsYXRlX3NldHVwX3BhcmFtcyxcbiBcdC5yZWxlYXNlX3BhcmFtc1x0PSBkZWZsYXRlX3JlbGVhc2VfcGFyYW1zLFxuJiM0MztcdC5jYXBzXHRcdD0gWkNPTVBfQ0FQX0xFVkVMLFxuJiM0MztcdC5sZXZlbF9taW5cdD0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OLFxuJiM0MztcdC5sZXZlbF9tYXhcdD0gWl9CRVNUX0NPTVBSRVNTSU9OLFxuIFx0Lm5hbWVcdFx0PSBcJiMzNDtkZWZsYXRlXCYjMzQ7LFxuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuY1xuaW5kZXggYzQ0OWQ1MTFiYTg2ZmUuLmJkMWU1Y2E0ZDEzNDJiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NC5jXG5AQCAtMTQ2LDUgJiM0MzsxNDYsOCBAQCBjb25zdCBzdHJ1Y3QgemNvbXBfb3BzIGJhY2tlbmRfbHo0ID0ge1xuIFx0LmRlc3Ryb3lfY3R4XHQ9IGx6NF9kZXN0cm95LFxuIFx0LnNldHVwX3BhcmFtc1x0PSBsejRfc2V0dXBfcGFyYW1zLFxuIFx0LnJlbGVhc2VfcGFyYW1zXHQ9IGx6NF9yZWxlYXNlX3BhcmFtcyxcbiYjNDM7XHQuY2Fwc1x0XHQ9IFpDT01QX0NBUF9ESUNUIHwgWkNPTVBfQ0FQX0xFVkVMLFxuJiM0MztcdC5sZXZlbF9taW5cdD0gTFo0X0FDQ0VMRVJBVElPTl9ERUZBVUxULFxuJiM0MztcdC5sZXZlbF9tYXhcdD0gNjU1MzUsXG4gXHQubmFtZVx0XHQ9IFwmIzM0O2x6NFwmIzM0OyxcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jXG5pbmRleCBmNmEzMzZhY2ZlMjAyZS4uMGUwZDdjNjhhN2Q0MjIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jXG5AQCAtMTI0LDUgJiM0MzsxMjQsOCBAQCBjb25zdCBzdHJ1Y3QgemNvbXBfb3BzIGJhY2tlbmRfbHo0aGMgPSB7XG4gXHQuZGVzdHJveV9jdHhcdD0gbHo0aGNfZGVzdHJveSxcbiBcdC5zZXR1cF9wYXJhbXNcdD0gbHo0aGNfc2V0dXBfcGFyYW1zLFxuIFx0LnJlbGVhc2VfcGFyYW1zXHQ9IGx6NGhjX3JlbGVhc2VfcGFyYW1zLFxuJiM0MztcdC5jYXBzXHRcdD0gWkNPTVBfQ0FQX0RJQ1QgfCBaQ09NUF9DQVBfTEVWRUwsXG4mIzQzO1x0LmxldmVsX21pblx0PSBMWjRIQ19NSU5fQ0xFVkVMLFxuJiM0MztcdC5sZXZlbF9tYXhcdD0gTFo0SENfTUFYX0NMRVZFTCxcbiBcdC5uYW1lXHRcdD0gXCYjMzQ7bHo0aGNcJiMzNDssXG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6by5jXG5pbmRleCA0YzkwNmJlYWFlNmIzMy4uOTY1ZjAwN2UyY2E4OTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmNcbkBAIC01NSw1ICYjNDM7NTUsNiBAQCBjb25zdCBzdHJ1Y3QgemNvbXBfb3BzIGJhY2tlbmRfbHpvID0ge1xuIFx0LmRlc3Ryb3lfY3R4XHQ9IGx6b19kZXN0cm95LFxuIFx0LnNldHVwX3BhcmFtc1x0PSBsem9fc2V0dXBfcGFyYW1zLFxuIFx0LnJlbGVhc2VfcGFyYW1zXHQ9IGx6b19yZWxlYXNlX3BhcmFtcyxcbiYjNDM7XHQuY2Fwc1x0XHQ9IDAsXG4gXHQubmFtZVx0XHQ9IFwmIzM0O2x6b1wmIzM0OyxcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6b3JsZS5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmNcbmluZGV4IDEwNjQwYzk2Y2JmY2FhLi43NTdiNDU5OGJlMDMwNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6b3JsZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuY1xuQEAgLTU1LDUgJiM0Mzs1NSw2IEBAIGNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF9sem9ybGUgPSB7XG4gXHQuZGVzdHJveV9jdHhcdD0gbHpvcmxlX2Rlc3Ryb3ksXG4gXHQuc2V0dXBfcGFyYW1zXHQ9IGx6b3JsZV9zZXR1cF9wYXJhbXMsXG4gXHQucmVsZWFzZV9wYXJhbXNcdD0gbHpvcmxlX3JlbGVhc2VfcGFyYW1zLFxuJiM0MztcdC5jYXBzXHRcdD0gMCxcbiBcdC5uYW1lXHRcdD0gXCYjMzQ7bHpvLXJsZVwmIzM0OyxcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuY1xuaW5kZXggZDAwYjU0ODA1NmRjMmUuLjBmYmQyNDYwODgzYTgyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmNcbkBAIC0xNjEsNyAmIzQzOzE2MSw2IEBAIHN0YXRpYyBpbnQgenN0ZF9jcmVhdGUoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zLCBzdHJ1Y3QgemNvbXBfY3R4ICpjdHgpXG4gXHRyZXR1cm4gMDtcbiBcbiBlcnJvcjpcbi1cdHpzdGRfcmVsZWFzZV9wYXJhbXMocGFyYW1zKTtcbiBcdHpzdGRfZGVzdHJveShjdHgpO1xuIFx0cmV0dXJuIC1FSU5WQUw7XG4gfVxuQEAgLTIxMyw1ICYjNDM7MjEyLDggQEAgY29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kX3pzdGQgPSB7XG4gXHQuZGVzdHJveV9jdHhcdD0genN0ZF9kZXN0cm95LFxuIFx0LnNldHVwX3BhcmFtc1x0PSB6c3RkX3NldHVwX3BhcmFtcyxcbiBcdC5yZWxlYXNlX3BhcmFtc1x0PSB6c3RkX3JlbGVhc2VfcGFyYW1zLFxuJiM0MztcdC5jYXBzXHRcdD0gWkNPTVBfQ0FQX0RJQ1QgfCBaQ09NUF9DQVBfTEVWRUwsXG4mIzQzO1x0LmxldmVsX21pblx0PSAoaW50KS1aU1REX1RBUkdFVExFTkdUSF9NQVgsXG4mIzQzO1x0LmxldmVsX21heFx0PSBaU1REX01BWF9DTEVWRUwsXG4gXHQubmFtZVx0XHQ9IFwmIzM0O3pzdGRcJiMzNDssXG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYyBiL2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jXG5pbmRleCA5NzRjNDY5MTg4N2U2Zi4uMTVkZTI4YjUwZDQyN2YgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmNcbkBAIC05LDYgJiM0Mzs5LDkgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9jcHVob3RwbHVnLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC92bWFsbG9jLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zeXNmcy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2x6NC5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L3psaWIuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC96c3RkLmhcdTAwM2VcbiBcbiAjaW5jbHVkZSBcJiMzNDt6Y29tcC5oXCYjMzQ7XG4gXG5AQCAtOTQsNiAmIzQzOzk3LDI2IEBAIGNvbnN0IGNoYXIgKnpjb21wX2xvb2t1cF9iYWNrZW5kX25hbWUoY29uc3QgY2hhciAqY29tcClcbiBcdHJldHVybiBOVUxMO1xuIH1cbiBcbiYjNDM7dW5zaWduZWQgaW50IHpjb21wX2dldF9jYXBzKGNvbnN0IGNoYXIgKmNvbXApXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgemNvbXBfb3BzICpiYWNrZW5kID0gbG9va3VwX2JhY2tlbmRfb3BzKGNvbXApO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gYmFja2VuZCA/IGJhY2tlbmQtXHUwMDNlY2FwcyA6IDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2ludCB6Y29tcF92YWxpZGF0ZV9sZXZlbChjb25zdCBjaGFyICpjb21wLCBzMzIgbGV2ZWwpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgemNvbXBfb3BzICpiYWNrZW5kID0gbG9va3VwX2JhY2tlbmRfb3BzKGNvbXApO1xuJiM0MztcbiYjNDM7XHRpZiAoIWJhY2tlbmQpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRpZiAoIShiYWNrZW5kLVx1MDAzZWNhcHMgXHUwMDI2IFpDT01QX0NBUF9MRVZFTCkpXG4mIzQzO1x0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4mIzQzO1x0aWYgKGxldmVsIFx1MDAzYyBiYWNrZW5kLVx1MDAzZWxldmVsX21pbiB8fCBsZXZlbCBcdTAwM2UgYmFja2VuZC1cdTAwM2VsZXZlbF9tYXgpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuJiM0MztcbiAvKiBzaG93IGF2YWlsYWJsZSBjb21wcmVzc29ycyAqL1xuIHNzaXplX3QgemNvbXBfYXZhaWxhYmxlX3Nob3coY29uc3QgY2hhciAqY29tcCwgY2hhciAqYnVmLCBzc2l6ZV90IGF0KVxuIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuaCBiL2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oXG5pbmRleCA4MWEwZjNmNmZmNDg3MS4uMTZmODEyYTk0YzY3ZDQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmhcbkBAIC03LDYgJiM0Mzs3LDkgQEBcbiBcbiAjZGVmaW5lIFpDT01QX1BBUkFNX05PVF9TRVRcdElOVF9NSU5cbiBcbiYjNDM7I2RlZmluZSBaQ09NUF9DQVBfRElDVFx0XHRCSVQoMClcdC8qIGRpY3Rpb25hcnkgc3VwcG9ydCAqL1xuJiM0MzsjZGVmaW5lIFpDT01QX0NBUF9MRVZFTFx0XHRCSVQoMSlcdC8qIGFkanVzdGFibGUgY29tcHJlc3Npb24gbGV2ZWwgKi9cbiYjNDM7XG4gc3RydWN0IGRlZmxhdGVfcGFyYW1zIHtcbiBcdHMzMiB3aW5iaXRzO1xuIH07XG5AQCAtNjYsNiAmIzQzOzY5LDkgQEAgc3RydWN0IHpjb21wX29wcyB7XG4gXHRpbnQgKCpzZXR1cF9wYXJhbXMpKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcyk7XG4gXHR2b2lkICgqcmVsZWFzZV9wYXJhbXMpKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcyk7XG4gXG4mIzQzO1x0dW5zaWduZWQgaW50IGNhcHM7XG4mIzQzO1x0czMyIGxldmVsX21pbjtcbiYjNDM7XHRzMzIgbGV2ZWxfbWF4O1xuIFx0Y29uc3QgY2hhciAqbmFtZTtcbiB9O1xuIFxuQEAgLTgxLDYgJiM0Mzs4Nyw4IEBAIGludCB6Y29tcF9jcHVfdXBfcHJlcGFyZSh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9kZSk7XG4gaW50IHpjb21wX2NwdV9kZWFkKHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCBobGlzdF9ub2RlICpub2RlKTtcbiBzc2l6ZV90IHpjb21wX2F2YWlsYWJsZV9zaG93KGNvbnN0IGNoYXIgKmNvbXAsIGNoYXIgKmJ1Ziwgc3NpemVfdCBhdCk7XG4gY29uc3QgY2hhciAqemNvbXBfbG9va3VwX2JhY2tlbmRfbmFtZShjb25zdCBjaGFyICpjb21wKTtcbiYjNDM7dW5zaWduZWQgaW50IHpjb21wX2dldF9jYXBzKGNvbnN0IGNoYXIgKmNvbXApO1xuJiM0MztpbnQgemNvbXBfdmFsaWRhdGVfbGV2ZWwoY29uc3QgY2hhciAqY29tcCwgczMyIGxldmVsKTtcbiBcbiBzdHJ1Y3QgemNvbXAgKnpjb21wX2NyZWF0ZShjb25zdCBjaGFyICphbGcsIHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcyk7XG4gdm9pZCB6Y29tcF9kZXN0cm95KHN0cnVjdCB6Y29tcCAqY29tcCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1xuaW5kZXggYWNlNjVjNTg2MDcyYmEuLjZiNDc1ODZlODcxOGM4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jXG5AQCAtNTcsNiAmIzQzOzU3LDcgQEAgc3RhdGljIHNpemVfdCBodWdlX2NsYXNzX3NpemU7XG4gc3RhdGljIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB6cmFtX2Rldm9wcztcbiBcbiBzdGF0aWMgdm9pZCBzbG90X2ZyZWUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBpbmRleCk7XG4mIzQzO3N0YXRpYyB2b2lkIGNvbXBfcGFyYW1zX3Jlc2V0KHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbyk7XG4gI2RlZmluZSBzbG90X2RlcF9tYXAoenJhbSwgaW5kZXgpIChcdTAwMjYoenJhbSktXHUwMDNldGFibGVbKGluZGV4KV0uZGVwX21hcClcbiBcbiBzdGF0aWMgdm9pZCBzbG90X2xvY2tfaW5pdChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIGluZGV4KVxuQEAgLTE2ODEsNiAmIzQzOzE2ODIsNyBAQCBzdGF0aWMgaW50IF9fY29tcF9hbGdvcml0aG1fc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBjb25zdCBjaGFyICpidWYpXG4gXHR9XG4gXG4gXHRjb21wX2FsZ29yaXRobV9zZXQoenJhbSwgcHJpbywgYWxnKTtcbiYjNDM7XHRjb21wX3BhcmFtc19yZXNldCh6cmFtLCBwcmlvKTtcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC0xNjk5LDIxICYjNDM7MTcwMSwyNCBAQCBzdGF0aWMgaW50IGNvbXBfcGFyYW1zX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgczMyIGxldmVsLFxuIFx0XHRcdCAgICAgY29uc3QgY2hhciAqZGljdF9wYXRoLFxuIFx0XHRcdCAgICAgc3RydWN0IGRlZmxhdGVfcGFyYW1zICpkZWZsYXRlX3BhcmFtcylcbiB7XG4mIzQzO1x0dm9pZCAqbmV3X2RpY3QgPSBOVUxMO1xuIFx0c3NpemVfdCBzeiA9IDA7XG4gXG4tXHRjb21wX3BhcmFtc19yZXNldCh6cmFtLCBwcmlvKTtcbi1cbiBcdGlmIChkaWN0X3BhdGgpIHtcbi1cdFx0c3ogPSBrZXJuZWxfcmVhZF9maWxlX2Zyb21fcGF0aChkaWN0X3BhdGgsIDAsXG4tXHRcdFx0XHRcdFx0XHUwMDI2enJhbS1cdTAwM2VwYXJhbXNbcHJpb10uZGljdCxcbi1cdFx0XHRcdFx0XHRJTlRfTUFYLFxuLVx0XHRcdFx0XHRcdE5VTEwsXG4tXHRcdFx0XHRcdFx0UkVBRElOR19QT0xJQ1kpO1xuLVx0XHRpZiAoc3ogXHUwMDNjIDApXG4mIzQzO1x0XHRzeiA9IGtlcm5lbF9yZWFkX2ZpbGVfZnJvbV9wYXRoKGRpY3RfcGF0aCwgMCwgXHUwMDI2bmV3X2RpY3QsXG4mIzQzO1x0XHRcdFx0XHRcdElOVF9NQVgsIE5VTEwsIFJFQURJTkdfUE9MSUNZKTtcbiYjNDM7XHRcdGlmIChzeiBcdTAwM2MgMCkge1xuJiM0MztcdFx0XHR2ZnJlZShuZXdfZGljdCk7XG4mIzQzO1x0XHRcdHJldHVybiBzejtcbiYjNDM7XHRcdH0gZWxzZSBpZiAoc3ogPT0gMCkge1xuJiM0MztcdFx0XHR2ZnJlZShuZXdfZGljdCk7XG4gXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXG4mIzQzO1x0Y29tcF9wYXJhbXNfcmVzZXQoenJhbSwgcHJpbyk7XG4gXHR6cmFtLVx1MDAzZXBhcmFtc1twcmlvXS5kaWN0X3N6ID0gc3o7XG4mIzQzO1x0enJhbS1cdTAwM2VwYXJhbXNbcHJpb10uZGljdCA9IG5ld19kaWN0O1xuIFx0enJhbS1cdTAwM2VwYXJhbXNbcHJpb10ubGV2ZWwgPSBsZXZlbDtcbiBcdHpyYW0tXHUwMDNlcGFyYW1zW3ByaW9dLmRlZmxhdGUud2luYml0cyA9IGRlZmxhdGVfcGFyYW1zLVx1MDAzZXdpbmJpdHM7XG4gXHRyZXR1cm4gMDtcbkBAIC0xNzk0LDYgJiM0MzsxNzk5LDE5IEBAIHN0YXRpYyBzc2l6ZV90IGFsZ29yaXRobV9wYXJhbXNfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuIFxuJiM0MztcdGlmICh6cmFtLVx1MDAzZWNvbXBfYWxnc1twcmlvXSkge1xuJiM0MztcdFx0dW5zaWduZWQgaW50IGNhcHMgPSB6Y29tcF9nZXRfY2Fwcyh6cmFtLVx1MDAzZWNvbXBfYWxnc1twcmlvXSk7XG4mIzQzO1xuJiM0MztcdFx0aWYgKGRpY3RfcGF0aCBcdTAwMjZcdTAwMjYgIShjYXBzIFx1MDAyNiBaQ09NUF9DQVBfRElDVCkpXG4mIzQzO1x0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiYjNDM7XG4mIzQzO1x0XHRpZiAobGV2ZWwgIT0gWkNPTVBfUEFSQU1fTk9UX1NFVCkge1xuJiM0MztcdFx0XHRyZXQgPSB6Y29tcF92YWxpZGF0ZV9sZXZlbCh6cmFtLVx1MDAzZWNvbXBfYWxnc1twcmlvXSwgbGV2ZWwpO1xuJiM0MztcdFx0XHRpZiAocmV0KVxuJiM0MztcdFx0XHRcdHJldHVybiByZXQ7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJldCA9IGNvbXBfcGFyYW1zX3N0b3JlKHpyYW0sIHByaW8sIGxldmVsLCBkaWN0X3BhdGgsIFx1MDAyNmRlZmxhdGVfcGFyYW1zKTtcbiBcdHJldHVybiByZXQgPyByZXQgOiBsZW47XG4gfVxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvenN0ZF9saWIuaCBiL2luY2x1ZGUvbGludXgvenN0ZF9saWIuaFxuaW5kZXggZTI5NWQ0MTI1ZGRlODQuLmY0YjI2ODQ0ZTUzYWRlIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC96c3RkX2xpYi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3pzdGRfbGliLmhcbkBAIC0xMjQxLDYgJiM0MzsxMjQxLDcgQEAgWlNURExJQl9BUEkgc2l6ZV90IFpTVERfc2l6ZW9mX0REaWN0KGNvbnN0IFpTVERfRERpY3QqIGRkaWN0KTtcbiAjZGVmaW5lIFpTVERfU0VBUkNITE9HX01JTiAgICAgICAgMVxuICNkZWZpbmUgWlNURF9NSU5NQVRDSF9NQVggICAgICAgICA3ICAgLyogb25seSBmb3IgWlNURF9mYXN0LCBvdGhlciBzdHJhdGVnaWVzIGFyZSBsaW1pdGVkIHRvIDYgKi9cbiAjZGVmaW5lIFpTVERfTUlOTUFUQ0hfTUlOICAgICAgICAgMyAgIC8qIG9ubHkgZm9yIFpTVERfYnRvcHQmIzQzOywgZmFzdGVyIHN0cmF0ZWdpZXMgYXJlIGxpbWl0ZWQgdG8gNCAqL1xuJiM0MzsjZGVmaW5lIFpTVERfTUFYX0NMRVZFTFx0XHQyMlxuICNkZWZpbmUgWlNURF9UQVJHRVRMRU5HVEhfTUFYICAgIFpTVERfQkxPQ0tTSVpFX01BWFxuICNkZWZpbmUgWlNURF9UQVJHRVRMRU5HVEhfTUlOICAgICAwICAgLyogbm90ZSA6IGNvbXBhcmluZyB0aGlzIGNvbnN0YW50IHRvIGFuIHVuc2lnbmVkIHJlc3VsdHMgaW4gYSB0YXV0b2xvZ2ljYWwgdGVzdCAqL1xuICNkZWZpbmUgWlNURF9TVFJBVEVHWV9NSU4gICAgICAgIFpTVERfZmFzdFxuZGlmZiAtLWdpdCBhL2xpYi96c3RkL2NvbXByZXNzL2NsZXZlbHMuaCBiL2xpYi96c3RkL2NvbXByZXNzL2NsZXZlbHMuaFxuaW5kZXggNmFiOGJlNjUzMmVmYzAuLmRiM2IyNzViNTAyZTZjIDEwMDY0NFxuLS0tIGEvbGliL3pzdGQvY29tcHJlc3MvY2xldmVscy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9saWIvenN0ZC9jb21wcmVzcy9jbGV2ZWxzLmhcbkBAIC0xNyw3ICYjNDM7MTcsNiBAQFxuIFxuIC8qLT09PT09ICBQcmUtZGVmaW5lZCBjb21wcmVzc2lvbiBsZXZlbHMgID09PT09LSovXG4gXG4tI2RlZmluZSBaU1REX01BWF9DTEVWRUwgICAgIDIyXG4gXG4gX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpXG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WlJBTSYjMzQ7LAogICAgJiMzNDtaUkFNX01VTFRJX0NPTVAmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX0xaNCYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfTFo0SEMmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX1pTVEQmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX0RFRkxBVEUmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EXzg0MiYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfTFpPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWxnb3JpdGhtX3BhcmFtc19zdG9yZSYjMzQ7LAogICAgJiMzNDtjb21wX3BhcmFtc19zdG9yZSYjMzQ7LAogICAgJiMzNDtfX2NvbXBfYWxnb3JpdGhtX3N0b3JlJiMzNDssCiAgICAmIzM0O3pjb21wX2dldF9jYXBzJiMzNDssCiAgICAmIzM0O3pjb21wX3ZhbGlkYXRlX2xldmVsJiMzNDssCiAgICAmIzM0O3pzdGRfY3JlYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHpyYW0gY29tcHJlc3Npb24gcGFyYW1ldGVycyBoYW5kbGluZy4gSXQgYWRkcyBjYXBhYmlsaXRpZXMgYW5kIHZhbGlkYXRpb24gZm9yIGNvbXByZXNzaW9uIGxldmVscyBhbmQgZGljdGlvbmFyeSBzdXBwb3J0LiBJdCBhbHNvIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gYGNvbXBfcGFyYW1zX3N0b3JlYCBhbmQgcmVtb3ZlcyBhIHJlZHVuZGFudCBwYXJhbWV0ZXIgcmVsZWFzZSBpbiBgenN0ZF9jcmVhdGVgLiBUaGVzZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHN5c2ZzIGF0dHJpYnV0ZXMgbGlrZSBgYWxnb3JpdGhtX3BhcmFtc2AsIGBjb21wX2FsZ29yaXRobWAsIGFuZCBgcmVjb21wX2FsZ29yaXRobWAuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDM0YmY2NzcwYmFhODUyMDQ2N2ZlM2YxYWM0MzUxZjQyMWRjYzk2MzAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1biAyNyAwNzoyNToyNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmMKaW5kZXggMTBkOWQ1YzYwZjUzMTMuLmQ3OTZlYmRhMWZhMGQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuYwpAQCAtNTcsNSAmIzQzOzU3LDYgQEAgY29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kXzg0MiA9IHsKIAkuZGVzdHJveV9jdHgJPSBkZXN0cm95Xzg0MiwKIAkuc2V0dXBfcGFyYW1zCT0gc2V0dXBfcGFyYW1zXzg0MiwKIAkucmVsZWFzZV9wYXJhbXMJPSByZWxlYXNlX3BhcmFtc184NDIsCiYjNDM7CS5jYXBzCQk9IDAsCiAJLm5hbWUJCT0gJiMzNDs4NDImIzM0OywKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmMKaW5kZXggZjkyYTUyYTcyMGQxZTIuLmNlZGMzZGFhZDMzYWY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jCkBAIC0xNDQsNSAmIzQzOzE0NCw4IEBAIGNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF9kZWZsYXRlID0gewogCS5kZXN0cm95X2N0eAk9IGRlZmxhdGVfZGVzdHJveSwKIAkuc2V0dXBfcGFyYW1zCT0gZGVmbGF0ZV9zZXR1cF9wYXJhbXMsCiAJLnJlbGVhc2VfcGFyYW1zCT0gZGVmbGF0ZV9yZWxlYXNlX3BhcmFtcywKJiM0MzsJLmNhcHMJCT0gWkNPTVBfQ0FQX0xFVkVMLAomIzQzOwkubGV2ZWxfbWluCT0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OLAomIzQzOwkubGV2ZWxfbWF4CT0gWl9CRVNUX0NPTVBSRVNTSU9OLAogCS5uYW1lCQk9ICYjMzQ7ZGVmbGF0ZSYjMzQ7LAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NC5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmMKaW5kZXggYzQ0OWQ1MTFiYTg2ZmUuLmJkMWU1Y2E0ZDEzNDJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuYwpAQCAtMTQ2LDUgJiM0MzsxNDYsOCBAQCBjb25zdCBzdHJ1Y3QgemNvbXBfb3BzIGJhY2tlbmRfbHo0ID0gewogCS5kZXN0cm95X2N0eAk9IGx6NF9kZXN0cm95LAogCS5zZXR1cF9wYXJhbXMJPSBsejRfc2V0dXBfcGFyYW1zLAogCS5yZWxlYXNlX3BhcmFtcwk9IGx6NF9yZWxlYXNlX3BhcmFtcywKJiM0MzsJLmNhcHMJCT0gWkNPTVBfQ0FQX0RJQ1QgfCBaQ09NUF9DQVBfTEVWRUwsCiYjNDM7CS5sZXZlbF9taW4JPSBMWjRfQUNDRUxFUkFUSU9OX0RFRkFVTFQsCiYjNDM7CS5sZXZlbF9tYXgJPSA2NTUzNSwKIAkubmFtZQkJPSAmIzM0O2x6NCYjMzQ7LAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jCmluZGV4IGY2YTMzNmFjZmUyMDJlLi4wZTBkN2M2OGE3ZDQyMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0aGMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jCkBAIC0xMjQsNSAmIzQzOzEyNCw4IEBAIGNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF9sejRoYyA9IHsKIAkuZGVzdHJveV9jdHgJPSBsejRoY19kZXN0cm95LAogCS5zZXR1cF9wYXJhbXMJPSBsejRoY19zZXR1cF9wYXJhbXMsCiAJLnJlbGVhc2VfcGFyYW1zCT0gbHo0aGNfcmVsZWFzZV9wYXJhbXMsCiYjNDM7CS5jYXBzCQk9IFpDT01QX0NBUF9ESUNUIHwgWkNPTVBfQ0FQX0xFVkVMLAomIzQzOwkubGV2ZWxfbWluCT0gTFo0SENfTUlOX0NMRVZFTCwKJiM0MzsJLmxldmVsX21heAk9IExaNEhDX01BWF9DTEVWRUwsCiAJLm5hbWUJCT0gJiMzNDtsejRoYyYjMzQ7LAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6by5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmMKaW5kZXggNGM5MDZiZWFhZTZiMzMuLjk2NWYwMDdlMmNhODk4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uYwpAQCAtNTUsNSAmIzQzOzU1LDYgQEAgY29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kX2x6byA9IHsKIAkuZGVzdHJveV9jdHgJPSBsem9fZGVzdHJveSwKIAkuc2V0dXBfcGFyYW1zCT0gbHpvX3NldHVwX3BhcmFtcywKIAkucmVsZWFzZV9wYXJhbXMJPSBsem9fcmVsZWFzZV9wYXJhbXMsCiYjNDM7CS5jYXBzCQk9IDAsCiAJLm5hbWUJCT0gJiMzNDtsem8mIzM0OywKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6b3JsZS5jCmluZGV4IDEwNjQwYzk2Y2JmY2FhLi43NTdiNDU5OGJlMDMwNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmMKQEAgLTU1LDUgJiM0Mzs1NSw2IEBAIGNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF9sem9ybGUgPSB7CiAJLmRlc3Ryb3lfY3R4CT0gbHpvcmxlX2Rlc3Ryb3ksCiAJLnNldHVwX3BhcmFtcwk9IGx6b3JsZV9zZXR1cF9wYXJhbXMsCiAJLnJlbGVhc2VfcGFyYW1zCT0gbHpvcmxlX3JlbGVhc2VfcGFyYW1zLAomIzQzOwkuY2FwcwkJPSAwLAogCS5uYW1lCQk9ICYjMzQ7bHpvLXJsZSYjMzQ7LAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYwppbmRleCBkMDBiNTQ4MDU2ZGMyZS4uMGZiZDI0NjA4ODNhODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMKQEAgLTE2MSw3ICYjNDM7MTYxLDYgQEAgc3RhdGljIGludCB6c3RkX2NyZWF0ZShzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMsIHN0cnVjdCB6Y29tcF9jdHggKmN0eCkKIAlyZXR1cm4gMDsKIAogZXJyb3I6Ci0JenN0ZF9yZWxlYXNlX3BhcmFtcyhwYXJhbXMpOwogCXpzdGRfZGVzdHJveShjdHgpOwogCXJldHVybiAtRUlOVkFMOwogfQpAQCAtMjEzLDUgJiM0MzsyMTIsOCBAQCBjb25zdCBzdHJ1Y3QgemNvbXBfb3BzIGJhY2tlbmRfenN0ZCA9IHsKIAkuZGVzdHJveV9jdHgJPSB6c3RkX2Rlc3Ryb3ksCiAJLnNldHVwX3BhcmFtcwk9IHpzdGRfc2V0dXBfcGFyYW1zLAogCS5yZWxlYXNlX3BhcmFtcwk9IHpzdGRfcmVsZWFzZV9wYXJhbXMsCiYjNDM7CS5jYXBzCQk9IFpDT01QX0NBUF9ESUNUIHwgWkNPTVBfQ0FQX0xFVkVMLAomIzQzOwkubGV2ZWxfbWluCT0gKGludCktWlNURF9UQVJHRVRMRU5HVEhfTUFYLAomIzQzOwkubGV2ZWxfbWF4CT0gWlNURF9NQVhfQ0xFVkVMLAogCS5uYW1lCQk9ICYjMzQ7enN0ZCYjMzQ7LAogfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jIGIvZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmMKaW5kZXggOTc0YzQ2OTE4ODdlNmYuLjE1ZGUyOGI1MGQ0MjdmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYwpAQCAtOSw2ICYjNDM7OSw5IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvY3B1aG90cGx1Zy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3ZtYWxsb2MuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zeXNmcy5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9sejQuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvemxpYi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC96c3RkLmgmZ3Q7CiAKICNpbmNsdWRlICYjMzQ7emNvbXAuaCYjMzQ7CiAKQEAgLTk0LDYgJiM0Mzs5NywyNiBAQCBjb25zdCBjaGFyICp6Y29tcF9sb29rdXBfYmFja2VuZF9uYW1lKGNvbnN0IGNoYXIgKmNvbXApCiAJcmV0dXJuIE5VTEw7CiB9CiAKJiM0Mzt1bnNpZ25lZCBpbnQgemNvbXBfZ2V0X2NhcHMoY29uc3QgY2hhciAqY29tcCkKJiM0Mzt7CiYjNDM7CWNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgKmJhY2tlbmQgPSBsb29rdXBfYmFja2VuZF9vcHMoY29tcCk7CiYjNDM7CiYjNDM7CXJldHVybiBiYWNrZW5kID8gYmFja2VuZC0mZ3Q7Y2FwcyA6IDA7CiYjNDM7fQomIzQzOwomIzQzO2ludCB6Y29tcF92YWxpZGF0ZV9sZXZlbChjb25zdCBjaGFyICpjb21wLCBzMzIgbGV2ZWwpCiYjNDM7ewomIzQzOwljb25zdCBzdHJ1Y3QgemNvbXBfb3BzICpiYWNrZW5kID0gbG9va3VwX2JhY2tlbmRfb3BzKGNvbXApOwomIzQzOwomIzQzOwlpZiAoIWJhY2tlbmQpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJaWYgKCEoYmFja2VuZC0mZ3Q7Y2FwcyAmYW1wOyBaQ09NUF9DQVBfTEVWRUwpKQomIzQzOwkJcmV0dXJuIC1FT1BOT1RTVVBQOwomIzQzOwlpZiAobGV2ZWwgJmx0OyBiYWNrZW5kLSZndDtsZXZlbF9taW4gfHwgbGV2ZWwgJmd0OyBiYWNrZW5kLSZndDtsZXZlbF9tYXgpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwogLyogc2hvdyBhdmFpbGFibGUgY29tcHJlc3NvcnMgKi8KIHNzaXplX3QgemNvbXBfYXZhaWxhYmxlX3Nob3coY29uc3QgY2hhciAqY29tcCwgY2hhciAqYnVmLCBzc2l6ZV90IGF0KQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmggYi9kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuaAppbmRleCA4MWEwZjNmNmZmNDg3MS4uMTZmODEyYTk0YzY3ZDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oCkBAIC03LDYgJiM0Mzs3LDkgQEAKIAogI2RlZmluZSBaQ09NUF9QQVJBTV9OT1RfU0VUCUlOVF9NSU4KIAomIzQzOyNkZWZpbmUgWkNPTVBfQ0FQX0RJQ1QJCUJJVCgwKQkvKiBkaWN0aW9uYXJ5IHN1cHBvcnQgKi8KJiM0MzsjZGVmaW5lIFpDT01QX0NBUF9MRVZFTAkJQklUKDEpCS8qIGFkanVzdGFibGUgY29tcHJlc3Npb24gbGV2ZWwgKi8KJiM0MzsKIHN0cnVjdCBkZWZsYXRlX3BhcmFtcyB7CiAJczMyIHdpbmJpdHM7CiB9OwpAQCAtNjYsNiAmIzQzOzY5LDkgQEAgc3RydWN0IHpjb21wX29wcyB7CiAJaW50ICgqc2V0dXBfcGFyYW1zKShzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpOwogCXZvaWQgKCpyZWxlYXNlX3BhcmFtcykoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKTsKIAomIzQzOwl1bnNpZ25lZCBpbnQgY2FwczsKJiM0MzsJczMyIGxldmVsX21pbjsKJiM0MzsJczMyIGxldmVsX21heDsKIAljb25zdCBjaGFyICpuYW1lOwogfTsKIApAQCAtODEsNiAmIzQzOzg3LDggQEAgaW50IHpjb21wX2NwdV91cF9wcmVwYXJlKHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCBobGlzdF9ub2RlICpub2RlKTsKIGludCB6Y29tcF9jcHVfZGVhZCh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9kZSk7CiBzc2l6ZV90IHpjb21wX2F2YWlsYWJsZV9zaG93KGNvbnN0IGNoYXIgKmNvbXAsIGNoYXIgKmJ1Ziwgc3NpemVfdCBhdCk7CiBjb25zdCBjaGFyICp6Y29tcF9sb29rdXBfYmFja2VuZF9uYW1lKGNvbnN0IGNoYXIgKmNvbXApOwomIzQzO3Vuc2lnbmVkIGludCB6Y29tcF9nZXRfY2Fwcyhjb25zdCBjaGFyICpjb21wKTsKJiM0MztpbnQgemNvbXBfdmFsaWRhdGVfbGV2ZWwoY29uc3QgY2hhciAqY29tcCwgczMyIGxldmVsKTsKIAogc3RydWN0IHpjb21wICp6Y29tcF9jcmVhdGUoY29uc3QgY2hhciAqYWxnLCBzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpOwogdm9pZCB6Y29tcF9kZXN0cm95KHN0cnVjdCB6Y29tcCAqY29tcCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyBiL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jCmluZGV4IGFjZTY1YzU4NjA3MmJhLi42YjQ3NTg2ZTg3MThjOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMKQEAgLTU3LDYgJiM0Mzs1Nyw3IEBAIHN0YXRpYyBzaXplX3QgaHVnZV9jbGFzc19zaXplOwogc3RhdGljIGNvbnN0IHN0cnVjdCBibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB6cmFtX2Rldm9wczsKIAogc3RhdGljIHZvaWQgc2xvdF9mcmVlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgaW5kZXgpOwomIzQzO3N0YXRpYyB2b2lkIGNvbXBfcGFyYW1zX3Jlc2V0KHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbyk7CiAjZGVmaW5lIHNsb3RfZGVwX21hcCh6cmFtLCBpbmRleCkgKCZhbXA7KHpyYW0pLSZndDt0YWJsZVsoaW5kZXgpXS5kZXBfbWFwKQogCiBzdGF0aWMgdm9pZCBzbG90X2xvY2tfaW5pdChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIGluZGV4KQpAQCAtMTY4MSw2ICYjNDM7MTY4Miw3IEBAIHN0YXRpYyBpbnQgX19jb21wX2FsZ29yaXRobV9zdG9yZShzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIGNvbnN0IGNoYXIgKmJ1ZikKIAl9CiAKIAljb21wX2FsZ29yaXRobV9zZXQoenJhbSwgcHJpbywgYWxnKTsKJiM0MzsJY29tcF9wYXJhbXNfcmVzZXQoenJhbSwgcHJpbyk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTE2OTksMjEgJiM0MzsxNzAxLDI0IEBAIHN0YXRpYyBpbnQgY29tcF9wYXJhbXNfc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBzMzIgbGV2ZWwsCiAJCQkgICAgIGNvbnN0IGNoYXIgKmRpY3RfcGF0aCwKIAkJCSAgICAgc3RydWN0IGRlZmxhdGVfcGFyYW1zICpkZWZsYXRlX3BhcmFtcykKIHsKJiM0MzsJdm9pZCAqbmV3X2RpY3QgPSBOVUxMOwogCXNzaXplX3Qgc3ogPSAwOwogCi0JY29tcF9wYXJhbXNfcmVzZXQoenJhbSwgcHJpbyk7Ci0KIAlpZiAoZGljdF9wYXRoKSB7Ci0JCXN6ID0ga2VybmVsX3JlYWRfZmlsZV9mcm9tX3BhdGgoZGljdF9wYXRoLCAwLAotCQkJCQkJJmFtcDt6cmFtLSZndDtwYXJhbXNbcHJpb10uZGljdCwKLQkJCQkJCUlOVF9NQVgsCi0JCQkJCQlOVUxMLAotCQkJCQkJUkVBRElOR19QT0xJQ1kpOwotCQlpZiAoc3ogJmx0OyAwKQomIzQzOwkJc3ogPSBrZXJuZWxfcmVhZF9maWxlX2Zyb21fcGF0aChkaWN0X3BhdGgsIDAsICZhbXA7bmV3X2RpY3QsCiYjNDM7CQkJCQkJSU5UX01BWCwgTlVMTCwgUkVBRElOR19QT0xJQ1kpOwomIzQzOwkJaWYgKHN6ICZsdDsgMCkgewomIzQzOwkJCXZmcmVlKG5ld19kaWN0KTsKJiM0MzsJCQlyZXR1cm4gc3o7CiYjNDM7CQl9IGVsc2UgaWYgKHN6ID09IDApIHsKJiM0MzsJCQl2ZnJlZShuZXdfZGljdCk7CiAJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCX0KIAl9CiAKJiM0MzsJY29tcF9wYXJhbXNfcmVzZXQoenJhbSwgcHJpbyk7CiAJenJhbS0mZ3Q7cGFyYW1zW3ByaW9dLmRpY3Rfc3ogPSBzejsKJiM0MzsJenJhbS0mZ3Q7cGFyYW1zW3ByaW9dLmRpY3QgPSBuZXdfZGljdDsKIAl6cmFtLSZndDtwYXJhbXNbcHJpb10ubGV2ZWwgPSBsZXZlbDsKIAl6cmFtLSZndDtwYXJhbXNbcHJpb10uZGVmbGF0ZS53aW5iaXRzID0gZGVmbGF0ZV9wYXJhbXMtJmd0O3dpbmJpdHM7CiAJcmV0dXJuIDA7CkBAIC0xNzk0LDYgJiM0MzsxNzk5LDE5IEBAIHN0YXRpYyBzc2l6ZV90IGFsZ29yaXRobV9wYXJhbXNfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LAogCQkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCiYjNDM7CWlmICh6cmFtLSZndDtjb21wX2FsZ3NbcHJpb10pIHsKJiM0MzsJCXVuc2lnbmVkIGludCBjYXBzID0gemNvbXBfZ2V0X2NhcHMoenJhbS0mZ3Q7Y29tcF9hbGdzW3ByaW9dKTsKJiM0MzsKJiM0MzsJCWlmIChkaWN0X3BhdGggJmFtcDsmYW1wOyAhKGNhcHMgJmFtcDsgWkNPTVBfQ0FQX0RJQ1QpKQomIzQzOwkJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsKJiM0MzsJCWlmIChsZXZlbCAhPSBaQ09NUF9QQVJBTV9OT1RfU0VUKSB7CiYjNDM7CQkJcmV0ID0gemNvbXBfdmFsaWRhdGVfbGV2ZWwoenJhbS0mZ3Q7Y29tcF9hbGdzW3ByaW9dLCBsZXZlbCk7CiYjNDM7CQkJaWYgKHJldCkKJiM0MzsJCQkJcmV0dXJuIHJldDsKJiM0MzsJCX0KJiM0MzsJfQomIzQzOwogCXJldCA9IGNvbXBfcGFyYW1zX3N0b3JlKHpyYW0sIHByaW8sIGxldmVsLCBkaWN0X3BhdGgsICZhbXA7ZGVmbGF0ZV9wYXJhbXMpOwogCXJldHVybiByZXQgPyByZXQgOiBsZW47CiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3pzdGRfbGliLmggYi9pbmNsdWRlL2xpbnV4L3pzdGRfbGliLmgKaW5kZXggZTI5NWQ0MTI1ZGRlODQuLmY0YjI2ODQ0ZTUzYWRlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3pzdGRfbGliLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC96c3RkX2xpYi5oCkBAIC0xMjQxLDYgJiM0MzsxMjQxLDcgQEAgWlNURExJQl9BUEkgc2l6ZV90IFpTVERfc2l6ZW9mX0REaWN0KGNvbnN0IFpTVERfRERpY3QqIGRkaWN0KTsKICNkZWZpbmUgWlNURF9TRUFSQ0hMT0dfTUlOICAgICAgICAxCiAjZGVmaW5lIFpTVERfTUlOTUFUQ0hfTUFYICAgICAgICAgNyAgIC8qIG9ubHkgZm9yIFpTVERfZmFzdCwgb3RoZXIgc3RyYXRlZ2llcyBhcmUgbGltaXRlZCB0byA2ICovCiAjZGVmaW5lIFpTVERfTUlOTUFUQ0hfTUlOICAgICAgICAgMyAgIC8qIG9ubHkgZm9yIFpTVERfYnRvcHQmIzQzOywgZmFzdGVyIHN0cmF0ZWdpZXMgYXJlIGxpbWl0ZWQgdG8gNCAqLwomIzQzOyNkZWZpbmUgWlNURF9NQVhfQ0xFVkVMCQkyMgogI2RlZmluZSBaU1REX1RBUkdFVExFTkdUSF9NQVggICAgWlNURF9CTE9DS1NJWkVfTUFYCiAjZGVmaW5lIFpTVERfVEFSR0VUTEVOR1RIX01JTiAgICAgMCAgIC8qIG5vdGUgOiBjb21wYXJpbmcgdGhpcyBjb25zdGFudCB0byBhbiB1bnNpZ25lZCByZXN1bHRzIGluIGEgdGF1dG9sb2dpY2FsIHRlc3QgKi8KICNkZWZpbmUgWlNURF9TVFJBVEVHWV9NSU4gICAgICAgIFpTVERfZmFzdApkaWZmIC0tZ2l0IGEvbGliL3pzdGQvY29tcHJlc3MvY2xldmVscy5oIGIvbGliL3pzdGQvY29tcHJlc3MvY2xldmVscy5oCmluZGV4IDZhYjhiZTY1MzJlZmMwLi5kYjNiMjc1YjUwMmU2YyAxMDA2NDQKLS0tIGEvbGliL3pzdGQvY29tcHJlc3MvY2xldmVscy5oCiYjNDM7JiM0MzsmIzQzOyBiL2xpYi96c3RkL2NvbXByZXNzL2NsZXZlbHMuaApAQCAtMTcsNyAmIzQzOzE3LDYgQEAKIAogLyotPT09PT0gIFByZS1kZWZpbmVkIGNvbXByZXNzaW9uIGxldmVscyAgPT09PT0tKi8KIAotI2RlZmluZSBaU1REX01BWF9DTEVWRUwgICAgIDIyCiAKIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1ODQKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgWnJhbSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgbWFraW5nIHNvbWUgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZXMgdG8gdGhlIGB6cmFtYCBkcml2ZXIsIHNwZWNpZmljYWxseSB3aXRoaW4gYGRyaXZlcnMvYmxvY2svenJhbS9gLiBJdCYjMzk7cyBpbnRyb2R1Y2luZyBuZXcgY29tcHJlc3Npb24gYmFja2VuZCBjYXBhYmlsaXRpZXMgLSB0aGluayA4NDIsIGRlZmxhdGUsIGx6NCwgbHo0aGMsIGx6bywgbHpvcmxlLCBhbmQgenN0ZCAtIHdoaWNoIGlzIGdyZWF0IHRvIHNlZS4gVGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSB0aGUgYWRkaXRpb24gb2YgYGNhcHNgLCBgbGV2ZWxfbWluYCwgYW5kIGBsZXZlbF9tYXhgIHRvIHRoZSBgc3RydWN0IHpjb21wX29wc2AsIGFsb25nIHdpdGggYHpjb21wX2dldF9jYXBzKClgIGFuZCBgemNvbXBfdmFsaWRhdGVfbGV2ZWwoKWAgZnVuY3Rpb25zIGluIGB6Y29tcC5jYC4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBtYWtlIHN1cmUgdGhpcyBpcyBhbGwgdmFsaWQgYW5kIHdvcmtpbmcgYXMgaXQgc2hvdWxkLiBUaGUgY29yZSBvZiB0aGUgZnVuY3Rpb25hbGl0eSBoaW5nZXMgb24gYHpyYW1fZHJ2LmNgLCBzcGVjaWZpY2FsbHkgdGhlIHZhbGlkYXRpb24gcm91dGluZXMgaXQmIzM5O3MgYWRkaW5nIGZvciBjb21wcmVzc2lvbiBsZXZlbHMgYW5kIGRpY3Rpb25hcnkgc3VwcG9ydC4gSXTigJlzIGEgZ29vZCB0aGluZywgYSBzYW5pdHkgY2hlY2ssIHdoZW4gc3RvcmluZyBhbGdvcml0aG0gcGFyYW1ldGVycy4gUGx1cywgYW5kIHRoaXMgaXMgaW1wb3J0YW50LCBJIHNlZSBpdCYjMzk7cyBhbHNvIGFkZHJlc3NpbmcgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgb3IgYSBzaW1pbGFyIGlzc3VlIHdpdGhpbiBgY29tcF9wYXJhbXNfc3RvcmVgLiBUaGV5JiMzOTtyZSBub3cgdXNpbmcgYG5ld19kaWN0YCBhbmQgZnJlZWluZyBpdCBvbiBlcnJvciwgYW5kIHRoZXkmIzM5O3JlIHJlc2V0dGluZyBwYXJhbWV0ZXJzIGNvcnJlY3RseS4gQW5kIHRoZXkmIzM5O3ZlIHNtYXJ0bHkgcmVtb3ZlZCBgenN0ZF9yZWxlYXNlX3BhcmFtcyhwYXJhbXMpYCBmcm9tIHRoZSBgenN0ZF9jcmVhdGVgIGVycm9yIHBhdGggLSB0aGF0JiMzOTtzIGEgY2xhc3NpYyB0cmFwLCBhbmQgdGhleSYjMzk7dmUgYXZvaWRlZCBpdCEKCk5vdywgbGV0JiMzOTtzIHNlZSBpZiB0aGlzIGlzIHJlYWNoYWJsZS4gKlllcyosIHRoZSBjaGFuZ2VzIHdpdGhpbiB0aGUgYHpyYW1gIGRyaXZlciBtZWFuIGl0JiMzOTtzIGFic29sdXRlbHkgcmVhY2hhYmxlIHZpYSBzeXNmcywgcGFydGljdWxhcmx5IHRocm91Z2ggYGFsZ29yaXRobV9wYXJhbXNfc3RvcmVgLiBGcm9tIGFuIGluaXRpYWwgZnVuY3Rpb25hbCBzdGFuZHBvaW50LCBpdCBsb29rcyBzb3VuZC4gVGhlIHZhbGlkYXRpb24gY2hlY2tzLCB0aGUgbWVtb3J5IGxlYWsgZml4Li4uIGFsbCBwb3NpdGl2ZSBzaWducy4KClJpZ2h0LCBzbyB0byBtYWtlIHN1cmUgaXQmIzM5O3MgYWxsIGhvb2tlZCBpbiBjb3JyZWN0bHksIEkgbmVlZCB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBMb29rcyBsaWtlIHRoZSBwcmltYXJ5IGNvbmZpZyB2YXJpYWJsZSBpcyBgQ09ORklHX1pSQU1gLCBvZiBjb3Vyc2UuIEkmIzM5O2xsIG5lZWQgdG8gZHJpbGwgZG93biBpbnRvIGVpdGhlciBgZHJpdmVycy9ibG9jay96cmFtL0tjb25maWdgIG9yIGBkcml2ZXJzL2Jsb2NrL0tjb25maWdgIHRvIGNvbmZpcm0gZXZlcnl0aGluZyBpcyBjb3JyZWN0bHkgZW5hYmxlZCBhbmQgY29uZmlndXJlZCBiYXNlZCBvbiB0aGlzIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBaUkFNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoyOmNvbmZpZyBaUkFNXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7Q29tcHJlc3NlZCBSQU0gYmxvY2sgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xNi1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjE3OmNvbmZpZyBaUkFNX0JBQ0tFTkRfTFo0XG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xOC1cdGJvb2wgXCYjMzQ7bHo0IGNvbXByZXNzaW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0yMi1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjIzOmNvbmZpZyBaUkFNX0JBQ0tFTkRfTFo0SENcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTI0LVx0Ym9vbCBcJiMzNDtsejRoYyBjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMjgtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoyOTpjb25maWcgWlJBTV9CQUNLRU5EX1pTVERcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTMwLVx0Ym9vbCBcJiMzNDt6c3RkIGNvbXByZXNzaW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zNC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjM1OmNvbmZpZyBaUkFNX0JBQ0tFTkRfREVGTEFURVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMzYtXHRib29sIFwmIzM0O2RlZmxhdGUgY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQwLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NDE6Y29uZmlnIFpSQU1fQkFDS0VORF84NDJcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDs4NDIgY29tcHJlc3Npb24gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQ2LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NDc6Y29uZmlnIFpSQU1fQkFDS0VORF9GT1JDRV9MWk9cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQ4LVx0ZGVwZW5kcyBvbiBaUkFNXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNTItXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo1Mzpjb25maWcgWlJBTV9CQUNLRU5EX0xaT1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNTQtXHRib29sIFwmIzM0O2x6byBhbmQgbHpvLXJsZSBjb21wcmVzc2lvbiBzdXBwb3J0XCYjMzQ7IGlmICFaUkFNX0JBQ0tFTkRfRk9SQ0VfTFpPXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9NjA9Y2hvaWNlXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjQtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo2NTpjb25maWcgWlJBTV9ERUZfQ09NUF9MWk9STEVcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTY2LVx0Ym9vbCBcJiMzNDtsem8tcmxlXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjgtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo2OTpjb25maWcgWlJBTV9ERUZfQ09NUF9MWk9cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTcwLVx0Ym9vbCBcJiMzNDtsem9cJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy03Mi1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjczOmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaNFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzQtXHRib29sIFwmIzM0O2x6NFwmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTc2LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6Nzc6Y29uZmlnIFpSQU1fREVGX0NPTVBfTFo0SENcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTc4LVx0Ym9vbCBcJiMzNDtsejRoY1wmIzM0O1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTgwLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6ODE6Y29uZmlnIFpSQU1fREVGX0NPTVBfWlNURFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODItXHRib29sIFwmIzM0O3pzdGRcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04NC1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjg1OmNvbmZpZyBaUkFNX0RFRl9DT01QX0RFRkxBVEVcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTg2LVx0Ym9vbCBcJiMzNDtkZWZsYXRlXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODgtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo4OTpjb25maWcgWlJBTV9ERUZfQ09NUF84NDJcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTkwLVx0Ym9vbCBcJiMzNDs4NDJcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz05Mz1lbmRjaG9pY2VcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTk0LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6OTU6Y29uZmlnIFpSQU1fREVGX0NPTVBcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTk2LVx0c3RyaW5nXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTA2LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTA3OmNvbmZpZyBaUkFNX1dSSVRFQkFDS1xuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTA4LSAgICAgICBib29sIFwmIzM0O1dyaXRlIGJhY2sgaW5jb21wcmVzc2libGUgb3IgaWRsZSBwYWdlIHRvIGJhY2tpbmcgZGV2aWNlXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTIwLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTIxOmNvbmZpZyBaUkFNX1RSQUNLX0VOVFJZX0FDVElNRVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTIyLVx0Ym9vbCBcJiMzNDtUcmFjayBhY2Nlc3MgdGltZSBvZiB6cmFtIGVudHJpZXNcJiMzNDtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMjgtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMjk6Y29uZmlnIFpSQU1fTUVNT1JZX1RSQUNLSU5HXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0xMzAtXHRib29sIFwmIzM0O1RyYWNrIHpSYW0gYmxvY2sgc3RhdHVzXCYjMzQ7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTM5LVxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6MTQwOmNvbmZpZyBaUkFNX01VTFRJX0NPTVBcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE0MS1cdGJvb2wgXCYjMzQ7RW5hYmxlIG11bHRpcGxlIGNvbXByZXNzaW9uIHN0cmVhbXNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjYyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBtb2RpZmljYXRpb25zLgoKKipBbmFseXppbmcgdGhlIFpyYW0gUGF0Y2gqKgoKQWxyaWdodCwgc28gdGhpcyBwYXRjaCBoaXRzIGB6cmFtX2Rydi5jYCwgYHpjb21wLmNgLCBhbmQgYSBidW5jaCBvZiBiYWNrZW5kIGZpbGVzLiBUaGF0JiMzOTtzIGEgZ29vZCBwbGFjZSB0byBzdGFydCwgaGl0dGluZyB0aGUgY29yZSBkcml2ZXIsIHRoZSBjb21wcmVzc2lvbiByb3V0aW5lcywgYW5kIGxpa2VseSB0aGUgYmxvY2sgZGV2aWNlIGludGVyYWN0aW9uLiBMZXQmIzM5O3MgZGlnIGludG8gYHpyYW1fZHJ2LmNgIGZpcnN0LiBJIHdhbnQgdG8gc2VlIHdoaWNoIGZ1bmN0aW9ucyB3ZXJlIHRvdWNoZWQgdGhlcmUuIFRoYXQgZmlsZSBpcyB0aGUgaGVhcnQgb2YgdGhlIGJsb2NrIGRldmljZSBlbXVsYXRpb24sIHNvIGFueSBjaGFuZ2VzIHRoZXJlIGFyZSBnb2luZyB0byBiZSBjcml0aWNhbCB0byB1bmRlcnN0YW5kLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgKndoYXQqIHRoZXkgbW9kaWZpZWQgaW4gdGhhdCBjcnVjaWFsIGZpbGUgdG8gZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBhY3Jvc3MgdGhlIGVudGlyZSBzdWJzeXN0ZW0uIFRoaXMgaXMgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthbGdvcml0aG1fcGFyYW1zX3N0b3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTcwMD1zdGF0aWMgaW50IGNvbXBfcGFyYW1zX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgczMyIGxldmVsLFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE3MjYtXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxNzI3OnN0YXRpYyBzc2l6ZV90IGFsZ29yaXRobV9wYXJhbXNfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTcyOC1cdFx0XHRcdCAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwMzcKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgUGFyYW1ldGVyIGFuZCBBbGdvcml0aG0gU3RvcmFnZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdHdvIGtleSBzdG9yYWdlIGxvY2F0aW9uczogYGNvbXBfcGFyYW1zX3N0b3JlYCBhbmQgYF9fY29tcF9hbGdvcml0aG1fc3RvcmVgLiBJdCYjMzk7cyBwcmV0dHkgc3RhbmRhcmQgdG8ga2VlcCBwYXJhbWV0ZXJzIHNlcGFyYXRlIGZyb20gdGhlIGFsZ29yaXRobXMgdGhlbXNlbHZlcywgZXNwZWNpYWxseSBpbiBtb3JlIGNvbXBsZXggY29tcHV0YXRpb25hbCBzZXR1cHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcGFyYW1ldGVycyBhcmUgYmVpbmcgb3JnYW5pemVkIGluIGBjb21wX3BhcmFtc19zdG9yZWAuIElzIGl0IGEga2V5LXZhbHVlIHN0b3JlPyBTdHJ1Y3R1cmVkIGRhdGE/IEhvdyBpcyBpdCBpbmRleGVkLCBpZiBhdCBhbGw/IFRoZSBnb2FsIGlzIHRvIHNlZSBpZiBJIGNhbiB0cmFjZSBob3cgc3BlY2lmaWMgcGFyYW1ldGVyIHNldHMgYXJlIHRpZWQgdG8gcGFydGljdWxhciBjb21wdXRhdGlvbmFsIG1vZGVscy4KCk5leHQsIHRoZSBgX19jb21wX2FsZ29yaXRobV9zdG9yZWAuLi50aGUgZG91YmxlIHVuZGVyc2NvcmUgc3VnZ2VzdHMgaXQmIzM5O3MgYSBwcml2YXRlIG9yIGludGVybmFsIGNvbXBvbmVudC4gTm8gcHJvYmxlbSwgdGhhdCYjMzk7cyBmaW5lLiBXaGF04oCZcyBpbXBvcnRhbnQgaXMgaG93IGFsZ29yaXRobXMgYXJlICpyZXByZXNlbnRlZCogd2l0aGluIHRoaXMgc3RvcmUuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGZ1bmN0aW9uIHBvaW50ZXJzPyBTZXJpYWxpemVkIGNvZGUgb2JqZWN0cz8gQWJzdHJhY3QgcmVwcmVzZW50YXRpb25zIHRoYXQgbmVlZCB0byBiZSBpbnRlcnByZXRlZCBieSBhIHNwZWNpZmljIGVuZ2luZT8gVGhlIGxldmVsIG9mIGFic3RyYWN0aW9uIGhlcmUgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZsZXhpYmlsaXR5IGFuZCBleHRlbnNpYmlsaXR5IG9mIHRoZSBzeXN0ZW0uIEkgd2lsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3bywgaG93IHRoZSBwYXJhbWV0ZXJzIGluIHRoZSBmaXJzdCBhcmUgYXBwbGllZCB0byB0aGUgYWxnb3JpdGhtIGluIHRoZSBzZWNvbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29tcF9wYXJhbXNfc3RvcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xNjg5PXN0YXRpYyB2b2lkIGNvbXBfcGFyYW1zX3Jlc2V0KHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbylcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xNjk5LVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTcwMDpzdGF0aWMgaW50IGNvbXBfcGFyYW1zX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgczMyIGxldmVsLFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTcwMS1cdFx0XHQgICAgIGNvbnN0IGNoYXIgKmRpY3RfcGF0aCxcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xNzI3PXN0YXRpYyBzc2l6ZV90IGFsZ29yaXRobV9wYXJhbXNfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4MTQtXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxODE1Olx0cmV0ID0gY29tcF9wYXJhbXNfc3RvcmUoenJhbSwgcHJpbywgbGV2ZWwsIGRpY3RfcGF0aCwgXHUwMDI2ZGVmbGF0ZV9wYXJhbXMpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTgxNi1cdHJldHVybiByZXQgPyByZXQgOiBsZW47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODYzOAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgbGlrZSB5b3Vyc2VsZjoKCioqQW5hbHl6aW5nIHRoZSBBbGdvcml0aG0gU3RvcmUqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgZXhhbWluZSB0aGUgYF9fY29tcF9hbGdvcml0aG1fc3RvcmVgLiBUaGF0JiMzOTtzIHdoZXJlIEkgd291bGQgZXhwZWN0IHRoZSBjb3JlIG9mIHRoaXMgd2hvbGUgdGhpbmcgdG8gbGl2ZSwgd291bGRuJiMzOTt0IHlvdT8gVGhpcyBpcyB0aGUgY2VudHJhbCByZXBvc2l0b3J5LCB0aGUgb3BlcmF0aW9uYWwgaGVhcnQgb2YgdGhlIHN5c3RlbSB3aGVuIGl0IGNvbWVzIHRvIGNvbXB1dGF0aW9uLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gbG9vayBhdCBob3cgaXQmIzM5O3Mgc3RydWN0dXJlZCwgaXRzIGFjY2VzcyBtZXRob2RzLCBhbmQsIG9mIGNvdXJzZSwgdGhlIGFsZ29yaXRobXMgdGhlbXNlbHZlcy4gV2hhdCBraW5kIG9mIG1ldGFkYXRhIGRvZXMgaXQgaGF2ZT8gVmVyc2lvbmluZz8gRGVwZW5kZW5jeSBtYW5hZ2VtZW50PyBBcmUgdGhlIGFsZ29yaXRobXMgZHluYW1pY2FsbHkgbG9hZGVkIG9yIHN0YXRpY2FsbHkgbGlua2VkPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MgaW4gdGhlIHN0b3JlIGl0c2VsZj8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgc3RvcmUmIzM5O3MgZGVzaWduIG9uIHN5c3RlbSBzY2FsYWJpbGl0eSBhbmQgbWFpbnRhaW5hYmlsaXR5PyBJJiMzOTttIGFscmVhZHkgYW50aWNpcGF0aW5nIHF1ZXN0aW9ucyBhYm91dCBwb3RlbnRpYWwgY29uY3VycmVuY3kgaXNzdWVzIGFuZCBzZWN1cml0eSBpbXBsaWNhdGlvbnMgaWYgdGhpcyBpcyBub3QgaGFuZGxlZCBjb3JyZWN0bHkuIFRoZSBkZXNpZ24gb2YgdGhpcyBzdG9yZSBpcyBwYXJhbW91bnQgdG8gdGhlIGVudGlyZSBvcGVyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fY29tcF9hbGdvcml0aG1fc3RvcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xNjYwPXN0YXRpYyB2b2lkIGNvbXBfYWxnb3JpdGhtX3NldChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIGNvbnN0IGNoYXIgKmFsZylcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xNjY0LVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTY2NTpzdGF0aWMgaW50IF9fY29tcF9hbGdvcml0aG1fc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBjb25zdCBjaGFyICpidWYpXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xNjY2LXtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xODMxPXN0YXRpYyBzc2l6ZV90IGNvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODM4LVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTgzOTpcdHJldCA9IF9fY29tcF9hbGdvcml0aG1fc3RvcmUoenJhbSwgWlJBTV9QUklNQVJZX0NPTVAsIGJ1Zik7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODQwLVx0cmV0dXJuIHJldCA/IHJldCA6IGxlbjtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xODYzPXN0YXRpYyBzc2l6ZV90IHJlY29tcF9hbGdvcml0aG1fc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4OTktXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxOTAwOlx0cmV0ID0gX19jb21wX2FsZ29yaXRobV9zdG9yZSh6cmFtLCBwcmlvLCBhbGcpO1xuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTkwMS1cdHJldHVybiByZXQgPyByZXQgOiBsZW47XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyODgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBaUkFNIEFsZ29yaXRobSBQYXJhbWV0ZXIgSGFuZGxpbmcqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiByZXZpZXdpbmcgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IGV4cGVydCBleWUgZ29lcyB0byB0aGUgc3lzdGVtIGZpbGUgc3RvcmUgZnVuY3Rpb25zOiBgYWxnb3JpdGhtX3BhcmFtc19zdG9yZWAsIGBjb21wX2FsZ29yaXRobV9zdG9yZWAsIGFuZCBgcmVjb21wX2FsZ29yaXRobV9zdG9yZWAuIFRoZXNlIGFyZSB0aGUgZW50cnkgcG9pbnRzIOKAkyB0aGUgZ2F0ZXdheXMg4oCTIHVzZXJzcGFjZSB1dGlsaXplcyB2aWEgYC9zeXMvYmxvY2svenJhbVgvYWxnb19wYXJhbXNgIG9yIHNpbWlsYXIgc3lzZnMgbm9kZXMuCgpUaGlzIHBhdGNoLCBzcGVjaWZpY2FsbHksIGludHJvZHVjZXMgdHdvIG5ldyBmdW5jdGlvbnMsIGB6Y29tcF9nZXRfY2Fwc2AgYW5kIGB6Y29tcF92YWxpZGF0ZV9sZXZlbGAuIFBsdXMsIGl0IHRvdWNoZXMgYGNvbXBfcGFyYW1zX3N0b3JlYCB0byBhZGRyZXNzIGEgbWVtb3J5IGxlYWsgaXNzdWUuIEFwcGFyZW50bHksIHRoZXkgd2VyZSB1c2luZyBgbmV3X2RpY3RgIHdoZW4gdGhleSBzaG91bGQgaGF2ZSBiZWVuIHdyaXRpbmcgZGlyZWN0bHkgdG8gYHpyYW0tJmd0O3BhcmFtc1twcmlvXS5kaWN0YC4KClRoaXMgc2NyZWFtcyBmdXp6aW5nIHRhcmdldC4gVGhvc2Ugc3RvcmUgZnVuY3Rpb25zIGFuZCBuZXcgZnVuY3Rpb25zIGFyZSBwcmltZSBjYW5kaWRhdGVzIGZvciBmaW5kaW5nIHZ1bG5lcmFiaWxpdGllcy4gSSBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbjoKCiogICBgYWxnb3JpdGhtX3BhcmFtc19zdG9yZWAKKiAgIGBjb21wX3BhcmFtc19zdG9yZWAKKiAgIGBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlYCAoVGhhdCBkb3VibGUgdW5kZXJzY29yZSBpcyBhIGJpdCBvZiBhIGZsYWcsIHRvby4pCiogICBgemNvbXBfZ2V0X2NhcHNgCiogICBgemNvbXBfdmFsaWRhdGVfbGV2ZWxgCgpCZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byB0aGlzLCBJIHNob3VsZCB2ZXJpZnkgdGhlIGV4YWN0IG5hbWUgb2YgYGFsZ29yaXRobV9wYXJhbXNfc3RvcmVgLiBOZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIHdvcmtpbmcgd2l0aCB0aGUgY29ycmVjdCBzeW1ib2wuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FsZ29yaXRobV9wYXJhbXNfc3RvcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xNzAwPXN0YXRpYyBpbnQgY29tcF9wYXJhbXNfc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBzMzIgbGV2ZWwsXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTcyNi1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjE3Mjc6c3RhdGljIHNzaXplX3QgYWxnb3JpdGhtX3BhcmFtc19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xNzI4LVx0XHRcdFx0ICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk5NjUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUgZGVlcGx5IGZhbWlsaWFyIHdpdGggdGhpcyBraW5kIG9mIHN5c3RlbToKCioqQ2hlY2tpbmcgdGhlIE5vbWVuY2xhdHVyZSoqCgpBbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIGluLCBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhhdCB0aGUgdmFyaWFibGUgb3Igc3RvcmUgSSYjMzk7bSB3b3JraW5nIHdpdGggaXMsIGluIGZhY3QsIGNhbGxlZCBgY29tcF9hbGdvcml0aG1fc3RvcmVgLiBJdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHN0ZXAsIHJlYWxseS4gVHlwb3MgYW5kIGluY29ycmVjdCBuYW1pbmcgY29udmVudGlvbnMgYXJlIHRoZSBiYW5lIG9mIG15IGV4aXN0ZW5jZSwgYW5kIHRoZXkgY2FuIGxlYWQgdG8gaG91cnMgb2YgZGVidWdnaW5nIOKAkyBjb21wbGV0ZWx5IHVubmVjZXNzYXJ5IGhvdXJzLCBJIG1pZ2h0IGFkZC4gU28sIGxldCYjMzk7cyBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgdGhlIHByZWNpc2UsIGNhbm9uaWNhbCBuYW1lIHdlJiMzOTtyZSB1c2luZy4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBjaGFzaW5nIGEgcGhhbnRvbSByZWZlcmVuY2UgZG93biB0aGUgd3JvbmcgcGF0aC4gTm8gc2Vuc2UgaW4gd2FzdGluZyB0aW1lIG9uIGEgbWlzbmFtZWQgdmFyaWFibGUuIExldCYjMzk7cyBtYWtlIHN1cmUgdGhhdCYjMzk7cyBzcXVhcmVkIGF3YXkgZmlyc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbXBfYWxnb3JpdGhtX3N0b3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTY2MD1zdGF0aWMgdm9pZCBjb21wX2FsZ29yaXRobV9zZXQoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBjb25zdCBjaGFyICphbGcpXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTY2NC1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjE2NjU6c3RhdGljIGludCBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgY29uc3QgY2hhciAqYnVmKVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTY2Ni17XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTgxOT1zdGF0aWMgc3NpemVfdCBjb21wX2FsZ29yaXRobV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODMwLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTgzMTpzdGF0aWMgc3NpemVfdCBjb21wX2FsZ29yaXRobV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODMyLVx0XHRcdFx0ICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4MzgtXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxODM5Olx0cmV0ID0gX19jb21wX2FsZ29yaXRobV9zdG9yZSh6cmFtLCBaUkFNX1BSSU1BUllfQ09NUCwgYnVmKTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4NDAtXHRyZXR1cm4gcmV0ID8gcmV0IDogbGVuO1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTE4NDQ9c3RhdGljIHNzaXplX3QgcmVjb21wX2FsZ29yaXRobV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODYyLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTg2MzpzdGF0aWMgc3NpemVfdCByZWNvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4NjQtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODk5LVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTkwMDpcdHJldCA9IF9fY29tcF9hbGdvcml0aG1fc3RvcmUoenJhbSwgcHJpbywgYWxnKTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE5MDEtXHRyZXR1cm4gcmV0ID8gcmV0IDogbGVuO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDc2MAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIFpzaCBDb21wbGV0aW9uIEZ1bmN0aW9ucyoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgY29tcGxldGlvbiBzeXN0ZW0gaXMgYmVoYXZpbmcsIHNvIGxldCYjMzk7cyBzdGFydCB3aXRoIGEgZGVlcCBkaXZlIGludG8gdGhlIGNvZGUuIFRoZSBmaXJzdCBwbGFjZSB0byBsb29rIGlzIGRlZmluaXRlbHkgdGhlIGZ1bmN0aW9ucyBgemNvbXBfZ2V0X2NhcHNgIGFuZCBgemNvbXBfdmFsaWRhdGVfbGV2ZWxgLiBUaGVzZSBhcmUgZnVuZGFtZW50YWwuIFRoZXkgYXJlIHByb2JhYmx5IHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBjb21wbGV0aW9uIHN5c3RlbSBhbmQgZW5zdXJpbmcgdGhhdCB0aGUgY29tcGxldGlvbiBsZXZlbCBpcyBhcHByb3ByaWF0ZSBnaXZlbiB0aGUgY29udGV4dCwgcmVzcGVjdGl2ZWx5LiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBpbnB1dHMgdGhlc2UgZnVuY3Rpb25zIHRha2UsIHdoYXQgdGhleSByZXR1cm4sIGFuZCBob3cgdGhleSBpbnRlcmFjdC4gQXJlIHRoZXkgdGlnaHRseSBjb3VwbGVkLCBvciBpbmRlcGVuZGVudCBtb2R1bGVzPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgcG90ZW50aWFsIGJvdHRsZW5lY2tzIG9yIGVkZ2UgY2FzZXMgSSBzaG91bGQgd2F0Y2ggZm9yIGluIHRoZWlyIGltcGxlbWVudGF0aW9uPyBMZXQmIzM5O3MgdHJhY2UgdGhlaXIgZXhlY3V0aW9uIHdpdGggZGlmZmVyZW50IHNjZW5hcmlvcyBhbmQgc2VlIHdoYXQgdGhlIHJlc3VsdHMgYXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt6Y29tcF92YWxpZGF0ZV9sZXZlbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jPTEwMD11bnNpZ25lZCBpbnQgemNvbXBfZ2V0X2NhcHMoY29uc3QgY2hhciAqY29tcClcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYy0xMDYtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYzoxMDc6aW50IHpjb21wX3ZhbGlkYXRlX2xldmVsKGNvbnN0IGNoYXIgKmNvbXAsIHMzMiBsZXZlbClcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jLTEwOC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTA2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBzZWUsIHdoYXQgY29uZmlndXJhdGlvbnMgYXJlIGFic29sdXRlbHkgZXNzZW50aWFsIGhlcmU/IFRoZSBwcmltYXJ5IG9uZSB0aGF0IGp1bXBzIG91dCBhdCBtZSBpcywgb2YgY291cnNlLCBgWlJBTWAuIFRoYXQmIzM5O3MgdGhlIGNvcmUuIE5vdywgSSBuZWVkIHRvIGNvbnNpZGVyIGEgcG90ZW50aWFsIHdyaW5rbGUuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYHJlY29tcF9hbGdvcml0aG1fc3RvcmVgLCB3aGljaCBnaXZlcyBtZSBwYXVzZS4gSSBzaG91bGQgY2hlY2sgaWYgd2UgYWxzbyBuZWVkIGBaUkFNX01VTFRJX0NPTVBgIGFzIHBhcnQgb2YgdGhhdCBjb25maWd1cmF0aW9uLiBMZXQgbWUgdmVyaWZ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZWNvbXBfYWxnb3JpdGhtX3N0b3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTg0ND1zdGF0aWMgc3NpemVfdCByZWNvbXBfYWxnb3JpdGhtX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4NjItXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxODYzOnN0YXRpYyBzc2l6ZV90IHJlY29tcF9hbGdvcml0aG1fc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTg2NC1cdFx0XHRcdCAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQxMwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgbGlrZSB5b3U6CgoqKkNoZWNraW5nIGZvciBaUkFNIE11bHRpLUNvbXByZXNzaW9uIFN1cHBvcnQqKgoKT2theSwgc28gSSBuZWVkIHRvIHZlcmlmeSBzb21ldGhpbmcgYWJvdXQgdGhlIHpyYW0gY29tcHJlc3Npb24gc2V0dXAuIE15IGluaXRpYWwgc3RlcCBpcyB0byBkZXRlcm1pbmUgaWYgdGhlIGByZWNvbXBfYWxnb3JpdGhtX3N0b3JlYCBmdW5jdGlvbmFsaXR5IGlzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQuIEkmIzM5O20gZm9jdXNpbmcgb24gd2hldGhlciBpdCYjMzk7cyBlbmFibGVkIHVuZGVyIHRoZSBgQ09ORklHX1pSQU1fTVVMVElfQ09NUGAgY29uZmlndXJhdGlvbiBvcHRpb24uIFRoaXMgaXMgYSBjb21tb24gcGF0dGVybiwgYW5kIGEgY3JpdGljYWwgaW5pdGlhbCBjaGVjay4gSSYjMzk7bSBlc3NlbnRpYWxseSB0cmFjaW5nIHRoZSBkZXBlbmRlbmNpZXMuIEtub3dpbmcgdGhhdCBgcmVjb21wX2FsZ29yaXRobV9zdG9yZWAgZGVwZW5kcyBvbiBgQ09ORklHX1pSQU1fTVVMVElfQ09NUGAgd2lsbCBmdW5kYW1lbnRhbGx5IGltcGFjdCBob3cgSSBhcHByb2FjaCB0aGUgcmVzdCBvZiB0aGUgYW5hbHlzaXMsIHNvIGl0IG5lZWRzIHRvIGJlIGVzdGFibGlzaGVkIGVhcmx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfWlJBTV9NVUxUSV9DT01QJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yMjc9c3RhdGljIGlubGluZSBib29sIGlzX3BhcnRpYWxfaW8oc3RydWN0IGJpb192ZWMgKmJ2ZWMpXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjMyLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MjMzOiNpZiBkZWZpbmVkIENPTkZJR19aUkFNX1dSSVRFQkFDSyB8fCBkZWZpbmVkIENPTkZJR19aUkFNX01VTFRJX0NPTVBcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTIzNC1zdHJ1Y3QgenJhbV9wcF9zbG90IHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xODMxPXN0YXRpYyBzc2l6ZV90IGNvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODQyLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTg0MzojaWZkZWYgQ09ORklHX1pSQU1fTVVMVElfQ09NUFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTg0NC1zdGF0aWMgc3NpemVfdCByZWNvbXBfYWxnb3JpdGhtX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTIzNzI9c3RhdGljIGludCB6cmFtX2J2ZWNfd3JpdGUoc3RydWN0IHpyYW0gKnpyYW0sIHN0cnVjdCBiaW9fdmVjICpidmVjLFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTIzNzktXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyMzgwOiNpZmRlZiBDT05GSUdfWlJBTV9NVUxUSV9DT01QXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yMzgxLSNkZWZpbmUgUkVDT01QUkVTU19JRExFXHRcdCgxIFx1MDAzY1x1MDAzYyAwKVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTMwMDQ9c3RhdGljIERFVklDRV9BVFRSX1JXKGNvbXByZXNzZWRfd3JpdGViYWNrKTtcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMwMDUtI2VuZGlmXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDA2OiNpZmRlZiBDT05GSUdfWlJBTV9NVUxUSV9DT01QXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMDA3LXN0YXRpYyBERVZJQ0VfQVRUUl9SVyhyZWNvbXBfYWxnb3JpdGhtKTtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0zMDEyPXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICp6cmFtX2Rpc2tfYXR0cnNbXSA9IHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMDMyLVx0XHUwMDI2ZGV2X2F0dHJfZGVidWdfc3RhdC5hdHRyLFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAzMzojaWZkZWYgQ09ORklHX1pSQU1fTVVMVElfQ09NUFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAzNC1cdFx1MDAyNmRldl9hdHRyX3JlY29tcF9hbGdvcml0aG0uYXR0cixcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaD04MD1zdHJ1Y3QgenJhbV9zdGF0cyB7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmgtOTctXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaDo5ODojaWZkZWYgQ09ORklHX1pSQU1fTVVMVElfQ09NUFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmgtOTktI2RlZmluZSBaUkFNX1BSSU1BUllfQ09NUFx0MFVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDc6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzNjMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzMDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqWlJBTSBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zKioKCkFscmlnaHQsIHNvIGBDT05GSUdfWlJBTV9NVUxUSV9DT01QYCBzZWVtcyBsaWtlIGEgbm8tYnJhaW5lciB0byBlbmFibGUuICBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgcG9zaXRpdmUuIE5vdywgdGhlIHJlYWwgcXVlc3Rpb24gaXMgYWJvdXQgdGhlIGNvbXByZXNzaW9uIGJhY2tlbmRzLiBJIHNlZSB0aGUgcGF0Y2ggdG91Y2hlcyBgYmFja2VuZF84NDIuY2AsIGBiYWNrZW5kX2RlZmxhdGUuY2AsIGBiYWNrZW5kX2x6NC5jYCwgYGJhY2tlbmRfbHo0aGMuY2AsIGBiYWNrZW5kX2x6by5jYCwgYGJhY2tlbmRfbHpvcmxlLmNgLCBhbmQgYGJhY2tlbmRfenN0ZC5jYC4gIFRoYXQgbWVhbnMgd2Ugc2hvdWxkIHByb2JhYmx5IGVuYWJsZSBhbGwgb2YgdGhlIHJlbGV2YW50IGJhY2tlbmQgb3B0aW9uczogIGBaUkFNX0JBQ0tFTkRfTFo0YCwgYFpSQU1fQkFDS0VORF9MWjRIQ2AsIGBaUkFNX0JBQ0tFTkRfWlNURGAsIGBaUkFNX0JBQ0tFTkRfREVGTEFURWAsIGBaUkFNX0JBQ0tFTkRfODQyYCwgYW5kIGBaUkFNX0JBQ0tFTkRfTFpPYC4KCkhvbGQgb24uLi4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcuICBSaWdodCwgYFpSQU1fQkFDS0VORF9MWk9gIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCB1bmxlc3MgYCFaUkFNX0JBQ0tFTkRfRk9SQ0VfTFpPYC4gT2theSwgc28gbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHdlJiMzOTtyZSBpbmNsdWRpbmcgYFpSQU1gIGFuZCBgWlJBTV9NVUxUSV9DT01QYC4KCkFjdHVhbGx5LCB3YWl0LCB0aGlua2luZyBhYm91dCBpdC4gZW5hYmxpbmcgYWxsIHRoZSBiYWNrZW5kIG9wdGlvbnMgc3VjaCBhcyBgWlJBTV9CQUNLRU5EX0xaNGAsIGBaUkFNX0JBQ0tFTkRfTFo0SENgLCBgWlJBTV9CQUNLRU5EX1pTVERgLCBgWlJBTV9CQUNLRU5EX0RFRkxBVEVgLCBgWlJBTV9CQUNLRU5EXzg0MmAsIGFuZCBgWlJBTV9CQUNLRU5EX0xaT2Agd2lsbCBiZSB1c2VmdWwgZm9yIHRlc3RpbmcgYW5kIGV2YWx1YXRpbmcgdGhlIHBlcmZvcm1hbmNlIG9mIGVhY2ggYmFja2VuZCBpbiBhIG11bHRpLWNvbXByZXNzaW9uIHNldHRpbmcuICBXZSBkZWZpbml0ZWx5IG5lZWQgdG8gbGlzdCB0aGVtIGFsbCBvdXQuCgpOb3csIGxldCBtZSBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBgYWxnb3JpdGhtX3BhcmFtc19zdG9yZWAgZnVuY3Rpb24gaW4gYHpyYW1fZHJ2LmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzoyNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthbGdvcml0aG1fcGFyYW1zX3N0b3JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTcwMD1zdGF0aWMgaW50IGNvbXBfcGFyYW1zX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgczMyIGxldmVsLFxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE3MjYtXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxNzI3OnN0YXRpYyBzc2l6ZV90IGFsZ29yaXRobV9wYXJhbXNfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTcyOC1cdFx0XHRcdCAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzoyNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzI1MAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLiBNeSBmaXJzdCB0aG91Z2h0IGlzOiAqKlN5c2ZzIEV4cG9ydCBDaGVjayoqLiBJIG5lZWQgdG8gdmVyaWZ5IGlmIHRoaXMgYGFsZ29yaXRobV9wYXJhbXNfc3RvcmVgIGNvbXBvbmVudCBoYXMgYmVlbiBwcm9wZXJseSBleHBvc2VkIHRocm91Z2ggc3lzZnMuIFRoYXQmIzM5O3MgdGhlIGNydWNpYWwgZmlyc3Qgc3RlcC4gSWYgaXQmIzM5O3Mgbm90IGV4cG9ydGVkIHRoZXJlLCB0aGVuIG15IGludGVyYWN0aW9uIHdpdGggaXQgaXMgaW1tZWRpYXRlbHkgZ29pbmcgdG8gYmUgbGltaXRlZC4gSSBuZWVkIHRvIGNvbmZpcm0gaXRzIGF2YWlsYWJpbGl0eSB2aWEgc3lzZnMgYmVmb3JlIEkgY2FuIGRvIGFueXRoaW5nIGZ1cnRoZXI7IHRoYXQgaXMsIGJlZm9yZSBJIGNhbiByZWFkIGZyb20sIHdyaXRlIHRvLCBvciBvdGhlcndpc2UgaW50ZXJhY3Qgd2l0aCBpdHMgZXhwb3NlZCBwYXJhbWV0ZXJzLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hldGhlciBvciBub3QgSSYjMzk7bSBldmVuICphbGxvd2VkKiB0byB1c2UgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FsZ29yaXRobV9wYXJhbXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xNzAwPXN0YXRpYyBpbnQgY29tcF9wYXJhbXNfc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBzMzIgbGV2ZWwsXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTcyNi1cbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjE3Mjc6c3RhdGljIHNzaXplX3QgYWxnb3JpdGhtX3BhcmFtc19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xNzI4LVx0XHRcdFx0ICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MzAwOD1zdGF0aWMgREVWSUNFX0FUVFJfV08ocmVjb21wcmVzcyk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMDA5LSNlbmRpZlxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MzAxMDpzdGF0aWMgREVWSUNFX0FUVFJfV08oYWxnb3JpdGhtX3BhcmFtcyk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMDExLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MzAxMj1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqenJhbV9kaXNrX2F0dHJzW10gPSB7XG4tLVxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAzNi0jZW5kaWZcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjMwMzc6XHRcdTAwMjZkZXZfYXR0cl9hbGdvcml0aG1fcGFyYW1zLmF0dHIsXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMDM4LVx0TlVMTCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDc6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM3ODgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFpSQU0gQWxnb3JpdGhtIFBhcmFtZXRlciBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBhbGdvcml0aG1fcGFyYW1zYCBhdHRyaWJ1dGUgd2l0aGluIHRoZSBzeXNmcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGNvbmZpcm0gaXRzIHVzYWdlLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O20gbm90aWNpbmcgYGNvbXBfcGFyYW1zX3N0b3JlYCBpcyBiZWluZyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBgYWxnb3JpdGhtX3BhcmFtc19zdG9yZWAsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIGFsc28gc2VlIHRoYXQgYF9fY29tcF9hbGdvcml0aG1fc3RvcmVgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGJvdGggYGNvbXBfYWxnb3JpdGhtX3N0b3JlYCBhbmQgYHJlY29tcF9hbGdvcml0aG1fc3RvcmVgLiBUaGF0JiMzOTtzIGltcG9ydGFudCB0byBrZWVwIGluIG1pbmQsIGtub3dpbmcgdGhlIGNhbGxpbmcgY2hhaW5zIGFuZCBkZXBlbmRlbmNpZXMuIFNvIGZhciwgdGhlIGNhbGwgZmxvdyBpcyBsb2dpY2FsLCBhdCBsZWFzdCBvbiB0aGUgc3VyZmFjZS4KCkZyb20gdGhpcyBxdWljayBvdmVydmlldywgaXQgbG9va3MgbGlrZSB0aGUgcGF0Y2ggaXMgZnVuY3Rpb25hbCBhbmQgZGVmaW5pdGVseSByZWFjaGFibGUgYmFzZWQgb24gdGhlIGNvbm5lY3Rpb25zIEkgY2FuIHNlZS4gTm93LCB0byByZWFsbHkgZGl2ZSBpbiwgSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiB0aGVzZSBrZXkgc3ltYm9sczogYGFsZ29yaXRobV9wYXJhbXNfc3RvcmVgLCBgY29tcF9wYXJhbXNfc3RvcmVgLCBgX19jb21wX2FsZ29yaXRobV9zdG9yZWAsIGB6Y29tcF9nZXRfY2Fwc2AsIGFuZCBgemNvbXBfdmFsaWRhdGVfbGV2ZWxgLiBUaGF0IGdpdmVzIG1lIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBmb2xsb3cgdGhlIGNvbnRyb2wgZmxvdyBhbmQgdW5kZXJzdGFuZCB0aGUgZ3V0cyBvZiB0aGlzIGltcGxlbWVudGF0aW9uLgoKVGhlbiwgdGhlcmUgYXJlIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBaUkFNOiBgWlJBTWAsIGBaUkFNX01VTFRJX0NPTVBgLCBgWlJBTV9CQUNLRU5EX0xaNGAsIGBaUkFNX0JBQ0tFTkRfTFo0SENgLCBgWlJBTV9CQUNLRU5EX1pTVERgLCBgWlJBTV9CQUNLRU5EX0RFRkxBVEVgLCBgWlJBTV9CQUNLRU5EXzg0MmAgYW5kIGBaUkFNX0JBQ0tFTkRfTFpPYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGltcGFjdCB0aGUgb3ZlcmFsbCBiZWhhdmlvci4gV2FpdCwgaGFuZyBvbi4uLiBgWlJBTV9CQUNLRU5EX0xaT2AgaXMgYSBib29sZWFuLiBMZXQmIzM5O3MgbWFrZSBzdXJlIHRoYXQgdGhhdCBpcyBjb3JyZWN0IGJ5IGNyb3NzLWNoZWNraW5nIGBkcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZ2AgdG8gY29uZmlybSB0aGF0IHRoZSB0eXBlIGlzIHNldCBjb3JyZWN0bHkgaW4gdGhlIEtjb25maWcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBaUkFNX0JBQ0tFTkRfTFpPJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9NDc9Y29uZmlnIFpSQU1fQkFDS0VORF9GT1JDRV9MWk9cbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01Mi1cbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjUzOmNvbmZpZyBaUkFNX0JBQ0tFTkRfTFpPXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01NC1cdGJvb2wgXCYjMzQ7bHpvIGFuZCBsem8tcmxlIGNvbXByZXNzaW9uIHN1cHBvcnRcJiMzNDsgaWYgIVpSQU1fQkFDS0VORF9GT1JDRV9MWk9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDc6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ1OTgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBac3RhbmRhcmQgQ29kZWJhc2UqKgoKT2theSwgc28gdGhlIGluaXRpYWwgZmxhZyBJJiMzOTttIGxvb2tpbmcgYXQsIHRoYXQmIzM5O3MgYSBib29sZWFuLCBubyBzdXJwcmlzZXMgdGhlcmUuIE15IHByaW1hcnkgY29uY2VybiByaWdodCBub3cgaXMgaWRlbnRpZnlpbmcgdGhlIGZ1bGwgZXh0ZW50IG9mIHRoZSBjaGFuZ2VzIHJlbGF0ZWQgdG8gdGhlIHpzdGQgbGlicmFyeS4gSSBrbm93IHRoZXJlJiMzOTtzIGEgbW9kaWZpY2F0aW9uLCBidXQgSSBuZWVkIHRvIGVuc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBlbHNlLgoKSSByZWNhbGwgYSBzcGVjaWZpYyBjaGFuZ2UgdG8gYHpzdGRfY3JlYXRlYCB3aXRoaW4gYGJhY2tlbmRfenN0ZC5jYC4gVGhlIHJlbW92YWwgb2YgYHpzdGRfcmVsZWFzZV9wYXJhbXMocGFyYW1zKWAgaW4gdGhhdCBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlzIHNvbWV0aGluZyB0byBrZWVwIGluIG1pbmQuIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gTm93LCBnaXZlbiB0aGF0IGB6c3RkX2NyZWF0ZWAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLCBpdCYjMzk7cyBub3QgZGlyZWN0bHkgZXhwb3NlZCBleHRlcm5hbGx5LiBJdCBpcyBsaWtlbHkgY2FsbGVkIHRocm91Z2ggYHpjb21wX2NyZWF0ZWAuIEV2ZW4gc28sIEkgdGhpbmsgSSYjMzk7bGwgYWRkIGB6c3RkX2NyZWF0ZWAgdG8gdGhlIGZvY3VzIHN5bWJvbHMgdG8gbWFrZSBjZXJ0YWluIEkgY2FwdHVyZSBldmVyeXRoaW5nLiBJJiMzOTttIGdvaW5nIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgYHpzdGRfY3JlYXRlYCBmdW5jdGlvbiBpdHNlbGYgdG8gc29saWRpZnkgbXkgdW5kZXJzdGFuZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDc6MjY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7enN0ZF9jcmVhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jPTUxPXN0YXRpYyBpbnQgenN0ZF9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYy03MS1cbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYzo3MjpcdHpwLVx1MDAzZWNkaWN0ID0genN0ZF9jcmVhdGVfY2RpY3RfYnlyZWZlcmVuY2UocGFyYW1zLVx1MDAzZWRpY3QsXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMtNzMtXHRcdFx0XHRcdFx0ICBwYXJhbXMtXHUwMDNlZGljdF9zeixcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMtNzgtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmM6Nzk6XHR6cC1cdTAwM2VkZGljdCA9IHpzdGRfY3JlYXRlX2RkaWN0X2J5cmVmZXJlbmNlKHBhcmFtcy1cdTAwM2VkaWN0LFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTgwLVx0XHRcdFx0XHRcdCAgcGFyYW1zLVx1MDAzZWRpY3Rfc3osXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jPTkyPXN0YXRpYyB2b2lkIHpzdGRfZGVzdHJveShzdHJ1Y3QgemNvbXBfY3R4ICpjdHgpXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTExOC1cbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYzoxMTk6c3RhdGljIGludCB6c3RkX2NyZWF0ZShzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMsIHN0cnVjdCB6Y29tcF9jdHggKmN0eClcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYy0xMjAte1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYy0xNTEtXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmM6MTUyOlx0XHR6Y3R4LVx1MDAzZWNjdHggPSB6c3RkX2NyZWF0ZV9jY3R4X2FkdmFuY2VkKHpwLVx1MDAzZWN1c3RvbV9tZW0pO1xuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTE1My1cdFx0aWYgKCF6Y3R4LVx1MDAzZWNjdHgpXG4tLVxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTE1NS1cbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYzoxNTY6XHRcdHpjdHgtXHUwMDNlZGN0eCA9IHpzdGRfY3JlYXRlX2RjdHhfYWR2YW5jZWQoenAtXHUwMDNlY3VzdG9tX21lbSk7XG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMtMTU3LVx0XHRpZiAoIXpjdHgtXHUwMDNlZGN0eClcbi0tXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmM9MjA4PWNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF96c3RkID0ge1xuLS1cbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYy0yMTAtXHQuZGVjb21wcmVzc1x0PSB6c3RkX2RlY29tcHJlc3MsXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmM6MjExOlx0LmNyZWF0ZV9jdHhcdD0genN0ZF9jcmVhdGUsXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMtMjEyLVx0LmRlc3Ryb3lfY3R4XHQ9IHpzdGRfZGVzdHJveSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDc6MjY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU1OTEKCQkJCQkJCW91dHB1dDogMjQxCgkJCQkJCQl0aG91Z2h0czogMjY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBDb21wcmVzc2lvbiBQYXJhbWV0ZXIgQ2hhbmdlcyBpbiBaUkFNKioKCkFscmlnaHQsIGxldCYjMzk7cyB6ZXJvIGluIG9uIGB6c3RkX2NyZWF0ZWAuIFRoYXQgZmVlbHMgbGlrZSB0aGUga2V5IGZ1bmN0aW9uIGhlcmUuIEZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gY2xlYXIgb24gdGhlIHJlbGV2YW50IGZvY3VzIHN5bWJvbHM6IGBhbGdvcml0aG1fcGFyYW1zX3N0b3JlYCwgYGNvbXBfcGFyYW1zX3N0b3JlYCwgYF9fY29tcF9hbGdvcml0aG1fc3RvcmVgLCBgemNvbXBfZ2V0X2NhcHNgLCBgemNvbXBfdmFsaWRhdGVfbGV2ZWxgLCBhbmQgdGhlIGFscmVhZHkgZXN0YWJsaXNoZWQgYHpzdGRfY3JlYXRlYC4KCk5leHQsIEkmIzM5O2xsIHF1aWNrbHkgcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIFpSQU0gY29uZmlndXJhdGlvbiBvcHRpb25zIGludm9sdmVkLiBJIHNlZSBgWlJBTWAsIGBaUkFNX01VTFRJX0NPTVBgLCB0aGUgYmFja2VuZCBjaG9pY2VzIGBaUkFNX0JBQ0tFTkRfTFo0YCwgYFpSQU1fQkFDS0VORF9MWjRIQ2AsIGBaUkFNX0JBQ0tFTkRfWlNURGAsIGBaUkFNX0JBQ0tFTkRfREVGTEFURWAsIGBaUkFNX0JBQ0tFTkRfODQyYCwgYW5kIGBaUkFNX0JBQ0tFTkRfTFpPYC4KCk5vdywgcHV0dGluZyBpdCBhbGwgdG9nZXRoZXIsIHRoZSBwYXRjaCBzZWVtcyB0byBiZSByZWZpbmluZyBob3cgY29tcHJlc3Npb24gcGFyYW1ldGVycyBhcmUgaGFuZGxlZCB3aXRoaW4gWlJBTS4gSXQmIzM5O3MgZW5oYW5jaW5nIHRoZSBjb21wcmVzc2lvbiBsZXZlbCBjYXBhYmlsaXRpZXMgYW5kIGFkZGluZyBkaWN0aW9uYXJ5IHN1cHBvcnQsIHdoaWNoIGlzIGEgZ29vZCBtb3ZlLiBPbiB0b3Agb2YgdGhhdCwgSSBzZWUgYSBmaXggZm9yIGEgbWVtb3J5IGxlYWsgd2l0aGluIGBjb21wX3BhcmFtc19zdG9yZWAgYW5kIGEgYml0IG9mIHRpZHlpbmcgdXAgYnkgcmVtb3ZpbmcgYSByZWR1bmRhbnQgcGFyYW1ldGVyIHJlbGVhc2UgaW4gYHpzdGRfY3JlYXRlYC4gVGhlIGNoYW5nZXMgc2VlbSB0byBiZSBmdW5jdGlvbmFsbHkgc291bmQgYW5kIGRpcmVjdGx5IGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UuIEkgY2FuIHNlZSB0aGlzIGJlaW5nIHRyaWdnZXJlZCBieSBzeXNmcyBhdHRyaWJ1dGVzIGxpa2UgYGFsZ29yaXRobV9wYXJhbXNgLCBgY29tcF9hbGdvcml0aG1gLCBhbmQgYHJlY29tcF9hbGdvcml0aG1gLgoKT2theSwgSSB0aGluayBJIGhhdmUgYSBnb29kIGdyYXNwIG9uIHRoaXMuIEkgc2hvdWxkIGNhbGwgYHNldC1yZXN1bHRzYCBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtaUkFNJiMzNDssCiAgICAmIzM0O1pSQU1fTVVMVElfQ09NUCYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfTFo0JiMzNDssCiAgICAmIzM0O1pSQU1fQkFDS0VORF9MWjRIQyYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfWlNURCYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfREVGTEFURSYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfODQyJiMzNDssCiAgICAmIzM0O1pSQU1fQkFDS0VORF9MWk8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthbGdvcml0aG1fcGFyYW1zX3N0b3JlJiMzNDssCiAgICAmIzM0O2NvbXBfcGFyYW1zX3N0b3JlJiMzNDssCiAgICAmIzM0O19fY29tcF9hbGdvcml0aG1fc3RvcmUmIzM0OywKICAgICYjMzQ7emNvbXBfZ2V0X2NhcHMmIzM0OywKICAgICYjMzQ7emNvbXBfdmFsaWRhdGVfbGV2ZWwmIzM0OywKICAgICYjMzQ7enN0ZF9jcmVhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgenJhbSBjb21wcmVzc2lvbiBwYXJhbWV0ZXJzIGhhbmRsaW5nLiBJdCBhZGRzIGNhcGFiaWxpdGllcyBhbmQgdmFsaWRhdGlvbiBmb3IgY29tcHJlc3Npb24gbGV2ZWxzIGFuZCBkaWN0aW9uYXJ5IHN1cHBvcnQuIEl0IGFsc28gZml4ZXMgYSBtZW1vcnkgbGVhayBpbiBgY29tcF9wYXJhbXNfc3RvcmVgIGFuZCByZW1vdmVzIGEgcmVkdW5kYW50IHBhcmFtZXRlciByZWxlYXNlIGluIGB6c3RkX2NyZWF0ZWAuIFRoZXNlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc3lzZnMgYXR0cmlidXRlcyBsaWtlIGBhbGdvcml0aG1fcGFyYW1zYCwgYGNvbXBfYWxnb3JpdGhtYCwgYW5kIGByZWNvbXBfYWxnb3JpdGhtYC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WlJBTSYjMzQ7LAogICAgJiMzNDtaUkFNX01VTFRJX0NPTVAmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX0xaNCYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfTFo0SEMmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX1pTVEQmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EX0RFRkxBVEUmIzM0OywKICAgICYjMzQ7WlJBTV9CQUNLRU5EXzg0MiYjMzQ7LAogICAgJiMzNDtaUkFNX0JBQ0tFTkRfTFpPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWxnb3JpdGhtX3BhcmFtc19zdG9yZSYjMzQ7LAogICAgJiMzNDtjb21wX3BhcmFtc19zdG9yZSYjMzQ7LAogICAgJiMzNDtfX2NvbXBfYWxnb3JpdGhtX3N0b3JlJiMzNDssCiAgICAmIzM0O3pjb21wX2dldF9jYXBzJiMzNDssCiAgICAmIzM0O3pjb21wX3ZhbGlkYXRlX2xldmVsJiMzNDssCiAgICAmIzM0O3pzdGRfY3JlYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHpyYW0gY29tcHJlc3Npb24gcGFyYW1ldGVycyBoYW5kbGluZy4gSXQgYWRkcyBjYXBhYmlsaXRpZXMgYW5kIHZhbGlkYXRpb24gZm9yIGNvbXByZXNzaW9uIGxldmVscyBhbmQgZGljdGlvbmFyeSBzdXBwb3J0LiBJdCBhbHNvIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gYGNvbXBfcGFyYW1zX3N0b3JlYCBhbmQgcmVtb3ZlcyBhIHJlZHVuZGFudCBwYXJhbWV0ZXIgcmVsZWFzZSBpbiBgenN0ZF9jcmVhdGVgLiBUaGVzZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHN5c2ZzIGF0dHJpYnV0ZXMgbGlrZSBgYWxnb3JpdGhtX3BhcmFtc2AsIGBjb21wX2FsZ29yaXRobWAsIGFuZCBgcmVjb21wX2FsZ29yaXRobWAuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNToyNS44NTg5NjUxNDlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjU5MjM5MTYyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJaUkFNXCIsXG4gICAgXCJaUkFNX01VTFRJX0NPTVBcIixcbiAgICBcIlpSQU1fQkFDS0VORF9MWjRcIixcbiAgICBcIlpSQU1fQkFDS0VORF9MWjRIQ1wiLFxuICAgIFwiWlJBTV9CQUNLRU5EX1pTVERcIixcbiAgICBcIlpSQU1fQkFDS0VORF9ERUZMQVRFXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfODQyXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfTFpPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWxnb3JpdGhtX3BhcmFtc19zdG9yZVwiLFxuICAgIFwiY29tcF9wYXJhbXNfc3RvcmVcIixcbiAgICBcIl9fY29tcF9hbGdvcml0aG1fc3RvcmVcIixcbiAgICBcInpjb21wX2dldF9jYXBzXCIsXG4gICAgXCJ6Y29tcF92YWxpZGF0ZV9sZXZlbFwiLFxuICAgIFwienN0ZF9jcmVhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB6cmFtIGNvbXByZXNzaW9uIHBhcmFtZXRlcnMgaGFuZGxpbmcuIEl0IGFkZHMgY2FwYWJpbGl0aWVzIGFuZCB2YWxpZGF0aW9uIGZvciBjb21wcmVzc2lvbiBsZXZlbHMgYW5kIGRpY3Rpb25hcnkgc3VwcG9ydC4gSXQgYWxzbyBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBjb21wX3BhcmFtc19zdG9yZWAgYW5kIHJlbW92ZXMgYSByZWR1bmRhbnQgcGFyYW1ldGVyIHJlbGVhc2UgaW4gYHpzdGRfY3JlYXRlYC4gVGhlc2UgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzeXNmcyBhdHRyaWJ1dGVzIGxpa2UgYGFsZ29yaXRobV9wYXJhbXNgLCBgY29tcF9hbGdvcml0aG1gLCBhbmQgYHJlY29tcF9hbGdvcml0aG1gLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNToyNS44NTg5NzE1ODlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMTcxMTQ3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDM0YmY2NzcwYmFhODUyMDQ2N2ZlM2YxYWM0MzUxZjQyMWRjYzk2MzBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdW4gMjcgMDc6MjU6MjQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuY1xcbmluZGV4IDEwZDlkNWM2MGY1MzEzLi5kNzk2ZWJkYTFmYTBkNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuY1xcbisrKyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jXFxuQEAgLTU3LDUgKzU3LDYgQEAgY29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kXzg0MiA9IHtcXG4gXFx0LmRlc3Ryb3lfY3R4XFx0PSBkZXN0cm95Xzg0MixcXG4gXFx0LnNldHVwX3BhcmFtc1xcdD0gc2V0dXBfcGFyYW1zXzg0MixcXG4gXFx0LnJlbGVhc2VfcGFyYW1zXFx0PSByZWxlYXNlX3BhcmFtc184NDIsXFxuK1xcdC5jYXBzXFx0XFx0PSAwLFxcbiBcXHQubmFtZVxcdFxcdD0gXFxcIjg0MlxcXCIsXFxuIH07XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2RlZmxhdGUuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2RlZmxhdGUuY1xcbmluZGV4IGY5MmE1MmE3MjBkMWUyLi5jZWRjM2RhYWQzM2FmNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmNcXG5AQCAtMTQ0LDUgKzE0NCw4IEBAIGNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF9kZWZsYXRlID0ge1xcbiBcXHQuZGVzdHJveV9jdHhcXHQ9IGRlZmxhdGVfZGVzdHJveSxcXG4gXFx0LnNldHVwX3BhcmFtc1xcdD0gZGVmbGF0ZV9zZXR1cF9wYXJhbXMsXFxuIFxcdC5yZWxlYXNlX3BhcmFtc1xcdD0gZGVmbGF0ZV9yZWxlYXNlX3BhcmFtcyxcXG4rXFx0LmNhcHNcXHRcXHQ9IFpDT01QX0NBUF9MRVZFTCxcXG4rXFx0LmxldmVsX21pblxcdD0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OLFxcbitcXHQubGV2ZWxfbWF4XFx0PSBaX0JFU1RfQ09NUFJFU1NJT04sXFxuIFxcdC5uYW1lXFx0XFx0PSBcXFwiZGVmbGF0ZVxcXCIsXFxuIH07XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NC5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmNcXG5pbmRleCBjNDQ5ZDUxMWJhODZmZS4uYmQxZTVjYTRkMTM0MmIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuY1xcbkBAIC0xNDYsNSArMTQ2LDggQEAgY29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kX2x6NCA9IHtcXG4gXFx0LmRlc3Ryb3lfY3R4XFx0PSBsejRfZGVzdHJveSxcXG4gXFx0LnNldHVwX3BhcmFtc1xcdD0gbHo0X3NldHVwX3BhcmFtcyxcXG4gXFx0LnJlbGVhc2VfcGFyYW1zXFx0PSBsejRfcmVsZWFzZV9wYXJhbXMsXFxuK1xcdC5jYXBzXFx0XFx0PSBaQ09NUF9DQVBfRElDVCB8IFpDT01QX0NBUF9MRVZFTCxcXG4rXFx0LmxldmVsX21pblxcdD0gTFo0X0FDQ0VMRVJBVElPTl9ERUZBVUxULFxcbitcXHQubGV2ZWxfbWF4XFx0PSA2NTUzNSxcXG4gXFx0Lm5hbWVcXHRcXHQ9IFxcXCJsejRcXFwiLFxcbiB9O1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0aGMuY1xcbmluZGV4IGY2YTMzNmFjZmUyMDJlLi4wZTBkN2M2OGE3ZDQyMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejRoYy5jXFxuKysrIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0aGMuY1xcbkBAIC0xMjQsNSArMTI0LDggQEAgY29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kX2x6NGhjID0ge1xcbiBcXHQuZGVzdHJveV9jdHhcXHQ9IGx6NGhjX2Rlc3Ryb3ksXFxuIFxcdC5zZXR1cF9wYXJhbXNcXHQ9IGx6NGhjX3NldHVwX3BhcmFtcyxcXG4gXFx0LnJlbGVhc2VfcGFyYW1zXFx0PSBsejRoY19yZWxlYXNlX3BhcmFtcyxcXG4rXFx0LmNhcHNcXHRcXHQ9IFpDT01QX0NBUF9ESUNUIHwgWkNPTVBfQ0FQX0xFVkVMLFxcbitcXHQubGV2ZWxfbWluXFx0PSBMWjRIQ19NSU5fQ0xFVkVMLFxcbitcXHQubGV2ZWxfbWF4XFx0PSBMWjRIQ19NQVhfQ0xFVkVMLFxcbiBcXHQubmFtZVxcdFxcdD0gXFxcImx6NGhjXFxcIixcXG4gfTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uY1xcbmluZGV4IDRjOTA2YmVhYWU2YjMzLi45NjVmMDA3ZTJjYTg5OCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uY1xcbisrKyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6by5jXFxuQEAgLTU1LDUgKzU1LDYgQEAgY29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kX2x6byA9IHtcXG4gXFx0LmRlc3Ryb3lfY3R4XFx0PSBsem9fZGVzdHJveSxcXG4gXFx0LnNldHVwX3BhcmFtc1xcdD0gbHpvX3NldHVwX3BhcmFtcyxcXG4gXFx0LnJlbGVhc2VfcGFyYW1zXFx0PSBsem9fcmVsZWFzZV9wYXJhbXMsXFxuK1xcdC5jYXBzXFx0XFx0PSAwLFxcbiBcXHQubmFtZVxcdFxcdD0gXFxcImx6b1xcXCIsXFxuIH07XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6b3JsZS5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmNcXG5pbmRleCAxMDY0MGM5NmNiZmNhYS4uNzU3YjQ1OThiZTAzMDQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuY1xcbkBAIC01NSw1ICs1NSw2IEBAIGNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF9sem9ybGUgPSB7XFxuIFxcdC5kZXN0cm95X2N0eFxcdD0gbHpvcmxlX2Rlc3Ryb3ksXFxuIFxcdC5zZXR1cF9wYXJhbXNcXHQ9IGx6b3JsZV9zZXR1cF9wYXJhbXMsXFxuIFxcdC5yZWxlYXNlX3BhcmFtc1xcdD0gbHpvcmxlX3JlbGVhc2VfcGFyYW1zLFxcbitcXHQuY2Fwc1xcdFxcdD0gMCxcXG4gXFx0Lm5hbWVcXHRcXHQ9IFxcXCJsem8tcmxlXFxcIixcXG4gfTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jXFxuaW5kZXggZDAwYjU0ODA1NmRjMmUuLjBmYmQyNDYwODgzYTgyIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuY1xcbisrKyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuY1xcbkBAIC0xNjEsNyArMTYxLDYgQEAgc3RhdGljIGludCB6c3RkX2NyZWF0ZShzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMsIHN0cnVjdCB6Y29tcF9jdHggKmN0eClcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbiBlcnJvcjpcXG4tXFx0enN0ZF9yZWxlYXNlX3BhcmFtcyhwYXJhbXMpO1xcbiBcXHR6c3RkX2Rlc3Ryb3koY3R4KTtcXG4gXFx0cmV0dXJuIC1FSU5WQUw7XFxuIH1cXG5AQCAtMjEzLDUgKzIxMiw4IEBAIGNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF96c3RkID0ge1xcbiBcXHQuZGVzdHJveV9jdHhcXHQ9IHpzdGRfZGVzdHJveSxcXG4gXFx0LnNldHVwX3BhcmFtc1xcdD0genN0ZF9zZXR1cF9wYXJhbXMsXFxuIFxcdC5yZWxlYXNlX3BhcmFtc1xcdD0genN0ZF9yZWxlYXNlX3BhcmFtcyxcXG4rXFx0LmNhcHNcXHRcXHQ9IFpDT01QX0NBUF9ESUNUIHwgWkNPTVBfQ0FQX0xFVkVMLFxcbitcXHQubGV2ZWxfbWluXFx0PSAoaW50KS1aU1REX1RBUkdFVExFTkdUSF9NQVgsXFxuK1xcdC5sZXZlbF9tYXhcXHQ9IFpTVERfTUFYX0NMRVZFTCxcXG4gXFx0Lm5hbWVcXHRcXHQ9IFxcXCJ6c3RkXFxcIixcXG4gfTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuY1xcbmluZGV4IDk3NGM0NjkxODg3ZTZmLi4xNWRlMjhiNTBkNDI3ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuY1xcbisrKyBiL2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jXFxuQEAgLTksNiArOSw5IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9jcHVob3RwbHVnLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC92bWFsbG9jLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zeXNmcy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbHo0LmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC96bGliLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC96c3RkLmhcXHUwMDNlXFxuIFxcbiAjaW5jbHVkZSBcXFwiemNvbXAuaFxcXCJcXG4gXFxuQEAgLTk0LDYgKzk3LDI2IEBAIGNvbnN0IGNoYXIgKnpjb21wX2xvb2t1cF9iYWNrZW5kX25hbWUoY29uc3QgY2hhciAqY29tcClcXG4gXFx0cmV0dXJuIE5VTEw7XFxuIH1cXG4gXFxuK3Vuc2lnbmVkIGludCB6Y29tcF9nZXRfY2Fwcyhjb25zdCBjaGFyICpjb21wKVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgKmJhY2tlbmQgPSBsb29rdXBfYmFja2VuZF9vcHMoY29tcCk7XFxuK1xcbitcXHRyZXR1cm4gYmFja2VuZCA/IGJhY2tlbmQtXFx1MDAzZWNhcHMgOiAwO1xcbit9XFxuK1xcbitpbnQgemNvbXBfdmFsaWRhdGVfbGV2ZWwoY29uc3QgY2hhciAqY29tcCwgczMyIGxldmVsKVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgKmJhY2tlbmQgPSBsb29rdXBfYmFja2VuZF9vcHMoY29tcCk7XFxuK1xcbitcXHRpZiAoIWJhY2tlbmQpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRpZiAoIShiYWNrZW5kLVxcdTAwM2VjYXBzIFxcdTAwMjYgWkNPTVBfQ0FQX0xFVkVMKSlcXG4rXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbitcXHRpZiAobGV2ZWwgXFx1MDAzYyBiYWNrZW5kLVxcdTAwM2VsZXZlbF9taW4gfHwgbGV2ZWwgXFx1MDAzZSBiYWNrZW5kLVxcdTAwM2VsZXZlbF9tYXgpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRyZXR1cm4gMDtcXG4rfVxcbitcXG4gLyogc2hvdyBhdmFpbGFibGUgY29tcHJlc3NvcnMgKi9cXG4gc3NpemVfdCB6Y29tcF9hdmFpbGFibGVfc2hvdyhjb25zdCBjaGFyICpjb21wLCBjaGFyICpidWYsIHNzaXplX3QgYXQpXFxuIHtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmggYi9kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuaFxcbmluZGV4IDgxYTBmM2Y2ZmY0ODcxLi4xNmY4MTJhOTRjNjdkNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuaFxcbisrKyBiL2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oXFxuQEAgLTcsNiArNyw5IEBAXFxuIFxcbiAjZGVmaW5lIFpDT01QX1BBUkFNX05PVF9TRVRcXHRJTlRfTUlOXFxuIFxcbisjZGVmaW5lIFpDT01QX0NBUF9ESUNUXFx0XFx0QklUKDApXFx0LyogZGljdGlvbmFyeSBzdXBwb3J0ICovXFxuKyNkZWZpbmUgWkNPTVBfQ0FQX0xFVkVMXFx0XFx0QklUKDEpXFx0LyogYWRqdXN0YWJsZSBjb21wcmVzc2lvbiBsZXZlbCAqL1xcbitcXG4gc3RydWN0IGRlZmxhdGVfcGFyYW1zIHtcXG4gXFx0czMyIHdpbmJpdHM7XFxuIH07XFxuQEAgLTY2LDYgKzY5LDkgQEAgc3RydWN0IHpjb21wX29wcyB7XFxuIFxcdGludCAoKnNldHVwX3BhcmFtcykoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKTtcXG4gXFx0dm9pZCAoKnJlbGVhc2VfcGFyYW1zKShzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMpO1xcbiBcXG4rXFx0dW5zaWduZWQgaW50IGNhcHM7XFxuK1xcdHMzMiBsZXZlbF9taW47XFxuK1xcdHMzMiBsZXZlbF9tYXg7XFxuIFxcdGNvbnN0IGNoYXIgKm5hbWU7XFxuIH07XFxuIFxcbkBAIC04MSw2ICs4Nyw4IEBAIGludCB6Y29tcF9jcHVfdXBfcHJlcGFyZSh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9kZSk7XFxuIGludCB6Y29tcF9jcHVfZGVhZCh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9kZSk7XFxuIHNzaXplX3QgemNvbXBfYXZhaWxhYmxlX3Nob3coY29uc3QgY2hhciAqY29tcCwgY2hhciAqYnVmLCBzc2l6ZV90IGF0KTtcXG4gY29uc3QgY2hhciAqemNvbXBfbG9va3VwX2JhY2tlbmRfbmFtZShjb25zdCBjaGFyICpjb21wKTtcXG4rdW5zaWduZWQgaW50IHpjb21wX2dldF9jYXBzKGNvbnN0IGNoYXIgKmNvbXApO1xcbitpbnQgemNvbXBfdmFsaWRhdGVfbGV2ZWwoY29uc3QgY2hhciAqY29tcCwgczMyIGxldmVsKTtcXG4gXFxuIHN0cnVjdCB6Y29tcCAqemNvbXBfY3JlYXRlKGNvbnN0IGNoYXIgKmFsZywgc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKTtcXG4gdm9pZCB6Y29tcF9kZXN0cm95KHN0cnVjdCB6Y29tcCAqY29tcCk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jIGIvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcXG5pbmRleCBhY2U2NWM1ODYwNzJiYS4uNmI0NzU4NmU4NzE4YzggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1xcbkBAIC01Nyw2ICs1Nyw3IEBAIHN0YXRpYyBzaXplX3QgaHVnZV9jbGFzc19zaXplO1xcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zIHpyYW1fZGV2b3BzO1xcbiBcXG4gc3RhdGljIHZvaWQgc2xvdF9mcmVlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgaW5kZXgpO1xcbitzdGF0aWMgdm9pZCBjb21wX3BhcmFtc19yZXNldChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8pO1xcbiAjZGVmaW5lIHNsb3RfZGVwX21hcCh6cmFtLCBpbmRleCkgKFxcdTAwMjYoenJhbSktXFx1MDAzZXRhYmxlWyhpbmRleCldLmRlcF9tYXApXFxuIFxcbiBzdGF0aWMgdm9pZCBzbG90X2xvY2tfaW5pdChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIGluZGV4KVxcbkBAIC0xNjgxLDYgKzE2ODIsNyBAQCBzdGF0aWMgaW50IF9fY29tcF9hbGdvcml0aG1fc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBjb25zdCBjaGFyICpidWYpXFxuIFxcdH1cXG4gXFxuIFxcdGNvbXBfYWxnb3JpdGhtX3NldCh6cmFtLCBwcmlvLCBhbGcpO1xcbitcXHRjb21wX3BhcmFtc19yZXNldCh6cmFtLCBwcmlvKTtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gXFxuQEAgLTE2OTksMjEgKzE3MDEsMjQgQEAgc3RhdGljIGludCBjb21wX3BhcmFtc19zdG9yZShzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIHMzMiBsZXZlbCxcXG4gXFx0XFx0XFx0ICAgICBjb25zdCBjaGFyICpkaWN0X3BhdGgsXFxuIFxcdFxcdFxcdCAgICAgc3RydWN0IGRlZmxhdGVfcGFyYW1zICpkZWZsYXRlX3BhcmFtcylcXG4ge1xcbitcXHR2b2lkICpuZXdfZGljdCA9IE5VTEw7XFxuIFxcdHNzaXplX3Qgc3ogPSAwO1xcbiBcXG4tXFx0Y29tcF9wYXJhbXNfcmVzZXQoenJhbSwgcHJpbyk7XFxuLVxcbiBcXHRpZiAoZGljdF9wYXRoKSB7XFxuLVxcdFxcdHN6ID0ga2VybmVsX3JlYWRfZmlsZV9mcm9tX3BhdGgoZGljdF9wYXRoLCAwLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2enJhbS1cXHUwMDNlcGFyYW1zW3ByaW9dLmRpY3QsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdElOVF9NQVgsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdE5VTEwsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdFJFQURJTkdfUE9MSUNZKTtcXG4tXFx0XFx0aWYgKHN6IFxcdTAwM2MgMClcXG4rXFx0XFx0c3ogPSBrZXJuZWxfcmVhZF9maWxlX2Zyb21fcGF0aChkaWN0X3BhdGgsIDAsIFxcdTAwMjZuZXdfZGljdCxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0SU5UX01BWCwgTlVMTCwgUkVBRElOR19QT0xJQ1kpO1xcbitcXHRcXHRpZiAoc3ogXFx1MDAzYyAwKSB7XFxuK1xcdFxcdFxcdHZmcmVlKG5ld19kaWN0KTtcXG4rXFx0XFx0XFx0cmV0dXJuIHN6O1xcbitcXHRcXHR9IGVsc2UgaWYgKHN6ID09IDApIHtcXG4rXFx0XFx0XFx0dmZyZWUobmV3X2RpY3QpO1xcbiBcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcbitcXHRjb21wX3BhcmFtc19yZXNldCh6cmFtLCBwcmlvKTtcXG4gXFx0enJhbS1cXHUwMDNlcGFyYW1zW3ByaW9dLmRpY3Rfc3ogPSBzejtcXG4rXFx0enJhbS1cXHUwMDNlcGFyYW1zW3ByaW9dLmRpY3QgPSBuZXdfZGljdDtcXG4gXFx0enJhbS1cXHUwMDNlcGFyYW1zW3ByaW9dLmxldmVsID0gbGV2ZWw7XFxuIFxcdHpyYW0tXFx1MDAzZXBhcmFtc1twcmlvXS5kZWZsYXRlLndpbmJpdHMgPSBkZWZsYXRlX3BhcmFtcy1cXHUwMDNld2luYml0cztcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTE3OTQsNiArMTc5OSwxOSBAQCBzdGF0aWMgc3NpemVfdCBhbGdvcml0aG1fcGFyYW1zX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdH1cXG4gXFxuK1xcdGlmICh6cmFtLVxcdTAwM2Vjb21wX2FsZ3NbcHJpb10pIHtcXG4rXFx0XFx0dW5zaWduZWQgaW50IGNhcHMgPSB6Y29tcF9nZXRfY2Fwcyh6cmFtLVxcdTAwM2Vjb21wX2FsZ3NbcHJpb10pO1xcbitcXG4rXFx0XFx0aWYgKGRpY3RfcGF0aCBcXHUwMDI2XFx1MDAyNiAhKGNhcHMgXFx1MDAyNiBaQ09NUF9DQVBfRElDVCkpXFxuK1xcdFxcdFxcdHJldHVybiAtRU9QTk9UU1VQUDtcXG4rXFxuK1xcdFxcdGlmIChsZXZlbCAhPSBaQ09NUF9QQVJBTV9OT1RfU0VUKSB7XFxuK1xcdFxcdFxcdHJldCA9IHpjb21wX3ZhbGlkYXRlX2xldmVsKHpyYW0tXFx1MDAzZWNvbXBfYWxnc1twcmlvXSwgbGV2ZWwpO1xcbitcXHRcXHRcXHRpZiAocmV0KVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuIFxcdHJldCA9IGNvbXBfcGFyYW1zX3N0b3JlKHpyYW0sIHByaW8sIGxldmVsLCBkaWN0X3BhdGgsIFxcdTAwMjZkZWZsYXRlX3BhcmFtcyk7XFxuIFxcdHJldHVybiByZXQgPyByZXQgOiBsZW47XFxuIH1cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC96c3RkX2xpYi5oIGIvaW5jbHVkZS9saW51eC96c3RkX2xpYi5oXFxuaW5kZXggZTI5NWQ0MTI1ZGRlODQuLmY0YjI2ODQ0ZTUzYWRlIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgvenN0ZF9saWIuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvenN0ZF9saWIuaFxcbkBAIC0xMjQxLDYgKzEyNDEsNyBAQCBaU1RETElCX0FQSSBzaXplX3QgWlNURF9zaXplb2ZfRERpY3QoY29uc3QgWlNURF9ERGljdCogZGRpY3QpO1xcbiAjZGVmaW5lIFpTVERfU0VBUkNITE9HX01JTiAgICAgICAgMVxcbiAjZGVmaW5lIFpTVERfTUlOTUFUQ0hfTUFYICAgICAgICAgNyAgIC8qIG9ubHkgZm9yIFpTVERfZmFzdCwgb3RoZXIgc3RyYXRlZ2llcyBhcmUgbGltaXRlZCB0byA2ICovXFxuICNkZWZpbmUgWlNURF9NSU5NQVRDSF9NSU4gICAgICAgICAzICAgLyogb25seSBmb3IgWlNURF9idG9wdCssIGZhc3RlciBzdHJhdGVnaWVzIGFyZSBsaW1pdGVkIHRvIDQgKi9cXG4rI2RlZmluZSBaU1REX01BWF9DTEVWRUxcXHRcXHQyMlxcbiAjZGVmaW5lIFpTVERfVEFSR0VUTEVOR1RIX01BWCAgICBaU1REX0JMT0NLU0laRV9NQVhcXG4gI2RlZmluZSBaU1REX1RBUkdFVExFTkdUSF9NSU4gICAgIDAgICAvKiBub3RlIDogY29tcGFyaW5nIHRoaXMgY29uc3RhbnQgdG8gYW4gdW5zaWduZWQgcmVzdWx0cyBpbiBhIHRhdXRvbG9naWNhbCB0ZXN0ICovXFxuICNkZWZpbmUgWlNURF9TVFJBVEVHWV9NSU4gICAgICAgIFpTVERfZmFzdFxcbmRpZmYgLS1naXQgYS9saWIvenN0ZC9jb21wcmVzcy9jbGV2ZWxzLmggYi9saWIvenN0ZC9jb21wcmVzcy9jbGV2ZWxzLmhcXG5pbmRleCA2YWI4YmU2NTMyZWZjMC4uZGIzYjI3NWI1MDJlNmMgMTAwNjQ0XFxuLS0tIGEvbGliL3pzdGQvY29tcHJlc3MvY2xldmVscy5oXFxuKysrIGIvbGliL3pzdGQvY29tcHJlc3MvY2xldmVscy5oXFxuQEAgLTE3LDcgKzE3LDYgQEBcXG4gXFxuIC8qLT09PT09ICBQcmUtZGVmaW5lZCBjb21wcmVzc2lvbiBsZXZlbHMgID09PT09LSovXFxuIFxcbi0jZGVmaW5lIFpTVERfTUFYX0NMRVZFTCAgICAgMjJcXG4gXFxuIF9fYXR0cmlidXRlX18oKF9fdW51c2VkX18pKVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6MjU6MjYuMjgxNDkyODY4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjE2OTg1MzczOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJaUkFNXCIsXG4gICAgXCJaUkFNX01VTFRJX0NPTVBcIixcbiAgICBcIlpSQU1fQkFDS0VORF9MWjRcIixcbiAgICBcIlpSQU1fQkFDS0VORF9MWjRIQ1wiLFxuICAgIFwiWlJBTV9CQUNLRU5EX1pTVERcIixcbiAgICBcIlpSQU1fQkFDS0VORF9ERUZMQVRFXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfODQyXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfTFpPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWxnb3JpdGhtX3BhcmFtc19zdG9yZVwiLFxuICAgIFwiY29tcF9wYXJhbXNfc3RvcmVcIixcbiAgICBcIl9fY29tcF9hbGdvcml0aG1fc3RvcmVcIixcbiAgICBcInpjb21wX2dldF9jYXBzXCIsXG4gICAgXCJ6Y29tcF92YWxpZGF0ZV9sZXZlbFwiLFxuICAgIFwienN0ZF9jcmVhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB6cmFtIGNvbXByZXNzaW9uIHBhcmFtZXRlcnMgaGFuZGxpbmcuIEl0IGFkZHMgY2FwYWJpbGl0aWVzIGFuZCB2YWxpZGF0aW9uIGZvciBjb21wcmVzc2lvbiBsZXZlbHMgYW5kIGRpY3Rpb25hcnkgc3VwcG9ydC4gSXQgYWxzbyBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBjb21wX3BhcmFtc19zdG9yZWAgYW5kIHJlbW92ZXMgYSByZWR1bmRhbnQgcGFyYW1ldGVyIHJlbGVhc2UgaW4gYHpzdGRfY3JlYXRlYC4gVGhlc2UgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzeXNmcyBhdHRyaWJ1dGVzIGxpa2UgYGFsZ29yaXRobV9wYXJhbXNgLCBgY29tcF9hbGdvcml0aG1gLCBhbmQgYHJlY29tcF9hbGdvcml0aG1gLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDM0YmY2NzcwYmFhODUyMDQ2N2ZlM2YxYWM0MzUxZjQyMWRjYzk2MzBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1biAyNyAwNzoyNToyNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfODQyLmNcbmluZGV4IDEwZDlkNWM2MGY1MzEzLi5kNzk2ZWJkYTFmYTBkNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kXzg0Mi5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF84NDIuY1xuQEAgLTU3LDUgKzU3LDYgQEAgY29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kXzg0MiA9IHtcbiBcdC5kZXN0cm95X2N0eFx0PSBkZXN0cm95Xzg0MixcbiBcdC5zZXR1cF9wYXJhbXNcdD0gc2V0dXBfcGFyYW1zXzg0MixcbiBcdC5yZWxlYXNlX3BhcmFtc1x0PSByZWxlYXNlX3BhcmFtc184NDIsXG4rXHQuY2Fwc1x0XHQ9IDAsXG4gXHQubmFtZVx0XHQ9IFwiODQyXCIsXG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9kZWZsYXRlLmNcbmluZGV4IGY5MmE1MmE3MjBkMWUyLi5jZWRjM2RhYWQzM2FmNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2RlZmxhdGUuY1xuKysrIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfZGVmbGF0ZS5jXG5AQCAtMTQ0LDUgKzE0NCw4IEBAIGNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF9kZWZsYXRlID0ge1xuIFx0LmRlc3Ryb3lfY3R4XHQ9IGRlZmxhdGVfZGVzdHJveSxcbiBcdC5zZXR1cF9wYXJhbXNcdD0gZGVmbGF0ZV9zZXR1cF9wYXJhbXMsXG4gXHQucmVsZWFzZV9wYXJhbXNcdD0gZGVmbGF0ZV9yZWxlYXNlX3BhcmFtcyxcbitcdC5jYXBzXHRcdD0gWkNPTVBfQ0FQX0xFVkVMLFxuK1x0LmxldmVsX21pblx0PSBaX0RFRkFVTFRfQ09NUFJFU1NJT04sXG4rXHQubGV2ZWxfbWF4XHQ9IFpfQkVTVF9DT01QUkVTU0lPTixcbiBcdC5uYW1lXHRcdD0gXCJkZWZsYXRlXCIsXG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NC5jXG5pbmRleCBjNDQ5ZDUxMWJhODZmZS4uYmQxZTVjYTRkMTM0MmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sejQuY1xuKysrIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0LmNcbkBAIC0xNDYsNSArMTQ2LDggQEAgY29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kX2x6NCA9IHtcbiBcdC5kZXN0cm95X2N0eFx0PSBsejRfZGVzdHJveSxcbiBcdC5zZXR1cF9wYXJhbXNcdD0gbHo0X3NldHVwX3BhcmFtcyxcbiBcdC5yZWxlYXNlX3BhcmFtc1x0PSBsejRfcmVsZWFzZV9wYXJhbXMsXG4rXHQuY2Fwc1x0XHQ9IFpDT01QX0NBUF9ESUNUIHwgWkNPTVBfQ0FQX0xFVkVMLFxuK1x0LmxldmVsX21pblx0PSBMWjRfQUNDRUxFUkFUSU9OX0RFRkFVTFQsXG4rXHQubGV2ZWxfbWF4XHQ9IDY1NTM1LFxuIFx0Lm5hbWVcdFx0PSBcImx6NFwiLFxuIH07XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHo0aGMuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmNcbmluZGV4IGY2YTMzNmFjZmUyMDJlLi4wZTBkN2M2OGE3ZDQyMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmNcbisrKyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6NGhjLmNcbkBAIC0xMjQsNSArMTI0LDggQEAgY29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kX2x6NGhjID0ge1xuIFx0LmRlc3Ryb3lfY3R4XHQ9IGx6NGhjX2Rlc3Ryb3ksXG4gXHQuc2V0dXBfcGFyYW1zXHQ9IGx6NGhjX3NldHVwX3BhcmFtcyxcbiBcdC5yZWxlYXNlX3BhcmFtc1x0PSBsejRoY19yZWxlYXNlX3BhcmFtcyxcbitcdC5jYXBzXHRcdD0gWkNPTVBfQ0FQX0RJQ1QgfCBaQ09NUF9DQVBfTEVWRUwsXG4rXHQubGV2ZWxfbWluXHQ9IExaNEhDX01JTl9DTEVWRUwsXG4rXHQubGV2ZWxfbWF4XHQ9IExaNEhDX01BWF9DTEVWRUwsXG4gXHQubmFtZVx0XHQ9IFwibHo0aGNcIixcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6by5jIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvLmNcbmluZGV4IDRjOTA2YmVhYWU2YjMzLi45NjVmMDA3ZTJjYTg5OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6by5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem8uY1xuQEAgLTU1LDUgKzU1LDYgQEAgY29uc3Qgc3RydWN0IHpjb21wX29wcyBiYWNrZW5kX2x6byA9IHtcbiBcdC5kZXN0cm95X2N0eFx0PSBsem9fZGVzdHJveSxcbiBcdC5zZXR1cF9wYXJhbXNcdD0gbHpvX3NldHVwX3BhcmFtcyxcbiBcdC5yZWxlYXNlX3BhcmFtc1x0PSBsem9fcmVsZWFzZV9wYXJhbXMsXG4rXHQuY2Fwc1x0XHQ9IDAsXG4gXHQubmFtZVx0XHQ9IFwibHpvXCIsXG4gfTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX2x6b3JsZS5jXG5pbmRleCAxMDY0MGM5NmNiZmNhYS4uNzU3YjQ1OThiZTAzMDQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF9sem9ybGUuY1xuKysrIGIvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfbHpvcmxlLmNcbkBAIC01NSw1ICs1NSw2IEBAIGNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF9sem9ybGUgPSB7XG4gXHQuZGVzdHJveV9jdHhcdD0gbHpvcmxlX2Rlc3Ryb3ksXG4gXHQuc2V0dXBfcGFyYW1zXHQ9IGx6b3JsZV9zZXR1cF9wYXJhbXMsXG4gXHQucmVsZWFzZV9wYXJhbXNcdD0gbHpvcmxlX3JlbGVhc2VfcGFyYW1zLFxuK1x0LmNhcHNcdFx0PSAwLFxuIFx0Lm5hbWVcdFx0PSBcImx6by1ybGVcIixcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYyBiL2RyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuY1xuaW5kZXggZDAwYjU0ODA1NmRjMmUuLjBmYmQyNDYwODgzYTgyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmNcbkBAIC0xNjEsNyArMTYxLDYgQEAgc3RhdGljIGludCB6c3RkX2NyZWF0ZShzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMsIHN0cnVjdCB6Y29tcF9jdHggKmN0eClcbiBcdHJldHVybiAwO1xuIFxuIGVycm9yOlxuLVx0enN0ZF9yZWxlYXNlX3BhcmFtcyhwYXJhbXMpO1xuIFx0enN0ZF9kZXN0cm95KGN0eCk7XG4gXHRyZXR1cm4gLUVJTlZBTDtcbiB9XG5AQCAtMjEzLDUgKzIxMiw4IEBAIGNvbnN0IHN0cnVjdCB6Y29tcF9vcHMgYmFja2VuZF96c3RkID0ge1xuIFx0LmRlc3Ryb3lfY3R4XHQ9IHpzdGRfZGVzdHJveSxcbiBcdC5zZXR1cF9wYXJhbXNcdD0genN0ZF9zZXR1cF9wYXJhbXMsXG4gXHQucmVsZWFzZV9wYXJhbXNcdD0genN0ZF9yZWxlYXNlX3BhcmFtcyxcbitcdC5jYXBzXHRcdD0gWkNPTVBfQ0FQX0RJQ1QgfCBaQ09NUF9DQVBfTEVWRUwsXG4rXHQubGV2ZWxfbWluXHQ9IChpbnQpLVpTVERfVEFSR0VUTEVOR1RIX01BWCxcbitcdC5sZXZlbF9tYXhcdD0gWlNURF9NQVhfQ0xFVkVMLFxuIFx0Lm5hbWVcdFx0PSBcInpzdGRcIixcbiB9O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jIGIvZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmNcbmluZGV4IDk3NGM0NjkxODg3ZTZmLi4xNWRlMjhiNTBkNDI3ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuY1xuQEAgLTksNiArOSw5IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvY3B1aG90cGx1Zy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdm1hbGxvYy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3lzZnMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2x6NC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvemxpYi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvenN0ZC5oXHUwMDNlXG4gXG4gI2luY2x1ZGUgXCJ6Y29tcC5oXCJcbiBcbkBAIC05NCw2ICs5NywyNiBAQCBjb25zdCBjaGFyICp6Y29tcF9sb29rdXBfYmFja2VuZF9uYW1lKGNvbnN0IGNoYXIgKmNvbXApXG4gXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4rdW5zaWduZWQgaW50IHpjb21wX2dldF9jYXBzKGNvbnN0IGNoYXIgKmNvbXApXG4re1xuK1x0Y29uc3Qgc3RydWN0IHpjb21wX29wcyAqYmFja2VuZCA9IGxvb2t1cF9iYWNrZW5kX29wcyhjb21wKTtcbitcbitcdHJldHVybiBiYWNrZW5kID8gYmFja2VuZC1cdTAwM2VjYXBzIDogMDtcbit9XG4rXG4raW50IHpjb21wX3ZhbGlkYXRlX2xldmVsKGNvbnN0IGNoYXIgKmNvbXAsIHMzMiBsZXZlbClcbit7XG4rXHRjb25zdCBzdHJ1Y3QgemNvbXBfb3BzICpiYWNrZW5kID0gbG9va3VwX2JhY2tlbmRfb3BzKGNvbXApO1xuK1xuK1x0aWYgKCFiYWNrZW5kKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdGlmICghKGJhY2tlbmQtXHUwMDNlY2FwcyBcdTAwMjYgWkNPTVBfQ0FQX0xFVkVMKSlcbitcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1x0aWYgKGxldmVsIFx1MDAzYyBiYWNrZW5kLVx1MDAzZWxldmVsX21pbiB8fCBsZXZlbCBcdTAwM2UgYmFja2VuZC1cdTAwM2VsZXZlbF9tYXgpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuIC8qIHNob3cgYXZhaWxhYmxlIGNvbXByZXNzb3JzICovXG4gc3NpemVfdCB6Y29tcF9hdmFpbGFibGVfc2hvdyhjb25zdCBjaGFyICpjb21wLCBjaGFyICpidWYsIHNzaXplX3QgYXQpXG4ge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oIGIvZHJpdmVycy9ibG9jay96cmFtL3pjb21wLmhcbmluZGV4IDgxYTBmM2Y2ZmY0ODcxLi4xNmY4MTJhOTRjNjdkNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svenJhbS96Y29tcC5oXG4rKysgYi9kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuaFxuQEAgLTcsNiArNyw5IEBAXG4gXG4gI2RlZmluZSBaQ09NUF9QQVJBTV9OT1RfU0VUXHRJTlRfTUlOXG4gXG4rI2RlZmluZSBaQ09NUF9DQVBfRElDVFx0XHRCSVQoMClcdC8qIGRpY3Rpb25hcnkgc3VwcG9ydCAqL1xuKyNkZWZpbmUgWkNPTVBfQ0FQX0xFVkVMXHRcdEJJVCgxKVx0LyogYWRqdXN0YWJsZSBjb21wcmVzc2lvbiBsZXZlbCAqL1xuK1xuIHN0cnVjdCBkZWZsYXRlX3BhcmFtcyB7XG4gXHRzMzIgd2luYml0cztcbiB9O1xuQEAgLTY2LDYgKzY5LDkgQEAgc3RydWN0IHpjb21wX29wcyB7XG4gXHRpbnQgKCpzZXR1cF9wYXJhbXMpKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcyk7XG4gXHR2b2lkICgqcmVsZWFzZV9wYXJhbXMpKHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcyk7XG4gXG4rXHR1bnNpZ25lZCBpbnQgY2FwcztcbitcdHMzMiBsZXZlbF9taW47XG4rXHRzMzIgbGV2ZWxfbWF4O1xuIFx0Y29uc3QgY2hhciAqbmFtZTtcbiB9O1xuIFxuQEAgLTgxLDYgKzg3LDggQEAgaW50IHpjb21wX2NwdV91cF9wcmVwYXJlKHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCBobGlzdF9ub2RlICpub2RlKTtcbiBpbnQgemNvbXBfY3B1X2RlYWQodW5zaWduZWQgaW50IGNwdSwgc3RydWN0IGhsaXN0X25vZGUgKm5vZGUpO1xuIHNzaXplX3QgemNvbXBfYXZhaWxhYmxlX3Nob3coY29uc3QgY2hhciAqY29tcCwgY2hhciAqYnVmLCBzc2l6ZV90IGF0KTtcbiBjb25zdCBjaGFyICp6Y29tcF9sb29rdXBfYmFja2VuZF9uYW1lKGNvbnN0IGNoYXIgKmNvbXApO1xuK3Vuc2lnbmVkIGludCB6Y29tcF9nZXRfY2Fwcyhjb25zdCBjaGFyICpjb21wKTtcbitpbnQgemNvbXBfdmFsaWRhdGVfbGV2ZWwoY29uc3QgY2hhciAqY29tcCwgczMyIGxldmVsKTtcbiBcbiBzdHJ1Y3QgemNvbXAgKnpjb21wX2NyZWF0ZShjb25zdCBjaGFyICphbGcsIHN0cnVjdCB6Y29tcF9wYXJhbXMgKnBhcmFtcyk7XG4gdm9pZCB6Y29tcF9kZXN0cm95KHN0cnVjdCB6Y29tcCAqY29tcCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMgYi9kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1xuaW5kZXggYWNlNjVjNTg2MDcyYmEuLjZiNDc1ODZlODcxOGM4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcbisrKyBiL2RyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jXG5AQCAtNTcsNiArNTcsNyBAQCBzdGF0aWMgc2l6ZV90IGh1Z2VfY2xhc3Nfc2l6ZTtcbiBzdGF0aWMgY29uc3Qgc3RydWN0IGJsb2NrX2RldmljZV9vcGVyYXRpb25zIHpyYW1fZGV2b3BzO1xuIFxuIHN0YXRpYyB2b2lkIHNsb3RfZnJlZShzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIGluZGV4KTtcbitzdGF0aWMgdm9pZCBjb21wX3BhcmFtc19yZXNldChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8pO1xuICNkZWZpbmUgc2xvdF9kZXBfbWFwKHpyYW0sIGluZGV4KSAoXHUwMDI2KHpyYW0pLVx1MDAzZXRhYmxlWyhpbmRleCldLmRlcF9tYXApXG4gXG4gc3RhdGljIHZvaWQgc2xvdF9sb2NrX2luaXQoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBpbmRleClcbkBAIC0xNjgxLDYgKzE2ODIsNyBAQCBzdGF0aWMgaW50IF9fY29tcF9hbGdvcml0aG1fc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBjb25zdCBjaGFyICpidWYpXG4gXHR9XG4gXG4gXHRjb21wX2FsZ29yaXRobV9zZXQoenJhbSwgcHJpbywgYWxnKTtcbitcdGNvbXBfcGFyYW1zX3Jlc2V0KHpyYW0sIHByaW8pO1xuIFx0cmV0dXJuIDA7XG4gfVxuIFxuQEAgLTE2OTksMjEgKzE3MDEsMjQgQEAgc3RhdGljIGludCBjb21wX3BhcmFtc19zdG9yZShzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIHMzMiBsZXZlbCxcbiBcdFx0XHQgICAgIGNvbnN0IGNoYXIgKmRpY3RfcGF0aCxcbiBcdFx0XHQgICAgIHN0cnVjdCBkZWZsYXRlX3BhcmFtcyAqZGVmbGF0ZV9wYXJhbXMpXG4ge1xuK1x0dm9pZCAqbmV3X2RpY3QgPSBOVUxMO1xuIFx0c3NpemVfdCBzeiA9IDA7XG4gXG4tXHRjb21wX3BhcmFtc19yZXNldCh6cmFtLCBwcmlvKTtcbi1cbiBcdGlmIChkaWN0X3BhdGgpIHtcbi1cdFx0c3ogPSBrZXJuZWxfcmVhZF9maWxlX2Zyb21fcGF0aChkaWN0X3BhdGgsIDAsXG4tXHRcdFx0XHRcdFx0XHUwMDI2enJhbS1cdTAwM2VwYXJhbXNbcHJpb10uZGljdCxcbi1cdFx0XHRcdFx0XHRJTlRfTUFYLFxuLVx0XHRcdFx0XHRcdE5VTEwsXG4tXHRcdFx0XHRcdFx0UkVBRElOR19QT0xJQ1kpO1xuLVx0XHRpZiAoc3ogXHUwMDNjIDApXG4rXHRcdHN6ID0ga2VybmVsX3JlYWRfZmlsZV9mcm9tX3BhdGgoZGljdF9wYXRoLCAwLCBcdTAwMjZuZXdfZGljdCxcbitcdFx0XHRcdFx0XHRJTlRfTUFYLCBOVUxMLCBSRUFESU5HX1BPTElDWSk7XG4rXHRcdGlmIChzeiBcdTAwM2MgMCkge1xuK1x0XHRcdHZmcmVlKG5ld19kaWN0KTtcbitcdFx0XHRyZXR1cm4gc3o7XG4rXHRcdH0gZWxzZSBpZiAoc3ogPT0gMCkge1xuK1x0XHRcdHZmcmVlKG5ld19kaWN0KTtcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0fVxuIFx0fVxuIFxuK1x0Y29tcF9wYXJhbXNfcmVzZXQoenJhbSwgcHJpbyk7XG4gXHR6cmFtLVx1MDAzZXBhcmFtc1twcmlvXS5kaWN0X3N6ID0gc3o7XG4rXHR6cmFtLVx1MDAzZXBhcmFtc1twcmlvXS5kaWN0ID0gbmV3X2RpY3Q7XG4gXHR6cmFtLVx1MDAzZXBhcmFtc1twcmlvXS5sZXZlbCA9IGxldmVsO1xuIFx0enJhbS1cdTAwM2VwYXJhbXNbcHJpb10uZGVmbGF0ZS53aW5iaXRzID0gZGVmbGF0ZV9wYXJhbXMtXHUwMDNld2luYml0cztcbiBcdHJldHVybiAwO1xuQEAgLTE3OTQsNiArMTc5OSwxOSBAQCBzdGF0aWMgc3NpemVfdCBhbGdvcml0aG1fcGFyYW1zX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbitcdGlmICh6cmFtLVx1MDAzZWNvbXBfYWxnc1twcmlvXSkge1xuK1x0XHR1bnNpZ25lZCBpbnQgY2FwcyA9IHpjb21wX2dldF9jYXBzKHpyYW0tXHUwMDNlY29tcF9hbGdzW3ByaW9dKTtcbitcbitcdFx0aWYgKGRpY3RfcGF0aCBcdTAwMjZcdTAwMjYgIShjYXBzIFx1MDAyNiBaQ09NUF9DQVBfRElDVCkpXG4rXHRcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuK1xuK1x0XHRpZiAobGV2ZWwgIT0gWkNPTVBfUEFSQU1fTk9UX1NFVCkge1xuK1x0XHRcdHJldCA9IHpjb21wX3ZhbGlkYXRlX2xldmVsKHpyYW0tXHUwMDNlY29tcF9hbGdzW3ByaW9dLCBsZXZlbCk7XG4rXHRcdFx0aWYgKHJldClcbitcdFx0XHRcdHJldHVybiByZXQ7XG4rXHRcdH1cbitcdH1cbitcbiBcdHJldCA9IGNvbXBfcGFyYW1zX3N0b3JlKHpyYW0sIHByaW8sIGxldmVsLCBkaWN0X3BhdGgsIFx1MDAyNmRlZmxhdGVfcGFyYW1zKTtcbiBcdHJldHVybiByZXQgPyByZXQgOiBsZW47XG4gfVxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvenN0ZF9saWIuaCBiL2luY2x1ZGUvbGludXgvenN0ZF9saWIuaFxuaW5kZXggZTI5NWQ0MTI1ZGRlODQuLmY0YjI2ODQ0ZTUzYWRlIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC96c3RkX2xpYi5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3pzdGRfbGliLmhcbkBAIC0xMjQxLDYgKzEyNDEsNyBAQCBaU1RETElCX0FQSSBzaXplX3QgWlNURF9zaXplb2ZfRERpY3QoY29uc3QgWlNURF9ERGljdCogZGRpY3QpO1xuICNkZWZpbmUgWlNURF9TRUFSQ0hMT0dfTUlOICAgICAgICAxXG4gI2RlZmluZSBaU1REX01JTk1BVENIX01BWCAgICAgICAgIDcgICAvKiBvbmx5IGZvciBaU1REX2Zhc3QsIG90aGVyIHN0cmF0ZWdpZXMgYXJlIGxpbWl0ZWQgdG8gNiAqL1xuICNkZWZpbmUgWlNURF9NSU5NQVRDSF9NSU4gICAgICAgICAzICAgLyogb25seSBmb3IgWlNURF9idG9wdCssIGZhc3RlciBzdHJhdGVnaWVzIGFyZSBsaW1pdGVkIHRvIDQgKi9cbisjZGVmaW5lIFpTVERfTUFYX0NMRVZFTFx0XHQyMlxuICNkZWZpbmUgWlNURF9UQVJHRVRMRU5HVEhfTUFYICAgIFpTVERfQkxPQ0tTSVpFX01BWFxuICNkZWZpbmUgWlNURF9UQVJHRVRMRU5HVEhfTUlOICAgICAwICAgLyogbm90ZSA6IGNvbXBhcmluZyB0aGlzIGNvbnN0YW50IHRvIGFuIHVuc2lnbmVkIHJlc3VsdHMgaW4gYSB0YXV0b2xvZ2ljYWwgdGVzdCAqL1xuICNkZWZpbmUgWlNURF9TVFJBVEVHWV9NSU4gICAgICAgIFpTVERfZmFzdFxuZGlmZiAtLWdpdCBhL2xpYi96c3RkL2NvbXByZXNzL2NsZXZlbHMuaCBiL2xpYi96c3RkL2NvbXByZXNzL2NsZXZlbHMuaFxuaW5kZXggNmFiOGJlNjUzMmVmYzAuLmRiM2IyNzViNTAyZTZjIDEwMDY0NFxuLS0tIGEvbGliL3pzdGQvY29tcHJlc3MvY2xldmVscy5oXG4rKysgYi9saWIvenN0ZC9jb21wcmVzcy9jbGV2ZWxzLmhcbkBAIC0xNyw3ICsxNyw2IEBAXG4gXG4gLyotPT09PT0gIFByZS1kZWZpbmVkIGNvbXByZXNzaW9uIGxldmVscyAgPT09PT0tKi9cbiBcbi0jZGVmaW5lIFpTVERfTUFYX0NMRVZFTCAgICAgMjJcbiBcbiBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSlcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA3OjI1OjI2LjI4MTUxMTA5OFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1MjczNTg0ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgWnJhbSBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgcGF0Y2ggaGVyZSB0aGF0J3MgbWFraW5nIHNvbWUgcHJldHR5IHNpZ25pZmljYW50IGNoYW5nZXMgdG8gdGhlIGB6cmFtYCBkcml2ZXIsIHNwZWNpZmljYWxseSB3aXRoaW4gYGRyaXZlcnMvYmxvY2svenJhbS9gLiBJdCdzIGludHJvZHVjaW5nIG5ldyBjb21wcmVzc2lvbiBiYWNrZW5kIGNhcGFiaWxpdGllcyAtIHRoaW5rIDg0MiwgZGVmbGF0ZSwgbHo0LCBsejRoYywgbHpvLCBsem9ybGUsIGFuZCB6c3RkIC0gd2hpY2ggaXMgZ3JlYXQgdG8gc2VlLiBUaGUgY29yZSBvZiB0aGlzIHNlZW1zIHRvIGJlIHRoZSBhZGRpdGlvbiBvZiBgY2Fwc2AsIGBsZXZlbF9taW5gLCBhbmQgYGxldmVsX21heGAgdG8gdGhlIGBzdHJ1Y3QgemNvbXBfb3BzYCwgYWxvbmcgd2l0aCBgemNvbXBfZ2V0X2NhcHMoKWAgYW5kIGB6Y29tcF92YWxpZGF0ZV9sZXZlbCgpYCBmdW5jdGlvbnMgaW4gYHpjb21wLmNgLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbWFrZSBzdXJlIHRoaXMgaXMgYWxsIHZhbGlkIGFuZCB3b3JraW5nIGFzIGl0IHNob3VsZC4gVGhlIGNvcmUgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgaGluZ2VzIG9uIGB6cmFtX2Rydi5jYCwgc3BlY2lmaWNhbGx5IHRoZSB2YWxpZGF0aW9uIHJvdXRpbmVzIGl0J3MgYWRkaW5nIGZvciBjb21wcmVzc2lvbiBsZXZlbHMgYW5kIGRpY3Rpb25hcnkgc3VwcG9ydC4gSXTigJlzIGEgZ29vZCB0aGluZywgYSBzYW5pdHkgY2hlY2ssIHdoZW4gc3RvcmluZyBhbGdvcml0aG0gcGFyYW1ldGVycy4gUGx1cywgYW5kIHRoaXMgaXMgaW1wb3J0YW50LCBJIHNlZSBpdCdzIGFsc28gYWRkcmVzc2luZyBhIHBvdGVudGlhbCBtZW1vcnkgbGVhayBvciBhIHNpbWlsYXIgaXNzdWUgd2l0aGluIGBjb21wX3BhcmFtc19zdG9yZWAuIFRoZXkncmUgbm93IHVzaW5nIGBuZXdfZGljdGAgYW5kIGZyZWVpbmcgaXQgb24gZXJyb3IsIGFuZCB0aGV5J3JlIHJlc2V0dGluZyBwYXJhbWV0ZXJzIGNvcnJlY3RseS4gQW5kIHRoZXkndmUgc21hcnRseSByZW1vdmVkIGB6c3RkX3JlbGVhc2VfcGFyYW1zKHBhcmFtcylgIGZyb20gdGhlIGB6c3RkX2NyZWF0ZWAgZXJyb3IgcGF0aCAtIHRoYXQncyBhIGNsYXNzaWMgdHJhcCwgYW5kIHRoZXkndmUgYXZvaWRlZCBpdCFcblxuTm93LCBsZXQncyBzZWUgaWYgdGhpcyBpcyByZWFjaGFibGUuICpZZXMqLCB0aGUgY2hhbmdlcyB3aXRoaW4gdGhlIGB6cmFtYCBkcml2ZXIgbWVhbiBpdCdzIGFic29sdXRlbHkgcmVhY2hhYmxlIHZpYSBzeXNmcywgcGFydGljdWxhcmx5IHRocm91Z2ggYGFsZ29yaXRobV9wYXJhbXNfc3RvcmVgLiBGcm9tIGFuIGluaXRpYWwgZnVuY3Rpb25hbCBzdGFuZHBvaW50LCBpdCBsb29rcyBzb3VuZC4gVGhlIHZhbGlkYXRpb24gY2hlY2tzLCB0aGUgbWVtb3J5IGxlYWsgZml4Li4uIGFsbCBwb3NpdGl2ZSBzaWducy5cblxuUmlnaHQsIHNvIHRvIG1ha2Ugc3VyZSBpdCdzIGFsbCBob29rZWQgaW4gY29ycmVjdGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTG9va3MgbGlrZSB0aGUgcHJpbWFyeSBjb25maWcgdmFyaWFibGUgaXMgYENPTkZJR19aUkFNYCwgb2YgY291cnNlLiBJJ2xsIG5lZWQgdG8gZHJpbGwgZG93biBpbnRvIGVpdGhlciBgZHJpdmVycy9ibG9jay96cmFtL0tjb25maWdgIG9yIGBkcml2ZXJzL2Jsb2NrL0tjb25maWdgIHRvIGNvbmZpcm0gZXZlcnl0aGluZyBpcyBjb3JyZWN0bHkgZW5hYmxlZCBhbmQgY29uZmlndXJlZCBiYXNlZCBvbiB0aGlzIHBhdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTg0LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6MjU6MzIuODA4ODcyNjk5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NDU4OTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBaUkFNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjI6Y29uZmlnIFpSQU1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJDb21wcmVzc2VkIFJBTSBibG9jayBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTE2LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjE3OmNvbmZpZyBaUkFNX0JBQ0tFTkRfTFo0XFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTgtXFx0Ym9vbCBcXFwibHo0IGNvbXByZXNzaW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy0yMi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoyMzpjb25maWcgWlJBTV9CQUNLRU5EX0xaNEhDXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMjQtXFx0Ym9vbCBcXFwibHo0aGMgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTI4LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjI5OmNvbmZpZyBaUkFNX0JBQ0tFTkRfWlNURFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTMwLVxcdGJvb2wgXFxcInpzdGQgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTM0LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjM1OmNvbmZpZyBaUkFNX0JBQ0tFTkRfREVGTEFURVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTM2LVxcdGJvb2wgXFxcImRlZmxhdGUgY29tcHJlc3Npb24gc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQwLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjQxOmNvbmZpZyBaUkFNX0JBQ0tFTkRfODQyXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNDItXFx0Ym9vbCBcXFwiODQyIGNvbXByZXNzaW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy00Ni1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo0Nzpjb25maWcgWlJBTV9CQUNLRU5EX0ZPUkNFX0xaT1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTQ4LVxcdGRlcGVuZHMgb24gWlJBTVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNTItXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NTM6Y29uZmlnIFpSQU1fQkFDS0VORF9MWk9cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01NC1cXHRib29sIFxcXCJsem8gYW5kIGx6by1ybGUgY29tcHJlc3Npb24gc3VwcG9ydFxcXCIgaWYgIVpSQU1fQkFDS0VORF9GT1JDRV9MWk9cXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnPTYwPWNob2ljZVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjQtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NjU6Y29uZmlnIFpSQU1fREVGX0NPTVBfTFpPUkxFXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNjYtXFx0Ym9vbCBcXFwibHpvLXJsZVxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTY4LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjY5OmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaT1xcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTcwLVxcdGJvb2wgXFxcImx6b1xcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTcyLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjczOmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaNFxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTc0LVxcdGJvb2wgXFxcImx6NFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTc2LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjc3OmNvbmZpZyBaUkFNX0RFRl9DT01QX0xaNEhDXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNzgtXFx0Ym9vbCBcXFwibHo0aGNcXFwiXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04MC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzo4MTpjb25maWcgWlJBTV9ERUZfQ09NUF9aU1REXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODItXFx0Ym9vbCBcXFwienN0ZFxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTg0LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjg1OmNvbmZpZyBaUkFNX0RFRl9DT01QX0RFRkxBVEVcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy04Ni1cXHRib29sIFxcXCJkZWZsYXRlXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctODgtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6ODk6Y29uZmlnIFpSQU1fREVGX0NPTVBfODQyXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTAtXFx0Ym9vbCBcXFwiODQyXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc9OTM9ZW5kY2hvaWNlXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctOTQtXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6OTU6Y29uZmlnIFpSQU1fREVGX0NPTVBcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy05Ni1cXHRzdHJpbmdcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEwNi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMDc6Y29uZmlnIFpSQU1fV1JJVEVCQUNLXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTA4LSAgICAgICBib29sIFxcXCJXcml0ZSBiYWNrIGluY29tcHJlc3NpYmxlIG9yIGlkbGUgcGFnZSB0byBiYWNraW5nIGRldmljZVxcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEyMC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMjE6Y29uZmlnIFpSQU1fVFJBQ0tfRU5UUllfQUNUSU1FXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTIyLVxcdGJvb2wgXFxcIlRyYWNrIGFjY2VzcyB0aW1lIG9mIHpyYW0gZW50cmllc1xcXCJcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnLTEyOC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZzoxMjk6Y29uZmlnIFpSQU1fTUVNT1JZX1RSQUNLSU5HXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTMwLVxcdGJvb2wgXFxcIlRyYWNrIHpSYW0gYmxvY2sgc3RhdHVzXFxcIlxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTM5LVxcbmRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnOjE0MDpjb25maWcgWlJBTV9NVUxUSV9DT01QXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctMTQxLVxcdGJvb2wgXFxcIkVuYWJsZSBtdWx0aXBsZSBjb21wcmVzc2lvbiBzdHJlYW1zXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNTozMi44NjYzMzg1NDRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODIyOTk1ODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBtb2RpZmljYXRpb25zLlxuXG4qKkFuYWx5emluZyB0aGUgWnJhbSBQYXRjaCoqXG5cbkFscmlnaHQsIHNvIHRoaXMgcGF0Y2ggaGl0cyBgenJhbV9kcnYuY2AsIGB6Y29tcC5jYCwgYW5kIGEgYnVuY2ggb2YgYmFja2VuZCBmaWxlcy4gVGhhdCdzIGEgZ29vZCBwbGFjZSB0byBzdGFydCwgaGl0dGluZyB0aGUgY29yZSBkcml2ZXIsIHRoZSBjb21wcmVzc2lvbiByb3V0aW5lcywgYW5kIGxpa2VseSB0aGUgYmxvY2sgZGV2aWNlIGludGVyYWN0aW9uLiBMZXQncyBkaWcgaW50byBgenJhbV9kcnYuY2AgZmlyc3QuIEkgd2FudCB0byBzZWUgd2hpY2ggZnVuY3Rpb25zIHdlcmUgdG91Y2hlZCB0aGVyZS4gVGhhdCBmaWxlIGlzIHRoZSBoZWFydCBvZiB0aGUgYmxvY2sgZGV2aWNlIGVtdWxhdGlvbiwgc28gYW55IGNoYW5nZXMgdGhlcmUgYXJlIGdvaW5nIHRvIGJlIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQuIEknbGwgbmVlZCB0byBrbm93ICp3aGF0KiB0aGV5IG1vZGlmaWVkIGluIHRoYXQgY3J1Y2lhbCBmaWxlIHRvIGdyYXNwIHRoZSBpbXBsaWNhdGlvbnMgYWNyb3NzIHRoZSBlbnRpcmUgc3Vic3lzdGVtLiBUaGlzIGlzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc2NjIsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNTozNS42ODkzMzY5MDFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU4NzUwODY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFsZ29yaXRobV9wYXJhbXNfc3RvcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTcwMD1zdGF0aWMgaW50IGNvbXBfcGFyYW1zX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgczMyIGxldmVsLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTcyNi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxNzI3OnN0YXRpYyBzc2l6ZV90IGFsZ29yaXRobV9wYXJhbXNfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE3MjgtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA3OjI1OjM1Ljk0ODA5NDE4N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1OTQ0MTQ4ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBQYXJhbWV0ZXIgYW5kIEFsZ29yaXRobSBTdG9yYWdlKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHR3byBrZXkgc3RvcmFnZSBsb2NhdGlvbnM6IGBjb21wX3BhcmFtc19zdG9yZWAgYW5kIGBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlYC4gSXQncyBwcmV0dHkgc3RhbmRhcmQgdG8ga2VlcCBwYXJhbWV0ZXJzIHNlcGFyYXRlIGZyb20gdGhlIGFsZ29yaXRobXMgdGhlbXNlbHZlcywgZXNwZWNpYWxseSBpbiBtb3JlIGNvbXBsZXggY29tcHV0YXRpb25hbCBzZXR1cHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcGFyYW1ldGVycyBhcmUgYmVpbmcgb3JnYW5pemVkIGluIGBjb21wX3BhcmFtc19zdG9yZWAuIElzIGl0IGEga2V5LXZhbHVlIHN0b3JlPyBTdHJ1Y3R1cmVkIGRhdGE/IEhvdyBpcyBpdCBpbmRleGVkLCBpZiBhdCBhbGw/IFRoZSBnb2FsIGlzIHRvIHNlZSBpZiBJIGNhbiB0cmFjZSBob3cgc3BlY2lmaWMgcGFyYW1ldGVyIHNldHMgYXJlIHRpZWQgdG8gcGFydGljdWxhciBjb21wdXRhdGlvbmFsIG1vZGVscy5cblxuTmV4dCwgdGhlIGBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlYC4uLnRoZSBkb3VibGUgdW5kZXJzY29yZSBzdWdnZXN0cyBpdCdzIGEgcHJpdmF0ZSBvciBpbnRlcm5hbCBjb21wb25lbnQuIE5vIHByb2JsZW0sIHRoYXQncyBmaW5lLiBXaGF04oCZcyBpbXBvcnRhbnQgaXMgaG93IGFsZ29yaXRobXMgYXJlICpyZXByZXNlbnRlZCogd2l0aGluIHRoaXMgc3RvcmUuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGZ1bmN0aW9uIHBvaW50ZXJzPyBTZXJpYWxpemVkIGNvZGUgb2JqZWN0cz8gQWJzdHJhY3QgcmVwcmVzZW50YXRpb25zIHRoYXQgbmVlZCB0byBiZSBpbnRlcnByZXRlZCBieSBhIHNwZWNpZmljIGVuZ2luZT8gVGhlIGxldmVsIG9mIGFic3RyYWN0aW9uIGhlcmUgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZsZXhpYmlsaXR5IGFuZCBleHRlbnNpYmlsaXR5IG9mIHRoZSBzeXN0ZW0uIEkgd2lsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3bywgaG93IHRoZSBwYXJhbWV0ZXJzIGluIHRoZSBmaXJzdCBhcmUgYXBwbGllZCB0byB0aGUgYWxnb3JpdGhtIGluIHRoZSBzZWNvbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwMzcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNTozOS41NDI1MTE0NVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Njc2MDU5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb21wX3BhcmFtc19zdG9yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xNjg5PXN0YXRpYyB2b2lkIGNvbXBfcGFyYW1zX3Jlc2V0KHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbylcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE2OTktXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTcwMDpzdGF0aWMgaW50IGNvbXBfcGFyYW1zX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgczMyIGxldmVsLFxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE3MDEtXFx0XFx0XFx0ICAgICBjb25zdCBjaGFyICpkaWN0X3BhdGgsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xNzI3PXN0YXRpYyBzc2l6ZV90IGFsZ29yaXRobV9wYXJhbXNfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTgxNC1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoxODE1OlxcdHJldCA9IGNvbXBfcGFyYW1zX3N0b3JlKHpyYW0sIHByaW8sIGxldmVsLCBkaWN0X3BhdGgsIFxcdTAwMjZkZWZsYXRlX3BhcmFtcyk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTgxNi1cXHRyZXR1cm4gcmV0ID8gcmV0IDogbGVuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNTozOS41OTkyODMxOTVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDc0MzE2MTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBsaWtlIHlvdXJzZWxmOlxuXG4qKkFuYWx5emluZyB0aGUgQWxnb3JpdGhtIFN0b3JlKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSBleGFtaW5lIHRoZSBgX19jb21wX2FsZ29yaXRobV9zdG9yZWAuIFRoYXQncyB3aGVyZSBJIHdvdWxkIGV4cGVjdCB0aGUgY29yZSBvZiB0aGlzIHdob2xlIHRoaW5nIHRvIGxpdmUsIHdvdWxkbid0IHlvdT8gVGhpcyBpcyB0aGUgY2VudHJhbCByZXBvc2l0b3J5LCB0aGUgb3BlcmF0aW9uYWwgaGVhcnQgb2YgdGhlIHN5c3RlbSB3aGVuIGl0IGNvbWVzIHRvIGNvbXB1dGF0aW9uLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gbG9vayBhdCBob3cgaXQncyBzdHJ1Y3R1cmVkLCBpdHMgYWNjZXNzIG1ldGhvZHMsIGFuZCwgb2YgY291cnNlLCB0aGUgYWxnb3JpdGhtcyB0aGVtc2VsdmVzLiBXaGF0IGtpbmQgb2YgbWV0YWRhdGEgZG9lcyBpdCBoYXZlPyBWZXJzaW9uaW5nPyBEZXBlbmRlbmN5IG1hbmFnZW1lbnQ/IEFyZSB0aGUgYWxnb3JpdGhtcyBkeW5hbWljYWxseSBsb2FkZWQgb3Igc3RhdGljYWxseSBsaW5rZWQ/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBpbiB0aGUgc3RvcmUgaXRzZWxmPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBzdG9yZSdzIGRlc2lnbiBvbiBzeXN0ZW0gc2NhbGFiaWxpdHkgYW5kIG1haW50YWluYWJpbGl0eT8gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHF1ZXN0aW9ucyBhYm91dCBwb3RlbnRpYWwgY29uY3VycmVuY3kgaXNzdWVzIGFuZCBzZWN1cml0eSBpbXBsaWNhdGlvbnMgaWYgdGhpcyBpcyBub3QgaGFuZGxlZCBjb3JyZWN0bHkuIFRoZSBkZXNpZ24gb2YgdGhpcyBzdG9yZSBpcyBwYXJhbW91bnQgdG8gdGhlIGVudGlyZSBvcGVyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2MzgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNTo0My4wNzM2MDMxMloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc4ODIzNzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19jb21wX2FsZ29yaXRobV9zdG9yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xNjYwPXN0YXRpYyB2b2lkIGNvbXBfYWxnb3JpdGhtX3NldChzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIGNvbnN0IGNoYXIgKmFsZylcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE2NjQtXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTY2NTpzdGF0aWMgaW50IF9fY29tcF9hbGdvcml0aG1fc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBjb25zdCBjaGFyICpidWYpXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTY2Ni17XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xODMxPXN0YXRpYyBzc2l6ZV90IGNvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4MzgtXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTgzOTpcXHRyZXQgPSBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlKHpyYW0sIFpSQU1fUFJJTUFSWV9DT01QLCBidWYpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4NDAtXFx0cmV0dXJuIHJldCA/IHJldCA6IGxlbjtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTE4NjM9c3RhdGljIHNzaXplX3QgcmVjb21wX2FsZ29yaXRobV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODk5LVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjE5MDA6XFx0cmV0ID0gX19jb21wX2FsZ29yaXRobV9zdG9yZSh6cmFtLCBwcmlvLCBhbGcpO1xcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE5MDEtXFx0cmV0dXJuIHJldCA/IHJldCA6IGxlbjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6MjU6NDMuMTMxNDg5MTU1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NDYzMjg0OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBaUkFNIEFsZ29yaXRobSBQYXJhbWV0ZXIgSGFuZGxpbmcqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gcmV2aWV3aW5nIHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBleHBlcnQgZXllIGdvZXMgdG8gdGhlIHN5c3RlbSBmaWxlIHN0b3JlIGZ1bmN0aW9uczogYGFsZ29yaXRobV9wYXJhbXNfc3RvcmVgLCBgY29tcF9hbGdvcml0aG1fc3RvcmVgLCBhbmQgYHJlY29tcF9hbGdvcml0aG1fc3RvcmVgLiBUaGVzZSBhcmUgdGhlIGVudHJ5IHBvaW50cyDigJMgdGhlIGdhdGV3YXlzIOKAkyB1c2Vyc3BhY2UgdXRpbGl6ZXMgdmlhIGAvc3lzL2Jsb2NrL3pyYW1YL2FsZ29fcGFyYW1zYCBvciBzaW1pbGFyIHN5c2ZzIG5vZGVzLlxuXG5UaGlzIHBhdGNoLCBzcGVjaWZpY2FsbHksIGludHJvZHVjZXMgdHdvIG5ldyBmdW5jdGlvbnMsIGB6Y29tcF9nZXRfY2Fwc2AgYW5kIGB6Y29tcF92YWxpZGF0ZV9sZXZlbGAuIFBsdXMsIGl0IHRvdWNoZXMgYGNvbXBfcGFyYW1zX3N0b3JlYCB0byBhZGRyZXNzIGEgbWVtb3J5IGxlYWsgaXNzdWUuIEFwcGFyZW50bHksIHRoZXkgd2VyZSB1c2luZyBgbmV3X2RpY3RgIHdoZW4gdGhleSBzaG91bGQgaGF2ZSBiZWVuIHdyaXRpbmcgZGlyZWN0bHkgdG8gYHpyYW0tXHUwMDNlcGFyYW1zW3ByaW9dLmRpY3RgLlxuXG5UaGlzIHNjcmVhbXMgZnV6emluZyB0YXJnZXQuIFRob3NlIHN0b3JlIGZ1bmN0aW9ucyBhbmQgbmV3IGZ1bmN0aW9ucyBhcmUgcHJpbWUgY2FuZGlkYXRlcyBmb3IgZmluZGluZyB2dWxuZXJhYmlsaXRpZXMuIEkgbmVlZCB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb246XG5cbiogICBgYWxnb3JpdGhtX3BhcmFtc19zdG9yZWBcbiogICBgY29tcF9wYXJhbXNfc3RvcmVgXG4qICAgYF9fY29tcF9hbGdvcml0aG1fc3RvcmVgIChUaGF0IGRvdWJsZSB1bmRlcnNjb3JlIGlzIGEgYml0IG9mIGEgZmxhZywgdG9vLilcbiogICBgemNvbXBfZ2V0X2NhcHNgXG4qICAgYHpjb21wX3ZhbGlkYXRlX2xldmVsYFxuXG5CZWZvcmUgSSBnZXQgdG9vIGRlZXAgaW50byB0aGlzLCBJIHNob3VsZCB2ZXJpZnkgdGhlIGV4YWN0IG5hbWUgb2YgYGFsZ29yaXRobV9wYXJhbXNfc3RvcmVgLiBOZWVkIHRvIG1ha2Ugc3VyZSBJIGFtIHdvcmtpbmcgd2l0aCB0aGUgY29ycmVjdCBzeW1ib2wuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyODgsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6MjU6NDcuNTc3ODIwMjM3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjQzODU4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhbGdvcml0aG1fcGFyYW1zX3N0b3JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTE3MDA9c3RhdGljIGludCBjb21wX3BhcmFtc19zdG9yZShzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIHMzMiBsZXZlbCxcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE3MjYtXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTcyNzpzdGF0aWMgc3NpemVfdCBhbGdvcml0aG1fcGFyYW1zX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xNzI4LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNTo0Ny42MzQyNjIzMDFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc4MjIzNTE3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRha2luZyB0aGUgcGVyc3BlY3RpdmUgb2Ygc29tZW9uZSBkZWVwbHkgZmFtaWxpYXIgd2l0aCB0aGlzIGtpbmQgb2Ygc3lzdGVtOlxuXG4qKkNoZWNraW5nIHRoZSBOb21lbmNsYXR1cmUqKlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBkaXZlIGluLCBJIG5lZWQgdG8gbWFrZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhhdCB0aGUgdmFyaWFibGUgb3Igc3RvcmUgSSdtIHdvcmtpbmcgd2l0aCBpcywgaW4gZmFjdCwgY2FsbGVkIGBjb21wX2FsZ29yaXRobV9zdG9yZWAuIEl0J3MgYSBmdW5kYW1lbnRhbCBzdGVwLCByZWFsbHkuIFR5cG9zIGFuZCBpbmNvcnJlY3QgbmFtaW5nIGNvbnZlbnRpb25zIGFyZSB0aGUgYmFuZSBvZiBteSBleGlzdGVuY2UsIGFuZCB0aGV5IGNhbiBsZWFkIHRvIGhvdXJzIG9mIGRlYnVnZ2luZyDigJMgY29tcGxldGVseSB1bm5lY2Vzc2FyeSBob3VycywgSSBtaWdodCBhZGQuIFNvLCBsZXQncyBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgdGhlIHByZWNpc2UsIGNhbm9uaWNhbCBuYW1lIHdlJ3JlIHVzaW5nLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEknbSBub3QgY2hhc2luZyBhIHBoYW50b20gcmVmZXJlbmNlIGRvd24gdGhlIHdyb25nIHBhdGguIE5vIHNlbnNlIGluIHdhc3RpbmcgdGltZSBvbiBhIG1pc25hbWVkIHZhcmlhYmxlLiBMZXQncyBtYWtlIHN1cmUgdGhhdCdzIHNxdWFyZWQgYXdheSBmaXJzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTk2NSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA3OjI1OjUwLjQxNjUwMTgxM1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgxODI0NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29tcF9hbGdvcml0aG1fc3RvcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTY2MD1zdGF0aWMgdm9pZCBjb21wX2FsZ29yaXRobV9zZXQoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBjb25zdCBjaGFyICphbGcpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xNjY0LVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjE2NjU6c3RhdGljIGludCBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCB6cmFtICp6cmFtLCB1MzIgcHJpbywgY29uc3QgY2hhciAqYnVmKVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE2NjYte1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MTgxOT1zdGF0aWMgc3NpemVfdCBjb21wX2FsZ29yaXRobV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4MzAtXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTgzMTpzdGF0aWMgc3NpemVfdCBjb21wX2FsZ29yaXRobV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTgzMi1cXHRcXHRcXHRcXHQgICAgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODM4LVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjE4Mzk6XFx0cmV0ID0gX19jb21wX2FsZ29yaXRobV9zdG9yZSh6cmFtLCBaUkFNX1BSSU1BUllfQ09NUCwgYnVmKTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODQwLVxcdHJldHVybiByZXQgPyByZXQgOiBsZW47XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xODQ0PXN0YXRpYyBzc2l6ZV90IHJlY29tcF9hbGdvcml0aG1fc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODYyLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjE4NjM6c3RhdGljIHNzaXplX3QgcmVjb21wX2FsZ29yaXRobV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTg2NC1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4OTktXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTkwMDpcXHRyZXQgPSBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlKHpyYW0sIHByaW8sIGFsZyk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTkwMS1cXHRyZXR1cm4gcmV0ID8gcmV0IDogbGVuO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNTo1MC40NzQ2ODc4MDhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkzNTk2NDIwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gWnNoIENvbXBsZXRpb24gRnVuY3Rpb25zKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGNvbXBsZXRpb24gc3lzdGVtIGlzIGJlaGF2aW5nLCBzbyBsZXQncyBzdGFydCB3aXRoIGEgZGVlcCBkaXZlIGludG8gdGhlIGNvZGUuIFRoZSBmaXJzdCBwbGFjZSB0byBsb29rIGlzIGRlZmluaXRlbHkgdGhlIGZ1bmN0aW9ucyBgemNvbXBfZ2V0X2NhcHNgIGFuZCBgemNvbXBfdmFsaWRhdGVfbGV2ZWxgLiBUaGVzZSBhcmUgZnVuZGFtZW50YWwuIFRoZXkgYXJlIHByb2JhYmx5IHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBjb21wbGV0aW9uIHN5c3RlbSBhbmQgZW5zdXJpbmcgdGhhdCB0aGUgY29tcGxldGlvbiBsZXZlbCBpcyBhcHByb3ByaWF0ZSBnaXZlbiB0aGUgY29udGV4dCwgcmVzcGVjdGl2ZWx5LiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGlucHV0cyB0aGVzZSBmdW5jdGlvbnMgdGFrZSwgd2hhdCB0aGV5IHJldHVybiwgYW5kIGhvdyB0aGV5IGludGVyYWN0LiBBcmUgdGhleSB0aWdodGx5IGNvdXBsZWQsIG9yIGluZGVwZW5kZW50IG1vZHVsZXM/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBwb3RlbnRpYWwgYm90dGxlbmVja3Mgb3IgZWRnZSBjYXNlcyBJIHNob3VsZCB3YXRjaCBmb3IgaW4gdGhlaXIgaW1wbGVtZW50YXRpb24/IExldCdzIHRyYWNlIHRoZWlyIGV4ZWN1dGlvbiB3aXRoIGRpZmZlcmVudCBzY2VuYXJpb3MgYW5kIHNlZSB3aGF0IHRoZSByZXN1bHRzIGFyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA3NjAsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNTo1My40MTA2NTU0OTVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MDgyNzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInpjb21wX3ZhbGlkYXRlX2xldmVsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jPTEwMD11bnNpZ25lZCBpbnQgemNvbXBfZ2V0X2NhcHMoY29uc3QgY2hhciAqY29tcClcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96Y29tcC5jLTEwNi1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYzoxMDc6aW50IHpjb21wX3ZhbGlkYXRlX2xldmVsKGNvbnN0IGNoYXIgKmNvbXAsIHMzMiBsZXZlbClcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vemNvbXAuYy0xMDgte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNTo1My40Njk3NDQ4OTlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc4NDM4NTc5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLCB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSBhYnNvbHV0ZWx5IGVzc2VudGlhbCBoZXJlPyBUaGUgcHJpbWFyeSBvbmUgdGhhdCBqdW1wcyBvdXQgYXQgbWUgaXMsIG9mIGNvdXJzZSwgYFpSQU1gLiBUaGF0J3MgdGhlIGNvcmUuIE5vdywgSSBuZWVkIHRvIGNvbnNpZGVyIGEgcG90ZW50aWFsIHdyaW5rbGUuIFdlJ3JlIGRlYWxpbmcgd2l0aCBgcmVjb21wX2FsZ29yaXRobV9zdG9yZWAsIHdoaWNoIGdpdmVzIG1lIHBhdXNlLiBJIHNob3VsZCBjaGVjayBpZiB3ZSBhbHNvIG5lZWQgYFpSQU1fTVVMVElfQ09NUGAgYXMgcGFydCBvZiB0aGF0IGNvbmZpZ3VyYXRpb24uIExldCBtZSB2ZXJpZnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMTA2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6MjU6NTYuMjU0MTMzODkxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTMyMzc5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZWNvbXBfYWxnb3JpdGhtX3N0b3JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTE4NDQ9c3RhdGljIHNzaXplX3QgcmVjb21wX2FsZ29yaXRobV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4NjItXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTg2MzpzdGF0aWMgc3NpemVfdCByZWNvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xODY0LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNTo1Ni4zMTM0NjQ1OTVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgwNTM3OTU3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgbGlrZSB5b3U6XG5cbioqQ2hlY2tpbmcgZm9yIFpSQU0gTXVsdGktQ29tcHJlc3Npb24gU3VwcG9ydCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB2ZXJpZnkgc29tZXRoaW5nIGFib3V0IHRoZSB6cmFtIGNvbXByZXNzaW9uIHNldHVwLiBNeSBpbml0aWFsIHN0ZXAgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoZSBgcmVjb21wX2FsZ29yaXRobV9zdG9yZWAgZnVuY3Rpb25hbGl0eSBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkLiBJJ20gZm9jdXNpbmcgb24gd2hldGhlciBpdCdzIGVuYWJsZWQgdW5kZXIgdGhlIGBDT05GSUdfWlJBTV9NVUxUSV9DT01QYCBjb25maWd1cmF0aW9uIG9wdGlvbi4gVGhpcyBpcyBhIGNvbW1vbiBwYXR0ZXJuLCBhbmQgYSBjcml0aWNhbCBpbml0aWFsIGNoZWNrLiBJJ20gZXNzZW50aWFsbHkgdHJhY2luZyB0aGUgZGVwZW5kZW5jaWVzLiBLbm93aW5nIHRoYXQgYHJlY29tcF9hbGdvcml0aG1fc3RvcmVgIGRlcGVuZHMgb24gYENPTkZJR19aUkFNX01VTFRJX0NPTVBgIHdpbGwgZnVuZGFtZW50YWxseSBpbXBhY3QgaG93IEkgYXBwcm9hY2ggdGhlIHJlc3Qgb2YgdGhlIGFuYWx5c2lzLCBzbyBpdCBuZWVkcyB0byBiZSBlc3RhYmxpc2hlZCBlYXJseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE0MTMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNTo1OS4xMTg4NDcyNjVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2OTc0ODM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19aUkFNX01VTFRJX0NPTVBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0yMjc9c3RhdGljIGlubGluZSBib29sIGlzX3BhcnRpYWxfaW8oc3RydWN0IGJpb192ZWMgKmJ2ZWMpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yMzItXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MjMzOiNpZiBkZWZpbmVkIENPTkZJR19aUkFNX1dSSVRFQkFDSyB8fCBkZWZpbmVkIENPTkZJR19aUkFNX01VTFRJX0NPTVBcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0yMzQtc3RydWN0IHpyYW1fcHBfc2xvdCB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xODMxPXN0YXRpYyBzc2l6ZV90IGNvbXBfYWxnb3JpdGhtX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4NDItXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTg0MzojaWZkZWYgQ09ORklHX1pSQU1fTVVMVElfQ09NUFxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE4NDQtc3RhdGljIHNzaXplX3QgcmVjb21wX2FsZ29yaXRobV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTIzNzI9c3RhdGljIGludCB6cmFtX2J2ZWNfd3JpdGUoc3RydWN0IHpyYW0gKnpyYW0sIHN0cnVjdCBiaW9fdmVjICpidmVjLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjM3OS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzoyMzgwOiNpZmRlZiBDT05GSUdfWlJBTV9NVUxUSV9DT01QXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMjM4MS0jZGVmaW5lIFJFQ09NUFJFU1NfSURMRVxcdFxcdCgxIFxcdTAwM2NcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0zMDA0PXN0YXRpYyBERVZJQ0VfQVRUUl9SVyhjb21wcmVzc2VkX3dyaXRlYmFjayk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAwNS0jZW5kaWZcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDA2OiNpZmRlZiBDT05GSUdfWlJBTV9NVUxUSV9DT01QXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAwNy1zdGF0aWMgREVWSUNFX0FUVFJfUlcocmVjb21wX2FsZ29yaXRobSk7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0zMDEyPXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICp6cmFtX2Rpc2tfYXR0cnNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTMwMzItXFx0XFx1MDAyNmRldl9hdHRyX2RlYnVnX3N0YXQuYXR0cixcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDMzOiNpZmRlZiBDT05GSUdfWlJBTV9NVUxUSV9DT01QXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAzNC1cXHRcXHUwMDI2ZGV2X2F0dHJfcmVjb21wX2FsZ29yaXRobS5hdHRyLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2Lmg9ODA9c3RydWN0IHpyYW1fc3RhdHMge1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmgtOTctXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2Lmg6OTg6I2lmZGVmIENPTkZJR19aUkFNX01VTFRJX0NPTVBcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuaC05OS0jZGVmaW5lIFpSQU1fUFJJTUFSWV9DT01QXFx0MFVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6MjU6NTkuMTc1ODMxNzE5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNTA5NzAxMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqWlJBTSBDb25maWd1cmF0aW9uIENvbnNpZGVyYXRpb25zKipcblxuQWxyaWdodCwgc28gYENPTkZJR19aUkFNX01VTFRJX0NPTVBgIHNlZW1zIGxpa2UgYSBuby1icmFpbmVyIHRvIGVuYWJsZS4gIFRoYXQncyBhIGRlZmluaXRlIHBvc2l0aXZlLiBOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzIGFib3V0IHRoZSBjb21wcmVzc2lvbiBiYWNrZW5kcy4gSSBzZWUgdGhlIHBhdGNoIHRvdWNoZXMgYGJhY2tlbmRfODQyLmNgLCBgYmFja2VuZF9kZWZsYXRlLmNgLCBgYmFja2VuZF9sejQuY2AsIGBiYWNrZW5kX2x6NGhjLmNgLCBgYmFja2VuZF9sem8uY2AsIGBiYWNrZW5kX2x6b3JsZS5jYCwgYW5kIGBiYWNrZW5kX3pzdGQuY2AuICBUaGF0IG1lYW5zIHdlIHNob3VsZCBwcm9iYWJseSBlbmFibGUgYWxsIG9mIHRoZSByZWxldmFudCBiYWNrZW5kIG9wdGlvbnM6ICBgWlJBTV9CQUNLRU5EX0xaNGAsIGBaUkFNX0JBQ0tFTkRfTFo0SENgLCBgWlJBTV9CQUNLRU5EX1pTVERgLCBgWlJBTV9CQUNLRU5EX0RFRkxBVEVgLCBgWlJBTV9CQUNLRU5EXzg0MmAsIGFuZCBgWlJBTV9CQUNLRU5EX0xaT2AuXG5cbkhvbGQgb24uLi4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcuICBSaWdodCwgYFpSQU1fQkFDS0VORF9MWk9gIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCB1bmxlc3MgYCFaUkFNX0JBQ0tFTkRfRk9SQ0VfTFpPYC4gT2theSwgc28gbGV0J3MganVzdCBtYWtlIHN1cmUgd2UncmUgaW5jbHVkaW5nIGBaUkFNYCBhbmQgYFpSQU1fTVVMVElfQ09NUGAuXG5cbkFjdHVhbGx5LCB3YWl0LCB0aGlua2luZyBhYm91dCBpdC4gZW5hYmxpbmcgYWxsIHRoZSBiYWNrZW5kIG9wdGlvbnMgc3VjaCBhcyBgWlJBTV9CQUNLRU5EX0xaNGAsIGBaUkFNX0JBQ0tFTkRfTFo0SENgLCBgWlJBTV9CQUNLRU5EX1pTVERgLCBgWlJBTV9CQUNLRU5EX0RFRkxBVEVgLCBgWlJBTV9CQUNLRU5EXzg0MmAsIGFuZCBgWlJBTV9CQUNLRU5EX0xaT2Agd2lsbCBiZSB1c2VmdWwgZm9yIHRlc3RpbmcgYW5kIGV2YWx1YXRpbmcgdGhlIHBlcmZvcm1hbmNlIG9mIGVhY2ggYmFja2VuZCBpbiBhIG11bHRpLWNvbXByZXNzaW9uIHNldHRpbmcuICBXZSBkZWZpbml0ZWx5IG5lZWQgdG8gbGlzdCB0aGVtIGFsbCBvdXQuXG5cbk5vdywgbGV0IG1lIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGBhbGdvcml0aG1fcGFyYW1zX3N0b3JlYCBmdW5jdGlvbiBpbiBgenJhbV9kcnYuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzYzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA3OjI2OjA0LjIyNjgwNTE5M1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYzMTE2NzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWxnb3JpdGhtX3BhcmFtc19zdG9yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYz0xNzAwPXN0YXRpYyBpbnQgY29tcF9wYXJhbXNfc3RvcmUoc3RydWN0IHpyYW0gKnpyYW0sIHUzMiBwcmlvLCBzMzIgbGV2ZWwsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xNzI2LVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jOjE3Mjc6c3RhdGljIHNzaXplX3QgYWxnb3JpdGhtX3BhcmFtc19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMTcyOC1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6MjY6MDQuMjgzMTIwOTc3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MTc5OTE1NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZS4gTXkgZmlyc3QgdGhvdWdodCBpczogKipTeXNmcyBFeHBvcnQgQ2hlY2sqKi4gSSBuZWVkIHRvIHZlcmlmeSBpZiB0aGlzIGBhbGdvcml0aG1fcGFyYW1zX3N0b3JlYCBjb21wb25lbnQgaGFzIGJlZW4gcHJvcGVybHkgZXhwb3NlZCB0aHJvdWdoIHN5c2ZzLiBUaGF0J3MgdGhlIGNydWNpYWwgZmlyc3Qgc3RlcC4gSWYgaXQncyBub3QgZXhwb3J0ZWQgdGhlcmUsIHRoZW4gbXkgaW50ZXJhY3Rpb24gd2l0aCBpdCBpcyBpbW1lZGlhdGVseSBnb2luZyB0byBiZSBsaW1pdGVkLiBJIG5lZWQgdG8gY29uZmlybSBpdHMgYXZhaWxhYmlsaXR5IHZpYSBzeXNmcyBiZWZvcmUgSSBjYW4gZG8gYW55dGhpbmcgZnVydGhlcjsgdGhhdCBpcywgYmVmb3JlIEkgY2FuIHJlYWQgZnJvbSwgd3JpdGUgdG8sIG9yIG90aGVyd2lzZSBpbnRlcmFjdCB3aXRoIGl0cyBleHBvc2VkIHBhcmFtZXRlcnMuIEknbGwgbmVlZCB0byBrbm93IHdoZXRoZXIgb3Igbm90IEknbSBldmVuICphbGxvd2VkKiB0byB1c2UgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMjUwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6MjY6MDcuMDAxMTE2MDg1WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzA3ODYzNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhbGdvcml0aG1fcGFyYW1zXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTE3MDA9c3RhdGljIGludCBjb21wX3BhcmFtc19zdG9yZShzdHJ1Y3QgenJhbSAqenJhbSwgdTMyIHByaW8sIHMzMiBsZXZlbCxcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jLTE3MjYtXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM6MTcyNzpzdGF0aWMgc3NpemVfdCBhbGdvcml0aG1fcGFyYW1zX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0xNzI4LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmM9MzAwOD1zdGF0aWMgREVWSUNFX0FUVFJfV08ocmVjb21wcmVzcyk7XFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAwOS0jZW5kaWZcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDEwOnN0YXRpYyBERVZJQ0VfQVRUUl9XTyhhbGdvcml0aG1fcGFyYW1zKTtcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYy0zMDExLVxcbmRyaXZlcnMvYmxvY2svenJhbS96cmFtX2Rydi5jPTMwMTI9c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKnpyYW1fZGlza19hdHRyc1tdID0ge1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAzNi0jZW5kaWZcXG5kcml2ZXJzL2Jsb2NrL3pyYW0venJhbV9kcnYuYzozMDM3OlxcdFxcdTAwMjZkZXZfYXR0cl9hbGdvcml0aG1fcGFyYW1zLmF0dHIsXFxuZHJpdmVycy9ibG9jay96cmFtL3pyYW1fZHJ2LmMtMzAzOC1cXHROVUxMLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNjowNy4wNTgxOTcyMVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDU4Mzc4NjMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBaUkFNIEFsZ29yaXRobSBQYXJhbWV0ZXIgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYGFsZ29yaXRobV9wYXJhbXNgIGF0dHJpYnV0ZSB3aXRoaW4gdGhlIHN5c2ZzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gY29uZmlybSBpdHMgdXNhZ2UuIExldCdzIHNlZS4uLiBJJ20gbm90aWNpbmcgYGNvbXBfcGFyYW1zX3N0b3JlYCBpcyBiZWluZyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBgYWxnb3JpdGhtX3BhcmFtc19zdG9yZWAsIHdoaWNoIG1ha2VzIHNlbnNlLiBJIGFsc28gc2VlIHRoYXQgYF9fY29tcF9hbGdvcml0aG1fc3RvcmVgIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGJvdGggYGNvbXBfYWxnb3JpdGhtX3N0b3JlYCBhbmQgYHJlY29tcF9hbGdvcml0aG1fc3RvcmVgLiBUaGF0J3MgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZCwga25vd2luZyB0aGUgY2FsbGluZyBjaGFpbnMgYW5kIGRlcGVuZGVuY2llcy4gU28gZmFyLCB0aGUgY2FsbCBmbG93IGlzIGxvZ2ljYWwsIGF0IGxlYXN0IG9uIHRoZSBzdXJmYWNlLlxuXG5Gcm9tIHRoaXMgcXVpY2sgb3ZlcnZpZXcsIGl0IGxvb2tzIGxpa2UgdGhlIHBhdGNoIGlzIGZ1bmN0aW9uYWwgYW5kIGRlZmluaXRlbHkgcmVhY2hhYmxlIGJhc2VkIG9uIHRoZSBjb25uZWN0aW9ucyBJIGNhbiBzZWUuIE5vdywgdG8gcmVhbGx5IGRpdmUgaW4sIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gdGhlc2Uga2V5IHN5bWJvbHM6IGBhbGdvcml0aG1fcGFyYW1zX3N0b3JlYCwgYGNvbXBfcGFyYW1zX3N0b3JlYCwgYF9fY29tcF9hbGdvcml0aG1fc3RvcmVgLCBgemNvbXBfZ2V0X2NhcHNgLCBhbmQgYHpjb21wX3ZhbGlkYXRlX2xldmVsYC4gVGhhdCBnaXZlcyBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZm9sbG93IHRoZSBjb250cm9sIGZsb3cgYW5kIHVuZGVyc3RhbmQgdGhlIGd1dHMgb2YgdGhpcyBpbXBsZW1lbnRhdGlvbi5cblxuVGhlbiwgdGhlcmUgYXJlIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBaUkFNOiBgWlJBTWAsIGBaUkFNX01VTFRJX0NPTVBgLCBgWlJBTV9CQUNLRU5EX0xaNGAsIGBaUkFNX0JBQ0tFTkRfTFo0SENgLCBgWlJBTV9CQUNLRU5EX1pTVERgLCBgWlJBTV9CQUNLRU5EX0RFRkxBVEVgLCBgWlJBTV9CQUNLRU5EXzg0MmAgYW5kIGBaUkFNX0JBQ0tFTkRfTFpPYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGltcGFjdCB0aGUgb3ZlcmFsbCBiZWhhdmlvci4gV2FpdCwgaGFuZyBvbi4uLiBgWlJBTV9CQUNLRU5EX0xaT2AgaXMgYSBib29sZWFuLiBMZXQncyBtYWtlIHN1cmUgdGhhdCB0aGF0IGlzIGNvcnJlY3QgYnkgY3Jvc3MtY2hlY2tpbmcgYGRyaXZlcnMvYmxvY2svenJhbS9LY29uZmlnYCB0byBjb25maXJtIHRoYXQgdGhlIHR5cGUgaXMgc2V0IGNvcnJlY3RseSBpbiB0aGUgS2NvbmZpZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM3ODgsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6MjY6MTIuMTE2NTc5MDAzWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzI5ODg1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWlJBTV9CQUNLRU5EX0xaT1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZz00Nz1jb25maWcgWlJBTV9CQUNLRU5EX0ZPUkNFX0xaT1xcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWctNTItXFxuZHJpdmVycy9ibG9jay96cmFtL0tjb25maWc6NTM6Y29uZmlnIFpSQU1fQkFDS0VORF9MWk9cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vS2NvbmZpZy01NC1cXHRib29sIFxcXCJsem8gYW5kIGx6by1ybGUgY29tcHJlc3Npb24gc3VwcG9ydFxcXCIgaWYgIVpSQU1fQkFDS0VORF9GT1JDRV9MWk9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6MjY6MTIuMTczODgwNjI3WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxOTU1ODc2NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBac3RhbmRhcmQgQ29kZWJhc2UqKlxuXG5Pa2F5LCBzbyB0aGUgaW5pdGlhbCBmbGFnIEknbSBsb29raW5nIGF0LCB0aGF0J3MgYSBib29sZWFuLCBubyBzdXJwcmlzZXMgdGhlcmUuIE15IHByaW1hcnkgY29uY2VybiByaWdodCBub3cgaXMgaWRlbnRpZnlpbmcgdGhlIGZ1bGwgZXh0ZW50IG9mIHRoZSBjaGFuZ2VzIHJlbGF0ZWQgdG8gdGhlIHpzdGQgbGlicmFyeS4gSSBrbm93IHRoZXJlJ3MgYSBtb2RpZmljYXRpb24sIGJ1dCBJIG5lZWQgdG8gZW5zdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgZWxzZS5cblxuSSByZWNhbGwgYSBzcGVjaWZpYyBjaGFuZ2UgdG8gYHpzdGRfY3JlYXRlYCB3aXRoaW4gYGJhY2tlbmRfenN0ZC5jYC4gVGhlIHJlbW92YWwgb2YgYHpzdGRfcmVsZWFzZV9wYXJhbXMocGFyYW1zKWAgaW4gdGhhdCBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGlzIHNvbWV0aGluZyB0byBrZWVwIGluIG1pbmQuIEkgbmVlZCB0byBiZSB0aG9yb3VnaC4gTm93LCBnaXZlbiB0aGF0IGB6c3RkX2NyZWF0ZWAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLCBpdCdzIG5vdCBkaXJlY3RseSBleHBvc2VkIGV4dGVybmFsbHkuIEl0IGlzIGxpa2VseSBjYWxsZWQgdGhyb3VnaCBgemNvbXBfY3JlYXRlYC4gRXZlbiBzbywgSSB0aGluayBJJ2xsIGFkZCBgenN0ZF9jcmVhdGVgIHRvIHRoZSBmb2N1cyBzeW1ib2xzIHRvIG1ha2UgY2VydGFpbiBJIGNhcHR1cmUgZXZlcnl0aGluZy4gSSdtIGdvaW5nIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgYHpzdGRfY3JlYXRlYCBmdW5jdGlvbiBpdHNlbGYgdG8gc29saWRpZnkgbXkgdW5kZXJzdGFuZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ1OTgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6MjY6MTYuMzY5NDcyODczWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjgwOTYyNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ6c3RkX2NyZWF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jPTUxPXN0YXRpYyBpbnQgenN0ZF9zZXR1cF9wYXJhbXMoc3RydWN0IHpjb21wX3BhcmFtcyAqcGFyYW1zKVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTcxLVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYzo3MjpcXHR6cC1cXHUwMDNlY2RpY3QgPSB6c3RkX2NyZWF0ZV9jZGljdF9ieXJlZmVyZW5jZShwYXJhbXMtXFx1MDAzZWRpY3QsXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTczLVxcdFxcdFxcdFxcdFxcdFxcdCAgcGFyYW1zLVxcdTAwM2VkaWN0X3N6LFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTc4LVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYzo3OTpcXHR6cC1cXHUwMDNlZGRpY3QgPSB6c3RkX2NyZWF0ZV9kZGljdF9ieXJlZmVyZW5jZShwYXJhbXMtXFx1MDAzZWRpY3QsXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTgwLVxcdFxcdFxcdFxcdFxcdFxcdCAgcGFyYW1zLVxcdTAwM2VkaWN0X3N6LFxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jPTkyPXN0YXRpYyB2b2lkIHpzdGRfZGVzdHJveShzdHJ1Y3QgemNvbXBfY3R4ICpjdHgpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMtMTE4LVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYzoxMTk6c3RhdGljIGludCB6c3RkX2NyZWF0ZShzdHJ1Y3QgemNvbXBfcGFyYW1zICpwYXJhbXMsIHN0cnVjdCB6Y29tcF9jdHggKmN0eClcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMtMTIwLXtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYy0xNTEtXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jOjE1MjpcXHRcXHR6Y3R4LVxcdTAwM2VjY3R4ID0genN0ZF9jcmVhdGVfY2N0eF9hZHZhbmNlZCh6cC1cXHUwMDNlY3VzdG9tX21lbSk7XFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jLTE1My1cXHRcXHRpZiAoIXpjdHgtXFx1MDAzZWNjdHgpXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMtMTU1LVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYzoxNTY6XFx0XFx0emN0eC1cXHUwMDNlZGN0eCA9IHpzdGRfY3JlYXRlX2RjdHhfYWR2YW5jZWQoenAtXFx1MDAzZWN1c3RvbV9tZW0pO1xcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYy0xNTctXFx0XFx0aWYgKCF6Y3R4LVxcdTAwM2VkY3R4KVxcbi0tXFxuZHJpdmVycy9ibG9jay96cmFtL2JhY2tlbmRfenN0ZC5jPTIwOD1jb25zdCBzdHJ1Y3QgemNvbXBfb3BzIGJhY2tlbmRfenN0ZCA9IHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svenJhbS9iYWNrZW5kX3pzdGQuYy0yMTAtXFx0LmRlY29tcHJlc3NcXHQ9IHpzdGRfZGVjb21wcmVzcyxcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmM6MjExOlxcdC5jcmVhdGVfY3R4XFx0PSB6c3RkX2NyZWF0ZSxcXG5kcml2ZXJzL2Jsb2NrL3pyYW0vYmFja2VuZF96c3RkLmMtMjEyLVxcdC5kZXN0cm95X2N0eFxcdD0genN0ZF9kZXN0cm95LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzoyNjoxNi40MjYyODc0MjdaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk0NDI5ODEwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQ29tcHJlc3Npb24gUGFyYW1ldGVyIENoYW5nZXMgaW4gWlJBTSoqXG5cbkFscmlnaHQsIGxldCdzIHplcm8gaW4gb24gYHpzdGRfY3JlYXRlYC4gVGhhdCBmZWVscyBsaWtlIHRoZSBrZXkgZnVuY3Rpb24gaGVyZS4gRmlyc3QsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIGNsZWFyIG9uIHRoZSByZWxldmFudCBmb2N1cyBzeW1ib2xzOiBgYWxnb3JpdGhtX3BhcmFtc19zdG9yZWAsIGBjb21wX3BhcmFtc19zdG9yZWAsIGBfX2NvbXBfYWxnb3JpdGhtX3N0b3JlYCwgYHpjb21wX2dldF9jYXBzYCwgYHpjb21wX3ZhbGlkYXRlX2xldmVsYCwgYW5kIHRoZSBhbHJlYWR5IGVzdGFibGlzaGVkIGB6c3RkX2NyZWF0ZWAuXG5cbk5leHQsIEknbGwgcXVpY2tseSByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgWlJBTSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW52b2x2ZWQuIEkgc2VlIGBaUkFNYCwgYFpSQU1fTVVMVElfQ09NUGAsIHRoZSBiYWNrZW5kIGNob2ljZXMgYFpSQU1fQkFDS0VORF9MWjRgLCBgWlJBTV9CQUNLRU5EX0xaNEhDYCwgYFpSQU1fQkFDS0VORF9aU1REYCwgYFpSQU1fQkFDS0VORF9ERUZMQVRFYCwgYFpSQU1fQkFDS0VORF84NDJgLCBhbmQgYFpSQU1fQkFDS0VORF9MWk9gLlxuXG5Ob3csIHB1dHRpbmcgaXQgYWxsIHRvZ2V0aGVyLCB0aGUgcGF0Y2ggc2VlbXMgdG8gYmUgcmVmaW5pbmcgaG93IGNvbXByZXNzaW9uIHBhcmFtZXRlcnMgYXJlIGhhbmRsZWQgd2l0aGluIFpSQU0uIEl0J3MgZW5oYW5jaW5nIHRoZSBjb21wcmVzc2lvbiBsZXZlbCBjYXBhYmlsaXRpZXMgYW5kIGFkZGluZyBkaWN0aW9uYXJ5IHN1cHBvcnQsIHdoaWNoIGlzIGEgZ29vZCBtb3ZlLiBPbiB0b3Agb2YgdGhhdCwgSSBzZWUgYSBmaXggZm9yIGEgbWVtb3J5IGxlYWsgd2l0aGluIGBjb21wX3BhcmFtc19zdG9yZWAgYW5kIGEgYml0IG9mIHRpZHlpbmcgdXAgYnkgcmVtb3ZpbmcgYSByZWR1bmRhbnQgcGFyYW1ldGVyIHJlbGVhc2UgaW4gYHpzdGRfY3JlYXRlYC4gVGhlIGNoYW5nZXMgc2VlbSB0byBiZSBmdW5jdGlvbmFsbHkgc291bmQgYW5kIGRpcmVjdGx5IGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UuIEkgY2FuIHNlZSB0aGlzIGJlaW5nIHRyaWdnZXJlZCBieSBzeXNmcyBhdHRyaWJ1dGVzIGxpa2UgYGFsZ29yaXRobV9wYXJhbXNgLCBgY29tcF9hbGdvcml0aG1gLCBhbmQgYHJlY29tcF9hbGdvcml0aG1gLlxuXG5Pa2F5LCBJIHRoaW5rIEkgaGF2ZSBhIGdvb2QgZ3Jhc3Agb24gdGhpcy4gSSBzaG91bGQgY2FsbCBgc2V0LXJlc3VsdHNgIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU1OTEsIk91dHB1dFRva2VucyI6MjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjY3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA3OjI2OjIyLjM3MDU4ODM0NVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwNzUzMzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJaUkFNXCIsXG4gICAgXCJaUkFNX01VTFRJX0NPTVBcIixcbiAgICBcIlpSQU1fQkFDS0VORF9MWjRcIixcbiAgICBcIlpSQU1fQkFDS0VORF9MWjRIQ1wiLFxuICAgIFwiWlJBTV9CQUNLRU5EX1pTVERcIixcbiAgICBcIlpSQU1fQkFDS0VORF9ERUZMQVRFXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfODQyXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfTFpPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWxnb3JpdGhtX3BhcmFtc19zdG9yZVwiLFxuICAgIFwiY29tcF9wYXJhbXNfc3RvcmVcIixcbiAgICBcIl9fY29tcF9hbGdvcml0aG1fc3RvcmVcIixcbiAgICBcInpjb21wX2dldF9jYXBzXCIsXG4gICAgXCJ6Y29tcF92YWxpZGF0ZV9sZXZlbFwiLFxuICAgIFwienN0ZF9jcmVhdGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB6cmFtIGNvbXByZXNzaW9uIHBhcmFtZXRlcnMgaGFuZGxpbmcuIEl0IGFkZHMgY2FwYWJpbGl0aWVzIGFuZCB2YWxpZGF0aW9uIGZvciBjb21wcmVzc2lvbiBsZXZlbHMgYW5kIGRpY3Rpb25hcnkgc3VwcG9ydC4gSXQgYWxzbyBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIGBjb21wX3BhcmFtc19zdG9yZWAgYW5kIHJlbW92ZXMgYSByZWR1bmRhbnQgcGFyYW1ldGVyIHJlbGVhc2UgaW4gYHpzdGRfY3JlYXRlYC4gVGhlc2UgY2hhbmdlcyBhcmUgZnVuY3Rpb25hbCBhbmQgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzeXNmcyBhdHRyaWJ1dGVzIGxpa2UgYGFsZ29yaXRobV9wYXJhbXNgLCBgY29tcF9hbGdvcml0aG1gLCBhbmQgYHJlY29tcF9hbGdvcml0aG1gLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlpSQU1cIixcbiAgICBcIlpSQU1fTVVMVElfQ09NUFwiLFxuICAgIFwiWlJBTV9CQUNLRU5EX0xaNFwiLFxuICAgIFwiWlJBTV9CQUNLRU5EX0xaNEhDXCIsXG4gICAgXCJaUkFNX0JBQ0tFTkRfWlNURFwiLFxuICAgIFwiWlJBTV9CQUNLRU5EX0RFRkxBVEVcIixcbiAgICBcIlpSQU1fQkFDS0VORF84NDJcIixcbiAgICBcIlpSQU1fQkFDS0VORF9MWk9cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhbGdvcml0aG1fcGFyYW1zX3N0b3JlXCIsXG4gICAgXCJjb21wX3BhcmFtc19zdG9yZVwiLFxuICAgIFwiX19jb21wX2FsZ29yaXRobV9zdG9yZVwiLFxuICAgIFwiemNvbXBfZ2V0X2NhcHNcIixcbiAgICBcInpjb21wX3ZhbGlkYXRlX2xldmVsXCIsXG4gICAgXCJ6c3RkX2NyZWF0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHpyYW0gY29tcHJlc3Npb24gcGFyYW1ldGVycyBoYW5kbGluZy4gSXQgYWRkcyBjYXBhYmlsaXRpZXMgYW5kIHZhbGlkYXRpb24gZm9yIGNvbXByZXNzaW9uIGxldmVscyBhbmQgZGljdGlvbmFyeSBzdXBwb3J0LiBJdCBhbHNvIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gYGNvbXBfcGFyYW1zX3N0b3JlYCBhbmQgcmVtb3ZlcyBhIHJlZHVuZGFudCBwYXJhbWV0ZXIgcmVsZWFzZSBpbiBgenN0ZF9jcmVhdGVgLiBUaGVzZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHN5c2ZzIGF0dHJpYnV0ZXMgbGlrZSBgYWxnb3JpdGhtX3BhcmFtc2AsIGBjb21wX2FsZ29yaXRobWAsIGFuZCBgcmVjb21wX2FsZ29yaXRobWAuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow78mk4[1] Phase: Succeeded StartedAt: 2026-06-27 07:26:34 +0000 UTC FinishedAt: 2026-06-27 07:26:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78mk4[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-27 07:26:34 +0000 UTC FinishedAt: 2026-06-27 07:26:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78mk4[2] Phase: Succeeded StartedAt: 2026-06-27 07:26:34 +0000 UTC FinishedAt: 2026-06-27 09:06:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-27 07:26:34 +0000 UTC FinishedAt: 2026-06-27 09:06:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 07:26:34 +0000 UTC FinishedAt: 2026-06-27 07:26:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 07:26:34 +0000 UTC FinishedAt: 2026-06-27 07:26:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"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-workflow78mk4/series-workflow78mk4-convert-artifact-2544057576/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 07:26:44 +0000 UTC FinishedAt: 2026-06-27 07:48:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 07:26:44 +0000 UTC FinishedAt: 2026-06-27 07:48:30 +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:*b1112ec6-6097-4aef-bea0-fb20b832856b,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-workflow78mk4/series-workflow78mk4-convert-artifact-2544057576/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": "36ce0689-142b-4bd8-ae66-154dadbe803c", "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-workflow78mk4/series-workflow78mk4-build-action-1188545118/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 07:26:44 +0000 UTC FinishedAt: 2026-06-27 07:48:20 +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:*b1112ec6-6097-4aef-bea0-fb20b832856b,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-workflow78mk4/series-workflow78mk4-convert-artifact-2544057576/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": "36ce0689-142b-4bd8-ae66-154dadbe803c", "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-workflow78mk4/series-workflow78mk4-build-action-1188545118/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 07:48:30 +0000 UTC FinishedAt: 2026-06-27 07:48:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 07:48:30 +0000 UTC FinishedAt: 2026-06-27 07:48:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 07:48:30 +0000 UTC FinishedAt: 2026-06-27 07:48:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 07:48:30 +0000 UTC FinishedAt: 2026-06-27 07:48:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-workflow78mk4/series-workflow78mk4-convert-artifact-2469295567/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 07:48:40 +0000 UTC FinishedAt: 2026-06-27 07:50:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 07:48:40 +0000 UTC FinishedAt: 2026-06-27 07:50:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*36ce0689-142b-4bd8-ae66-154dadbe803c,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-workflow78mk4/series-workflow78mk4-build-action-1188545118/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-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 07:50:58 +0000 UTC FinishedAt: 2026-06-27 07:50:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 07:50:58 +0000 UTC FinishedAt: 2026-06-27 07:50:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 07:50:58 +0000 UTC FinishedAt: 2026-06-27 08:16:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 07:50:58 +0000 UTC FinishedAt: 2026-06-27 08:16:38 +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:*b1112ec6-6097-4aef-bea0-fb20b832856b,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-workflow78mk4/series-workflow78mk4-convert-artifact-2469295567/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": "0ced8b67-1ff5-4c67-b7bd-8070ab0cad8b", "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-workflow78mk4/series-workflow78mk4-build-action-1575615971/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 07:50:58 +0000 UTC FinishedAt: 2026-06-27 08:16:14 +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:*b1112ec6-6097-4aef-bea0-fb20b832856b,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-workflow78mk4/series-workflow78mk4-convert-artifact-2469295567/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": "0ced8b67-1ff5-4c67-b7bd-8070ab0cad8b", "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-workflow78mk4/series-workflow78mk4-build-action-1575615971/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 08:16:38 +0000 UTC FinishedAt: 2026-06-27 08:16:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 08:16:38 +0000 UTC FinishedAt: 2026-06-27 08:16:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 08:16:38 +0000 UTC FinishedAt: 2026-06-27 08:18:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 08:16:38 +0000 UTC FinishedAt: 2026-06-27 08:18:28 +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:*0ced8b67-1ff5-4c67-b7bd-8070ab0cad8b,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-workflow78mk4/series-workflow78mk4-build-action-1575615971/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-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 08:18:38 +0000 UTC FinishedAt: 2026-06-27 09:06:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 08:18:38 +0000 UTC FinishedAt: 2026-06-27 09:06:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"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:*36ce0689-142b-4bd8-ae66-154dadbe803c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0ced8b67-1ff5-4c67-b7bd-8070ab0cad8b,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-workflow78mk4/series-workflow78mk4-build-action-1188545118/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-workflow78mk4/series-workflow78mk4-build-action-1575615971/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 08:18:38 +0000 UTC FinishedAt: 2026-06-27 08:18:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 08:18:38 +0000 UTC FinishedAt: 2026-06-27 08:18:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"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-workflow78mk4/series-workflow78mk4-convert-artifact-3842192264/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 08:18:38 +0000 UTC FinishedAt: 2026-06-27 08:18:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 08:18:38 +0000 UTC FinishedAt: 2026-06-27 08:18:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 08:18:38 +0000 UTC FinishedAt: 2026-06-27 08:18:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 08:18:49 +0000 UTC FinishedAt: 2026-06-27 09:06:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow78mk4[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["algorithm_params_store","comp_params_store","__comp_algorithm_store","zcomp_get_caps","zcomp_validate_level","zstd_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5422e496b313b9b0b2f6df068902d6c79925d5e9","config_name":"upstream-apparmor-kasan.config","enable_configs":["ZRAM","ZRAM_MULTI_COMP","ZRAM_BACKEND_LZ4","ZRAM_BACKEND_LZ4HC","ZRAM_BACKEND_ZSTD","ZRAM_BACKEND_DEFLATE","ZRAM_BACKEND_842","ZRAM_BACKEND_LZO"],"series_id":"2a18db34-6e0a-4c05-b13c-6537f66d620b","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-06-27 08:18:49 +0000 UTC FinishedAt: 2026-06-27 09:06:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*36ce0689-142b-4bd8-ae66-154dadbe803c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0ced8b67-1ff5-4c67-b7bd-8070ab0cad8b,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-workflow78mk4/series-workflow78mk4-build-action-1188545118/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-workflow78mk4/series-workflow78mk4-build-action-1575615971/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-workflow78mk4/series-workflow78mk4-convert-artifact-3842192264/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,}