Name: series-workflowc8fdp Phase: Succeeded StartedAt: 2026-08-19 14:47:22 +0000 UTC FinishedAt: 2026-08-19 18:41:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8fdp[0] Phase: Succeeded StartedAt: 2026-08-19 14:47:22 +0000 UTC FinishedAt: 2026-08-19 14:54:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8fdp[0].run-triage Phase: Succeeded StartedAt: 2026-08-19 14:47:22 +0000 UTC FinishedAt: 2026-08-19 14:54:31 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI" ], "series_id": "b49ab6ff-eb00-4be8-9fa2-8f5fd0594742" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__irq_apply_affinity_hint", "cpumask_local_spread", "stmmac_reinit_queues", "stmmac_xdp_open" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19faXJxX2FwcGx5X2FmZmluaXR5X2hpbnQmIzM0OywKICAgICYjMzQ7Y3B1bWFza19sb2NhbF9zcHJlYWQmIzM0OywKICAgICYjMzQ7c3RtbWFjX3JlaW5pdF9xdWV1ZXMmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9vcGVuJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgSVJRIGFmZmluaXR5IGhhbmRsaW5nIGluIHRoZSBzdG1tYWMgZHJpdmVyIGFuZCBjb3JlIElSUS9jcHVtYXNrIGNvZGUuIEl0IGFsbG9jYXRlcyBhIGNwdW1hc2sgdXNpbmcgYHphbGxvY19jcHVtYXNrX3ZhcmAgKHdoaWNoIHplcm9lcyB0aGUgbWVtb3J5KSBhbmQgZXhwbGljaXRseSBjbGVhcnMgaXQgd2l0aCBgY3B1bWFza19jbGVhcmAgYmVmb3JlIHVzZS4gVGhlIGNoYW5nZXMgdG8gYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGFuZCBgY3B1bWFza19sb2NhbF9zcHJlYWRgIGludm9sdmUgY29udHJvbCBmbG93IGFuZCBDUFUgbWFzayBsb2dpYyAoZS5nLiwgdXNpbmcgYGlycV9kZWZhdWx0X2FmZmluaXR5YCBpbnN0ZWFkIG9mIGBudW1fb25saW5lX2NwdXMoKWApLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBhbmQgbm8gaW5mby1sZWFrcyBpbnRyb2R1Y2VkLiBBbnkgcG90ZW50aWFsIGlzc3VlcyAoc3VjaCBhcyBhIGRpdmlzaW9uIGJ5IHplcm8gaWYgYGNwdW1hc2tfd2VpZ2h0YCByZXR1cm5zIDApIHdvdWxkIGJlIGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgdGVzdGluZyBvciBLQVNBTi9VQlNBTi4gVGh1cywgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUga2VybmVsIGxvZ2ljIGZvciBJUlEgYWZmaW5pdHkgaGludHMgKF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnQpIGFuZCBjcHVtYXNrIHNwcmVhZGluZyAoY3B1bWFza19sb2NhbF9zcHJlYWQpLCB3aGljaCBhcmUgdXNlZCBieSB2YXJpb3VzIGRyaXZlcnMuIEl0IGFsc28gbW9kaWZpZXMgdGhlIHN0bW1hYyBkcml2ZXIgdG8gdXNlIHRoZXNlIGZ1bmN0aW9ucyBjb3JyZWN0bHkuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjQ5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzA3ODJjZGNkMGJkYWQ1NDdlN2M4MmEzMTNkOGM0OGJmMTYwMzhhZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDE5IDE0OjQ5OjI3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCBhNzFmMGRmMjYzNzg1Li45NDljZWQ3ZTQ2ZDI4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTM4MjYsMTEgJiM0MzszODI2LDE2IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcdHN0cnVjdCBzdG1tYWNfbXNpICptc2kgPSBwcml2LVx1MDAzZW1zaTtcbiBcdGVudW0gcmVxdWVzdF9pcnFfZXJyIGlycV9lcnI7XG4mIzQzO1x0Y3B1bWFza192YXJfdCBhZmZpbml0eTtcbiBcdGludCBpcnFfaWR4ID0gMDtcbiBcdGNoYXIgKmludF9uYW1lO1xuJiM0MztcdGludCBub2RlO1xuIFx0aW50IHJldDtcbiBcdGludCBpO1xuIFxuJiM0MztcdGlmICghemFsbG9jX2NwdW1hc2tfdmFyKFx1MDAyNmFmZmluaXR5LCBHRlBfS0VSTkVMKSlcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcbiBcdC8qIEZvciBjb21tb24gaW50ZXJydXB0ICovXG4gXHRpbnRfbmFtZSA9IG1zaS1cdTAwM2VpbnRfbmFtZV9tYWM7XG4gXHRzcHJpbnRmKGludF9uYW1lLCBcJiMzNDslczolc1wmIzM0OywgZGV2LVx1MDAzZW5hbWUsIFwmIzM0O21hY1wmIzM0Oyk7XG5AQCAtMzkxNiw2ICYjNDM7MzkyMSw3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0fVxuIFxuIFx0LyogUmVxdWVzdCBSeCBNU0kgaXJxICovXG4mIzQzO1x0bm9kZSA9IGRldl90b19ub2RlKFx1MDAyNnByaXYtXHUwMDNlZGV2LVx1MDAzZWRldik7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcnhfcXVldWVzX3RvX3VzZTsgaSYjNDM7JiM0MzspIHtcbiBcdFx0aWYgKGkgXHUwMDNlPSBNVExfTUFYX1JYX1FVRVVFUylcbiBcdFx0XHRicmVhaztcbkBAIC0zOTM1LDggJiM0MzszOTQxLDEwIEBAIHN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0XHRcdGlycV9pZHggPSBpO1xuIFx0XHRcdGdvdG8gaXJxX2Vycm9yO1xuIFx0XHR9XG4tXHRcdGlycV9zZXRfYWZmaW5pdHlfaGludChtc2ktXHUwMDNlcnhfaXJxW2ldLFxuLVx0XHRcdFx0ICAgICAgY3B1bWFza19vZihpICUgbnVtX29ubGluZV9jcHVzKCkpKTtcbiYjNDM7XG4mIzQzO1x0XHRjcHVtYXNrX2NsZWFyKGFmZmluaXR5KTtcbiYjNDM7XHRcdGNwdW1hc2tfc2V0X2NwdShjcHVtYXNrX2xvY2FsX3NwcmVhZChpLCBub2RlKSwgYWZmaW5pdHkpO1xuJiM0MztcdFx0aXJxX3NldF9hZmZpbml0eV9hbmRfaGludChtc2ktXHUwMDNlcnhfaXJxW2ldLCBhZmZpbml0eSk7XG4gXHR9XG4gXG4gXHQvKiBSZXF1ZXN0IFR4IE1TSSBpcnEgKi9cbkBAIC0zOTU5LDEzICYjNDM7Mzk2NywxOCBAQCBzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0XHRpcnFfaWR4ID0gaTtcbiBcdFx0XHRnb3RvIGlycV9lcnJvcjtcbiBcdFx0fVxuLVx0XHRpcnFfc2V0X2FmZmluaXR5X2hpbnQobXNpLVx1MDAzZXR4X2lycVtpXSxcbi1cdFx0XHRcdCAgICAgIGNwdW1hc2tfb2YoaSAlIG51bV9vbmxpbmVfY3B1cygpKSk7XG4mIzQzO1xuJiM0MztcdFx0Y3B1bWFza19jbGVhcihhZmZpbml0eSk7XG4mIzQzO1x0XHRjcHVtYXNrX3NldF9jcHUoY3B1bWFza19sb2NhbF9zcHJlYWQoaSwgbm9kZSksIGFmZmluaXR5KTtcbiYjNDM7XHRcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQobXNpLVx1MDAzZXR4X2lycVtpXSwgYWZmaW5pdHkpO1xuIFx0fVxuIFxuJiM0MztcdGZyZWVfY3B1bWFza192YXIoYWZmaW5pdHkpO1xuJiM0MztcbiBcdHJldHVybiAwO1xuIFxuIGlycV9lcnJvcjpcbiYjNDM7XHRmcmVlX2NwdW1hc2tfdmFyKGFmZmluaXR5KTtcbiBcdHN0bW1hY19mcmVlX2lycShkZXYsIGlycV9lcnIsIGlycV9pZHgpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5kaWZmIC0tZ2l0IGEva2VybmVsL2lycS9tYW5hZ2UuYyBiL2tlcm5lbC9pcnEvbWFuYWdlLmNcbmluZGV4IDdlYjA3ZTNiZGI0YzIuLjM5MzdiYTI0ZGY2ZDYgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvaXJxL21hbmFnZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvaXJxL21hbmFnZS5jXG5AQCAtNTAzLDExICYjNDM7NTAzLDIxIEBAIEVYUE9SVF9TWU1CT0xfR1BMKGlycV9mb3JjZV9hZmZpbml0eSk7XG4gXG4gaW50IF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnQodW5zaWduZWQgaW50IGlycSwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKm0sIGJvb2wgc2V0YWZmaW5pdHkpXG4ge1xuJiM0MztcdHN0cnVjdCBpcnFfZGF0YSAqaXJxX2RhdGE7XG4gXHRpbnQgcmV0ID0gLUVJTlZBTDtcbiBcbiBcdHNjb3BlZF9pcnFkZXNjX2dldF9hbmRfbG9jayhpcnEsIElSUV9HRVRfREVTQ19DSEVDS19HTE9CQUwpIHtcbiBcdFx0c2NvcGVkX2lycWRlc2MtXHUwMDNlYWZmaW5pdHlfaGludCA9IG07XG4mIzQzO1x0XHRpcnFfZGF0YSA9IGlycV9kZXNjX2dldF9pcnFfZGF0YShzY29wZWRfaXJxZGVzYyk7XG4gXHRcdHJldCA9IDA7XG4mIzQzO1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIERvIG5vdCBvdmVyd3JpdGUgdGhlIGFmZmluaXR5IGluIGNhc2UgYW4gYWZmaW5pdHkgZm9yIHRoaXNcbiYjNDM7XHRcdCAqIElSUSBoYXMgYWxyZWFkeSBiZWVuIHJlcXVlc3RlZCwgZS5nLiBieSB3cml0aW5nIHRvXG4mIzQzO1x0XHQgKiAvcHJvYy9pcnEvXHUwMDNjblx1MDAzZS9zbXBfYWZmaW5pdHlcbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKGlycWRfYWZmaW5pdHlfd2FzX3NldChpcnFfZGF0YSkpXG4mIzQzO1x0XHRcdHNldGFmZmluaXR5ID0gZmFsc2U7XG4gXHR9XG4gXG4gXHRpZiAoIXJldCBcdTAwMjZcdTAwMjYgbSBcdTAwMjZcdTAwMjYgc2V0YWZmaW5pdHkpXG5kaWZmIC0tZ2l0IGEvbGliL2NwdW1hc2suYyBiL2xpYi9jcHVtYXNrLmNcbmluZGV4IDVhZGI5ODc0ZmJkMGYuLjczZTdiNjBhOTIwMTEgMTAwNjQ0XG4tLS0gYS9saWIvY3B1bWFzay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9saWIvY3B1bWFzay5jXG5AQCAtNiw2ICYjNDM7Niw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXhwb3J0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tZW1ibG9jay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbnVtYS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ludGVycnVwdC5oXHUwMDNlXG4gXG4gLyogVGhlc2UgYXJlIG5vdCBpbmxpbmUgYmVjYXVzZSBvZiBoZWFkZXIgdGFuZ2xlcy4gKi9cbiAjaWZkZWYgQ09ORklHX0NQVU1BU0tfT0ZGU1RBQ0tcbkBAIC04MSw4ICYjNDM7ODIsOSBAQCB2b2lkIF9faW5pdCBmcmVlX2Jvb3RtZW1fY3B1bWFza192YXIoY3B1bWFza192YXJfdCBtYXNrKVxuICAqIEBpOiBpbmRleCBudW1iZXJcbiAgKiBAbm9kZTogbG9jYWwgbnVtYV9ub2RlXG4gICpcbi0gKiBSZXR1cm46IG9ubGluZSBDUFUgYWNjb3JkaW5nIHRvIGEgbnVtYSBhd2FyZSBwb2xpY3k7IGxvY2FsIGNwdXMgYXJlIHJldHVybmVkXG4tICogZmlyc3QsIGZvbGxvd2VkIGJ5IG5vbi1sb2NhbCBvbmVzLCB0aGVuIGl0IHdyYXBzIGFyb3VuZC5cbiYjNDM7ICogUmV0dXJuOiBvbmxpbmUgQ1BVIGFjY29yZGluZyB0byB0aGUgZGVmYXVsdCBJUlEgYWZmaW5pdHkgYW5kIGEgbnVtYSBhd2FyZVxuJiM0MzsgKiBwb2xpY3k7IGxvY2FsIGNwdXMgYXJlIHJldHVybmVkIGZpcnN0LCBmb2xsb3dlZCBieSBub24tbG9jYWwgb25lcywgdGhlbiBpdFxuJiM0MzsgKiB3cmFwcyBhcm91bmQuXG4gICpcbiAgKiBGb3IgdGhvc2Ugd2hvIHdhbnRzIHRvIGVudW1lcmF0ZSBhbGwgQ1BVcyBiYXNlZCBvbiB0aGVpciBOVU1BIGRpc3RhbmNlcyxcbiAgKiBpLmUuIGNhbGwgdGhpcyBmdW5jdGlvbiBpbiBhIGxvb3AsIGxpa2U6XG5AQCAtMTEwLDkgJiM0MzsxMTIsOSBAQCB1bnNpZ25lZCBpbnQgY3B1bWFza19sb2NhbF9zcHJlYWQodW5zaWduZWQgaW50IGksIGludCBub2RlKVxuIFx0dW5zaWduZWQgaW50IGNwdTtcbiBcbiBcdC8qIFdyYXA6IHdlIGFsd2F5cyB3YW50IGEgY3B1LiAqL1xuLVx0aSAlPSBudW1fb25saW5lX2NwdXMoKTtcbiYjNDM7XHRpICU9IGNwdW1hc2tfd2VpZ2h0KGlycV9kZWZhdWx0X2FmZmluaXR5KTtcbiBcbi1cdGNwdSA9IHNjaGVkX251bWFfZmluZF9udGhfY3B1KGNwdV9vbmxpbmVfbWFzaywgaSwgbm9kZSk7XG4mIzQzO1x0Y3B1ID0gc2NoZWRfbnVtYV9maW5kX250aF9jcHUoaXJxX2RlZmF1bHRfYWZmaW5pdHksIGksIG5vZGUpO1xuIFxuIFx0V0FSTl9PTihjcHUgXHUwMDNlPSBucl9jcHVfaWRzKTtcbiBcdHJldHVybiBjcHU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NDk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19faXJxX2FwcGx5X2FmZmluaXR5X2hpbnQmIzM0OywKICAgICYjMzQ7Y3B1bWFza19sb2NhbF9zcHJlYWQmIzM0OywKICAgICYjMzQ7c3RtbWFjX3JlaW5pdF9xdWV1ZXMmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9vcGVuJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUga2VybmVsIGxvZ2ljIGZvciBJUlEgYWZmaW5pdHkgaGludHMgKF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnQpIGFuZCBjcHVtYXNrIHNwcmVhZGluZyAoY3B1bWFza19sb2NhbF9zcHJlYWQpLCB3aGljaCBhcmUgdXNlZCBieSB2YXJpb3VzIGRyaXZlcnMuIEl0IGFsc28gbW9kaWZpZXMgdGhlIHN0bW1hYyBkcml2ZXIgdG8gdXNlIHRoZXNlIGZ1bmN0aW9ucyBjb3JyZWN0bHkuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzA3ODJjZGNkMGJkYWQ1NDdlN2M4MmEzMTNkOGM0OGJmMTYwMzhhZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDE5IDE0OjQ5OjI3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKaW5kZXggYTcxZjBkZjI2Mzc4NS4uOTQ5Y2VkN2U0NmQyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCkBAIC0zODI2LDExICYjNDM7MzgyNiwxNiBAQCBzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2koc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAlzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpOwogCXN0cnVjdCBzdG1tYWNfbXNpICptc2kgPSBwcml2LSZndDttc2k7CiAJZW51bSByZXF1ZXN0X2lycV9lcnIgaXJxX2VycjsKJiM0MzsJY3B1bWFza192YXJfdCBhZmZpbml0eTsKIAlpbnQgaXJxX2lkeCA9IDA7CiAJY2hhciAqaW50X25hbWU7CiYjNDM7CWludCBub2RlOwogCWludCByZXQ7CiAJaW50IGk7CiAKJiM0MzsJaWYgKCF6YWxsb2NfY3B1bWFza192YXIoJmFtcDthZmZpbml0eSwgR0ZQX0tFUk5FTCkpCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKJiM0MzsKIAkvKiBGb3IgY29tbW9uIGludGVycnVwdCAqLwogCWludF9uYW1lID0gbXNpLSZndDtpbnRfbmFtZV9tYWM7CiAJc3ByaW50ZihpbnRfbmFtZSwgJiMzNDslczolcyYjMzQ7LCBkZXYtJmd0O25hbWUsICYjMzQ7bWFjJiMzNDspOwpAQCAtMzkxNiw2ICYjNDM7MzkyMSw3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCX0KIAogCS8qIFJlcXVlc3QgUnggTVNJIGlycSAqLwomIzQzOwlub2RlID0gZGV2X3RvX25vZGUoJmFtcDtwcml2LSZndDtkZXYtJmd0O2Rldik7CiAJZm9yIChpID0gMDsgaSAmbHQ7IHByaXYtJmd0O3BsYXQtJmd0O3J4X3F1ZXVlc190b191c2U7IGkmIzQzOyYjNDM7KSB7CiAJCWlmIChpICZndDs9IE1UTF9NQVhfUlhfUVVFVUVTKQogCQkJYnJlYWs7CkBAIC0zOTM1LDggJiM0MzszOTQxLDEwIEBAIHN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCQkJaXJxX2lkeCA9IGk7CiAJCQlnb3RvIGlycV9lcnJvcjsKIAkJfQotCQlpcnFfc2V0X2FmZmluaXR5X2hpbnQobXNpLSZndDtyeF9pcnFbaV0sCi0JCQkJICAgICAgY3B1bWFza19vZihpICUgbnVtX29ubGluZV9jcHVzKCkpKTsKJiM0MzsKJiM0MzsJCWNwdW1hc2tfY2xlYXIoYWZmaW5pdHkpOwomIzQzOwkJY3B1bWFza19zZXRfY3B1KGNwdW1hc2tfbG9jYWxfc3ByZWFkKGksIG5vZGUpLCBhZmZpbml0eSk7CiYjNDM7CQlpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KG1zaS0mZ3Q7cnhfaXJxW2ldLCBhZmZpbml0eSk7CiAJfQogCiAJLyogUmVxdWVzdCBUeCBNU0kgaXJxICovCkBAIC0zOTU5LDEzICYjNDM7Mzk2NywxOCBAQCBzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2koc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAkJCWlycV9pZHggPSBpOwogCQkJZ290byBpcnFfZXJyb3I7CiAJCX0KLQkJaXJxX3NldF9hZmZpbml0eV9oaW50KG1zaS0mZ3Q7dHhfaXJxW2ldLAotCQkJCSAgICAgIGNwdW1hc2tfb2YoaSAlIG51bV9vbmxpbmVfY3B1cygpKSk7CiYjNDM7CiYjNDM7CQljcHVtYXNrX2NsZWFyKGFmZmluaXR5KTsKJiM0MzsJCWNwdW1hc2tfc2V0X2NwdShjcHVtYXNrX2xvY2FsX3NwcmVhZChpLCBub2RlKSwgYWZmaW5pdHkpOwomIzQzOwkJaXJxX3NldF9hZmZpbml0eV9hbmRfaGludChtc2ktJmd0O3R4X2lycVtpXSwgYWZmaW5pdHkpOwogCX0KIAomIzQzOwlmcmVlX2NwdW1hc2tfdmFyKGFmZmluaXR5KTsKJiM0MzsKIAlyZXR1cm4gMDsKIAogaXJxX2Vycm9yOgomIzQzOwlmcmVlX2NwdW1hc2tfdmFyKGFmZmluaXR5KTsKIAlzdG1tYWNfZnJlZV9pcnEoZGV2LCBpcnFfZXJyLCBpcnFfaWR4KTsKIAlyZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEva2VybmVsL2lycS9tYW5hZ2UuYyBiL2tlcm5lbC9pcnEvbWFuYWdlLmMKaW5kZXggN2ViMDdlM2JkYjRjMi4uMzkzN2JhMjRkZjZkNiAxMDA2NDQKLS0tIGEva2VybmVsL2lycS9tYW5hZ2UuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvaXJxL21hbmFnZS5jCkBAIC01MDMsMTEgJiM0Mzs1MDMsMjEgQEAgRVhQT1JUX1NZTUJPTF9HUEwoaXJxX2ZvcmNlX2FmZmluaXR5KTsKIAogaW50IF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnQodW5zaWduZWQgaW50IGlycSwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKm0sIGJvb2wgc2V0YWZmaW5pdHkpCiB7CiYjNDM7CXN0cnVjdCBpcnFfZGF0YSAqaXJxX2RhdGE7CiAJaW50IHJldCA9IC1FSU5WQUw7CiAKIAlzY29wZWRfaXJxZGVzY19nZXRfYW5kX2xvY2soaXJxLCBJUlFfR0VUX0RFU0NfQ0hFQ0tfR0xPQkFMKSB7CiAJCXNjb3BlZF9pcnFkZXNjLSZndDthZmZpbml0eV9oaW50ID0gbTsKJiM0MzsJCWlycV9kYXRhID0gaXJxX2Rlc2NfZ2V0X2lycV9kYXRhKHNjb3BlZF9pcnFkZXNjKTsKIAkJcmV0ID0gMDsKJiM0MzsKJiM0MzsJCS8qCiYjNDM7CQkgKiBEbyBub3Qgb3ZlcndyaXRlIHRoZSBhZmZpbml0eSBpbiBjYXNlIGFuIGFmZmluaXR5IGZvciB0aGlzCiYjNDM7CQkgKiBJUlEgaGFzIGFscmVhZHkgYmVlbiByZXF1ZXN0ZWQsIGUuZy4gYnkgd3JpdGluZyB0bwomIzQzOwkJICogL3Byb2MvaXJxLyZsdDtuJmd0Oy9zbXBfYWZmaW5pdHkKJiM0MzsJCSAqLwomIzQzOwkJaWYgKGlycWRfYWZmaW5pdHlfd2FzX3NldChpcnFfZGF0YSkpCiYjNDM7CQkJc2V0YWZmaW5pdHkgPSBmYWxzZTsKIAl9CiAKIAlpZiAoIXJldCAmYW1wOyZhbXA7IG0gJmFtcDsmYW1wOyBzZXRhZmZpbml0eSkKZGlmZiAtLWdpdCBhL2xpYi9jcHVtYXNrLmMgYi9saWIvY3B1bWFzay5jCmluZGV4IDVhZGI5ODc0ZmJkMGYuLjczZTdiNjBhOTIwMTEgMTAwNjQ0Ci0tLSBhL2xpYi9jcHVtYXNrLmMKJiM0MzsmIzQzOyYjNDM7IGIvbGliL2NwdW1hc2suYwpAQCAtNiw2ICYjNDM7Niw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvZXhwb3J0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbWVtYmxvY2suaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9udW1hLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2ludGVycnVwdC5oJmd0OwogCiAvKiBUaGVzZSBhcmUgbm90IGlubGluZSBiZWNhdXNlIG9mIGhlYWRlciB0YW5nbGVzLiAqLwogI2lmZGVmIENPTkZJR19DUFVNQVNLX09GRlNUQUNLCkBAIC04MSw4ICYjNDM7ODIsOSBAQCB2b2lkIF9faW5pdCBmcmVlX2Jvb3RtZW1fY3B1bWFza192YXIoY3B1bWFza192YXJfdCBtYXNrKQogICogQGk6IGluZGV4IG51bWJlcgogICogQG5vZGU6IGxvY2FsIG51bWFfbm9kZQogICoKLSAqIFJldHVybjogb25saW5lIENQVSBhY2NvcmRpbmcgdG8gYSBudW1hIGF3YXJlIHBvbGljeTsgbG9jYWwgY3B1cyBhcmUgcmV0dXJuZWQKLSAqIGZpcnN0LCBmb2xsb3dlZCBieSBub24tbG9jYWwgb25lcywgdGhlbiBpdCB3cmFwcyBhcm91bmQuCiYjNDM7ICogUmV0dXJuOiBvbmxpbmUgQ1BVIGFjY29yZGluZyB0byB0aGUgZGVmYXVsdCBJUlEgYWZmaW5pdHkgYW5kIGEgbnVtYSBhd2FyZQomIzQzOyAqIHBvbGljeTsgbG9jYWwgY3B1cyBhcmUgcmV0dXJuZWQgZmlyc3QsIGZvbGxvd2VkIGJ5IG5vbi1sb2NhbCBvbmVzLCB0aGVuIGl0CiYjNDM7ICogd3JhcHMgYXJvdW5kLgogICoKICAqIEZvciB0aG9zZSB3aG8gd2FudHMgdG8gZW51bWVyYXRlIGFsbCBDUFVzIGJhc2VkIG9uIHRoZWlyIE5VTUEgZGlzdGFuY2VzLAogICogaS5lLiBjYWxsIHRoaXMgZnVuY3Rpb24gaW4gYSBsb29wLCBsaWtlOgpAQCAtMTEwLDkgJiM0MzsxMTIsOSBAQCB1bnNpZ25lZCBpbnQgY3B1bWFza19sb2NhbF9zcHJlYWQodW5zaWduZWQgaW50IGksIGludCBub2RlKQogCXVuc2lnbmVkIGludCBjcHU7CiAKIAkvKiBXcmFwOiB3ZSBhbHdheXMgd2FudCBhIGNwdS4gKi8KLQlpICU9IG51bV9vbmxpbmVfY3B1cygpOwomIzQzOwlpICU9IGNwdW1hc2tfd2VpZ2h0KGlycV9kZWZhdWx0X2FmZmluaXR5KTsKIAotCWNwdSA9IHNjaGVkX251bWFfZmluZF9udGhfY3B1KGNwdV9vbmxpbmVfbWFzaywgaSwgbm9kZSk7CiYjNDM7CWNwdSA9IHNjaGVkX251bWFfZmluZF9udGhfY3B1KGlycV9kZWZhdWx0X2FmZmluaXR5LCBpLCBub2RlKTsKIAogCVdBUk5fT04oY3B1ICZndDs9IG5yX2NwdV9pZHMpOwogCXJldHVybiBjcHU7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NDEKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA2NTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IElSUSBBZmZpbml0eSBhbmQgU3ByZWFkaW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlIGhhdmUgYSBwYXRjaCB0aGF0JiMzOTtzIGRlZmluaXRlbHkgaW50cm9kdWNpbmcgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwsIGFuZCB3ZSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3Qgd2F5IHRvIGZ1enogdGhlbS4gVGhlIGNoYW5nZXMgYXJlIHNwcmVhZCBhY3Jvc3MgYSBmZXcgYXJlYXMsIGFuZCB0aGF0IHJlcXVpcmVzIHVzIHRvIGJlIG1pbmRmdWwgb2Ygd2hhdCB3ZSYjMzk7cmUgbG9va2luZyBhdC4KCkZpcnN0LCB0aGVyZSBhcmUgc29tZSBwcmV0dHkgbG93LWxldmVsIGNoYW5nZXMgdG8gYGlycWAgaGFuZGxpbmcgaW4gYGtlcm5lbC9pcnEvbWFuYWdlLmNgIGFuZCBgbGliL2NwdW1hc2suY2AuIFNwZWNpZmljYWxseSwgYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGhhcyBiZWVuIG1vZGlmaWVkLCBhbG9uZyB3aXRoIHRoZSBgY3B1bWFza19sb2NhbF9zcHJlYWRgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIGd1dCBmZWVsaW5nIGlzIHRoYXQgYW55IG1vZGlmaWNhdGlvbiB0aGF0IHRvdWNoZXMgdGhlc2UgY29yZSBtb2R1bGVzIHNob3VsZCBiZSBmdXp6ZWQsIGl0JiMzOTtzIGp1c3QgdGhlIGJlc3QgdGhpbmcgdG8gZG8gZ2l2ZW4gdGhlaXIgd2lkZSBhcHBsaWNhYmlsaXR5LiBUaGUgYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGNoYW5nZSBpbmNsdWRlcyBhIGNoZWNrIGZvciBhbiBleGlzdGluZyBhZmZpbml0eSBzZXR0aW5nLiBUaGUgY2hhbmdlIGluIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAgYWxzbyBtb2RpZmllcyBpdHMgdXNhZ2UuCgpUaGVuIHdlIGhhdmUgYSBkcml2ZXItc3BlY2lmaWMgY2hhbmdlIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYC4gSXQmIzM5O3MgYWx0ZXJpbmcgaG93IElSUSBhZmZpbml0eSBpcyBoYW5kbGVkIHdpdGhpbiB0aGUgYHN0bW1hY2AgZHJpdmVyLCB1c2luZyBgY3B1bWFza19sb2NhbF9zcHJlYWRgIGFuZCBgaXJxX3NldF9hZmZpbml0eV9hbmRfaGludGAgbm93LCB3aGVyZSBpdCB1c2VkIHRvIHVzZSBgaXJxX3NldF9hZmZpbml0eV9oaW50YC4gVGhlIGBzdG1tYWNgIGRyaXZlciBpcyB1c2VkIG9uIFNUTWljcm9lbGVjdHJvbmljcyBFdGhlcm5ldCBoYXJkd2FyZSwgc28gaXQgbWlnaHQgYmUgYSBiaXQgbW9yZSBuaWNoZSwgYnV0IHRoZXNlIGRyaXZlcnMgb2Z0ZW4gc2hvdyB1cCBvbiBlbWJlZGRlZCBzeXN0ZW1zLCBzbyBpdCYjMzk7cyBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLgoKTXkgcHJpbWFyeSBmb2N1cyBoZXJlIGlzIGdvaW5nIHRvIGJlIG9uIHRoZSBjb3JlIGNoYW5nZXMgYmVjYXVzZSB0aG9zZSBoYXZlIHRoZSBwb3RlbnRpYWwgdG8gaW1wYWN0IGEgbXVjaCB3aWRlciByYW5nZSBvZiBoYXJkd2FyZSBhbmQgY29uZmlndXJhdGlvbnMuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIGZvY3VzIG9uIGZ1enppbmcgYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGFuZCBgY3B1bWFza19sb2NhbF9zcHJlYWRgLiBUaGVzZSBhcmUgY3JpdGljYWwgZnVuY3Rpb25zIHRoYXQgYXJlIHJlYWNoYWJsZSwgYW5kIHRodXMgd29ydGh5IG9mIG15IGF0dGVudGlvbi4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBhcmUgcmVxdWlyZWQgdG8gZW5hYmxlIHRoZSByZWxldmFudCBjb2RlIHBhdGhzLiBUaGUgY29kZSBmb3IgYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGxpdmVzIGluIGBrZXJuZWwvaXJxL21hbmFnZS5jYCwgd2hpY2gsIGFmdGVyIGEgcXVpY2sgY2hlY2sgb2YgdGhlIE1ha2VmaWxlLCBzZWVtcyB0byBiZSBjb21waWxlZCB1bmNvbmRpdGlvbmFsbHkgKG9yIGF0IGxlYXN0IGJhc2VkIG9uIGBDT05GSUdfR0VORVJJQ19IQVJESVJRU2AsIHdoaWNoIGlzIGVmZmVjdGl2ZWx5IHN0YW5kYXJkKS4gVGhhdCYjMzk7cyBpZGVhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYW5hZ2UubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9pcnEvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2lycS9NYWtlZmlsZS0yLVxua2VybmVsL2lycS9NYWtlZmlsZTozOm9iai15IDo9IGlycWRlc2MubyBoYW5kbGUubyBtYW5hZ2UubyBzcHVyaW91cy5vIHJlc2VuZC5vIGNoaXAubyBkdW1teWNoaXAubyBkZXZyZXMubyBrZXhlYy5vXG5rZXJuZWwvaXJxL01ha2VmaWxlLTQtb2JqLSQoQ09ORklHX0dFTkVSSUNfSVJRX0NISVApICYjNDM7PSBnZW5lcmljLWNoaXAub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NDgKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyBDb21waWxlIERlcGVuZGVuY2llcyoqCgpSaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgd2hhdCYjMzk7cyAqYWx3YXlzKiBiZWluZyBnZW5lcmF0ZWQuIEl0JiMzOTtzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgYm90dGxlbmVja3MuIEZpcnN0LCBgbWFuYWdlLm9gIGlzIGEgZ2l2ZW47IGl0JiMzOTtzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgYnVpbGQsIHByZXN1bWFibHkgZm9yIHNvbWV0aGluZyBjb3JlIGluIHRoZSBtYW5hZ2VtZW50IGFzcGVjdC4gQW5kLCBhcyBleHBlY3RlZCwgYGxpYi9jcHVtYXNrLm9gIGlzIGFub3RoZXIgb25lIHRoYXQgY29uc2lzdGVudGx5IHNob3dzIHVwLiBDUFUgbWFza3MgYXJlIG9mdGVuIGZ1bmRhbWVudGFsIGFuZCBJJiMzOTttIGd1ZXNzaW5nIHRoYXQgdGhpcyBpcyBmb3IgbWFuYWdpbmcgdGhvc2UgbWFza3MgaW4gdGhlIHNvZnR3YXJlLCBoZW5jZSBpdCBpcyBhbHdheXMgcmVxdWlyZWQuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGVzZSBhcmUgY29uc2lzdGVudGx5IG5lZWRlZC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIGluIGBzdG1tYWNfbWFpbi5jYCAuIFRoaXMgaXMgbGlrZWx5IHdoZXJlIHRoZSBtYWluIGRyaXZlciBsb2dpYyBvciBkZXZpY2UgaW5pdGlhbGl6YXRpb24gcmVzaWRlcy4gQ2hlY2tpbmcgdGhhdCBmaWxlIHdpbGwgZ2l2ZSB0aGUgbmVjZXNzYXJ5IGluc2lnaHQgdG8gdW5kZXJzdGFuZCB3aHkgdGhvc2UgcGFydGljdWxhciBvYmplY3QgZmlsZXMgYXJlIGFsd2F5cyBuZWVkZWQgaW4gYSBtb3JlIGNvbmNyZXRlIG1hbm5lci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfbWFpbi5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9Mj1vYmotJChDT05GSUdfU1RNTUFDX0VUSCkgJiM0Mzs9IHN0bW1hYy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozOnN0bW1hYy1vYmpzOj0gc3RtbWFjX21haW4ubyBzdG1tYWNfZXRodG9vbC5vIHN0bW1hY19tZGlvLm8gcmluZ19tb2RlLm9cdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS00LVx0ICAgICAgY2hhaW5fbW9kZS5vIGR3bWFjX2xpYi5vIGR3bWFjMTAwMF9jb3JlLm8gZHdtYWMxMDAwX2RtYS5vXHRcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyOTgKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIFNUTU1BQyBEcml2ZXIgQ29uZmlndXJhdGlvbiBhbmQgVmlydHVhbGl6YXRpb24qKgoKUmlnaHQsIHNvIEkgc2VlIHRoYXQgYENPTkZJR19TVE1NQUNfRVRIYCBpcywgYXMgZXhwZWN0ZWQsIGEgaGFyZCByZXF1aXJlbWVudCBmb3IgdGhlIFNUTU1BQyBkcml2ZXIuIE5vdGhpbmcgdW5leHBlY3RlZCB0aGVyZSwgYnV0IGFsd2F5cyBnb29kIHRvIGNvbmZpcm0gdGhlIGJhc2ljcy4KCk5vdywgbXkgbmV4dCB0aG91Z2h0IGlzIGFib3V0IHRoZSBtdWx0aS1NU0kgaW50ZXJydXB0IGhhbmRsaW5nIHdpdGhpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHZlcmlmeSB0aGUgcmVhY2hhYmlsaXR5IG9mIGBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpYCB3aXRoaW4gdGhlc2UgZW52aXJvbm1lbnRzLiBWaXJ0dWFsaXphdGlvbiBpbnRyb2R1Y2VzIHNvbWUgbnVhbmNlcyB3aGVuIGl0IGNvbWVzIHRvIGludGVycnVwdCBtYW5hZ2VtZW50LCBzbyBJIHdhbnQgdG8gZW5zdXJlIHRoZSBkcml2ZXIgaXMgYmVoYXZpbmcgYXMgYW50aWNpcGF0ZWQuIFNpbmNlIFNUTU1BQyBoYXMgYSBQQ0kgZHJpdmVyLCBgc3RtbWFjX3BjaS5jYCwgSSYjMzk7bGwgYmUgc3VyZSB0byBpbnZlc3RpZ2F0ZSB0aGF0IGRyaXZlciBmaWxlIGZvciByZWxldmFudCBpbnNpZ2h0cy4gVGhpcyB3aWxsIGhlbHAgd2l0aCBkZWJ1Z2dpbmcgaW4gY2FzZSBvZiBhbnkgaXNzdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19wY2kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT01Mz1vYmotJChDT05GSUdfRFdNQUNfTU9UT1JDT01NKVx0JiM0Mzs9IGR3bWFjLW1vdG9yY29tbS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1NDpzdG1tYWMtcGNpLW9ianM6PSBzdG1tYWNfcGNpLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Njg0CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBzdG1tYWNfcGNpLW9ianNgIENvbmZpZ3VyYXRpb24qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSBzZWUgdGhhdCBgc3RtbWFjX3BjaS1vYmpzYCBpcyAqZGVmaW5lZCogaW4gdGhlIG1ha2VmaWxlIG9yIGNvbmZpZywgZ3JlYXQuIFRoYXQmIzM5O3MgcHJvZ3Jlc3MuIEJ1dCwgaW1tZWRpYXRlbHksIHRoZSBuZXh0IHF1ZXN0aW9uIGhpdHMgbWU6IHdoYXQmIzM5O3MgdGhlIGFjdHVhbCAqY29uZmlndXJhdGlvbiogb2YgaXQ/IElzIGl0IGVuYWJsZWQ/IERpc2FibGVkPyBCdWlsdC1pbj8gQSBtb2R1bGU/IEFyZSB0aGVyZSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMgSSYjMzk7bSBtaXNzaW5nPyBJIG5lZWQgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBLY29uZmlnIG9wdGlvbnMgdG8gdW5kZXJzdGFuZCBob3cgYHN0bW1hY19wY2ktb2Jqc2AgaXMgZ2V0dGluZyBpbmNsdWRlZCAob3IgKm5vdCogaW5jbHVkZWQpIGluIHRoZSBmaW5hbCBidWlsZC4gSnVzdCBzZWVpbmcgdGhlIGRlZmluaXRpb24gaXNuJiMzOTt0IGVub3VnaDsgSSBuZWVkIHRoZSBmdWxsIHBpY3R1cmUgdG8gdHJvdWJsZXNob290IGVmZmVjdGl2ZWx5LiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29udGV4dC4gTGV0IG1lIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hYy1wY2kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT00OT1vYmotJChDT05GSUdfU1RNTUFDX0xJQlBDSSlcdCYjNDM7PSBzdG1tYWNfbGlicGNpLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjUwOm9iai0kKENPTkZJR19TVE1NQUNfUENJKVx0JiM0Mzs9IHN0bW1hYy1wY2kub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNTEtb2JqLSQoQ09ORklHX0RXTUFDX0lOVEVMKVx0JiM0Mzs9IGR3bWFjLWludGVsLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT01Mz1vYmotJChDT05GSUdfRFdNQUNfTU9UT1JDT01NKVx0JiM0Mzs9IGR3bWFjLW1vdG9yY29tbS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1NDpzdG1tYWMtcGNpLW9ianM6PSBzdG1tYWNfcGNpLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE0NwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBQb3RlbnRpYWwgSW1wYWN0IG9mIFBDSSBEcml2ZXIgQ29uZmlndXJhdGlvbiBDaGFuZ2VzKioKClJpZ2h0LCBzbyBgQ09ORklHX1NUTU1BQ19QQ0lgIOKAkyB0aGF0JiMzOTtzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIHRoZSBQQ0ktYmFzZWQgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmlwcGxlIGVmZmVjdHMsIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQuIE15IGltbWVkaWF0ZSBjb25jZXJuLCB0aG91Z2gsIGlzbiYjMzk7dCBqdXN0IHRoZSBkcml2ZXIgaXRzZWxmLiBGcm9tIHBhc3QgZXhwZXJpZW5jZSBJIGtub3cgdGhhdCBmdW5kYW1lbnRhbCBjaGFuZ2VzIGxpa2UgdGhpcyBvZnRlbiB0b3VjaCBsb3cgbGV2ZWwgc3VwcG9ydCBhbmQgaW5mcmFzdHJ1Y3R1cmUuCgpJdCBsb29rcyBsaWtlIHRoZSBzaWduaWZpY2FudCBtb2RpZmljYXRpb25zIGFyZSBhY3R1YWxseSB3aXRoaW4gYGtlcm5lbC9pcnEvbWFuYWdlLmNgIGFuZCBgbGliL2NwdW1hc2suY2AuIFRob3NlIGFyZSAqY29yZSoga2VybmVsIGFyZWFzIOKAkyBpbnRlcnJ1cHQgbWFuYWdlbWVudCBhbmQgQ1BVIG1hc2sgbWFuaXB1bGF0aW9uLCByZXNwZWN0aXZlbHkg4oCTIGFuZCBhcmUgYWJzb2x1dGVseSByZWFjaGFibGUgZnJvbSBhbnkgZHJpdmVyIHVzaW5nIHRoZSBpbnRlcnJ1cHRzIG9yIGFmZmluaXR5LiBUaGV5IGFyZSBoaWdobHkgbGlrZWx5IHRvIGJlIGRpcmVjdGx5IHRvdWNoZWQgYnkgdGhlc2Ugc29ydHMgb2YgY29uZmlnIGNoYW5nZXMuCgpUaGVyZWZvcmUgSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyBxdWlja2x5LiBJcyBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgZXhwb3J0ZWQ/IElmIHNvLCB0aGlzIHN1Z2dlc3RzIHRoYXQgdGhlIElSUSBhZmZpbml0eSBBUEkgaXMgZ29pbmcgdG8gYmUgcmVsZXZhbnQgYW5kIEkgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGNhbGxpbmcgcGF0dGVybnMgZnJvbSB0aGlzIGRyaXZlciwgYW5kIGhvdyBpdCBoYW5kbGVzIGFmZmluaXR5LiBUaGlzIGNvdWxkIGJlIGltcG9ydGFudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9pcnEvbWFuYWdlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2lycS9tYW5hZ2UuYz01MDQ9aW50IF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnQodW5zaWduZWQgaW50IGlycSwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKm0sIGJvb2wgc2V0YWZmaW5pdHkpXG4tLVxua2VybmVsL2lycS9tYW5hZ2UuYy01MjYtfVxua2VybmVsL2lycS9tYW5hZ2UuYzo1Mjc6RVhQT1JUX1NZTUJPTF9HUEwoX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCk7XG5rZXJuZWwvaXJxL21hbmFnZS5jLTUyOC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYxOAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkNoZWNraW5nIGZvciBgY3B1bWFza19sb2NhbF9zcHJlYWRgIEV4cG9ydCoqCgpBbHJpZ2h0LCB0aGF0IGNvbmZpcm1zIGl0LiBJIGtuZXcgaXQgd2FzIGxpa2VseSwgYnV0IEkgYWx3YXlzIHdhbnQgdG8gYmUgc3VyZSBiZWZvcmUgSSBzdGFydCBkb3duIGEgcGF0aC4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcXVpY2tseSB2ZXJpZnkgaWYgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYCBpcyBhY3R1YWxseSBleHBvcnRlZC4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBhdmFpbGFibGUgZm9yIG15IG1vZHVsZSB0byB1dGlsaXplLCBhbmQgaXNuJiMzOTt0IHNvbWVob3cgaGlkZGVuIG9yIHN1YmplY3QgdG8gc29tZSB3ZWlyZCBpbnRlcm5hbCBsaW5raW5nIGlzc3VlLiBUaGF0IGV4cG9ydCBzdGF0dXMgd2lsbCBiZSB0aGUgY3JpdGljYWwgbmV4dCBwb2ludCB0byBpbnZlc3RpZ2F0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qY3B1bWFza19sb2NhbF9zcHJlYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtsaWIvY3B1bWFzay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi9jcHVtYXNrLmM9MTEwPXVuc2lnbmVkIGludCBjcHVtYXNrX2xvY2FsX3NwcmVhZCh1bnNpZ25lZCBpbnQgaSwgaW50IG5vZGUpXG4tLVxubGliL2NwdW1hc2suYy0xMjEtfVxubGliL2NwdW1hc2suYzoxMjI6RVhQT1JUX1NZTUJPTChjcHVtYXNrX2xvY2FsX3NwcmVhZCk7XG5saWIvY3B1bWFzay5jLTEyMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkwMgoJCQkJCQkJb3V0cHV0OiA1NAoJCQkJCQkJdGhvdWdodHM6IDE1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIHllcywgdGhpcyBwYXRjaCBsb29rcyBzaWduaWZpY2FudC4gSXQmIzM5O3MgdG91Y2hpbmcgY29yZSBrZXJuZWwgbG9naWMgcmVsYXRlZCB0byBJUlEgYWZmaW5pdHkgaGludHMgYW5kIGhvdyB0aGUgYGNwdW1hc2tgIGlzIHNwcmVhZCBhY3Jvc3MgQ1BVcywgd2hpY2ggbWVhbnMgaXQgaW1wYWN0cyBxdWl0ZSBhIGZldyBkcml2ZXJzIHVuZGVyIHRoZSBob29kLiBUaGUgZmFjdCB0aGF0IGl0IGFsc28gYWRqdXN0cyB0aGUgYHN0bW1hY2AgZHJpdmVyIHRvICpjb3JyZWN0bHkqIGxldmVyYWdlIHRoZXNlIG1vZGlmaWVkIGZ1bmN0aW9ucyBpcyBhIGdvb2Qgc2lnbiwgZnVuY3Rpb25hbGx5LiBUaGlzIGltcGxpZXMgYW4gb3ZlcmFsbCBpbXByb3ZlbWVudCB0byB0aGUgc3lzdGVtLgoKR2l2ZW4gdGhhdCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIHByb3Blcmx5IGZ1enplZCBhbmQgdGVzdGVkLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIGZ1bmRhbWVudGFsIGtlcm5lbCBtZWNoYW5pc21zIGhlcmUsIHNvIHJvYnVzdCB0ZXN0aW5nIGlzIHBhcmFtb3VudC4KCk5vdywgYXMgZmFyIGFzIEZvY3VzU3ltYm9scywgSSBpbW1lZGlhdGVseSBzZWUgdGhlIGtleSBmdW5jdGlvbnMgdG8gd2F0Y2ggaGVyZTogYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgLCBhbmQgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYC4gVGhlc2UgYXJlIHRoZSBoZWFydCBvZiB0aGUgY2hhbmdlcywgaXQgc2VlbXMsIHNvIHRoZXkgd2lsbCBuZWVkIHNwZWNpYWwgYXR0ZW50aW9uLiBJZiB3ZSBpbmNsdWRlIHRoZSBkcml2ZXIgY2hhbmdlcyBJIG5lZWQgdG8ga2VlcCBhbiBleWUgb24gYHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2lgLgoKV2FpdCBhIG1pbnV0ZSwgaXNuJiMzOTt0IHRoYXQgYHN0bW1hY2AgZnVuY3Rpb24gc3RhdGljIGluIGBzdG1tYWNfbWFpbi5jYD8gTmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdDsgc3RhdGljIGZ1bmN0aW9ucyBoYXZlIGRpZmZlcmVudCBpbXBsaWNhdGlvbnMgZm9yIG92ZXJhbGwgY2hhbmdlIGltcGFjdC4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTM4MDQ9c3RhdGljIGludCBzdG1tYWNfbXNpX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzgyMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MzgyNDpzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzgyNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MDM5PXN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MDQ1LVx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VmbGFncyBcdTAwMjYgU1RNTUFDX0ZMQUdfTVVMVElfTVNJX0VOKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MDQ2Olx0XHRyZXQgPSBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQwNDctXHRlbHNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3MTgKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiA3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgZm9ybWF0dGVkIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgQ29kZSYjMzk7cyBTdGF0aWMgTmF0dXJlKioKCkFscmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUsIGFuZCBpdCYjMzk7cyBkZWZpbml0ZWx5IHBvaW50aW5nIHRvIGEgc3RhdGljIGNvbnN0cnVjdC4gVGhlIGluc3RydWN0aW9ucyBhcmUgcHJldHR5IGNsZWFyOiAmIzM0O1ByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucyYjMzQ7LiBUaGF0JiMzOTtzIG15IGd1aWRpbmcgcHJpbmNpcGxlIGhlcmUuIEdpdmVuIHRoYXQsIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gdGhlIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzLiBUaGF0IHBvaW50cyBtZSBhd2F5IGZyb20gdGhlIHN0YXRpYyBmdW5jdGlvbnMgaW1tZWRpYXRlbHkuCgpUaGlua2luZyBhYm91dCB3aGljaCBlbnRyeSBwb2ludHMgYXJlIHJlbGV2YW50LCBgc3RtbWFjX3JlcXVlc3RfaXJxYCBhbmQgYHN0bW1hY19vcGVuYCBzZWVtIGxpa2UgdGhlIGxpa2VseSBjYW5kaWRhdGVzIGZvciBpbnZlc3RpZ2F0aW9uLiBUaGV5JiMzOTtyZSBwcm9iYWJseSB0aGUgc3RhcnRpbmcgcG9pbnRzIGZvciB0aGUgd29yayBJIG5lZWQgdG8gZG8uIE5vdywgdG8gdW5kZXJzdGFuZCBob3cgYHN0bW1hY19yZXF1ZXN0X2lycWAgZnVuY3Rpb25zLCBJIHNob3VsZCBpbnZlc3RpZ2F0ZSB3aGF0IGNhbGxzICppdCouIFRoZSBjYWxsIGdyYXBoIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIGZsb3cgYW5kIGhvdyB0aGlzIHN0YXRpYyBlbnZpcm9ubWVudCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIGNhbGwgZ3JhcGggcmV2ZWFscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3JlcXVlc3RfaXJxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTM4MDQ9c3RhdGljIGludCBzdG1tYWNfbXNpX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzgyMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MzgyNDpzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzgyNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zOTg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzozOTg2OnN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxX3NpbmdsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zOTg3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQwMzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQwMzk6c3RhdGljIGludCBzdG1tYWNfcmVxdWVzdF9pcnEoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDA0MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MDQ1LVx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VmbGFncyBcdTAwMjYgU1RNTUFDX0ZMQUdfTVVMVElfTVNJX0VOKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MDQ2Olx0XHRyZXQgPSBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQwNDctXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQwNDg6XHRcdHJldCA9IHN0bW1hY19yZXF1ZXN0X2lycV9zaW5nbGUoZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDA0OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQxMzg9c3RhdGljIGludCBfX3N0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTc0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MTc1Olx0cmV0ID0gc3RtbWFjX3JlcXVlc3RfaXJxKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxNzYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzEzOT1pbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MjA4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MjA5Olx0cmV0ID0gc3RtbWFjX3JlcXVlc3RfaXJxKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcyMTAtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTQyCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRpdmluZyBpbnRvIHRoZSBgc3RtbWFjX29wZW5gIEVudHJ5IFBvaW50KioKClJpZ2h0LCBgc3RtbWFjX29wZW5gLiBUaGF0JiMzOTtzIHdoZXJlIGl0IGFsbCBiZWdpbnMsIGlzbiYjMzk7dCBpdD8gVGhlIHN0YXJ0aW5nIGd1bi4gV2hlbmV2ZXIgdGhlIG5ldHdvcmsgaW50ZXJmYWNlLCB3aGljaCBpcyBiYWNrZWQgYnkgYW4gU1RNaWNyb2VsZWN0cm9uaWNzIChTVE1NQUMpIEV0aGVybmV0IGRyaXZlciwgaXMgYWN0aXZhdGVkLCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBkcml2ZXIgaXMgdHJpZ2dlcmVkLCBieSB0aGlzIGZ1bmN0aW9uLiBJIGltbWVkaWF0ZWx5IGtub3cgdGhpcyBpcyB0aGUgZnVuY3Rpb24gdGhhdCBpbml0aWFsaXplcyB0aGUgaGFyZHdhcmUsIGNvbmZpZ3VyZXMgdGhlIE1BQywgc2V0cyB1cCB0aGUgRE1BIGNoYW5uZWxzLCBhbGxvY2F0ZXMgYnVmZmVycywgYW5kIGRvZXMgYWxsIHRoZSBncm91bmR3b3JrIHRvIGdldCB0aGUgRXRoZXJuZXQgaW50ZXJmYWNlIHJlYWR5IHRvIHRyYW5zbWl0IGFuZCByZWNlaXZlIHBhY2tldHMuIEl0JiMzOTtzIHRoZSBjcml0aWNhbCBmaXJzdCBzdGVwIGluIHRoZSBlbnRpcmUgY29tbXVuaWNhdGlvbiBwcm9jZXNzLiBGcm9tIGhlcmUsIGFsbCB0aGUgb3RoZXIgY29tcG9uZW50cyB3aWxsIGJlIGNvb3JkaW5hdGVkIGFuZCBsaW5rZWQsIHRoaXMgaXMgdGhlIGZpcnN0IGZ1bmN0aW9uIGNhbGxlZC4gSSBuZWVkIHRvIGtlZXAgdGhpcyB2ZXJ5IGZ1bmN0aW9uIGluIG1pbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19vcGVuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQwNjM9c3RtbWFjX3NldHVwX2RtYV9kZXNjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdW5zaWduZWQgaW50IG10dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxMjgtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxMjk6ICogIF9fc3RtbWFjX29wZW4gLSBvcGVuIGVudHJ5IHBvaW50IG9mIHRoZSBkcml2ZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDEzMC0gKiAgQGRldiA6IHBvaW50ZXIgdG8gdGhlIGRldmljZSBzdHJ1Y3R1cmUuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTM3LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MTM4OnN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTM5LVx0XHRcdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxOTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxOTY6c3RhdGljIGludCBzdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTk3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyMjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyMjQ6XHRyZXQgPSBfX3N0bW1hY19vcGVuKGRldiwgZG1hX2NvbmYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjI1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYxMTQ9c3RhdGljIGludCBzdG1tYWNfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjYxNTA6XHRcdHJldCA9IF9fc3RtbWFjX29wZW4oZGV2LCBkbWFfY29uZik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxNTEtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMjA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzMyMTpcdC5uZG9fb3BlbiA9IHN0bW1hY19vcGVuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzIyLVx0Lm5kb19zdGFydF94bWl0ID0gc3RtbWFjX3htaXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NjA3PWludCBzdG1tYWNfcmVpbml0X3F1ZXVlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCByeF9jbnQsIHU4IHR4X2NudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2MjYtXHRpZiAobmV0aWZfcnVubmluZyhkZXYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NjI3Olx0XHRyZXQgPSBzdG1tYWNfb3BlbihkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjI4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzYzMj1pbnQgc3RtbWFjX3JlaW5pdF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHJ4X3NpemUsIHUzMiB0eF9zaXplKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzY0My1cdGlmIChuZXRpZl9ydW5uaW5nKGRldikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc2NDQ6XHRcdHJldCA9IHN0bW1hY19vcGVuKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2NDUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzIyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU1RNTUFDIERyaXZlciYjMzk7cyBFbnRyeSBQb2ludCBmb3IgWERQIENvbXBhdGliaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBTVE1NQUMgZHJpdmVyIGNvZGUgZm9yIFhEUCBzdXBwb3J0LiBUaGUgc3RhcnRpbmcgcG9pbnQgc2VlbXMgdG8gYmUgYHN0bW1hY19vcGVuYCwgYnV0IHdhaXQgYSBzZWNvbmQuLi4gdGhhdCYjMzk7cyBkZWNsYXJlZCBhcyBzdGF0aWMuIEhtbSwgdGhhdCYjMzk7cyBhIGJpdCBvZiBhIHJvYWRibG9jay4gSSBuZWVkIGEgbm9uLXN0YXRpYyBlbnRyeSBwb2ludC4gTGV0IG1lIHNjYW4gdGhyb3VnaC4uLiBhaCwgeWVzLCBgc3RtbWFjX3hkcF9vcGVuYCEgVGhhdCBvbmUgaXNuJiMzOTt0IHN0YXRpYy4gQnV0LCBldmVuIGlmIEkgY2FuJiMzOTt0IGRpcmVjdGx5IHRhcmdldCBgc3RtbWFjX29wZW5gLCB0aGUga2V5IG1vZGlmaWNhdGlvbnMgYXJlIHByb2JhYmx5IGdvaW5nIHRvIGJlIGFyb3VuZCB0aGUgaW50ZXJydXB0IGhhbmRsaW5nLgoKUmlnaHQsIHNvIHRoYXQgcHJvYmFibHkgbWVhbnMgSSBzaG91bGQgYmUgZm9jdXNpbmcgb24gdGhlIGludGVycnVwdCBhZmZpbml0eSBzdHVmZi4gSSBjYW4gcHJvYmFibHkganVzdCBsZXZlcmFnZSBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgYW5kIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAuIFRoZXkgbG9vayBsaWtlIHRoZSBjb3JlIG9mIHRoZSBmdW5jdGlvbmFsaXR5IEkgbmVlZCB0byB0YXAgaW50by4gVGltZSB0byBkaXZlIGludG8gdGhlIGRlZmluaXRpb24gb2YgYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGFuZCBzZWUgZXhhY3RseSB3aGF0IGl0JiMzOTtzIGRvaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2lycV9hcHBseV9hZmZpbml0eV9oaW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2lycS9tYW5hZ2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvaXJxL21hbmFnZS5jPTUwMj1FWFBPUlRfU1lNQk9MX0dQTChpcnFfZm9yY2VfYWZmaW5pdHkpO1xua2VybmVsL2lycS9tYW5hZ2UuYy01MDMtXG5rZXJuZWwvaXJxL21hbmFnZS5jOjUwNDppbnQgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCh1bnNpZ25lZCBpbnQgaXJxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSwgYm9vbCBzZXRhZmZpbml0eSlcbmtlcm5lbC9pcnEvbWFuYWdlLmMtNTA1LXtcbi0tXG5rZXJuZWwvaXJxL21hbmFnZS5jLTUyNi19XG5rZXJuZWwvaXJxL21hbmFnZS5jOjUyNzpFWFBPUlRfU1lNQk9MX0dQTChfX2lycV9hcHBseV9hZmZpbml0eV9oaW50KTtcbmtlcm5lbC9pcnEvbWFuYWdlLmMtNTI4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDg1NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgYW5kIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAqKgoKUmlnaHQsICp3YWl0IGEgbWludXRlKi4gYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGlzICpub24tc3RhdGljKiBhbmQgKmV4cG9ydGVkKj8gVGhhdCYjMzk7cy4uLiBpbnRlcmVzdGluZywgYW5kIHNvbWV3aGF0IHVudXN1YWwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgaXQgYmVpbmcgZXhwb3NlZCBsaWtlIHRoYXQuIE15IGltbWVkaWF0ZSBxdWVzdGlvbnMgYXJlOiBXaGF0JiMzOTtzIHRoZSByYXRpb25hbGUgYmVoaW5kIGV4cG9ydGluZyBpdD8gV2hhdCBwb3RlbnRpYWwgdXNlIGNhc2VzIGFyZSB0aGVyZSBvdXRzaWRlIG9mIGl0cyBwcmltYXJ5IG1vZHVsZT8gQXJlIHRoZXJlIGFueSBoaWRkZW4gc2lkZSBlZmZlY3RzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IGxpa2VseSBpc3N1ZXMgcmVsYXRpbmcgdG8gaXRzIHdpZGVyIGFjY2Vzc2liaWxpdHk/IEFueSByYWNlIGNvbmRpdGlvbnMsIHBvdGVudGlhbCBmb3IgbWlzdXNlLCBvciB1bmV4cGVjdGVkIGRlcGVuZGVuY2llcz8KCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBzZW1hbnRpY3Mgb2YgdGhhdCBmdW5jdGlvbiBhbmQgaXRzIGludGVuZGVkIHVzZSBjYXNlLiBBbHNvLCBJIG5lZWQgdG8gY2hlY2sgaG93IHRoZSBleHBvcnRlZCBub24tc3RhdGljIG5hdHVyZSBhZmZlY3RzIHRoZSBjb21waWxhdGlvbiBhbmQgbGlua2luZyBwcm9jZXNzLCBhcyBjb21wYXJlZCB0byBzaW1pbGFyIHN0YXRpYyBmdW5jdGlvbnMuIE15IHByaW1hcnkgY29uY2VybiB3b3VsZCBiZSB0byBlbnN1cmUgdGhhdCB0aGUgYnJvYWRlciBleHBvc3VyZSBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgdnVsbmVyYWJpbGl0aWVzIG9yIHVuZXhwZWN0ZWQgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIga2VybmVsIHN1YnN5c3RlbXMsIG9yIHRoYXQgaXQgaXMgbm90IG1hc2tpbmcgYSBwb3RlbnRpYWxseSBtb3JlIHJvYnVzdCBkZXNpZ24uCgpTaW5jZSB0aGlzIGlzIHJlbGF0ZWQgdG8gaW50ZXJydXB0IGhhbmRsaW5nLCBJIHN1c3BlY3QgdGhlIGV4cG9ydGVkIG5hdHVyZSBtaWdodCBiZSByZWxhdGVkIHRvIG1vcmUgY29tcGxleCBzY2hlZHVsaW5nIG9yIGR5bmFtaWMgYWZmaW5pdHkgYWRqdXN0bWVudHMsIG1heWJlIGV2ZW4gc29tZXRoaW5nIHVzZXItc3BhY2UgaW50ZXJhY3RzIHdpdGggKHRob3VnaCB0aGF0IHNlZW1zIGxlc3MgbGlrZWx5IGZvciBhbiBpbnRlcm5hbCBmdW5jdGlvbiBuYW1lIGxpa2UgdGhpcykuCgpUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY29uZmlybSB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uLiBUaW1lIHRvIGNoZWNrIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAgaW4gcmVsYXRpb24gdG8gdGhpcywgc2luY2UgdGhhdCBpcyBvYnZpb3VzbHkgaW52b2x2ZWQuIEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCB0aGUgZXhhY3QgbG9naWMgYmVoaW5kIHRoYXQgZnVuY3Rpb24uIFdoYXQgc29ydCBvZiBjb25zdHJhaW50cyBhcmUgaW4gcGxhY2U/IERvZXMgdGhlIHNwcmVhZCBiZWhhdmlvciBpbmZsdWVuY2UgaG93IGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCB3b3Jrcz8gSXMgdGhlcmUgc29tZSB0aWdodCBjb3VwbGluZyBJJiMzOTttIG5vdCBpbW1lZGlhdGVseSBzZWVpbmc/IEFyZSB0aGUgcmVzdWx0cyBkZXBlbmRlbnQgb24gc3BlY2lmaWMgYXJjaGl0ZWN0dXJhbCBmZWF0dXJlcyBvciBrZXJuZWwgY29uZmlndXJhdGlvbnM/CgpJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGNoYW5nZXMgdG8gdGhlIGludGVycnVwdCBhZmZpbml0eSBzeXN0ZW0gb24gcGVyZm9ybWFuY2UsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgYW5kIHdvcmtsb2Fkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y3B1bWFza19sb2NhbF9zcHJlYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtsaWIvY3B1bWFzay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi9jcHVtYXNrLmM9NzQ9dm9pZCBfX2luaXQgZnJlZV9ib290bWVtX2NwdW1hc2tfdmFyKGNwdW1hc2tfdmFyX3QgbWFzaylcbi0tXG5saWIvY3B1bWFzay5jLTgwLS8qKlxubGliL2NwdW1hc2suYzo4MTogKiBjcHVtYXNrX2xvY2FsX3NwcmVhZCAtIHNlbGVjdCB0aGUgaSYjMzk7dGggY3B1IGJhc2VkIG9uIE5VTUEgZGlzdGFuY2VzXG5saWIvY3B1bWFzay5jLTgyLSAqIEBpOiBpbmRleCBudW1iZXJcbi0tXG5saWIvY3B1bWFzay5jLTkyLSAqIGZvciAoaSA9IDA7IGkgXHUwMDNjIG51bV9vbmxpbmVfY3B1cygpOyBpJiM0MzsmIzQzOykge1xubGliL2NwdW1hc2suYzo5MzogKlx0Y3B1ID0gY3B1bWFza19sb2NhbF9zcHJlYWQoaSwgbm9kZSk7XG5saWIvY3B1bWFzay5jLTk0LSAqXHRkb19zb21ldGhpbmcoY3B1KTtcbi0tXG5saWIvY3B1bWFzay5jLTEwNi0gKiBlbnVtZXJhdGlvbiBpcyBPKHNjaGVkX2RvbWFpbnNfbnVtYV9sZXZlbHMgKiBucl9jcHVfaWRzKSwgd2hpbGVcbmxpYi9jcHVtYXNrLmM6MTA3OiAqIGNwdW1hc2tfbG9jYWxfc3ByZWFkKCkgd2hlbiBjYWxsZWQgZm9yIGVhY2ggY3B1IGlzXG5saWIvY3B1bWFzay5jLTEwOC0gKiBPKHNjaGVkX2RvbWFpbnNfbnVtYV9sZXZlbHMgKiBucl9jcHVfaWRzICogbG9nKG5yX2NwdV9pZHMpKS5cbmxpYi9jcHVtYXNrLmMtMTA5LSAqL1xubGliL2NwdW1hc2suYzoxMTA6dW5zaWduZWQgaW50IGNwdW1hc2tfbG9jYWxfc3ByZWFkKHVuc2lnbmVkIGludCBpLCBpbnQgbm9kZSlcbmxpYi9jcHVtYXNrLmMtMTExLXtcbi0tXG5saWIvY3B1bWFzay5jLTEyMS19XG5saWIvY3B1bWFzay5jOjEyMjpFWFBPUlRfU1lNQk9MKGNwdW1hc2tfbG9jYWxfc3ByZWFkKTtcbmxpYi9jcHVtYXNrLmMtMTIzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTc1OAoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgRnVuY3Rpb24gVmlzaWJpbGl0eSBpbiB0aGUgU1RNTUFDIERyaXZlcioqCgpPa2F5LCBzbyBgY3B1bWFza19sb2NhbF9zcHJlYWRgIGlzIGV4cG9zZWQgdG8gb3RoZXIgbW9kdWxlcywgd2hpY2ggaXNuJiMzOTt0IHVudXN1YWwuIExldCYjMzk7cyBzZWUgaWYgdGhhdCBoYXMgYW55IGltcGxpY2F0aW9ucyBoZXJlLiBOb3cgSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSB2aXNpYmlsaXR5IG9mIHNvbWUgZnVuY3Rpb25zIGluIHRoZSBTVE1NQUMgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGljaCBmdW5jdGlvbnMgYXJlIHN0YXRpYyBhbmQgdGhlcmVmb3JlIG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhlIGNvbXBpbGF0aW9uIHVuaXQsIGFuZCB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciBvdGhlciBtb2R1bGVzIHRvIGNhbGwuIFJpZ2h0LCBsZXQgbWUgY2hlY2sgYHN0bW1hY19vcGVuYC4gQWgsIHllcCwgaXQmIzM5O3Mgc3RhdGljLCBnb29kLiBTbywgdGhhdCYjMzk7cyBlbmNhcHN1bGF0ZWQgd2l0aGluIHRoZSBkcml2ZXImIzM5O3MgY29kZSBpdHNlbGYuIE9rYXksIGFuZCBob3cgYWJvdXQgYHN0bW1hY194ZHBfb3BlbmA/ICpUaGF0KiBvbmUmIzM5O3Mgbm90IHN0YXRpYy4gSW50ZXJlc3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY194ZHBfb3BlbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03MTA2PXZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MTM5OmludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzE0MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMTk1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkNvbnNpZGVyaW5nIHRoZSBJbmNsdXNpb24gb2YgYHN0bW1hY194ZHBfb3BlbmAqKgoKUmlnaHQsIGxldCYjMzk7cyBzZWUsIHdlJiMzOTtyZSBkZWZpbml0ZWx5IGxvb2tpbmcgYXQgaW5jb3Jwb3JhdGluZyBgc3RtbWFjX3hkcF9vcGVuYCBpbnRvIHRoaXMuIE1ha2VzIHNlbnNlLiBJdCYjMzk7cyBvbiB0aGUgbGlzdCBmb3IgYSByZWFzb24uIE5lZWQgdG8gbWFrZSBzdXJlIHdlJiMzOTtyZSBjb3ZlcmluZyBhbGwgYmFzZXMuIEl0JiMzOTtzIGEga2V5IHBhcnQgb2YgdGhlIFhEUCBpbnRlZ3JhdGlvbiwgc28gd2UgaGF2ZSB0byBmYWN0b3IgaXQgaW4uCgpOb3csIGEgcXVpY2sgY2hlY2sgb24gc29tZXRoaW5nIGVsc2UuIFdoYXQmIzM5O3MgdGhlIGltcGxlbWVudGF0aW9uIHN0YXR1cyBvZiBgaXJxX3NldF9hZmZpbml0eV9hbmRfaGludGA/IElzIGl0IGEgbWFjcm8gb3IgYSBmdW5jdGlvbj8gSXQmIzM5O3MgZWFzeSBlbm91Z2ggdG8gdmVyaWZ5IGJ1dCBpbXBvcnRhbnQgdG8gYmUgY2VydGFpbiwgYmVjYXVzZSB0aGF0IGhhcyBpbXBsaWNhdGlvbnMgZm9yIHRoZSBvdmVyYWxsIGFwcHJvYWNoLiBJIG5lZWQgdG8ga25vdyB3aGV0aGVyIGl0IGV4cGFuZHMgaW5saW5lIG9yIGlmIHRoZXJlJiMzOTtzIGEgZnVuY3Rpb24gY2FsbCBoYXBwZW5pbmcgYXQgcnVudGltZS4gVGhhdCBpbXBhY3RzIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcywgcG90ZW50aWFsIGlubGluaW5nLCBhbmQgZGVidWdnaW5nIHBvc3NpYmlsaXRpZXMuIEkmIzM5O2xsIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgcXVpY2sgYmVmb3JlIEkgZm9yZ2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oPTMzNT1pcnFfdXBkYXRlX2FmZmluaXR5X2hpbnQodW5zaWduZWQgaW50IGlycSwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKm0pXG4tLVxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaC0zNDAtLyoqXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oOjM0MTogKiBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50IC0gVXBkYXRlIHRoZSBhZmZpbml0eSBoaW50IGFuZCBhcHBseSB0aGUgcHJvdmlkZWRcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0LmgtMzQyLSAqXHRcdFx0ICAgICBjcHVtYXNrIHRvIHRoZSBpbnRlcnJ1cHRcbi0tXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oPTM0OT1zdGF0aWMgaW5saW5lIGludFxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaDozNTA6aXJxX3NldF9hZmZpbml0eV9hbmRfaGludCh1bnNpZ25lZCBpbnQgaXJxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSlcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0LmgtMzUxLXtcbi0tXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTM1NS0vKlxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaDozNTY6ICogRGVwcmVjYXRlZC4gVXNlIGlycV91cGRhdGVfYWZmaW5pdHlfaGludCgpIG9yIGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoKVxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaC0zNTctICogaW5zdGVhZC5cbi0tXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oPTM1OT1zdGF0aWMgaW5saW5lIGludCBpcnFfc2V0X2FmZmluaXR5X2hpbnQodW5zaWduZWQgaW50IGlycSwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKm0pXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTM2MC17XG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oOjM2MTpcdHJldHVybiBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KGlycSwgbSk7XG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTM2Mi19XG4tLVxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaD0zOTU9c3RhdGljIGlubGluZSBpbnQgaXJxX3VwZGF0ZV9hZmZpbml0eV9oaW50KHVuc2lnbmVkIGludCBpcnEsXG4tLVxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaC00MDAtXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oOjQwMTpzdGF0aWMgaW5saW5lIGludCBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KHVuc2lnbmVkIGludCBpcnEsXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTQwMi1cdFx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICptKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjk0NQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDExNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEludGVycnVwdCBBZmZpbml0eSBMb2dpYyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBpbmxpbmUgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBjYWxsaW5nIGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YC4gVGhhdCYjMzk7cyB0aGUgY29yZSBvZiB0aGUgbWF0dGVyIGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYWZmaW5pdHkgaXMgYmVpbmcgYXBwbGllZCwgc28gYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGlzIGRlZmluaXRlbHkgYSBrZXkgZm9jdXMgc3ltYm9sLiBJIGFsc28gc2VlIGNhbGxzIHRvIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAsIHNvIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGl0cyBkb2luZy4gQW5kIEkgc2VlIHRoYXQgYHN0bW1hY194ZHBfb3BlbmAgaXMgcHJlc2VudC4gVGhhdCYjMzk7cyByZWxldmFudCBzaW5jZSB0aGF0IGxpa2VseSBjb250YWlucyB0aGUgbG9naWMgc3Vycm91bmRpbmcgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb24gdG9vLgoKTm93LCB0byBtYWtlIHN1cmUgSSBjYW4gYWN0dWFsbHkgKnRlc3QqIHRoaXMgaW4gYSBRRU1VIGVudmlyb25tZW50LCBJJiMzOTtsbCBuZWVkIHRoZSByaWdodCBjb25maWd1cmF0aW9ucyBlbmFibGVkLiBJJiMzOTtsbCBuZWVkIGBTVE1NQUNfRVRIYCwgb2J2aW91c2x5LCBzaW5jZSBpdCYjMzk7cyBhbiBldGhlcm5ldCBkcml2ZXIuIEJ1dCwgSSBiZWxpZXZlIEkmIzM5O2xsIG5lZWQgYFNUTU1BQ19QQ0lgIHRvIGJlIGVuYWJsZWQgYXMgd2VsbCwgc28gSSBjYW4gcmVhY2ggdGhpcyBmdW5jdGlvbmFsaXR5IHZpYSBQQ0kuIExldCBtZSBkb3VibGUtY2hlY2sgdGhhdCBgU1RNTUFDX1BDSWAgaXMgdGhlIGNvcnJlY3QgcGF0aC4gSXQmIzM5O3MgZWFzeSB0byBnZXQgdGhlc2UgZGV0YWlscyB3cm9uZyBhbmQgSSBkb24mIzM5O3Qgd2FudCB0byB3YXN0ZSB0aW1lIGRlYnVnZ2luZyBzb21ldGhpbmcgSSBjYW4mIzM5O3QgZXZlbiByZXByb2R1Y2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1NUTU1BQ19QQ0kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM0ODcKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQ29uZmlybWluZyB0aGUgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCAqU1RNTUFDX1BDSSrigKYgdGhhdCBmZWVscyByaWdodCwgZG9lc24mIzM5O3QgaXQ/IEJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBhcmNoaXRlY3R1cmUgYW5kIHRoZSBoYXJkd2FyZSBJJiMzOTttIHRhcmdldGluZywgeWVhaCwgdGhhdCYjMzk7cyBkZWZpbml0ZWx5IHRoZSBrZXkgY29uZmlndXJhdGlvbiBJIG5lZWQgdG8gYmUgZm9jdXNpbmcgb24uIEJ1dCwgYmVmb3JlIEkgZ2V0IHRvbyBmYXIgZG93biB0aGF0IHBhdGgsIGxldCBtZSBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgKlNUTU1BQ19FVEgqIGlzbiYjMzk7dCBsdXJraW5nIGFzIHRoZSBwcmltYXJ5IGRyaXZlciBjb25maWd1cmF0aW9uIGluIHRoaXMgZW52aXJvbm1lbnQuIEl0JiMzOTtzIGFsd2F5cyB3aXNlIHRvIGVsaW1pbmF0ZSB0aGUgb2J2aW91cyBiZWZvcmUgZ2V0dGluZyBkZWVwIGludG8gdGhlIHdlZWRzIHdpdGggUENJIHNwZWNpZmljIHNldHRpbmdzLiBHb3R0YSBtYWtlIHN1cmUgSSYjMzk7bSBzdGFydGluZyBmcm9tIHRoZSBjb3JyZWN0LCBtb3N0IGJhc2ljIGZvdW5kYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjpjb25maWcgU1RNTUFDX0VUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTg6aWYgU1RNTUFDX0VUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTQwNz1jb25maWcgU1RNTUFDX1BDSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDE5LVx0ICBJZiB1bnN1cmUsIHNheSBOLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MjA6ZW5kaWYgIyBTVE1NQUNfRVRIXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzOTgzCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIFNUTU1BQyBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKUmlnaHQsIHNvLCBhcyBJIHVuZGVyc3RhbmQgaXQsIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgIGFyZSB0aGUgdHdvIGtleSBjb25maWd1cmF0aW9ucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhlcmUsIGNvcnJlY3Q/IEp1c3QgbWFraW5nIHN1cmUgSSYjMzk7bSBvbiB0aGUgcmlnaHQgdHJhY2sgYmVmb3JlIGRpdmluZyBkZWVwZXIuCgpOb3csIEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcgaW1wb3J0YW50OiBkb2VzIGBTVE1NQUNfUENJYCBoYXZlIGFueSBkZXBlbmRlbmNpZXM/IEFyZSB0aGVyZSBvdGhlciBjb25maWdzIHRoYXQgKm11c3QqIGJlIGVuYWJsZWQgb3IgYXJlIHJlcXVpcmVkIHRvIGJlIGNvbmZpZ3VyZWQgaW4gYSBjZXJ0YWluIHdheSwgYmVmb3JlIGBTVE1NQUNfUENJYCBjYW4gZXZlbiBiZSBjb25zaWRlcmVkPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwcyBoZXJlIHRvIGF2b2lkIGFueSBpbnRlZ3JhdGlvbiBoZWFkYWNoZXMgbGF0ZXIgb24uIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBjb25uZWN0ZWQgdG8gYFNUTU1BQ19QQ0lgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1RNTUFDX1BDSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA4LVx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBDSSBidXMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDM1NwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHJlYWRpbmcgYW5kIHRoaW5raW5nIGFib3V0IHRob3NlIGxpbmVzIG9mIGNvZGU6CgoqKkFuYWx5emluZyBgY29uZmlnIFNUTU1BQ19QQ0lgKioKCk9rYXksIHNvIEkgc2VlIGBjb25maWcgU1RNTUFDX1BDSWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBhbHJpZ2h0LCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgd2hlbiBpdCYjMzk7cyBiZWluZyB1c2VkIG9uIGEgUENJIGJ1cy4gVGhpcyBpcyBpbnRlcmVzdGluZy4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LCB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgdGhlIG90aGVyIHJlbGF0ZWQgb3B0aW9ucyB0byB0cnVseSBncmFzcCB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGlzLgoKSSBuZWVkIHRvIHJlYWQgdGhlIGxpbmVzIGFyb3VuZCB0aGlzIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGNvbmZpZyBvcHRpb24gY29udHJvbHMuIElzIGl0IGVuYWJsaW5nIHRoZSBQQ0kgaW50ZXJmYWNlIGZvciBTVE1NQUMsIG9yIGlzIGl0IGVuYWJsaW5nIHRoZSB3aG9sZSBTVE1NQUMgZHJpdmVyIGZvciBQQ0ktYmFzZWQgaGFyZHdhcmU/IE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgaXQmIzM5O3MgbGlrZWx5IHRoZSBmb3JtZXIsIGJ1dCBJIGNhbiYjMzk7dCBiZSBzdXJlIHdpdGhvdXQgbW9yZSBkYXRhLiBJdCYjMzk7cyBwcm9iYWJseSByZWxhdGVkIHRvIHN1cHBvcnRpbmcgYSBzcGVjaWZpYyBoYXJkd2FyZSBjb25maWd1cmF0aW9uLCBvciBtYXliZSBldmVuIGEgc3BlY2lmaWMgYm9hcmQuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyBpdCYjMzk7cyBkZWZpbmVkIGFuZCB1c2VkIGVsc2V3aGVyZSBpbiB0aGUgS2NvbmZpZyBmaWxlcy4gQXJlIHRoZXJlIGFueSBkZWZhdWx0IHNldHRpbmdzPyBBbnkgZGVwZW5kZW5jaWVzIG9uIG90aGVyIG1vZHVsZXMgb3IgZHJpdmVycz8gQW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZsYWdzIHRoYXQgYXJlIHRyaWdnZXJlZCBieSBpdD8KCkkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgZWxzZSBtaWdodCBiZSBjb250aW5nZW50IG9uIGBTVE1NQUNfUENJYC4gVGhpcyBpcyBrZXkuIEFyZSB0aGVyZSBvdGhlciByZWxhdGVkIG9wdGlvbnMsIGxpa2UgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb24sIGRldmljZSB0cmVlIHNldHRpbmdzLCBvciBNQUMgYWRkcmVzcyBhc3NpZ25tZW50IHRoYXQgYXJlIGFmZmVjdGVkPyBBbnkgcG9zc2libGUgY29uZmxpY3RzIHdpdGggb3RoZXIgZHJpdmVycyBvciBoYXJkd2FyZSBjb21wb25lbnRzPyBUaGUgbW9yZSBpbmZvcm1hdGlvbiBJIGNhbiBnYXRoZXIgYXJvdW5kIHRoaXMgb25lIGxpbmUsIHRoZSBiZXR0ZXIgSSBjYW4gZ3Jhc3AgdGhlIHdob2xlIFNUTU1BQyBpbXBsZW1lbnRhdGlvbi4gSSB3YW50IHRvIGJ1aWxkIGEgY29tcGxldGUgcGljdHVyZSBoZXJlIGFuZCB1bmRlcnN0YW5kIHRoZSByYW1pZmljYXRpb25zIG9mIHR1cm5pbmcgaXQgb24gb3Igb2ZmLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQwMDpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiA0MDE6XHRcdHNlbGVjdCBNT1RPUkNPTU1fUEhZXG4gNDAyOlx0XHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxuIDQwMzpcdFx0aGVscFxuIDQwNDpcdFx0ICBUaGlzIGVuYWJsZXMgZ2x1ZSBkcml2ZXIgZm9yIE1vdG9yY29tbSBEV01BQy1iYXNlZCBQQ0kgRXRoZXJuZXRcbiA0MDU6XHRcdCAgY29udHJvbGxlcnMuIEN1cnJlbnRseSBvbmx5IFlUNjgwMSBpcyBzdXBwb3J0ZWQuXG4gNDA2Olx0XG4gNDA3Olx0Y29uZmlnIFNUTU1BQ19QQ0lcbiA0MDg6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcJiMzNDtcbiA0MDk6XHRcdGRlcGVuZHMgb24gUENJXG4gNDEwOlx0XHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbiA0MTE6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gNDEyOlx0XHRoZWxwXG4gNDEzOlx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuIDQxNDpcdFx0ICBUaGlzIGRyaXZlciB3YXMgdGVzdGVkIG9uIFhMSU5YIFhDMlYzMDAwIEZGMTE1MkFNVDAyMjFcbiA0MTU6XHRcdCAgRDEyMTU5OTRBIFZJUlRFWCBGUEdBIGJvYXJkIGFuZCBTTlBTIFFvUyBJUEsgUHJvdG90eXBpbmcgS2l0LlxuIDQxNjpcdFxuIDQxNzpcdFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxuIDQxODpcdFxuIDQxOTpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTA3NwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlcGVuZGVuY2llcyBhbmQgQXNzdW1wdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBTVE1NQUNfUENJYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgc2V0dXAuIEl0IGxldmVyYWdlcyBib3RoIGBQQ0lgLCB3aGljaCwgbGV0JiMzOTtzIGJlIGhvbmVzdCwgaXMgYSBnaXZlbiBpbiBtb3N0IGNhc2VzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGgsIGFuZCBgQ09NTU9OX0NMS2AsIHdoaWNoIGlzIGEgY29tbW9uIGNsb2NrIGZyYW1ld29yayBmb3VuZCBhY3Jvc3MgYSBzaWduaWZpY2FudCBudW1iZXIgb2YgYXJjaGl0ZWN0dXJlcy4gTm90aGluZyB1bnVzdWFsIHRoZXJlLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gYFNUTU1BQ19FVEhgLCBhbmQgdGhlbiBJIGNhbiBwcm9jZWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgU1RNTUFDX0VUSFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIEhBU19JT01FTSBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuICAgNTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICAgNjpcdFx0ZGVwZW5kcyBvbiBFVEhUT09MX05FVExJTktcbiAgIDc6XHRcdHNlbGVjdCBNSUlcbiAgIDg6XHRcdHNlbGVjdCBQQ1NfWFBDU1xuICAgOTpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAxMDpcdFx0c2VsZWN0IFBIWUxJTktcbiAgMTE6XHRcdHNlbGVjdCBDUkMzMlxuICAxMjpcdFx0c2VsZWN0IFJFU0VUX0NPTlRST0xMRVJcbiAgMTM6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuICAxNDpcdFx0aGVscFxuICAxNTpcdFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgZm9yIHRoZSBFdGhlcm5ldCBJUHMgYnVpbHQgYXJvdW5kIGFcbiAgMTY6XHRcdCAgU3lub3BzeXMgSVAgQ29yZS5cbiAgMTc6XHRcbiAgMTg6XHRpZiBTVE1NQUNfRVRIXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU1NDQKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTVE1NQUMgRHJpdmVyJiMzOTtzIEVudHJ5IFBvaW50cyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGhhcyB0byBiZSBvbiBob3cgdGhlIFNUTU1BQyBkcml2ZXIgZ2V0cyBpbml0aWFsaXplZCBhbmQgaG93IHdlIGNhbiBiZXN0IGludGVyY2VwdCBpdHMgb3BlcmF0aW9uIGZvciBYRFAgaW50ZWdyYXRpb24uIFRoZSBrZXkgaGVyZSBoaW5nZXMgb24gYSBmZXcgc3RhbmRhcmQgY29uZmlndXJhdGlvbiBzeW1ib2xzOiBgSEFTX0lPTUVNICZhbXA7JmFtcDsgSEFTX0RNQWAsIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAsIGFuZCBgRVRIVE9PTF9ORVRMSU5LYC4gV2Uga25vdyB0aGVzZSBhcmUgZnVuZGFtZW50YWwsIGJ1dCB0aGV5IGRvbiYjMzk7dCBnaXZlIHVzIHRoZSBzcGVjaWZpYyBlbnRyeSBwb2ludC4KCldlJiMzOTt2ZSBnb3QgdHdvIG1haW4gY29uZmlnIG9wdGlvbnMgdGhhdCBhcmUgcmVsZXZhbnQ6IGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgLiBUaG9zZSBhcmUgbGlrZWx5IGdvaW5nIHRvIGdvdmVybiB3aGljaCBpbml0aWFsaXphdGlvbiBwYXRocyB3ZSBzaG91bGQgY29uc2lkZXIsIGJ1dCB3ZSBuZWVkIHRvIGRpZyBkZWVwZXIgZm9yIGEgZ29vZCBzdGFydGluZyBwb2ludC4KCkkgc3RhcnRlZCBieSBsaXN0aW5nIHBvc3NpYmxlIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdCwgY29uc2lkZXJpbmcgdGhlIHN0YW5kYXJkIGZvY3VzIHN5bWJvbHM6IGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCwgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYCwgYW5kIGBzdG1tYWNfeGRwX29wZW5gLiBCdXQgaG9sZCBvbiwgYHN0bW1hY194ZHBfb3BlbmAgaXMgY2xlYXJseSBvbmx5IGNhbGxlZCB3aGVuIFhEUCBpcyBhY3RpdmUuIFRoYXTigJlzIHByb2JhYmx5IG5vdCB0aGUgY29yZSBpbml0aWFsaXphdGlvbiBwYXRoIEkgbmVlZC4gSSBuZWVkIHNvbWV0aGluZyBtb3JlIGdlbmVyYWwuCgpMZXQmIzM5O3MgY2hlY2sgYHN0bW1hY19vcGVuYC4gQWgsIHRoYXTigJlzIHRoZSBgbmRvX29wZW5gIGNhbGxiYWNrIOKAkyB1c2VkIGluIHRoZSBzdGFuZGFyZCBuZXR3b3JrIGRldmljZSBsaWZlY3ljbGUuIEJ1dCwgaXQmIzM5O3MgZGVjbGFyZWQgYHN0YXRpY2AuIFNvLCBpdCYjMzk7cyBub3QgYSBncmVhdCBjaG9pY2UgZm9yIG91ciBob29rIHNpbmNlIHdlIGNhbiYjMzk7dCBlYXNpbHkgcGF0Y2ggaXQuIFN0YXRpYyBmdW5jdGlvbnMgbGltaXQgZmxleGliaWxpdHkuIEl0JiMzOTtzIGEga2V5IGVudHJ5cG9pbnQsIGJ1dCBub3QgdGhlIHJpZ2h0IHN5bWJvbCB0byBmb2N1cyBvbi4KClNvLCBsZXQgbWUgYmFjayB1cCBhIHN0ZXAuIFdoYXQgYWJvdXQgYHN0bW1hY19yZXN1bWVgPyBUaGF0JiMzOTtzIGxpa2VseSBjYWxsZWQgZHVyaW5nIHBvd2VyLXVwIG9yIHN5c3RlbSByZXN1bWUsIHdoaWNoIG1pZ2h0IGdpdmUgdXMgYSBkZWNlbnQgaG9vay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlbiBpdCBpcyBjYWxsZWQgdG8gZGV0ZXJtaW5lIGlmIGl0IGlzIHRoZSBiZXN0IHBvaW50IHRvIGluc2VydCBjb2RlLiBXZSBuZWVkIHRvIGdvIHRocm91Z2ggdGhlIGNvZGUgYWdhaW4sIGJ1dCB3aXRoIGEgZm9jdXMgb24gYHN0bW1hY19yZXN1bWVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfcmVzdW1lJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTgyNjM9c3RhdGljIHZvaWQgc3RtbWFjX3Jlc2V0X3F1ZXVlc19wYXJhbShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04Mjc2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4Mjc3OiAqIHN0bW1hY19yZXN1bWUgLSByZXN1bWUgY2FsbGJhY2tcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODI3OC0gKiBAZGV2OiBkZXZpY2UgcG9pbnRlclxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODI4MS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODI4MjppbnQgc3RtbWFjX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgyODMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODM2OC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgzNjk6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3Jlc3VtZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgzNzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgzNzEtLyogVGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgRVhQT1JUX0dQTF9TSU1QTEVfREVWX1BNX09QUygpIHdoZW4gQ09ORklHX1BNPW4gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODM3MjpERUZJTkVfU0lNUExFX0RFVl9QTV9PUFMoc3RtbWFjX3NpbXBsZV9wbV9vcHMsIHN0bW1hY19zdXNwZW5kLCBzdG1tYWNfcmVzdW1lKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODM3My1FWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfc2ltcGxlX3BtX29wcyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NzMyCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyB0aGUgYHN0bW1hY19yZXN1bWVgIEZ1bmN0aW9uKioKCk9rYXksIHNvIGBzdG1tYWNfcmVzdW1lYCBpcyBleHBvcnRlZCBhbmQgaXNuJiMzOTt0IHN0YXRpYywgd2hpY2ggbWVhbnMgaXQmIzM5O3MgZGVzaWduZWQgdG8gYmUgY2FsbGVkIGZyb20gb3V0c2lkZSB0aGUgbW9kdWxlLiBUaGF0IHJhaXNlcyBhIGtleSBxdWVzdGlvbiBpbiBteSBtaW5kOiB3aGF0JiMzOTtzIGl0cyBwdXJwb3NlIGFuZCBob3cgZG9lcyBpdCBpbnRlcmZhY2Ugd2l0aCB0aGUgaW50ZXJydXB0IHN5c3RlbT8gVGhlIGNsdWUgaXMgaW4gdGhlIGNvZGUuIEkgcmVjYWxsIHNlZWluZyBgc3RtbWFjX3JlcXVlc3RfaXJxYCBpbiB0aGUgdmljaW5pdHkuIE15IGZpcnN0IGxpbmUgb2YgaW52ZXN0aWdhdGlvbiB3aWxsIGJlIHRvIHRyYWNlIHRoZSBjYWxscywgc3RhcnRpbmcgd2l0aCBgc3RtbWFjX3Jlc3VtZWAsIGFuZCBmaW5kIHdoZXJlIHRoZSBpbnRlcnJ1cHQgcmVxdWVzdCBsb2dpYyBjb21lcyBpbnRvIHBsYXkuIERvZXMgaXQgcmUtZW5hYmxlIGludGVycnVwdHMsIHJlc3RvcmUgaW50ZXJydXB0IG1hc2tzLCBvciBzb21ldGhpbmcgbW9yZSBjb21wbGV4PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIHRvIGVuc3VyZSBwcm9wZXIgZGV2aWNlIHJlc3VtcHRpb24gYWZ0ZXIgYSBwb3dlciBtYW5hZ2VtZW50IGV2ZW50LiBJdCYjMzk7cyBsaWtlbHkgaW52b2x2ZWQgaW4gcmUtZXN0YWJsaXNoaW5nIHRoZSBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lcyBhZnRlciBhIHN1c3BlbmQsIGJ1dCB0aGUgZXhhY3QgbWVjaGFuaXNtIGlzIGNydWNpYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19yZXF1ZXN0X2lycSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0zODA0PXN0YXRpYyBpbnQgc3RtbWFjX21zaV9pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM4MjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjM4MjQ6c3RhdGljIGludCBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM4MjUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzk4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6Mzk4NjpzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9zaW5nbGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzk4Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MDM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MDM5OnN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQwNDAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDA0NS1cdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlZmxhZ3MgXHUwMDI2IFNUTU1BQ19GTEFHX01VTFRJX01TSV9FTilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDA0NjpcdFx0cmV0ID0gc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaShkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MDQ3LVx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MDQ4Olx0XHRyZXQgPSBzdG1tYWNfcmVxdWVzdF9pcnFfc2luZ2xlKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQwNDktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MTM4PXN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDE3NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDE3NTpcdHJldCA9IHN0bW1hY19yZXF1ZXN0X2lycShkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTc2LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcxMzk9aW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzIwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzIwOTpcdHJldCA9IHN0bW1hY19yZXF1ZXN0X2lycShkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MjEwLVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc4OTYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbnRlcnJ1cHQgQWZmaW5pdHkgQ2hhbmdlcyoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byB0cmFjZSBob3cgdGhpcyBpbnRlcnJ1cHQgYWZmaW5pdHkgY2hhbmdlIHJpcHBsZXMgdGhyb3VnaCB0aGUgc3lzdGVtLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYHN0bW1hY19yZXN1bWVgIHdvdWxkIGJlIHRoZSBrZXkgZnVuY3Rpb24sIG1heWJlIGNhbGxpbmcgYHN0bW1hY19yZXF1ZXN0X2lycWAsIGJ1dCBJIHNlZSBub3cgdGhhdCYjMzk7cyB3cm9uZy4gSXQmIzM5O3MgYWN0dWFsbHkgYHN0bW1hY194ZHBfb3BlbmAgdGhhdCBoYW5kbGVzIHRoZSBpbml0aWFsIHJlcXVlc3QuIFNvLCBgc3RtbWFjX3hkcF9vcGVuYCBsb29rcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGRlZXBlci4KCkhtbSwgd2FpdCBhIG1pbnV0ZS4gTG9va2luZyBjbG9zZXIgYXQgdGhlIHBhdGNoLCB0aGUgKmNvcmUqIGNoYW5nZXMgc2VlbSB0byBiZSB3aXRoaW4gYGtlcm5lbC9pcnEvbWFuYWdlLmNgIGFuZCBgbGliL2NwdW1hc2suY2AuIFRob3NlIGZpbGVzIGFyZSBwcmV0dHkgZ2VuZXJpYywgdGhvdWdoLCBjb3ZlcmluZyB0aGUgaW50ZXJydXB0IHN5c3RlbSBnZW5lcmFsbHkuIFRoYXQgbWVhbnMgdGhlIGtleSBmdW5jdGlvbnMgd2l0aGluIHRob3NlIGdlbmVyaWMgZmlsZXMgYXJlIGxpa2VseSBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgYW5kIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAuIFRoZXNlIGFyZSBkZWZpbml0ZWx5IHRoZSBmdW5jdGlvbnMgSSBuZWVkIHRvIGhvbmUgaW4gb24gdG8gZ3Jhc3AgdGhlIHJlYWwgaW1wYWN0IGhlcmUuCgpMZXQgbWUganVzdCBxdWlja2x5IGNoZWNrIGlmIGBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50YCBpdHNlbGYgaXMgdXNlZCBhbnl3aGVyZSBlbHNlIGluIHRoZSBjb2RlIGJhc2UsIGp1c3QgdG8gYmUgc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueSBvdGhlciBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vZGV2aWNlLmM9Mjg5Mz12b2lkIGhsX3NldF9pcnFfYWZmaW5pdHkoc3RydWN0IGhsX2RldmljZSAqaGRldiwgaW50IGlycSlcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2RldmljZS5jLTI4OTktXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2RldmljZS5jOjI5MDA6XHRpZiAoaXJxX3NldF9hZmZpbml0eV9hbmRfaGludChpcnEsIFx1MDAyNmhkZXYtXHUwMDNlaXJxX2FmZmluaXR5X21hc2spKVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9kZXZpY2UuYy0yOTAxLVx0XHRkZXZfZXJyKGhkZXYtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgc2V0dGluZyBpcnEgJWQgYWZmaW5pdHlcXG5cJiMzNDssIGlycSk7XG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2dhdWRpMi9nYXVkaTIuYz00NjYwPXN0YXRpYyBpbnQgZ2F1ZGkyX2VuYWJsZV9tc2l4KHN0cnVjdCBobF9kZXZpY2UgKmhkZXYpXG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2dhdWRpMi9nYXVkaTIuYy00NzUxLVx0XHRpcnEgPSBwY2lfaXJxX3ZlY3RvcihoZGV2LVx1MDAzZXBkZXYsIGkpO1xuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2dhdWRpMi9nYXVkaTIuYzo0NzUyOlx0XHRpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KGlycSwgTlVMTCk7XG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvZ2F1ZGkyL2dhdWRpMi5jLTQ3NTMtXHRcdGZyZWVfaXJxKGlycSwgXHUwMDI2aGRldi1cdTAwM2V1c2VyX2ludGVycnVwdFtqXSk7XG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2dhdWRpMi9nYXVkaTIuYz00ODA2PXN0YXRpYyB2b2lkIGdhdWRpMl9kaXNhYmxlX21zaXgoc3RydWN0IGhsX2RldmljZSAqaGRldilcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvZ2F1ZGkyL2dhdWRpMi5jLTQ4MzItXHRcdGlycSA9IHBjaV9pcnFfdmVjdG9yKGhkZXYtXHUwMDNlcGRldiwgaSk7XG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvZ2F1ZGkyL2dhdWRpMi5jOjQ4MzM6XHRcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoaXJxLCBOVUxMKTtcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9nYXVkaTIvZ2F1ZGkyLmMtNDgzNC1cdFx0ZnJlZV9pcnEoaXJxLCBcdTAwMjZoZGV2LVx1MDAzZXVzZXJfaW50ZXJydXB0W2pdKTtcbi0tXG5kcml2ZXJzL2NwdWZyZXEvcWNvbS1jcHVmcmVxLWh3LmM9NDQ1PXN0YXRpYyBpbnQgcWNvbV9jcHVmcmVxX2h3X2xtaF9pbml0KHN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5LCBpbnQgaW5kZXgpXG4tLVxuZHJpdmVycy9jcHVmcmVxL3Fjb20tY3B1ZnJlcS1ody5jLTQ3My1cbmRyaXZlcnMvY3B1ZnJlcS9xY29tLWNwdWZyZXEtaHcuYzo0NzQ6XHRyZXQgPSBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KGRhdGEtXHUwMDNldGhyb3R0bGVfaXJxLCBwb2xpY3ktXHUwMDNlY3B1cyk7XG5kcml2ZXJzL2NwdWZyZXEvcWNvbS1jcHVmcmVxLWh3LmMtNDc1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2NwdWZyZXEvcWNvbS1jcHVmcmVxLWh3LmM9NDgyPXN0YXRpYyBpbnQgcWNvbV9jcHVmcmVxX2h3X2NwdV9vbmxpbmUoc3RydWN0IGNwdWZyZXFfcG9saWN5ICpwb2xpY3kpXG4tLVxuZHJpdmVycy9jcHVmcmVxL3Fjb20tY3B1ZnJlcS1ody5jLTQ5NC1cbmRyaXZlcnMvY3B1ZnJlcS9xY29tLWNwdWZyZXEtaHcuYzo0OTU6XHRyZXQgPSBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KGRhdGEtXHUwMDNldGhyb3R0bGVfaXJxLCBwb2xpY3ktXHUwMDNlY3B1cyk7XG5kcml2ZXJzL2NwdWZyZXEvcWNvbS1jcHVmcmVxLWh3LmMtNDk2LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2NwdWZyZXEvcWNvbS1jcHVmcmVxLWh3LmM9NTAzPXN0YXRpYyBpbnQgcWNvbV9jcHVmcmVxX2h3X2NwdV9vZmZsaW5lKHN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5KVxuLS1cbmRyaXZlcnMvY3B1ZnJlcS9xY29tLWNwdWZyZXEtaHcuYy01MTQtXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZGF0YS1cdTAwM2V0aHJvdHRsZV93b3JrKTtcbmRyaXZlcnMvY3B1ZnJlcS9xY29tLWNwdWZyZXEtaHcuYzo1MTU6XHRpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KGRhdGEtXHUwMDNldGhyb3R0bGVfaXJxLCBOVUxMKTtcbmRyaXZlcnMvY3B1ZnJlcS9xY29tLWNwdWZyZXEtaHcuYy01MTYtXHRkaXNhYmxlX2lycV9ub3N5bmMoZGF0YS1cdTAwM2V0aHJvdHRsZV9pcnEpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfbWFpbi5jPTY2NT1zdGF0aWMgaW50IGZ1bl9lbmFibGVfaXJxcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfbWFpbi5jLTcwMi1cdFx0aXJxX3NldF9hZmZpbml0eV9ub3RpZmllcihwLVx1MDAzZWlycSwgXHUwMDI2cC1cdTAwM2VhZmZfbm90aWZ5KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfbWFpbi5jOjcwMzpcdFx0aXJxX3NldF9hZmZpbml0eV9hbmRfaGludChwLVx1MDAzZWlycSwgXHUwMDI2cC1cdTAwM2VhZmZpbml0eV9tYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfbWFpbi5jLTcwNC1cdFx0bmFwaV9lbmFibGUoXHUwMDI2cC1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM9NDgwPXN0YXRpYyBpbnQgZ3ZlX2FsbG9jX25vdGlmeV9ibG9ja3Moc3RydWN0IGd2ZV9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy01NjgtXHRcdGJsb2NrLVx1MDAzZWlycSA9IHByaXYtXHUwMDNlbXNpeF92ZWN0b3JzW21zaXhfaWR4XS52ZWN0b3I7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6NTY5Olx0XHRpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KGJsb2NrLVx1MDAzZWlycSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy01NzAtXHRcdFx0XHRcdCAgY3B1bWFza19vZihjdXJfY3B1KSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX3J4LmM9NTEzPXN0YXRpYyBpbnQgcnhfcmVxdWVzdF9pcnEoc3RydWN0IGhpbmljX3J4cSAqcnhxKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19yeC5jLTU0OS1cdGNwdW1hc2tfc2V0X2NwdShxcC1cdTAwM2VxX2lkICUgbnVtX29ubGluZV9jcHVzKCksIFx1MDAyNnJxLVx1MDAzZWFmZmluaXR5X21hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX3J4LmM6NTUwOlx0ZXJyID0gaXJxX3NldF9hZmZpbml0eV9hbmRfaGludChycS1cdTAwM2VpcnEsIFx1MDAyNnJxLVx1MDAzZWFmZmluaXR5X21hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX3J4LmMtNTUxLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jPTE3OT1zdGF0aWMgdm9pZCBpYm12bmljX2NsZWFuX3F1ZXVlX2FmZmluaXR5KHN0cnVjdCBpYm12bmljX2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYy0xODYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jOjE4NzpcdGlmIChpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KHF1ZXVlLVx1MDAzZWlycSwgTlVMTCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jLTE4OC1cdFx0bmV0ZGV2X3dhcm4oYWRhcHRlci1cdTAwM2VuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYz0yMTY9c3RhdGljIGludCBpYm12bmljX3NldF9xdWV1ZV9hZmZpbml0eShzdHJ1Y3QgaWJtdm5pY19zdWJfY3JxX3F1ZXVlICpxdWV1ZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jLTI0OS1cdGNwdW1hc2tfY29weShxdWV1ZS1cdTAwM2VhZmZpbml0eV9tYXNrLCBtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmM6MjUwOlx0cmMgPSBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KHF1ZXVlLVx1MDAzZWlycSwgcXVldWUtXHUwMDNlYWZmaW5pdHlfbWFzayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jLTI1MS1cdGZyZWVfY3B1bWFza192YXIobWFzayk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuYz0yNDI9c3RydWN0IG1seDVfaXJxICptbHg1X2lycV9hbGxvYyhzdHJ1Y3QgbWx4NV9pcnFfcG9vbCAqcG9vbCwgaW50IGksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuYy0yOTUtXHRcdGNwdW1hc2tfY29weShpcnEtXHUwMDNlbWFzaywgXHUwMDI2YWZfZGVzYy1cdTAwM2VtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9wY2lfaXJxLmM6Mjk2Olx0XHRpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KGlycS1cdTAwM2VtYXAudmlycSwgaXJxLVx1MDAzZW1hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuYy0yOTctXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MTkxND1zdGF0aWMgaW50IG1hbmFfaXJxX3NldHVwX251bWFfYXdhcmUodW5zaWduZWQgaW50ICppcnFzLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE5NDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxOTQxOlx0XHRcdFx0aXJxX3NldF9hZmZpbml0eV9hbmRfaGludCgqaXJxcyYjNDM7JiM0MzssIHRvcG9sb2d5X3NpYmxpbmdfY3B1bWFzayhjcHUpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE5NDItXHRcdFx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTE5NTI9c3RhdGljIHZvaWQgbWFuYV9pcnFfc2V0dXBfbGluZWFyKHVuc2lnbmVkIGludCAqaXJxcywgdW5zaWduZWQgaW50IGxlbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xOTU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTk2MDpcdFx0aXJxX3NldF9hZmZpbml0eV9hbmRfaGludCgqaXJxcyYjNDM7JiM0MzssIGNwdW1hc2tfb2YoY3B1KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xOTYxLVx0XHRsZW4tLTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yMDUzPXN0YXRpYyBpbnQgbWFuYV9nZF9zZXR1cF9pcnFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgbnZlYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMDg4LVx0XHRjcHUgPSBjcHVtYXNrX2xvY2FsX3NwcmVhZCgwLCBnYy1cdTAwM2VudW1hX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjA4OTpcdFx0aXJxX3NldF9hZmZpbml0eV9hbmRfaGludChpcnFzWzBdLCBjcHVtYXNrX29mKGNwdSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjA5MC1cdFx0aXJxcyYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0zODI0PXN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzk0Ni1cdFx0Y3B1bWFza19zZXRfY3B1KGNwdW1hc2tfbG9jYWxfc3ByZWFkKGksIG5vZGUpLCBhZmZpbml0eSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjM5NDc6XHRcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQobXNpLVx1MDAzZXJ4X2lycVtpXSwgYWZmaW5pdHkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zOTQ4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzk3Mi1cdFx0Y3B1bWFza19zZXRfY3B1KGNwdW1hc2tfbG9jYWxfc3ByZWFkKGksIG5vZGUpLCBhZmZpbml0eSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjM5NzM6XHRcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQobXNpLVx1MDAzZXR4X2lycVtpXSwgYWZmaW5pdHkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zOTc0LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM9OTQwPXN0YXRpYyBpbnQgYXRoMTFrX3BjaV9zZXRfaXJxX2FmZmluaXR5X2hpbnQoc3RydWN0IGF0aDExa19wY2kgKmFiX3BjaSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTk0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6OTQ2Olx0cmV0dXJuIGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoYWJfcGNpLVx1MDAzZXBkZXYtXHUwMDNlaXJxLCBtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtOTQ3LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jPTYxOD1zdGF0aWMgaW50IGF0aDEya19wY2lfc2V0X2lycV9hZmZpbml0eV9oaW50KHN0cnVjdCBhdGgxMmtfcGNpICphYl9wY2ksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy02MjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jOjYyNDpcdHJldHVybiBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KGFiX3BjaS1cdTAwM2VwZGV2LVx1MDAzZWlycSwgbSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTYyNS19XG4tLVxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmM9NTkwND1tZWdhc2FzX3NldF9oaWdoX2lvcHNfcXVldWVfYWZmaW5pdHlfYW5kX2hpbnQoc3RydWN0IG1lZ2FzYXNfaW5zdGFuY2UgKmluc3RhbmNlKVxuLS1cbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jLTU5MTgtXHRcdFx0aXJxID0gcGNpX2lycV92ZWN0b3IoaW5zdGFuY2UtXHUwMDNlcGRldiwgaSk7XG5kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzX2Jhc2UuYzo1OTE5Olx0XHRcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoaXJxLCBtYXNrKTtcbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jLTU5MjAtXHRcdH1cbi0tXG5kcml2ZXJzL3Njc2kvbXB0M3Nhcy9tcHQzc2FzX2Jhc2UuYz0zMjEyPV9iYXNlX2Fzc2lnbl9yZXBseV9xdWV1ZXMoc3RydWN0IE1QVDNTQVNfQURBUFRFUiAqaW9jKVxuLS1cbmRyaXZlcnMvc2NzaS9tcHQzc2FzL21wdDNzYXNfYmFzZS5jLTMyNDQtXHRcdFx0XHRpcnEgPSBwY2lfaXJxX3ZlY3Rvcihpb2MtXHUwMDNlcGRldiwgaW5kZXgpO1xuZHJpdmVycy9zY3NpL21wdDNzYXMvbXB0M3Nhc19iYXNlLmM6MzI0NTpcdFx0XHRcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoaXJxLCBtYXNrKTtcbmRyaXZlcnMvc2NzaS9tcHQzc2FzL21wdDNzYXNfYmFzZS5jLTMyNDYtXHRcdFx0fVxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmM9NTU5PWludCB2cF9zZXRfdnFfYWZmaW5pdHkoc3RydWN0IHZpcnRxdWV1ZSAqdnEsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVfbWFzaylcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jLTU3Ni1cdFx0XHRjcHVtYXNrX2NvcHkobWFzaywgY3B1X21hc2spO1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYzo1Nzc6XHRcdFx0aXJxX3NldF9hZmZpbml0eV9hbmRfaGludChpcnEsIG1hc2spO1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy01NzgtXHRcdH1cbi0tXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oPTMzNT1pcnFfdXBkYXRlX2FmZmluaXR5X2hpbnQodW5zaWduZWQgaW50IGlycSwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKm0pXG4tLVxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaC0zNDAtLyoqXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oOjM0MTogKiBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50IC0gVXBkYXRlIHRoZSBhZmZpbml0eSBoaW50IGFuZCBhcHBseSB0aGUgcHJvdmlkZWRcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0LmgtMzQyLSAqXHRcdFx0ICAgICBjcHVtYXNrIHRvIHRoZSBpbnRlcnJ1cHRcbi0tXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oPTM0OT1zdGF0aWMgaW5saW5lIGludFxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaDozNTA6aXJxX3NldF9hZmZpbml0eV9hbmRfaGludCh1bnNpZ25lZCBpbnQgaXJxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSlcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0LmgtMzUxLXtcbi0tXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTM1NS0vKlxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaDozNTY6ICogRGVwcmVjYXRlZC4gVXNlIGlycV91cGRhdGVfYWZmaW5pdHlfaGludCgpIG9yIGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoKVxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaC0zNTctICogaW5zdGVhZC5cbi0tXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oPTM1OT1zdGF0aWMgaW5saW5lIGludCBpcnFfc2V0X2FmZmluaXR5X2hpbnQodW5zaWduZWQgaW50IGlycSwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKm0pXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTM2MC17XG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oOjM2MTpcdHJldHVybiBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KGlycSwgbSk7XG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTM2Mi19XG4tLVxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaD0zOTU9c3RhdGljIGlubGluZSBpbnQgaXJxX3VwZGF0ZV9hZmZpbml0eV9oaW50KHVuc2lnbmVkIGludCBpcnEsXG4tLVxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaC00MDAtXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oOjQwMTpzdGF0aWMgaW5saW5lIGludCBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KHVuc2lnbmVkIGludCBpcnEsXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTQwMi1cdFx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICptKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjM2NQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDEwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBgdnBfc2V0X3ZxX2FmZmluaXR5YCBmb3IgQWZmaW5pdHkgQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBzZWVpbmcgdGhhdCBgdnBfc2V0X3ZxX2FmZmluaXR5YCBpcyB1c2VkIHdpdGhpbiBgdmlydGlvX3BjaV9jb21tb24uY2AuIFRoYXQmIzM5O3MgYSBrZXkgZmlsZSwgZXNwZWNpYWxseSBwcmV2YWxlbnQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBHaXZlbiBpdHMgY29tbW9uIHVzYWdlLCBgdnBfc2V0X3ZxX2FmZmluaXR5YCBpcyBhIHByaW1lIHRhcmdldCBmb3IgZGVlcGVyIGludmVzdGlnYXRpb24gcmVnYXJkaW5nIENQVSBhZmZpbml0eS4gTWFrZXMgc2Vuc2UuIEkgYWxzbyBub3RpY2VkIHRoYXQgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYCBwb3BzIHVwIGluIGBtYW5hX2dkX3NldHVwX2lycXNgIGFuZCBgc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaWAsIGJ1dCBgdnBfc2V0X3ZxX2FmZmluaXR5YCBpcyB0aGUgbW9yZSBpbW1lZGlhdGUgZm9jdXMgcmlnaHQgbm93LiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGUgZGV0YWlscyBvZiBob3cgYHZwX3NldF92cV9hZmZpbml0eWAgaXMgaW1wbGVtZW50ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZwX3NldF92cV9hZmZpbml0eSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYz01NDc9Y29uc3QgY2hhciAqdnBfYnVzX25hbWUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy01NTgtICovXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jOjU1OTppbnQgdnBfc2V0X3ZxX2FmZmluaXR5KHN0cnVjdCB2aXJ0cXVldWUgKnZxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1X21hc2spXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jLTU2MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyODIxCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkludmVzdGlnYXRpbmcgYHZwX3NldF92cV9hZmZpbml0eWAgRXhwb3J0KioKCk9rYXksIHNvIHRoZSBjb2RlJiMzOTtzIHBvaW50aW5nIHRvIGB2cF9zZXRfdnFfYWZmaW5pdHlgLiBNeSBmaXJzdCB0aG91Z2h0IGlzOiB3YWl0LCBpcyB0aGlzIGZ1bmN0aW9uICpleHBvcnRlZCo/IFRoYXQmIzM5O3MgYSBjcml0aWNhbCBkZXRhaWwgSSBuZWVkIHRvIG5haWwgZG93biByaWdodCBhd2F5LiBLbm93aW5nIGlmIHRoaXMgZnVuY3Rpb24gaXMgdmlzaWJsZSB0byBvdGhlciBtb2R1bGVzIG9yIGNvbXBvbmVudHMgaXMgZnVuZGFtZW50YWwgdG8gdW5kZXJzdGFuZGluZyBpdHMgcG90ZW50aWFsIGltcGFjdCBhbmQgaW50ZW5kZWQgdXNlLiBJZiBpdCYjMzk7cyBleHBvcnRlZCwgdGhhdCBzaWduaWZpY2FudGx5IGJyb2FkZW5zIHRoZSBzY29wZSBvZiB3aGVyZSBhbmQgaG93IGl0IG1pZ2h0IGJlIHVzZWQsIGFuZCB0aGVyZWZvcmUsIHBvdGVudGlhbGx5IGNoYW5nZXMgbXkgYW5hbHlzaXMgYW5kIHRoZSBjb25zaWRlcmF0aW9ucyBJIG5lZWQgdG8gbWFrZSBpbiByZWxhdGlvbiB0byB0aGlzIGZ1bmN0aW9uLiBUaGlzIGFsc28gaGFzIHNlY3VyaXR5IGltcGxpY2F0aW9uczsgdGhlIGltcGxpY2F0aW9ucyBvZiBhbiBleHBvcnRlZCBmdW5jdGlvbiBhcmUgZmFyIGRpZmZlcmVudCB0aGFuIGFuIGludGVybmFsIGZ1bmN0aW9uLgoKSSBpbW1lZGlhdGVseSBuZWVkIHRvIGNoZWNrIHRoZSBzeW1ib2wgdGFibGUsIHRoZSBsaW5rZXIgZmxhZ3MsIHRoZSBoZWFkZXIgZmlsZXMsIHdoYXRldmVyIGRvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxl4oCmIEkgbmVlZCB0aGUgZnVsbCBjb250ZXh0LiBJcyBpdCBtZWFudCB0byBiZSBhIHB1YmxpYyBBUEksIGEgcHJpdmF0ZSBpbnRlcm5hbCBmdW5jdGlvbiBtYXNxdWVyYWRpbmcgYXMgYSBwdWJsaWMgb25lLCBvciBhIHRyYW5zaXRpb25hbCB0aGluZz8gVGhpcyBzZXRzIHRoZSBzdGFnZSBmb3IgZXZlcnl0aGluZyBlbHNlLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hlcmUgaXQmIzM5O3MgKmRlZmluZWQqIGFuZCB3aGVyZSBpdCYjMzk7cyAqdXNlZCogdG8gZnVsbHkgZ3Jhc3AgdGhpcyBleHBvcnQuIFRoZSBzaWduaWZpY2FuY2Ugb2YgYW4gZXhwb3J0IGlzIGtleSwgYW5kIGlmIGl0JiMzOTtzIHRoZXJlIEkgd2lsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCBkb2VzIGF0IGEgbXVjaCBoaWdoZXIgbGV2ZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qdnBfc2V0X3ZxX2FmZmluaXR5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMTcxCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkRlYnVnZ2luZyB0aGUgRXhwb3J0IEZ1bmN0aW9uKioKCkFscmlnaHQsIGhhbmcgb24gYSBzZWNvbmQuLi5zb21ldGhpbmcmIzM5O3Mgbm90IHF1aXRlIHJpZ2h0LiBEaWQgSSAqYWN0dWFsbHkqIGV4cG9ydCB0aGF0IGRhdGE/IEkgdGhvdWdodCBJIGluaXRpYXRlZCB0aGUgcHJvY2VzcywgYnV0IEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIExldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0IHRoZSBleHBvcnQgZnVuY3Rpb24gd2FzIHRyaWdnZXJlZC4gSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgdGhhdCBpdCYjMzk7cyBhY3R1YWxseSBydW5uaW5nLCBiZWZvcmUgSSB3YXN0ZSBhbnkgbW9yZSB0aW1lLiBPa2F5LCB0aW1lIHRvIGdvIGJhY2sgYW5kIGNoZWNrIHRoZSBjb2RlLCBqdXN0IHRvIGVuc3VyZSB0aGF0IHRoYXQgcGFydGljdWxhciBsaW5lIGV4ZWN1dGVkLiBBbmQgaWYgaXQmIzM5O3MgdGhlcmUuLi53aHkgaXNuJiMzOTt0IGl0IHdvcmtpbmc/IExldCYjMzk7cyB0YWtlIGEgbG9vay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dnBfc2V0X3ZxX2FmZmluaXR5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aXJ0aW8vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmM9NTQ3PWNvbnN0IGNoYXIgKnZwX2J1c19uYW1lKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMtNTU4LSAqL1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYzo1NTk6aW50IHZwX3NldF92cV9hZmZpbml0eShzdHJ1Y3QgdmlydHF1ZXVlICp2cSwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKmNwdV9tYXNrKVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy01NjAte1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmg9MTM4PWNvbnN0IGNoYXIgKnZwX2J1c19uYW1lKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KTtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5oLTE0NC0gKi9cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmg6MTQ1OmludCB2cF9zZXRfdnFfYWZmaW5pdHkoc3RydWN0IHZpcnRxdWV1ZSAqdnEsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVfbWFzayk7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5oLTE0Ni1cbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2xlZ2FjeS5jPTE4OT1zdGF0aWMgY29uc3Qgc3RydWN0IHZpcnRpb19jb25maWdfb3BzIHZpcnRpb19wY2lfY29uZmlnX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2xlZ2FjeS5jLTIwMC1cdC5idXNfbmFtZVx0PSB2cF9idXNfbmFtZSxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbGVnYWN5LmM6MjAxOlx0LnNldF92cV9hZmZpbml0eSA9IHZwX3NldF92cV9hZmZpbml0eSxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbGVnYWN5LmMtMjAyLVx0LmdldF92cV9hZmZpbml0eSA9IHZwX2dldF92cV9hZmZpbml0eSxcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX21vZGVybi5jPTEyMjc9c3RhdGljIGNvbnN0IHN0cnVjdCB2aXJ0aW9fY29uZmlnX29wcyB2aXJ0aW9fcGNpX2NvbmZpZ19ub2Rldl9vcHMgPSB7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYy0xMjM5LVx0LmJ1c19uYW1lXHQ9IHZwX2J1c19uYW1lLFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYzoxMjQwOlx0LnNldF92cV9hZmZpbml0eSA9IHZwX3NldF92cV9hZmZpbml0eSxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbW9kZXJuLmMtMTI0MS1cdC5nZXRfdnFfYWZmaW5pdHkgPSB2cF9nZXRfdnFfYWZmaW5pdHksXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYz0xMjQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2NvbmZpZ19vcHMgdmlydGlvX3BjaV9jb25maWdfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbW9kZXJuLmMtMTI1OS1cdC5idXNfbmFtZVx0PSB2cF9idXNfbmFtZSxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbW9kZXJuLmM6MTI2MDpcdC5zZXRfdnFfYWZmaW5pdHkgPSB2cF9zZXRfdnFfYWZmaW5pdHksXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX21vZGVybi5jLTEyNjEtXHQuZ2V0X3ZxX2FmZmluaXR5ID0gdnBfZ2V0X3ZxX2FmZmluaXR5LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDA3NwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKk15IFBlcnNwZWN0aXZlIG9uIGB2aXJ0aW9fY29uZmlnX29wc2AgYW5kIEFmZmluaXR5KioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGVhbGluZyB3aXRoIGB2aXJ0aW9fY29uZmlnX29wc2AsIHdoaWNoIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgSSBrbm93IGl0IG9mdGVuIHNlcnZlcyBhcyBhIGNlbnRyYWwgcG9pbnQgZm9yIGNvbmZpZ3VyYXRpb24tcmVsYXRlZCBvcGVyYXRpb25zIHdpdGhpbiB0aGUgdmlydGlvIGZyYW1ld29yay4gVGhlIGNyaXRpY2FsIHBpZWNlIG9mIGluZm9ybWF0aW9uIGhlcmUsIHRob3VnaCwgaXMgaG93IHRoaXMgZnVuY3Rpb24gaXMgKnVzZWQqIGluIHRoZSBjb250ZXh0IG9mIGB2aXJ0cXVldWVfc2V0X2FmZmluaXR5YC4gVGhlIGNvbm5lY3Rpb24gaXMga2V5LgoKTXkgaW1tZWRpYXRlIHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGUgYHZpcnRpb19jb25maWdfb3BzYCBsaWtlbHkgaG9sZHMgYSAqY2FsbGJhY2sgZnVuY3Rpb24qLiBBbmQgdGhlIGNvbnRleHQgcG9pbnRzIHRvIGB2aXJ0cXVldWVfc2V0X2FmZmluaXR5YCBhcyB0aGUgcGxhY2Ugd2hlcmUgdGhpcyBjYWxsYmFjayBpcyBleGVjdXRlZC4gU28sIGl0IGlzIGNhbGxlZCB0byB1cGRhdGUvY2hhbmdlIHRoZSB2aXJ0dWFsIHF1ZXVlIHNldHRpbmdzIHdpdGggdGhlIGRlc2lyZWQgQ1BVLiBUaGF0JiMzOTtzIGEgZ29vZCBwbGFjZSBmb3IgdGhpcyB0byB0YWtlIHBsYWNlLiBJIG5lZWQgdG8ga2VlcCB0aGlzIHJlbGF0aW9uc2hpcCBhdCB0aGUgZm9yZWZyb250IHdoZW4gSSYjMzk7bSBsb29raW5nIGludG8gcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIG9yIHRyb3VibGVzaG9vdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aXJ0cXVldWVfc2V0X2FmZmluaXR5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aXJ0aW8vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQzNTgKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJZGVudGlmeWluZyB0aGUgRnVuY3Rpb24qKgoKSG1tLCBqdXN0IGEgbW9tZW50LiBJdCBzZWVtcyBJIHdhcyBpbml0aWFsbHkgc2VhcmNoaW5nIGZvciBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgdmlydHVhbCBxdWV1ZSBhc3NpZ25tZW50IHdpdGhpbiB0aGlzIG1vZHVsZSwgYW5kIHRoZW4gaXQgY2xpY2tlZCwgdGhpcyBpcyBjYWxsZWQgYHNldF92cV9hZmZpbml0eWAuIFRoYXQmIzM5O3MgdGhlIGZ1bmN0aW9uIG5hbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NldF92cV9hZmZpbml0eSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jPTg0Nj1zdGF0aWMgdTMyIHZkdXNlX3ZkcGFfZ2V0X2dlbmVyYXRpb24oc3RydWN0IHZkcGFfZGV2aWNlICp2ZHBhKVxuLS1cbmRyaXZlcnMvdmRwYS92ZHBhX3VzZXIvdmR1c2VfZGV2LmMtODUyLVxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYzo4NTM6c3RhdGljIGludCB2ZHVzZV92ZHBhX3NldF92cV9hZmZpbml0eShzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkcGEsIHUxNiBpZHgsXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jLTg1NC1cdFx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVfbWFzaylcbi0tXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jPTkwMT1zdGF0aWMgY29uc3Qgc3RydWN0IHZkcGFfY29uZmlnX29wcyB2ZHVzZV92ZHBhX2NvbmZpZ19vcHMgPSB7XG4tLVxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYy05MjUtXHQuZ2V0X2dlbmVyYXRpb25cdFx0PSB2ZHVzZV92ZHBhX2dldF9nZW5lcmF0aW9uLFxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYzo5MjY6XHQuc2V0X3ZxX2FmZmluaXR5XHQ9IHZkdXNlX3ZkcGFfc2V0X3ZxX2FmZmluaXR5LFxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYy05MjctXHQuZ2V0X3ZxX2FmZmluaXR5XHQ9IHZkdXNlX3ZkcGFfZ2V0X3ZxX2FmZmluaXR5LFxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmM9NTQ3PWNvbnN0IGNoYXIgKnZwX2J1c19uYW1lKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMtNTU4LSAqL1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYzo1NTk6aW50IHZwX3NldF92cV9hZmZpbml0eShzdHJ1Y3QgdmlydHF1ZXVlICp2cSwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKmNwdV9tYXNrKVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy01NjAte1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmg9MTM4PWNvbnN0IGNoYXIgKnZwX2J1c19uYW1lKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KTtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5oLTE0NC0gKi9cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmg6MTQ1OmludCB2cF9zZXRfdnFfYWZmaW5pdHkoc3RydWN0IHZpcnRxdWV1ZSAqdnEsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVfbWFzayk7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5oLTE0Ni1cbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2xlZ2FjeS5jPTE4OT1zdGF0aWMgY29uc3Qgc3RydWN0IHZpcnRpb19jb25maWdfb3BzIHZpcnRpb19wY2lfY29uZmlnX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2xlZ2FjeS5jLTIwMC1cdC5idXNfbmFtZVx0PSB2cF9idXNfbmFtZSxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbGVnYWN5LmM6MjAxOlx0LnNldF92cV9hZmZpbml0eSA9IHZwX3NldF92cV9hZmZpbml0eSxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbGVnYWN5LmMtMjAyLVx0LmdldF92cV9hZmZpbml0eSA9IHZwX2dldF92cV9hZmZpbml0eSxcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX21vZGVybi5jPTEyMjc9c3RhdGljIGNvbnN0IHN0cnVjdCB2aXJ0aW9fY29uZmlnX29wcyB2aXJ0aW9fcGNpX2NvbmZpZ19ub2Rldl9vcHMgPSB7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYy0xMjM5LVx0LmJ1c19uYW1lXHQ9IHZwX2J1c19uYW1lLFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYzoxMjQwOlx0LnNldF92cV9hZmZpbml0eSA9IHZwX3NldF92cV9hZmZpbml0eSxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbW9kZXJuLmMtMTI0MS1cdC5nZXRfdnFfYWZmaW5pdHkgPSB2cF9nZXRfdnFfYWZmaW5pdHksXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYz0xMjQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2NvbmZpZ19vcHMgdmlydGlvX3BjaV9jb25maWdfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbW9kZXJuLmMtMTI1OS1cdC5idXNfbmFtZVx0PSB2cF9idXNfbmFtZSxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbW9kZXJuLmM6MTI2MDpcdC5zZXRfdnFfYWZmaW5pdHkgPSB2cF9zZXRfdnFfYWZmaW5pdHksXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX21vZGVybi5jLTEyNjEtXHQuZ2V0X3ZxX2FmZmluaXR5ID0gdnBfZ2V0X3ZxX2FmZmluaXR5LFxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmM9MzI4PXN0YXRpYyBpbnQgdmlydGlvX3ZkcGFfZmluZF92cXMoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYsIHVuc2lnbmVkIGludCBudnFzLFxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmMtMzM3LVx0c3RydWN0IHZkcGFfY2FsbGJhY2sgY2I7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jOjMzODpcdGJvb2wgaGFzX2FmZmluaXR5ID0gZGVzYyBcdTAwMjZcdTAwMjYgb3BzLVx1MDAzZXNldF92cV9hZmZpbml0eTtcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmMtMzM5LVx0aW50IGksIGVyciwgcXVldWVfaWR4ID0gMDtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jLTM2Mi1cdFx0aWYgKGhhc19hZmZpbml0eSlcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmM6MzYzOlx0XHRcdG9wcy1cdTAwM2VzZXRfdnFfYWZmaW5pdHkodmRwYSwgaSwgXHUwMDI2bWFza3NbaV0pO1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX3ZkcGEuYy0zNjQtXHR9XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3ZkcGEuYz0zOTk9c3RhdGljIGNvbnN0IGNoYXIgKnZpcnRpb192ZHBhX2J1c19uYW1lKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmMtNDA2LVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3ZkcGEuYzo0MDc6c3RhdGljIGludCB2aXJ0aW9fdmRwYV9zZXRfdnFfYWZmaW5pdHkoc3RydWN0IHZpcnRxdWV1ZSAqdnEsXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jLTQwOC1cdFx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1X21hc2spXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3ZkcGEuYy00MTQtXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jOjQxNTpcdGlmIChvcHMtXHUwMDNlc2V0X3ZxX2FmZmluaXR5KVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3ZkcGEuYzo0MTY6XHRcdHJldHVybiBvcHMtXHUwMDNlc2V0X3ZxX2FmZmluaXR5KHZkcGEsIGluZGV4LCBjcHVfbWFzayk7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jLTQxNy1cbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jPTQzMz1zdGF0aWMgY29uc3Qgc3RydWN0IHZpcnRpb19jb25maWdfb3BzIHZpcnRpb192ZHBhX2NvbmZpZ19vcHMgPSB7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3ZkcGEuYy00NDQtXHQuYnVzX25hbWVcdD0gdmlydGlvX3ZkcGFfYnVzX25hbWUsXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jOjQ0NTpcdC5zZXRfdnFfYWZmaW5pdHkgPSB2aXJ0aW9fdmRwYV9zZXRfdnFfYWZmaW5pdHksXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jLTQ0Ni1cdC5nZXRfdnFfYWZmaW5pdHkgPSB2aXJ0aW9fdmRwYV9nZXRfdnFfYWZmaW5pdHksXG4tLVxuaW5jbHVkZS9saW51eC92ZHBhLmg9MTI3PXN0cnVjdCB2ZHBhX21hcF9maWxlIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3ZkcGEuaC0zMDAtICpcdFx0XHRcdHRoZSBkZXZpY2UuXG5pbmNsdWRlL2xpbnV4L3ZkcGEuaDozMDE6ICogQHNldF92cV9hZmZpbml0eTpcdFx0U2V0IHRoZSBhZmZpbml0eSBvZiB2aXJ0cXVldWUgKG9wdGlvbmFsKVxuaW5jbHVkZS9saW51eC92ZHBhLmgtMzAyLSAqXHRcdFx0XHRAdmRldjogdmRwYSBkZXZpY2Vcbi0tXG5pbmNsdWRlL2xpbnV4L3ZkcGEuaD0zNzI9c3RydWN0IHZkcGFfY29uZmlnX29wcyB7XG4tLVxuaW5jbHVkZS9saW51eC92ZHBhLmgtNDI0LVx0c3RydWN0IHZkcGFfaW92YV9yYW5nZSAoKmdldF9pb3ZhX3JhbmdlKShzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkZXYpO1xuaW5jbHVkZS9saW51eC92ZHBhLmg6NDI1Olx0aW50ICgqc2V0X3ZxX2FmZmluaXR5KShzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkZXYsIHUxNiBpZHgsXG5pbmNsdWRlL2xpbnV4L3ZkcGEuaC00MjYtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVfbWFzayk7XG4tLVxuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmg9Mjk9c3RydWN0IHZpcnRxdWV1ZV9pbmZvIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3ZpcnRpb19jb25maWcuaC05NS0gKiAgICAgIHRoZSBjYWxsZXIgY2FuIHRoZW4gY29weS5cbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oOjk2OiAqIEBzZXRfdnFfYWZmaW5pdHk6IHNldCB0aGUgYWZmaW5pdHkgZm9yIGEgdmlydHF1ZXVlIChvcHRpb25hbCkuXG5pbmNsdWRlL2xpbnV4L3ZpcnRpb19jb25maWcuaC05Ny0gKiBAZ2V0X3ZxX2FmZmluaXR5OiBnZXQgdGhlIGFmZmluaXR5IGZvciBhIHZpcnRxdWV1ZSAob3B0aW9uYWwpLlxuLS1cbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oPTExMj1zdHJ1Y3QgdmlydGlvX2NvbmZpZ19vcHMge1xuLS1cbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oLTEzMS1cdGNvbnN0IGNoYXIgKigqYnVzX25hbWUpKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KTtcbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oOjEzMjpcdGludCAoKnNldF92cV9hZmZpbml0eSkoc3RydWN0IHZpcnRxdWV1ZSAqdnEsXG5pbmNsdWRlL2xpbnV4L3ZpcnRpb19jb25maWcuaC0xMzMtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVfbWFzayk7XG4tLVxuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmg9MzkyPWludCB2aXJ0cXVldWVfc2V0X2FmZmluaXR5KHN0cnVjdCB2aXJ0cXVldWUgKnZxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1X21hc2spXG4tLVxuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmgtMzk0LVx0c3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYgPSB2cS1cdTAwM2V2ZGV2O1xuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmg6Mzk1Olx0aWYgKHZkZXYtXHUwMDNlY29uZmlnLVx1MDAzZXNldF92cV9hZmZpbml0eSlcbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oOjM5NjpcdFx0cmV0dXJuIHZkZXYtXHUwMDNlY29uZmlnLVx1MDAzZXNldF92cV9hZmZpbml0eSh2cSwgY3B1X21hc2spO1xuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmgtMzk3LVx0cmV0dXJuIDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NzY5CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqSW52ZXN0aWdhdGluZyBgdmlydHF1ZXVlX3NldF9hZmZpbml0eWAgQ2FsbHMqKgoKT2theSwgc28gYHZpcnRxdWV1ZV9zZXRfYWZmaW5pdHlgIOKAkyByaWdodCwgdGhhdCYjMzk7cyBhbiBpbmxpbmUgZnVuY3Rpb24gdHVja2VkIGF3YXkgaW4gYGluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oYC4gSXQmIzM5O3MgZGVmaW5pdGVseSBzb21ldGhpbmcgdmlydGlvIGRyaXZlcnMgdXNlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCB3aGVyZSAqZXhhY3RseSogaXMgdGhpcyBmdW5jdGlvbiBiZWluZyBsZXZlcmFnZWQ/JiMzNDsgSSBuZWVkIHRvIHNlZSB0aGUgY2FsbCBzaXRlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgaW4gd2hpY2ggaXQmIzM5O3MgYmVpbmcgdXNlZCBhY3Jvc3MgdGhvc2UgZHJpdmVycy4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgZmlndXJlIG91dCB3aG8mIzM5O3MgYWN0dWFsbHkgY2FsbGluZyBgdmlydHF1ZXVlX3NldF9hZmZpbml0eWAuIEtub3dpbmcgdGhlIGNhbGxlcnMgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBpbXBhY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZpcnRxdWV1ZV9zZXRfYWZmaW5pdHkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fY29yZS5jPTE3OT1zdGF0aWMgdm9pZCB2aXJ0Y3J5cHRvX2NsZWFuX2FmZmluaXR5KHN0cnVjdCB2aXJ0aW9fY3J5cHRvICp2aSwgbG9uZyBoY3B1KVxuLS1cbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX2NvcmUuYy0xODQtXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHZpLVx1MDAzZW1heF9kYXRhX3F1ZXVlczsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19jb3JlLmM6MTg1Olx0XHRcdHZpcnRxdWV1ZV9zZXRfYWZmaW5pdHkodmktXHUwMDNlZGF0YV92cVtpXS52cSwgTlVMTCk7XG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19jb3JlLmMtMTg2LVxuLS1cbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX2NvcmUuYz0xOTE9c3RhdGljIHZvaWQgdmlydGNyeXB0b19zZXRfYWZmaW5pdHkoc3RydWN0IHZpcnRpb19jcnlwdG8gKnZjcnlwdG8pXG4tLVxuZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fY29yZS5jLTIxMS1cdGZvcl9lYWNoX29ubGluZV9jcHUoY3B1KSB7XG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19jb3JlLmM6MjEyOlx0XHR2aXJ0cXVldWVfc2V0X2FmZmluaXR5KHZjcnlwdG8tXHUwMDNlZGF0YV92cVtpXS52cSwgY3B1bWFza19vZihjcHUpKTtcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX2NvcmUuYy0yMTMtXHRcdGlmICgmIzQzOyYjNDM7aSBcdTAwM2U9IHZjcnlwdG8tXHUwMDNlbWF4X2RhdGFfcXVldWVzKVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0zOTQ3PXN0YXRpYyB2b2lkIHZpcnRuZXRfY2xlYW5fYWZmaW5pdHkoc3RydWN0IHZpcnRuZXRfaW5mbyAqdmkpXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTM5NTItXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHZpLVx1MDAzZW1heF9xdWV1ZV9wYWlyczsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzozOTUzOlx0XHRcdHZpcnRxdWV1ZV9zZXRfYWZmaW5pdHkodmktXHUwMDNlcnFbaV0udnEsIE5VTEwpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjM5NTQ6XHRcdFx0dmlydHF1ZXVlX3NldF9hZmZpbml0eSh2aS1cdTAwM2VzcVtpXS52cSwgTlVMTCk7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMzk1NS1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0zOTYxPXN0YXRpYyB2b2lkIHZpcnRuZXRfc2V0X2FmZmluaXR5KHN0cnVjdCB2aXJ0bmV0X2luZm8gKnZpKVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0zOTkxLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjM5OTI6XHRcdHZpcnRxdWV1ZV9zZXRfYWZmaW5pdHkodmktXHUwMDNlcnFbaV0udnEsIG1hc2spO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjM5OTM6XHRcdHZpcnRxdWV1ZV9zZXRfYWZmaW5pdHkodmktXHUwMDNlc3FbaV0udnEsIG1hc2spO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTM5OTQtXHRcdF9fbmV0aWZfc2V0X3hwc19xdWV1ZSh2aS1cdTAwM2VkZXYsIGNwdW1hc2tfYml0cyhtYXNrKSwgaSwgWFBTX0NQVVMpO1xuLS1cbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oPTM3NT1jb25zdCBjaGFyICp2aXJ0aW9fYnVzX25hbWUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4tLVxuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmgtMzgyLS8qKlxuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmg6MzgzOiAqIHZpcnRxdWV1ZV9zZXRfYWZmaW5pdHkgLSBzZXR0aW5nIGFmZmluaXR5IGZvciBhIHZpcnRxdWV1ZVxuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmgtMzg0LSAqIEB2cTogdGhlIHZpcnRxdWV1ZVxuLS1cbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oPTM5MT1zdGF0aWMgaW5saW5lXG5pbmNsdWRlL2xpbnV4L3ZpcnRpb19jb25maWcuaDozOTI6aW50IHZpcnRxdWV1ZV9zZXRfYWZmaW5pdHkoc3RydWN0IHZpcnRxdWV1ZSAqdnEsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVfbWFzaylcbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oLTM5My17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3ODM0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIGB2aXJ0bmV0X3NldF9hZmZpbml0eWAqKgoKQWgsIGB2aXJ0bmV0X3NldF9hZmZpbml0eWAuIFRoYXQmIzM5O3MgYSBnb29kIG9uZSwgYSBzdHJvbmcgZm9jdXMgcG9pbnQuIEkmIzM5O3ZlIGdvdCBpdCAtIGl0JiMzOTtzIHJpZ2h0IHRoZXJlIGluIGBkcml2ZXJzL25ldC92aXJ0aW9fbmV0LmNgLiBBbHdheXMgYSBnb29kIHN0YXJ0aW5nIHBsYWNlIHRvIHVuZGVyc3RhbmQgdGhlIHZpcnRpby1uZXQgZHJpdmVyIGludGVybmFscy4gTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayBzb21ldGhpbmcuLi4gQWgsIHllcywgSSB0aG91Z2h0IHNvLiBJdCYjMzk7cyBkZWNsYXJlZCBhcyBgc3RhdGljYC4gUmlnaHQsIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIGl0JiMzOTtzIG5vdCBkaXJlY3RseSBleHBvc2VkIG91dHNpZGUgb2YgdGhhdCBzcGVjaWZpYyB0cmFuc2xhdGlvbiB1bml0LiBHb29kIHRvIGtub3cuIEp1c3QgY29uZmlybWluZyB0aGF0JiMzOTtzIGhvdyBpdCYjMzk7cyBkZWZpbmVkIGFuZCBzY29wZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZpcnRuZXRfc2V0X2FmZmluaXR5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdmlydGlvX25ldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0zOTQ3PXN0YXRpYyB2b2lkIHZpcnRuZXRfY2xlYW5fYWZmaW5pdHkoc3RydWN0IHZpcnRuZXRfaW5mbyAqdmkpXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTM5NjAtXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mzk2MTpzdGF0aWMgdm9pZCB2aXJ0bmV0X3NldF9hZmZpbml0eShzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSlcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0zOTYyLXtcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9NDAwMj1zdGF0aWMgaW50IHZpcnRuZXRfY3B1X29ubGluZSh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9kZSlcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNDAwNS1cdFx0XHRcdFx0XHQgICBub2RlKTtcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzo0MDA2Olx0dmlydG5ldF9zZXRfYWZmaW5pdHkodmkpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTQwMDctXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9NDAxMD1zdGF0aWMgaW50IHZpcnRuZXRfY3B1X2RlYWQodW5zaWduZWQgaW50IGNwdSwgc3RydWN0IGhsaXN0X25vZGUgKm5vZGUpXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTQwMTMtXHRcdFx0XHRcdFx0ICAgbm9kZV9kZWFkKTtcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzo0MDE0Olx0dmlydG5ldF9zZXRfYWZmaW5pdHkodmkpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTQwMTUtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9NDM3ND1zdGF0aWMgaW50IHZpcnRuZXRfc2V0X2NoYW5uZWxzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTQ0MDItXHR9XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NDQwMzpcdHZpcnRuZXRfc2V0X2FmZmluaXR5KHZpKTtcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy00NDA0LVx0Y3B1c19yZWFkX3VubG9jaygpO1xuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz02NTQ2PXN0YXRpYyBpbnQgaW5pdF92cXMoc3RydWN0IHZpcnRuZXRfaW5mbyAqdmkpXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTY1NTktXHRjcHVzX3JlYWRfbG9jaygpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjY1NjA6XHR2aXJ0bmV0X3NldF9hZmZpbml0eSh2aSk7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNjU2MS1cdGNwdXNfcmVhZF91bmxvY2soKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg2NDMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBSZWFzb25pbmcqKgoKT2theSwgdGhpcyBpcyB3aGF0IEkmIzM5O20gdGhpbmtpbmcuLi4gdGhlIGNvZGUgSSYjMzk7bSBsb29raW5nIGF0IHNlZW1zIHByZXR0eSBzdGF0aWMuIFRoYXQmIzM5O3MgYSBwcm9ibGVtIGZvciBteSBwdXJwb3NlLiBJIGluaXRpYWxseSBjb25zaWRlcmVkIGB2aXJ0bmV0X3NldF9jaGFubmVsc2AgYXMgaXQmIzM5O3MgYW4gZXRodG9vbCBjYWxsYmFjaywgd2hpY2ggaXMgdXNlZnVsLCBidXQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBzdGF0aWMuIFNhbWUgZ29lcyBmb3IgYGluaXRfdnFzYCDigJMgaXQmIzM5O3Mgc3RhdGljLCBzbyBpdCYjMzk7cyBub3QgYSB2aWFibGUgb3B0aW9uLiBBbmQgbGV0JiMzOTtzIG5vdCBmb3JnZXQgYHZpcnRuZXRfcHJvYmVgOyBpdCYjMzk7cyB0aGUgcHJvYmUgZnVuY3Rpb24sIGJ1dCBhZ2FpbiwgaXQgYXBwZWFycyB0byBiZSBzdGF0aWMuIEkgbmVlZCBzb21ldGhpbmcgbm9uLXN0YXRpYyB0aGF0IEkgY2FuIHdvcmsgd2l0aC4KClNvLCBJIHRoaW5rIHRoZSBiZXN0IHBhdGggZm9yd2FyZCBpcyB0byBmb2N1cyBvbiBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgYW5kIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAgYmVjYXVzZSB0aGV5IGFyZSBib3RoIG5vbi1zdGF0aWMgYW5kIGV4cG9ydGVkLCBtYWtpbmcgdGhlbSBhY2Nlc3NpYmxlLiBBbHNvLCBgc3RtbWFjX3hkcF9vcGVuYCBpcyBub24tc3RhdGljIGFuZCBleHBvcnRlZCwgc28gdGhhdCBtaWdodCBiZSB1c2VmdWwgdG9vLgoKQmVmb3JlIEkgY29tbWl0IHRvIHRoZW0gdGhvdWdoLCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgZG9lcyB3aGF0IEkgdGhpbmsgaXQgZG9lcy4gSSBuZWVkIHRvIGJlIHN1cmUgaXQmIzM5O3MgZG9pbmcgd2hhdCBJIHRoaW5rIGl0IGRvZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19faXJxX2FwcGx5X2FmZmluaXR5X2hpbnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvaXJxL21hbmFnZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9pcnEvbWFuYWdlLmM9NTAyPUVYUE9SVF9TWU1CT0xfR1BMKGlycV9mb3JjZV9hZmZpbml0eSk7XG5rZXJuZWwvaXJxL21hbmFnZS5jLTUwMy1cbmtlcm5lbC9pcnEvbWFuYWdlLmM6NTA0OmludCBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50KHVuc2lnbmVkIGludCBpcnEsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICptLCBib29sIHNldGFmZmluaXR5KVxua2VybmVsL2lycS9tYW5hZ2UuYy01MDUte1xuLS1cbmtlcm5lbC9pcnEvbWFuYWdlLmMtNTI2LX1cbmtlcm5lbC9pcnEvbWFuYWdlLmM6NTI3OkVYUE9SVF9TWU1CT0xfR1BMKF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnQpO1xua2VybmVsL2lycS9tYW5hZ2UuYy01MjgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MjMzCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBDb2RlIFN0cnVjdHVyZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgbm9uLXN0YXRpYyBhbmQgZXhwb3J0ZWQuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgYXJlYSBmb3IgZnVydGhlciBleGFtaW5hdGlvbi4gU2luY2UgaXQmIzM5O3MgZXhwb3J0ZWQsIEkga25vdyBpdCYjMzk7cyBkZXNpZ25lZCB0byBiZSBhY2Nlc3NlZCBmcm9tIG91dHNpZGUgaXRzIGRlZmluaW5nIG1vZHVsZS4gVGhlICYjMzQ7bm9uLXN0YXRpYyYjMzQ7IHBhcnQgbWVhbnMgaXQgaGFzIGV4dGVybmFsIGxpbmthZ2Ugd2l0aGluIHRoZSBwcm9qZWN0LiBUaGVzZSB0d28gcHJvcGVydGllcyBjb21iaW5lZCBoaWdobGlnaHQgdGhlIGltcG9ydGFuY2Ugb2YgdW5kZXJzdGFuZGluZyBpdHMgaW1wbGljYXRpb25zIGFuZCBkZXBlbmRlbmNpZXMuCgpOb3csIGxldCYjMzk7cyB6ZXJvIGluIG9uIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAuIEkgbmVlZCB0byB2ZXJpZnkgaG93ICp0aGF0KiBmdW5jdGlvbiBpcyBiZWluZyB1dGlsaXplZCwgZXNwZWNpYWxseSBpbiBjb250ZXh0IG9mIHRoZSBvcmlnaW5hbCBzdGF0ZW1lbnRzLiBXaGF0JiMzOTtzIGl0cyBwdXJwb3NlPyBIb3cgaXMgaXQgYmVpbmcgY2FsbGVkPyBJIGhhdmUgdG8gZW5zdXJlIHRoZSBleHBvcnRlZCwgbm9uLXN0YXRpYyBlbGVtZW50IGlzIGJlaW5nIHVzZWQgYXMgaW50ZW5kZWQgYW5kIHRoZSBpbXBhY3Qgb2YgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYCBpcyB1bmRlcnN0b29kLCBwYXJ0aWN1bGFybHkgZ2l2ZW4gdGhhdCB0aGlzIGlzIGEgc3lzdGVtLWxldmVsIGZ1bmN0aW9uIGRlYWxpbmcgd2l0aCBDUFUgYWZmaW5pdHksIHJlc291cmNlIGFsbG9jYXRpb24gYW5kIHBvdGVudGlhbGx5IGludGVycnVwdHMuIEEgZGVlcCBkaXZlIGlzIGluIG9yZGVyLiBMZXQmIzM5O3Mgc2VlIGhvdyBpdCYjMzk7cyBpbnRlZ3JhdGVkIHdpdGggdGhlIGxhcmdlciBlY29zeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NwdW1hc2tfbG9jYWxfc3ByZWFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliL2NwdW1hc2suYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtsaWIvY3B1bWFzay5jPTc0PXZvaWQgX19pbml0IGZyZWVfYm9vdG1lbV9jcHVtYXNrX3ZhcihjcHVtYXNrX3Zhcl90IG1hc2spXG4tLVxubGliL2NwdW1hc2suYy04MC0vKipcbmxpYi9jcHVtYXNrLmM6ODE6ICogY3B1bWFza19sb2NhbF9zcHJlYWQgLSBzZWxlY3QgdGhlIGkmIzM5O3RoIGNwdSBiYXNlZCBvbiBOVU1BIGRpc3RhbmNlc1xubGliL2NwdW1hc2suYy04Mi0gKiBAaTogaW5kZXggbnVtYmVyXG4tLVxubGliL2NwdW1hc2suYy05Mi0gKiBmb3IgKGkgPSAwOyBpIFx1MDAzYyBudW1fb25saW5lX2NwdXMoKTsgaSYjNDM7JiM0MzspIHtcbmxpYi9jcHVtYXNrLmM6OTM6ICpcdGNwdSA9IGNwdW1hc2tfbG9jYWxfc3ByZWFkKGksIG5vZGUpO1xubGliL2NwdW1hc2suYy05NC0gKlx0ZG9fc29tZXRoaW5nKGNwdSk7XG4tLVxubGliL2NwdW1hc2suYy0xMDYtICogZW51bWVyYXRpb24gaXMgTyhzY2hlZF9kb21haW5zX251bWFfbGV2ZWxzICogbnJfY3B1X2lkcyksIHdoaWxlXG5saWIvY3B1bWFzay5jOjEwNzogKiBjcHVtYXNrX2xvY2FsX3NwcmVhZCgpIHdoZW4gY2FsbGVkIGZvciBlYWNoIGNwdSBpc1xubGliL2NwdW1hc2suYy0xMDgtICogTyhzY2hlZF9kb21haW5zX251bWFfbGV2ZWxzICogbnJfY3B1X2lkcyAqIGxvZyhucl9jcHVfaWRzKSkuXG5saWIvY3B1bWFzay5jLTEwOS0gKi9cbmxpYi9jcHVtYXNrLmM6MTEwOnVuc2lnbmVkIGludCBjcHVtYXNrX2xvY2FsX3NwcmVhZCh1bnNpZ25lZCBpbnQgaSwgaW50IG5vZGUpXG5saWIvY3B1bWFzay5jLTExMS17XG4tLVxubGliL2NwdW1hc2suYy0xMjEtfVxubGliL2NwdW1hc2suYzoxMjI6RVhQT1JUX1NZTUJPTChjcHVtYXNrX2xvY2FsX3NwcmVhZCk7XG5saWIvY3B1bWFzay5jLTEyMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk5MTkKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgQ29kZSBTdHJ1Y3R1cmUqKgoKT2theSwgc28gSSBzZWUgdGhhdCB0aGlzIHZhcmlhYmxlIG9yIGZ1bmN0aW9uIGlzbiYjMzk7dCBkZWNsYXJlZCBhcyBgc3RhdGljYCBhbmQgdGhhdCBpdCYjMzk7cyBiZWluZyBleHBvcnRlZC4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyBpdCBmb3IgZXh0ZXJuYWwgdXNlLCB3aGljaCBtZWFucyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcG90ZW50aWFsIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIG1vZHVsZXMuIEkmIzM5O2xsIG5lZWQgdG8ga2VlcCB0aGlzIGluIG1pbmQgYXMgSSBjb250aW51ZSB0byBhbmFseXplIHRoZSBjb250ZXh0IG9mIGl0cyB1c2FnZSBhbmQgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuCgpOb3csIGxldCYjMzk7cyBkcmlsbCBkb3duIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGBzdG1tYWNfeGRwX29wZW5gIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIHRoZSBrZXkgZW50cnkgcG9pbnQgSSBuZWVkIHRvIGRpc3NlY3QgZnVydGhlciB0byBjb25maXJtIG15IGluaXRpYWwgYXNzdW1wdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3hkcF9vcGVuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcxMDY9dm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcxMzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjcxMzk6aW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTQwLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAyOTgKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAyODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUHJvcG9zZWQgQ2hhbmdlcyoqCgpPa2F5LCBzbyB0aGlzIGlzIGFib3V0IGhhbmRsaW5nIElSUSBhZmZpbml0eSBhbmQgQ1BVIG1hc2sgc3ByZWFkaW5nLCB3aGljaCwgZnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBpcyBhIGNvcmUga2VybmVsIG1vZGlmaWNhdGlvbi4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyB0b3VjaGluZyBzZXZlcmFsIGRyaXZlcnMsIHNwZWNpZmljYWxseSB0aGUgYHN0bW1hY2AgZHJpdmVyLCBtYWtpbmcgY2hhbmdlcyB0byB0aGUgYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGFuZCBgY3B1bWFza19sb2NhbF9zcHJlYWRgIGZ1bmN0aW9ucy4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgZnVuY3Rpb25hbCwgYW5kIHRoZSBjaGFuZ2VzIHRvIGBzdG1tYWNgIHNlZW0gc3RyYWlnaHRmb3J3YXJkIGluIHRoZWlyIGFwcGxpY2F0aW9uIG9mIHRoZXNlIGNvcmUgY2hhbmdlcy4gRGVmaW5pdGVseSBtYWtlcyBzZW5zZSB0byBwdXQgdGhpcyB0aHJvdWdoIHNvbWUgZnV6emluZywgYXMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBjcml0aWNhbCBrZXJuZWwgbG9naWMuCgpJIGFsc28gc2VlIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgIGFzIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaGVyZS4gYFNUTU1BQ19QQ0lgIHNlZW1zIHN1ZmZpY2llbnQsIGdpdmVuIGl0IHB1bGxzIGluIGBTVE1NQUNfTElCUENJYCBhbmQgZGVwZW5kcyBvbiBgUENJYCwgc28gdGhlIGhhcmR3YXJlIHNpZGUgaXMgY292ZXJlZC4KCk15IG1haW4gdGhvdWdodCBpcyB0byBpZGVudGlmeSBhIHNvbGlkIGVudHJ5IHBvaW50IGZvciBmdXp6aW5nLiBXaGlsZSBgc3RtbWFjX3hkcF9vcGVuYCBpcyBwcmVzZW50IChjYWxsZWQgd2hlbiBYRFAgaXMgZW5hYmxlZCksIEkmIzM5O20gY3VyaW91cyBpZiB0aGVyZSYjMzk7cyBhIGJldHRlciBvbmUuIEkgc2VlIHRoYXQgYHN0bW1hY19yZXN1bWVgIGlzIGV4cG9ydGVkIGFuZCBub24tc3RhdGljLCBzbyBpdCYjMzk7cyBhIHBvc3NpYmlsaXR5LCBidXQgaXQgZG9lc24mIzM5O3QgY2FsbCBgc3RtbWFjX3JlcXVlc3RfaXJxYCwgd2hpY2ggbWlnaHQgbGltaXQgaXRzIHVzZWZ1bG5lc3MgYXMgYSB0ZXN0IGVudHJ5IHBvaW50LiBQZXJoYXBzIGBzdG1tYWNfcmVpbml0X3F1ZXVlc2Agd291bGQgYmUgbW9yZSBhcHByb3ByaWF0ZSBzaW5jZSBpdCYjMzk7cyBpbnZvbHZlZCBpbiByZS1pbml0aWFsaXppbmcgdGhlIHF1ZXVlcy4gTGV0IG1lIGV4cGxvcmUgdGhlIGNhbGwgZ3JhcGhzIGFuZCBkZXBlbmRlbmNpZXMgYSBiaXQgbW9yZSBhbmQgY29uc2lkZXIgd2hhdCYjMzk7cyBiZWluZyB0ZXN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19yZWluaXRfcXVldWVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc1ODY9c3RhdGljIHZvaWQgc3RtbWFjX25hcGlfZGVsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NjA3OmludCBzdG1tYWNfcmVpbml0X3F1ZXVlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCByeF9jbnQsIHU4IHR4X2NudClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYwOC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTQ1CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTVE0gTUFDIFF1ZXVlIFJlLUluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIGBzdG1tYWNfcmVpbml0X3F1ZXVlc2AgaXNuJiMzOTt0IHN0YXRpYywgd2hpY2ggaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBOb24tc3RhdGljIGZ1bmN0aW9ucyBhcmUgb2Z0ZW4gZW50cnkgcG9pbnRzIG9yLCBhdCBsZWFzdCwgaGF2ZSBicm9hZGVyIHNjb3BlIHRoYW4ganVzdCB0aGUgZmlsZSB0aGV5JiMzOTtyZSBkZWZpbmVkIGluLiBOb3csIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgY2FsbGluZyBgc3RtbWFjX29wZW5gLCBhbmQgdGhhdCBmdW5jdGlvbiwgaW4gdHVybiwgaXMgY2FsbGluZyBgc3RtbWFjX3JlcXVlc3RfaXJxYC4gR2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgcmUtaW5pdGlhbGl6YXRpb24sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHNvIEkgYW0gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRoYXQgYHN0bW1hY19vcGVuYCBpcywgaW4gZmFjdCwgY2FsbGVkIGJ5IGBzdG1tYWNfcmVpbml0X3F1ZXVlc2AsIGFuZCB0aGVuIEkgY2FuIGRlZHVjZSBob3cgdGhlIElSUXMgYXJlIGdldHRpbmcgcmVxdWVzdGVkIGluIHRoZSBjb250ZXh0IG9mIGEgcG90ZW50aWFsIHJlLWluaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19vcGVuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQwNjM9c3RtbWFjX3NldHVwX2RtYV9kZXNjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdW5zaWduZWQgaW50IG10dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxMjgtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxMjk6ICogIF9fc3RtbWFjX29wZW4gLSBvcGVuIGVudHJ5IHBvaW50IG9mIHRoZSBkcml2ZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDEzMC0gKiAgQGRldiA6IHBvaW50ZXIgdG8gdGhlIGRldmljZSBzdHJ1Y3R1cmUuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTM3LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MTM4OnN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTM5LVx0XHRcdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxOTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxOTY6c3RhdGljIGludCBzdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTk3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyMjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyMjQ6XHRyZXQgPSBfX3N0bW1hY19vcGVuKGRldiwgZG1hX2NvbmYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjI1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYxMTQ9c3RhdGljIGludCBzdG1tYWNfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjYxNTA6XHRcdHJldCA9IF9fc3RtbWFjX29wZW4oZGV2LCBkbWFfY29uZik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxNTEtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMjA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzMyMTpcdC5uZG9fb3BlbiA9IHN0bW1hY19vcGVuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzIyLVx0Lm5kb19zdGFydF94bWl0ID0gc3RtbWFjX3htaXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NjA3PWludCBzdG1tYWNfcmVpbml0X3F1ZXVlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCByeF9jbnQsIHU4IHR4X2NudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2MjYtXHRpZiAobmV0aWZfcnVubmluZyhkZXYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NjI3Olx0XHRyZXQgPSBzdG1tYWNfb3BlbihkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjI4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzYzMj1pbnQgc3RtbWFjX3JlaW5pdF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHJ4X3NpemUsIHUzMiB0eF9zaXplKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzY0My1cdGlmIChuZXRpZl9ydW5uaW5nKGRldikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc2NDQ6XHRcdHJldCA9IHN0bW1hY19vcGVuKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2NDUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNTUxCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OgoKKipGb2N1c2luZyBJbiBvbiB0aGUgUmVpbml0aWFsaXphdGlvbiBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gdHJhY2UgdGhlIHJlLWluaXRpYWxpemF0aW9uIHNlcXVlbmNlIG9mIHRoaXMgU1RNTUFDIGRyaXZlci4gSSBzZWUgdGhhdCBib3RoIGBzdG1tYWNfcmVpbml0X3F1ZXVlc2AgYW5kIGBzdG1tYWNfcmVpbml0X3JpbmdwYXJhbWAgdWx0aW1hdGVseSBjYWxsIGBzdG1tYWNfb3BlbmAuIFRoYXQmIzM5O3MgaW1wb3J0YW50LiBJdCBtYWtlcyBzZW5zZSwgYXMgdGhlc2UgcmUtaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zIHdvdWxkIGxpa2VseSBuZWVkIHRvIHJlc2V0IGV2ZXJ5dGhpbmcgYmFjayB0byBhIGtub3duIGdvb2Qgc3RhdGUgbGlrZSBgc3RtbWFjX29wZW5gLiBBbmQgYHN0bW1hY19vcGVuYCBpcyB0aGUgJiMzNDtzdGFydGluZyBwb2ludCYjMzQ7IGZvciB0aGluZ3MuCgpgc3RtbWFjX3JlaW5pdF9xdWV1ZXNgIGZlZWxzIGxpa2UgdGhlIG1vcmUgcHJvbWlzaW5nIHN5bWJvbCB0byBmb2N1cyBvbiByaWdodCBub3cuIEl0IGlzIG1vcmUgbGlrZWx5IHRvIGJlIGludm9sdmVkIGluIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgdW5kZXJseWluZyBuZXR3b3JrIGZ1bmN0aW9ucy4gU28sIGxldCYjMzk7cyBzZWUgaWYgdGhhdCBmdW5jdGlvbiBpcyBleHBvcnRlZC4gS25vd2luZyBpZiBpdCBpcyBjYW4gaGVscCBzaG93IHdoZXRoZXIgaXQgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIG9yIGlmIGl0JiMzOTtzIGludGVybmFsIHRvIHRoZSBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19yZWluaXRfcXVldWVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc1ODY9c3RhdGljIHZvaWQgc3RtbWFjX25hcGlfZGVsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NjA3OmludCBzdG1tYWNfcmVpbml0X3F1ZXVlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCByeF9jbnQsIHU4IHR4X2NudClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYwOC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMDY3CgkJCQkJCQlvdXRwdXQ6IDE1NwoJCQkJCQkJdGhvdWdodHM6IDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIHJlYXNvbmluZzoKCioqRm9jdXNpbmcgSW4gb24gS2V5IEZ1bmN0aW9ucyoqCgpIbW0sIHNvIGl0JiMzOTtzIG5vdCBleHBvcnRlZCwgYnV0IGl0ICppcyogbm9uLXN0YXRpYy4gSW50ZXJlc3RpbmcuIFRoYXQgc3VnZ2VzdHMgaXQmIzM5O3Mgbm90IG1lYW50IHRvIGJlIGRpcmVjdGx5IGFjY2Vzc2VkIGZyb20gb3RoZXIgbW9kdWxlcywgYnV0IGl0JiMzOTtzIHN0aWxsIGF2YWlsYWJsZSB3aXRoaW4gdGhlIGN1cnJlbnQgc2NvcGUuIE9rYXkuIEkgbmVlZCB0byBiZSBjYXJlZnVsIHdpdGggdGhhdC4gQW5kIHdoYXQgYWJvdXQgYHN0bW1hY194ZHBfb3BlbmA/IFJpZ2h0LCBhbHNvIG5vbi1zdGF0aWMuIExldCBtZSBqdXN0IG5vdGUgdGhhdCBkb3duLgoKQnV0IEkgdGhpbmssIGZvciB0aGUgY29yZSBvZiB3aGF0IEkmIzM5O20gbG9va2luZyBhdCByaWdodCBub3csIGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCBhbmQgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYCBzZWVtIGxpa2UgdGhlIG1vcmUgaW1wb3J0YW50IHN5bWJvbHMgdG8gemVybyBpbiBvbi4gVGhleSYjMzk7cmUgbGlrZWx5IGdvaW5nIHRvIGJlIHRoZSBjZW50cmFsIGZ1bmN0aW9ucyBJIG5lZWQgdG8gYW5hbHl6ZS4KCkFscmlnaHQsIEkgdGhpbmsgSSYjMzk7dmUgZ2F0aGVyZWQgZW5vdWdoIGNvbnRleHQgaGVyZS4gVGltZSB0byBhY3R1YWxseSBjYWxsIGBzZXQtcmVzdWx0c2Agbm93IGFuZCBsb2NrIHRob3NlIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1RNTUFDX0VUSCYjMzQ7LAogICAgJiMzNDtTVE1NQUNfUENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCYjMzQ7LAogICAgJiMzNDtjcHVtYXNrX2xvY2FsX3NwcmVhZCYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcmVpbml0X3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfeGRwX29wZW4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBrZXJuZWwgbG9naWMgZm9yIElSUSBhZmZpbml0eSBoaW50cyAoX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCkgYW5kIGNwdW1hc2sgc3ByZWFkaW5nIChjcHVtYXNrX2xvY2FsX3NwcmVhZCksIHdoaWNoIGFyZSB1c2VkIGJ5IHZhcmlvdXMgZHJpdmVycy4gSXQgYWxzbyBtb2RpZmllcyB0aGUgc3RtbWFjIGRyaXZlciB0byB1c2UgdGhlc2UgZnVuY3Rpb25zIGNvcnJlY3RseS4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19faXJxX2FwcGx5X2FmZmluaXR5X2hpbnQmIzM0OywKICAgICYjMzQ7Y3B1bWFza19sb2NhbF9zcHJlYWQmIzM0OywKICAgICYjMzQ7c3RtbWFjX3JlaW5pdF9xdWV1ZXMmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9vcGVuJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUga2VybmVsIGxvZ2ljIGZvciBJUlEgYWZmaW5pdHkgaGludHMgKF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnQpIGFuZCBjcHVtYXNrIHNwcmVhZGluZyAoY3B1bWFza19sb2NhbF9zcHJlYWQpLCB3aGljaCBhcmUgdXNlZCBieSB2YXJpb3VzIGRyaXZlcnMuIEl0IGFsc28gbW9kaWZpZXMgdGhlIHN0bW1hYyBkcml2ZXIgdG8gdXNlIHRoZXNlIGZ1bmN0aW9ucyBjb3JyZWN0bHkuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjczLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1NDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjU0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIElSUSBhZmZpbml0eSBoYW5kbGluZyBpbiB0aGUgc3RtbWFjIGRyaXZlciBhbmQgY29yZSBJUlEvY3B1bWFzayBjb2RlLiBJdCBhbGxvY2F0ZXMgYSBjcHVtYXNrIHVzaW5nIGB6YWxsb2NfY3B1bWFza192YXJgICh3aGljaCB6ZXJvZXMgdGhlIG1lbW9yeSkgYW5kIGV4cGxpY2l0bHkgY2xlYXJzIGl0IHdpdGggYGNwdW1hc2tfY2xlYXJgIGJlZm9yZSB1c2UuIFRoZSBjaGFuZ2VzIHRvIGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCBhbmQgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYCBpbnZvbHZlIGNvbnRyb2wgZmxvdyBhbmQgQ1BVIG1hc2sgbG9naWMgKGUuZy4sIHVzaW5nIGBpcnFfZGVmYXVsdF9hZmZpbml0eWAgaW5zdGVhZCBvZiBgbnVtX29ubGluZV9jcHVzKClgKS4gVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgYW5kIG5vIGluZm8tbGVha3MgaW50cm9kdWNlZC4gQW55IHBvdGVudGlhbCBpc3N1ZXMgKHN1Y2ggYXMgYSBkaXZpc2lvbiBieSB6ZXJvIGlmIGBjcHVtYXNrX3dlaWdodGAgcmV0dXJucyAwKSB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIHRlc3Rpbmcgb3IgS0FTQU4vVUJTQU4uIFRodXMsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3MDc4MmNkY2QwYmRhZDU0N2U3YzgyYTMxM2Q4YzQ4YmYxNjAzOGFmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgMTkgMTQ6NDk6MjcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwppbmRleCBhNzFmMGRmMjYzNzg1Li45NDljZWQ3ZTQ2ZDI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKQEAgLTM4MjYsMTEgJiM0MzszODI2LDE2IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCXN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7CiAJc3RydWN0IHN0bW1hY19tc2kgKm1zaSA9IHByaXYtJmd0O21zaTsKIAllbnVtIHJlcXVlc3RfaXJxX2VyciBpcnFfZXJyOwomIzQzOwljcHVtYXNrX3Zhcl90IGFmZmluaXR5OwogCWludCBpcnFfaWR4ID0gMDsKIAljaGFyICppbnRfbmFtZTsKJiM0MzsJaW50IG5vZGU7CiAJaW50IHJldDsKIAlpbnQgaTsKIAomIzQzOwlpZiAoIXphbGxvY19jcHVtYXNrX3ZhcigmYW1wO2FmZmluaXR5LCBHRlBfS0VSTkVMKSkKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwogCS8qIEZvciBjb21tb24gaW50ZXJydXB0ICovCiAJaW50X25hbWUgPSBtc2ktJmd0O2ludF9uYW1lX21hYzsKIAlzcHJpbnRmKGludF9uYW1lLCAmIzM0OyVzOiVzJiMzNDssIGRldi0mZ3Q7bmFtZSwgJiMzNDttYWMmIzM0Oyk7CkBAIC0zOTE2LDYgJiM0MzszOTIxLDcgQEAgc3RhdGljIGludCBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJfQogCiAJLyogUmVxdWVzdCBSeCBNU0kgaXJxICovCiYjNDM7CW5vZGUgPSBkZXZfdG9fbm9kZSgmYW1wO3ByaXYtJmd0O2Rldi0mZ3Q7ZGV2KTsKIAlmb3IgKGkgPSAwOyBpICZsdDsgcHJpdi0mZ3Q7cGxhdC0mZ3Q7cnhfcXVldWVzX3RvX3VzZTsgaSYjNDM7JiM0MzspIHsKIAkJaWYgKGkgJmd0Oz0gTVRMX01BWF9SWF9RVUVVRVMpCiAJCQlicmVhazsKQEAgLTM5MzUsOCAmIzQzOzM5NDEsMTAgQEAgc3RhdGljIGludCBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJCQlpcnFfaWR4ID0gaTsKIAkJCWdvdG8gaXJxX2Vycm9yOwogCQl9Ci0JCWlycV9zZXRfYWZmaW5pdHlfaGludChtc2ktJmd0O3J4X2lycVtpXSwKLQkJCQkgICAgICBjcHVtYXNrX29mKGkgJSBudW1fb25saW5lX2NwdXMoKSkpOwomIzQzOwomIzQzOwkJY3B1bWFza19jbGVhcihhZmZpbml0eSk7CiYjNDM7CQljcHVtYXNrX3NldF9jcHUoY3B1bWFza19sb2NhbF9zcHJlYWQoaSwgbm9kZSksIGFmZmluaXR5KTsKJiM0MzsJCWlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQobXNpLSZndDtyeF9pcnFbaV0sIGFmZmluaXR5KTsKIAl9CiAKIAkvKiBSZXF1ZXN0IFR4IE1TSSBpcnEgKi8KQEAgLTM5NTksMTMgJiM0MzszOTY3LDE4IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCQkJaXJxX2lkeCA9IGk7CiAJCQlnb3RvIGlycV9lcnJvcjsKIAkJfQotCQlpcnFfc2V0X2FmZmluaXR5X2hpbnQobXNpLSZndDt0eF9pcnFbaV0sCi0JCQkJICAgICAgY3B1bWFza19vZihpICUgbnVtX29ubGluZV9jcHVzKCkpKTsKJiM0MzsKJiM0MzsJCWNwdW1hc2tfY2xlYXIoYWZmaW5pdHkpOwomIzQzOwkJY3B1bWFza19zZXRfY3B1KGNwdW1hc2tfbG9jYWxfc3ByZWFkKGksIG5vZGUpLCBhZmZpbml0eSk7CiYjNDM7CQlpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KG1zaS0mZ3Q7dHhfaXJxW2ldLCBhZmZpbml0eSk7CiAJfQogCiYjNDM7CWZyZWVfY3B1bWFza192YXIoYWZmaW5pdHkpOwomIzQzOwogCXJldHVybiAwOwogCiBpcnFfZXJyb3I6CiYjNDM7CWZyZWVfY3B1bWFza192YXIoYWZmaW5pdHkpOwogCXN0bW1hY19mcmVlX2lycShkZXYsIGlycV9lcnIsIGlycV9pZHgpOwogCXJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS9rZXJuZWwvaXJxL21hbmFnZS5jIGIva2VybmVsL2lycS9tYW5hZ2UuYwppbmRleCA3ZWIwN2UzYmRiNGMyLi4zOTM3YmEyNGRmNmQ2IDEwMDY0NAotLS0gYS9rZXJuZWwvaXJxL21hbmFnZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9pcnEvbWFuYWdlLmMKQEAgLTUwMywxMSAmIzQzOzUwMywyMSBAQCBFWFBPUlRfU1lNQk9MX0dQTChpcnFfZm9yY2VfYWZmaW5pdHkpOwogCiBpbnQgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCh1bnNpZ25lZCBpbnQgaXJxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSwgYm9vbCBzZXRhZmZpbml0eSkKIHsKJiM0MzsJc3RydWN0IGlycV9kYXRhICppcnFfZGF0YTsKIAlpbnQgcmV0ID0gLUVJTlZBTDsKIAogCXNjb3BlZF9pcnFkZXNjX2dldF9hbmRfbG9jayhpcnEsIElSUV9HRVRfREVTQ19DSEVDS19HTE9CQUwpIHsKIAkJc2NvcGVkX2lycWRlc2MtJmd0O2FmZmluaXR5X2hpbnQgPSBtOwomIzQzOwkJaXJxX2RhdGEgPSBpcnFfZGVzY19nZXRfaXJxX2RhdGEoc2NvcGVkX2lycWRlc2MpOwogCQlyZXQgPSAwOwomIzQzOwomIzQzOwkJLyoKJiM0MzsJCSAqIERvIG5vdCBvdmVyd3JpdGUgdGhlIGFmZmluaXR5IGluIGNhc2UgYW4gYWZmaW5pdHkgZm9yIHRoaXMKJiM0MzsJCSAqIElSUSBoYXMgYWxyZWFkeSBiZWVuIHJlcXVlc3RlZCwgZS5nLiBieSB3cml0aW5nIHRvCiYjNDM7CQkgKiAvcHJvYy9pcnEvJmx0O24mZ3Q7L3NtcF9hZmZpbml0eQomIzQzOwkJICovCiYjNDM7CQlpZiAoaXJxZF9hZmZpbml0eV93YXNfc2V0KGlycV9kYXRhKSkKJiM0MzsJCQlzZXRhZmZpbml0eSA9IGZhbHNlOwogCX0KIAogCWlmICghcmV0ICZhbXA7JmFtcDsgbSAmYW1wOyZhbXA7IHNldGFmZmluaXR5KQpkaWZmIC0tZ2l0IGEvbGliL2NwdW1hc2suYyBiL2xpYi9jcHVtYXNrLmMKaW5kZXggNWFkYjk4NzRmYmQwZi4uNzNlN2I2MGE5MjAxMSAxMDA2NDQKLS0tIGEvbGliL2NwdW1hc2suYwomIzQzOyYjNDM7JiM0MzsgYi9saWIvY3B1bWFzay5jCkBAIC02LDYgJiM0Mzs2LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9leHBvcnQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9tZW1ibG9jay5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L251bWEuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvaW50ZXJydXB0LmgmZ3Q7CiAKIC8qIFRoZXNlIGFyZSBub3QgaW5saW5lIGJlY2F1c2Ugb2YgaGVhZGVyIHRhbmdsZXMuICovCiAjaWZkZWYgQ09ORklHX0NQVU1BU0tfT0ZGU1RBQ0sKQEAgLTgxLDggJiM0Mzs4Miw5IEBAIHZvaWQgX19pbml0IGZyZWVfYm9vdG1lbV9jcHVtYXNrX3ZhcihjcHVtYXNrX3Zhcl90IG1hc2spCiAgKiBAaTogaW5kZXggbnVtYmVyCiAgKiBAbm9kZTogbG9jYWwgbnVtYV9ub2RlCiAgKgotICogUmV0dXJuOiBvbmxpbmUgQ1BVIGFjY29yZGluZyB0byBhIG51bWEgYXdhcmUgcG9saWN5OyBsb2NhbCBjcHVzIGFyZSByZXR1cm5lZAotICogZmlyc3QsIGZvbGxvd2VkIGJ5IG5vbi1sb2NhbCBvbmVzLCB0aGVuIGl0IHdyYXBzIGFyb3VuZC4KJiM0MzsgKiBSZXR1cm46IG9ubGluZSBDUFUgYWNjb3JkaW5nIHRvIHRoZSBkZWZhdWx0IElSUSBhZmZpbml0eSBhbmQgYSBudW1hIGF3YXJlCiYjNDM7ICogcG9saWN5OyBsb2NhbCBjcHVzIGFyZSByZXR1cm5lZCBmaXJzdCwgZm9sbG93ZWQgYnkgbm9uLWxvY2FsIG9uZXMsIHRoZW4gaXQKJiM0MzsgKiB3cmFwcyBhcm91bmQuCiAgKgogICogRm9yIHRob3NlIHdobyB3YW50cyB0byBlbnVtZXJhdGUgYWxsIENQVXMgYmFzZWQgb24gdGhlaXIgTlVNQSBkaXN0YW5jZXMsCiAgKiBpLmUuIGNhbGwgdGhpcyBmdW5jdGlvbiBpbiBhIGxvb3AsIGxpa2U6CkBAIC0xMTAsOSAmIzQzOzExMiw5IEBAIHVuc2lnbmVkIGludCBjcHVtYXNrX2xvY2FsX3NwcmVhZCh1bnNpZ25lZCBpbnQgaSwgaW50IG5vZGUpCiAJdW5zaWduZWQgaW50IGNwdTsKIAogCS8qIFdyYXA6IHdlIGFsd2F5cyB3YW50IGEgY3B1LiAqLwotCWkgJT0gbnVtX29ubGluZV9jcHVzKCk7CiYjNDM7CWkgJT0gY3B1bWFza193ZWlnaHQoaXJxX2RlZmF1bHRfYWZmaW5pdHkpOwogCi0JY3B1ID0gc2NoZWRfbnVtYV9maW5kX250aF9jcHUoY3B1X29ubGluZV9tYXNrLCBpLCBub2RlKTsKJiM0MzsJY3B1ID0gc2NoZWRfbnVtYV9maW5kX250aF9jcHUoaXJxX2RlZmF1bHRfYWZmaW5pdHksIGksIG5vZGUpOwogCiAJV0FSTl9PTihjcHUgJmd0Oz0gbnJfY3B1X2lkcyk7CiAJcmV0dXJuIGNwdTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MzgKCQkJCQkJCW91dHB1dDogMjE3CgkJCQkJCQl0aG91Z2h0czogNzQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEtNU0FOIFJlbGV2YW5jZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7dmUgZ290IGEgcGF0Y2ggdG91Y2hpbmcgYHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2lgLCBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAsIGFuZCBgY3B1bWFza19sb2NhbF9zcHJlYWRgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbG9vayBmb3IgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBlc3BlY2lhbGx5IHNpbmNlIHdlJiMzOTtyZSBwbGF5aW5nIHdpdGggQ1BVIG1hc2tzIGFuZCBJUlEgYWZmaW5pdHksIHdoaWNoIGFyZSBzZW5zaXRpdmUgYXJlYXMuCgpGaXJzdCwgYHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2lgOiBJdCYjMzk7cyBhbGxvY2F0aW5nIGFuIGBhZmZpbml0eWAgY3B1bWFzayB1c2luZyBgemFsbG9jX2NwdW1hc2tfdmFyYCwgd2hpY2ggaXMgZ29vZDsgdGhhdCB6ZXJvZXMgdGhlIG1lbW9yeS4gVGhlbiwgd2UgdXNlIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAgdG8gcGljayBhIENQVSBhbmQgc2V0IGl0IGluIHRoZSBtYXNrLiBXZSYjMzk7cmUgY2FsbGluZyBgaXJxX3NldF9hZmZpbml0eV9hbmRfaGludGAgd2l0aCB0aGlzIG1hc2sgYW5kIHRoZW4gZnJlZWluZyBpdC4gU28gZmFyLCBzbyBnb29kLiBUaGUgY3JpdGljYWwgdGhpbmcgaGVyZSBpcyB0aGF0IHRoZSBhbGxvY2F0aW9uIGlzIGluaXRpYWxpemVkIGFuZCB3ZSYjMzk7cmUgKmV4cGxpY2l0bHkqIGNsZWFyaW5nIGl0LgoKTmV4dCwgYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgLiBUaGlzIGZ1bmN0aW9uJiMzOTtzIGNoYW5nZXMgc2VlbSBwcmltYXJpbHkgYWJvdXQgY29udHJvbCBmbG93LCBjaGVja2luZyBgaXJxZF9hZmZpbml0eV93YXNfc2V0KGlycV9kYXRhKWAuIElmIGl0JiMzOTtzIGFscmVhZHkgc2V0LCBgc2V0YWZmaW5pdHlgIGJlY29tZXMgZmFsc2UuIFRoaXMgZG9lc24mIzM5O3QgaW5oZXJlbnRseSBzY3JlYW0gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuCgpGaW5hbGx5LCBgY3B1bWFza19sb2NhbF9zcHJlYWRgLiBIZXJlJiMzOTtzIHdoZXJlIHdlIHNlZSB0aGUgbW9zdCBzaWduaWZpY2FudCBjaGFuZ2Ug4oCTIHVzaW5nIGBpcnFfZGVmYXVsdF9hZmZpbml0eWAgaW5zdGVhZCBvZiBgY3B1X29ubGluZV9tYXNrYCBhbmQgYG51bV9vbmxpbmVfY3B1cygpYC4gVGhpcyBpcyBpbXBvcnRhbnQsIGFzIGl0IGNvdWxkIGNoYW5nZSB0aGUgcG9zc2libGUgQ1BVIHNlbGVjdGlvbi4gQnV0IGFnYWluLCB0aGlzIGlzIHByaW1hcmlseSBjb250cm9sIGZsb3cg4oCTIHRoZSBjb2RlIGlzIHN0aWxsICpzZXR0aW5nKiBhIENQVSBpbiB0aGUgbWFzay4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIGNoZWNrbGlzdC4gQXJlIHRoZXJlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcz8gTm8sIGBhZmZpbml0eWAgaXMgemFsbG9jJiMzOTtkIGFuZCBjbGVhcmVkLCBhbmQgd2UmIzM5O3JlIHVzaW5nIHRoZSBtYXNrIGZvciB0aGUgaW50ZW5kZWQgcHVycG9zZS4gSW5mbyBsZWFrcyB0byB1c2VyIHNwYWNlPyBOb3BlLCBub3RoaW5nJiMzOTtzIGJlaW5nIGNvcGllZCBvdXQgdGhhdCYjMzk7cyB1bmluaXRpYWxpemVkLiBDb21wbGV4IHN0cnVjdHVyZXMgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcyBiZWluZyBwYXNzZWQgYXJvdW5kPyBObywganVzdCBhIGNwdW1hc2suCgpFc3NlbnRpYWxseSwgdGhpcyBpcyBhbGwgYWJvdXQgSVJRIGFmZmluaXR5LCBjb250cm9sbGluZyB3aGljaCBDUFVzIGhhbmRsZSBpbnRlcnJ1cHRzLCBhbmQgdGhlIGxvZ2ljIGFyb3VuZCBob3cgQ1BVcyBhcmUgc2VsZWN0ZWQuIElmIHRoZXJlJiMzOTtzIGEgYnVnIGhlcmUsIGl0JiMzOTtzIGxpa2VseSBhIGxvZ2ljIGVycm9yLCBvciBtYXliZSwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MuIFRoZSBvbmx5IHBvdGVudGlhbCBwaXRmYWxsIEkgc2VlIGlzIHRoYXQgZGl2aXNpb24gYnkgemVybyBpbiBgY3B1bWFza19sb2NhbF9zcHJlYWRgIOKAkyAgc3BlY2lmaWNhbGx5LCBpZiBgY3B1bWFza193ZWlnaHQoaXJxX2RlZmF1bHRfYWZmaW5pdHkpYCByZXR1cm5zIDAuIFRoYXTigJlzIGEgZGl2aWRlLWJ5LXplcm8sIHdoaWNoIGlzIGJhZCwgYnV0IGl0IHdvdWxkIGJlIGNhdWdodCBieSBzdGFuZGFyZCB0ZXN0aW5nLCBvciBwb3NzaWJseSBLQVNBTi9VQlNBTiDigJMgaXQmIzM5O3MgYSBjcmFzaCwgbm90IGEgbWVtb3J5IGxlYWsuCgpTbywgc3VtbWluZyBpdCB1cCwgZ2l2ZW4gdGhlIGZvY3VzIG9uIENQVSBtYXNrcyBhbmQgZXhwbGljaXQgaW5pdGlhbGl6YXRpb24sIG15IGV4cGVydCBqdWRnbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggZG9lc24mIzM5O3Qgd2FycmFudCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZy4gSXQmIzM5O3Mgbm90IGludHJvZHVjaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzLCBhbmQgYW55IGlzc3VlcyB3b3VsZCBsaWtlbHkgYmUgZGV0ZWN0YWJsZSB3aXRoIG90aGVyIGZ1enplcnMuIFRoZSBjdXJyZW50IHBhdGNoIGFwcGVhcnMgc291bmQgaW4gdGhlIGNvbnRleHQgb2YgbWVtb3J5IGluaXRpYWxpemF0aW9uIGFuZCB1c2FnZS4gV2UgY2FuIHByb2JhYmx5IGdyZWVuLWxpZ2h0IHRoaXMgd2l0aG91dCBhIHNwZWNpYWwgS01TQU4gc2Vzc2lvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Ni8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgSVJRIGFmZmluaXR5IGhhbmRsaW5nIGluIHRoZSBzdG1tYWMgZHJpdmVyIGFuZCBjb3JlIElSUS9jcHVtYXNrIGNvZGUuIEl0IGFsbG9jYXRlcyBhIGNwdW1hc2sgdXNpbmcgYHphbGxvY19jcHVtYXNrX3ZhcmAgKHdoaWNoIHplcm9lcyB0aGUgbWVtb3J5KSBhbmQgZXhwbGljaXRseSBjbGVhcnMgaXQgd2l0aCBgY3B1bWFza19jbGVhcmAgYmVmb3JlIHVzZS4gVGhlIGNoYW5nZXMgdG8gYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGFuZCBgY3B1bWFza19sb2NhbF9zcHJlYWRgIGludm9sdmUgY29udHJvbCBmbG93IGFuZCBDUFUgbWFzayBsb2dpYyAoZS5nLiwgdXNpbmcgYGlycV9kZWZhdWx0X2FmZmluaXR5YCBpbnN0ZWFkIG9mIGBudW1fb25saW5lX2NwdXMoKWApLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBhbmQgbm8gaW5mby1sZWFrcyBpbnRyb2R1Y2VkLiBBbnkgcG90ZW50aWFsIGlzc3VlcyAoc3VjaCBhcyBhIGRpdmlzaW9uIGJ5IHplcm8gaWYgYGNwdW1hc2tfd2VpZ2h0YCByZXR1cm5zIDApIHdvdWxkIGJlIGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgdGVzdGluZyBvciBLQVNBTi9VQlNBTi4gVGh1cywgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBJUlEgYWZmaW5pdHkgaGFuZGxpbmcgaW4gdGhlIHN0bW1hYyBkcml2ZXIgYW5kIGNvcmUgSVJRL2NwdW1hc2sgY29kZS4gSXQgYWxsb2NhdGVzIGEgY3B1bWFzayB1c2luZyBgemFsbG9jX2NwdW1hc2tfdmFyYCAod2hpY2ggemVyb2VzIHRoZSBtZW1vcnkpIGFuZCBleHBsaWNpdGx5IGNsZWFycyBpdCB3aXRoIGBjcHVtYXNrX2NsZWFyYCBiZWZvcmUgdXNlLiBUaGUgY2hhbmdlcyB0byBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgYW5kIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAgaW52b2x2ZSBjb250cm9sIGZsb3cgYW5kIENQVSBtYXNrIGxvZ2ljIChlLmcuLCB1c2luZyBgaXJxX2RlZmF1bHRfYWZmaW5pdHlgIGluc3RlYWQgb2YgYG51bV9vbmxpbmVfY3B1cygpYCkuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGFuZCBubyBpbmZvLWxlYWtzIGludHJvZHVjZWQuIEFueSBwb3RlbnRpYWwgaXNzdWVzIChzdWNoIGFzIGEgZGl2aXNpb24gYnkgemVybyBpZiBgY3B1bWFza193ZWlnaHRgIHJldHVybnMgMCkgd291bGQgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCB0ZXN0aW5nIG9yIEtBU0FOL1VCU0FOLiBUaHVzLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NDk6MjguNjI1MzExMDExWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjkyNDY5Nzc0NDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2lycV9hcHBseV9hZmZpbml0eV9oaW50XCIsXG4gICAgXCJjcHVtYXNrX2xvY2FsX3NwcmVhZFwiLFxuICAgIFwic3RtbWFjX3JlaW5pdF9xdWV1ZXNcIixcbiAgICBcInN0bW1hY194ZHBfb3BlblwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgSVJRIGFmZmluaXR5IGhhbmRsaW5nIGluIHRoZSBzdG1tYWMgZHJpdmVyIGFuZCBjb3JlIElSUS9jcHVtYXNrIGNvZGUuIEl0IGFsbG9jYXRlcyBhIGNwdW1hc2sgdXNpbmcgYHphbGxvY19jcHVtYXNrX3ZhcmAgKHdoaWNoIHplcm9lcyB0aGUgbWVtb3J5KSBhbmQgZXhwbGljaXRseSBjbGVhcnMgaXQgd2l0aCBgY3B1bWFza19jbGVhcmAgYmVmb3JlIHVzZS4gVGhlIGNoYW5nZXMgdG8gYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGFuZCBgY3B1bWFza19sb2NhbF9zcHJlYWRgIGludm9sdmUgY29udHJvbCBmbG93IGFuZCBDUFUgbWFzayBsb2dpYyAoZS5nLiwgdXNpbmcgYGlycV9kZWZhdWx0X2FmZmluaXR5YCBpbnN0ZWFkIG9mIGBudW1fb25saW5lX2NwdXMoKWApLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBhbmQgbm8gaW5mby1sZWFrcyBpbnRyb2R1Y2VkLiBBbnkgcG90ZW50aWFsIGlzc3VlcyAoc3VjaCBhcyBhIGRpdmlzaW9uIGJ5IHplcm8gaWYgYGNwdW1hc2tfd2VpZ2h0YCByZXR1cm5zIDApIHdvdWxkIGJlIGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgdGVzdGluZyBvciBLQVNBTi9VQlNBTi4gVGh1cywgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBrZXJuZWwgbG9naWMgZm9yIElSUSBhZmZpbml0eSBoaW50cyAoX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCkgYW5kIGNwdW1hc2sgc3ByZWFkaW5nIChjcHVtYXNrX2xvY2FsX3NwcmVhZCksIHdoaWNoIGFyZSB1c2VkIGJ5IHZhcmlvdXMgZHJpdmVycy4gSXQgYWxzbyBtb2RpZmllcyB0aGUgc3RtbWFjIGRyaXZlciB0byB1c2UgdGhlc2UgZnVuY3Rpb25zIGNvcnJlY3RseS4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjQ5OjI4LjYyNTMxNzA4MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcyNjYyMzAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzA3ODJjZGNkMGJkYWQ1NDdlN2M4MmEzMTNkOGM0OGJmMTYwMzhhZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAxOSAxNDo0OToyNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbmluZGV4IGE3MWYwZGYyNjM3ODUuLjk0OWNlZDdlNDZkMjggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5AQCAtMzgyNiwxMSArMzgyNiwxNiBAQCBzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4gXFx0c3RydWN0IHN0bW1hY19tc2kgKm1zaSA9IHByaXYtXFx1MDAzZW1zaTtcXG4gXFx0ZW51bSByZXF1ZXN0X2lycV9lcnIgaXJxX2VycjtcXG4rXFx0Y3B1bWFza192YXJfdCBhZmZpbml0eTtcXG4gXFx0aW50IGlycV9pZHggPSAwO1xcbiBcXHRjaGFyICppbnRfbmFtZTtcXG4rXFx0aW50IG5vZGU7XFxuIFxcdGludCByZXQ7XFxuIFxcdGludCBpO1xcbiBcXG4rXFx0aWYgKCF6YWxsb2NfY3B1bWFza192YXIoXFx1MDAyNmFmZmluaXR5LCBHRlBfS0VSTkVMKSlcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbiBcXHQvKiBGb3IgY29tbW9uIGludGVycnVwdCAqL1xcbiBcXHRpbnRfbmFtZSA9IG1zaS1cXHUwMDNlaW50X25hbWVfbWFjO1xcbiBcXHRzcHJpbnRmKGludF9uYW1lLCBcXFwiJXM6JXNcXFwiLCBkZXYtXFx1MDAzZW5hbWUsIFxcXCJtYWNcXFwiKTtcXG5AQCAtMzkxNiw2ICszOTIxLDcgQEAgc3RhdGljIGludCBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdH1cXG4gXFxuIFxcdC8qIFJlcXVlc3QgUnggTVNJIGlycSAqL1xcbitcXHRub2RlID0gZGV2X3RvX25vZGUoXFx1MDAyNnByaXYtXFx1MDAzZWRldi1cXHUwMDNlZGV2KTtcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZXJ4X3F1ZXVlc190b191c2U7IGkrKykge1xcbiBcXHRcXHRpZiAoaSBcXHUwMDNlPSBNVExfTUFYX1JYX1FVRVVFUylcXG4gXFx0XFx0XFx0YnJlYWs7XFxuQEAgLTM5MzUsOCArMzk0MSwxMCBAQCBzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0XFx0XFx0aXJxX2lkeCA9IGk7XFxuIFxcdFxcdFxcdGdvdG8gaXJxX2Vycm9yO1xcbiBcXHRcXHR9XFxuLVxcdFxcdGlycV9zZXRfYWZmaW5pdHlfaGludChtc2ktXFx1MDAzZXJ4X2lycVtpXSxcXG4tXFx0XFx0XFx0XFx0ICAgICAgY3B1bWFza19vZihpICUgbnVtX29ubGluZV9jcHVzKCkpKTtcXG4rXFxuK1xcdFxcdGNwdW1hc2tfY2xlYXIoYWZmaW5pdHkpO1xcbitcXHRcXHRjcHVtYXNrX3NldF9jcHUoY3B1bWFza19sb2NhbF9zcHJlYWQoaSwgbm9kZSksIGFmZmluaXR5KTtcXG4rXFx0XFx0aXJxX3NldF9hZmZpbml0eV9hbmRfaGludChtc2ktXFx1MDAzZXJ4X2lycVtpXSwgYWZmaW5pdHkpO1xcbiBcXHR9XFxuIFxcbiBcXHQvKiBSZXF1ZXN0IFR4IE1TSSBpcnEgKi9cXG5AQCAtMzk1OSwxMyArMzk2NywxOCBAQCBzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0XFx0XFx0aXJxX2lkeCA9IGk7XFxuIFxcdFxcdFxcdGdvdG8gaXJxX2Vycm9yO1xcbiBcXHRcXHR9XFxuLVxcdFxcdGlycV9zZXRfYWZmaW5pdHlfaGludChtc2ktXFx1MDAzZXR4X2lycVtpXSxcXG4tXFx0XFx0XFx0XFx0ICAgICAgY3B1bWFza19vZihpICUgbnVtX29ubGluZV9jcHVzKCkpKTtcXG4rXFxuK1xcdFxcdGNwdW1hc2tfY2xlYXIoYWZmaW5pdHkpO1xcbitcXHRcXHRjcHVtYXNrX3NldF9jcHUoY3B1bWFza19sb2NhbF9zcHJlYWQoaSwgbm9kZSksIGFmZmluaXR5KTtcXG4rXFx0XFx0aXJxX3NldF9hZmZpbml0eV9hbmRfaGludChtc2ktXFx1MDAzZXR4X2lycVtpXSwgYWZmaW5pdHkpO1xcbiBcXHR9XFxuIFxcbitcXHRmcmVlX2NwdW1hc2tfdmFyKGFmZmluaXR5KTtcXG4rXFxuIFxcdHJldHVybiAwO1xcbiBcXG4gaXJxX2Vycm9yOlxcbitcXHRmcmVlX2NwdW1hc2tfdmFyKGFmZmluaXR5KTtcXG4gXFx0c3RtbWFjX2ZyZWVfaXJxKGRldiwgaXJxX2VyciwgaXJxX2lkeCk7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2lycS9tYW5hZ2UuYyBiL2tlcm5lbC9pcnEvbWFuYWdlLmNcXG5pbmRleCA3ZWIwN2UzYmRiNGMyLi4zOTM3YmEyNGRmNmQ2IDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9pcnEvbWFuYWdlLmNcXG4rKysgYi9rZXJuZWwvaXJxL21hbmFnZS5jXFxuQEAgLTUwMywxMSArNTAzLDIxIEBAIEVYUE9SVF9TWU1CT0xfR1BMKGlycV9mb3JjZV9hZmZpbml0eSk7XFxuIFxcbiBpbnQgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCh1bnNpZ25lZCBpbnQgaXJxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSwgYm9vbCBzZXRhZmZpbml0eSlcXG4ge1xcbitcXHRzdHJ1Y3QgaXJxX2RhdGEgKmlycV9kYXRhO1xcbiBcXHRpbnQgcmV0ID0gLUVJTlZBTDtcXG4gXFxuIFxcdHNjb3BlZF9pcnFkZXNjX2dldF9hbmRfbG9jayhpcnEsIElSUV9HRVRfREVTQ19DSEVDS19HTE9CQUwpIHtcXG4gXFx0XFx0c2NvcGVkX2lycWRlc2MtXFx1MDAzZWFmZmluaXR5X2hpbnQgPSBtO1xcbitcXHRcXHRpcnFfZGF0YSA9IGlycV9kZXNjX2dldF9pcnFfZGF0YShzY29wZWRfaXJxZGVzYyk7XFxuIFxcdFxcdHJldCA9IDA7XFxuK1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBEbyBub3Qgb3ZlcndyaXRlIHRoZSBhZmZpbml0eSBpbiBjYXNlIGFuIGFmZmluaXR5IGZvciB0aGlzXFxuK1xcdFxcdCAqIElSUSBoYXMgYWxyZWFkeSBiZWVuIHJlcXVlc3RlZCwgZS5nLiBieSB3cml0aW5nIHRvXFxuK1xcdFxcdCAqIC9wcm9jL2lycS9cXHUwMDNjblxcdTAwM2Uvc21wX2FmZmluaXR5XFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAoaXJxZF9hZmZpbml0eV93YXNfc2V0KGlycV9kYXRhKSlcXG4rXFx0XFx0XFx0c2V0YWZmaW5pdHkgPSBmYWxzZTtcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKCFyZXQgXFx1MDAyNlxcdTAwMjYgbSBcXHUwMDI2XFx1MDAyNiBzZXRhZmZpbml0eSlcXG5kaWZmIC0tZ2l0IGEvbGliL2NwdW1hc2suYyBiL2xpYi9jcHVtYXNrLmNcXG5pbmRleCA1YWRiOTg3NGZiZDBmLi43M2U3YjYwYTkyMDExIDEwMDY0NFxcbi0tLSBhL2xpYi9jcHVtYXNrLmNcXG4rKysgYi9saWIvY3B1bWFzay5jXFxuQEAgLTYsNiArNiw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9leHBvcnQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21lbWJsb2NrLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9udW1hLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFxcdTAwM2VcXG4gXFxuIC8qIFRoZXNlIGFyZSBub3QgaW5saW5lIGJlY2F1c2Ugb2YgaGVhZGVyIHRhbmdsZXMuICovXFxuICNpZmRlZiBDT05GSUdfQ1BVTUFTS19PRkZTVEFDS1xcbkBAIC04MSw4ICs4Miw5IEBAIHZvaWQgX19pbml0IGZyZWVfYm9vdG1lbV9jcHVtYXNrX3ZhcihjcHVtYXNrX3Zhcl90IG1hc2spXFxuICAqIEBpOiBpbmRleCBudW1iZXJcXG4gICogQG5vZGU6IGxvY2FsIG51bWFfbm9kZVxcbiAgKlxcbi0gKiBSZXR1cm46IG9ubGluZSBDUFUgYWNjb3JkaW5nIHRvIGEgbnVtYSBhd2FyZSBwb2xpY3k7IGxvY2FsIGNwdXMgYXJlIHJldHVybmVkXFxuLSAqIGZpcnN0LCBmb2xsb3dlZCBieSBub24tbG9jYWwgb25lcywgdGhlbiBpdCB3cmFwcyBhcm91bmQuXFxuKyAqIFJldHVybjogb25saW5lIENQVSBhY2NvcmRpbmcgdG8gdGhlIGRlZmF1bHQgSVJRIGFmZmluaXR5IGFuZCBhIG51bWEgYXdhcmVcXG4rICogcG9saWN5OyBsb2NhbCBjcHVzIGFyZSByZXR1cm5lZCBmaXJzdCwgZm9sbG93ZWQgYnkgbm9uLWxvY2FsIG9uZXMsIHRoZW4gaXRcXG4rICogd3JhcHMgYXJvdW5kLlxcbiAgKlxcbiAgKiBGb3IgdGhvc2Ugd2hvIHdhbnRzIHRvIGVudW1lcmF0ZSBhbGwgQ1BVcyBiYXNlZCBvbiB0aGVpciBOVU1BIGRpc3RhbmNlcyxcXG4gICogaS5lLiBjYWxsIHRoaXMgZnVuY3Rpb24gaW4gYSBsb29wLCBsaWtlOlxcbkBAIC0xMTAsOSArMTEyLDkgQEAgdW5zaWduZWQgaW50IGNwdW1hc2tfbG9jYWxfc3ByZWFkKHVuc2lnbmVkIGludCBpLCBpbnQgbm9kZSlcXG4gXFx0dW5zaWduZWQgaW50IGNwdTtcXG4gXFxuIFxcdC8qIFdyYXA6IHdlIGFsd2F5cyB3YW50IGEgY3B1LiAqL1xcbi1cXHRpICU9IG51bV9vbmxpbmVfY3B1cygpO1xcbitcXHRpICU9IGNwdW1hc2tfd2VpZ2h0KGlycV9kZWZhdWx0X2FmZmluaXR5KTtcXG4gXFxuLVxcdGNwdSA9IHNjaGVkX251bWFfZmluZF9udGhfY3B1KGNwdV9vbmxpbmVfbWFzaywgaSwgbm9kZSk7XFxuK1xcdGNwdSA9IHNjaGVkX251bWFfZmluZF9udGhfY3B1KGlycV9kZWZhdWx0X2FmZmluaXR5LCBpLCBub2RlKTtcXG4gXFxuIFxcdFdBUk5fT04oY3B1IFxcdTAwM2U9IG5yX2NwdV9pZHMpO1xcbiBcXHRyZXR1cm4gY3B1O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo0OToyOS4wOTg3NjIxOTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNzk3NTAwMTQwMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1RNTUFDX0VUSFwiLFxuICAgIFwiU1RNTUFDX1BDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRcIixcbiAgICBcImNwdW1hc2tfbG9jYWxfc3ByZWFkXCIsXG4gICAgXCJzdG1tYWNfcmVpbml0X3F1ZXVlc1wiLFxuICAgIFwic3RtbWFjX3hkcF9vcGVuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBrZXJuZWwgbG9naWMgZm9yIElSUSBhZmZpbml0eSBoaW50cyAoX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCkgYW5kIGNwdW1hc2sgc3ByZWFkaW5nIChjcHVtYXNrX2xvY2FsX3NwcmVhZCksIHdoaWNoIGFyZSB1c2VkIGJ5IHZhcmlvdXMgZHJpdmVycy4gSXQgYWxzbyBtb2RpZmllcyB0aGUgc3RtbWFjIGRyaXZlciB0byB1c2UgdGhlc2UgZnVuY3Rpb25zIGNvcnJlY3RseS4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDcwNzgyY2RjZDBiZGFkNTQ3ZTdjODJhMzEzZDhjNDhiZjE2MDM4YWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxOSAxNDo0OToyNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCBhNzFmMGRmMjYzNzg1Li45NDljZWQ3ZTQ2ZDI4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTM4MjYsMTEgKzM4MjYsMTYgQEAgc3RhdGljIGludCBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xuIFx0c3RydWN0IHN0bW1hY19tc2kgKm1zaSA9IHByaXYtXHUwMDNlbXNpO1xuIFx0ZW51bSByZXF1ZXN0X2lycV9lcnIgaXJxX2VycjtcbitcdGNwdW1hc2tfdmFyX3QgYWZmaW5pdHk7XG4gXHRpbnQgaXJxX2lkeCA9IDA7XG4gXHRjaGFyICppbnRfbmFtZTtcbitcdGludCBub2RlO1xuIFx0aW50IHJldDtcbiBcdGludCBpO1xuIFxuK1x0aWYgKCF6YWxsb2NfY3B1bWFza192YXIoXHUwMDI2YWZmaW5pdHksIEdGUF9LRVJORUwpKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbiBcdC8qIEZvciBjb21tb24gaW50ZXJydXB0ICovXG4gXHRpbnRfbmFtZSA9IG1zaS1cdTAwM2VpbnRfbmFtZV9tYWM7XG4gXHRzcHJpbnRmKGludF9uYW1lLCBcIiVzOiVzXCIsIGRldi1cdTAwM2VuYW1lLCBcIm1hY1wiKTtcbkBAIC0zOTE2LDYgKzM5MjEsNyBAQCBzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdH1cbiBcbiBcdC8qIFJlcXVlc3QgUnggTVNJIGlycSAqL1xuK1x0bm9kZSA9IGRldl90b19ub2RlKFx1MDAyNnByaXYtXHUwMDNlZGV2LVx1MDAzZWRldik7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcnhfcXVldWVzX3RvX3VzZTsgaSsrKSB7XG4gXHRcdGlmIChpIFx1MDAzZT0gTVRMX01BWF9SWF9RVUVVRVMpXG4gXHRcdFx0YnJlYWs7XG5AQCAtMzkzNSw4ICszOTQxLDEwIEBAIHN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0XHRcdGlycV9pZHggPSBpO1xuIFx0XHRcdGdvdG8gaXJxX2Vycm9yO1xuIFx0XHR9XG4tXHRcdGlycV9zZXRfYWZmaW5pdHlfaGludChtc2ktXHUwMDNlcnhfaXJxW2ldLFxuLVx0XHRcdFx0ICAgICAgY3B1bWFza19vZihpICUgbnVtX29ubGluZV9jcHVzKCkpKTtcbitcbitcdFx0Y3B1bWFza19jbGVhcihhZmZpbml0eSk7XG4rXHRcdGNwdW1hc2tfc2V0X2NwdShjcHVtYXNrX2xvY2FsX3NwcmVhZChpLCBub2RlKSwgYWZmaW5pdHkpO1xuK1x0XHRpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KG1zaS1cdTAwM2VyeF9pcnFbaV0sIGFmZmluaXR5KTtcbiBcdH1cbiBcbiBcdC8qIFJlcXVlc3QgVHggTVNJIGlycSAqL1xuQEAgLTM5NTksMTMgKzM5NjcsMTggQEAgc3RhdGljIGludCBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdFx0aXJxX2lkeCA9IGk7XG4gXHRcdFx0Z290byBpcnFfZXJyb3I7XG4gXHRcdH1cbi1cdFx0aXJxX3NldF9hZmZpbml0eV9oaW50KG1zaS1cdTAwM2V0eF9pcnFbaV0sXG4tXHRcdFx0XHQgICAgICBjcHVtYXNrX29mKGkgJSBudW1fb25saW5lX2NwdXMoKSkpO1xuK1xuK1x0XHRjcHVtYXNrX2NsZWFyKGFmZmluaXR5KTtcbitcdFx0Y3B1bWFza19zZXRfY3B1KGNwdW1hc2tfbG9jYWxfc3ByZWFkKGksIG5vZGUpLCBhZmZpbml0eSk7XG4rXHRcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQobXNpLVx1MDAzZXR4X2lycVtpXSwgYWZmaW5pdHkpO1xuIFx0fVxuIFxuK1x0ZnJlZV9jcHVtYXNrX3ZhcihhZmZpbml0eSk7XG4rXG4gXHRyZXR1cm4gMDtcbiBcbiBpcnFfZXJyb3I6XG4rXHRmcmVlX2NwdW1hc2tfdmFyKGFmZmluaXR5KTtcbiBcdHN0bW1hY19mcmVlX2lycShkZXYsIGlycV9lcnIsIGlycV9pZHgpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5kaWZmIC0tZ2l0IGEva2VybmVsL2lycS9tYW5hZ2UuYyBiL2tlcm5lbC9pcnEvbWFuYWdlLmNcbmluZGV4IDdlYjA3ZTNiZGI0YzIuLjM5MzdiYTI0ZGY2ZDYgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvaXJxL21hbmFnZS5jXG4rKysgYi9rZXJuZWwvaXJxL21hbmFnZS5jXG5AQCAtNTAzLDExICs1MDMsMjEgQEAgRVhQT1JUX1NZTUJPTF9HUEwoaXJxX2ZvcmNlX2FmZmluaXR5KTtcbiBcbiBpbnQgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCh1bnNpZ25lZCBpbnQgaXJxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSwgYm9vbCBzZXRhZmZpbml0eSlcbiB7XG4rXHRzdHJ1Y3QgaXJxX2RhdGEgKmlycV9kYXRhO1xuIFx0aW50IHJldCA9IC1FSU5WQUw7XG4gXG4gXHRzY29wZWRfaXJxZGVzY19nZXRfYW5kX2xvY2soaXJxLCBJUlFfR0VUX0RFU0NfQ0hFQ0tfR0xPQkFMKSB7XG4gXHRcdHNjb3BlZF9pcnFkZXNjLVx1MDAzZWFmZmluaXR5X2hpbnQgPSBtO1xuK1x0XHRpcnFfZGF0YSA9IGlycV9kZXNjX2dldF9pcnFfZGF0YShzY29wZWRfaXJxZGVzYyk7XG4gXHRcdHJldCA9IDA7XG4rXG4rXHRcdC8qXG4rXHRcdCAqIERvIG5vdCBvdmVyd3JpdGUgdGhlIGFmZmluaXR5IGluIGNhc2UgYW4gYWZmaW5pdHkgZm9yIHRoaXNcbitcdFx0ICogSVJRIGhhcyBhbHJlYWR5IGJlZW4gcmVxdWVzdGVkLCBlLmcuIGJ5IHdyaXRpbmcgdG9cbitcdFx0ICogL3Byb2MvaXJxL1x1MDAzY25cdTAwM2Uvc21wX2FmZmluaXR5XG4rXHRcdCAqL1xuK1x0XHRpZiAoaXJxZF9hZmZpbml0eV93YXNfc2V0KGlycV9kYXRhKSlcbitcdFx0XHRzZXRhZmZpbml0eSA9IGZhbHNlO1xuIFx0fVxuIFxuIFx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IG0gXHUwMDI2XHUwMDI2IHNldGFmZmluaXR5KVxuZGlmZiAtLWdpdCBhL2xpYi9jcHVtYXNrLmMgYi9saWIvY3B1bWFzay5jXG5pbmRleCA1YWRiOTg3NGZiZDBmLi43M2U3YjYwYTkyMDExIDEwMDY0NFxuLS0tIGEvbGliL2NwdW1hc2suY1xuKysrIGIvbGliL2NwdW1hc2suY1xuQEAgLTYsNiArNiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXhwb3J0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tZW1ibG9jay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbnVtYS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvaW50ZXJydXB0LmhcdTAwM2VcbiBcbiAvKiBUaGVzZSBhcmUgbm90IGlubGluZSBiZWNhdXNlIG9mIGhlYWRlciB0YW5nbGVzLiAqL1xuICNpZmRlZiBDT05GSUdfQ1BVTUFTS19PRkZTVEFDS1xuQEAgLTgxLDggKzgyLDkgQEAgdm9pZCBfX2luaXQgZnJlZV9ib290bWVtX2NwdW1hc2tfdmFyKGNwdW1hc2tfdmFyX3QgbWFzaylcbiAgKiBAaTogaW5kZXggbnVtYmVyXG4gICogQG5vZGU6IGxvY2FsIG51bWFfbm9kZVxuICAqXG4tICogUmV0dXJuOiBvbmxpbmUgQ1BVIGFjY29yZGluZyB0byBhIG51bWEgYXdhcmUgcG9saWN5OyBsb2NhbCBjcHVzIGFyZSByZXR1cm5lZFxuLSAqIGZpcnN0LCBmb2xsb3dlZCBieSBub24tbG9jYWwgb25lcywgdGhlbiBpdCB3cmFwcyBhcm91bmQuXG4rICogUmV0dXJuOiBvbmxpbmUgQ1BVIGFjY29yZGluZyB0byB0aGUgZGVmYXVsdCBJUlEgYWZmaW5pdHkgYW5kIGEgbnVtYSBhd2FyZVxuKyAqIHBvbGljeTsgbG9jYWwgY3B1cyBhcmUgcmV0dXJuZWQgZmlyc3QsIGZvbGxvd2VkIGJ5IG5vbi1sb2NhbCBvbmVzLCB0aGVuIGl0XG4rICogd3JhcHMgYXJvdW5kLlxuICAqXG4gICogRm9yIHRob3NlIHdobyB3YW50cyB0byBlbnVtZXJhdGUgYWxsIENQVXMgYmFzZWQgb24gdGhlaXIgTlVNQSBkaXN0YW5jZXMsXG4gICogaS5lLiBjYWxsIHRoaXMgZnVuY3Rpb24gaW4gYSBsb29wLCBsaWtlOlxuQEAgLTExMCw5ICsxMTIsOSBAQCB1bnNpZ25lZCBpbnQgY3B1bWFza19sb2NhbF9zcHJlYWQodW5zaWduZWQgaW50IGksIGludCBub2RlKVxuIFx0dW5zaWduZWQgaW50IGNwdTtcbiBcbiBcdC8qIFdyYXA6IHdlIGFsd2F5cyB3YW50IGEgY3B1LiAqL1xuLVx0aSAlPSBudW1fb25saW5lX2NwdXMoKTtcbitcdGkgJT0gY3B1bWFza193ZWlnaHQoaXJxX2RlZmF1bHRfYWZmaW5pdHkpO1xuIFxuLVx0Y3B1ID0gc2NoZWRfbnVtYV9maW5kX250aF9jcHUoY3B1X29ubGluZV9tYXNrLCBpLCBub2RlKTtcbitcdGNwdSA9IHNjaGVkX251bWFfZmluZF9udGhfY3B1KGlycV9kZWZhdWx0X2FmZmluaXR5LCBpLCBub2RlKTtcbiBcbiBcdFdBUk5fT04oY3B1IFx1MDAzZT0gbnJfY3B1X2lkcyk7XG4gXHRyZXR1cm4gY3B1O1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NDk6MjkuMDk4NzYzODYyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzc2MTY2NzM0NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IElSUSBBZmZpbml0eSBhbmQgU3ByZWFkaW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSBoYXZlIGEgcGF0Y2ggdGhhdCdzIGRlZmluaXRlbHkgaW50cm9kdWNpbmcgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwsIGFuZCB3ZSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3Qgd2F5IHRvIGZ1enogdGhlbS4gVGhlIGNoYW5nZXMgYXJlIHNwcmVhZCBhY3Jvc3MgYSBmZXcgYXJlYXMsIGFuZCB0aGF0IHJlcXVpcmVzIHVzIHRvIGJlIG1pbmRmdWwgb2Ygd2hhdCB3ZSdyZSBsb29raW5nIGF0LlxuXG5GaXJzdCwgdGhlcmUgYXJlIHNvbWUgcHJldHR5IGxvdy1sZXZlbCBjaGFuZ2VzIHRvIGBpcnFgIGhhbmRsaW5nIGluIGBrZXJuZWwvaXJxL21hbmFnZS5jYCBhbmQgYGxpYi9jcHVtYXNrLmNgLiBTcGVjaWZpY2FsbHksIGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCBoYXMgYmVlbiBtb2RpZmllZCwgYWxvbmcgd2l0aCB0aGUgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCBndXQgZmVlbGluZyBpcyB0aGF0IGFueSBtb2RpZmljYXRpb24gdGhhdCB0b3VjaGVzIHRoZXNlIGNvcmUgbW9kdWxlcyBzaG91bGQgYmUgZnV6emVkLCBpdCdzIGp1c3QgdGhlIGJlc3QgdGhpbmcgdG8gZG8gZ2l2ZW4gdGhlaXIgd2lkZSBhcHBsaWNhYmlsaXR5LiBUaGUgYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGNoYW5nZSBpbmNsdWRlcyBhIGNoZWNrIGZvciBhbiBleGlzdGluZyBhZmZpbml0eSBzZXR0aW5nLiBUaGUgY2hhbmdlIGluIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAgYWxzbyBtb2RpZmllcyBpdHMgdXNhZ2UuXG5cblRoZW4gd2UgaGF2ZSBhIGRyaXZlci1zcGVjaWZpYyBjaGFuZ2UgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgLiBJdCdzIGFsdGVyaW5nIGhvdyBJUlEgYWZmaW5pdHkgaXMgaGFuZGxlZCB3aXRoaW4gdGhlIGBzdG1tYWNgIGRyaXZlciwgdXNpbmcgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYCBhbmQgYGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnRgIG5vdywgd2hlcmUgaXQgdXNlZCB0byB1c2UgYGlycV9zZXRfYWZmaW5pdHlfaGludGAuIFRoZSBgc3RtbWFjYCBkcml2ZXIgaXMgdXNlZCBvbiBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgaGFyZHdhcmUsIHNvIGl0IG1pZ2h0IGJlIGEgYml0IG1vcmUgbmljaGUsIGJ1dCB0aGVzZSBkcml2ZXJzIG9mdGVuIHNob3cgdXAgb24gZW1iZWRkZWQgc3lzdGVtcywgc28gaXQncyBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5NeSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMgZ29pbmcgdG8gYmUgb24gdGhlIGNvcmUgY2hhbmdlcyBiZWNhdXNlIHRob3NlIGhhdmUgdGhlIHBvdGVudGlhbCB0byBpbXBhY3QgYSBtdWNoIHdpZGVyIHJhbmdlIG9mIGhhcmR3YXJlIGFuZCBjb25maWd1cmF0aW9ucy4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gd2FudCB0byBmb2N1cyBvbiBmdXp6aW5nIGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCBhbmQgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYC4gVGhlc2UgYXJlIGNyaXRpY2FsIGZ1bmN0aW9ucyB0aGF0IGFyZSByZWFjaGFibGUsIGFuZCB0aHVzIHdvcnRoeSBvZiBteSBhdHRlbnRpb24uXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGFyZSByZXF1aXJlZCB0byBlbmFibGUgdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMuIFRoZSBjb2RlIGZvciBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgbGl2ZXMgaW4gYGtlcm5lbC9pcnEvbWFuYWdlLmNgLCB3aGljaCwgYWZ0ZXIgYSBxdWljayBjaGVjayBvZiB0aGUgTWFrZWZpbGUsIHNlZW1zIHRvIGJlIGNvbXBpbGVkIHVuY29uZGl0aW9uYWxseSAob3IgYXQgbGVhc3QgYmFzZWQgb24gYENPTkZJR19HRU5FUklDX0hBUkRJUlFTYCwgd2hpY2ggaXMgZWZmZWN0aXZlbHkgc3RhbmRhcmQpLiBUaGF0J3MgaWRlYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NDEsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NTQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MDo0Ni43MTU0NDA4NDhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYwODIyNjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFuYWdlLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2lycS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvaXJxL01ha2VmaWxlLTItXFxua2VybmVsL2lycS9NYWtlZmlsZTozOm9iai15IDo9IGlycWRlc2MubyBoYW5kbGUubyBtYW5hZ2UubyBzcHVyaW91cy5vIHJlc2VuZC5vIGNoaXAubyBkdW1teWNoaXAubyBkZXZyZXMubyBrZXhlYy5vXFxua2VybmVsL2lycS9NYWtlZmlsZS00LW9iai0kKENPTkZJR19HRU5FUklDX0lSUV9DSElQKSArPSBnZW5lcmljLWNoaXAub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MDo0Ni43NjE1MjgzNjNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTA3MDQ3Mzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipDaGVja2luZyBDb21waWxlIERlcGVuZGVuY2llcyoqXG5cblJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIHdoYXQncyAqYWx3YXlzKiBiZWluZyBnZW5lcmF0ZWQuIEl0J3MgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBib3R0bGVuZWNrcy4gRmlyc3QsIGBtYW5hZ2Uub2AgaXMgYSBnaXZlbjsgaXQncyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIGJ1aWxkLCBwcmVzdW1hYmx5IGZvciBzb21ldGhpbmcgY29yZSBpbiB0aGUgbWFuYWdlbWVudCBhc3BlY3QuIEFuZCwgYXMgZXhwZWN0ZWQsIGBsaWIvY3B1bWFzay5vYCBpcyBhbm90aGVyIG9uZSB0aGF0IGNvbnNpc3RlbnRseSBzaG93cyB1cC4gQ1BVIG1hc2tzIGFyZSBvZnRlbiBmdW5kYW1lbnRhbCBhbmQgSSdtIGd1ZXNzaW5nIHRoYXQgdGhpcyBpcyBmb3IgbWFuYWdpbmcgdGhvc2UgbWFza3MgaW4gdGhlIHNvZnR3YXJlLCBoZW5jZSBpdCBpcyBhbHdheXMgcmVxdWlyZWQuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoZXNlIGFyZSBjb25zaXN0ZW50bHkgbmVlZGVkLiBMZXQncyBzZWUgd2hhdCdzIGdvaW5nIG9uIGluIGBzdG1tYWNfbWFpbi5jYCAuIFRoaXMgaXMgbGlrZWx5IHdoZXJlIHRoZSBtYWluIGRyaXZlciBsb2dpYyBvciBkZXZpY2UgaW5pdGlhbGl6YXRpb24gcmVzaWRlcy4gQ2hlY2tpbmcgdGhhdCBmaWxlIHdpbGwgZ2l2ZSB0aGUgbmVjZXNzYXJ5IGluc2lnaHQgdG8gdW5kZXJzdGFuZCB3aHkgdGhvc2UgcGFydGljdWxhciBvYmplY3QgZmlsZXMgYXJlIGFsd2F5cyBuZWVkZWQgaW4gYSBtb3JlIGNvbmNyZXRlIG1hbm5lci5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg0OCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUwOjUwLjI2ODU3Nzc2N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzA2MzQzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfbWFpbi5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTI9b2JqLSQoQ09ORklHX1NUTU1BQ19FVEgpICs9IHN0bW1hYy5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MzpzdG1tYWMtb2Jqczo9IHN0bW1hY19tYWluLm8gc3RtbWFjX2V0aHRvb2wubyBzdG1tYWNfbWRpby5vIHJpbmdfbW9kZS5vXFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTQtXFx0ICAgICAgY2hhaW5fbW9kZS5vIGR3bWFjX2xpYi5vIGR3bWFjMTAwMF9jb3JlLm8gZHdtYWMxMDAwX2RtYS5vXFx0XFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MDo1MC4zMTU2NDU4MjNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDQ4NDU5NTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIFNUTU1BQyBEcml2ZXIgQ29uZmlndXJhdGlvbiBhbmQgVmlydHVhbGl6YXRpb24qKlxuXG5SaWdodCwgc28gSSBzZWUgdGhhdCBgQ09ORklHX1NUTU1BQ19FVEhgIGlzLCBhcyBleHBlY3RlZCwgYSBoYXJkIHJlcXVpcmVtZW50IGZvciB0aGUgU1RNTUFDIGRyaXZlci4gTm90aGluZyB1bmV4cGVjdGVkIHRoZXJlLCBidXQgYWx3YXlzIGdvb2QgdG8gY29uZmlybSB0aGUgYmFzaWNzLlxuXG5Ob3csIG15IG5leHQgdGhvdWdodCBpcyBhYm91dCB0aGUgbXVsdGktTVNJIGludGVycnVwdCBoYW5kbGluZyB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB2ZXJpZnkgdGhlIHJlYWNoYWJpbGl0eSBvZiBgc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaWAgd2l0aGluIHRoZXNlIGVudmlyb25tZW50cy4gVmlydHVhbGl6YXRpb24gaW50cm9kdWNlcyBzb21lIG51YW5jZXMgd2hlbiBpdCBjb21lcyB0byBpbnRlcnJ1cHQgbWFuYWdlbWVudCwgc28gSSB3YW50IHRvIGVuc3VyZSB0aGUgZHJpdmVyIGlzIGJlaGF2aW5nIGFzIGFudGljaXBhdGVkLiBTaW5jZSBTVE1NQUMgaGFzIGEgUENJIGRyaXZlciwgYHN0bW1hY19wY2kuY2AsIEknbGwgYmUgc3VyZSB0byBpbnZlc3RpZ2F0ZSB0aGF0IGRyaXZlciBmaWxlIGZvciByZWxldmFudCBpbnNpZ2h0cy4gVGhpcyB3aWxsIGhlbHAgd2l0aCBkZWJ1Z2dpbmcgaW4gY2FzZSBvZiBhbnkgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Mjk4LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTA6NTMuNzY0MTA4MDM0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3OTE3MTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY19wY2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NTM9b2JqLSQoQ09ORklHX0RXTUFDX01PVE9SQ09NTSlcXHQrPSBkd21hYy1tb3RvcmNvbW0ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjU0OnN0bW1hYy1wY2ktb2Jqczo9IHN0bW1hY19wY2kub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MDo1My44MTIwMzEzODlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjQ3MjkyNTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYHN0bW1hY19wY2ktb2Jqc2AgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgc2VlIHRoYXQgYHN0bW1hY19wY2ktb2Jqc2AgaXMgKmRlZmluZWQqIGluIHRoZSBtYWtlZmlsZSBvciBjb25maWcsIGdyZWF0LiBUaGF0J3MgcHJvZ3Jlc3MuIEJ1dCwgaW1tZWRpYXRlbHksIHRoZSBuZXh0IHF1ZXN0aW9uIGhpdHMgbWU6IHdoYXQncyB0aGUgYWN0dWFsICpjb25maWd1cmF0aW9uKiBvZiBpdD8gSXMgaXQgZW5hYmxlZD8gRGlzYWJsZWQ/IEJ1aWx0LWluPyBBIG1vZHVsZT8gQXJlIHRoZXJlIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBJJ20gbWlzc2luZz8gSSBuZWVkIHRvIGRyaWxsIGRvd24gaW50byB0aGUgS2NvbmZpZyBvcHRpb25zIHRvIHVuZGVyc3RhbmQgaG93IGBzdG1tYWNfcGNpLW9ianNgIGlzIGdldHRpbmcgaW5jbHVkZWQgKG9yICpub3QqIGluY2x1ZGVkKSBpbiB0aGUgZmluYWwgYnVpbGQuIEp1c3Qgc2VlaW5nIHRoZSBkZWZpbml0aW9uIGlzbid0IGVub3VnaDsgSSBuZWVkIHRoZSBmdWxsIHBpY3R1cmUgdG8gdHJvdWJsZXNob290IGVmZmVjdGl2ZWx5LiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29udGV4dC4gTGV0IG1lIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2ODQsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MDo1Ny4wNTkzMjY1NzJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NTQ5ODY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hYy1wY2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NDk9b2JqLSQoQ09ORklHX1NUTU1BQ19MSUJQQ0kpXFx0Kz0gc3RtbWFjX2xpYnBjaS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NTA6b2JqLSQoQ09ORklHX1NUTU1BQ19QQ0kpXFx0Kz0gc3RtbWFjLXBjaS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNTEtb2JqLSQoQ09ORklHX0RXTUFDX0lOVEVMKVxcdCs9IGR3bWFjLWludGVsLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTUzPW9iai0kKENPTkZJR19EV01BQ19NT1RPUkNPTU0pXFx0Kz0gZHdtYWMtbW90b3Jjb21tLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1NDpzdG1tYWMtcGNpLW9ianM6PSBzdG1tYWNfcGNpLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTA6NTcuMTA2ODgyNjU3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NjUyNzYyOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBQb3RlbnRpYWwgSW1wYWN0IG9mIFBDSSBEcml2ZXIgQ29uZmlndXJhdGlvbiBDaGFuZ2VzKipcblxuUmlnaHQsIHNvIGBDT05GSUdfU1RNTUFDX1BDSWAg4oCTIHRoYXQncyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciB0aGUgUENJLWJhc2VkIGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJpcHBsZSBlZmZlY3RzLCB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLiBNeSBpbW1lZGlhdGUgY29uY2VybiwgdGhvdWdoLCBpc24ndCBqdXN0IHRoZSBkcml2ZXIgaXRzZWxmLiBGcm9tIHBhc3QgZXhwZXJpZW5jZSBJIGtub3cgdGhhdCBmdW5kYW1lbnRhbCBjaGFuZ2VzIGxpa2UgdGhpcyBvZnRlbiB0b3VjaCBsb3cgbGV2ZWwgc3VwcG9ydCBhbmQgaW5mcmFzdHJ1Y3R1cmUuXG5cbkl0IGxvb2tzIGxpa2UgdGhlIHNpZ25pZmljYW50IG1vZGlmaWNhdGlvbnMgYXJlIGFjdHVhbGx5IHdpdGhpbiBga2VybmVsL2lycS9tYW5hZ2UuY2AgYW5kIGBsaWIvY3B1bWFzay5jYC4gVGhvc2UgYXJlICpjb3JlKiBrZXJuZWwgYXJlYXMg4oCTIGludGVycnVwdCBtYW5hZ2VtZW50IGFuZCBDUFUgbWFzayBtYW5pcHVsYXRpb24sIHJlc3BlY3RpdmVseSDigJMgYW5kIGFyZSBhYnNvbHV0ZWx5IHJlYWNoYWJsZSBmcm9tIGFueSBkcml2ZXIgdXNpbmcgdGhlIGludGVycnVwdHMgb3IgYWZmaW5pdHkuIFRoZXkgYXJlIGhpZ2hseSBsaWtlbHkgdG8gYmUgZGlyZWN0bHkgdG91Y2hlZCBieSB0aGVzZSBzb3J0cyBvZiBjb25maWcgY2hhbmdlcy5cblxuVGhlcmVmb3JlIEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcgcXVpY2tseS4gSXMgYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGV4cG9ydGVkPyBJZiBzbywgdGhpcyBzdWdnZXN0cyB0aGF0IHRoZSBJUlEgYWZmaW5pdHkgQVBJIGlzIGdvaW5nIHRvIGJlIHJlbGV2YW50IGFuZCBJIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBjYWxsaW5nIHBhdHRlcm5zIGZyb20gdGhpcyBkcml2ZXIsIGFuZCBob3cgaXQgaGFuZGxlcyBhZmZpbml0eS4gVGhpcyBjb3VsZCBiZSBpbXBvcnRhbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNDcsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MTowMS4wNzIxNjE0MjRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NDU0ODM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKl9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2lycS9tYW5hZ2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvaXJxL21hbmFnZS5jPTUwND1pbnQgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCh1bnNpZ25lZCBpbnQgaXJxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSwgYm9vbCBzZXRhZmZpbml0eSlcXG4tLVxcbmtlcm5lbC9pcnEvbWFuYWdlLmMtNTI2LX1cXG5rZXJuZWwvaXJxL21hbmFnZS5jOjUyNzpFWFBPUlRfU1lNQk9MX0dQTChfX2lycV9hcHBseV9hZmZpbml0eV9oaW50KTtcXG5rZXJuZWwvaXJxL21hbmFnZS5jLTUyOC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTE6MDEuMTE4NjI0MDQ5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNTY0Mjc5MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNoZWNraW5nIGZvciBgY3B1bWFza19sb2NhbF9zcHJlYWRgIEV4cG9ydCoqXG5cbkFscmlnaHQsIHRoYXQgY29uZmlybXMgaXQuIEkga25ldyBpdCB3YXMgbGlrZWx5LCBidXQgSSBhbHdheXMgd2FudCB0byBiZSBzdXJlIGJlZm9yZSBJIHN0YXJ0IGRvd24gYSBwYXRoLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBxdWlja2x5IHZlcmlmeSBpZiBgY3B1bWFza19sb2NhbF9zcHJlYWRgIGlzIGFjdHVhbGx5IGV4cG9ydGVkLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgYXZhaWxhYmxlIGZvciBteSBtb2R1bGUgdG8gdXRpbGl6ZSwgYW5kIGlzbid0IHNvbWVob3cgaGlkZGVuIG9yIHN1YmplY3QgdG8gc29tZSB3ZWlyZCBpbnRlcm5hbCBsaW5raW5nIGlzc3VlLiBUaGF0IGV4cG9ydCBzdGF0dXMgd2lsbCBiZSB0aGUgY3JpdGljYWwgbmV4dCBwb2ludCB0byBpbnZlc3RpZ2F0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjYxOCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUxOjA0LjE3NTA1NDM4MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU5ODc0MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qY3B1bWFza19sb2NhbF9zcHJlYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL2NwdW1hc2suY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvY3B1bWFzay5jPTExMD11bnNpZ25lZCBpbnQgY3B1bWFza19sb2NhbF9zcHJlYWQodW5zaWduZWQgaW50IGksIGludCBub2RlKVxcbi0tXFxubGliL2NwdW1hc2suYy0xMjEtfVxcbmxpYi9jcHVtYXNrLmM6MTIyOkVYUE9SVF9TWU1CT0woY3B1bWFza19sb2NhbF9zcHJlYWQpO1xcbmxpYi9jcHVtYXNrLmMtMTIzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MTowNC4yMjEwNDYyMTZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQzODYxOTg3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKipcblxuT2theSwgeWVzLCB0aGlzIHBhdGNoIGxvb2tzIHNpZ25pZmljYW50LiBJdCdzIHRvdWNoaW5nIGNvcmUga2VybmVsIGxvZ2ljIHJlbGF0ZWQgdG8gSVJRIGFmZmluaXR5IGhpbnRzIGFuZCBob3cgdGhlIGBjcHVtYXNrYCBpcyBzcHJlYWQgYWNyb3NzIENQVXMsIHdoaWNoIG1lYW5zIGl0IGltcGFjdHMgcXVpdGUgYSBmZXcgZHJpdmVycyB1bmRlciB0aGUgaG9vZC4gVGhlIGZhY3QgdGhhdCBpdCBhbHNvIGFkanVzdHMgdGhlIGBzdG1tYWNgIGRyaXZlciB0byAqY29ycmVjdGx5KiBsZXZlcmFnZSB0aGVzZSBtb2RpZmllZCBmdW5jdGlvbnMgaXMgYSBnb29kIHNpZ24sIGZ1bmN0aW9uYWxseS4gVGhpcyBpbXBsaWVzIGFuIG92ZXJhbGwgaW1wcm92ZW1lbnQgdG8gdGhlIHN5c3RlbS5cblxuR2l2ZW4gdGhhdCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIHByb3Blcmx5IGZ1enplZCBhbmQgdGVzdGVkLiBXZSdyZSBkZWFsaW5nIHdpdGggZnVuZGFtZW50YWwga2VybmVsIG1lY2hhbmlzbXMgaGVyZSwgc28gcm9idXN0IHRlc3RpbmcgaXMgcGFyYW1vdW50LlxuXG5Ob3csIGFzIGZhciBhcyBGb2N1c1N5bWJvbHMsIEkgaW1tZWRpYXRlbHkgc2VlIHRoZSBrZXkgZnVuY3Rpb25zIHRvIHdhdGNoIGhlcmU6IGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCwgYW5kIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAuIFRoZXNlIGFyZSB0aGUgaGVhcnQgb2YgdGhlIGNoYW5nZXMsIGl0IHNlZW1zLCBzbyB0aGV5IHdpbGwgbmVlZCBzcGVjaWFsIGF0dGVudGlvbi4gSWYgd2UgaW5jbHVkZSB0aGUgZHJpdmVyIGNoYW5nZXMgSSBuZWVkIHRvIGtlZXAgYW4gZXllIG9uIGBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpYC5cblxuV2FpdCBhIG1pbnV0ZSwgaXNuJ3QgdGhhdCBgc3RtbWFjYCBmdW5jdGlvbiBzdGF0aWMgaW4gYHN0bW1hY19tYWluLmNgPyBOZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0OyBzdGF0aWMgZnVuY3Rpb25zIGhhdmUgZGlmZmVyZW50IGltcGxpY2F0aW9ucyBmb3Igb3ZlcmFsbCBjaGFuZ2UgaW1wYWN0LiBMZXQncyBzZWUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkwMiwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MTowOC42NTk2NjkzNjNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NTIzNzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTM4MDQ9c3RhdGljIGludCBzdG1tYWNfbXNpX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zODIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MzgyNDpzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM4MjUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MDM5PXN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQwNDUtXFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWZsYWdzIFxcdTAwMjYgU1RNTUFDX0ZMQUdfTVVMVElfTVNJX0VOKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDA0NjpcXHRcXHRyZXQgPSBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MDQ3LVxcdGVsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTE6MDguNzA2MTk5MTU5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMTU5NTk5NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyB0aGUgc3VtbWFyeSwgZm9ybWF0dGVkIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBDb2RlJ3MgU3RhdGljIE5hdHVyZSoqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSwgYW5kIGl0J3MgZGVmaW5pdGVseSBwb2ludGluZyB0byBhIHN0YXRpYyBjb25zdHJ1Y3QuIFRoZSBpbnN0cnVjdGlvbnMgYXJlIHByZXR0eSBjbGVhcjogXCJQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcIi4gVGhhdCdzIG15IGd1aWRpbmcgcHJpbmNpcGxlIGhlcmUuIEdpdmVuIHRoYXQsIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gdGhlIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzLiBUaGF0IHBvaW50cyBtZSBhd2F5IGZyb20gdGhlIHN0YXRpYyBmdW5jdGlvbnMgaW1tZWRpYXRlbHkuXG5cblRoaW5raW5nIGFib3V0IHdoaWNoIGVudHJ5IHBvaW50cyBhcmUgcmVsZXZhbnQsIGBzdG1tYWNfcmVxdWVzdF9pcnFgIGFuZCBgc3RtbWFjX29wZW5gIHNlZW0gbGlrZSB0aGUgbGlrZWx5IGNhbmRpZGF0ZXMgZm9yIGludmVzdGlnYXRpb24uIFRoZXkncmUgcHJvYmFibHkgdGhlIHN0YXJ0aW5nIHBvaW50cyBmb3IgdGhlIHdvcmsgSSBuZWVkIHRvIGRvLiBOb3csIHRvIHVuZGVyc3RhbmQgaG93IGBzdG1tYWNfcmVxdWVzdF9pcnFgIGZ1bmN0aW9ucywgSSBzaG91bGQgaW52ZXN0aWdhdGUgd2hhdCBjYWxscyAqaXQqLiBUaGUgY2FsbCBncmFwaCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBmbG93IGFuZCBob3cgdGhpcyBzdGF0aWMgZW52aXJvbm1lbnQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNhbGwgZ3JhcGggcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzcxOCwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUxOjEyLjgyMjE2MTgxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjI5ODQ3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcmVxdWVzdF9pcnFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTM4MDQ9c3RhdGljIGludCBzdG1tYWNfbXNpX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zODIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MzgyNDpzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM4MjUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zOTg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6Mzk4NjpzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9zaW5nbGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM5ODcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MDM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDAzOTpzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDA0MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQwNDUtXFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWZsYWdzIFxcdTAwMjYgU1RNTUFDX0ZMQUdfTVVMVElfTVNJX0VOKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDA0NjpcXHRcXHRyZXQgPSBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MDQ3LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQwNDg6XFx0XFx0cmV0ID0gc3RtbWFjX3JlcXVlc3RfaXJxX3NpbmdsZShkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDA0OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDEzOD1zdGF0aWMgaW50IF9fc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDE3NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxNzU6XFx0cmV0ID0gc3RtbWFjX3JlcXVlc3RfaXJxKGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTc2LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcxMzk9aW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MjA4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzIwOTpcXHRyZXQgPSBzdG1tYWNfcmVxdWVzdF9pcnEoZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcyMTAtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTE6MTIuODY4NDY3NDc1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MTA0OTMxNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgc3RtbWFjX29wZW5gIEVudHJ5IFBvaW50KipcblxuUmlnaHQsIGBzdG1tYWNfb3BlbmAuIFRoYXQncyB3aGVyZSBpdCBhbGwgYmVnaW5zLCBpc24ndCBpdD8gVGhlIHN0YXJ0aW5nIGd1bi4gV2hlbmV2ZXIgdGhlIG5ldHdvcmsgaW50ZXJmYWNlLCB3aGljaCBpcyBiYWNrZWQgYnkgYW4gU1RNaWNyb2VsZWN0cm9uaWNzIChTVE1NQUMpIEV0aGVybmV0IGRyaXZlciwgaXMgYWN0aXZhdGVkLCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBkcml2ZXIgaXMgdHJpZ2dlcmVkLCBieSB0aGlzIGZ1bmN0aW9uLiBJIGltbWVkaWF0ZWx5IGtub3cgdGhpcyBpcyB0aGUgZnVuY3Rpb24gdGhhdCBpbml0aWFsaXplcyB0aGUgaGFyZHdhcmUsIGNvbmZpZ3VyZXMgdGhlIE1BQywgc2V0cyB1cCB0aGUgRE1BIGNoYW5uZWxzLCBhbGxvY2F0ZXMgYnVmZmVycywgYW5kIGRvZXMgYWxsIHRoZSBncm91bmR3b3JrIHRvIGdldCB0aGUgRXRoZXJuZXQgaW50ZXJmYWNlIHJlYWR5IHRvIHRyYW5zbWl0IGFuZCByZWNlaXZlIHBhY2tldHMuIEl0J3MgdGhlIGNyaXRpY2FsIGZpcnN0IHN0ZXAgaW4gdGhlIGVudGlyZSBjb21tdW5pY2F0aW9uIHByb2Nlc3MuIEZyb20gaGVyZSwgYWxsIHRoZSBvdGhlciBjb21wb25lbnRzIHdpbGwgYmUgY29vcmRpbmF0ZWQgYW5kIGxpbmtlZCwgdGhpcyBpcyB0aGUgZmlyc3QgZnVuY3Rpb24gY2FsbGVkLiBJIG5lZWQgdG8ga2VlcCB0aGlzIHZlcnkgZnVuY3Rpb24gaW4gbWluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODk0MiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUxOjE2LjQ3ODk2MzMyOFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYyNTcxMDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX29wZW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQwNjM9c3RtbWFjX3NldHVwX2RtYV9kZXNjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdW5zaWduZWQgaW50IG10dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDEyOC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxMjk6ICogIF9fc3RtbWFjX29wZW4gLSBvcGVuIGVudHJ5IHBvaW50IG9mIHRoZSBkcml2ZXJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxMzAtICogIEBkZXYgOiBwb2ludGVyIHRvIHRoZSBkZXZpY2Ugc3RydWN0dXJlLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTM3LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDEzODpzdGF0aWMgaW50IF9fc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxMzktXFx0XFx0XFx0IHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTk1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDE5NjpzdGF0aWMgaW50IHN0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTk3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDIyMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyMjQ6XFx0cmV0ID0gX19zdG1tYWNfb3BlbihkZXYsIGRtYV9jb25mKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyMjUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NjExND1zdGF0aWMgaW50IHN0bW1hY19jaGFuZ2VfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuZXdfbXR1KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02MTQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjE1MDpcXHRcXHRyZXQgPSBfX3N0bW1hY19vcGVuKGRldiwgZG1hX2NvbmYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjE1MS1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMjA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjczMjE6XFx0Lm5kb19vcGVuID0gc3RtbWFjX29wZW4sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzIyLVxcdC5uZG9fc3RhcnRfeG1pdCA9IHN0bW1hY194bWl0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NjA3PWludCBzdG1tYWNfcmVpbml0X3F1ZXVlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCByeF9jbnQsIHU4IHR4X2NudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYyNi1cXHRpZiAobmV0aWZfcnVubmluZyhkZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzYyNzpcXHRcXHRyZXQgPSBzdG1tYWNfb3BlbihkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYyOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzYzMj1pbnQgc3RtbWFjX3JlaW5pdF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHJ4X3NpemUsIHUzMiB0eF9zaXplKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjQzLVxcdGlmIChuZXRpZl9ydW5uaW5nKGRldikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NjQ0OlxcdFxcdHJldCA9IHN0bW1hY19vcGVuKGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjQ1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MToxNi41MjUyMjYwNjNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM5MDM0NDc0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNUTU1BQyBEcml2ZXIncyBFbnRyeSBQb2ludCBmb3IgWERQIENvbXBhdGliaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgU1RNTUFDIGRyaXZlciBjb2RlIGZvciBYRFAgc3VwcG9ydC4gVGhlIHN0YXJ0aW5nIHBvaW50IHNlZW1zIHRvIGJlIGBzdG1tYWNfb3BlbmAsIGJ1dCB3YWl0IGEgc2Vjb25kLi4uIHRoYXQncyBkZWNsYXJlZCBhcyBzdGF0aWMuIEhtbSwgdGhhdCdzIGEgYml0IG9mIGEgcm9hZGJsb2NrLiBJIG5lZWQgYSBub24tc3RhdGljIGVudHJ5IHBvaW50LiBMZXQgbWUgc2NhbiB0aHJvdWdoLi4uIGFoLCB5ZXMsIGBzdG1tYWNfeGRwX29wZW5gISBUaGF0IG9uZSBpc24ndCBzdGF0aWMuIEJ1dCwgZXZlbiBpZiBJIGNhbid0IGRpcmVjdGx5IHRhcmdldCBgc3RtbWFjX29wZW5gLCB0aGUga2V5IG1vZGlmaWNhdGlvbnMgYXJlIHByb2JhYmx5IGdvaW5nIHRvIGJlIGFyb3VuZCB0aGUgaW50ZXJydXB0IGhhbmRsaW5nLlxuXG5SaWdodCwgc28gdGhhdCBwcm9iYWJseSBtZWFucyBJIHNob3VsZCBiZSBmb2N1c2luZyBvbiB0aGUgaW50ZXJydXB0IGFmZmluaXR5IHN0dWZmLiBJIGNhbiBwcm9iYWJseSBqdXN0IGxldmVyYWdlIGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCBhbmQgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYC4gVGhleSBsb29rIGxpa2UgdGhlIGNvcmUgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgSSBuZWVkIHRvIHRhcCBpbnRvLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgZGVmaW5pdGlvbiBvZiBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgYW5kIHNlZSBleGFjdGx5IHdoYXQgaXQncyBkb2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzMjIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTE6MjAuOTE1NTc0MjI2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzE1NDMxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2lycV9hcHBseV9hZmZpbml0eV9oaW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9pcnEvbWFuYWdlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2lycS9tYW5hZ2UuYz01MDI9RVhQT1JUX1NZTUJPTF9HUEwoaXJxX2ZvcmNlX2FmZmluaXR5KTtcXG5rZXJuZWwvaXJxL21hbmFnZS5jLTUwMy1cXG5rZXJuZWwvaXJxL21hbmFnZS5jOjUwNDppbnQgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCh1bnNpZ25lZCBpbnQgaXJxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSwgYm9vbCBzZXRhZmZpbml0eSlcXG5rZXJuZWwvaXJxL21hbmFnZS5jLTUwNS17XFxuLS1cXG5rZXJuZWwvaXJxL21hbmFnZS5jLTUyNi19XFxua2VybmVsL2lycS9tYW5hZ2UuYzo1Mjc6RVhQT1JUX1NZTUJPTF9HUEwoX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCk7XFxua2VybmVsL2lycS9tYW5hZ2UuYy01MjgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUxOjIwLjk2MjczMzg4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkyNDEzMDMxMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgYW5kIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAqKlxuXG5SaWdodCwgKndhaXQgYSBtaW51dGUqLiBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgaXMgKm5vbi1zdGF0aWMqIGFuZCAqZXhwb3J0ZWQqPyBUaGF0J3MuLi4gaW50ZXJlc3RpbmcsIGFuZCBzb21ld2hhdCB1bnVzdWFsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGl0IGJlaW5nIGV4cG9zZWQgbGlrZSB0aGF0LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb25zIGFyZTogV2hhdCdzIHRoZSByYXRpb25hbGUgYmVoaW5kIGV4cG9ydGluZyBpdD8gV2hhdCBwb3RlbnRpYWwgdXNlIGNhc2VzIGFyZSB0aGVyZSBvdXRzaWRlIG9mIGl0cyBwcmltYXJ5IG1vZHVsZT8gQXJlIHRoZXJlIGFueSBoaWRkZW4gc2lkZSBlZmZlY3RzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IGxpa2VseSBpc3N1ZXMgcmVsYXRpbmcgdG8gaXRzIHdpZGVyIGFjY2Vzc2liaWxpdHk/IEFueSByYWNlIGNvbmRpdGlvbnMsIHBvdGVudGlhbCBmb3IgbWlzdXNlLCBvciB1bmV4cGVjdGVkIGRlcGVuZGVuY2llcz9cblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEknbSBnb2luZyB0byBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBzZW1hbnRpY3Mgb2YgdGhhdCBmdW5jdGlvbiBhbmQgaXRzIGludGVuZGVkIHVzZSBjYXNlLiBBbHNvLCBJIG5lZWQgdG8gY2hlY2sgaG93IHRoZSBleHBvcnRlZCBub24tc3RhdGljIG5hdHVyZSBhZmZlY3RzIHRoZSBjb21waWxhdGlvbiBhbmQgbGlua2luZyBwcm9jZXNzLCBhcyBjb21wYXJlZCB0byBzaW1pbGFyIHN0YXRpYyBmdW5jdGlvbnMuIE15IHByaW1hcnkgY29uY2VybiB3b3VsZCBiZSB0byBlbnN1cmUgdGhhdCB0aGUgYnJvYWRlciBleHBvc3VyZSBkb2Vzbid0IGludHJvZHVjZSB2dWxuZXJhYmlsaXRpZXMgb3IgdW5leHBlY3RlZCBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcywgb3IgdGhhdCBpdCBpcyBub3QgbWFza2luZyBhIHBvdGVudGlhbGx5IG1vcmUgcm9idXN0IGRlc2lnbi5cblxuU2luY2UgdGhpcyBpcyByZWxhdGVkIHRvIGludGVycnVwdCBoYW5kbGluZywgSSBzdXNwZWN0IHRoZSBleHBvcnRlZCBuYXR1cmUgbWlnaHQgYmUgcmVsYXRlZCB0byBtb3JlIGNvbXBsZXggc2NoZWR1bGluZyBvciBkeW5hbWljIGFmZmluaXR5IGFkanVzdG1lbnRzLCBtYXliZSBldmVuIHNvbWV0aGluZyB1c2VyLXNwYWNlIGludGVyYWN0cyB3aXRoICh0aG91Z2ggdGhhdCBzZWVtcyBsZXNzIGxpa2VseSBmb3IgYW4gaW50ZXJuYWwgZnVuY3Rpb24gbmFtZSBsaWtlIHRoaXMpLlxuXG5UaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY29uZmlybSB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uLiBUaW1lIHRvIGNoZWNrIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAgaW4gcmVsYXRpb24gdG8gdGhpcywgc2luY2UgdGhhdCBpcyBvYnZpb3VzbHkgaW52b2x2ZWQuIEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCB0aGUgZXhhY3QgbG9naWMgYmVoaW5kIHRoYXQgZnVuY3Rpb24uIFdoYXQgc29ydCBvZiBjb25zdHJhaW50cyBhcmUgaW4gcGxhY2U/IERvZXMgdGhlIHNwcmVhZCBiZWhhdmlvciBpbmZsdWVuY2UgaG93IGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCB3b3Jrcz8gSXMgdGhlcmUgc29tZSB0aWdodCBjb3VwbGluZyBJJ20gbm90IGltbWVkaWF0ZWx5IHNlZWluZz8gQXJlIHRoZSByZXN1bHRzIGRlcGVuZGVudCBvbiBzcGVjaWZpYyBhcmNoaXRlY3R1cmFsIGZlYXR1cmVzIG9yIGtlcm5lbCBjb25maWd1cmF0aW9ucz9cblxuSSdtIHRoaW5raW5nIGFib3V0IHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGNoYW5nZXMgdG8gdGhlIGludGVycnVwdCBhZmZpbml0eSBzeXN0ZW0gb24gcGVyZm9ybWFuY2UsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgYW5kIHdvcmtsb2Fkcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA4NTcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MTozMC4yMDQwMzk2NVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY2MTQ1OTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY3B1bWFza19sb2NhbF9zcHJlYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL2NwdW1hc2suY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvY3B1bWFzay5jPTc0PXZvaWQgX19pbml0IGZyZWVfYm9vdG1lbV9jcHVtYXNrX3ZhcihjcHVtYXNrX3Zhcl90IG1hc2spXFxuLS1cXG5saWIvY3B1bWFzay5jLTgwLS8qKlxcbmxpYi9jcHVtYXNrLmM6ODE6ICogY3B1bWFza19sb2NhbF9zcHJlYWQgLSBzZWxlY3QgdGhlIGkndGggY3B1IGJhc2VkIG9uIE5VTUEgZGlzdGFuY2VzXFxubGliL2NwdW1hc2suYy04Mi0gKiBAaTogaW5kZXggbnVtYmVyXFxuLS1cXG5saWIvY3B1bWFzay5jLTkyLSAqIGZvciAoaSA9IDA7IGkgXFx1MDAzYyBudW1fb25saW5lX2NwdXMoKTsgaSsrKSB7XFxubGliL2NwdW1hc2suYzo5MzogKlxcdGNwdSA9IGNwdW1hc2tfbG9jYWxfc3ByZWFkKGksIG5vZGUpO1xcbmxpYi9jcHVtYXNrLmMtOTQtICpcXHRkb19zb21ldGhpbmcoY3B1KTtcXG4tLVxcbmxpYi9jcHVtYXNrLmMtMTA2LSAqIGVudW1lcmF0aW9uIGlzIE8oc2NoZWRfZG9tYWluc19udW1hX2xldmVscyAqIG5yX2NwdV9pZHMpLCB3aGlsZVxcbmxpYi9jcHVtYXNrLmM6MTA3OiAqIGNwdW1hc2tfbG9jYWxfc3ByZWFkKCkgd2hlbiBjYWxsZWQgZm9yIGVhY2ggY3B1IGlzXFxubGliL2NwdW1hc2suYy0xMDgtICogTyhzY2hlZF9kb21haW5zX251bWFfbGV2ZWxzICogbnJfY3B1X2lkcyAqIGxvZyhucl9jcHVfaWRzKSkuXFxubGliL2NwdW1hc2suYy0xMDktICovXFxubGliL2NwdW1hc2suYzoxMTA6dW5zaWduZWQgaW50IGNwdW1hc2tfbG9jYWxfc3ByZWFkKHVuc2lnbmVkIGludCBpLCBpbnQgbm9kZSlcXG5saWIvY3B1bWFzay5jLTExMS17XFxuLS1cXG5saWIvY3B1bWFzay5jLTEyMS19XFxubGliL2NwdW1hc2suYzoxMjI6RVhQT1JUX1NZTUJPTChjcHVtYXNrX2xvY2FsX3NwcmVhZCk7XFxubGliL2NwdW1hc2suYy0xMjMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUxOjMwLjI1MDY1ODE3NVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzA0NjYxMTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgRnVuY3Rpb24gVmlzaWJpbGl0eSBpbiB0aGUgU1RNTUFDIERyaXZlcioqXG5cbk9rYXksIHNvIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAgaXMgZXhwb3NlZCB0byBvdGhlciBtb2R1bGVzLCB3aGljaCBpc24ndCB1bnVzdWFsLiBMZXQncyBzZWUgaWYgdGhhdCBoYXMgYW55IGltcGxpY2F0aW9ucyBoZXJlLiBOb3cgSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSB2aXNpYmlsaXR5IG9mIHNvbWUgZnVuY3Rpb25zIGluIHRoZSBTVE1NQUMgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGljaCBmdW5jdGlvbnMgYXJlIHN0YXRpYyBhbmQgdGhlcmVmb3JlIG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhlIGNvbXBpbGF0aW9uIHVuaXQsIGFuZCB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciBvdGhlciBtb2R1bGVzIHRvIGNhbGwuIFJpZ2h0LCBsZXQgbWUgY2hlY2sgYHN0bW1hY19vcGVuYC4gQWgsIHllcCwgaXQncyBzdGF0aWMsIGdvb2QuIFNvLCB0aGF0J3MgZW5jYXBzdWxhdGVkIHdpdGhpbiB0aGUgZHJpdmVyJ3MgY29kZSBpdHNlbGYuIE9rYXksIGFuZCBob3cgYWJvdXQgYHN0bW1hY194ZHBfb3BlbmA/ICpUaGF0KiBvbmUncyBub3Qgc3RhdGljLiBJbnRlcmVzdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE3NTgsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MTozNi41NTUzMjY0MTlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MjczMDM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY194ZHBfb3BlblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzEwNj12b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzEzOTppbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTQwLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTE6MzYuNjEyNjA2NjczWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NTExOTY4MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNvbnNpZGVyaW5nIHRoZSBJbmNsdXNpb24gb2YgYHN0bW1hY194ZHBfb3BlbmAqKlxuXG5SaWdodCwgbGV0J3Mgc2VlLCB3ZSdyZSBkZWZpbml0ZWx5IGxvb2tpbmcgYXQgaW5jb3Jwb3JhdGluZyBgc3RtbWFjX3hkcF9vcGVuYCBpbnRvIHRoaXMuIE1ha2VzIHNlbnNlLiBJdCdzIG9uIHRoZSBsaXN0IGZvciBhIHJlYXNvbi4gTmVlZCB0byBtYWtlIHN1cmUgd2UncmUgY292ZXJpbmcgYWxsIGJhc2VzLiBJdCdzIGEga2V5IHBhcnQgb2YgdGhlIFhEUCBpbnRlZ3JhdGlvbiwgc28gd2UgaGF2ZSB0byBmYWN0b3IgaXQgaW4uXG5cbk5vdywgYSBxdWljayBjaGVjayBvbiBzb21ldGhpbmcgZWxzZS4gV2hhdCdzIHRoZSBpbXBsZW1lbnRhdGlvbiBzdGF0dXMgb2YgYGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnRgPyBJcyBpdCBhIG1hY3JvIG9yIGEgZnVuY3Rpb24/IEl0J3MgZWFzeSBlbm91Z2ggdG8gdmVyaWZ5IGJ1dCBpbXBvcnRhbnQgdG8gYmUgY2VydGFpbiwgYmVjYXVzZSB0aGF0IGhhcyBpbXBsaWNhdGlvbnMgZm9yIHRoZSBvdmVyYWxsIGFwcHJvYWNoLiBJIG5lZWQgdG8ga25vdyB3aGV0aGVyIGl0IGV4cGFuZHMgaW5saW5lIG9yIGlmIHRoZXJlJ3MgYSBmdW5jdGlvbiBjYWxsIGhhcHBlbmluZyBhdCBydW50aW1lLiBUaGF0IGltcGFjdHMgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzLCBwb3RlbnRpYWwgaW5saW5pbmcsIGFuZCBkZWJ1Z2dpbmcgcG9zc2liaWxpdGllcy4gSSdsbCBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IHF1aWNrIGJlZm9yZSBJIGZvcmdldC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIxOTUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MTo0MC40NjM4MDU4MjNaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3OTkzNTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oPTMzNT1pcnFfdXBkYXRlX2FmZmluaXR5X2hpbnQodW5zaWduZWQgaW50IGlycSwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKm0pXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTM0MC0vKipcXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oOjM0MTogKiBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50IC0gVXBkYXRlIHRoZSBhZmZpbml0eSBoaW50IGFuZCBhcHBseSB0aGUgcHJvdmlkZWRcXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTM0Mi0gKlxcdFxcdFxcdCAgICAgY3B1bWFzayB0byB0aGUgaW50ZXJydXB0XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oPTM0OT1zdGF0aWMgaW5saW5lIGludFxcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0Lmg6MzUwOmlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQodW5zaWduZWQgaW50IGlycSwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKm0pXFxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaC0zNTEte1xcbi0tXFxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaC0zNTUtLypcXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oOjM1NjogKiBEZXByZWNhdGVkLiBVc2UgaXJxX3VwZGF0ZV9hZmZpbml0eV9oaW50KCkgb3IgaXJxX3NldF9hZmZpbml0eV9hbmRfaGludCgpXFxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaC0zNTctICogaW5zdGVhZC5cXG4tLVxcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0Lmg9MzU5PXN0YXRpYyBpbmxpbmUgaW50IGlycV9zZXRfYWZmaW5pdHlfaGludCh1bnNpZ25lZCBpbnQgaXJxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSlcXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTM2MC17XFxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaDozNjE6XFx0cmV0dXJuIGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoaXJxLCBtKTtcXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTM2Mi19XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oPTM5NT1zdGF0aWMgaW5saW5lIGludCBpcnFfdXBkYXRlX2FmZmluaXR5X2hpbnQodW5zaWduZWQgaW50IGlycSxcXG4tLVxcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0LmgtNDAwLVxcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0Lmg6NDAxOnN0YXRpYyBpbmxpbmUgaW50IGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQodW5zaWduZWQgaW50IGlycSxcXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTQwMi1cXHRcXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGNwdW1hc2sgKm0pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUxOjQwLjUxMTgwODM0OFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTUwNjkwNzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW50ZXJydXB0IEFmZmluaXR5IExvZ2ljKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBpbmxpbmUgZnVuY3Rpb24sIGFuZCBpdCdzIGNhbGxpbmcgYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgLiBUaGF0J3MgdGhlIGNvcmUgb2YgdGhlIG1hdHRlciBoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGFmZmluaXR5IGlzIGJlaW5nIGFwcGxpZWQsIHNvIGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCBpcyBkZWZpbml0ZWx5IGEga2V5IGZvY3VzIHN5bWJvbC4gSSBhbHNvIHNlZSBjYWxscyB0byBgY3B1bWFza19sb2NhbF9zcHJlYWRgLCBzbyBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGl0cyBkb2luZy4gQW5kIEkgc2VlIHRoYXQgYHN0bW1hY194ZHBfb3BlbmAgaXMgcHJlc2VudC4gVGhhdCdzIHJlbGV2YW50IHNpbmNlIHRoYXQgbGlrZWx5IGNvbnRhaW5zIHRoZSBsb2dpYyBzdXJyb3VuZGluZyBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiB0b28uXG5cbk5vdywgdG8gbWFrZSBzdXJlIEkgY2FuIGFjdHVhbGx5ICp0ZXN0KiB0aGlzIGluIGEgUUVNVSBlbnZpcm9ubWVudCwgSSdsbCBuZWVkIHRoZSByaWdodCBjb25maWd1cmF0aW9ucyBlbmFibGVkLiBJJ2xsIG5lZWQgYFNUTU1BQ19FVEhgLCBvYnZpb3VzbHksIHNpbmNlIGl0J3MgYW4gZXRoZXJuZXQgZHJpdmVyLiBCdXQsIEkgYmVsaWV2ZSBJJ2xsIG5lZWQgYFNUTU1BQ19QQ0lgIHRvIGJlIGVuYWJsZWQgYXMgd2VsbCwgc28gSSBjYW4gcmVhY2ggdGhpcyBmdW5jdGlvbmFsaXR5IHZpYSBQQ0kuIExldCBtZSBkb3VibGUtY2hlY2sgdGhhdCBgU1RNTUFDX1BDSWAgaXMgdGhlIGNvcnJlY3QgcGF0aC4gSXQncyBlYXN5IHRvIGdldCB0aGVzZSBkZXRhaWxzIHdyb25nIGFuZCBJIGRvbid0IHdhbnQgdG8gd2FzdGUgdGltZSBkZWJ1Z2dpbmcgc29tZXRoaW5nIEkgY2FuJ3QgZXZlbiByZXByb2R1Y2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyOTQ1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUxOjQ0LjY2MjUwMjA3NloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk2NDIzMTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiU1RNTUFDX1BDSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUxOjQ0LjcxMjE1MDgxMVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDI2OTY4MzIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQ29uZmlybWluZyB0aGUgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsICpTVE1NQUNfUENJKuKApiB0aGF0IGZlZWxzIHJpZ2h0LCBkb2Vzbid0IGl0PyBCYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgYXJjaGl0ZWN0dXJlIGFuZCB0aGUgaGFyZHdhcmUgSSdtIHRhcmdldGluZywgeWVhaCwgdGhhdCdzIGRlZmluaXRlbHkgdGhlIGtleSBjb25maWd1cmF0aW9uIEkgbmVlZCB0byBiZSBmb2N1c2luZyBvbi4gQnV0LCBiZWZvcmUgSSBnZXQgdG9vIGZhciBkb3duIHRoYXQgcGF0aCwgbGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCAqU1RNTUFDX0VUSCogaXNuJ3QgbHVya2luZyBhcyB0aGUgcHJpbWFyeSBkcml2ZXIgY29uZmlndXJhdGlvbiBpbiB0aGlzIGVudmlyb25tZW50LiBJdCdzIGFsd2F5cyB3aXNlIHRvIGVsaW1pbmF0ZSB0aGUgb2J2aW91cyBiZWZvcmUgZ2V0dGluZyBkZWVwIGludG8gdGhlIHdlZWRzIHdpdGggUENJIHNwZWNpZmljIHNldHRpbmdzLiBHb3R0YSBtYWtlIHN1cmUgSSdtIHN0YXJ0aW5nIGZyb20gdGhlIGNvcnJlY3QsIG1vc3QgYmFzaWMgZm91bmRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM0ODcsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MTo0OC43MzkxMjIyMjJaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NzY3NDU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlNUTU1BQ19FVEhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTg6aWYgU1RNTUFDX0VUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTQwNz1jb25maWcgU1RNTUFDX1BDSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MTktXFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDIwOmVuZGlmICMgU1RNTUFDX0VUSFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MTo0OC43ODc4OTQ3NzdaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQyODI4MTkwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIFNUTU1BQyBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5SaWdodCwgc28sIGFzIEkgdW5kZXJzdGFuZCBpdCwgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAgYXJlIHRoZSB0d28ga2V5IGNvbmZpZ3VyYXRpb25zIHdlJ3JlIGRlYWxpbmcgd2l0aCBoZXJlLCBjb3JyZWN0PyBKdXN0IG1ha2luZyBzdXJlIEknbSBvbiB0aGUgcmlnaHQgdHJhY2sgYmVmb3JlIGRpdmluZyBkZWVwZXIuXG5cbk5vdywgSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyBpbXBvcnRhbnQ6IGRvZXMgYFNUTU1BQ19QQ0lgIGhhdmUgYW55IGRlcGVuZGVuY2llcz8gQXJlIHRoZXJlIG90aGVyIGNvbmZpZ3MgdGhhdCAqbXVzdCogYmUgZW5hYmxlZCBvciBhcmUgcmVxdWlyZWQgdG8gYmUgY29uZmlndXJlZCBpbiBhIGNlcnRhaW4gd2F5LCBiZWZvcmUgYFNUTU1BQ19QQ0lgIGNhbiBldmVuIGJlIGNvbnNpZGVyZWQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXBzIGhlcmUgdG8gYXZvaWQgYW55IGludGVncmF0aW9uIGhlYWRhY2hlcyBsYXRlciBvbi4gTGV0J3Mgc2VlIHdoYXQncyBjb25uZWN0ZWQgdG8gYFNUTU1BQ19QQ0lgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzk4MywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUxOjUyLjIxNjE3OTg2WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjcyODUwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU1RNTUFDX1BDSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUxOjUyLjI2MjkxNjc4NloiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjExMTUyMTQyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gcmVhZGluZyBhbmQgdGhpbmtpbmcgYWJvdXQgdGhvc2UgbGluZXMgb2YgY29kZTpcblxuKipBbmFseXppbmcgYGNvbmZpZyBTVE1NQUNfUENJYCoqXG5cbk9rYXksIHNvIEkgc2VlIGBjb25maWcgU1RNTUFDX1BDSWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBhbHJpZ2h0LCB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIFNUTU1BQyBFdGhlcm5ldCBkcml2ZXIsIHNwZWNpZmljYWxseSB3aGVuIGl0J3MgYmVpbmcgdXNlZCBvbiBhIFBDSSBidXMuIFRoaXMgaXMgaW50ZXJlc3RpbmcuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LCB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgdGhlIG90aGVyIHJlbGF0ZWQgb3B0aW9ucyB0byB0cnVseSBncmFzcCB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGlzLlxuXG5JIG5lZWQgdG8gcmVhZCB0aGUgbGluZXMgYXJvdW5kIHRoaXMgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgY29uZmlnIG9wdGlvbiBjb250cm9scy4gSXMgaXQgZW5hYmxpbmcgdGhlIFBDSSBpbnRlcmZhY2UgZm9yIFNUTU1BQywgb3IgaXMgaXQgZW5hYmxpbmcgdGhlIHdob2xlIFNUTU1BQyBkcml2ZXIgZm9yIFBDSS1iYXNlZCBoYXJkd2FyZT8gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSBpdCdzIGxpa2VseSB0aGUgZm9ybWVyLCBidXQgSSBjYW4ndCBiZSBzdXJlIHdpdGhvdXQgbW9yZSBkYXRhLiBJdCdzIHByb2JhYmx5IHJlbGF0ZWQgdG8gc3VwcG9ydGluZyBhIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24sIG9yIG1heWJlIGV2ZW4gYSBzcGVjaWZpYyBib2FyZC4gSSdsbCBuZWVkIHRvIHNlZSBob3cgaXQncyBkZWZpbmVkIGFuZCB1c2VkIGVsc2V3aGVyZSBpbiB0aGUgS2NvbmZpZyBmaWxlcy4gQXJlIHRoZXJlIGFueSBkZWZhdWx0IHNldHRpbmdzPyBBbnkgZGVwZW5kZW5jaWVzIG9uIG90aGVyIG1vZHVsZXMgb3IgZHJpdmVycz8gQW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZsYWdzIHRoYXQgYXJlIHRyaWdnZXJlZCBieSBpdD9cblxuSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBlbHNlIG1pZ2h0IGJlIGNvbnRpbmdlbnQgb24gYFNUTU1BQ19QQ0lgLiBUaGlzIGlzIGtleS4gQXJlIHRoZXJlIG90aGVyIHJlbGF0ZWQgb3B0aW9ucywgbGlrZSBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiwgZGV2aWNlIHRyZWUgc2V0dGluZ3MsIG9yIE1BQyBhZGRyZXNzIGFzc2lnbm1lbnQgdGhhdCBhcmUgYWZmZWN0ZWQ/IEFueSBwb3NzaWJsZSBjb25mbGljdHMgd2l0aCBvdGhlciBkcml2ZXJzIG9yIGhhcmR3YXJlIGNvbXBvbmVudHM/IFRoZSBtb3JlIGluZm9ybWF0aW9uIEkgY2FuIGdhdGhlciBhcm91bmQgdGhpcyBvbmUgbGluZSwgdGhlIGJldHRlciBJIGNhbiBncmFzcCB0aGUgd2hvbGUgU1RNTUFDIGltcGxlbWVudGF0aW9uLiBJIHdhbnQgdG8gYnVpbGQgYSBjb21wbGV0ZSBwaWN0dXJlIGhlcmUgYW5kIHVuZGVyc3RhbmQgdGhlIHJhbWlmaWNhdGlvbnMgb2YgdHVybmluZyBpdCBvbiBvciBvZmYuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MzU3LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTI6MDQuMzc0NDQxMzg2WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQwMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQwMDpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiA0MDE6XFx0XFx0c2VsZWN0IE1PVE9SQ09NTV9QSFlcXG4gNDAyOlxcdFxcdHNlbGVjdCBTVE1NQUNfTElCUENJXFxuIDQwMzpcXHRcXHRoZWxwXFxuIDQwNDpcXHRcXHQgIFRoaXMgZW5hYmxlcyBnbHVlIGRyaXZlciBmb3IgTW90b3Jjb21tIERXTUFDLWJhc2VkIFBDSSBFdGhlcm5ldFxcbiA0MDU6XFx0XFx0ICBjb250cm9sbGVycy4gQ3VycmVudGx5IG9ubHkgWVQ2ODAxIGlzIHN1cHBvcnRlZC5cXG4gNDA2OlxcdFxcbiA0MDc6XFx0Y29uZmlnIFNUTU1BQ19QQ0lcXG4gNDA4OlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XFxcIlxcbiA0MDk6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gNDEwOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiA0MTE6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gNDEyOlxcdFxcdGhlbHBcXG4gNDEzOlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuIDQxNDpcXHRcXHQgIFRoaXMgZHJpdmVyIHdhcyB0ZXN0ZWQgb24gWExJTlggWEMyVjMwMDAgRkYxMTUyQU1UMDIyMVxcbiA0MTU6XFx0XFx0ICBEMTIxNTk5NEEgVklSVEVYIEZQR0EgYm9hcmQgYW5kIFNOUFMgUW9TIElQSyBQcm90b3R5cGluZyBLaXQuXFxuIDQxNjpcXHRcXG4gNDE3OlxcdFxcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cXG4gNDE4OlxcdFxcbiA0MTk6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MjowNC4zNzQ1NTY1NDZaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMwMTgxNjY3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZXBlbmRlbmNpZXMgYW5kIEFzc3VtcHRpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYFNUTU1BQ19QQ0lgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdGhpcyBpcyBhIHByZXR0eSBzdGFuZGFyZCBzZXR1cC4gSXQgbGV2ZXJhZ2VzIGJvdGggYFBDSWAsIHdoaWNoLCBsZXQncyBiZSBob25lc3QsIGlzIGEgZ2l2ZW4gaW4gbW9zdCBjYXNlcyB3ZSdyZSBkZWFsaW5nIHdpdGgsIGFuZCBgQ09NTU9OX0NMS2AsIHdoaWNoIGlzIGEgY29tbW9uIGNsb2NrIGZyYW1ld29yayBmb3VuZCBhY3Jvc3MgYSBzaWduaWZpY2FudCBudW1iZXIgb2YgYXJjaGl0ZWN0dXJlcy4gTm90aGluZyB1bnVzdWFsIHRoZXJlLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gYFNUTU1BQ19FVEhgLCBhbmQgdGhlbiBJIGNhbiBwcm9jZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTA3NywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTI6MDkuNjc2Mzc1MzQ0WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0MjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBTVE1NQUNfRVRIXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiBFVEhUT09MX05FVExJTktcXG4gICA3OlxcdFxcdHNlbGVjdCBNSUlcXG4gICA4OlxcdFxcdHNlbGVjdCBQQ1NfWFBDU1xcbiAgIDk6XFx0XFx0c2VsZWN0IFBBR0VfUE9PTFxcbiAgMTA6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gIDExOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMTI6XFx0XFx0c2VsZWN0IFJFU0VUX0NPTlRST0xMRVJcXG4gIDEzOlxcdFxcdHNlbGVjdCBORVRfREVWTElOS1xcbiAgMTQ6XFx0XFx0aGVscFxcbiAgMTU6XFx0XFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgZm9yIHRoZSBFdGhlcm5ldCBJUHMgYnVpbHQgYXJvdW5kIGFcXG4gIDE2OlxcdFxcdCAgU3lub3BzeXMgSVAgQ29yZS5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0aWYgU1RNTUFDX0VUSFxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgU1RNTUFDX1NFTEZURVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MjowOS42NzY0NTA3NzRaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY5OTQ2NjMwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNUTU1BQyBEcml2ZXIncyBFbnRyeSBQb2ludHMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgZm9jdXMgaGFzIHRvIGJlIG9uIGhvdyB0aGUgU1RNTUFDIGRyaXZlciBnZXRzIGluaXRpYWxpemVkIGFuZCBob3cgd2UgY2FuIGJlc3QgaW50ZXJjZXB0IGl0cyBvcGVyYXRpb24gZm9yIFhEUCBpbnRlZ3JhdGlvbi4gVGhlIGtleSBoZXJlIGhpbmdlcyBvbiBhIGZldyBzdGFuZGFyZCBjb25maWd1cmF0aW9uIHN5bWJvbHM6IGBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IEhBU19ETUFgLCBgUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxgLCBhbmQgYEVUSFRPT0xfTkVUTElOS2AuIFdlIGtub3cgdGhlc2UgYXJlIGZ1bmRhbWVudGFsLCBidXQgdGhleSBkb24ndCBnaXZlIHVzIHRoZSBzcGVjaWZpYyBlbnRyeSBwb2ludC5cblxuV2UndmUgZ290IHR3byBtYWluIGNvbmZpZyBvcHRpb25zIHRoYXQgYXJlIHJlbGV2YW50OiBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYC4gVGhvc2UgYXJlIGxpa2VseSBnb2luZyB0byBnb3Zlcm4gd2hpY2ggaW5pdGlhbGl6YXRpb24gcGF0aHMgd2Ugc2hvdWxkIGNvbnNpZGVyLCBidXQgd2UgbmVlZCB0byBkaWcgZGVlcGVyIGZvciBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuXG5cbkkgc3RhcnRlZCBieSBsaXN0aW5nIHBvc3NpYmxlIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdCwgY29uc2lkZXJpbmcgdGhlIHN0YW5kYXJkIGZvY3VzIHN5bWJvbHM6IGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCwgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYCwgYW5kIGBzdG1tYWNfeGRwX29wZW5gLiBCdXQgaG9sZCBvbiwgYHN0bW1hY194ZHBfb3BlbmAgaXMgY2xlYXJseSBvbmx5IGNhbGxlZCB3aGVuIFhEUCBpcyBhY3RpdmUuIFRoYXTigJlzIHByb2JhYmx5IG5vdCB0aGUgY29yZSBpbml0aWFsaXphdGlvbiBwYXRoIEkgbmVlZC4gSSBuZWVkIHNvbWV0aGluZyBtb3JlIGdlbmVyYWwuXG5cbkxldCdzIGNoZWNrIGBzdG1tYWNfb3BlbmAuIEFoLCB0aGF04oCZcyB0aGUgYG5kb19vcGVuYCBjYWxsYmFjayDigJMgdXNlZCBpbiB0aGUgc3RhbmRhcmQgbmV0d29yayBkZXZpY2UgbGlmZWN5Y2xlLiBCdXQsIGl0J3MgZGVjbGFyZWQgYHN0YXRpY2AuIFNvLCBpdCdzIG5vdCBhIGdyZWF0IGNob2ljZSBmb3Igb3VyIGhvb2sgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHBhdGNoIGl0LiBTdGF0aWMgZnVuY3Rpb25zIGxpbWl0IGZsZXhpYmlsaXR5LiBJdCdzIGEga2V5IGVudHJ5cG9pbnQsIGJ1dCBub3QgdGhlIHJpZ2h0IHN5bWJvbCB0byBmb2N1cyBvbi5cblxuU28sIGxldCBtZSBiYWNrIHVwIGEgc3RlcC4gV2hhdCBhYm91dCBgc3RtbWFjX3Jlc3VtZWA/IFRoYXQncyBsaWtlbHkgY2FsbGVkIGR1cmluZyBwb3dlci11cCBvciBzeXN0ZW0gcmVzdW1lLCB3aGljaCBtaWdodCBnaXZlIHVzIGEgZGVjZW50IGhvb2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZW4gaXQgaXMgY2FsbGVkIHRvIGRldGVybWluZSBpZiBpdCBpcyB0aGUgYmVzdCBwb2ludCB0byBpbnNlcnQgY29kZS4gV2UgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBjb2RlIGFnYWluLCBidXQgd2l0aCBhIGZvY3VzIG9uIGBzdG1tYWNfcmVzdW1lYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU1NDQsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MjoxNi4zNzU5MTk3NThaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTc1OTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY19yZXN1bWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTgyNjM9c3RhdGljIHZvaWQgc3RtbWFjX3Jlc2V0X3F1ZXVlc19wYXJhbShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgyNzYtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4Mjc3OiAqIHN0bW1hY19yZXN1bWUgLSByZXN1bWUgY2FsbGJhY2tcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgyNzgtICogQGRldjogZGV2aWNlIHBvaW50ZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODI4MS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgyODI6aW50IHN0bW1hY19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODI4My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgzNjgtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODM2OTpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcmVzdW1lKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgzNzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MzcxLS8qIFRoaXMgaXMgbm90IHRoZSBzYW1lIGFzIEVYUE9SVF9HUExfU0lNUExFX0RFVl9QTV9PUFMoKSB3aGVuIENPTkZJR19QTT1uICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MzcyOkRFRklORV9TSU1QTEVfREVWX1BNX09QUyhzdG1tYWNfc2ltcGxlX3BtX29wcywgc3RtbWFjX3N1c3BlbmQsIHN0bW1hY19yZXN1bWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODM3My1FWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfc2ltcGxlX3BtX29wcyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUyOjE2LjQyMjEwMTk1M1oiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDk1MjA3NTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgc3RtbWFjX3Jlc3VtZWAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBgc3RtbWFjX3Jlc3VtZWAgaXMgZXhwb3J0ZWQgYW5kIGlzbid0IHN0YXRpYywgd2hpY2ggbWVhbnMgaXQncyBkZXNpZ25lZCB0byBiZSBjYWxsZWQgZnJvbSBvdXRzaWRlIHRoZSBtb2R1bGUuIFRoYXQgcmFpc2VzIGEga2V5IHF1ZXN0aW9uIGluIG15IG1pbmQ6IHdoYXQncyBpdHMgcHVycG9zZSBhbmQgaG93IGRvZXMgaXQgaW50ZXJmYWNlIHdpdGggdGhlIGludGVycnVwdCBzeXN0ZW0/IFRoZSBjbHVlIGlzIGluIHRoZSBjb2RlLiBJIHJlY2FsbCBzZWVpbmcgYHN0bW1hY19yZXF1ZXN0X2lycWAgaW4gdGhlIHZpY2luaXR5LiBNeSBmaXJzdCBsaW5lIG9mIGludmVzdGlnYXRpb24gd2lsbCBiZSB0byB0cmFjZSB0aGUgY2FsbHMsIHN0YXJ0aW5nIHdpdGggYHN0bW1hY19yZXN1bWVgLCBhbmQgZmluZCB3aGVyZSB0aGUgaW50ZXJydXB0IHJlcXVlc3QgbG9naWMgY29tZXMgaW50byBwbGF5LiBEb2VzIGl0IHJlLWVuYWJsZSBpbnRlcnJ1cHRzLCByZXN0b3JlIGludGVycnVwdCBtYXNrcywgb3Igc29tZXRoaW5nIG1vcmUgY29tcGxleD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCB0byBlbnN1cmUgcHJvcGVyIGRldmljZSByZXN1bXB0aW9uIGFmdGVyIGEgcG93ZXIgbWFuYWdlbWVudCBldmVudC4gSXQncyBsaWtlbHkgaW52b2x2ZWQgaW4gcmUtZXN0YWJsaXNoaW5nIHRoZSBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lcyBhZnRlciBhIHN1c3BlbmQsIGJ1dCB0aGUgZXhhY3QgbWVjaGFuaXNtIGlzIGNydWNpYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NzMyLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTI6MjAuOTE3MzEyNDQ1WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzY4OTY3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcmVxdWVzdF9pcnFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTM4MDQ9c3RhdGljIGludCBzdG1tYWNfbXNpX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zODIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MzgyNDpzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM4MjUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zOTg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6Mzk4NjpzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9zaW5nbGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM5ODcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MDM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDAzOTpzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDA0MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQwNDUtXFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWZsYWdzIFxcdTAwMjYgU1RNTUFDX0ZMQUdfTVVMVElfTVNJX0VOKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDA0NjpcXHRcXHRyZXQgPSBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MDQ3LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQwNDg6XFx0XFx0cmV0ID0gc3RtbWFjX3JlcXVlc3RfaXJxX3NpbmdsZShkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDA0OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDEzOD1zdGF0aWMgaW50IF9fc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDE3NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxNzU6XFx0cmV0ID0gc3RtbWFjX3JlcXVlc3RfaXJxKGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTc2LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcxMzk9aW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MjA4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzIwOTpcXHRyZXQgPSBzdG1tYWNfcmVxdWVzdF9pcnEoZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcyMTAtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTI6MjAuOTY1MDA4MVoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjYzOTAwNDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW50ZXJydXB0IEFmZmluaXR5IENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIHRyYWNlIGhvdyB0aGlzIGludGVycnVwdCBhZmZpbml0eSBjaGFuZ2UgcmlwcGxlcyB0aHJvdWdoIHRoZSBzeXN0ZW0uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgc3RtbWFjX3Jlc3VtZWAgd291bGQgYmUgdGhlIGtleSBmdW5jdGlvbiwgbWF5YmUgY2FsbGluZyBgc3RtbWFjX3JlcXVlc3RfaXJxYCwgYnV0IEkgc2VlIG5vdyB0aGF0J3Mgd3JvbmcuIEl0J3MgYWN0dWFsbHkgYHN0bW1hY194ZHBfb3BlbmAgdGhhdCBoYW5kbGVzIHRoZSBpbml0aWFsIHJlcXVlc3QuIFNvLCBgc3RtbWFjX3hkcF9vcGVuYCBsb29rcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGRlZXBlci5cblxuSG1tLCB3YWl0IGEgbWludXRlLiBMb29raW5nIGNsb3NlciBhdCB0aGUgcGF0Y2gsIHRoZSAqY29yZSogY2hhbmdlcyBzZWVtIHRvIGJlIHdpdGhpbiBga2VybmVsL2lycS9tYW5hZ2UuY2AgYW5kIGBsaWIvY3B1bWFzay5jYC4gVGhvc2UgZmlsZXMgYXJlIHByZXR0eSBnZW5lcmljLCB0aG91Z2gsIGNvdmVyaW5nIHRoZSBpbnRlcnJ1cHQgc3lzdGVtIGdlbmVyYWxseS4gVGhhdCBtZWFucyB0aGUga2V5IGZ1bmN0aW9ucyB3aXRoaW4gdGhvc2UgZ2VuZXJpYyBmaWxlcyBhcmUgbGlrZWx5IGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCBhbmQgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYC4gVGhlc2UgYXJlIGRlZmluaXRlbHkgdGhlIGZ1bmN0aW9ucyBJIG5lZWQgdG8gaG9uZSBpbiBvbiB0byBncmFzcCB0aGUgcmVhbCBpbXBhY3QgaGVyZS5cblxuTGV0IG1lIGp1c3QgcXVpY2tseSBjaGVjayBpZiBgaXJxX3NldF9hZmZpbml0eV9hbmRfaGludGAgaXRzZWxmIGlzIHVzZWQgYW55d2hlcmUgZWxzZSBpbiB0aGUgY29kZSBiYXNlLCBqdXN0IHRvIGJlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueSBvdGhlciBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzg5NiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MjoyNS42Mjg5MTE1MzVaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MzYwMjM4MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXJxX3NldF9hZmZpbml0eV9hbmRfaGludFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9kZXZpY2UuYz0yODkzPXZvaWQgaGxfc2V0X2lycV9hZmZpbml0eShzdHJ1Y3QgaGxfZGV2aWNlICpoZGV2LCBpbnQgaXJxKVxcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9kZXZpY2UuYy0yODk5LVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vZGV2aWNlLmM6MjkwMDpcXHRpZiAoaXJxX3NldF9hZmZpbml0eV9hbmRfaGludChpcnEsIFxcdTAwMjZoZGV2LVxcdTAwM2VpcnFfYWZmaW5pdHlfbWFzaykpXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9kZXZpY2UuYy0yOTAxLVxcdFxcdGRldl9lcnIoaGRldi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHNldHRpbmcgaXJxICVkIGFmZmluaXR5XFxcXG5cXFwiLCBpcnEpO1xcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2dhdWRpMi9nYXVkaTIuYz00NjYwPXN0YXRpYyBpbnQgZ2F1ZGkyX2VuYWJsZV9tc2l4KHN0cnVjdCBobF9kZXZpY2UgKmhkZXYpXFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvZ2F1ZGkyL2dhdWRpMi5jLTQ3NTEtXFx0XFx0aXJxID0gcGNpX2lycV92ZWN0b3IoaGRldi1cXHUwMDNlcGRldiwgaSk7XFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2dhdWRpMi9nYXVkaTIuYzo0NzUyOlxcdFxcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoaXJxLCBOVUxMKTtcXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvZ2F1ZGkyL2dhdWRpMi5jLTQ3NTMtXFx0XFx0ZnJlZV9pcnEoaXJxLCBcXHUwMDI2aGRldi1cXHUwMDNldXNlcl9pbnRlcnJ1cHRbal0pO1xcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2dhdWRpMi9nYXVkaTIuYz00ODA2PXN0YXRpYyB2b2lkIGdhdWRpMl9kaXNhYmxlX21zaXgoc3RydWN0IGhsX2RldmljZSAqaGRldilcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9nYXVkaTIvZ2F1ZGkyLmMtNDgzMi1cXHRcXHRpcnEgPSBwY2lfaXJxX3ZlY3RvcihoZGV2LVxcdTAwM2VwZGV2LCBpKTtcXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvZ2F1ZGkyL2dhdWRpMi5jOjQ4MzM6XFx0XFx0aXJxX3NldF9hZmZpbml0eV9hbmRfaGludChpcnEsIE5VTEwpO1xcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9nYXVkaTIvZ2F1ZGkyLmMtNDgzNC1cXHRcXHRmcmVlX2lycShpcnEsIFxcdTAwMjZoZGV2LVxcdTAwM2V1c2VyX2ludGVycnVwdFtqXSk7XFxuLS1cXG5kcml2ZXJzL2NwdWZyZXEvcWNvbS1jcHVmcmVxLWh3LmM9NDQ1PXN0YXRpYyBpbnQgcWNvbV9jcHVmcmVxX2h3X2xtaF9pbml0KHN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5LCBpbnQgaW5kZXgpXFxuLS1cXG5kcml2ZXJzL2NwdWZyZXEvcWNvbS1jcHVmcmVxLWh3LmMtNDczLVxcbmRyaXZlcnMvY3B1ZnJlcS9xY29tLWNwdWZyZXEtaHcuYzo0NzQ6XFx0cmV0ID0gaXJxX3NldF9hZmZpbml0eV9hbmRfaGludChkYXRhLVxcdTAwM2V0aHJvdHRsZV9pcnEsIHBvbGljeS1cXHUwMDNlY3B1cyk7XFxuZHJpdmVycy9jcHVmcmVxL3Fjb20tY3B1ZnJlcS1ody5jLTQ3NS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9jcHVmcmVxL3Fjb20tY3B1ZnJlcS1ody5jPTQ4Mj1zdGF0aWMgaW50IHFjb21fY3B1ZnJlcV9od19jcHVfb25saW5lKHN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5KVxcbi0tXFxuZHJpdmVycy9jcHVmcmVxL3Fjb20tY3B1ZnJlcS1ody5jLTQ5NC1cXG5kcml2ZXJzL2NwdWZyZXEvcWNvbS1jcHVmcmVxLWh3LmM6NDk1OlxcdHJldCA9IGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoZGF0YS1cXHUwMDNldGhyb3R0bGVfaXJxLCBwb2xpY3ktXFx1MDAzZWNwdXMpO1xcbmRyaXZlcnMvY3B1ZnJlcS9xY29tLWNwdWZyZXEtaHcuYy00OTYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvY3B1ZnJlcS9xY29tLWNwdWZyZXEtaHcuYz01MDM9c3RhdGljIGludCBxY29tX2NwdWZyZXFfaHdfY3B1X29mZmxpbmUoc3RydWN0IGNwdWZyZXFfcG9saWN5ICpwb2xpY3kpXFxuLS1cXG5kcml2ZXJzL2NwdWZyZXEvcWNvbS1jcHVmcmVxLWh3LmMtNTE0LVxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2ZGF0YS1cXHUwMDNldGhyb3R0bGVfd29yayk7XFxuZHJpdmVycy9jcHVmcmVxL3Fjb20tY3B1ZnJlcS1ody5jOjUxNTpcXHRpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KGRhdGEtXFx1MDAzZXRocm90dGxlX2lycSwgTlVMTCk7XFxuZHJpdmVycy9jcHVmcmVxL3Fjb20tY3B1ZnJlcS1ody5jLTUxNi1cXHRkaXNhYmxlX2lycV9ub3N5bmMoZGF0YS1cXHUwMDNldGhyb3R0bGVfaXJxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfbWFpbi5jPTY2NT1zdGF0aWMgaW50IGZ1bl9lbmFibGVfaXJxcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL2Z1bmV0aF9tYWluLmMtNzAyLVxcdFxcdGlycV9zZXRfYWZmaW5pdHlfbm90aWZpZXIocC1cXHUwMDNlaXJxLCBcXHUwMDI2cC1cXHUwMDNlYWZmX25vdGlmeSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL2Z1bmV0aF9tYWluLmM6NzAzOlxcdFxcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQocC1cXHUwMDNlaXJxLCBcXHUwMDI2cC1cXHUwMDNlYWZmaW5pdHlfbWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL2Z1bmV0aF9tYWluLmMtNzA0LVxcdFxcdG5hcGlfZW5hYmxlKFxcdTAwMjZwLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYz00ODA9c3RhdGljIGludCBndmVfYWxsb2Nfbm90aWZ5X2Jsb2NrcyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtNTY4LVxcdFxcdGJsb2NrLVxcdTAwM2VpcnEgPSBwcml2LVxcdTAwM2Vtc2l4X3ZlY3RvcnNbbXNpeF9pZHhdLnZlY3RvcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6NTY5OlxcdFxcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoYmxvY2stXFx1MDAzZWlycSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtNTcwLVxcdFxcdFxcdFxcdFxcdCAgY3B1bWFza19vZihjdXJfY3B1KSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfcnguYz01MTM9c3RhdGljIGludCByeF9yZXF1ZXN0X2lycShzdHJ1Y3QgaGluaWNfcnhxICpyeHEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfcnguYy01NDktXFx0Y3B1bWFza19zZXRfY3B1KHFwLVxcdTAwM2VxX2lkICUgbnVtX29ubGluZV9jcHVzKCksIFxcdTAwMjZycS1cXHUwMDNlYWZmaW5pdHlfbWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX3J4LmM6NTUwOlxcdGVyciA9IGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQocnEtXFx1MDAzZWlycSwgXFx1MDAyNnJxLVxcdTAwM2VhZmZpbml0eV9tYXNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfcnguYy01NTEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmM9MTc5PXN0YXRpYyB2b2lkIGlibXZuaWNfY2xlYW5fcXVldWVfYWZmaW5pdHkoc3RydWN0IGlibXZuaWNfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmMtMTg2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmM6MTg3OlxcdGlmIChpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KHF1ZXVlLVxcdTAwM2VpcnEsIE5VTEwpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmMtMTg4LVxcdFxcdG5ldGRldl93YXJuKGFkYXB0ZXItXFx1MDAzZW5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmM9MjE2PXN0YXRpYyBpbnQgaWJtdm5pY19zZXRfcXVldWVfYWZmaW5pdHkoc3RydWN0IGlibXZuaWNfc3ViX2NycV9xdWV1ZSAqcXVldWUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jLTI0OS1cXHRjcHVtYXNrX2NvcHkocXVldWUtXFx1MDAzZWFmZmluaXR5X21hc2ssIG1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmM6MjUwOlxcdHJjID0gaXJxX3NldF9hZmZpbml0eV9hbmRfaGludChxdWV1ZS1cXHUwMDNlaXJxLCBxdWV1ZS1cXHUwMDNlYWZmaW5pdHlfbWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYy0yNTEtXFx0ZnJlZV9jcHVtYXNrX3ZhcihtYXNrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9wY2lfaXJxLmM9MjQyPXN0cnVjdCBtbHg1X2lycSAqbWx4NV9pcnFfYWxsb2Moc3RydWN0IG1seDVfaXJxX3Bvb2wgKnBvb2wsIGludCBpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuYy0yOTUtXFx0XFx0Y3B1bWFza19jb3B5KGlycS1cXHUwMDNlbWFzaywgXFx1MDAyNmFmX2Rlc2MtXFx1MDAzZW1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9wY2lfaXJxLmM6Mjk2OlxcdFxcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoaXJxLVxcdTAwM2VtYXAudmlycSwgaXJxLVxcdTAwM2VtYXNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvcGNpX2lycS5jLTI5Ny1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0xOTE0PXN0YXRpYyBpbnQgbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZSh1bnNpZ25lZCBpbnQgKmlycXMsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xOTQwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjE5NDE6XFx0XFx0XFx0XFx0aXJxX3NldF9hZmZpbml0eV9hbmRfaGludCgqaXJxcysrLCB0b3BvbG9neV9zaWJsaW5nX2NwdW1hc2soY3B1KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTk0Mi1cXHRcXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0xOTUyPXN0YXRpYyB2b2lkIG1hbmFfaXJxX3NldHVwX2xpbmVhcih1bnNpZ25lZCBpbnQgKmlycXMsIHVuc2lnbmVkIGludCBsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xOTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjE5NjA6XFx0XFx0aXJxX3NldF9hZmZpbml0eV9hbmRfaGludCgqaXJxcysrLCBjcHVtYXNrX29mKGNwdSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE5NjEtXFx0XFx0bGVuLS07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yMDUzPXN0YXRpYyBpbnQgbWFuYV9nZF9zZXR1cF9pcnFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgbnZlYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIwODgtXFx0XFx0Y3B1ID0gY3B1bWFza19sb2NhbF9zcHJlYWQoMCwgZ2MtXFx1MDAzZW51bWFfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjA4OTpcXHRcXHRpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KGlycXNbMF0sIGNwdW1hc2tfb2YoY3B1KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjA5MC1cXHRcXHRpcnFzKys7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTM4MjQ9c3RhdGljIGludCBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM5NDYtXFx0XFx0Y3B1bWFza19zZXRfY3B1KGNwdW1hc2tfbG9jYWxfc3ByZWFkKGksIG5vZGUpLCBhZmZpbml0eSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzozOTQ3OlxcdFxcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQobXNpLVxcdTAwM2VyeF9pcnFbaV0sIGFmZmluaXR5KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM5NDgtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zOTcyLVxcdFxcdGNwdW1hc2tfc2V0X2NwdShjcHVtYXNrX2xvY2FsX3NwcmVhZChpLCBub2RlKSwgYWZmaW5pdHkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6Mzk3MzpcXHRcXHRpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KG1zaS1cXHUwMDNldHhfaXJxW2ldLCBhZmZpbml0eSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zOTc0LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM9OTQwPXN0YXRpYyBpbnQgYXRoMTFrX3BjaV9zZXRfaXJxX2FmZmluaXR5X2hpbnQoc3RydWN0IGF0aDExa19wY2kgKmFiX3BjaSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtOTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6OTQ2OlxcdHJldHVybiBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KGFiX3BjaS1cXHUwMDNlcGRldi1cXHUwMDNlaXJxLCBtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTk0Ny19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jPTYxOD1zdGF0aWMgaW50IGF0aDEya19wY2lfc2V0X2lycV9hZmZpbml0eV9oaW50KHN0cnVjdCBhdGgxMmtfcGNpICphYl9wY2ksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTYyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jOjYyNDpcXHRyZXR1cm4gaXJxX3NldF9hZmZpbml0eV9hbmRfaGludChhYl9wY2ktXFx1MDAzZXBkZXYtXFx1MDAzZWlycSwgbSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy02MjUtfVxcbi0tXFxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmM9NTkwND1tZWdhc2FzX3NldF9oaWdoX2lvcHNfcXVldWVfYWZmaW5pdHlfYW5kX2hpbnQoc3RydWN0IG1lZ2FzYXNfaW5zdGFuY2UgKmluc3RhbmNlKVxcbi0tXFxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmMtNTkxOC1cXHRcXHRcXHRpcnEgPSBwY2lfaXJxX3ZlY3RvcihpbnN0YW5jZS1cXHUwMDNlcGRldiwgaSk7XFxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmM6NTkxOTpcXHRcXHRcXHRpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KGlycSwgbWFzayk7XFxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmMtNTkyMC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL3Njc2kvbXB0M3Nhcy9tcHQzc2FzX2Jhc2UuYz0zMjEyPV9iYXNlX2Fzc2lnbl9yZXBseV9xdWV1ZXMoc3RydWN0IE1QVDNTQVNfQURBUFRFUiAqaW9jKVxcbi0tXFxuZHJpdmVycy9zY3NpL21wdDNzYXMvbXB0M3Nhc19iYXNlLmMtMzI0NC1cXHRcXHRcXHRcXHRpcnEgPSBwY2lfaXJxX3ZlY3Rvcihpb2MtXFx1MDAzZXBkZXYsIGluZGV4KTtcXG5kcml2ZXJzL3Njc2kvbXB0M3Nhcy9tcHQzc2FzX2Jhc2UuYzozMjQ1OlxcdFxcdFxcdFxcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoaXJxLCBtYXNrKTtcXG5kcml2ZXJzL3Njc2kvbXB0M3Nhcy9tcHQzc2FzX2Jhc2UuYy0zMjQ2LVxcdFxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmM9NTU5PWludCB2cF9zZXRfdnFfYWZmaW5pdHkoc3RydWN0IHZpcnRxdWV1ZSAqdnEsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVfbWFzaylcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMtNTc2LVxcdFxcdFxcdGNwdW1hc2tfY29weShtYXNrLCBjcHVfbWFzayk7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYzo1Nzc6XFx0XFx0XFx0aXJxX3NldF9hZmZpbml0eV9hbmRfaGludChpcnEsIG1hc2spO1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMtNTc4LVxcdFxcdH1cXG4tLVxcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0Lmg9MzM1PWlycV91cGRhdGVfYWZmaW5pdHlfaGludCh1bnNpZ25lZCBpbnQgaXJxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSlcXG4tLVxcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0LmgtMzQwLS8qKlxcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0Lmg6MzQxOiAqIGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQgLSBVcGRhdGUgdGhlIGFmZmluaXR5IGhpbnQgYW5kIGFwcGx5IHRoZSBwcm92aWRlZFxcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0LmgtMzQyLSAqXFx0XFx0XFx0ICAgICBjcHVtYXNrIHRvIHRoZSBpbnRlcnJ1cHRcXG4tLVxcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0Lmg9MzQ5PXN0YXRpYyBpbmxpbmUgaW50XFxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaDozNTA6aXJxX3NldF9hZmZpbml0eV9hbmRfaGludCh1bnNpZ25lZCBpbnQgaXJxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSlcXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTM1MS17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTM1NS0vKlxcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0Lmg6MzU2OiAqIERlcHJlY2F0ZWQuIFVzZSBpcnFfdXBkYXRlX2FmZmluaXR5X2hpbnQoKSBvciBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KClcXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTM1Ny0gKiBpbnN0ZWFkLlxcbi0tXFxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaD0zNTk9c3RhdGljIGlubGluZSBpbnQgaXJxX3NldF9hZmZpbml0eV9oaW50KHVuc2lnbmVkIGludCBpcnEsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICptKVxcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0LmgtMzYwLXtcXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oOjM2MTpcXHRyZXR1cm4gaXJxX3NldF9hZmZpbml0eV9hbmRfaGludChpcnEsIG0pO1xcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0LmgtMzYyLX1cXG4tLVxcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0Lmg9Mzk1PXN0YXRpYyBpbmxpbmUgaW50IGlycV91cGRhdGVfYWZmaW5pdHlfaGludCh1bnNpZ25lZCBpbnQgaXJxLFxcbi0tXFxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaC00MDAtXFxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaDo0MDE6c3RhdGljIGlubGluZSBpbnQgaXJxX3NldF9hZmZpbml0eV9hbmRfaGludCh1bnNpZ25lZCBpbnQgaXJxLFxcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0LmgtNDAyLVxcdFxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTI6MjcuNDY0OTQwOTA0WiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxOTM5OTk2MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gYHZwX3NldF92cV9hZmZpbml0eWAgZm9yIEFmZmluaXR5IEFuYWx5c2lzKipcblxuT2theSwgc28gSSdtIHNlZWluZyB0aGF0IGB2cF9zZXRfdnFfYWZmaW5pdHlgIGlzIHVzZWQgd2l0aGluIGB2aXJ0aW9fcGNpX2NvbW1vbi5jYC4gVGhhdCdzIGEga2V5IGZpbGUsIGVzcGVjaWFsbHkgcHJldmFsZW50IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gR2l2ZW4gaXRzIGNvbW1vbiB1c2FnZSwgYHZwX3NldF92cV9hZmZpbml0eWAgaXMgYSBwcmltZSB0YXJnZXQgZm9yIGRlZXBlciBpbnZlc3RpZ2F0aW9uIHJlZ2FyZGluZyBDUFUgYWZmaW5pdHkuIE1ha2VzIHNlbnNlLiBJIGFsc28gbm90aWNlZCB0aGF0IGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAgcG9wcyB1cCBpbiBgbWFuYV9nZF9zZXR1cF9pcnFzYCBhbmQgYHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2lgLCBidXQgYHZwX3NldF92cV9hZmZpbml0eWAgaXMgdGhlIG1vcmUgaW1tZWRpYXRlIGZvY3VzIHJpZ2h0IG5vdy4gTGV0J3MgZGVsdmUgaW50byB0aGUgZGV0YWlscyBvZiBob3cgYHZwX3NldF92cV9hZmZpbml0eWAgaXMgaW1wbGVtZW50ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMzY1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUyOjMyLjY1ODk0MzA4NFoiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYxMzI2ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnBfc2V0X3ZxX2FmZmluaXR5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYz01NDc9Y29uc3QgY2hhciAqdnBfYnVzX25hbWUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jLTU1OC0gKi9cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jOjU1OTppbnQgdnBfc2V0X3ZxX2FmZmluaXR5KHN0cnVjdCB2aXJ0cXVldWUgKnZxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1X21hc2spXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy01NjAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MjozMi43MDUwODA3MjlaIiwiU2VxIjo0NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg3MzUzMzc4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqSW52ZXN0aWdhdGluZyBgdnBfc2V0X3ZxX2FmZmluaXR5YCBFeHBvcnQqKlxuXG5Pa2F5LCBzbyB0aGUgY29kZSdzIHBvaW50aW5nIHRvIGB2cF9zZXRfdnFfYWZmaW5pdHlgLiBNeSBmaXJzdCB0aG91Z2h0IGlzOiB3YWl0LCBpcyB0aGlzIGZ1bmN0aW9uICpleHBvcnRlZCo/IFRoYXQncyBhIGNyaXRpY2FsIGRldGFpbCBJIG5lZWQgdG8gbmFpbCBkb3duIHJpZ2h0IGF3YXkuIEtub3dpbmcgaWYgdGhpcyBmdW5jdGlvbiBpcyB2aXNpYmxlIHRvIG90aGVyIG1vZHVsZXMgb3IgY29tcG9uZW50cyBpcyBmdW5kYW1lbnRhbCB0byB1bmRlcnN0YW5kaW5nIGl0cyBwb3RlbnRpYWwgaW1wYWN0IGFuZCBpbnRlbmRlZCB1c2UuIElmIGl0J3MgZXhwb3J0ZWQsIHRoYXQgc2lnbmlmaWNhbnRseSBicm9hZGVucyB0aGUgc2NvcGUgb2Ygd2hlcmUgYW5kIGhvdyBpdCBtaWdodCBiZSB1c2VkLCBhbmQgdGhlcmVmb3JlLCBwb3RlbnRpYWxseSBjaGFuZ2VzIG15IGFuYWx5c2lzIGFuZCB0aGUgY29uc2lkZXJhdGlvbnMgSSBuZWVkIHRvIG1ha2UgaW4gcmVsYXRpb24gdG8gdGhpcyBmdW5jdGlvbi4gVGhpcyBhbHNvIGhhcyBzZWN1cml0eSBpbXBsaWNhdGlvbnM7IHRoZSBpbXBsaWNhdGlvbnMgb2YgYW4gZXhwb3J0ZWQgZnVuY3Rpb24gYXJlIGZhciBkaWZmZXJlbnQgdGhhbiBhbiBpbnRlcm5hbCBmdW5jdGlvbi5cblxuSSBpbW1lZGlhdGVseSBuZWVkIHRvIGNoZWNrIHRoZSBzeW1ib2wgdGFibGUsIHRoZSBsaW5rZXIgZmxhZ3MsIHRoZSBoZWFkZXIgZmlsZXMsIHdoYXRldmVyIGRvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxl4oCmIEkgbmVlZCB0aGUgZnVsbCBjb250ZXh0LiBJcyBpdCBtZWFudCB0byBiZSBhIHB1YmxpYyBBUEksIGEgcHJpdmF0ZSBpbnRlcm5hbCBmdW5jdGlvbiBtYXNxdWVyYWRpbmcgYXMgYSBwdWJsaWMgb25lLCBvciBhIHRyYW5zaXRpb25hbCB0aGluZz8gVGhpcyBzZXRzIHRoZSBzdGFnZSBmb3IgZXZlcnl0aGluZyBlbHNlLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGVyZSBpdCdzICpkZWZpbmVkKiBhbmQgd2hlcmUgaXQncyAqdXNlZCogdG8gZnVsbHkgZ3Jhc3AgdGhpcyBleHBvcnQuIFRoZSBzaWduaWZpY2FuY2Ugb2YgYW4gZXhwb3J0IGlzIGtleSwgYW5kIGlmIGl0J3MgdGhlcmUgSSB3aWxsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGl0IGRvZXMgYXQgYSBtdWNoIGhpZ2hlciBsZXZlbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI4MjEsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MjozOS41Nzg2MTcyODRaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NTUwOTY2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLip2cF9zZXRfdnFfYWZmaW5pdHlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTI6MzkuNjI0MTc5MzQ5WiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4NjQ4NDAyNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipEZWJ1Z2dpbmcgdGhlIEV4cG9ydCBGdW5jdGlvbioqXG5cbkFscmlnaHQsIGhhbmcgb24gYSBzZWNvbmQuLi5zb21ldGhpbmcncyBub3QgcXVpdGUgcmlnaHQuIERpZCBJICphY3R1YWxseSogZXhwb3J0IHRoYXQgZGF0YT8gSSB0aG91Z2h0IEkgaW5pdGlhdGVkIHRoZSBwcm9jZXNzLCBidXQgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gTGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIHRoYXQgdGhlIGV4cG9ydCBmdW5jdGlvbiB3YXMgdHJpZ2dlcmVkLiBJIG5lZWQgdG8gbWFrZSAqYWJzb2x1dGVseSogc3VyZSB0aGF0IGl0J3MgYWN0dWFsbHkgcnVubmluZywgYmVmb3JlIEkgd2FzdGUgYW55IG1vcmUgdGltZS4gT2theSwgdGltZSB0byBnbyBiYWNrIGFuZCBjaGVjayB0aGUgY29kZSwganVzdCB0byBlbnN1cmUgdGhhdCB0aGF0IHBhcnRpY3VsYXIgbGluZSBleGVjdXRlZC4gQW5kIGlmIGl0J3MgdGhlcmUuLi53aHkgaXNuJ3QgaXQgd29ya2luZz8gTGV0J3MgdGFrZSBhIGxvb2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMTcxLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTI6NDcuNDg5MDIyMTExWiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjAzMTQ0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2cF9zZXRfdnFfYWZmaW5pdHlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aXJ0aW8vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmM9NTQ3PWNvbnN0IGNoYXIgKnZwX2J1c19uYW1lKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy01NTgtICovXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYzo1NTk6aW50IHZwX3NldF92cV9hZmZpbml0eShzdHJ1Y3QgdmlydHF1ZXVlICp2cSwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKmNwdV9tYXNrKVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMtNTYwLXtcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmg9MTM4PWNvbnN0IGNoYXIgKnZwX2J1c19uYW1lKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KTtcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmgtMTQ0LSAqL1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmg6MTQ1OmludCB2cF9zZXRfdnFfYWZmaW5pdHkoc3RydWN0IHZpcnRxdWV1ZSAqdnEsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVfbWFzayk7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uaC0xNDYtXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2xlZ2FjeS5jPTE4OT1zdGF0aWMgY29uc3Qgc3RydWN0IHZpcnRpb19jb25maWdfb3BzIHZpcnRpb19wY2lfY29uZmlnX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbGVnYWN5LmMtMjAwLVxcdC5idXNfbmFtZVxcdD0gdnBfYnVzX25hbWUsXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9sZWdhY3kuYzoyMDE6XFx0LnNldF92cV9hZmZpbml0eSA9IHZwX3NldF92cV9hZmZpbml0eSxcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2xlZ2FjeS5jLTIwMi1cXHQuZ2V0X3ZxX2FmZmluaXR5ID0gdnBfZ2V0X3ZxX2FmZmluaXR5LFxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYz0xMjI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2NvbmZpZ19vcHMgdmlydGlvX3BjaV9jb25maWdfbm9kZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYy0xMjM5LVxcdC5idXNfbmFtZVxcdD0gdnBfYnVzX25hbWUsXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYzoxMjQwOlxcdC5zZXRfdnFfYWZmaW5pdHkgPSB2cF9zZXRfdnFfYWZmaW5pdHksXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYy0xMjQxLVxcdC5nZXRfdnFfYWZmaW5pdHkgPSB2cF9nZXRfdnFfYWZmaW5pdHksXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX21vZGVybi5jPTEyNDc9c3RhdGljIGNvbnN0IHN0cnVjdCB2aXJ0aW9fY29uZmlnX29wcyB2aXJ0aW9fcGNpX2NvbmZpZ19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX21vZGVybi5jLTEyNTktXFx0LmJ1c19uYW1lXFx0PSB2cF9idXNfbmFtZSxcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX21vZGVybi5jOjEyNjA6XFx0LnNldF92cV9hZmZpbml0eSA9IHZwX3NldF92cV9hZmZpbml0eSxcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX21vZGVybi5jLTEyNjEtXFx0LmdldF92cV9hZmZpbml0eSA9IHZwX2dldF92cV9hZmZpbml0eSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTI6NDcuNTM1MDY4MTM3WiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4NzQ3NjM3MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biwgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKk15IFBlcnNwZWN0aXZlIG9uIGB2aXJ0aW9fY29uZmlnX29wc2AgYW5kIEFmZmluaXR5KipcblxuQWxyaWdodCwgc28gSSdtIGRlYWxpbmcgd2l0aCBgdmlydGlvX2NvbmZpZ19vcHNgLCB3aGljaCBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIEkga25vdyBpdCBvZnRlbiBzZXJ2ZXMgYXMgYSBjZW50cmFsIHBvaW50IGZvciBjb25maWd1cmF0aW9uLXJlbGF0ZWQgb3BlcmF0aW9ucyB3aXRoaW4gdGhlIHZpcnRpbyBmcmFtZXdvcmsuIFRoZSBjcml0aWNhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbiBoZXJlLCB0aG91Z2gsIGlzIGhvdyB0aGlzIGZ1bmN0aW9uIGlzICp1c2VkKiBpbiB0aGUgY29udGV4dCBvZiBgdmlydHF1ZXVlX3NldF9hZmZpbml0eWAuIFRoZSBjb25uZWN0aW9uIGlzIGtleS5cblxuTXkgaW1tZWRpYXRlIHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGUgYHZpcnRpb19jb25maWdfb3BzYCBsaWtlbHkgaG9sZHMgYSAqY2FsbGJhY2sgZnVuY3Rpb24qLiBBbmQgdGhlIGNvbnRleHQgcG9pbnRzIHRvIGB2aXJ0cXVldWVfc2V0X2FmZmluaXR5YCBhcyB0aGUgcGxhY2Ugd2hlcmUgdGhpcyBjYWxsYmFjayBpcyBleGVjdXRlZC4gU28sIGl0IGlzIGNhbGxlZCB0byB1cGRhdGUvY2hhbmdlIHRoZSB2aXJ0dWFsIHF1ZXVlIHNldHRpbmdzIHdpdGggdGhlIGRlc2lyZWQgQ1BVLiBUaGF0J3MgYSBnb29kIHBsYWNlIGZvciB0aGlzIHRvIHRha2UgcGxhY2UuIEkgbmVlZCB0byBrZWVwIHRoaXMgcmVsYXRpb25zaGlwIGF0IHRoZSBmb3JlZnJvbnQgd2hlbiBJJ20gbG9va2luZyBpbnRvIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBvciB0cm91Ymxlc2hvb3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MDc3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTI6NTQuNDA5ODM1NDYyWiIsIlNlcSI6NTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDM5MTYxNiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmlydHF1ZXVlX3NldF9hZmZpbml0eVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZpcnRpby9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUyOjU0LjQ1NDIzNDA4N1oiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzE2NDk1NDYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJZGVudGlmeWluZyB0aGUgRnVuY3Rpb24qKlxuXG5IbW0sIGp1c3QgYSBtb21lbnQuIEl0IHNlZW1zIEkgd2FzIGluaXRpYWxseSBzZWFyY2hpbmcgZm9yIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSB2aXJ0dWFsIHF1ZXVlIGFzc2lnbm1lbnQgd2l0aGluIHRoaXMgbW9kdWxlLCBhbmQgdGhlbiBpdCBjbGlja2VkLCB0aGlzIGlzIGNhbGxlZCBgc2V0X3ZxX2FmZmluaXR5YC4gVGhhdCdzIHRoZSBmdW5jdGlvbiBuYW1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDM1OCwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUzOjAxLjE3MDczMjc1OFoiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg5NTI0Mjg1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZXRfdnFfYWZmaW5pdHlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmRwYS92ZHBhX3VzZXIvdmR1c2VfZGV2LmM9ODQ2PXN0YXRpYyB1MzIgdmR1c2VfdmRwYV9nZXRfZ2VuZXJhdGlvbihzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkcGEpXFxuLS1cXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jLTg1Mi1cXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jOjg1MzpzdGF0aWMgaW50IHZkdXNlX3ZkcGFfc2V0X3ZxX2FmZmluaXR5KHN0cnVjdCB2ZHBhX2RldmljZSAqdmRwYSwgdTE2IGlkeCxcXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jLTg1NC1cXHRcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1X21hc2spXFxuLS1cXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jPTkwMT1zdGF0aWMgY29uc3Qgc3RydWN0IHZkcGFfY29uZmlnX29wcyB2ZHVzZV92ZHBhX2NvbmZpZ19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jLTkyNS1cXHQuZ2V0X2dlbmVyYXRpb25cXHRcXHQ9IHZkdXNlX3ZkcGFfZ2V0X2dlbmVyYXRpb24sXFxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYzo5MjY6XFx0LnNldF92cV9hZmZpbml0eVxcdD0gdmR1c2VfdmRwYV9zZXRfdnFfYWZmaW5pdHksXFxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYy05MjctXFx0LmdldF92cV9hZmZpbml0eVxcdD0gdmR1c2VfdmRwYV9nZXRfdnFfYWZmaW5pdHksXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jPTU0Nz1jb25zdCBjaGFyICp2cF9idXNfbmFtZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMtNTU4LSAqL1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmM6NTU5OmludCB2cF9zZXRfdnFfYWZmaW5pdHkoc3RydWN0IHZpcnRxdWV1ZSAqdnEsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVfbWFzaylcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jLTU2MC17XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5oPTEzOD1jb25zdCBjaGFyICp2cF9idXNfbmFtZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldik7XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5oLTE0NC0gKi9cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5oOjE0NTppbnQgdnBfc2V0X3ZxX2FmZmluaXR5KHN0cnVjdCB2aXJ0cXVldWUgKnZxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1X21hc2spO1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmgtMTQ2LVxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9sZWdhY3kuYz0xODk9c3RhdGljIGNvbnN0IHN0cnVjdCB2aXJ0aW9fY29uZmlnX29wcyB2aXJ0aW9fcGNpX2NvbmZpZ19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2xlZ2FjeS5jLTIwMC1cXHQuYnVzX25hbWVcXHQ9IHZwX2J1c19uYW1lLFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbGVnYWN5LmM6MjAxOlxcdC5zZXRfdnFfYWZmaW5pdHkgPSB2cF9zZXRfdnFfYWZmaW5pdHksXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9sZWdhY3kuYy0yMDItXFx0LmdldF92cV9hZmZpbml0eSA9IHZwX2dldF92cV9hZmZpbml0eSxcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbW9kZXJuLmM9MTIyNz1zdGF0aWMgY29uc3Qgc3RydWN0IHZpcnRpb19jb25maWdfb3BzIHZpcnRpb19wY2lfY29uZmlnX25vZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbW9kZXJuLmMtMTIzOS1cXHQuYnVzX25hbWVcXHQ9IHZwX2J1c19uYW1lLFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbW9kZXJuLmM6MTI0MDpcXHQuc2V0X3ZxX2FmZmluaXR5ID0gdnBfc2V0X3ZxX2FmZmluaXR5LFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbW9kZXJuLmMtMTI0MS1cXHQuZ2V0X3ZxX2FmZmluaXR5ID0gdnBfZ2V0X3ZxX2FmZmluaXR5LFxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYz0xMjQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2NvbmZpZ19vcHMgdmlydGlvX3BjaV9jb25maWdfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYy0xMjU5LVxcdC5idXNfbmFtZVxcdD0gdnBfYnVzX25hbWUsXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYzoxMjYwOlxcdC5zZXRfdnFfYWZmaW5pdHkgPSB2cF9zZXRfdnFfYWZmaW5pdHksXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYy0xMjYxLVxcdC5nZXRfdnFfYWZmaW5pdHkgPSB2cF9nZXRfdnFfYWZmaW5pdHksXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jPTMyOD1zdGF0aWMgaW50IHZpcnRpb192ZHBhX2ZpbmRfdnFzKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2LCB1bnNpZ25lZCBpbnQgbnZxcyxcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmMtMzM3LVxcdHN0cnVjdCB2ZHBhX2NhbGxiYWNrIGNiO1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmM6MzM4OlxcdGJvb2wgaGFzX2FmZmluaXR5ID0gZGVzYyBcXHUwMDI2XFx1MDAyNiBvcHMtXFx1MDAzZXNldF92cV9hZmZpbml0eTtcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jLTMzOS1cXHRpbnQgaSwgZXJyLCBxdWV1ZV9pZHggPSAwO1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3ZkcGEuYy0zNjItXFx0XFx0aWYgKGhhc19hZmZpbml0eSlcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jOjM2MzpcXHRcXHRcXHRvcHMtXFx1MDAzZXNldF92cV9hZmZpbml0eSh2ZHBhLCBpLCBcXHUwMDI2bWFza3NbaV0pO1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmMtMzY0LVxcdH1cXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmM9Mzk5PXN0YXRpYyBjb25zdCBjaGFyICp2aXJ0aW9fdmRwYV9idXNfbmFtZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmMtNDA2LVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmM6NDA3OnN0YXRpYyBpbnQgdmlydGlvX3ZkcGFfc2V0X3ZxX2FmZmluaXR5KHN0cnVjdCB2aXJ0cXVldWUgKnZxLFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmMtNDA4LVxcdFxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1X21hc2spXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jLTQxNC1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jOjQxNTpcXHRpZiAob3BzLVxcdTAwM2VzZXRfdnFfYWZmaW5pdHkpXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3ZkcGEuYzo0MTY6XFx0XFx0cmV0dXJuIG9wcy1cXHUwMDNlc2V0X3ZxX2FmZmluaXR5KHZkcGEsIGluZGV4LCBjcHVfbWFzayk7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3ZkcGEuYy00MTctXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jPTQzMz1zdGF0aWMgY29uc3Qgc3RydWN0IHZpcnRpb19jb25maWdfb3BzIHZpcnRpb192ZHBhX2NvbmZpZ19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jLTQ0NC1cXHQuYnVzX25hbWVcXHQ9IHZpcnRpb192ZHBhX2J1c19uYW1lLFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmM6NDQ1OlxcdC5zZXRfdnFfYWZmaW5pdHkgPSB2aXJ0aW9fdmRwYV9zZXRfdnFfYWZmaW5pdHksXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3ZkcGEuYy00NDYtXFx0LmdldF92cV9hZmZpbml0eSA9IHZpcnRpb192ZHBhX2dldF92cV9hZmZpbml0eSxcXG4tLVxcbmluY2x1ZGUvbGludXgvdmRwYS5oPTEyNz1zdHJ1Y3QgdmRwYV9tYXBfZmlsZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3ZkcGEuaC0zMDAtICpcXHRcXHRcXHRcXHR0aGUgZGV2aWNlLlxcbmluY2x1ZGUvbGludXgvdmRwYS5oOjMwMTogKiBAc2V0X3ZxX2FmZmluaXR5OlxcdFxcdFNldCB0aGUgYWZmaW5pdHkgb2YgdmlydHF1ZXVlIChvcHRpb25hbClcXG5pbmNsdWRlL2xpbnV4L3ZkcGEuaC0zMDItICpcXHRcXHRcXHRcXHRAdmRldjogdmRwYSBkZXZpY2VcXG4tLVxcbmluY2x1ZGUvbGludXgvdmRwYS5oPTM3Mj1zdHJ1Y3QgdmRwYV9jb25maWdfb3BzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvdmRwYS5oLTQyNC1cXHRzdHJ1Y3QgdmRwYV9pb3ZhX3JhbmdlICgqZ2V0X2lvdmFfcmFuZ2UpKHN0cnVjdCB2ZHBhX2RldmljZSAqdmRldik7XFxuaW5jbHVkZS9saW51eC92ZHBhLmg6NDI1OlxcdGludCAoKnNldF92cV9hZmZpbml0eSkoc3RydWN0IHZkcGFfZGV2aWNlICp2ZGV2LCB1MTYgaWR4LFxcbmluY2x1ZGUvbGludXgvdmRwYS5oLTQyNi1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGNwdW1hc2sgKmNwdV9tYXNrKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oPTI5PXN0cnVjdCB2aXJ0cXVldWVfaW5mbyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3ZpcnRpb19jb25maWcuaC05NS0gKiAgICAgIHRoZSBjYWxsZXIgY2FuIHRoZW4gY29weS5cXG5pbmNsdWRlL2xpbnV4L3ZpcnRpb19jb25maWcuaDo5NjogKiBAc2V0X3ZxX2FmZmluaXR5OiBzZXQgdGhlIGFmZmluaXR5IGZvciBhIHZpcnRxdWV1ZSAob3B0aW9uYWwpLlxcbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oLTk3LSAqIEBnZXRfdnFfYWZmaW5pdHk6IGdldCB0aGUgYWZmaW5pdHkgZm9yIGEgdmlydHF1ZXVlIChvcHRpb25hbCkuXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3ZpcnRpb19jb25maWcuaD0xMTI9c3RydWN0IHZpcnRpb19jb25maWdfb3BzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oLTEzMS1cXHRjb25zdCBjaGFyICooKmJ1c19uYW1lKShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldik7XFxuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmg6MTMyOlxcdGludCAoKnNldF92cV9hZmZpbml0eSkoc3RydWN0IHZpcnRxdWV1ZSAqdnEsXFxuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmgtMTMzLVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1X21hc2spO1xcbi0tXFxuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmg9MzkyPWludCB2aXJ0cXVldWVfc2V0X2FmZmluaXR5KHN0cnVjdCB2aXJ0cXVldWUgKnZxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1X21hc2spXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3ZpcnRpb19jb25maWcuaC0zOTQtXFx0c3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYgPSB2cS1cXHUwMDNldmRldjtcXG5pbmNsdWRlL2xpbnV4L3ZpcnRpb19jb25maWcuaDozOTU6XFx0aWYgKHZkZXYtXFx1MDAzZWNvbmZpZy1cXHUwMDNlc2V0X3ZxX2FmZmluaXR5KVxcbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oOjM5NjpcXHRcXHRyZXR1cm4gdmRldi1cXHUwMDNlY29uZmlnLVxcdTAwM2VzZXRfdnFfYWZmaW5pdHkodnEsIGNwdV9tYXNrKTtcXG5pbmNsdWRlL2xpbnV4L3ZpcnRpb19jb25maWcuaC0zOTctXFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUzOjAzLjA2NTk3OTYzMVoiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjYzNTk1MjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIGB2aXJ0cXVldWVfc2V0X2FmZmluaXR5YCBDYWxscyoqXG5cbk9rYXksIHNvIGB2aXJ0cXVldWVfc2V0X2FmZmluaXR5YCDigJMgcmlnaHQsIHRoYXQncyBhbiBpbmxpbmUgZnVuY3Rpb24gdHVja2VkIGF3YXkgaW4gYGluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oYC4gSXQncyBkZWZpbml0ZWx5IHNvbWV0aGluZyB2aXJ0aW8gZHJpdmVycyB1c2UuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIHdoZXJlICpleGFjdGx5KiBpcyB0aGlzIGZ1bmN0aW9uIGJlaW5nIGxldmVyYWdlZD9cIiBJIG5lZWQgdG8gc2VlIHRoZSBjYWxsIHNpdGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBpbiB3aGljaCBpdCdzIGJlaW5nIHVzZWQgYWNyb3NzIHRob3NlIGRyaXZlcnMuIExldCdzIGRpZyBpbiBhbmQgZmlndXJlIG91dCB3aG8ncyBhY3R1YWxseSBjYWxsaW5nIGB2aXJ0cXVldWVfc2V0X2FmZmluaXR5YC4gS25vd2luZyB0aGUgY2FsbGVycyBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIGltcGFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY3NjksIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MzowNi43Mjk1Nzc4WiIsIlNlcSI6NTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjgyNDA2MzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZpcnRxdWV1ZV9zZXRfYWZmaW5pdHlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX2NvcmUuYz0xNzk9c3RhdGljIHZvaWQgdmlydGNyeXB0b19jbGVhbl9hZmZpbml0eShzdHJ1Y3QgdmlydGlvX2NyeXB0byAqdmksIGxvbmcgaGNwdSlcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX2NvcmUuYy0xODQtXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHZpLVxcdTAwM2VtYXhfZGF0YV9xdWV1ZXM7IGkrKylcXG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19jb3JlLmM6MTg1OlxcdFxcdFxcdHZpcnRxdWV1ZV9zZXRfYWZmaW5pdHkodmktXFx1MDAzZWRhdGFfdnFbaV0udnEsIE5VTEwpO1xcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX2NvcmUuYy0xODYtXFxuLS1cXG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19jb3JlLmM9MTkxPXN0YXRpYyB2b2lkIHZpcnRjcnlwdG9fc2V0X2FmZmluaXR5KHN0cnVjdCB2aXJ0aW9fY3J5cHRvICp2Y3J5cHRvKVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fY29yZS5jLTIxMS1cXHRmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSkge1xcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX2NvcmUuYzoyMTI6XFx0XFx0dmlydHF1ZXVlX3NldF9hZmZpbml0eSh2Y3J5cHRvLVxcdTAwM2VkYXRhX3ZxW2ldLnZxLCBjcHVtYXNrX29mKGNwdSkpO1xcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX2NvcmUuYy0yMTMtXFx0XFx0aWYgKCsraSBcXHUwMDNlPSB2Y3J5cHRvLVxcdTAwM2VtYXhfZGF0YV9xdWV1ZXMpXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9Mzk0Nz1zdGF0aWMgdm9pZCB2aXJ0bmV0X2NsZWFuX2FmZmluaXR5KHN0cnVjdCB2aXJ0bmV0X2luZm8gKnZpKVxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTM5NTItXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHZpLVxcdTAwM2VtYXhfcXVldWVfcGFpcnM7IGkrKykge1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzozOTUzOlxcdFxcdFxcdHZpcnRxdWV1ZV9zZXRfYWZmaW5pdHkodmktXFx1MDAzZXJxW2ldLnZxLCBOVUxMKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mzk1NDpcXHRcXHRcXHR2aXJ0cXVldWVfc2V0X2FmZmluaXR5KHZpLVxcdTAwM2VzcVtpXS52cSwgTlVMTCk7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTM5NTUtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTM5NjE9c3RhdGljIHZvaWQgdmlydG5ldF9zZXRfYWZmaW5pdHkoc3RydWN0IHZpcnRuZXRfaW5mbyAqdmkpXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMzk5MS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mzk5MjpcXHRcXHR2aXJ0cXVldWVfc2V0X2FmZmluaXR5KHZpLVxcdTAwM2VycVtpXS52cSwgbWFzayk7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjM5OTM6XFx0XFx0dmlydHF1ZXVlX3NldF9hZmZpbml0eSh2aS1cXHUwMDNlc3FbaV0udnEsIG1hc2spO1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0zOTk0LVxcdFxcdF9fbmV0aWZfc2V0X3hwc19xdWV1ZSh2aS1cXHUwMDNlZGV2LCBjcHVtYXNrX2JpdHMobWFzayksIGksIFhQU19DUFVTKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oPTM3NT1jb25zdCBjaGFyICp2aXJ0aW9fYnVzX25hbWUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3ZpcnRpb19jb25maWcuaC0zODItLyoqXFxuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmg6MzgzOiAqIHZpcnRxdWV1ZV9zZXRfYWZmaW5pdHkgLSBzZXR0aW5nIGFmZmluaXR5IGZvciBhIHZpcnRxdWV1ZVxcbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oLTM4NC0gKiBAdnE6IHRoZSB2aXJ0cXVldWVcXG4tLVxcbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oPTM5MT1zdGF0aWMgaW5saW5lXFxuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmg6MzkyOmludCB2aXJ0cXVldWVfc2V0X2FmZmluaXR5KHN0cnVjdCB2aXJ0cXVldWUgKnZxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1X21hc2spXFxuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmgtMzkzLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTM6MDguNDExOTg5ODg1WiIsIlNlcSI6NTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxNDg5MDI5MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBgdmlydG5ldF9zZXRfYWZmaW5pdHlgKipcblxuQWgsIGB2aXJ0bmV0X3NldF9hZmZpbml0eWAuIFRoYXQncyBhIGdvb2Qgb25lLCBhIHN0cm9uZyBmb2N1cyBwb2ludC4gSSd2ZSBnb3QgaXQgLSBpdCdzIHJpZ2h0IHRoZXJlIGluIGBkcml2ZXJzL25ldC92aXJ0aW9fbmV0LmNgLiBBbHdheXMgYSBnb29kIHN0YXJ0aW5nIHBsYWNlIHRvIHVuZGVyc3RhbmQgdGhlIHZpcnRpby1uZXQgZHJpdmVyIGludGVybmFscy4gTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayBzb21ldGhpbmcuLi4gQWgsIHllcywgSSB0aG91Z2h0IHNvLiBJdCdzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBSaWdodCwgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgbWVhbnMgaXQncyBub3QgZGlyZWN0bHkgZXhwb3NlZCBvdXRzaWRlIG9mIHRoYXQgc3BlY2lmaWMgdHJhbnNsYXRpb24gdW5pdC4gR29vZCB0byBrbm93LiBKdXN0IGNvbmZpcm1pbmcgdGhhdCdzIGhvdyBpdCdzIGRlZmluZWQgYW5kIHNjb3BlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc4MzQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MzoxNC41NjA4OTUxMTVaIiwiU2VxIjo1OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTc1Nzc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZpcnRuZXRfc2V0X2FmZmluaXR5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9Mzk0Nz1zdGF0aWMgdm9pZCB2aXJ0bmV0X2NsZWFuX2FmZmluaXR5KHN0cnVjdCB2aXJ0bmV0X2luZm8gKnZpKVxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTM5NjAtXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjM5NjE6c3RhdGljIHZvaWQgdmlydG5ldF9zZXRfYWZmaW5pdHkoc3RydWN0IHZpcnRuZXRfaW5mbyAqdmkpXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTM5NjIte1xcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTQwMDI9c3RhdGljIGludCB2aXJ0bmV0X2NwdV9vbmxpbmUodW5zaWduZWQgaW50IGNwdSwgc3RydWN0IGhsaXN0X25vZGUgKm5vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNDAwNS1cXHRcXHRcXHRcXHRcXHRcXHQgICBub2RlKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NDAwNjpcXHR2aXJ0bmV0X3NldF9hZmZpbml0eSh2aSk7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTQwMDctXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9NDAxMD1zdGF0aWMgaW50IHZpcnRuZXRfY3B1X2RlYWQodW5zaWduZWQgaW50IGNwdSwgc3RydWN0IGhsaXN0X25vZGUgKm5vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNDAxMy1cXHRcXHRcXHRcXHRcXHRcXHQgICBub2RlX2RlYWQpO1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzo0MDE0OlxcdHZpcnRuZXRfc2V0X2FmZmluaXR5KHZpKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNDAxNS1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz00Mzc0PXN0YXRpYyBpbnQgdmlydG5ldF9zZXRfY2hhbm5lbHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy00NDAyLVxcdH1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NDQwMzpcXHR2aXJ0bmV0X3NldF9hZmZpbml0eSh2aSk7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTQ0MDQtXFx0Y3B1c19yZWFkX3VubG9jaygpO1xcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTY1NDY9c3RhdGljIGludCBpbml0X3ZxcyhzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSlcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy02NTU5LVxcdGNwdXNfcmVhZF9sb2NrKCk7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjY1NjA6XFx0dmlydG5ldF9zZXRfYWZmaW5pdHkodmkpO1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy02NTYxLVxcdGNwdXNfcmVhZF91bmxvY2soKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTM6MTQuNjA3MDc5NzExWiIsIlNlcSI6NTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg2Nzc4MDY2NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ3VycmVudCBSZWFzb25pbmcqKlxuXG5Pa2F5LCB0aGlzIGlzIHdoYXQgSSdtIHRoaW5raW5nLi4uIHRoZSBjb2RlIEknbSBsb29raW5nIGF0IHNlZW1zIHByZXR0eSBzdGF0aWMuIFRoYXQncyBhIHByb2JsZW0gZm9yIG15IHB1cnBvc2UuIEkgaW5pdGlhbGx5IGNvbnNpZGVyZWQgYHZpcnRuZXRfc2V0X2NoYW5uZWxzYCBhcyBpdCdzIGFuIGV0aHRvb2wgY2FsbGJhY2ssIHdoaWNoIGlzIHVzZWZ1bCwgYnV0IGl0IGxvb2tzIGxpa2UgaXQncyBzdGF0aWMuIFNhbWUgZ29lcyBmb3IgYGluaXRfdnFzYCDigJMgaXQncyBzdGF0aWMsIHNvIGl0J3Mgbm90IGEgdmlhYmxlIG9wdGlvbi4gQW5kIGxldCdzIG5vdCBmb3JnZXQgYHZpcnRuZXRfcHJvYmVgOyBpdCdzIHRoZSBwcm9iZSBmdW5jdGlvbiwgYnV0IGFnYWluLCBpdCBhcHBlYXJzIHRvIGJlIHN0YXRpYy4gSSBuZWVkIHNvbWV0aGluZyBub24tc3RhdGljIHRoYXQgSSBjYW4gd29yayB3aXRoLlxuXG5TbywgSSB0aGluayB0aGUgYmVzdCBwYXRoIGZvcndhcmQgaXMgdG8gZm9jdXMgb24gYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGFuZCBgY3B1bWFza19sb2NhbF9zcHJlYWRgIGJlY2F1c2UgdGhleSBhcmUgYm90aCBub24tc3RhdGljIGFuZCBleHBvcnRlZCwgbWFraW5nIHRoZW0gYWNjZXNzaWJsZS4gQWxzbywgYHN0bW1hY194ZHBfb3BlbmAgaXMgbm9uLXN0YXRpYyBhbmQgZXhwb3J0ZWQsIHNvIHRoYXQgbWlnaHQgYmUgdXNlZnVsIHRvby5cblxuQmVmb3JlIEkgY29tbWl0IHRvIHRoZW0gdGhvdWdoLCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgZG9lcyB3aGF0IEkgdGhpbmsgaXQgZG9lcy4gSSBuZWVkIHRvIGJlIHN1cmUgaXQncyBkb2luZyB3aGF0IEkgdGhpbmsgaXQgZG9lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg2NDMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTM6MjMuMjg0ODkwNzg4WiIsIlNlcSI6NjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzkyNTIzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2lycV9hcHBseV9hZmZpbml0eV9oaW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9pcnEvbWFuYWdlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2lycS9tYW5hZ2UuYz01MDI9RVhQT1JUX1NZTUJPTF9HUEwoaXJxX2ZvcmNlX2FmZmluaXR5KTtcXG5rZXJuZWwvaXJxL21hbmFnZS5jLTUwMy1cXG5rZXJuZWwvaXJxL21hbmFnZS5jOjUwNDppbnQgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCh1bnNpZ25lZCBpbnQgaXJxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSwgYm9vbCBzZXRhZmZpbml0eSlcXG5rZXJuZWwvaXJxL21hbmFnZS5jLTUwNS17XFxuLS1cXG5rZXJuZWwvaXJxL21hbmFnZS5jLTUyNi19XFxua2VybmVsL2lycS9tYW5hZ2UuYzo1Mjc6RVhQT1JUX1NZTUJPTF9HUEwoX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCk7XFxua2VybmVsL2lycS9tYW5hZ2UuYy01MjgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUzOjIzLjMzMjgyNDY4M1oiLCJTZXEiOjYxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODYyNTM5NzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIENvZGUgU3RydWN0dXJlKipcblxuT2theSwgc28gSSdtIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgbm9uLXN0YXRpYyBhbmQgZXhwb3J0ZWQuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgYXJlYSBmb3IgZnVydGhlciBleGFtaW5hdGlvbi4gU2luY2UgaXQncyBleHBvcnRlZCwgSSBrbm93IGl0J3MgZGVzaWduZWQgdG8gYmUgYWNjZXNzZWQgZnJvbSBvdXRzaWRlIGl0cyBkZWZpbmluZyBtb2R1bGUuIFRoZSBcIm5vbi1zdGF0aWNcIiBwYXJ0IG1lYW5zIGl0IGhhcyBleHRlcm5hbCBsaW5rYWdlIHdpdGhpbiB0aGUgcHJvamVjdC4gVGhlc2UgdHdvIHByb3BlcnRpZXMgY29tYmluZWQgaGlnaGxpZ2h0IHRoZSBpbXBvcnRhbmNlIG9mIHVuZGVyc3RhbmRpbmcgaXRzIGltcGxpY2F0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLlxuXG5Ob3csIGxldCdzIHplcm8gaW4gb24gYGNwdW1hc2tfbG9jYWxfc3ByZWFkYC4gSSBuZWVkIHRvIHZlcmlmeSBob3cgKnRoYXQqIGZ1bmN0aW9uIGlzIGJlaW5nIHV0aWxpemVkLCBlc3BlY2lhbGx5IGluIGNvbnRleHQgb2YgdGhlIG9yaWdpbmFsIHN0YXRlbWVudHMuIFdoYXQncyBpdHMgcHVycG9zZT8gSG93IGlzIGl0IGJlaW5nIGNhbGxlZD8gSSBoYXZlIHRvIGVuc3VyZSB0aGUgZXhwb3J0ZWQsIG5vbi1zdGF0aWMgZWxlbWVudCBpcyBiZWluZyB1c2VkIGFzIGludGVuZGVkIGFuZCB0aGUgaW1wYWN0IG9mIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAgaXMgdW5kZXJzdG9vZCwgcGFydGljdWxhcmx5IGdpdmVuIHRoYXQgdGhpcyBpcyBhIHN5c3RlbS1sZXZlbCBmdW5jdGlvbiBkZWFsaW5nIHdpdGggQ1BVIGFmZmluaXR5LCByZXNvdXJjZSBhbGxvY2F0aW9uIGFuZCBwb3RlbnRpYWxseSBpbnRlcnJ1cHRzLiBBIGRlZXAgZGl2ZSBpcyBpbiBvcmRlci4gTGV0J3Mgc2VlIGhvdyBpdCdzIGludGVncmF0ZWQgd2l0aCB0aGUgbGFyZ2VyIGVjb3N5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkyMzMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MzoyNy4xOTUzNjcxNzFaIiwiU2VxIjo2MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MTU3Mzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNwdW1hc2tfbG9jYWxfc3ByZWFkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImxpYi9jcHVtYXNrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL2NwdW1hc2suYz03ND12b2lkIF9faW5pdCBmcmVlX2Jvb3RtZW1fY3B1bWFza192YXIoY3B1bWFza192YXJfdCBtYXNrKVxcbi0tXFxubGliL2NwdW1hc2suYy04MC0vKipcXG5saWIvY3B1bWFzay5jOjgxOiAqIGNwdW1hc2tfbG9jYWxfc3ByZWFkIC0gc2VsZWN0IHRoZSBpJ3RoIGNwdSBiYXNlZCBvbiBOVU1BIGRpc3RhbmNlc1xcbmxpYi9jcHVtYXNrLmMtODItICogQGk6IGluZGV4IG51bWJlclxcbi0tXFxubGliL2NwdW1hc2suYy05Mi0gKiBmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnVtX29ubGluZV9jcHVzKCk7IGkrKykge1xcbmxpYi9jcHVtYXNrLmM6OTM6ICpcXHRjcHUgPSBjcHVtYXNrX2xvY2FsX3NwcmVhZChpLCBub2RlKTtcXG5saWIvY3B1bWFzay5jLTk0LSAqXFx0ZG9fc29tZXRoaW5nKGNwdSk7XFxuLS1cXG5saWIvY3B1bWFzay5jLTEwNi0gKiBlbnVtZXJhdGlvbiBpcyBPKHNjaGVkX2RvbWFpbnNfbnVtYV9sZXZlbHMgKiBucl9jcHVfaWRzKSwgd2hpbGVcXG5saWIvY3B1bWFzay5jOjEwNzogKiBjcHVtYXNrX2xvY2FsX3NwcmVhZCgpIHdoZW4gY2FsbGVkIGZvciBlYWNoIGNwdSBpc1xcbmxpYi9jcHVtYXNrLmMtMTA4LSAqIE8oc2NoZWRfZG9tYWluc19udW1hX2xldmVscyAqIG5yX2NwdV9pZHMgKiBsb2cobnJfY3B1X2lkcykpLlxcbmxpYi9jcHVtYXNrLmMtMTA5LSAqL1xcbmxpYi9jcHVtYXNrLmM6MTEwOnVuc2lnbmVkIGludCBjcHVtYXNrX2xvY2FsX3NwcmVhZCh1bnNpZ25lZCBpbnQgaSwgaW50IG5vZGUpXFxubGliL2NwdW1hc2suYy0xMTEte1xcbi0tXFxubGliL2NwdW1hc2suYy0xMjEtfVxcbmxpYi9jcHVtYXNrLmM6MTIyOkVYUE9SVF9TWU1CT0woY3B1bWFza19sb2NhbF9zcHJlYWQpO1xcbmxpYi9jcHVtYXNrLmMtMTIzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MzoyNy4yNDI1MzA3ODZaIiwiU2VxIjo2MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkwOTgyODgwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIENvZGUgU3RydWN0dXJlKipcblxuT2theSwgc28gSSBzZWUgdGhhdCB0aGlzIHZhcmlhYmxlIG9yIGZ1bmN0aW9uIGlzbid0IGRlY2xhcmVkIGFzIGBzdGF0aWNgIGFuZCB0aGF0IGl0J3MgYmVpbmcgZXhwb3J0ZWQuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgaXQgZm9yIGV4dGVybmFsIHVzZSwgd2hpY2ggbWVhbnMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBtb2R1bGVzLiBJJ2xsIG5lZWQgdG8ga2VlcCB0aGlzIGluIG1pbmQgYXMgSSBjb250aW51ZSB0byBhbmFseXplIHRoZSBjb250ZXh0IG9mIGl0cyB1c2FnZSBhbmQgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuXG5cbk5vdywgbGV0J3MgZHJpbGwgZG93biBhbmQgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBgc3RtbWFjX3hkcF9vcGVuYCBmdW5jdGlvbi4gVGhhdCdzIHRoZSBrZXkgZW50cnkgcG9pbnQgSSBuZWVkIHRvIGRpc3NlY3QgZnVydGhlciB0byBjb25maXJtIG15IGluaXRpYWwgYXNzdW1wdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk5MTksIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MzozMi4xNTIzNjI2ODVaIiwiU2VxIjo2NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODAxMDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY194ZHBfb3BlblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzEwNj12b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzEzOTppbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTQwLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTM6MzIuMTk4MTY4NDkxWiIsIlNlcSI6NjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwOTM3MDE3ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUHJvcG9zZWQgQ2hhbmdlcyoqXG5cbk9rYXksIHNvIHRoaXMgaXMgYWJvdXQgaGFuZGxpbmcgSVJRIGFmZmluaXR5IGFuZCBDUFUgbWFzayBzcHJlYWRpbmcsIHdoaWNoLCBmcm9tIHdoYXQgSSdtIHNlZWluZywgaXMgYSBjb3JlIGtlcm5lbCBtb2RpZmljYXRpb24uIEl0IGxvb2tzIGxpa2UgaXQncyB0b3VjaGluZyBzZXZlcmFsIGRyaXZlcnMsIHNwZWNpZmljYWxseSB0aGUgYHN0bW1hY2AgZHJpdmVyLCBtYWtpbmcgY2hhbmdlcyB0byB0aGUgYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGFuZCBgY3B1bWFza19sb2NhbF9zcHJlYWRgIGZ1bmN0aW9ucy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBmdW5jdGlvbmFsLCBhbmQgdGhlIGNoYW5nZXMgdG8gYHN0bW1hY2Agc2VlbSBzdHJhaWdodGZvcndhcmQgaW4gdGhlaXIgYXBwbGljYXRpb24gb2YgdGhlc2UgY29yZSBjaGFuZ2VzLiBEZWZpbml0ZWx5IG1ha2VzIHNlbnNlIHRvIHB1dCB0aGlzIHRocm91Z2ggc29tZSBmdXp6aW5nLCBhcyB3ZSdyZSBkZWFsaW5nIHdpdGggY3JpdGljYWwga2VybmVsIGxvZ2ljLlxuXG5JIGFsc28gc2VlIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgIGFzIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaGVyZS4gYFNUTU1BQ19QQ0lgIHNlZW1zIHN1ZmZpY2llbnQsIGdpdmVuIGl0IHB1bGxzIGluIGBTVE1NQUNfTElCUENJYCBhbmQgZGVwZW5kcyBvbiBgUENJYCwgc28gdGhlIGhhcmR3YXJlIHNpZGUgaXMgY292ZXJlZC5cblxuTXkgbWFpbiB0aG91Z2h0IGlzIHRvIGlkZW50aWZ5IGEgc29saWQgZW50cnkgcG9pbnQgZm9yIGZ1enppbmcuIFdoaWxlIGBzdG1tYWNfeGRwX29wZW5gIGlzIHByZXNlbnQgKGNhbGxlZCB3aGVuIFhEUCBpcyBlbmFibGVkKSwgSSdtIGN1cmlvdXMgaWYgdGhlcmUncyBhIGJldHRlciBvbmUuIEkgc2VlIHRoYXQgYHN0bW1hY19yZXN1bWVgIGlzIGV4cG9ydGVkIGFuZCBub24tc3RhdGljLCBzbyBpdCdzIGEgcG9zc2liaWxpdHksIGJ1dCBpdCBkb2Vzbid0IGNhbGwgYHN0bW1hY19yZXF1ZXN0X2lycWAsIHdoaWNoIG1pZ2h0IGxpbWl0IGl0cyB1c2VmdWxuZXNzIGFzIGEgdGVzdCBlbnRyeSBwb2ludC4gUGVyaGFwcyBgc3RtbWFjX3JlaW5pdF9xdWV1ZXNgIHdvdWxkIGJlIG1vcmUgYXBwcm9wcmlhdGUgc2luY2UgaXQncyBpbnZvbHZlZCBpbiByZS1pbml0aWFsaXppbmcgdGhlIHF1ZXVlcy4gTGV0IG1lIGV4cGxvcmUgdGhlIGNhbGwgZ3JhcGhzIGFuZCBkZXBlbmRlbmNpZXMgYSBiaXQgbW9yZSBhbmQgY29uc2lkZXIgd2hhdCdzIGJlaW5nIHRlc3RlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAyOTgsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTM6MzguMjkxODczNTE3WiIsIlNlcSI6NjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQzMDUzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcmVpbml0X3F1ZXVlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzU4Nj1zdGF0aWMgdm9pZCBzdG1tYWNfbmFwaV9kZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc2MDc6aW50IHN0bW1hY19yZWluaXRfcXVldWVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHU4IHJ4X2NudCwgdTggdHhfY250KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYwOC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUzOjM4LjMzODMwODczMloiLCJTZXEiOjY3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NDAxNDEyMDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU1RNIE1BQyBRdWV1ZSBSZS1Jbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIGBzdG1tYWNfcmVpbml0X3F1ZXVlc2AgaXNuJ3Qgc3RhdGljLCB3aGljaCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIE5vbi1zdGF0aWMgZnVuY3Rpb25zIGFyZSBvZnRlbiBlbnRyeSBwb2ludHMgb3IsIGF0IGxlYXN0LCBoYXZlIGJyb2FkZXIgc2NvcGUgdGhhbiBqdXN0IHRoZSBmaWxlIHRoZXkncmUgZGVmaW5lZCBpbi4gTm93LCBpdCBsb29rcyBsaWtlIGl0J3MgY2FsbGluZyBgc3RtbWFjX29wZW5gLCBhbmQgdGhhdCBmdW5jdGlvbiwgaW4gdHVybiwgaXMgY2FsbGluZyBgc3RtbWFjX3JlcXVlc3RfaXJxYC4gR2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgcmUtaW5pdGlhbGl6YXRpb24sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHNvIEkgYW0gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRoYXQgYHN0bW1hY19vcGVuYCBpcywgaW4gZmFjdCwgY2FsbGVkIGJ5IGBzdG1tYWNfcmVpbml0X3F1ZXVlc2AsIGFuZCB0aGVuIEkgY2FuIGRlZHVjZSBob3cgdGhlIElSUXMgYXJlIGdldHRpbmcgcmVxdWVzdGVkIGluIHRoZSBjb250ZXh0IG9mIGEgcG90ZW50aWFsIHJlLWluaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMTQ1LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTM6NDcuNzM5NzI0MDE0WiIsIlNlcSI6NjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODYxNjMyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfb3BlblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDA2Mz1zdG1tYWNfc2V0dXBfZG1hX2Rlc2Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1bnNpZ25lZCBpbnQgbXR1KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTI4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDEyOTogKiAgX19zdG1tYWNfb3BlbiAtIG9wZW4gZW50cnkgcG9pbnQgb2YgdGhlIGRyaXZlclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDEzMC0gKiAgQGRldiA6IHBvaW50ZXIgdG8gdGhlIGRldmljZSBzdHJ1Y3R1cmUuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxMzctICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MTM4OnN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDEzOS1cXHRcXHRcXHQgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxOTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MTk2OnN0YXRpYyBpbnQgc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxOTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDIyNDpcXHRyZXQgPSBfX3N0bW1hY19vcGVuKGRldiwgZG1hX2NvbmYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDIyNS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02MTE0PXN0YXRpYyBpbnQgc3RtbWFjX2NoYW5nZV9tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG5ld19tdHUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2MTUwOlxcdFxcdHJldCA9IF9fc3RtbWFjX29wZW4oZGV2LCBkbWFfY29uZik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02MTUxLVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzMyMD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHN0bW1hY19uZXRkZXZfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzMyMTpcXHQubmRvX29wZW4gPSBzdG1tYWNfb3BlbixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMjItXFx0Lm5kb19zdGFydF94bWl0ID0gc3RtbWFjX3htaXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc2MDc9aW50IHN0bW1hY19yZWluaXRfcXVldWVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHU4IHJ4X2NudCwgdTggdHhfY250KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjI2LVxcdGlmIChuZXRpZl9ydW5uaW5nKGRldikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NjI3OlxcdFxcdHJldCA9IHN0bW1hY19vcGVuKGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjI4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NjMyPWludCBzdG1tYWNfcmVpbml0X3JpbmdwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcnhfc2l6ZSwgdTMyIHR4X3NpemUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2NDMtXFx0aWYgKG5ldGlmX3J1bm5pbmcoZGV2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc2NDQ6XFx0XFx0cmV0ID0gc3RtbWFjX29wZW4oZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2NDUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUzOjQ3Ljc4ODM0NjIyOVoiLCJTZXEiOjY5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzA0MzQ3NzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OlxuXG4qKkZvY3VzaW5nIEluIG9uIHRoZSBSZWluaXRpYWxpemF0aW9uIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gdHJhY2UgdGhlIHJlLWluaXRpYWxpemF0aW9uIHNlcXVlbmNlIG9mIHRoaXMgU1RNTUFDIGRyaXZlci4gSSBzZWUgdGhhdCBib3RoIGBzdG1tYWNfcmVpbml0X3F1ZXVlc2AgYW5kIGBzdG1tYWNfcmVpbml0X3JpbmdwYXJhbWAgdWx0aW1hdGVseSBjYWxsIGBzdG1tYWNfb3BlbmAuIFRoYXQncyBpbXBvcnRhbnQuIEl0IG1ha2VzIHNlbnNlLCBhcyB0aGVzZSByZS1pbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgd291bGQgbGlrZWx5IG5lZWQgdG8gcmVzZXQgZXZlcnl0aGluZyBiYWNrIHRvIGEga25vd24gZ29vZCBzdGF0ZSBsaWtlIGBzdG1tYWNfb3BlbmAuIEFuZCBgc3RtbWFjX29wZW5gIGlzIHRoZSBcInN0YXJ0aW5nIHBvaW50XCIgZm9yIHRoaW5ncy5cblxuYHN0bW1hY19yZWluaXRfcXVldWVzYCBmZWVscyBsaWtlIHRoZSBtb3JlIHByb21pc2luZyBzeW1ib2wgdG8gZm9jdXMgb24gcmlnaHQgbm93LiBJdCBpcyBtb3JlIGxpa2VseSB0byBiZSBpbnZvbHZlZCBpbiB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHVuZGVybHlpbmcgbmV0d29yayBmdW5jdGlvbnMuIFNvLCBsZXQncyBzZWUgaWYgdGhhdCBmdW5jdGlvbiBpcyBleHBvcnRlZC4gS25vd2luZyBpZiBpdCBpcyBjYW4gaGVscCBzaG93IHdoZXRoZXIgaXQgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIG9yIGlmIGl0J3MgaW50ZXJuYWwgdG8gdGhlIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI1NTEsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1Mzo1Mi4wOTI2OTc0MDFaIiwiU2VxIjo3MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NTcxOTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY19yZWluaXRfcXVldWVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NTg2PXN0YXRpYyB2b2lkIHN0bW1hY19uYXBpX2RlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzYwNzppbnQgc3RtbWFjX3JlaW5pdF9xdWV1ZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggcnhfY250LCB1OCB0eF9jbnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjA4LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTM6NTIuMTM3Mjc3MTQ3WiIsIlNlcSI6NzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2NjMzMzU0OTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nOlxuXG4qKkZvY3VzaW5nIEluIG9uIEtleSBGdW5jdGlvbnMqKlxuXG5IbW0sIHNvIGl0J3Mgbm90IGV4cG9ydGVkLCBidXQgaXQgKmlzKiBub24tc3RhdGljLiBJbnRlcmVzdGluZy4gVGhhdCBzdWdnZXN0cyBpdCdzIG5vdCBtZWFudCB0byBiZSBkaXJlY3RseSBhY2Nlc3NlZCBmcm9tIG90aGVyIG1vZHVsZXMsIGJ1dCBpdCdzIHN0aWxsIGF2YWlsYWJsZSB3aXRoaW4gdGhlIGN1cnJlbnQgc2NvcGUuIE9rYXkuIEkgbmVlZCB0byBiZSBjYXJlZnVsIHdpdGggdGhhdC4gQW5kIHdoYXQgYWJvdXQgYHN0bW1hY194ZHBfb3BlbmA/IFJpZ2h0LCBhbHNvIG5vbi1zdGF0aWMuIExldCBtZSBqdXN0IG5vdGUgdGhhdCBkb3duLlxuXG5CdXQgSSB0aGluaywgZm9yIHRoZSBjb3JlIG9mIHdoYXQgSSdtIGxvb2tpbmcgYXQgcmlnaHQgbm93LCBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgYW5kIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAgc2VlbSBsaWtlIHRoZSBtb3JlIGltcG9ydGFudCBzeW1ib2xzIHRvIHplcm8gaW4gb24uIFRoZXkncmUgbGlrZWx5IGdvaW5nIHRvIGJlIHRoZSBjZW50cmFsIGZ1bmN0aW9ucyBJIG5lZWQgdG8gYW5hbHl6ZS5cblxuQWxyaWdodCwgSSB0aGluayBJJ3ZlIGdhdGhlcmVkIGVub3VnaCBjb250ZXh0IGhlcmUuIFRpbWUgdG8gYWN0dWFsbHkgY2FsbCBgc2V0LXJlc3VsdHNgIG5vdyBhbmQgbG9jayB0aG9zZSBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMwNjcsIk91dHB1dFRva2VucyI6MTU3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTQ6MDguNzcwNjM1MTA5WiIsIlNlcSI6NzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgxMzc3NjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2lycV9hcHBseV9hZmZpbml0eV9oaW50XCIsXG4gICAgXCJjcHVtYXNrX2xvY2FsX3NwcmVhZFwiLFxuICAgIFwic3RtbWFjX3JlaW5pdF9xdWV1ZXNcIixcbiAgICBcInN0bW1hY194ZHBfb3BlblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUga2VybmVsIGxvZ2ljIGZvciBJUlEgYWZmaW5pdHkgaGludHMgKF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnQpIGFuZCBjcHVtYXNrIHNwcmVhZGluZyAoY3B1bWFza19sb2NhbF9zcHJlYWQpLCB3aGljaCBhcmUgdXNlZCBieSB2YXJpb3VzIGRyaXZlcnMuIEl0IGFsc28gbW9kaWZpZXMgdGhlIHN0bW1hYyBkcml2ZXIgdG8gdXNlIHRoZXNlIGZ1bmN0aW9ucyBjb3JyZWN0bHkuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2lycV9hcHBseV9hZmZpbml0eV9oaW50XCIsXG4gICAgXCJjcHVtYXNrX2xvY2FsX3NwcmVhZFwiLFxuICAgIFwic3RtbWFjX3JlaW5pdF9xdWV1ZXNcIixcbiAgICBcInN0bW1hY194ZHBfb3BlblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUga2VybmVsIGxvZ2ljIGZvciBJUlEgYWZmaW5pdHkgaGludHMgKF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnQpIGFuZCBjcHVtYXNrIHNwcmVhZGluZyAoY3B1bWFza19sb2NhbF9zcHJlYWQpLCB3aGljaCBhcmUgdXNlZCBieSB2YXJpb3VzIGRyaXZlcnMuIEl0IGFsc28gbW9kaWZpZXMgdGhlIHN0bW1hYyBkcml2ZXIgdG8gdXNlIHRoZXNlIGZ1bmN0aW9ucyBjb3JyZWN0bHkuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1NDowOC44NDg3ODAwNjFaIiwiU2VxIjo3MywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjQ2MjkzMzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTQ6MDguODQ5MzYwNDlaIiwiU2VxIjo3NCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTIyNDU3MDg3MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIElSUSBhZmZpbml0eSBoYW5kbGluZyBpbiB0aGUgc3RtbWFjIGRyaXZlciBhbmQgY29yZSBJUlEvY3B1bWFzayBjb2RlLiBJdCBhbGxvY2F0ZXMgYSBjcHVtYXNrIHVzaW5nIGB6YWxsb2NfY3B1bWFza192YXJgICh3aGljaCB6ZXJvZXMgdGhlIG1lbW9yeSkgYW5kIGV4cGxpY2l0bHkgY2xlYXJzIGl0IHdpdGggYGNwdW1hc2tfY2xlYXJgIGJlZm9yZSB1c2UuIFRoZSBjaGFuZ2VzIHRvIGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCBhbmQgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYCBpbnZvbHZlIGNvbnRyb2wgZmxvdyBhbmQgQ1BVIG1hc2sgbG9naWMgKGUuZy4sIHVzaW5nIGBpcnFfZGVmYXVsdF9hZmZpbml0eWAgaW5zdGVhZCBvZiBgbnVtX29ubGluZV9jcHVzKClgKS4gVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgYW5kIG5vIGluZm8tbGVha3MgaW50cm9kdWNlZC4gQW55IHBvdGVudGlhbCBpc3N1ZXMgKHN1Y2ggYXMgYSBkaXZpc2lvbiBieSB6ZXJvIGlmIGBjcHVtYXNrX3dlaWdodGAgcmV0dXJucyAwKSB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIHRlc3Rpbmcgb3IgS0FTQU4vVUJTQU4uIFRodXMsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDcwNzgyY2RjZDBiZGFkNTQ3ZTdjODJhMzEzZDhjNDhiZjE2MDM4YWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxOSAxNDo0OToyNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCBhNzFmMGRmMjYzNzg1Li45NDljZWQ3ZTQ2ZDI4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTM4MjYsMTEgKzM4MjYsMTYgQEAgc3RhdGljIGludCBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xuIFx0c3RydWN0IHN0bW1hY19tc2kgKm1zaSA9IHByaXYtXHUwMDNlbXNpO1xuIFx0ZW51bSByZXF1ZXN0X2lycV9lcnIgaXJxX2VycjtcbitcdGNwdW1hc2tfdmFyX3QgYWZmaW5pdHk7XG4gXHRpbnQgaXJxX2lkeCA9IDA7XG4gXHRjaGFyICppbnRfbmFtZTtcbitcdGludCBub2RlO1xuIFx0aW50IHJldDtcbiBcdGludCBpO1xuIFxuK1x0aWYgKCF6YWxsb2NfY3B1bWFza192YXIoXHUwMDI2YWZmaW5pdHksIEdGUF9LRVJORUwpKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbiBcdC8qIEZvciBjb21tb24gaW50ZXJydXB0ICovXG4gXHRpbnRfbmFtZSA9IG1zaS1cdTAwM2VpbnRfbmFtZV9tYWM7XG4gXHRzcHJpbnRmKGludF9uYW1lLCBcIiVzOiVzXCIsIGRldi1cdTAwM2VuYW1lLCBcIm1hY1wiKTtcbkBAIC0zOTE2LDYgKzM5MjEsNyBAQCBzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdH1cbiBcbiBcdC8qIFJlcXVlc3QgUnggTVNJIGlycSAqL1xuK1x0bm9kZSA9IGRldl90b19ub2RlKFx1MDAyNnByaXYtXHUwMDNlZGV2LVx1MDAzZWRldik7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcnhfcXVldWVzX3RvX3VzZTsgaSsrKSB7XG4gXHRcdGlmIChpIFx1MDAzZT0gTVRMX01BWF9SWF9RVUVVRVMpXG4gXHRcdFx0YnJlYWs7XG5AQCAtMzkzNSw4ICszOTQxLDEwIEBAIHN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0XHRcdGlycV9pZHggPSBpO1xuIFx0XHRcdGdvdG8gaXJxX2Vycm9yO1xuIFx0XHR9XG4tXHRcdGlycV9zZXRfYWZmaW5pdHlfaGludChtc2ktXHUwMDNlcnhfaXJxW2ldLFxuLVx0XHRcdFx0ICAgICAgY3B1bWFza19vZihpICUgbnVtX29ubGluZV9jcHVzKCkpKTtcbitcbitcdFx0Y3B1bWFza19jbGVhcihhZmZpbml0eSk7XG4rXHRcdGNwdW1hc2tfc2V0X2NwdShjcHVtYXNrX2xvY2FsX3NwcmVhZChpLCBub2RlKSwgYWZmaW5pdHkpO1xuK1x0XHRpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KG1zaS1cdTAwM2VyeF9pcnFbaV0sIGFmZmluaXR5KTtcbiBcdH1cbiBcbiBcdC8qIFJlcXVlc3QgVHggTVNJIGlycSAqL1xuQEAgLTM5NTksMTMgKzM5NjcsMTggQEAgc3RhdGljIGludCBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdFx0aXJxX2lkeCA9IGk7XG4gXHRcdFx0Z290byBpcnFfZXJyb3I7XG4gXHRcdH1cbi1cdFx0aXJxX3NldF9hZmZpbml0eV9oaW50KG1zaS1cdTAwM2V0eF9pcnFbaV0sXG4tXHRcdFx0XHQgICAgICBjcHVtYXNrX29mKGkgJSBudW1fb25saW5lX2NwdXMoKSkpO1xuK1xuK1x0XHRjcHVtYXNrX2NsZWFyKGFmZmluaXR5KTtcbitcdFx0Y3B1bWFza19zZXRfY3B1KGNwdW1hc2tfbG9jYWxfc3ByZWFkKGksIG5vZGUpLCBhZmZpbml0eSk7XG4rXHRcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQobXNpLVx1MDAzZXR4X2lycVtpXSwgYWZmaW5pdHkpO1xuIFx0fVxuIFxuK1x0ZnJlZV9jcHVtYXNrX3ZhcihhZmZpbml0eSk7XG4rXG4gXHRyZXR1cm4gMDtcbiBcbiBpcnFfZXJyb3I6XG4rXHRmcmVlX2NwdW1hc2tfdmFyKGFmZmluaXR5KTtcbiBcdHN0bW1hY19mcmVlX2lycShkZXYsIGlycV9lcnIsIGlycV9pZHgpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5kaWZmIC0tZ2l0IGEva2VybmVsL2lycS9tYW5hZ2UuYyBiL2tlcm5lbC9pcnEvbWFuYWdlLmNcbmluZGV4IDdlYjA3ZTNiZGI0YzIuLjM5MzdiYTI0ZGY2ZDYgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvaXJxL21hbmFnZS5jXG4rKysgYi9rZXJuZWwvaXJxL21hbmFnZS5jXG5AQCAtNTAzLDExICs1MDMsMjEgQEAgRVhQT1JUX1NZTUJPTF9HUEwoaXJxX2ZvcmNlX2FmZmluaXR5KTtcbiBcbiBpbnQgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCh1bnNpZ25lZCBpbnQgaXJxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSwgYm9vbCBzZXRhZmZpbml0eSlcbiB7XG4rXHRzdHJ1Y3QgaXJxX2RhdGEgKmlycV9kYXRhO1xuIFx0aW50IHJldCA9IC1FSU5WQUw7XG4gXG4gXHRzY29wZWRfaXJxZGVzY19nZXRfYW5kX2xvY2soaXJxLCBJUlFfR0VUX0RFU0NfQ0hFQ0tfR0xPQkFMKSB7XG4gXHRcdHNjb3BlZF9pcnFkZXNjLVx1MDAzZWFmZmluaXR5X2hpbnQgPSBtO1xuK1x0XHRpcnFfZGF0YSA9IGlycV9kZXNjX2dldF9pcnFfZGF0YShzY29wZWRfaXJxZGVzYyk7XG4gXHRcdHJldCA9IDA7XG4rXG4rXHRcdC8qXG4rXHRcdCAqIERvIG5vdCBvdmVyd3JpdGUgdGhlIGFmZmluaXR5IGluIGNhc2UgYW4gYWZmaW5pdHkgZm9yIHRoaXNcbitcdFx0ICogSVJRIGhhcyBhbHJlYWR5IGJlZW4gcmVxdWVzdGVkLCBlLmcuIGJ5IHdyaXRpbmcgdG9cbitcdFx0ICogL3Byb2MvaXJxL1x1MDAzY25cdTAwM2Uvc21wX2FmZmluaXR5XG4rXHRcdCAqL1xuK1x0XHRpZiAoaXJxZF9hZmZpbml0eV93YXNfc2V0KGlycV9kYXRhKSlcbitcdFx0XHRzZXRhZmZpbml0eSA9IGZhbHNlO1xuIFx0fVxuIFxuIFx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IG0gXHUwMDI2XHUwMDI2IHNldGFmZmluaXR5KVxuZGlmZiAtLWdpdCBhL2xpYi9jcHVtYXNrLmMgYi9saWIvY3B1bWFzay5jXG5pbmRleCA1YWRiOTg3NGZiZDBmLi43M2U3YjYwYTkyMDExIDEwMDY0NFxuLS0tIGEvbGliL2NwdW1hc2suY1xuKysrIGIvbGliL2NwdW1hc2suY1xuQEAgLTYsNiArNiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXhwb3J0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tZW1ibG9jay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbnVtYS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvaW50ZXJydXB0LmhcdTAwM2VcbiBcbiAvKiBUaGVzZSBhcmUgbm90IGlubGluZSBiZWNhdXNlIG9mIGhlYWRlciB0YW5nbGVzLiAqL1xuICNpZmRlZiBDT05GSUdfQ1BVTUFTS19PRkZTVEFDS1xuQEAgLTgxLDggKzgyLDkgQEAgdm9pZCBfX2luaXQgZnJlZV9ib290bWVtX2NwdW1hc2tfdmFyKGNwdW1hc2tfdmFyX3QgbWFzaylcbiAgKiBAaTogaW5kZXggbnVtYmVyXG4gICogQG5vZGU6IGxvY2FsIG51bWFfbm9kZVxuICAqXG4tICogUmV0dXJuOiBvbmxpbmUgQ1BVIGFjY29yZGluZyB0byBhIG51bWEgYXdhcmUgcG9saWN5OyBsb2NhbCBjcHVzIGFyZSByZXR1cm5lZFxuLSAqIGZpcnN0LCBmb2xsb3dlZCBieSBub24tbG9jYWwgb25lcywgdGhlbiBpdCB3cmFwcyBhcm91bmQuXG4rICogUmV0dXJuOiBvbmxpbmUgQ1BVIGFjY29yZGluZyB0byB0aGUgZGVmYXVsdCBJUlEgYWZmaW5pdHkgYW5kIGEgbnVtYSBhd2FyZVxuKyAqIHBvbGljeTsgbG9jYWwgY3B1cyBhcmUgcmV0dXJuZWQgZmlyc3QsIGZvbGxvd2VkIGJ5IG5vbi1sb2NhbCBvbmVzLCB0aGVuIGl0XG4rICogd3JhcHMgYXJvdW5kLlxuICAqXG4gICogRm9yIHRob3NlIHdobyB3YW50cyB0byBlbnVtZXJhdGUgYWxsIENQVXMgYmFzZWQgb24gdGhlaXIgTlVNQSBkaXN0YW5jZXMsXG4gICogaS5lLiBjYWxsIHRoaXMgZnVuY3Rpb24gaW4gYSBsb29wLCBsaWtlOlxuQEAgLTExMCw5ICsxMTIsOSBAQCB1bnNpZ25lZCBpbnQgY3B1bWFza19sb2NhbF9zcHJlYWQodW5zaWduZWQgaW50IGksIGludCBub2RlKVxuIFx0dW5zaWduZWQgaW50IGNwdTtcbiBcbiBcdC8qIFdyYXA6IHdlIGFsd2F5cyB3YW50IGEgY3B1LiAqL1xuLVx0aSAlPSBudW1fb25saW5lX2NwdXMoKTtcbitcdGkgJT0gY3B1bWFza193ZWlnaHQoaXJxX2RlZmF1bHRfYWZmaW5pdHkpO1xuIFxuLVx0Y3B1ID0gc2NoZWRfbnVtYV9maW5kX250aF9jcHUoY3B1X29ubGluZV9tYXNrLCBpLCBub2RlKTtcbitcdGNwdSA9IHNjaGVkX251bWFfZmluZF9udGhfY3B1KGlycV9kZWZhdWx0X2FmZmluaXR5LCBpLCBub2RlKTtcbiBcbiBcdFdBUk5fT04oY3B1IFx1MDAzZT0gbnJfY3B1X2lkcyk7XG4gXHRyZXR1cm4gY3B1O1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTQ6MDguODQ5MzYxMzFaIiwiU2VxIjo3NSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIyNDU2ODU5MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgS01TQU4gUmVsZXZhbmNlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSd2ZSBnb3QgYSBwYXRjaCB0b3VjaGluZyBgc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaWAsIGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCwgYW5kIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBsb29rIGZvciBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGVzcGVjaWFsbHkgc2luY2Ugd2UncmUgcGxheWluZyB3aXRoIENQVSBtYXNrcyBhbmQgSVJRIGFmZmluaXR5LCB3aGljaCBhcmUgc2Vuc2l0aXZlIGFyZWFzLlxuXG5GaXJzdCwgYHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2lgOiBJdCdzIGFsbG9jYXRpbmcgYW4gYGFmZmluaXR5YCBjcHVtYXNrIHVzaW5nIGB6YWxsb2NfY3B1bWFza192YXJgLCB3aGljaCBpcyBnb29kOyB0aGF0IHplcm9lcyB0aGUgbWVtb3J5LiBUaGVuLCB3ZSB1c2UgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYCB0byBwaWNrIGEgQ1BVIGFuZCBzZXQgaXQgaW4gdGhlIG1hc2suIFdlJ3JlIGNhbGxpbmcgYGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnRgIHdpdGggdGhpcyBtYXNrIGFuZCB0aGVuIGZyZWVpbmcgaXQuIFNvIGZhciwgc28gZ29vZC4gVGhlIGNyaXRpY2FsIHRoaW5nIGhlcmUgaXMgdGhhdCB0aGUgYWxsb2NhdGlvbiBpcyBpbml0aWFsaXplZCBhbmQgd2UncmUgKmV4cGxpY2l0bHkqIGNsZWFyaW5nIGl0LlxuXG5OZXh0LCBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAuIFRoaXMgZnVuY3Rpb24ncyBjaGFuZ2VzIHNlZW0gcHJpbWFyaWx5IGFib3V0IGNvbnRyb2wgZmxvdywgY2hlY2tpbmcgYGlycWRfYWZmaW5pdHlfd2FzX3NldChpcnFfZGF0YSlgLiBJZiBpdCdzIGFscmVhZHkgc2V0LCBgc2V0YWZmaW5pdHlgIGJlY29tZXMgZmFsc2UuIFRoaXMgZG9lc24ndCBpbmhlcmVudGx5IHNjcmVhbSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy5cblxuRmluYWxseSwgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYC4gSGVyZSdzIHdoZXJlIHdlIHNlZSB0aGUgbW9zdCBzaWduaWZpY2FudCBjaGFuZ2Ug4oCTIHVzaW5nIGBpcnFfZGVmYXVsdF9hZmZpbml0eWAgaW5zdGVhZCBvZiBgY3B1X29ubGluZV9tYXNrYCBhbmQgYG51bV9vbmxpbmVfY3B1cygpYC4gVGhpcyBpcyBpbXBvcnRhbnQsIGFzIGl0IGNvdWxkIGNoYW5nZSB0aGUgcG9zc2libGUgQ1BVIHNlbGVjdGlvbi4gQnV0IGFnYWluLCB0aGlzIGlzIHByaW1hcmlseSBjb250cm9sIGZsb3cg4oCTIHRoZSBjb2RlIGlzIHN0aWxsICpzZXR0aW5nKiBhIENQVSBpbiB0aGUgbWFzay5cblxuTGV0J3MgZG8gYSBxdWljayBjaGVja2xpc3QuIEFyZSB0aGVyZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHM/IE5vLCBgYWZmaW5pdHlgIGlzIHphbGxvYydkIGFuZCBjbGVhcmVkLCBhbmQgd2UncmUgdXNpbmcgdGhlIG1hc2sgZm9yIHRoZSBpbnRlbmRlZCBwdXJwb3NlLiBJbmZvIGxlYWtzIHRvIHVzZXIgc3BhY2U/IE5vcGUsIG5vdGhpbmcncyBiZWluZyBjb3BpZWQgb3V0IHRoYXQncyB1bmluaXRpYWxpemVkLiBDb21wbGV4IHN0cnVjdHVyZXMgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcyBiZWluZyBwYXNzZWQgYXJvdW5kPyBObywganVzdCBhIGNwdW1hc2suXG5cbkVzc2VudGlhbGx5LCB0aGlzIGlzIGFsbCBhYm91dCBJUlEgYWZmaW5pdHksIGNvbnRyb2xsaW5nIHdoaWNoIENQVXMgaGFuZGxlIGludGVycnVwdHMsIGFuZCB0aGUgbG9naWMgYXJvdW5kIGhvdyBDUFVzIGFyZSBzZWxlY3RlZC4gSWYgdGhlcmUncyBhIGJ1ZyBoZXJlLCBpdCdzIGxpa2VseSBhIGxvZ2ljIGVycm9yLCBvciBtYXliZSwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MuIFRoZSBvbmx5IHBvdGVudGlhbCBwaXRmYWxsIEkgc2VlIGlzIHRoYXQgZGl2aXNpb24gYnkgemVybyBpbiBgY3B1bWFza19sb2NhbF9zcHJlYWRgIOKAkyAgc3BlY2lmaWNhbGx5LCBpZiBgY3B1bWFza193ZWlnaHQoaXJxX2RlZmF1bHRfYWZmaW5pdHkpYCByZXR1cm5zIDAuIFRoYXTigJlzIGEgZGl2aWRlLWJ5LXplcm8sIHdoaWNoIGlzIGJhZCwgYnV0IGl0IHdvdWxkIGJlIGNhdWdodCBieSBzdGFuZGFyZCB0ZXN0aW5nLCBvciBwb3NzaWJseSBLQVNBTi9VQlNBTiDigJMgaXQncyBhIGNyYXNoLCBub3QgYSBtZW1vcnkgbGVhay5cblxuU28sIHN1bW1pbmcgaXQgdXAsIGdpdmVuIHRoZSBmb2N1cyBvbiBDUFUgbWFza3MgYW5kIGV4cGxpY2l0IGluaXRpYWxpemF0aW9uLCBteSBleHBlcnQganVkZ21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoIGRvZXNuJ3Qgd2FycmFudCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZy4gSXQncyBub3QgaW50cm9kdWNpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MsIGFuZCBhbnkgaXNzdWVzIHdvdWxkIGxpa2VseSBiZSBkZXRlY3RhYmxlIHdpdGggb3RoZXIgZnV6emVycy4gVGhlIGN1cnJlbnQgcGF0Y2ggYXBwZWFycyBzb3VuZCBpbiB0aGUgY29udGV4dCBvZiBtZW1vcnkgaW5pdGlhbGl6YXRpb24gYW5kIHVzYWdlLiBXZSBjYW4gcHJvYmFibHkgZ3JlZW4tbGlnaHQgdGhpcyB3aXRob3V0IGEgc3BlY2lhbCBLTVNBTiBzZXNzaW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTM4LCJPdXRwdXRUb2tlbnMiOjIxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjU0OjIxLjA5NTA1MDU3WiIsIlNlcSI6NzYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBJUlEgYWZmaW5pdHkgaGFuZGxpbmcgaW4gdGhlIHN0bW1hYyBkcml2ZXIgYW5kIGNvcmUgSVJRL2NwdW1hc2sgY29kZS4gSXQgYWxsb2NhdGVzIGEgY3B1bWFzayB1c2luZyBgemFsbG9jX2NwdW1hc2tfdmFyYCAod2hpY2ggemVyb2VzIHRoZSBtZW1vcnkpIGFuZCBleHBsaWNpdGx5IGNsZWFycyBpdCB3aXRoIGBjcHVtYXNrX2NsZWFyYCBiZWZvcmUgdXNlLiBUaGUgY2hhbmdlcyB0byBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgYW5kIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAgaW52b2x2ZSBjb250cm9sIGZsb3cgYW5kIENQVSBtYXNrIGxvZ2ljIChlLmcuLCB1c2luZyBgaXJxX2RlZmF1bHRfYWZmaW5pdHlgIGluc3RlYWQgb2YgYG51bV9vbmxpbmVfY3B1cygpYCkuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGFuZCBubyBpbmZvLWxlYWtzIGludHJvZHVjZWQuIEFueSBwb3RlbnRpYWwgaXNzdWVzIChzdWNoIGFzIGEgZGl2aXNpb24gYnkgemVybyBpZiBgY3B1bWFza193ZWlnaHRgIHJldHVybnMgMCkgd291bGQgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCB0ZXN0aW5nIG9yIEtBU0FOL1VCU0FOLiBUaHVzLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBJUlEgYWZmaW5pdHkgaGFuZGxpbmcgaW4gdGhlIHN0bW1hYyBkcml2ZXIgYW5kIGNvcmUgSVJRL2NwdW1hc2sgY29kZS4gSXQgYWxsb2NhdGVzIGEgY3B1bWFzayB1c2luZyBgemFsbG9jX2NwdW1hc2tfdmFyYCAod2hpY2ggemVyb2VzIHRoZSBtZW1vcnkpIGFuZCBleHBsaWNpdGx5IGNsZWFycyBpdCB3aXRoIGBjcHVtYXNrX2NsZWFyYCBiZWZvcmUgdXNlLiBUaGUgY2hhbmdlcyB0byBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgYW5kIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAgaW52b2x2ZSBjb250cm9sIGZsb3cgYW5kIENQVSBtYXNrIGxvZ2ljIChlLmcuLCB1c2luZyBgaXJxX2RlZmF1bHRfYWZmaW5pdHlgIGluc3RlYWQgb2YgYG51bV9vbmxpbmVfY3B1cygpYCkuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGFuZCBubyBpbmZvLWxlYWtzIGludHJvZHVjZWQuIEFueSBwb3RlbnRpYWwgaXNzdWVzIChzdWNoIGFzIGEgZGl2aXNpb24gYnkgemVybyBpZiBgY3B1bWFza193ZWlnaHRgIHJldHVybnMgMCkgd291bGQgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCB0ZXN0aW5nIG9yIEtBU0FOL1VCU0FOLiBUaHVzLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8fdp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-19 14:47:22 +0000 UTC FinishedAt: 2026-08-19 14:54:22 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI" ], "series_id": "b49ab6ff-eb00-4be8-9fa2-8f5fd0594742" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__irq_apply_affinity_hint", "cpumask_local_spread", "stmmac_reinit_queues", "stmmac_xdp_open" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjQ5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19faXJxX2FwcGx5X2FmZmluaXR5X2hpbnQmIzM0OywKICAgICYjMzQ7Y3B1bWFza19sb2NhbF9zcHJlYWQmIzM0OywKICAgICYjMzQ7c3RtbWFjX3JlaW5pdF9xdWV1ZXMmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9vcGVuJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgSVJRIGFmZmluaXR5IGhhbmRsaW5nIGluIHRoZSBzdG1tYWMgZHJpdmVyIGFuZCBjb3JlIElSUS9jcHVtYXNrIGNvZGUuIEl0IGFsbG9jYXRlcyBhIGNwdW1hc2sgdXNpbmcgYHphbGxvY19jcHVtYXNrX3ZhcmAgKHdoaWNoIHplcm9lcyB0aGUgbWVtb3J5KSBhbmQgZXhwbGljaXRseSBjbGVhcnMgaXQgd2l0aCBgY3B1bWFza19jbGVhcmAgYmVmb3JlIHVzZS4gVGhlIGNoYW5nZXMgdG8gYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGFuZCBgY3B1bWFza19sb2NhbF9zcHJlYWRgIGludm9sdmUgY29udHJvbCBmbG93IGFuZCBDUFUgbWFzayBsb2dpYyAoZS5nLiwgdXNpbmcgYGlycV9kZWZhdWx0X2FmZmluaXR5YCBpbnN0ZWFkIG9mIGBudW1fb25saW5lX2NwdXMoKWApLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBhbmQgbm8gaW5mby1sZWFrcyBpbnRyb2R1Y2VkLiBBbnkgcG90ZW50aWFsIGlzc3VlcyAoc3VjaCBhcyBhIGRpdmlzaW9uIGJ5IHplcm8gaWYgYGNwdW1hc2tfd2VpZ2h0YCByZXR1cm5zIDApIHdvdWxkIGJlIGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgdGVzdGluZyBvciBLQVNBTi9VQlNBTi4gVGh1cywgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUga2VybmVsIGxvZ2ljIGZvciBJUlEgYWZmaW5pdHkgaGludHMgKF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnQpIGFuZCBjcHVtYXNrIHNwcmVhZGluZyAoY3B1bWFza19sb2NhbF9zcHJlYWQpLCB3aGljaCBhcmUgdXNlZCBieSB2YXJpb3VzIGRyaXZlcnMuIEl0IGFsc28gbW9kaWZpZXMgdGhlIHN0bW1hYyBkcml2ZXIgdG8gdXNlIHRoZXNlIGZ1bmN0aW9ucyBjb3JyZWN0bHkuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjQ5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzA3ODJjZGNkMGJkYWQ1NDdlN2M4MmEzMTNkOGM0OGJmMTYwMzhhZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDE5IDE0OjQ5OjI3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCBhNzFmMGRmMjYzNzg1Li45NDljZWQ3ZTQ2ZDI4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTM4MjYsMTEgJiM0MzszODI2LDE2IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcdHN0cnVjdCBzdG1tYWNfbXNpICptc2kgPSBwcml2LVx1MDAzZW1zaTtcbiBcdGVudW0gcmVxdWVzdF9pcnFfZXJyIGlycV9lcnI7XG4mIzQzO1x0Y3B1bWFza192YXJfdCBhZmZpbml0eTtcbiBcdGludCBpcnFfaWR4ID0gMDtcbiBcdGNoYXIgKmludF9uYW1lO1xuJiM0MztcdGludCBub2RlO1xuIFx0aW50IHJldDtcbiBcdGludCBpO1xuIFxuJiM0MztcdGlmICghemFsbG9jX2NwdW1hc2tfdmFyKFx1MDAyNmFmZmluaXR5LCBHRlBfS0VSTkVMKSlcbiYjNDM7XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcbiBcdC8qIEZvciBjb21tb24gaW50ZXJydXB0ICovXG4gXHRpbnRfbmFtZSA9IG1zaS1cdTAwM2VpbnRfbmFtZV9tYWM7XG4gXHRzcHJpbnRmKGludF9uYW1lLCBcJiMzNDslczolc1wmIzM0OywgZGV2LVx1MDAzZW5hbWUsIFwmIzM0O21hY1wmIzM0Oyk7XG5AQCAtMzkxNiw2ICYjNDM7MzkyMSw3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0fVxuIFxuIFx0LyogUmVxdWVzdCBSeCBNU0kgaXJxICovXG4mIzQzO1x0bm9kZSA9IGRldl90b19ub2RlKFx1MDAyNnByaXYtXHUwMDNlZGV2LVx1MDAzZWRldik7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcnhfcXVldWVzX3RvX3VzZTsgaSYjNDM7JiM0MzspIHtcbiBcdFx0aWYgKGkgXHUwMDNlPSBNVExfTUFYX1JYX1FVRVVFUylcbiBcdFx0XHRicmVhaztcbkBAIC0zOTM1LDggJiM0MzszOTQxLDEwIEBAIHN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0XHRcdGlycV9pZHggPSBpO1xuIFx0XHRcdGdvdG8gaXJxX2Vycm9yO1xuIFx0XHR9XG4tXHRcdGlycV9zZXRfYWZmaW5pdHlfaGludChtc2ktXHUwMDNlcnhfaXJxW2ldLFxuLVx0XHRcdFx0ICAgICAgY3B1bWFza19vZihpICUgbnVtX29ubGluZV9jcHVzKCkpKTtcbiYjNDM7XG4mIzQzO1x0XHRjcHVtYXNrX2NsZWFyKGFmZmluaXR5KTtcbiYjNDM7XHRcdGNwdW1hc2tfc2V0X2NwdShjcHVtYXNrX2xvY2FsX3NwcmVhZChpLCBub2RlKSwgYWZmaW5pdHkpO1xuJiM0MztcdFx0aXJxX3NldF9hZmZpbml0eV9hbmRfaGludChtc2ktXHUwMDNlcnhfaXJxW2ldLCBhZmZpbml0eSk7XG4gXHR9XG4gXG4gXHQvKiBSZXF1ZXN0IFR4IE1TSSBpcnEgKi9cbkBAIC0zOTU5LDEzICYjNDM7Mzk2NywxOCBAQCBzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0XHRpcnFfaWR4ID0gaTtcbiBcdFx0XHRnb3RvIGlycV9lcnJvcjtcbiBcdFx0fVxuLVx0XHRpcnFfc2V0X2FmZmluaXR5X2hpbnQobXNpLVx1MDAzZXR4X2lycVtpXSxcbi1cdFx0XHRcdCAgICAgIGNwdW1hc2tfb2YoaSAlIG51bV9vbmxpbmVfY3B1cygpKSk7XG4mIzQzO1xuJiM0MztcdFx0Y3B1bWFza19jbGVhcihhZmZpbml0eSk7XG4mIzQzO1x0XHRjcHVtYXNrX3NldF9jcHUoY3B1bWFza19sb2NhbF9zcHJlYWQoaSwgbm9kZSksIGFmZmluaXR5KTtcbiYjNDM7XHRcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQobXNpLVx1MDAzZXR4X2lycVtpXSwgYWZmaW5pdHkpO1xuIFx0fVxuIFxuJiM0MztcdGZyZWVfY3B1bWFza192YXIoYWZmaW5pdHkpO1xuJiM0MztcbiBcdHJldHVybiAwO1xuIFxuIGlycV9lcnJvcjpcbiYjNDM7XHRmcmVlX2NwdW1hc2tfdmFyKGFmZmluaXR5KTtcbiBcdHN0bW1hY19mcmVlX2lycShkZXYsIGlycV9lcnIsIGlycV9pZHgpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5kaWZmIC0tZ2l0IGEva2VybmVsL2lycS9tYW5hZ2UuYyBiL2tlcm5lbC9pcnEvbWFuYWdlLmNcbmluZGV4IDdlYjA3ZTNiZGI0YzIuLjM5MzdiYTI0ZGY2ZDYgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvaXJxL21hbmFnZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvaXJxL21hbmFnZS5jXG5AQCAtNTAzLDExICYjNDM7NTAzLDIxIEBAIEVYUE9SVF9TWU1CT0xfR1BMKGlycV9mb3JjZV9hZmZpbml0eSk7XG4gXG4gaW50IF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnQodW5zaWduZWQgaW50IGlycSwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKm0sIGJvb2wgc2V0YWZmaW5pdHkpXG4ge1xuJiM0MztcdHN0cnVjdCBpcnFfZGF0YSAqaXJxX2RhdGE7XG4gXHRpbnQgcmV0ID0gLUVJTlZBTDtcbiBcbiBcdHNjb3BlZF9pcnFkZXNjX2dldF9hbmRfbG9jayhpcnEsIElSUV9HRVRfREVTQ19DSEVDS19HTE9CQUwpIHtcbiBcdFx0c2NvcGVkX2lycWRlc2MtXHUwMDNlYWZmaW5pdHlfaGludCA9IG07XG4mIzQzO1x0XHRpcnFfZGF0YSA9IGlycV9kZXNjX2dldF9pcnFfZGF0YShzY29wZWRfaXJxZGVzYyk7XG4gXHRcdHJldCA9IDA7XG4mIzQzO1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIERvIG5vdCBvdmVyd3JpdGUgdGhlIGFmZmluaXR5IGluIGNhc2UgYW4gYWZmaW5pdHkgZm9yIHRoaXNcbiYjNDM7XHRcdCAqIElSUSBoYXMgYWxyZWFkeSBiZWVuIHJlcXVlc3RlZCwgZS5nLiBieSB3cml0aW5nIHRvXG4mIzQzO1x0XHQgKiAvcHJvYy9pcnEvXHUwMDNjblx1MDAzZS9zbXBfYWZmaW5pdHlcbiYjNDM7XHRcdCAqL1xuJiM0MztcdFx0aWYgKGlycWRfYWZmaW5pdHlfd2FzX3NldChpcnFfZGF0YSkpXG4mIzQzO1x0XHRcdHNldGFmZmluaXR5ID0gZmFsc2U7XG4gXHR9XG4gXG4gXHRpZiAoIXJldCBcdTAwMjZcdTAwMjYgbSBcdTAwMjZcdTAwMjYgc2V0YWZmaW5pdHkpXG5kaWZmIC0tZ2l0IGEvbGliL2NwdW1hc2suYyBiL2xpYi9jcHVtYXNrLmNcbmluZGV4IDVhZGI5ODc0ZmJkMGYuLjczZTdiNjBhOTIwMTEgMTAwNjQ0XG4tLS0gYS9saWIvY3B1bWFzay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9saWIvY3B1bWFzay5jXG5AQCAtNiw2ICYjNDM7Niw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXhwb3J0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tZW1ibG9jay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbnVtYS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2ludGVycnVwdC5oXHUwMDNlXG4gXG4gLyogVGhlc2UgYXJlIG5vdCBpbmxpbmUgYmVjYXVzZSBvZiBoZWFkZXIgdGFuZ2xlcy4gKi9cbiAjaWZkZWYgQ09ORklHX0NQVU1BU0tfT0ZGU1RBQ0tcbkBAIC04MSw4ICYjNDM7ODIsOSBAQCB2b2lkIF9faW5pdCBmcmVlX2Jvb3RtZW1fY3B1bWFza192YXIoY3B1bWFza192YXJfdCBtYXNrKVxuICAqIEBpOiBpbmRleCBudW1iZXJcbiAgKiBAbm9kZTogbG9jYWwgbnVtYV9ub2RlXG4gICpcbi0gKiBSZXR1cm46IG9ubGluZSBDUFUgYWNjb3JkaW5nIHRvIGEgbnVtYSBhd2FyZSBwb2xpY3k7IGxvY2FsIGNwdXMgYXJlIHJldHVybmVkXG4tICogZmlyc3QsIGZvbGxvd2VkIGJ5IG5vbi1sb2NhbCBvbmVzLCB0aGVuIGl0IHdyYXBzIGFyb3VuZC5cbiYjNDM7ICogUmV0dXJuOiBvbmxpbmUgQ1BVIGFjY29yZGluZyB0byB0aGUgZGVmYXVsdCBJUlEgYWZmaW5pdHkgYW5kIGEgbnVtYSBhd2FyZVxuJiM0MzsgKiBwb2xpY3k7IGxvY2FsIGNwdXMgYXJlIHJldHVybmVkIGZpcnN0LCBmb2xsb3dlZCBieSBub24tbG9jYWwgb25lcywgdGhlbiBpdFxuJiM0MzsgKiB3cmFwcyBhcm91bmQuXG4gICpcbiAgKiBGb3IgdGhvc2Ugd2hvIHdhbnRzIHRvIGVudW1lcmF0ZSBhbGwgQ1BVcyBiYXNlZCBvbiB0aGVpciBOVU1BIGRpc3RhbmNlcyxcbiAgKiBpLmUuIGNhbGwgdGhpcyBmdW5jdGlvbiBpbiBhIGxvb3AsIGxpa2U6XG5AQCAtMTEwLDkgJiM0MzsxMTIsOSBAQCB1bnNpZ25lZCBpbnQgY3B1bWFza19sb2NhbF9zcHJlYWQodW5zaWduZWQgaW50IGksIGludCBub2RlKVxuIFx0dW5zaWduZWQgaW50IGNwdTtcbiBcbiBcdC8qIFdyYXA6IHdlIGFsd2F5cyB3YW50IGEgY3B1LiAqL1xuLVx0aSAlPSBudW1fb25saW5lX2NwdXMoKTtcbiYjNDM7XHRpICU9IGNwdW1hc2tfd2VpZ2h0KGlycV9kZWZhdWx0X2FmZmluaXR5KTtcbiBcbi1cdGNwdSA9IHNjaGVkX251bWFfZmluZF9udGhfY3B1KGNwdV9vbmxpbmVfbWFzaywgaSwgbm9kZSk7XG4mIzQzO1x0Y3B1ID0gc2NoZWRfbnVtYV9maW5kX250aF9jcHUoaXJxX2RlZmF1bHRfYWZmaW5pdHksIGksIG5vZGUpO1xuIFxuIFx0V0FSTl9PTihjcHUgXHUwMDNlPSBucl9jcHVfaWRzKTtcbiBcdHJldHVybiBjcHU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NDk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19faXJxX2FwcGx5X2FmZmluaXR5X2hpbnQmIzM0OywKICAgICYjMzQ7Y3B1bWFza19sb2NhbF9zcHJlYWQmIzM0OywKICAgICYjMzQ7c3RtbWFjX3JlaW5pdF9xdWV1ZXMmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9vcGVuJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUga2VybmVsIGxvZ2ljIGZvciBJUlEgYWZmaW5pdHkgaGludHMgKF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnQpIGFuZCBjcHVtYXNrIHNwcmVhZGluZyAoY3B1bWFza19sb2NhbF9zcHJlYWQpLCB3aGljaCBhcmUgdXNlZCBieSB2YXJpb3VzIGRyaXZlcnMuIEl0IGFsc28gbW9kaWZpZXMgdGhlIHN0bW1hYyBkcml2ZXIgdG8gdXNlIHRoZXNlIGZ1bmN0aW9ucyBjb3JyZWN0bHkuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzA3ODJjZGNkMGJkYWQ1NDdlN2M4MmEzMTNkOGM0OGJmMTYwMzhhZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDE5IDE0OjQ5OjI3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKaW5kZXggYTcxZjBkZjI2Mzc4NS4uOTQ5Y2VkN2U0NmQyOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCkBAIC0zODI2LDExICYjNDM7MzgyNiwxNiBAQCBzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2koc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAlzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpOwogCXN0cnVjdCBzdG1tYWNfbXNpICptc2kgPSBwcml2LSZndDttc2k7CiAJZW51bSByZXF1ZXN0X2lycV9lcnIgaXJxX2VycjsKJiM0MzsJY3B1bWFza192YXJfdCBhZmZpbml0eTsKIAlpbnQgaXJxX2lkeCA9IDA7CiAJY2hhciAqaW50X25hbWU7CiYjNDM7CWludCBub2RlOwogCWludCByZXQ7CiAJaW50IGk7CiAKJiM0MzsJaWYgKCF6YWxsb2NfY3B1bWFza192YXIoJmFtcDthZmZpbml0eSwgR0ZQX0tFUk5FTCkpCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKJiM0MzsKIAkvKiBGb3IgY29tbW9uIGludGVycnVwdCAqLwogCWludF9uYW1lID0gbXNpLSZndDtpbnRfbmFtZV9tYWM7CiAJc3ByaW50ZihpbnRfbmFtZSwgJiMzNDslczolcyYjMzQ7LCBkZXYtJmd0O25hbWUsICYjMzQ7bWFjJiMzNDspOwpAQCAtMzkxNiw2ICYjNDM7MzkyMSw3IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCX0KIAogCS8qIFJlcXVlc3QgUnggTVNJIGlycSAqLwomIzQzOwlub2RlID0gZGV2X3RvX25vZGUoJmFtcDtwcml2LSZndDtkZXYtJmd0O2Rldik7CiAJZm9yIChpID0gMDsgaSAmbHQ7IHByaXYtJmd0O3BsYXQtJmd0O3J4X3F1ZXVlc190b191c2U7IGkmIzQzOyYjNDM7KSB7CiAJCWlmIChpICZndDs9IE1UTF9NQVhfUlhfUVVFVUVTKQogCQkJYnJlYWs7CkBAIC0zOTM1LDggJiM0MzszOTQxLDEwIEBAIHN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCQkJaXJxX2lkeCA9IGk7CiAJCQlnb3RvIGlycV9lcnJvcjsKIAkJfQotCQlpcnFfc2V0X2FmZmluaXR5X2hpbnQobXNpLSZndDtyeF9pcnFbaV0sCi0JCQkJICAgICAgY3B1bWFza19vZihpICUgbnVtX29ubGluZV9jcHVzKCkpKTsKJiM0MzsKJiM0MzsJCWNwdW1hc2tfY2xlYXIoYWZmaW5pdHkpOwomIzQzOwkJY3B1bWFza19zZXRfY3B1KGNwdW1hc2tfbG9jYWxfc3ByZWFkKGksIG5vZGUpLCBhZmZpbml0eSk7CiYjNDM7CQlpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KG1zaS0mZ3Q7cnhfaXJxW2ldLCBhZmZpbml0eSk7CiAJfQogCiAJLyogUmVxdWVzdCBUeCBNU0kgaXJxICovCkBAIC0zOTU5LDEzICYjNDM7Mzk2NywxOCBAQCBzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2koc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAkJCWlycV9pZHggPSBpOwogCQkJZ290byBpcnFfZXJyb3I7CiAJCX0KLQkJaXJxX3NldF9hZmZpbml0eV9oaW50KG1zaS0mZ3Q7dHhfaXJxW2ldLAotCQkJCSAgICAgIGNwdW1hc2tfb2YoaSAlIG51bV9vbmxpbmVfY3B1cygpKSk7CiYjNDM7CiYjNDM7CQljcHVtYXNrX2NsZWFyKGFmZmluaXR5KTsKJiM0MzsJCWNwdW1hc2tfc2V0X2NwdShjcHVtYXNrX2xvY2FsX3NwcmVhZChpLCBub2RlKSwgYWZmaW5pdHkpOwomIzQzOwkJaXJxX3NldF9hZmZpbml0eV9hbmRfaGludChtc2ktJmd0O3R4X2lycVtpXSwgYWZmaW5pdHkpOwogCX0KIAomIzQzOwlmcmVlX2NwdW1hc2tfdmFyKGFmZmluaXR5KTsKJiM0MzsKIAlyZXR1cm4gMDsKIAogaXJxX2Vycm9yOgomIzQzOwlmcmVlX2NwdW1hc2tfdmFyKGFmZmluaXR5KTsKIAlzdG1tYWNfZnJlZV9pcnEoZGV2LCBpcnFfZXJyLCBpcnFfaWR4KTsKIAlyZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEva2VybmVsL2lycS9tYW5hZ2UuYyBiL2tlcm5lbC9pcnEvbWFuYWdlLmMKaW5kZXggN2ViMDdlM2JkYjRjMi4uMzkzN2JhMjRkZjZkNiAxMDA2NDQKLS0tIGEva2VybmVsL2lycS9tYW5hZ2UuYwomIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvaXJxL21hbmFnZS5jCkBAIC01MDMsMTEgJiM0Mzs1MDMsMjEgQEAgRVhQT1JUX1NZTUJPTF9HUEwoaXJxX2ZvcmNlX2FmZmluaXR5KTsKIAogaW50IF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnQodW5zaWduZWQgaW50IGlycSwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKm0sIGJvb2wgc2V0YWZmaW5pdHkpCiB7CiYjNDM7CXN0cnVjdCBpcnFfZGF0YSAqaXJxX2RhdGE7CiAJaW50IHJldCA9IC1FSU5WQUw7CiAKIAlzY29wZWRfaXJxZGVzY19nZXRfYW5kX2xvY2soaXJxLCBJUlFfR0VUX0RFU0NfQ0hFQ0tfR0xPQkFMKSB7CiAJCXNjb3BlZF9pcnFkZXNjLSZndDthZmZpbml0eV9oaW50ID0gbTsKJiM0MzsJCWlycV9kYXRhID0gaXJxX2Rlc2NfZ2V0X2lycV9kYXRhKHNjb3BlZF9pcnFkZXNjKTsKIAkJcmV0ID0gMDsKJiM0MzsKJiM0MzsJCS8qCiYjNDM7CQkgKiBEbyBub3Qgb3ZlcndyaXRlIHRoZSBhZmZpbml0eSBpbiBjYXNlIGFuIGFmZmluaXR5IGZvciB0aGlzCiYjNDM7CQkgKiBJUlEgaGFzIGFscmVhZHkgYmVlbiByZXF1ZXN0ZWQsIGUuZy4gYnkgd3JpdGluZyB0bwomIzQzOwkJICogL3Byb2MvaXJxLyZsdDtuJmd0Oy9zbXBfYWZmaW5pdHkKJiM0MzsJCSAqLwomIzQzOwkJaWYgKGlycWRfYWZmaW5pdHlfd2FzX3NldChpcnFfZGF0YSkpCiYjNDM7CQkJc2V0YWZmaW5pdHkgPSBmYWxzZTsKIAl9CiAKIAlpZiAoIXJldCAmYW1wOyZhbXA7IG0gJmFtcDsmYW1wOyBzZXRhZmZpbml0eSkKZGlmZiAtLWdpdCBhL2xpYi9jcHVtYXNrLmMgYi9saWIvY3B1bWFzay5jCmluZGV4IDVhZGI5ODc0ZmJkMGYuLjczZTdiNjBhOTIwMTEgMTAwNjQ0Ci0tLSBhL2xpYi9jcHVtYXNrLmMKJiM0MzsmIzQzOyYjNDM7IGIvbGliL2NwdW1hc2suYwpAQCAtNiw2ICYjNDM7Niw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvZXhwb3J0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbWVtYmxvY2suaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9udW1hLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2ludGVycnVwdC5oJmd0OwogCiAvKiBUaGVzZSBhcmUgbm90IGlubGluZSBiZWNhdXNlIG9mIGhlYWRlciB0YW5nbGVzLiAqLwogI2lmZGVmIENPTkZJR19DUFVNQVNLX09GRlNUQUNLCkBAIC04MSw4ICYjNDM7ODIsOSBAQCB2b2lkIF9faW5pdCBmcmVlX2Jvb3RtZW1fY3B1bWFza192YXIoY3B1bWFza192YXJfdCBtYXNrKQogICogQGk6IGluZGV4IG51bWJlcgogICogQG5vZGU6IGxvY2FsIG51bWFfbm9kZQogICoKLSAqIFJldHVybjogb25saW5lIENQVSBhY2NvcmRpbmcgdG8gYSBudW1hIGF3YXJlIHBvbGljeTsgbG9jYWwgY3B1cyBhcmUgcmV0dXJuZWQKLSAqIGZpcnN0LCBmb2xsb3dlZCBieSBub24tbG9jYWwgb25lcywgdGhlbiBpdCB3cmFwcyBhcm91bmQuCiYjNDM7ICogUmV0dXJuOiBvbmxpbmUgQ1BVIGFjY29yZGluZyB0byB0aGUgZGVmYXVsdCBJUlEgYWZmaW5pdHkgYW5kIGEgbnVtYSBhd2FyZQomIzQzOyAqIHBvbGljeTsgbG9jYWwgY3B1cyBhcmUgcmV0dXJuZWQgZmlyc3QsIGZvbGxvd2VkIGJ5IG5vbi1sb2NhbCBvbmVzLCB0aGVuIGl0CiYjNDM7ICogd3JhcHMgYXJvdW5kLgogICoKICAqIEZvciB0aG9zZSB3aG8gd2FudHMgdG8gZW51bWVyYXRlIGFsbCBDUFVzIGJhc2VkIG9uIHRoZWlyIE5VTUEgZGlzdGFuY2VzLAogICogaS5lLiBjYWxsIHRoaXMgZnVuY3Rpb24gaW4gYSBsb29wLCBsaWtlOgpAQCAtMTEwLDkgJiM0MzsxMTIsOSBAQCB1bnNpZ25lZCBpbnQgY3B1bWFza19sb2NhbF9zcHJlYWQodW5zaWduZWQgaW50IGksIGludCBub2RlKQogCXVuc2lnbmVkIGludCBjcHU7CiAKIAkvKiBXcmFwOiB3ZSBhbHdheXMgd2FudCBhIGNwdS4gKi8KLQlpICU9IG51bV9vbmxpbmVfY3B1cygpOwomIzQzOwlpICU9IGNwdW1hc2tfd2VpZ2h0KGlycV9kZWZhdWx0X2FmZmluaXR5KTsKIAotCWNwdSA9IHNjaGVkX251bWFfZmluZF9udGhfY3B1KGNwdV9vbmxpbmVfbWFzaywgaSwgbm9kZSk7CiYjNDM7CWNwdSA9IHNjaGVkX251bWFfZmluZF9udGhfY3B1KGlycV9kZWZhdWx0X2FmZmluaXR5LCBpLCBub2RlKTsKIAogCVdBUk5fT04oY3B1ICZndDs9IG5yX2NwdV9pZHMpOwogCXJldHVybiBjcHU7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NDEKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA2NTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IElSUSBBZmZpbml0eSBhbmQgU3ByZWFkaW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFdlIGhhdmUgYSBwYXRjaCB0aGF0JiMzOTtzIGRlZmluaXRlbHkgaW50cm9kdWNpbmcgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwsIGFuZCB3ZSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3Qgd2F5IHRvIGZ1enogdGhlbS4gVGhlIGNoYW5nZXMgYXJlIHNwcmVhZCBhY3Jvc3MgYSBmZXcgYXJlYXMsIGFuZCB0aGF0IHJlcXVpcmVzIHVzIHRvIGJlIG1pbmRmdWwgb2Ygd2hhdCB3ZSYjMzk7cmUgbG9va2luZyBhdC4KCkZpcnN0LCB0aGVyZSBhcmUgc29tZSBwcmV0dHkgbG93LWxldmVsIGNoYW5nZXMgdG8gYGlycWAgaGFuZGxpbmcgaW4gYGtlcm5lbC9pcnEvbWFuYWdlLmNgIGFuZCBgbGliL2NwdW1hc2suY2AuIFNwZWNpZmljYWxseSwgYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGhhcyBiZWVuIG1vZGlmaWVkLCBhbG9uZyB3aXRoIHRoZSBgY3B1bWFza19sb2NhbF9zcHJlYWRgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIGd1dCBmZWVsaW5nIGlzIHRoYXQgYW55IG1vZGlmaWNhdGlvbiB0aGF0IHRvdWNoZXMgdGhlc2UgY29yZSBtb2R1bGVzIHNob3VsZCBiZSBmdXp6ZWQsIGl0JiMzOTtzIGp1c3QgdGhlIGJlc3QgdGhpbmcgdG8gZG8gZ2l2ZW4gdGhlaXIgd2lkZSBhcHBsaWNhYmlsaXR5LiBUaGUgYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGNoYW5nZSBpbmNsdWRlcyBhIGNoZWNrIGZvciBhbiBleGlzdGluZyBhZmZpbml0eSBzZXR0aW5nLiBUaGUgY2hhbmdlIGluIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAgYWxzbyBtb2RpZmllcyBpdHMgdXNhZ2UuCgpUaGVuIHdlIGhhdmUgYSBkcml2ZXItc3BlY2lmaWMgY2hhbmdlIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jYC4gSXQmIzM5O3MgYWx0ZXJpbmcgaG93IElSUSBhZmZpbml0eSBpcyBoYW5kbGVkIHdpdGhpbiB0aGUgYHN0bW1hY2AgZHJpdmVyLCB1c2luZyBgY3B1bWFza19sb2NhbF9zcHJlYWRgIGFuZCBgaXJxX3NldF9hZmZpbml0eV9hbmRfaGludGAgbm93LCB3aGVyZSBpdCB1c2VkIHRvIHVzZSBgaXJxX3NldF9hZmZpbml0eV9oaW50YC4gVGhlIGBzdG1tYWNgIGRyaXZlciBpcyB1c2VkIG9uIFNUTWljcm9lbGVjdHJvbmljcyBFdGhlcm5ldCBoYXJkd2FyZSwgc28gaXQgbWlnaHQgYmUgYSBiaXQgbW9yZSBuaWNoZSwgYnV0IHRoZXNlIGRyaXZlcnMgb2Z0ZW4gc2hvdyB1cCBvbiBlbWJlZGRlZCBzeXN0ZW1zLCBzbyBpdCYjMzk7cyBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLgoKTXkgcHJpbWFyeSBmb2N1cyBoZXJlIGlzIGdvaW5nIHRvIGJlIG9uIHRoZSBjb3JlIGNoYW5nZXMgYmVjYXVzZSB0aG9zZSBoYXZlIHRoZSBwb3RlbnRpYWwgdG8gaW1wYWN0IGEgbXVjaCB3aWRlciByYW5nZSBvZiBoYXJkd2FyZSBhbmQgY29uZmlndXJhdGlvbnMuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIGZvY3VzIG9uIGZ1enppbmcgYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGFuZCBgY3B1bWFza19sb2NhbF9zcHJlYWRgLiBUaGVzZSBhcmUgY3JpdGljYWwgZnVuY3Rpb25zIHRoYXQgYXJlIHJlYWNoYWJsZSwgYW5kIHRodXMgd29ydGh5IG9mIG15IGF0dGVudGlvbi4KCkxldCYjMzk7cyBxdWlja2x5IGNoZWNrIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBhcmUgcmVxdWlyZWQgdG8gZW5hYmxlIHRoZSByZWxldmFudCBjb2RlIHBhdGhzLiBUaGUgY29kZSBmb3IgYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGxpdmVzIGluIGBrZXJuZWwvaXJxL21hbmFnZS5jYCwgd2hpY2gsIGFmdGVyIGEgcXVpY2sgY2hlY2sgb2YgdGhlIE1ha2VmaWxlLCBzZWVtcyB0byBiZSBjb21waWxlZCB1bmNvbmRpdGlvbmFsbHkgKG9yIGF0IGxlYXN0IGJhc2VkIG9uIGBDT05GSUdfR0VORVJJQ19IQVJESVJRU2AsIHdoaWNoIGlzIGVmZmVjdGl2ZWx5IHN0YW5kYXJkKS4gVGhhdCYjMzk7cyBpZGVhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYW5hZ2UubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9pcnEvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2lycS9NYWtlZmlsZS0yLVxua2VybmVsL2lycS9NYWtlZmlsZTozOm9iai15IDo9IGlycWRlc2MubyBoYW5kbGUubyBtYW5hZ2UubyBzcHVyaW91cy5vIHJlc2VuZC5vIGNoaXAubyBkdW1teWNoaXAubyBkZXZyZXMubyBrZXhlYy5vXG5rZXJuZWwvaXJxL01ha2VmaWxlLTQtb2JqLSQoQ09ORklHX0dFTkVSSUNfSVJRX0NISVApICYjNDM7PSBnZW5lcmljLWNoaXAub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NDgKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyBDb21waWxlIERlcGVuZGVuY2llcyoqCgpSaWdodCwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgd2hhdCYjMzk7cyAqYWx3YXlzKiBiZWluZyBnZW5lcmF0ZWQuIEl0JiMzOTtzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgYm90dGxlbmVja3MuIEZpcnN0LCBgbWFuYWdlLm9gIGlzIGEgZ2l2ZW47IGl0JiMzOTtzIGEgZnVuZGFtZW50YWwgcGFydCBvZiB0aGUgYnVpbGQsIHByZXN1bWFibHkgZm9yIHNvbWV0aGluZyBjb3JlIGluIHRoZSBtYW5hZ2VtZW50IGFzcGVjdC4gQW5kLCBhcyBleHBlY3RlZCwgYGxpYi9jcHVtYXNrLm9gIGlzIGFub3RoZXIgb25lIHRoYXQgY29uc2lzdGVudGx5IHNob3dzIHVwLiBDUFUgbWFza3MgYXJlIG9mdGVuIGZ1bmRhbWVudGFsIGFuZCBJJiMzOTttIGd1ZXNzaW5nIHRoYXQgdGhpcyBpcyBmb3IgbWFuYWdpbmcgdGhvc2UgbWFza3MgaW4gdGhlIHNvZnR3YXJlLCBoZW5jZSBpdCBpcyBhbHdheXMgcmVxdWlyZWQuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGVzZSBhcmUgY29uc2lzdGVudGx5IG5lZWRlZC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIGluIGBzdG1tYWNfbWFpbi5jYCAuIFRoaXMgaXMgbGlrZWx5IHdoZXJlIHRoZSBtYWluIGRyaXZlciBsb2dpYyBvciBkZXZpY2UgaW5pdGlhbGl6YXRpb24gcmVzaWRlcy4gQ2hlY2tpbmcgdGhhdCBmaWxlIHdpbGwgZ2l2ZSB0aGUgbmVjZXNzYXJ5IGluc2lnaHQgdG8gdW5kZXJzdGFuZCB3aHkgdGhvc2UgcGFydGljdWxhciBvYmplY3QgZmlsZXMgYXJlIGFsd2F5cyBuZWVkZWQgaW4gYSBtb3JlIGNvbmNyZXRlIG1hbm5lci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfbWFpbi5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9Mj1vYmotJChDT05GSUdfU1RNTUFDX0VUSCkgJiM0Mzs9IHN0bW1hYy5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozOnN0bW1hYy1vYmpzOj0gc3RtbWFjX21haW4ubyBzdG1tYWNfZXRodG9vbC5vIHN0bW1hY19tZGlvLm8gcmluZ19tb2RlLm9cdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS00LVx0ICAgICAgY2hhaW5fbW9kZS5vIGR3bWFjX2xpYi5vIGR3bWFjMTAwMF9jb3JlLm8gZHdtYWMxMDAwX2RtYS5vXHRcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyOTgKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIFNUTU1BQyBEcml2ZXIgQ29uZmlndXJhdGlvbiBhbmQgVmlydHVhbGl6YXRpb24qKgoKUmlnaHQsIHNvIEkgc2VlIHRoYXQgYENPTkZJR19TVE1NQUNfRVRIYCBpcywgYXMgZXhwZWN0ZWQsIGEgaGFyZCByZXF1aXJlbWVudCBmb3IgdGhlIFNUTU1BQyBkcml2ZXIuIE5vdGhpbmcgdW5leHBlY3RlZCB0aGVyZSwgYnV0IGFsd2F5cyBnb29kIHRvIGNvbmZpcm0gdGhlIGJhc2ljcy4KCk5vdywgbXkgbmV4dCB0aG91Z2h0IGlzIGFib3V0IHRoZSBtdWx0aS1NU0kgaW50ZXJydXB0IGhhbmRsaW5nIHdpdGhpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHZlcmlmeSB0aGUgcmVhY2hhYmlsaXR5IG9mIGBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpYCB3aXRoaW4gdGhlc2UgZW52aXJvbm1lbnRzLiBWaXJ0dWFsaXphdGlvbiBpbnRyb2R1Y2VzIHNvbWUgbnVhbmNlcyB3aGVuIGl0IGNvbWVzIHRvIGludGVycnVwdCBtYW5hZ2VtZW50LCBzbyBJIHdhbnQgdG8gZW5zdXJlIHRoZSBkcml2ZXIgaXMgYmVoYXZpbmcgYXMgYW50aWNpcGF0ZWQuIFNpbmNlIFNUTU1BQyBoYXMgYSBQQ0kgZHJpdmVyLCBgc3RtbWFjX3BjaS5jYCwgSSYjMzk7bGwgYmUgc3VyZSB0byBpbnZlc3RpZ2F0ZSB0aGF0IGRyaXZlciBmaWxlIGZvciByZWxldmFudCBpbnNpZ2h0cy4gVGhpcyB3aWxsIGhlbHAgd2l0aCBkZWJ1Z2dpbmcgaW4gY2FzZSBvZiBhbnkgaXNzdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19wY2kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT01Mz1vYmotJChDT05GSUdfRFdNQUNfTU9UT1JDT01NKVx0JiM0Mzs9IGR3bWFjLW1vdG9yY29tbS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1NDpzdG1tYWMtcGNpLW9ianM6PSBzdG1tYWNfcGNpLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Njg0CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBzdG1tYWNfcGNpLW9ianNgIENvbmZpZ3VyYXRpb24qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSBzZWUgdGhhdCBgc3RtbWFjX3BjaS1vYmpzYCBpcyAqZGVmaW5lZCogaW4gdGhlIG1ha2VmaWxlIG9yIGNvbmZpZywgZ3JlYXQuIFRoYXQmIzM5O3MgcHJvZ3Jlc3MuIEJ1dCwgaW1tZWRpYXRlbHksIHRoZSBuZXh0IHF1ZXN0aW9uIGhpdHMgbWU6IHdoYXQmIzM5O3MgdGhlIGFjdHVhbCAqY29uZmlndXJhdGlvbiogb2YgaXQ/IElzIGl0IGVuYWJsZWQ/IERpc2FibGVkPyBCdWlsdC1pbj8gQSBtb2R1bGU/IEFyZSB0aGVyZSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMgSSYjMzk7bSBtaXNzaW5nPyBJIG5lZWQgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBLY29uZmlnIG9wdGlvbnMgdG8gdW5kZXJzdGFuZCBob3cgYHN0bW1hY19wY2ktb2Jqc2AgaXMgZ2V0dGluZyBpbmNsdWRlZCAob3IgKm5vdCogaW5jbHVkZWQpIGluIHRoZSBmaW5hbCBidWlsZC4gSnVzdCBzZWVpbmcgdGhlIGRlZmluaXRpb24gaXNuJiMzOTt0IGVub3VnaDsgSSBuZWVkIHRoZSBmdWxsIHBpY3R1cmUgdG8gdHJvdWJsZXNob290IGVmZmVjdGl2ZWx5LiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29udGV4dC4gTGV0IG1lIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hYy1wY2kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT00OT1vYmotJChDT05GSUdfU1RNTUFDX0xJQlBDSSlcdCYjNDM7PSBzdG1tYWNfbGlicGNpLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjUwOm9iai0kKENPTkZJR19TVE1NQUNfUENJKVx0JiM0Mzs9IHN0bW1hYy1wY2kub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNTEtb2JqLSQoQ09ORklHX0RXTUFDX0lOVEVMKVx0JiM0Mzs9IGR3bWFjLWludGVsLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT01Mz1vYmotJChDT05GSUdfRFdNQUNfTU9UT1JDT01NKVx0JiM0Mzs9IGR3bWFjLW1vdG9yY29tbS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1NDpzdG1tYWMtcGNpLW9ianM6PSBzdG1tYWNfcGNpLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE0NwoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBQb3RlbnRpYWwgSW1wYWN0IG9mIFBDSSBEcml2ZXIgQ29uZmlndXJhdGlvbiBDaGFuZ2VzKioKClJpZ2h0LCBzbyBgQ09ORklHX1NUTU1BQ19QQ0lgIOKAkyB0aGF0JiMzOTtzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIHRoZSBQQ0ktYmFzZWQgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmlwcGxlIGVmZmVjdHMsIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQuIE15IGltbWVkaWF0ZSBjb25jZXJuLCB0aG91Z2gsIGlzbiYjMzk7dCBqdXN0IHRoZSBkcml2ZXIgaXRzZWxmLiBGcm9tIHBhc3QgZXhwZXJpZW5jZSBJIGtub3cgdGhhdCBmdW5kYW1lbnRhbCBjaGFuZ2VzIGxpa2UgdGhpcyBvZnRlbiB0b3VjaCBsb3cgbGV2ZWwgc3VwcG9ydCBhbmQgaW5mcmFzdHJ1Y3R1cmUuCgpJdCBsb29rcyBsaWtlIHRoZSBzaWduaWZpY2FudCBtb2RpZmljYXRpb25zIGFyZSBhY3R1YWxseSB3aXRoaW4gYGtlcm5lbC9pcnEvbWFuYWdlLmNgIGFuZCBgbGliL2NwdW1hc2suY2AuIFRob3NlIGFyZSAqY29yZSoga2VybmVsIGFyZWFzIOKAkyBpbnRlcnJ1cHQgbWFuYWdlbWVudCBhbmQgQ1BVIG1hc2sgbWFuaXB1bGF0aW9uLCByZXNwZWN0aXZlbHkg4oCTIGFuZCBhcmUgYWJzb2x1dGVseSByZWFjaGFibGUgZnJvbSBhbnkgZHJpdmVyIHVzaW5nIHRoZSBpbnRlcnJ1cHRzIG9yIGFmZmluaXR5LiBUaGV5IGFyZSBoaWdobHkgbGlrZWx5IHRvIGJlIGRpcmVjdGx5IHRvdWNoZWQgYnkgdGhlc2Ugc29ydHMgb2YgY29uZmlnIGNoYW5nZXMuCgpUaGVyZWZvcmUgSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyBxdWlja2x5LiBJcyBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgZXhwb3J0ZWQ/IElmIHNvLCB0aGlzIHN1Z2dlc3RzIHRoYXQgdGhlIElSUSBhZmZpbml0eSBBUEkgaXMgZ29pbmcgdG8gYmUgcmVsZXZhbnQgYW5kIEkgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIGNhbGxpbmcgcGF0dGVybnMgZnJvbSB0aGlzIGRyaXZlciwgYW5kIGhvdyBpdCBoYW5kbGVzIGFmZmluaXR5LiBUaGlzIGNvdWxkIGJlIGltcG9ydGFudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9pcnEvbWFuYWdlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2lycS9tYW5hZ2UuYz01MDQ9aW50IF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnQodW5zaWduZWQgaW50IGlycSwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKm0sIGJvb2wgc2V0YWZmaW5pdHkpXG4tLVxua2VybmVsL2lycS9tYW5hZ2UuYy01MjYtfVxua2VybmVsL2lycS9tYW5hZ2UuYzo1Mjc6RVhQT1JUX1NZTUJPTF9HUEwoX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCk7XG5rZXJuZWwvaXJxL21hbmFnZS5jLTUyOC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjYxOAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkNoZWNraW5nIGZvciBgY3B1bWFza19sb2NhbF9zcHJlYWRgIEV4cG9ydCoqCgpBbHJpZ2h0LCB0aGF0IGNvbmZpcm1zIGl0LiBJIGtuZXcgaXQgd2FzIGxpa2VseSwgYnV0IEkgYWx3YXlzIHdhbnQgdG8gYmUgc3VyZSBiZWZvcmUgSSBzdGFydCBkb3duIGEgcGF0aC4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcXVpY2tseSB2ZXJpZnkgaWYgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYCBpcyBhY3R1YWxseSBleHBvcnRlZC4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBhdmFpbGFibGUgZm9yIG15IG1vZHVsZSB0byB1dGlsaXplLCBhbmQgaXNuJiMzOTt0IHNvbWVob3cgaGlkZGVuIG9yIHN1YmplY3QgdG8gc29tZSB3ZWlyZCBpbnRlcm5hbCBsaW5raW5nIGlzc3VlLiBUaGF0IGV4cG9ydCBzdGF0dXMgd2lsbCBiZSB0aGUgY3JpdGljYWwgbmV4dCBwb2ludCB0byBpbnZlc3RpZ2F0ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qY3B1bWFza19sb2NhbF9zcHJlYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtsaWIvY3B1bWFzay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi9jcHVtYXNrLmM9MTEwPXVuc2lnbmVkIGludCBjcHVtYXNrX2xvY2FsX3NwcmVhZCh1bnNpZ25lZCBpbnQgaSwgaW50IG5vZGUpXG4tLVxubGliL2NwdW1hc2suYy0xMjEtfVxubGliL2NwdW1hc2suYzoxMjI6RVhQT1JUX1NZTUJPTChjcHVtYXNrX2xvY2FsX3NwcmVhZCk7XG5saWIvY3B1bWFzay5jLTEyMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjkwMgoJCQkJCQkJb3V0cHV0OiA1NAoJCQkJCQkJdGhvdWdodHM6IDE1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIHllcywgdGhpcyBwYXRjaCBsb29rcyBzaWduaWZpY2FudC4gSXQmIzM5O3MgdG91Y2hpbmcgY29yZSBrZXJuZWwgbG9naWMgcmVsYXRlZCB0byBJUlEgYWZmaW5pdHkgaGludHMgYW5kIGhvdyB0aGUgYGNwdW1hc2tgIGlzIHNwcmVhZCBhY3Jvc3MgQ1BVcywgd2hpY2ggbWVhbnMgaXQgaW1wYWN0cyBxdWl0ZSBhIGZldyBkcml2ZXJzIHVuZGVyIHRoZSBob29kLiBUaGUgZmFjdCB0aGF0IGl0IGFsc28gYWRqdXN0cyB0aGUgYHN0bW1hY2AgZHJpdmVyIHRvICpjb3JyZWN0bHkqIGxldmVyYWdlIHRoZXNlIG1vZGlmaWVkIGZ1bmN0aW9ucyBpcyBhIGdvb2Qgc2lnbiwgZnVuY3Rpb25hbGx5LiBUaGlzIGltcGxpZXMgYW4gb3ZlcmFsbCBpbXByb3ZlbWVudCB0byB0aGUgc3lzdGVtLgoKR2l2ZW4gdGhhdCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIHByb3Blcmx5IGZ1enplZCBhbmQgdGVzdGVkLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIGZ1bmRhbWVudGFsIGtlcm5lbCBtZWNoYW5pc21zIGhlcmUsIHNvIHJvYnVzdCB0ZXN0aW5nIGlzIHBhcmFtb3VudC4KCk5vdywgYXMgZmFyIGFzIEZvY3VzU3ltYm9scywgSSBpbW1lZGlhdGVseSBzZWUgdGhlIGtleSBmdW5jdGlvbnMgdG8gd2F0Y2ggaGVyZTogYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgLCBhbmQgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYC4gVGhlc2UgYXJlIHRoZSBoZWFydCBvZiB0aGUgY2hhbmdlcywgaXQgc2VlbXMsIHNvIHRoZXkgd2lsbCBuZWVkIHNwZWNpYWwgYXR0ZW50aW9uLiBJZiB3ZSBpbmNsdWRlIHRoZSBkcml2ZXIgY2hhbmdlcyBJIG5lZWQgdG8ga2VlcCBhbiBleWUgb24gYHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2lgLgoKV2FpdCBhIG1pbnV0ZSwgaXNuJiMzOTt0IHRoYXQgYHN0bW1hY2AgZnVuY3Rpb24gc3RhdGljIGluIGBzdG1tYWNfbWFpbi5jYD8gTmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdDsgc3RhdGljIGZ1bmN0aW9ucyBoYXZlIGRpZmZlcmVudCBpbXBsaWNhdGlvbnMgZm9yIG92ZXJhbGwgY2hhbmdlIGltcGFjdC4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTM4MDQ9c3RhdGljIGludCBzdG1tYWNfbXNpX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzgyMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MzgyNDpzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzgyNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MDM5PXN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MDQ1LVx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VmbGFncyBcdTAwMjYgU1RNTUFDX0ZMQUdfTVVMVElfTVNJX0VOKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MDQ2Olx0XHRyZXQgPSBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQwNDctXHRlbHNlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3MTgKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiA3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgZm9ybWF0dGVkIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgQ29kZSYjMzk7cyBTdGF0aWMgTmF0dXJlKioKCkFscmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUsIGFuZCBpdCYjMzk7cyBkZWZpbml0ZWx5IHBvaW50aW5nIHRvIGEgc3RhdGljIGNvbnN0cnVjdC4gVGhlIGluc3RydWN0aW9ucyBhcmUgcHJldHR5IGNsZWFyOiAmIzM0O1ByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucyYjMzQ7LiBUaGF0JiMzOTtzIG15IGd1aWRpbmcgcHJpbmNpcGxlIGhlcmUuIEdpdmVuIHRoYXQsIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gdGhlIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzLiBUaGF0IHBvaW50cyBtZSBhd2F5IGZyb20gdGhlIHN0YXRpYyBmdW5jdGlvbnMgaW1tZWRpYXRlbHkuCgpUaGlua2luZyBhYm91dCB3aGljaCBlbnRyeSBwb2ludHMgYXJlIHJlbGV2YW50LCBgc3RtbWFjX3JlcXVlc3RfaXJxYCBhbmQgYHN0bW1hY19vcGVuYCBzZWVtIGxpa2UgdGhlIGxpa2VseSBjYW5kaWRhdGVzIGZvciBpbnZlc3RpZ2F0aW9uLiBUaGV5JiMzOTtyZSBwcm9iYWJseSB0aGUgc3RhcnRpbmcgcG9pbnRzIGZvciB0aGUgd29yayBJIG5lZWQgdG8gZG8uIE5vdywgdG8gdW5kZXJzdGFuZCBob3cgYHN0bW1hY19yZXF1ZXN0X2lycWAgZnVuY3Rpb25zLCBJIHNob3VsZCBpbnZlc3RpZ2F0ZSB3aGF0IGNhbGxzICppdCouIFRoZSBjYWxsIGdyYXBoIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIGZsb3cgYW5kIGhvdyB0aGlzIHN0YXRpYyBlbnZpcm9ubWVudCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIGNhbGwgZ3JhcGggcmV2ZWFscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3JlcXVlc3RfaXJxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTM4MDQ9c3RhdGljIGludCBzdG1tYWNfbXNpX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzgyMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MzgyNDpzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzgyNS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zOTg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzozOTg2OnN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxX3NpbmdsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zOTg3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQwMzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQwMzk6c3RhdGljIGludCBzdG1tYWNfcmVxdWVzdF9pcnEoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDA0MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MDQ1LVx0aWYgKHByaXYtXHUwMDNlcGxhdC1cdTAwM2VmbGFncyBcdTAwMjYgU1RNTUFDX0ZMQUdfTVVMVElfTVNJX0VOKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MDQ2Olx0XHRyZXQgPSBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQwNDctXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQwNDg6XHRcdHJldCA9IHN0bW1hY19yZXF1ZXN0X2lycV9zaW5nbGUoZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDA0OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQxMzg9c3RhdGljIGludCBfX3N0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTc0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MTc1Olx0cmV0ID0gc3RtbWFjX3JlcXVlc3RfaXJxKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxNzYtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzEzOT1pbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MjA4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MjA5Olx0cmV0ID0gc3RtbWFjX3JlcXVlc3RfaXJxKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcyMTAtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTQyCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkRpdmluZyBpbnRvIHRoZSBgc3RtbWFjX29wZW5gIEVudHJ5IFBvaW50KioKClJpZ2h0LCBgc3RtbWFjX29wZW5gLiBUaGF0JiMzOTtzIHdoZXJlIGl0IGFsbCBiZWdpbnMsIGlzbiYjMzk7dCBpdD8gVGhlIHN0YXJ0aW5nIGd1bi4gV2hlbmV2ZXIgdGhlIG5ldHdvcmsgaW50ZXJmYWNlLCB3aGljaCBpcyBiYWNrZWQgYnkgYW4gU1RNaWNyb2VsZWN0cm9uaWNzIChTVE1NQUMpIEV0aGVybmV0IGRyaXZlciwgaXMgYWN0aXZhdGVkLCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBkcml2ZXIgaXMgdHJpZ2dlcmVkLCBieSB0aGlzIGZ1bmN0aW9uLiBJIGltbWVkaWF0ZWx5IGtub3cgdGhpcyBpcyB0aGUgZnVuY3Rpb24gdGhhdCBpbml0aWFsaXplcyB0aGUgaGFyZHdhcmUsIGNvbmZpZ3VyZXMgdGhlIE1BQywgc2V0cyB1cCB0aGUgRE1BIGNoYW5uZWxzLCBhbGxvY2F0ZXMgYnVmZmVycywgYW5kIGRvZXMgYWxsIHRoZSBncm91bmR3b3JrIHRvIGdldCB0aGUgRXRoZXJuZXQgaW50ZXJmYWNlIHJlYWR5IHRvIHRyYW5zbWl0IGFuZCByZWNlaXZlIHBhY2tldHMuIEl0JiMzOTtzIHRoZSBjcml0aWNhbCBmaXJzdCBzdGVwIGluIHRoZSBlbnRpcmUgY29tbXVuaWNhdGlvbiBwcm9jZXNzLiBGcm9tIGhlcmUsIGFsbCB0aGUgb3RoZXIgY29tcG9uZW50cyB3aWxsIGJlIGNvb3JkaW5hdGVkIGFuZCBsaW5rZWQsIHRoaXMgaXMgdGhlIGZpcnN0IGZ1bmN0aW9uIGNhbGxlZC4gSSBuZWVkIHRvIGtlZXAgdGhpcyB2ZXJ5IGZ1bmN0aW9uIGluIG1pbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19vcGVuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQwNjM9c3RtbWFjX3NldHVwX2RtYV9kZXNjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdW5zaWduZWQgaW50IG10dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxMjgtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxMjk6ICogIF9fc3RtbWFjX29wZW4gLSBvcGVuIGVudHJ5IHBvaW50IG9mIHRoZSBkcml2ZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDEzMC0gKiAgQGRldiA6IHBvaW50ZXIgdG8gdGhlIGRldmljZSBzdHJ1Y3R1cmUuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTM3LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MTM4OnN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTM5LVx0XHRcdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxOTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxOTY6c3RhdGljIGludCBzdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTk3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyMjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyMjQ6XHRyZXQgPSBfX3N0bW1hY19vcGVuKGRldiwgZG1hX2NvbmYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjI1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYxMTQ9c3RhdGljIGludCBzdG1tYWNfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjYxNTA6XHRcdHJldCA9IF9fc3RtbWFjX29wZW4oZGV2LCBkbWFfY29uZik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxNTEtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMjA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzMyMTpcdC5uZG9fb3BlbiA9IHN0bW1hY19vcGVuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzIyLVx0Lm5kb19zdGFydF94bWl0ID0gc3RtbWFjX3htaXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NjA3PWludCBzdG1tYWNfcmVpbml0X3F1ZXVlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCByeF9jbnQsIHU4IHR4X2NudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2MjYtXHRpZiAobmV0aWZfcnVubmluZyhkZXYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NjI3Olx0XHRyZXQgPSBzdG1tYWNfb3BlbihkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjI4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzYzMj1pbnQgc3RtbWFjX3JlaW5pdF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHJ4X3NpemUsIHUzMiB0eF9zaXplKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzY0My1cdGlmIChuZXRpZl9ydW5uaW5nKGRldikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc2NDQ6XHRcdHJldCA9IHN0bW1hY19vcGVuKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2NDUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMzIyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU1RNTUFDIERyaXZlciYjMzk7cyBFbnRyeSBQb2ludCBmb3IgWERQIENvbXBhdGliaWxpdHkqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBTVE1NQUMgZHJpdmVyIGNvZGUgZm9yIFhEUCBzdXBwb3J0LiBUaGUgc3RhcnRpbmcgcG9pbnQgc2VlbXMgdG8gYmUgYHN0bW1hY19vcGVuYCwgYnV0IHdhaXQgYSBzZWNvbmQuLi4gdGhhdCYjMzk7cyBkZWNsYXJlZCBhcyBzdGF0aWMuIEhtbSwgdGhhdCYjMzk7cyBhIGJpdCBvZiBhIHJvYWRibG9jay4gSSBuZWVkIGEgbm9uLXN0YXRpYyBlbnRyeSBwb2ludC4gTGV0IG1lIHNjYW4gdGhyb3VnaC4uLiBhaCwgeWVzLCBgc3RtbWFjX3hkcF9vcGVuYCEgVGhhdCBvbmUgaXNuJiMzOTt0IHN0YXRpYy4gQnV0LCBldmVuIGlmIEkgY2FuJiMzOTt0IGRpcmVjdGx5IHRhcmdldCBgc3RtbWFjX29wZW5gLCB0aGUga2V5IG1vZGlmaWNhdGlvbnMgYXJlIHByb2JhYmx5IGdvaW5nIHRvIGJlIGFyb3VuZCB0aGUgaW50ZXJydXB0IGhhbmRsaW5nLgoKUmlnaHQsIHNvIHRoYXQgcHJvYmFibHkgbWVhbnMgSSBzaG91bGQgYmUgZm9jdXNpbmcgb24gdGhlIGludGVycnVwdCBhZmZpbml0eSBzdHVmZi4gSSBjYW4gcHJvYmFibHkganVzdCBsZXZlcmFnZSBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgYW5kIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAuIFRoZXkgbG9vayBsaWtlIHRoZSBjb3JlIG9mIHRoZSBmdW5jdGlvbmFsaXR5IEkgbmVlZCB0byB0YXAgaW50by4gVGltZSB0byBkaXZlIGludG8gdGhlIGRlZmluaXRpb24gb2YgYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGFuZCBzZWUgZXhhY3RseSB3aGF0IGl0JiMzOTtzIGRvaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2lycV9hcHBseV9hZmZpbml0eV9oaW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2lycS9tYW5hZ2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvaXJxL21hbmFnZS5jPTUwMj1FWFBPUlRfU1lNQk9MX0dQTChpcnFfZm9yY2VfYWZmaW5pdHkpO1xua2VybmVsL2lycS9tYW5hZ2UuYy01MDMtXG5rZXJuZWwvaXJxL21hbmFnZS5jOjUwNDppbnQgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCh1bnNpZ25lZCBpbnQgaXJxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSwgYm9vbCBzZXRhZmZpbml0eSlcbmtlcm5lbC9pcnEvbWFuYWdlLmMtNTA1LXtcbi0tXG5rZXJuZWwvaXJxL21hbmFnZS5jLTUyNi19XG5rZXJuZWwvaXJxL21hbmFnZS5jOjUyNzpFWFBPUlRfU1lNQk9MX0dQTChfX2lycV9hcHBseV9hZmZpbml0eV9oaW50KTtcbmtlcm5lbC9pcnEvbWFuYWdlLmMtNTI4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDg1NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDM0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgYW5kIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAqKgoKUmlnaHQsICp3YWl0IGEgbWludXRlKi4gYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGlzICpub24tc3RhdGljKiBhbmQgKmV4cG9ydGVkKj8gVGhhdCYjMzk7cy4uLiBpbnRlcmVzdGluZywgYW5kIHNvbWV3aGF0IHVudXN1YWwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgaXQgYmVpbmcgZXhwb3NlZCBsaWtlIHRoYXQuIE15IGltbWVkaWF0ZSBxdWVzdGlvbnMgYXJlOiBXaGF0JiMzOTtzIHRoZSByYXRpb25hbGUgYmVoaW5kIGV4cG9ydGluZyBpdD8gV2hhdCBwb3RlbnRpYWwgdXNlIGNhc2VzIGFyZSB0aGVyZSBvdXRzaWRlIG9mIGl0cyBwcmltYXJ5IG1vZHVsZT8gQXJlIHRoZXJlIGFueSBoaWRkZW4gc2lkZSBlZmZlY3RzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IGxpa2VseSBpc3N1ZXMgcmVsYXRpbmcgdG8gaXRzIHdpZGVyIGFjY2Vzc2liaWxpdHk/IEFueSByYWNlIGNvbmRpdGlvbnMsIHBvdGVudGlhbCBmb3IgbWlzdXNlLCBvciB1bmV4cGVjdGVkIGRlcGVuZGVuY2llcz8KCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBzZW1hbnRpY3Mgb2YgdGhhdCBmdW5jdGlvbiBhbmQgaXRzIGludGVuZGVkIHVzZSBjYXNlLiBBbHNvLCBJIG5lZWQgdG8gY2hlY2sgaG93IHRoZSBleHBvcnRlZCBub24tc3RhdGljIG5hdHVyZSBhZmZlY3RzIHRoZSBjb21waWxhdGlvbiBhbmQgbGlua2luZyBwcm9jZXNzLCBhcyBjb21wYXJlZCB0byBzaW1pbGFyIHN0YXRpYyBmdW5jdGlvbnMuIE15IHByaW1hcnkgY29uY2VybiB3b3VsZCBiZSB0byBlbnN1cmUgdGhhdCB0aGUgYnJvYWRlciBleHBvc3VyZSBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgdnVsbmVyYWJpbGl0aWVzIG9yIHVuZXhwZWN0ZWQgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIga2VybmVsIHN1YnN5c3RlbXMsIG9yIHRoYXQgaXQgaXMgbm90IG1hc2tpbmcgYSBwb3RlbnRpYWxseSBtb3JlIHJvYnVzdCBkZXNpZ24uCgpTaW5jZSB0aGlzIGlzIHJlbGF0ZWQgdG8gaW50ZXJydXB0IGhhbmRsaW5nLCBJIHN1c3BlY3QgdGhlIGV4cG9ydGVkIG5hdHVyZSBtaWdodCBiZSByZWxhdGVkIHRvIG1vcmUgY29tcGxleCBzY2hlZHVsaW5nIG9yIGR5bmFtaWMgYWZmaW5pdHkgYWRqdXN0bWVudHMsIG1heWJlIGV2ZW4gc29tZXRoaW5nIHVzZXItc3BhY2UgaW50ZXJhY3RzIHdpdGggKHRob3VnaCB0aGF0IHNlZW1zIGxlc3MgbGlrZWx5IGZvciBhbiBpbnRlcm5hbCBmdW5jdGlvbiBuYW1lIGxpa2UgdGhpcykuCgpUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY29uZmlybSB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uLiBUaW1lIHRvIGNoZWNrIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAgaW4gcmVsYXRpb24gdG8gdGhpcywgc2luY2UgdGhhdCBpcyBvYnZpb3VzbHkgaW52b2x2ZWQuIEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCB0aGUgZXhhY3QgbG9naWMgYmVoaW5kIHRoYXQgZnVuY3Rpb24uIFdoYXQgc29ydCBvZiBjb25zdHJhaW50cyBhcmUgaW4gcGxhY2U/IERvZXMgdGhlIHNwcmVhZCBiZWhhdmlvciBpbmZsdWVuY2UgaG93IGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCB3b3Jrcz8gSXMgdGhlcmUgc29tZSB0aWdodCBjb3VwbGluZyBJJiMzOTttIG5vdCBpbW1lZGlhdGVseSBzZWVpbmc/IEFyZSB0aGUgcmVzdWx0cyBkZXBlbmRlbnQgb24gc3BlY2lmaWMgYXJjaGl0ZWN0dXJhbCBmZWF0dXJlcyBvciBrZXJuZWwgY29uZmlndXJhdGlvbnM/CgpJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGNoYW5nZXMgdG8gdGhlIGludGVycnVwdCBhZmZpbml0eSBzeXN0ZW0gb24gcGVyZm9ybWFuY2UsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgYW5kIHdvcmtsb2Fkcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y3B1bWFza19sb2NhbF9zcHJlYWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtsaWIvY3B1bWFzay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi9jcHVtYXNrLmM9NzQ9dm9pZCBfX2luaXQgZnJlZV9ib290bWVtX2NwdW1hc2tfdmFyKGNwdW1hc2tfdmFyX3QgbWFzaylcbi0tXG5saWIvY3B1bWFzay5jLTgwLS8qKlxubGliL2NwdW1hc2suYzo4MTogKiBjcHVtYXNrX2xvY2FsX3NwcmVhZCAtIHNlbGVjdCB0aGUgaSYjMzk7dGggY3B1IGJhc2VkIG9uIE5VTUEgZGlzdGFuY2VzXG5saWIvY3B1bWFzay5jLTgyLSAqIEBpOiBpbmRleCBudW1iZXJcbi0tXG5saWIvY3B1bWFzay5jLTkyLSAqIGZvciAoaSA9IDA7IGkgXHUwMDNjIG51bV9vbmxpbmVfY3B1cygpOyBpJiM0MzsmIzQzOykge1xubGliL2NwdW1hc2suYzo5MzogKlx0Y3B1ID0gY3B1bWFza19sb2NhbF9zcHJlYWQoaSwgbm9kZSk7XG5saWIvY3B1bWFzay5jLTk0LSAqXHRkb19zb21ldGhpbmcoY3B1KTtcbi0tXG5saWIvY3B1bWFzay5jLTEwNi0gKiBlbnVtZXJhdGlvbiBpcyBPKHNjaGVkX2RvbWFpbnNfbnVtYV9sZXZlbHMgKiBucl9jcHVfaWRzKSwgd2hpbGVcbmxpYi9jcHVtYXNrLmM6MTA3OiAqIGNwdW1hc2tfbG9jYWxfc3ByZWFkKCkgd2hlbiBjYWxsZWQgZm9yIGVhY2ggY3B1IGlzXG5saWIvY3B1bWFzay5jLTEwOC0gKiBPKHNjaGVkX2RvbWFpbnNfbnVtYV9sZXZlbHMgKiBucl9jcHVfaWRzICogbG9nKG5yX2NwdV9pZHMpKS5cbmxpYi9jcHVtYXNrLmMtMTA5LSAqL1xubGliL2NwdW1hc2suYzoxMTA6dW5zaWduZWQgaW50IGNwdW1hc2tfbG9jYWxfc3ByZWFkKHVuc2lnbmVkIGludCBpLCBpbnQgbm9kZSlcbmxpYi9jcHVtYXNrLmMtMTExLXtcbi0tXG5saWIvY3B1bWFzay5jLTEyMS19XG5saWIvY3B1bWFzay5jOjEyMjpFWFBPUlRfU1lNQk9MKGNwdW1hc2tfbG9jYWxfc3ByZWFkKTtcbmxpYi9jcHVtYXNrLmMtMTIzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTc1OAoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgRnVuY3Rpb24gVmlzaWJpbGl0eSBpbiB0aGUgU1RNTUFDIERyaXZlcioqCgpPa2F5LCBzbyBgY3B1bWFza19sb2NhbF9zcHJlYWRgIGlzIGV4cG9zZWQgdG8gb3RoZXIgbW9kdWxlcywgd2hpY2ggaXNuJiMzOTt0IHVudXN1YWwuIExldCYjMzk7cyBzZWUgaWYgdGhhdCBoYXMgYW55IGltcGxpY2F0aW9ucyBoZXJlLiBOb3cgSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSB2aXNpYmlsaXR5IG9mIHNvbWUgZnVuY3Rpb25zIGluIHRoZSBTVE1NQUMgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGljaCBmdW5jdGlvbnMgYXJlIHN0YXRpYyBhbmQgdGhlcmVmb3JlIG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhlIGNvbXBpbGF0aW9uIHVuaXQsIGFuZCB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciBvdGhlciBtb2R1bGVzIHRvIGNhbGwuIFJpZ2h0LCBsZXQgbWUgY2hlY2sgYHN0bW1hY19vcGVuYC4gQWgsIHllcCwgaXQmIzM5O3Mgc3RhdGljLCBnb29kLiBTbywgdGhhdCYjMzk7cyBlbmNhcHN1bGF0ZWQgd2l0aGluIHRoZSBkcml2ZXImIzM5O3MgY29kZSBpdHNlbGYuIE9rYXksIGFuZCBob3cgYWJvdXQgYHN0bW1hY194ZHBfb3BlbmA/ICpUaGF0KiBvbmUmIzM5O3Mgbm90IHN0YXRpYy4gSW50ZXJlc3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY194ZHBfb3BlbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03MTA2PXZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MTM5OmludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzE0MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMTk1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkNvbnNpZGVyaW5nIHRoZSBJbmNsdXNpb24gb2YgYHN0bW1hY194ZHBfb3BlbmAqKgoKUmlnaHQsIGxldCYjMzk7cyBzZWUsIHdlJiMzOTtyZSBkZWZpbml0ZWx5IGxvb2tpbmcgYXQgaW5jb3Jwb3JhdGluZyBgc3RtbWFjX3hkcF9vcGVuYCBpbnRvIHRoaXMuIE1ha2VzIHNlbnNlLiBJdCYjMzk7cyBvbiB0aGUgbGlzdCBmb3IgYSByZWFzb24uIE5lZWQgdG8gbWFrZSBzdXJlIHdlJiMzOTtyZSBjb3ZlcmluZyBhbGwgYmFzZXMuIEl0JiMzOTtzIGEga2V5IHBhcnQgb2YgdGhlIFhEUCBpbnRlZ3JhdGlvbiwgc28gd2UgaGF2ZSB0byBmYWN0b3IgaXQgaW4uCgpOb3csIGEgcXVpY2sgY2hlY2sgb24gc29tZXRoaW5nIGVsc2UuIFdoYXQmIzM5O3MgdGhlIGltcGxlbWVudGF0aW9uIHN0YXR1cyBvZiBgaXJxX3NldF9hZmZpbml0eV9hbmRfaGludGA/IElzIGl0IGEgbWFjcm8gb3IgYSBmdW5jdGlvbj8gSXQmIzM5O3MgZWFzeSBlbm91Z2ggdG8gdmVyaWZ5IGJ1dCBpbXBvcnRhbnQgdG8gYmUgY2VydGFpbiwgYmVjYXVzZSB0aGF0IGhhcyBpbXBsaWNhdGlvbnMgZm9yIHRoZSBvdmVyYWxsIGFwcHJvYWNoLiBJIG5lZWQgdG8ga25vdyB3aGV0aGVyIGl0IGV4cGFuZHMgaW5saW5lIG9yIGlmIHRoZXJlJiMzOTtzIGEgZnVuY3Rpb24gY2FsbCBoYXBwZW5pbmcgYXQgcnVudGltZS4gVGhhdCBpbXBhY3RzIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcywgcG90ZW50aWFsIGlubGluaW5nLCBhbmQgZGVidWdnaW5nIHBvc3NpYmlsaXRpZXMuIEkmIzM5O2xsIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgcXVpY2sgYmVmb3JlIEkgZm9yZ2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oPTMzNT1pcnFfdXBkYXRlX2FmZmluaXR5X2hpbnQodW5zaWduZWQgaW50IGlycSwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKm0pXG4tLVxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaC0zNDAtLyoqXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oOjM0MTogKiBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50IC0gVXBkYXRlIHRoZSBhZmZpbml0eSBoaW50IGFuZCBhcHBseSB0aGUgcHJvdmlkZWRcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0LmgtMzQyLSAqXHRcdFx0ICAgICBjcHVtYXNrIHRvIHRoZSBpbnRlcnJ1cHRcbi0tXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oPTM0OT1zdGF0aWMgaW5saW5lIGludFxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaDozNTA6aXJxX3NldF9hZmZpbml0eV9hbmRfaGludCh1bnNpZ25lZCBpbnQgaXJxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSlcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0LmgtMzUxLXtcbi0tXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTM1NS0vKlxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaDozNTY6ICogRGVwcmVjYXRlZC4gVXNlIGlycV91cGRhdGVfYWZmaW5pdHlfaGludCgpIG9yIGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoKVxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaC0zNTctICogaW5zdGVhZC5cbi0tXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oPTM1OT1zdGF0aWMgaW5saW5lIGludCBpcnFfc2V0X2FmZmluaXR5X2hpbnQodW5zaWduZWQgaW50IGlycSwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKm0pXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTM2MC17XG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oOjM2MTpcdHJldHVybiBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KGlycSwgbSk7XG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTM2Mi19XG4tLVxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaD0zOTU9c3RhdGljIGlubGluZSBpbnQgaXJxX3VwZGF0ZV9hZmZpbml0eV9oaW50KHVuc2lnbmVkIGludCBpcnEsXG4tLVxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaC00MDAtXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oOjQwMTpzdGF0aWMgaW5saW5lIGludCBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KHVuc2lnbmVkIGludCBpcnEsXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTQwMi1cdFx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICptKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjk0NQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDExNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEludGVycnVwdCBBZmZpbml0eSBMb2dpYyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBpbmxpbmUgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBjYWxsaW5nIGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YC4gVGhhdCYjMzk7cyB0aGUgY29yZSBvZiB0aGUgbWF0dGVyIGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYWZmaW5pdHkgaXMgYmVpbmcgYXBwbGllZCwgc28gYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGlzIGRlZmluaXRlbHkgYSBrZXkgZm9jdXMgc3ltYm9sLiBJIGFsc28gc2VlIGNhbGxzIHRvIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAsIHNvIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGl0cyBkb2luZy4gQW5kIEkgc2VlIHRoYXQgYHN0bW1hY194ZHBfb3BlbmAgaXMgcHJlc2VudC4gVGhhdCYjMzk7cyByZWxldmFudCBzaW5jZSB0aGF0IGxpa2VseSBjb250YWlucyB0aGUgbG9naWMgc3Vycm91bmRpbmcgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb24gdG9vLgoKTm93LCB0byBtYWtlIHN1cmUgSSBjYW4gYWN0dWFsbHkgKnRlc3QqIHRoaXMgaW4gYSBRRU1VIGVudmlyb25tZW50LCBJJiMzOTtsbCBuZWVkIHRoZSByaWdodCBjb25maWd1cmF0aW9ucyBlbmFibGVkLiBJJiMzOTtsbCBuZWVkIGBTVE1NQUNfRVRIYCwgb2J2aW91c2x5LCBzaW5jZSBpdCYjMzk7cyBhbiBldGhlcm5ldCBkcml2ZXIuIEJ1dCwgSSBiZWxpZXZlIEkmIzM5O2xsIG5lZWQgYFNUTU1BQ19QQ0lgIHRvIGJlIGVuYWJsZWQgYXMgd2VsbCwgc28gSSBjYW4gcmVhY2ggdGhpcyBmdW5jdGlvbmFsaXR5IHZpYSBQQ0kuIExldCBtZSBkb3VibGUtY2hlY2sgdGhhdCBgU1RNTUFDX1BDSWAgaXMgdGhlIGNvcnJlY3QgcGF0aC4gSXQmIzM5O3MgZWFzeSB0byBnZXQgdGhlc2UgZGV0YWlscyB3cm9uZyBhbmQgSSBkb24mIzM5O3Qgd2FudCB0byB3YXN0ZSB0aW1lIGRlYnVnZ2luZyBzb21ldGhpbmcgSSBjYW4mIzM5O3QgZXZlbiByZXByb2R1Y2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1NUTU1BQ19QQ0kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwOC1cdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM0ODcKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQ29uZmlybWluZyB0aGUgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCAqU1RNTUFDX1BDSSrigKYgdGhhdCBmZWVscyByaWdodCwgZG9lc24mIzM5O3QgaXQ/IEJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBhcmNoaXRlY3R1cmUgYW5kIHRoZSBoYXJkd2FyZSBJJiMzOTttIHRhcmdldGluZywgeWVhaCwgdGhhdCYjMzk7cyBkZWZpbml0ZWx5IHRoZSBrZXkgY29uZmlndXJhdGlvbiBJIG5lZWQgdG8gYmUgZm9jdXNpbmcgb24uIEJ1dCwgYmVmb3JlIEkgZ2V0IHRvbyBmYXIgZG93biB0aGF0IHBhdGgsIGxldCBtZSBqdXN0IHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgKlNUTU1BQ19FVEgqIGlzbiYjMzk7dCBsdXJraW5nIGFzIHRoZSBwcmltYXJ5IGRyaXZlciBjb25maWd1cmF0aW9uIGluIHRoaXMgZW52aXJvbm1lbnQuIEl0JiMzOTtzIGFsd2F5cyB3aXNlIHRvIGVsaW1pbmF0ZSB0aGUgb2J2aW91cyBiZWZvcmUgZ2V0dGluZyBkZWVwIGludG8gdGhlIHdlZWRzIHdpdGggUENJIHNwZWNpZmljIHNldHRpbmdzLiBHb3R0YSBtYWtlIHN1cmUgSSYjMzk7bSBzdGFydGluZyBmcm9tIHRoZSBjb3JyZWN0LCBtb3N0IGJhc2ljIGZvdW5kYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjpjb25maWcgU1RNTUFDX0VUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTg6aWYgU1RNTUFDX0VUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTQwNz1jb25maWcgU1RNTUFDX1BDSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDE5LVx0ICBJZiB1bnN1cmUsIHNheSBOLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MjA6ZW5kaWYgIyBTVE1NQUNfRVRIXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzOTgzCgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIFNUTU1BQyBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKUmlnaHQsIHNvLCBhcyBJIHVuZGVyc3RhbmQgaXQsIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgIGFyZSB0aGUgdHdvIGtleSBjb25maWd1cmF0aW9ucyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhlcmUsIGNvcnJlY3Q/IEp1c3QgbWFraW5nIHN1cmUgSSYjMzk7bSBvbiB0aGUgcmlnaHQgdHJhY2sgYmVmb3JlIGRpdmluZyBkZWVwZXIuCgpOb3csIEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcgaW1wb3J0YW50OiBkb2VzIGBTVE1NQUNfUENJYCBoYXZlIGFueSBkZXBlbmRlbmNpZXM/IEFyZSB0aGVyZSBvdGhlciBjb25maWdzIHRoYXQgKm11c3QqIGJlIGVuYWJsZWQgb3IgYXJlIHJlcXVpcmVkIHRvIGJlIGNvbmZpZ3VyZWQgaW4gYSBjZXJ0YWluIHdheSwgYmVmb3JlIGBTVE1NQUNfUENJYCBjYW4gZXZlbiBiZSBjb25zaWRlcmVkPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwcyBoZXJlIHRvIGF2b2lkIGFueSBpbnRlZ3JhdGlvbiBoZWFkYWNoZXMgbGF0ZXIgb24uIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBjb25uZWN0ZWQgdG8gYFNUTU1BQ19QQ0lgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1RNTUFDX1BDSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA4LVx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBDSSBidXMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDM1NwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHJlYWRpbmcgYW5kIHRoaW5raW5nIGFib3V0IHRob3NlIGxpbmVzIG9mIGNvZGU6CgoqKkFuYWx5emluZyBgY29uZmlnIFNUTU1BQ19QQ0lgKioKCk9rYXksIHNvIEkgc2VlIGBjb25maWcgU1RNTUFDX1BDSWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBhbHJpZ2h0LCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBTVE1NQUMgRXRoZXJuZXQgZHJpdmVyLCBzcGVjaWZpY2FsbHkgd2hlbiBpdCYjMzk7cyBiZWluZyB1c2VkIG9uIGEgUENJIGJ1cy4gVGhpcyBpcyBpbnRlcmVzdGluZy4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LCB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgdGhlIG90aGVyIHJlbGF0ZWQgb3B0aW9ucyB0byB0cnVseSBncmFzcCB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGlzLgoKSSBuZWVkIHRvIHJlYWQgdGhlIGxpbmVzIGFyb3VuZCB0aGlzIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGNvbmZpZyBvcHRpb24gY29udHJvbHMuIElzIGl0IGVuYWJsaW5nIHRoZSBQQ0kgaW50ZXJmYWNlIGZvciBTVE1NQUMsIG9yIGlzIGl0IGVuYWJsaW5nIHRoZSB3aG9sZSBTVE1NQUMgZHJpdmVyIGZvciBQQ0ktYmFzZWQgaGFyZHdhcmU/IE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgaXQmIzM5O3MgbGlrZWx5IHRoZSBmb3JtZXIsIGJ1dCBJIGNhbiYjMzk7dCBiZSBzdXJlIHdpdGhvdXQgbW9yZSBkYXRhLiBJdCYjMzk7cyBwcm9iYWJseSByZWxhdGVkIHRvIHN1cHBvcnRpbmcgYSBzcGVjaWZpYyBoYXJkd2FyZSBjb25maWd1cmF0aW9uLCBvciBtYXliZSBldmVuIGEgc3BlY2lmaWMgYm9hcmQuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyBpdCYjMzk7cyBkZWZpbmVkIGFuZCB1c2VkIGVsc2V3aGVyZSBpbiB0aGUgS2NvbmZpZyBmaWxlcy4gQXJlIHRoZXJlIGFueSBkZWZhdWx0IHNldHRpbmdzPyBBbnkgZGVwZW5kZW5jaWVzIG9uIG90aGVyIG1vZHVsZXMgb3IgZHJpdmVycz8gQW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZsYWdzIHRoYXQgYXJlIHRyaWdnZXJlZCBieSBpdD8KCkkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgZWxzZSBtaWdodCBiZSBjb250aW5nZW50IG9uIGBTVE1NQUNfUENJYC4gVGhpcyBpcyBrZXkuIEFyZSB0aGVyZSBvdGhlciByZWxhdGVkIG9wdGlvbnMsIGxpa2UgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb24sIGRldmljZSB0cmVlIHNldHRpbmdzLCBvciBNQUMgYWRkcmVzcyBhc3NpZ25tZW50IHRoYXQgYXJlIGFmZmVjdGVkPyBBbnkgcG9zc2libGUgY29uZmxpY3RzIHdpdGggb3RoZXIgZHJpdmVycyBvciBoYXJkd2FyZSBjb21wb25lbnRzPyBUaGUgbW9yZSBpbmZvcm1hdGlvbiBJIGNhbiBnYXRoZXIgYXJvdW5kIHRoaXMgb25lIGxpbmUsIHRoZSBiZXR0ZXIgSSBjYW4gZ3Jhc3AgdGhlIHdob2xlIFNUTU1BQyBpbXBsZW1lbnRhdGlvbi4gSSB3YW50IHRvIGJ1aWxkIGEgY29tcGxldGUgcGljdHVyZSBoZXJlIGFuZCB1bmRlcnN0YW5kIHRoZSByYW1pZmljYXRpb25zIG9mIHR1cm5pbmcgaXQgb24gb3Igb2ZmLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQwMDpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiA0MDE6XHRcdHNlbGVjdCBNT1RPUkNPTU1fUEhZXG4gNDAyOlx0XHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxuIDQwMzpcdFx0aGVscFxuIDQwNDpcdFx0ICBUaGlzIGVuYWJsZXMgZ2x1ZSBkcml2ZXIgZm9yIE1vdG9yY29tbSBEV01BQy1iYXNlZCBQQ0kgRXRoZXJuZXRcbiA0MDU6XHRcdCAgY29udHJvbGxlcnMuIEN1cnJlbnRseSBvbmx5IFlUNjgwMSBpcyBzdXBwb3J0ZWQuXG4gNDA2Olx0XG4gNDA3Olx0Y29uZmlnIFNUTU1BQ19QQ0lcbiA0MDg6XHRcdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcJiMzNDtcbiA0MDk6XHRcdGRlcGVuZHMgb24gUENJXG4gNDEwOlx0XHRkZXBlbmRzIG9uIENPTU1PTl9DTEtcbiA0MTE6XHRcdHNlbGVjdCBTVE1NQUNfTElCUENJXG4gNDEyOlx0XHRoZWxwXG4gNDEzOlx0XHQgIFRoaXMgc2VsZWN0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLlxuIDQxNDpcdFx0ICBUaGlzIGRyaXZlciB3YXMgdGVzdGVkIG9uIFhMSU5YIFhDMlYzMDAwIEZGMTE1MkFNVDAyMjFcbiA0MTU6XHRcdCAgRDEyMTU5OTRBIFZJUlRFWCBGUEdBIGJvYXJkIGFuZCBTTlBTIFFvUyBJUEsgUHJvdG90eXBpbmcgS2l0LlxuIDQxNjpcdFxuIDQxNzpcdFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxuIDQxODpcdFxuIDQxOTpcdFx0ICBJZiB1bnN1cmUsIHNheSBOLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTA3NwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlcGVuZGVuY2llcyBhbmQgQXNzdW1wdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBTVE1NQUNfUENJYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgc2V0dXAuIEl0IGxldmVyYWdlcyBib3RoIGBQQ0lgLCB3aGljaCwgbGV0JiMzOTtzIGJlIGhvbmVzdCwgaXMgYSBnaXZlbiBpbiBtb3N0IGNhc2VzIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGgsIGFuZCBgQ09NTU9OX0NMS2AsIHdoaWNoIGlzIGEgY29tbW9uIGNsb2NrIGZyYW1ld29yayBmb3VuZCBhY3Jvc3MgYSBzaWduaWZpY2FudCBudW1iZXIgb2YgYXJjaGl0ZWN0dXJlcy4gTm90aGluZyB1bnVzdWFsIHRoZXJlLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gYFNUTU1BQ19FVEhgLCBhbmQgdGhlbiBJIGNhbiBwcm9jZWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgU1RNTUFDX0VUSFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIEhBU19JT01FTSBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuICAgNTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICAgNjpcdFx0ZGVwZW5kcyBvbiBFVEhUT09MX05FVExJTktcbiAgIDc6XHRcdHNlbGVjdCBNSUlcbiAgIDg6XHRcdHNlbGVjdCBQQ1NfWFBDU1xuICAgOTpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAxMDpcdFx0c2VsZWN0IFBIWUxJTktcbiAgMTE6XHRcdHNlbGVjdCBDUkMzMlxuICAxMjpcdFx0c2VsZWN0IFJFU0VUX0NPTlRST0xMRVJcbiAgMTM6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuICAxNDpcdFx0aGVscFxuICAxNTpcdFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgZm9yIHRoZSBFdGhlcm5ldCBJUHMgYnVpbHQgYXJvdW5kIGFcbiAgMTY6XHRcdCAgU3lub3BzeXMgSVAgQ29yZS5cbiAgMTc6XHRcbiAgMTg6XHRpZiBTVE1NQUNfRVRIXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU1NDQKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTVE1NQUMgRHJpdmVyJiMzOTtzIEVudHJ5IFBvaW50cyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGhhcyB0byBiZSBvbiBob3cgdGhlIFNUTU1BQyBkcml2ZXIgZ2V0cyBpbml0aWFsaXplZCBhbmQgaG93IHdlIGNhbiBiZXN0IGludGVyY2VwdCBpdHMgb3BlcmF0aW9uIGZvciBYRFAgaW50ZWdyYXRpb24uIFRoZSBrZXkgaGVyZSBoaW5nZXMgb24gYSBmZXcgc3RhbmRhcmQgY29uZmlndXJhdGlvbiBzeW1ib2xzOiBgSEFTX0lPTUVNICZhbXA7JmFtcDsgSEFTX0RNQWAsIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAsIGFuZCBgRVRIVE9PTF9ORVRMSU5LYC4gV2Uga25vdyB0aGVzZSBhcmUgZnVuZGFtZW50YWwsIGJ1dCB0aGV5IGRvbiYjMzk7dCBnaXZlIHVzIHRoZSBzcGVjaWZpYyBlbnRyeSBwb2ludC4KCldlJiMzOTt2ZSBnb3QgdHdvIG1haW4gY29uZmlnIG9wdGlvbnMgdGhhdCBhcmUgcmVsZXZhbnQ6IGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgLiBUaG9zZSBhcmUgbGlrZWx5IGdvaW5nIHRvIGdvdmVybiB3aGljaCBpbml0aWFsaXphdGlvbiBwYXRocyB3ZSBzaG91bGQgY29uc2lkZXIsIGJ1dCB3ZSBuZWVkIHRvIGRpZyBkZWVwZXIgZm9yIGEgZ29vZCBzdGFydGluZyBwb2ludC4KCkkgc3RhcnRlZCBieSBsaXN0aW5nIHBvc3NpYmxlIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdCwgY29uc2lkZXJpbmcgdGhlIHN0YW5kYXJkIGZvY3VzIHN5bWJvbHM6IGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCwgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYCwgYW5kIGBzdG1tYWNfeGRwX29wZW5gLiBCdXQgaG9sZCBvbiwgYHN0bW1hY194ZHBfb3BlbmAgaXMgY2xlYXJseSBvbmx5IGNhbGxlZCB3aGVuIFhEUCBpcyBhY3RpdmUuIFRoYXTigJlzIHByb2JhYmx5IG5vdCB0aGUgY29yZSBpbml0aWFsaXphdGlvbiBwYXRoIEkgbmVlZC4gSSBuZWVkIHNvbWV0aGluZyBtb3JlIGdlbmVyYWwuCgpMZXQmIzM5O3MgY2hlY2sgYHN0bW1hY19vcGVuYC4gQWgsIHRoYXTigJlzIHRoZSBgbmRvX29wZW5gIGNhbGxiYWNrIOKAkyB1c2VkIGluIHRoZSBzdGFuZGFyZCBuZXR3b3JrIGRldmljZSBsaWZlY3ljbGUuIEJ1dCwgaXQmIzM5O3MgZGVjbGFyZWQgYHN0YXRpY2AuIFNvLCBpdCYjMzk7cyBub3QgYSBncmVhdCBjaG9pY2UgZm9yIG91ciBob29rIHNpbmNlIHdlIGNhbiYjMzk7dCBlYXNpbHkgcGF0Y2ggaXQuIFN0YXRpYyBmdW5jdGlvbnMgbGltaXQgZmxleGliaWxpdHkuIEl0JiMzOTtzIGEga2V5IGVudHJ5cG9pbnQsIGJ1dCBub3QgdGhlIHJpZ2h0IHN5bWJvbCB0byBmb2N1cyBvbi4KClNvLCBsZXQgbWUgYmFjayB1cCBhIHN0ZXAuIFdoYXQgYWJvdXQgYHN0bW1hY19yZXN1bWVgPyBUaGF0JiMzOTtzIGxpa2VseSBjYWxsZWQgZHVyaW5nIHBvd2VyLXVwIG9yIHN5c3RlbSByZXN1bWUsIHdoaWNoIG1pZ2h0IGdpdmUgdXMgYSBkZWNlbnQgaG9vay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlbiBpdCBpcyBjYWxsZWQgdG8gZGV0ZXJtaW5lIGlmIGl0IGlzIHRoZSBiZXN0IHBvaW50IHRvIGluc2VydCBjb2RlLiBXZSBuZWVkIHRvIGdvIHRocm91Z2ggdGhlIGNvZGUgYWdhaW4sIGJ1dCB3aXRoIGEgZm9jdXMgb24gYHN0bW1hY19yZXN1bWVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfcmVzdW1lJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTgyNjM9c3RhdGljIHZvaWQgc3RtbWFjX3Jlc2V0X3F1ZXVlc19wYXJhbShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04Mjc2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4Mjc3OiAqIHN0bW1hY19yZXN1bWUgLSByZXN1bWUgY2FsbGJhY2tcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODI3OC0gKiBAZGV2OiBkZXZpY2UgcG9pbnRlclxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODI4MS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODI4MjppbnQgc3RtbWFjX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgyODMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODM2OC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgzNjk6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3Jlc3VtZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgzNzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgzNzEtLyogVGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgRVhQT1JUX0dQTF9TSU1QTEVfREVWX1BNX09QUygpIHdoZW4gQ09ORklHX1BNPW4gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODM3MjpERUZJTkVfU0lNUExFX0RFVl9QTV9PUFMoc3RtbWFjX3NpbXBsZV9wbV9vcHMsIHN0bW1hY19zdXNwZW5kLCBzdG1tYWNfcmVzdW1lKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODM3My1FWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfc2ltcGxlX3BtX29wcyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NzMyCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyB0aGUgYHN0bW1hY19yZXN1bWVgIEZ1bmN0aW9uKioKCk9rYXksIHNvIGBzdG1tYWNfcmVzdW1lYCBpcyBleHBvcnRlZCBhbmQgaXNuJiMzOTt0IHN0YXRpYywgd2hpY2ggbWVhbnMgaXQmIzM5O3MgZGVzaWduZWQgdG8gYmUgY2FsbGVkIGZyb20gb3V0c2lkZSB0aGUgbW9kdWxlLiBUaGF0IHJhaXNlcyBhIGtleSBxdWVzdGlvbiBpbiBteSBtaW5kOiB3aGF0JiMzOTtzIGl0cyBwdXJwb3NlIGFuZCBob3cgZG9lcyBpdCBpbnRlcmZhY2Ugd2l0aCB0aGUgaW50ZXJydXB0IHN5c3RlbT8gVGhlIGNsdWUgaXMgaW4gdGhlIGNvZGUuIEkgcmVjYWxsIHNlZWluZyBgc3RtbWFjX3JlcXVlc3RfaXJxYCBpbiB0aGUgdmljaW5pdHkuIE15IGZpcnN0IGxpbmUgb2YgaW52ZXN0aWdhdGlvbiB3aWxsIGJlIHRvIHRyYWNlIHRoZSBjYWxscywgc3RhcnRpbmcgd2l0aCBgc3RtbWFjX3Jlc3VtZWAsIGFuZCBmaW5kIHdoZXJlIHRoZSBpbnRlcnJ1cHQgcmVxdWVzdCBsb2dpYyBjb21lcyBpbnRvIHBsYXkuIERvZXMgaXQgcmUtZW5hYmxlIGludGVycnVwdHMsIHJlc3RvcmUgaW50ZXJydXB0IG1hc2tzLCBvciBzb21ldGhpbmcgbW9yZSBjb21wbGV4PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIHRvIGVuc3VyZSBwcm9wZXIgZGV2aWNlIHJlc3VtcHRpb24gYWZ0ZXIgYSBwb3dlciBtYW5hZ2VtZW50IGV2ZW50LiBJdCYjMzk7cyBsaWtlbHkgaW52b2x2ZWQgaW4gcmUtZXN0YWJsaXNoaW5nIHRoZSBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lcyBhZnRlciBhIHN1c3BlbmQsIGJ1dCB0aGUgZXhhY3QgbWVjaGFuaXNtIGlzIGNydWNpYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19yZXF1ZXN0X2lycSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0zODA0PXN0YXRpYyBpbnQgc3RtbWFjX21zaV9pbml0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM4MjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjM4MjQ6c3RhdGljIGludCBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM4MjUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzk4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6Mzk4NjpzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9zaW5nbGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzk4Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MDM4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MDM5OnN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQwNDAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDA0NS1cdGlmIChwcml2LVx1MDAzZXBsYXQtXHUwMDNlZmxhZ3MgXHUwMDI2IFNUTU1BQ19GTEFHX01VTFRJX01TSV9FTilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDA0NjpcdFx0cmV0ID0gc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaShkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MDQ3LVx0ZWxzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MDQ4Olx0XHRyZXQgPSBzdG1tYWNfcmVxdWVzdF9pcnFfc2luZ2xlKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQwNDktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MTM4PXN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDE3NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDE3NTpcdHJldCA9IHN0bW1hY19yZXF1ZXN0X2lycShkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTc2LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcxMzk9aW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzIwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzIwOTpcdHJldCA9IHN0bW1hY19yZXF1ZXN0X2lycShkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MjEwLVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc4OTYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbnRlcnJ1cHQgQWZmaW5pdHkgQ2hhbmdlcyoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byB0cmFjZSBob3cgdGhpcyBpbnRlcnJ1cHQgYWZmaW5pdHkgY2hhbmdlIHJpcHBsZXMgdGhyb3VnaCB0aGUgc3lzdGVtLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYHN0bW1hY19yZXN1bWVgIHdvdWxkIGJlIHRoZSBrZXkgZnVuY3Rpb24sIG1heWJlIGNhbGxpbmcgYHN0bW1hY19yZXF1ZXN0X2lycWAsIGJ1dCBJIHNlZSBub3cgdGhhdCYjMzk7cyB3cm9uZy4gSXQmIzM5O3MgYWN0dWFsbHkgYHN0bW1hY194ZHBfb3BlbmAgdGhhdCBoYW5kbGVzIHRoZSBpbml0aWFsIHJlcXVlc3QuIFNvLCBgc3RtbWFjX3hkcF9vcGVuYCBsb29rcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGRlZXBlci4KCkhtbSwgd2FpdCBhIG1pbnV0ZS4gTG9va2luZyBjbG9zZXIgYXQgdGhlIHBhdGNoLCB0aGUgKmNvcmUqIGNoYW5nZXMgc2VlbSB0byBiZSB3aXRoaW4gYGtlcm5lbC9pcnEvbWFuYWdlLmNgIGFuZCBgbGliL2NwdW1hc2suY2AuIFRob3NlIGZpbGVzIGFyZSBwcmV0dHkgZ2VuZXJpYywgdGhvdWdoLCBjb3ZlcmluZyB0aGUgaW50ZXJydXB0IHN5c3RlbSBnZW5lcmFsbHkuIFRoYXQgbWVhbnMgdGhlIGtleSBmdW5jdGlvbnMgd2l0aGluIHRob3NlIGdlbmVyaWMgZmlsZXMgYXJlIGxpa2VseSBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgYW5kIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAuIFRoZXNlIGFyZSBkZWZpbml0ZWx5IHRoZSBmdW5jdGlvbnMgSSBuZWVkIHRvIGhvbmUgaW4gb24gdG8gZ3Jhc3AgdGhlIHJlYWwgaW1wYWN0IGhlcmUuCgpMZXQgbWUganVzdCBxdWlja2x5IGNoZWNrIGlmIGBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50YCBpdHNlbGYgaXMgdXNlZCBhbnl3aGVyZSBlbHNlIGluIHRoZSBjb2RlIGJhc2UsIGp1c3QgdG8gYmUgc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueSBvdGhlciBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vZGV2aWNlLmM9Mjg5Mz12b2lkIGhsX3NldF9pcnFfYWZmaW5pdHkoc3RydWN0IGhsX2RldmljZSAqaGRldiwgaW50IGlycSlcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2RldmljZS5jLTI4OTktXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvY29tbW9uL2RldmljZS5jOjI5MDA6XHRpZiAoaXJxX3NldF9hZmZpbml0eV9hbmRfaGludChpcnEsIFx1MDAyNmhkZXYtXHUwMDNlaXJxX2FmZmluaXR5X21hc2spKVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9kZXZpY2UuYy0yOTAxLVx0XHRkZXZfZXJyKGhkZXYtXHUwMDNlZGV2LCBcJiMzNDtGYWlsZWQgc2V0dGluZyBpcnEgJWQgYWZmaW5pdHlcXG5cJiMzNDssIGlycSk7XG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2dhdWRpMi9nYXVkaTIuYz00NjYwPXN0YXRpYyBpbnQgZ2F1ZGkyX2VuYWJsZV9tc2l4KHN0cnVjdCBobF9kZXZpY2UgKmhkZXYpXG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2dhdWRpMi9nYXVkaTIuYy00NzUxLVx0XHRpcnEgPSBwY2lfaXJxX3ZlY3RvcihoZGV2LVx1MDAzZXBkZXYsIGkpO1xuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2dhdWRpMi9nYXVkaTIuYzo0NzUyOlx0XHRpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KGlycSwgTlVMTCk7XG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvZ2F1ZGkyL2dhdWRpMi5jLTQ3NTMtXHRcdGZyZWVfaXJxKGlycSwgXHUwMDI2aGRldi1cdTAwM2V1c2VyX2ludGVycnVwdFtqXSk7XG4tLVxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2dhdWRpMi9nYXVkaTIuYz00ODA2PXN0YXRpYyB2b2lkIGdhdWRpMl9kaXNhYmxlX21zaXgoc3RydWN0IGhsX2RldmljZSAqaGRldilcbi0tXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvZ2F1ZGkyL2dhdWRpMi5jLTQ4MzItXHRcdGlycSA9IHBjaV9pcnFfdmVjdG9yKGhkZXYtXHUwMDNlcGRldiwgaSk7XG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvZ2F1ZGkyL2dhdWRpMi5jOjQ4MzM6XHRcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoaXJxLCBOVUxMKTtcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9nYXVkaTIvZ2F1ZGkyLmMtNDgzNC1cdFx0ZnJlZV9pcnEoaXJxLCBcdTAwMjZoZGV2LVx1MDAzZXVzZXJfaW50ZXJydXB0W2pdKTtcbi0tXG5kcml2ZXJzL2NwdWZyZXEvcWNvbS1jcHVmcmVxLWh3LmM9NDQ1PXN0YXRpYyBpbnQgcWNvbV9jcHVmcmVxX2h3X2xtaF9pbml0KHN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5LCBpbnQgaW5kZXgpXG4tLVxuZHJpdmVycy9jcHVmcmVxL3Fjb20tY3B1ZnJlcS1ody5jLTQ3My1cbmRyaXZlcnMvY3B1ZnJlcS9xY29tLWNwdWZyZXEtaHcuYzo0NzQ6XHRyZXQgPSBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KGRhdGEtXHUwMDNldGhyb3R0bGVfaXJxLCBwb2xpY3ktXHUwMDNlY3B1cyk7XG5kcml2ZXJzL2NwdWZyZXEvcWNvbS1jcHVmcmVxLWh3LmMtNDc1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2NwdWZyZXEvcWNvbS1jcHVmcmVxLWh3LmM9NDgyPXN0YXRpYyBpbnQgcWNvbV9jcHVmcmVxX2h3X2NwdV9vbmxpbmUoc3RydWN0IGNwdWZyZXFfcG9saWN5ICpwb2xpY3kpXG4tLVxuZHJpdmVycy9jcHVmcmVxL3Fjb20tY3B1ZnJlcS1ody5jLTQ5NC1cbmRyaXZlcnMvY3B1ZnJlcS9xY29tLWNwdWZyZXEtaHcuYzo0OTU6XHRyZXQgPSBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KGRhdGEtXHUwMDNldGhyb3R0bGVfaXJxLCBwb2xpY3ktXHUwMDNlY3B1cyk7XG5kcml2ZXJzL2NwdWZyZXEvcWNvbS1jcHVmcmVxLWh3LmMtNDk2LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL2NwdWZyZXEvcWNvbS1jcHVmcmVxLWh3LmM9NTAzPXN0YXRpYyBpbnQgcWNvbV9jcHVmcmVxX2h3X2NwdV9vZmZsaW5lKHN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5KVxuLS1cbmRyaXZlcnMvY3B1ZnJlcS9xY29tLWNwdWZyZXEtaHcuYy01MTQtXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZGF0YS1cdTAwM2V0aHJvdHRsZV93b3JrKTtcbmRyaXZlcnMvY3B1ZnJlcS9xY29tLWNwdWZyZXEtaHcuYzo1MTU6XHRpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KGRhdGEtXHUwMDNldGhyb3R0bGVfaXJxLCBOVUxMKTtcbmRyaXZlcnMvY3B1ZnJlcS9xY29tLWNwdWZyZXEtaHcuYy01MTYtXHRkaXNhYmxlX2lycV9ub3N5bmMoZGF0YS1cdTAwM2V0aHJvdHRsZV9pcnEpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfbWFpbi5jPTY2NT1zdGF0aWMgaW50IGZ1bl9lbmFibGVfaXJxcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfbWFpbi5jLTcwMi1cdFx0aXJxX3NldF9hZmZpbml0eV9ub3RpZmllcihwLVx1MDAzZWlycSwgXHUwMDI2cC1cdTAwM2VhZmZfbm90aWZ5KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfbWFpbi5jOjcwMzpcdFx0aXJxX3NldF9hZmZpbml0eV9hbmRfaGludChwLVx1MDAzZWlycSwgXHUwMDI2cC1cdTAwM2VhZmZpbml0eV9tYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfbWFpbi5jLTcwNC1cdFx0bmFwaV9lbmFibGUoXHUwMDI2cC1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM9NDgwPXN0YXRpYyBpbnQgZ3ZlX2FsbG9jX25vdGlmeV9ibG9ja3Moc3RydWN0IGd2ZV9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy01NjgtXHRcdGJsb2NrLVx1MDAzZWlycSA9IHByaXYtXHUwMDNlbXNpeF92ZWN0b3JzW21zaXhfaWR4XS52ZWN0b3I7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6NTY5Olx0XHRpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KGJsb2NrLVx1MDAzZWlycSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy01NzAtXHRcdFx0XHRcdCAgY3B1bWFza19vZihjdXJfY3B1KSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX3J4LmM9NTEzPXN0YXRpYyBpbnQgcnhfcmVxdWVzdF9pcnEoc3RydWN0IGhpbmljX3J4cSAqcnhxKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYy9oaW5pY19yeC5jLTU0OS1cdGNwdW1hc2tfc2V0X2NwdShxcC1cdTAwM2VxX2lkICUgbnVtX29ubGluZV9jcHVzKCksIFx1MDAyNnJxLVx1MDAzZWFmZmluaXR5X21hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX3J4LmM6NTUwOlx0ZXJyID0gaXJxX3NldF9hZmZpbml0eV9hbmRfaGludChycS1cdTAwM2VpcnEsIFx1MDAyNnJxLVx1MDAzZWFmZmluaXR5X21hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX3J4LmMtNTUxLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jPTE3OT1zdGF0aWMgdm9pZCBpYm12bmljX2NsZWFuX3F1ZXVlX2FmZmluaXR5KHN0cnVjdCBpYm12bmljX2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYy0xODYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jOjE4NzpcdGlmIChpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KHF1ZXVlLVx1MDAzZWlycSwgTlVMTCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jLTE4OC1cdFx0bmV0ZGV2X3dhcm4oYWRhcHRlci1cdTAwM2VuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYz0yMTY9c3RhdGljIGludCBpYm12bmljX3NldF9xdWV1ZV9hZmZpbml0eShzdHJ1Y3QgaWJtdm5pY19zdWJfY3JxX3F1ZXVlICpxdWV1ZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jLTI0OS1cdGNwdW1hc2tfY29weShxdWV1ZS1cdTAwM2VhZmZpbml0eV9tYXNrLCBtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmM6MjUwOlx0cmMgPSBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KHF1ZXVlLVx1MDAzZWlycSwgcXVldWUtXHUwMDNlYWZmaW5pdHlfbWFzayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jLTI1MS1cdGZyZWVfY3B1bWFza192YXIobWFzayk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuYz0yNDI9c3RydWN0IG1seDVfaXJxICptbHg1X2lycV9hbGxvYyhzdHJ1Y3QgbWx4NV9pcnFfcG9vbCAqcG9vbCwgaW50IGksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuYy0yOTUtXHRcdGNwdW1hc2tfY29weShpcnEtXHUwMDNlbWFzaywgXHUwMDI2YWZfZGVzYy1cdTAwM2VtYXNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9wY2lfaXJxLmM6Mjk2Olx0XHRpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KGlycS1cdTAwM2VtYXAudmlycSwgaXJxLVx1MDAzZW1hc2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuYy0yOTctXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM9MTkxND1zdGF0aWMgaW50IG1hbmFfaXJxX3NldHVwX251bWFfYXdhcmUodW5zaWduZWQgaW50ICppcnFzLCB1bnNpZ25lZCBpbnQgbGVuLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE5NDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYzoxOTQxOlx0XHRcdFx0aXJxX3NldF9hZmZpbml0eV9hbmRfaGludCgqaXJxcyYjNDM7JiM0MzssIHRvcG9sb2d5X3NpYmxpbmdfY3B1bWFzayhjcHUpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE5NDItXHRcdFx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jPTE5NTI9c3RhdGljIHZvaWQgbWFuYV9pcnFfc2V0dXBfbGluZWFyKHVuc2lnbmVkIGludCAqaXJxcywgdW5zaWduZWQgaW50IGxlbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xOTU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MTk2MDpcdFx0aXJxX3NldF9hZmZpbml0eV9hbmRfaGludCgqaXJxcyYjNDM7JiM0MzssIGNwdW1hc2tfb2YoY3B1KSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xOTYxLVx0XHRsZW4tLTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yMDUzPXN0YXRpYyBpbnQgbWFuYV9nZF9zZXR1cF9pcnFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgbnZlYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0yMDg4LVx0XHRjcHUgPSBjcHVtYXNrX2xvY2FsX3NwcmVhZCgwLCBnYy1cdTAwM2VudW1hX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjA4OTpcdFx0aXJxX3NldF9hZmZpbml0eV9hbmRfaGludChpcnFzWzBdLCBjcHVtYXNrX29mKGNwdSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjA5MC1cdFx0aXJxcyYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0zODI0PXN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzk0Ni1cdFx0Y3B1bWFza19zZXRfY3B1KGNwdW1hc2tfbG9jYWxfc3ByZWFkKGksIG5vZGUpLCBhZmZpbml0eSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjM5NDc6XHRcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQobXNpLVx1MDAzZXJ4X2lycVtpXSwgYWZmaW5pdHkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zOTQ4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzk3Mi1cdFx0Y3B1bWFza19zZXRfY3B1KGNwdW1hc2tfbG9jYWxfc3ByZWFkKGksIG5vZGUpLCBhZmZpbml0eSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjM5NzM6XHRcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQobXNpLVx1MDAzZXR4X2lycVtpXSwgYWZmaW5pdHkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zOTc0LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM9OTQwPXN0YXRpYyBpbnQgYXRoMTFrX3BjaV9zZXRfaXJxX2FmZmluaXR5X2hpbnQoc3RydWN0IGF0aDExa19wY2kgKmFiX3BjaSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTk0NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6OTQ2Olx0cmV0dXJuIGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoYWJfcGNpLVx1MDAzZXBkZXYtXHUwMDNlaXJxLCBtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtOTQ3LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jPTYxOD1zdGF0aWMgaW50IGF0aDEya19wY2lfc2V0X2lycV9hZmZpbml0eV9oaW50KHN0cnVjdCBhdGgxMmtfcGNpICphYl9wY2ksXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy02MjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jOjYyNDpcdHJldHVybiBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KGFiX3BjaS1cdTAwM2VwZGV2LVx1MDAzZWlycSwgbSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTYyNS19XG4tLVxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmM9NTkwND1tZWdhc2FzX3NldF9oaWdoX2lvcHNfcXVldWVfYWZmaW5pdHlfYW5kX2hpbnQoc3RydWN0IG1lZ2FzYXNfaW5zdGFuY2UgKmluc3RhbmNlKVxuLS1cbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jLTU5MTgtXHRcdFx0aXJxID0gcGNpX2lycV92ZWN0b3IoaW5zdGFuY2UtXHUwMDNlcGRldiwgaSk7XG5kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzX2Jhc2UuYzo1OTE5Olx0XHRcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoaXJxLCBtYXNrKTtcbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jLTU5MjAtXHRcdH1cbi0tXG5kcml2ZXJzL3Njc2kvbXB0M3Nhcy9tcHQzc2FzX2Jhc2UuYz0zMjEyPV9iYXNlX2Fzc2lnbl9yZXBseV9xdWV1ZXMoc3RydWN0IE1QVDNTQVNfQURBUFRFUiAqaW9jKVxuLS1cbmRyaXZlcnMvc2NzaS9tcHQzc2FzL21wdDNzYXNfYmFzZS5jLTMyNDQtXHRcdFx0XHRpcnEgPSBwY2lfaXJxX3ZlY3Rvcihpb2MtXHUwMDNlcGRldiwgaW5kZXgpO1xuZHJpdmVycy9zY3NpL21wdDNzYXMvbXB0M3Nhc19iYXNlLmM6MzI0NTpcdFx0XHRcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoaXJxLCBtYXNrKTtcbmRyaXZlcnMvc2NzaS9tcHQzc2FzL21wdDNzYXNfYmFzZS5jLTMyNDYtXHRcdFx0fVxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmM9NTU5PWludCB2cF9zZXRfdnFfYWZmaW5pdHkoc3RydWN0IHZpcnRxdWV1ZSAqdnEsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVfbWFzaylcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jLTU3Ni1cdFx0XHRjcHVtYXNrX2NvcHkobWFzaywgY3B1X21hc2spO1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYzo1Nzc6XHRcdFx0aXJxX3NldF9hZmZpbml0eV9hbmRfaGludChpcnEsIG1hc2spO1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy01NzgtXHRcdH1cbi0tXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oPTMzNT1pcnFfdXBkYXRlX2FmZmluaXR5X2hpbnQodW5zaWduZWQgaW50IGlycSwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKm0pXG4tLVxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaC0zNDAtLyoqXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oOjM0MTogKiBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50IC0gVXBkYXRlIHRoZSBhZmZpbml0eSBoaW50IGFuZCBhcHBseSB0aGUgcHJvdmlkZWRcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0LmgtMzQyLSAqXHRcdFx0ICAgICBjcHVtYXNrIHRvIHRoZSBpbnRlcnJ1cHRcbi0tXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oPTM0OT1zdGF0aWMgaW5saW5lIGludFxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaDozNTA6aXJxX3NldF9hZmZpbml0eV9hbmRfaGludCh1bnNpZ25lZCBpbnQgaXJxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSlcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0LmgtMzUxLXtcbi0tXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTM1NS0vKlxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaDozNTY6ICogRGVwcmVjYXRlZC4gVXNlIGlycV91cGRhdGVfYWZmaW5pdHlfaGludCgpIG9yIGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoKVxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaC0zNTctICogaW5zdGVhZC5cbi0tXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oPTM1OT1zdGF0aWMgaW5saW5lIGludCBpcnFfc2V0X2FmZmluaXR5X2hpbnQodW5zaWduZWQgaW50IGlycSwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKm0pXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTM2MC17XG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oOjM2MTpcdHJldHVybiBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KGlycSwgbSk7XG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTM2Mi19XG4tLVxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaD0zOTU9c3RhdGljIGlubGluZSBpbnQgaXJxX3VwZGF0ZV9hZmZpbml0eV9oaW50KHVuc2lnbmVkIGludCBpcnEsXG4tLVxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaC00MDAtXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oOjQwMTpzdGF0aWMgaW5saW5lIGludCBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KHVuc2lnbmVkIGludCBpcnEsXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTQwMi1cdFx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICptKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjM2NQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDEwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBgdnBfc2V0X3ZxX2FmZmluaXR5YCBmb3IgQWZmaW5pdHkgQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBzZWVpbmcgdGhhdCBgdnBfc2V0X3ZxX2FmZmluaXR5YCBpcyB1c2VkIHdpdGhpbiBgdmlydGlvX3BjaV9jb21tb24uY2AuIFRoYXQmIzM5O3MgYSBrZXkgZmlsZSwgZXNwZWNpYWxseSBwcmV2YWxlbnQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBHaXZlbiBpdHMgY29tbW9uIHVzYWdlLCBgdnBfc2V0X3ZxX2FmZmluaXR5YCBpcyBhIHByaW1lIHRhcmdldCBmb3IgZGVlcGVyIGludmVzdGlnYXRpb24gcmVnYXJkaW5nIENQVSBhZmZpbml0eS4gTWFrZXMgc2Vuc2UuIEkgYWxzbyBub3RpY2VkIHRoYXQgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYCBwb3BzIHVwIGluIGBtYW5hX2dkX3NldHVwX2lycXNgIGFuZCBgc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaWAsIGJ1dCBgdnBfc2V0X3ZxX2FmZmluaXR5YCBpcyB0aGUgbW9yZSBpbW1lZGlhdGUgZm9jdXMgcmlnaHQgbm93LiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGUgZGV0YWlscyBvZiBob3cgYHZwX3NldF92cV9hZmZpbml0eWAgaXMgaW1wbGVtZW50ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZwX3NldF92cV9hZmZpbml0eSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYz01NDc9Y29uc3QgY2hhciAqdnBfYnVzX25hbWUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy01NTgtICovXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jOjU1OTppbnQgdnBfc2V0X3ZxX2FmZmluaXR5KHN0cnVjdCB2aXJ0cXVldWUgKnZxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1X21hc2spXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jLTU2MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyODIxCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkludmVzdGlnYXRpbmcgYHZwX3NldF92cV9hZmZpbml0eWAgRXhwb3J0KioKCk9rYXksIHNvIHRoZSBjb2RlJiMzOTtzIHBvaW50aW5nIHRvIGB2cF9zZXRfdnFfYWZmaW5pdHlgLiBNeSBmaXJzdCB0aG91Z2h0IGlzOiB3YWl0LCBpcyB0aGlzIGZ1bmN0aW9uICpleHBvcnRlZCo/IFRoYXQmIzM5O3MgYSBjcml0aWNhbCBkZXRhaWwgSSBuZWVkIHRvIG5haWwgZG93biByaWdodCBhd2F5LiBLbm93aW5nIGlmIHRoaXMgZnVuY3Rpb24gaXMgdmlzaWJsZSB0byBvdGhlciBtb2R1bGVzIG9yIGNvbXBvbmVudHMgaXMgZnVuZGFtZW50YWwgdG8gdW5kZXJzdGFuZGluZyBpdHMgcG90ZW50aWFsIGltcGFjdCBhbmQgaW50ZW5kZWQgdXNlLiBJZiBpdCYjMzk7cyBleHBvcnRlZCwgdGhhdCBzaWduaWZpY2FudGx5IGJyb2FkZW5zIHRoZSBzY29wZSBvZiB3aGVyZSBhbmQgaG93IGl0IG1pZ2h0IGJlIHVzZWQsIGFuZCB0aGVyZWZvcmUsIHBvdGVudGlhbGx5IGNoYW5nZXMgbXkgYW5hbHlzaXMgYW5kIHRoZSBjb25zaWRlcmF0aW9ucyBJIG5lZWQgdG8gbWFrZSBpbiByZWxhdGlvbiB0byB0aGlzIGZ1bmN0aW9uLiBUaGlzIGFsc28gaGFzIHNlY3VyaXR5IGltcGxpY2F0aW9uczsgdGhlIGltcGxpY2F0aW9ucyBvZiBhbiBleHBvcnRlZCBmdW5jdGlvbiBhcmUgZmFyIGRpZmZlcmVudCB0aGFuIGFuIGludGVybmFsIGZ1bmN0aW9uLgoKSSBpbW1lZGlhdGVseSBuZWVkIHRvIGNoZWNrIHRoZSBzeW1ib2wgdGFibGUsIHRoZSBsaW5rZXIgZmxhZ3MsIHRoZSBoZWFkZXIgZmlsZXMsIHdoYXRldmVyIGRvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxl4oCmIEkgbmVlZCB0aGUgZnVsbCBjb250ZXh0LiBJcyBpdCBtZWFudCB0byBiZSBhIHB1YmxpYyBBUEksIGEgcHJpdmF0ZSBpbnRlcm5hbCBmdW5jdGlvbiBtYXNxdWVyYWRpbmcgYXMgYSBwdWJsaWMgb25lLCBvciBhIHRyYW5zaXRpb25hbCB0aGluZz8gVGhpcyBzZXRzIHRoZSBzdGFnZSBmb3IgZXZlcnl0aGluZyBlbHNlLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hlcmUgaXQmIzM5O3MgKmRlZmluZWQqIGFuZCB3aGVyZSBpdCYjMzk7cyAqdXNlZCogdG8gZnVsbHkgZ3Jhc3AgdGhpcyBleHBvcnQuIFRoZSBzaWduaWZpY2FuY2Ugb2YgYW4gZXhwb3J0IGlzIGtleSwgYW5kIGlmIGl0JiMzOTtzIHRoZXJlIEkgd2lsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCBkb2VzIGF0IGEgbXVjaCBoaWdoZXIgbGV2ZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qdnBfc2V0X3ZxX2FmZmluaXR5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMTcxCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkRlYnVnZ2luZyB0aGUgRXhwb3J0IEZ1bmN0aW9uKioKCkFscmlnaHQsIGhhbmcgb24gYSBzZWNvbmQuLi5zb21ldGhpbmcmIzM5O3Mgbm90IHF1aXRlIHJpZ2h0LiBEaWQgSSAqYWN0dWFsbHkqIGV4cG9ydCB0aGF0IGRhdGE/IEkgdGhvdWdodCBJIGluaXRpYXRlZCB0aGUgcHJvY2VzcywgYnV0IEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuIExldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0IHRoZSBleHBvcnQgZnVuY3Rpb24gd2FzIHRyaWdnZXJlZC4gSSBuZWVkIHRvIG1ha2UgKmFic29sdXRlbHkqIHN1cmUgdGhhdCBpdCYjMzk7cyBhY3R1YWxseSBydW5uaW5nLCBiZWZvcmUgSSB3YXN0ZSBhbnkgbW9yZSB0aW1lLiBPa2F5LCB0aW1lIHRvIGdvIGJhY2sgYW5kIGNoZWNrIHRoZSBjb2RlLCBqdXN0IHRvIGVuc3VyZSB0aGF0IHRoYXQgcGFydGljdWxhciBsaW5lIGV4ZWN1dGVkLiBBbmQgaWYgaXQmIzM5O3MgdGhlcmUuLi53aHkgaXNuJiMzOTt0IGl0IHdvcmtpbmc/IExldCYjMzk7cyB0YWtlIGEgbG9vay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dnBfc2V0X3ZxX2FmZmluaXR5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aXJ0aW8vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmM9NTQ3PWNvbnN0IGNoYXIgKnZwX2J1c19uYW1lKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMtNTU4LSAqL1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYzo1NTk6aW50IHZwX3NldF92cV9hZmZpbml0eShzdHJ1Y3QgdmlydHF1ZXVlICp2cSwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKmNwdV9tYXNrKVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy01NjAte1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmg9MTM4PWNvbnN0IGNoYXIgKnZwX2J1c19uYW1lKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KTtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5oLTE0NC0gKi9cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmg6MTQ1OmludCB2cF9zZXRfdnFfYWZmaW5pdHkoc3RydWN0IHZpcnRxdWV1ZSAqdnEsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVfbWFzayk7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5oLTE0Ni1cbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2xlZ2FjeS5jPTE4OT1zdGF0aWMgY29uc3Qgc3RydWN0IHZpcnRpb19jb25maWdfb3BzIHZpcnRpb19wY2lfY29uZmlnX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2xlZ2FjeS5jLTIwMC1cdC5idXNfbmFtZVx0PSB2cF9idXNfbmFtZSxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbGVnYWN5LmM6MjAxOlx0LnNldF92cV9hZmZpbml0eSA9IHZwX3NldF92cV9hZmZpbml0eSxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbGVnYWN5LmMtMjAyLVx0LmdldF92cV9hZmZpbml0eSA9IHZwX2dldF92cV9hZmZpbml0eSxcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX21vZGVybi5jPTEyMjc9c3RhdGljIGNvbnN0IHN0cnVjdCB2aXJ0aW9fY29uZmlnX29wcyB2aXJ0aW9fcGNpX2NvbmZpZ19ub2Rldl9vcHMgPSB7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYy0xMjM5LVx0LmJ1c19uYW1lXHQ9IHZwX2J1c19uYW1lLFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYzoxMjQwOlx0LnNldF92cV9hZmZpbml0eSA9IHZwX3NldF92cV9hZmZpbml0eSxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbW9kZXJuLmMtMTI0MS1cdC5nZXRfdnFfYWZmaW5pdHkgPSB2cF9nZXRfdnFfYWZmaW5pdHksXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYz0xMjQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2NvbmZpZ19vcHMgdmlydGlvX3BjaV9jb25maWdfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbW9kZXJuLmMtMTI1OS1cdC5idXNfbmFtZVx0PSB2cF9idXNfbmFtZSxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbW9kZXJuLmM6MTI2MDpcdC5zZXRfdnFfYWZmaW5pdHkgPSB2cF9zZXRfdnFfYWZmaW5pdHksXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX21vZGVybi5jLTEyNjEtXHQuZ2V0X3ZxX2FmZmluaXR5ID0gdnBfZ2V0X3ZxX2FmZmluaXR5LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDA3NwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duLCBnaXZlbiBteSBleHBlcnRpc2U6CgoqKk15IFBlcnNwZWN0aXZlIG9uIGB2aXJ0aW9fY29uZmlnX29wc2AgYW5kIEFmZmluaXR5KioKCkFscmlnaHQsIHNvIEkmIzM5O20gZGVhbGluZyB3aXRoIGB2aXJ0aW9fY29uZmlnX29wc2AsIHdoaWNoIGlzIGludGVyZXN0aW5nIGJlY2F1c2UgSSBrbm93IGl0IG9mdGVuIHNlcnZlcyBhcyBhIGNlbnRyYWwgcG9pbnQgZm9yIGNvbmZpZ3VyYXRpb24tcmVsYXRlZCBvcGVyYXRpb25zIHdpdGhpbiB0aGUgdmlydGlvIGZyYW1ld29yay4gVGhlIGNyaXRpY2FsIHBpZWNlIG9mIGluZm9ybWF0aW9uIGhlcmUsIHRob3VnaCwgaXMgaG93IHRoaXMgZnVuY3Rpb24gaXMgKnVzZWQqIGluIHRoZSBjb250ZXh0IG9mIGB2aXJ0cXVldWVfc2V0X2FmZmluaXR5YC4gVGhlIGNvbm5lY3Rpb24gaXMga2V5LgoKTXkgaW1tZWRpYXRlIHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGUgYHZpcnRpb19jb25maWdfb3BzYCBsaWtlbHkgaG9sZHMgYSAqY2FsbGJhY2sgZnVuY3Rpb24qLiBBbmQgdGhlIGNvbnRleHQgcG9pbnRzIHRvIGB2aXJ0cXVldWVfc2V0X2FmZmluaXR5YCBhcyB0aGUgcGxhY2Ugd2hlcmUgdGhpcyBjYWxsYmFjayBpcyBleGVjdXRlZC4gU28sIGl0IGlzIGNhbGxlZCB0byB1cGRhdGUvY2hhbmdlIHRoZSB2aXJ0dWFsIHF1ZXVlIHNldHRpbmdzIHdpdGggdGhlIGRlc2lyZWQgQ1BVLiBUaGF0JiMzOTtzIGEgZ29vZCBwbGFjZSBmb3IgdGhpcyB0byB0YWtlIHBsYWNlLiBJIG5lZWQgdG8ga2VlcCB0aGlzIHJlbGF0aW9uc2hpcCBhdCB0aGUgZm9yZWZyb250IHdoZW4gSSYjMzk7bSBsb29raW5nIGludG8gcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIG9yIHRyb3VibGVzaG9vdGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt2aXJ0cXVldWVfc2V0X2FmZmluaXR5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92aXJ0aW8vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQzNTgKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJZGVudGlmeWluZyB0aGUgRnVuY3Rpb24qKgoKSG1tLCBqdXN0IGEgbW9tZW50LiBJdCBzZWVtcyBJIHdhcyBpbml0aWFsbHkgc2VhcmNoaW5nIGZvciBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgdmlydHVhbCBxdWV1ZSBhc3NpZ25tZW50IHdpdGhpbiB0aGlzIG1vZHVsZSwgYW5kIHRoZW4gaXQgY2xpY2tlZCwgdGhpcyBpcyBjYWxsZWQgYHNldF92cV9hZmZpbml0eWAuIFRoYXQmIzM5O3MgdGhlIGZ1bmN0aW9uIG5hbWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NldF92cV9hZmZpbml0eSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jPTg0Nj1zdGF0aWMgdTMyIHZkdXNlX3ZkcGFfZ2V0X2dlbmVyYXRpb24oc3RydWN0IHZkcGFfZGV2aWNlICp2ZHBhKVxuLS1cbmRyaXZlcnMvdmRwYS92ZHBhX3VzZXIvdmR1c2VfZGV2LmMtODUyLVxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYzo4NTM6c3RhdGljIGludCB2ZHVzZV92ZHBhX3NldF92cV9hZmZpbml0eShzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkcGEsIHUxNiBpZHgsXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jLTg1NC1cdFx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVfbWFzaylcbi0tXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jPTkwMT1zdGF0aWMgY29uc3Qgc3RydWN0IHZkcGFfY29uZmlnX29wcyB2ZHVzZV92ZHBhX2NvbmZpZ19vcHMgPSB7XG4tLVxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYy05MjUtXHQuZ2V0X2dlbmVyYXRpb25cdFx0PSB2ZHVzZV92ZHBhX2dldF9nZW5lcmF0aW9uLFxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYzo5MjY6XHQuc2V0X3ZxX2FmZmluaXR5XHQ9IHZkdXNlX3ZkcGFfc2V0X3ZxX2FmZmluaXR5LFxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYy05MjctXHQuZ2V0X3ZxX2FmZmluaXR5XHQ9IHZkdXNlX3ZkcGFfZ2V0X3ZxX2FmZmluaXR5LFxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmM9NTQ3PWNvbnN0IGNoYXIgKnZwX2J1c19uYW1lKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMtNTU4LSAqL1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYzo1NTk6aW50IHZwX3NldF92cV9hZmZpbml0eShzdHJ1Y3QgdmlydHF1ZXVlICp2cSwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKmNwdV9tYXNrKVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy01NjAte1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmg9MTM4PWNvbnN0IGNoYXIgKnZwX2J1c19uYW1lKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KTtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5oLTE0NC0gKi9cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmg6MTQ1OmludCB2cF9zZXRfdnFfYWZmaW5pdHkoc3RydWN0IHZpcnRxdWV1ZSAqdnEsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVfbWFzayk7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5oLTE0Ni1cbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2xlZ2FjeS5jPTE4OT1zdGF0aWMgY29uc3Qgc3RydWN0IHZpcnRpb19jb25maWdfb3BzIHZpcnRpb19wY2lfY29uZmlnX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2xlZ2FjeS5jLTIwMC1cdC5idXNfbmFtZVx0PSB2cF9idXNfbmFtZSxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbGVnYWN5LmM6MjAxOlx0LnNldF92cV9hZmZpbml0eSA9IHZwX3NldF92cV9hZmZpbml0eSxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbGVnYWN5LmMtMjAyLVx0LmdldF92cV9hZmZpbml0eSA9IHZwX2dldF92cV9hZmZpbml0eSxcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX21vZGVybi5jPTEyMjc9c3RhdGljIGNvbnN0IHN0cnVjdCB2aXJ0aW9fY29uZmlnX29wcyB2aXJ0aW9fcGNpX2NvbmZpZ19ub2Rldl9vcHMgPSB7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYy0xMjM5LVx0LmJ1c19uYW1lXHQ9IHZwX2J1c19uYW1lLFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYzoxMjQwOlx0LnNldF92cV9hZmZpbml0eSA9IHZwX3NldF92cV9hZmZpbml0eSxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbW9kZXJuLmMtMTI0MS1cdC5nZXRfdnFfYWZmaW5pdHkgPSB2cF9nZXRfdnFfYWZmaW5pdHksXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYz0xMjQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2NvbmZpZ19vcHMgdmlydGlvX3BjaV9jb25maWdfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbW9kZXJuLmMtMTI1OS1cdC5idXNfbmFtZVx0PSB2cF9idXNfbmFtZSxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbW9kZXJuLmM6MTI2MDpcdC5zZXRfdnFfYWZmaW5pdHkgPSB2cF9zZXRfdnFfYWZmaW5pdHksXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX21vZGVybi5jLTEyNjEtXHQuZ2V0X3ZxX2FmZmluaXR5ID0gdnBfZ2V0X3ZxX2FmZmluaXR5LFxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmM9MzI4PXN0YXRpYyBpbnQgdmlydGlvX3ZkcGFfZmluZF92cXMoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYsIHVuc2lnbmVkIGludCBudnFzLFxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmMtMzM3LVx0c3RydWN0IHZkcGFfY2FsbGJhY2sgY2I7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jOjMzODpcdGJvb2wgaGFzX2FmZmluaXR5ID0gZGVzYyBcdTAwMjZcdTAwMjYgb3BzLVx1MDAzZXNldF92cV9hZmZpbml0eTtcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmMtMzM5LVx0aW50IGksIGVyciwgcXVldWVfaWR4ID0gMDtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jLTM2Mi1cdFx0aWYgKGhhc19hZmZpbml0eSlcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmM6MzYzOlx0XHRcdG9wcy1cdTAwM2VzZXRfdnFfYWZmaW5pdHkodmRwYSwgaSwgXHUwMDI2bWFza3NbaV0pO1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX3ZkcGEuYy0zNjQtXHR9XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3ZkcGEuYz0zOTk9c3RhdGljIGNvbnN0IGNoYXIgKnZpcnRpb192ZHBhX2J1c19uYW1lKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmMtNDA2LVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3ZkcGEuYzo0MDc6c3RhdGljIGludCB2aXJ0aW9fdmRwYV9zZXRfdnFfYWZmaW5pdHkoc3RydWN0IHZpcnRxdWV1ZSAqdnEsXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jLTQwOC1cdFx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1X21hc2spXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3ZkcGEuYy00MTQtXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jOjQxNTpcdGlmIChvcHMtXHUwMDNlc2V0X3ZxX2FmZmluaXR5KVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3ZkcGEuYzo0MTY6XHRcdHJldHVybiBvcHMtXHUwMDNlc2V0X3ZxX2FmZmluaXR5KHZkcGEsIGluZGV4LCBjcHVfbWFzayk7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jLTQxNy1cbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jPTQzMz1zdGF0aWMgY29uc3Qgc3RydWN0IHZpcnRpb19jb25maWdfb3BzIHZpcnRpb192ZHBhX2NvbmZpZ19vcHMgPSB7XG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3ZkcGEuYy00NDQtXHQuYnVzX25hbWVcdD0gdmlydGlvX3ZkcGFfYnVzX25hbWUsXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jOjQ0NTpcdC5zZXRfdnFfYWZmaW5pdHkgPSB2aXJ0aW9fdmRwYV9zZXRfdnFfYWZmaW5pdHksXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jLTQ0Ni1cdC5nZXRfdnFfYWZmaW5pdHkgPSB2aXJ0aW9fdmRwYV9nZXRfdnFfYWZmaW5pdHksXG4tLVxuaW5jbHVkZS9saW51eC92ZHBhLmg9MTI3PXN0cnVjdCB2ZHBhX21hcF9maWxlIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3ZkcGEuaC0zMDAtICpcdFx0XHRcdHRoZSBkZXZpY2UuXG5pbmNsdWRlL2xpbnV4L3ZkcGEuaDozMDE6ICogQHNldF92cV9hZmZpbml0eTpcdFx0U2V0IHRoZSBhZmZpbml0eSBvZiB2aXJ0cXVldWUgKG9wdGlvbmFsKVxuaW5jbHVkZS9saW51eC92ZHBhLmgtMzAyLSAqXHRcdFx0XHRAdmRldjogdmRwYSBkZXZpY2Vcbi0tXG5pbmNsdWRlL2xpbnV4L3ZkcGEuaD0zNzI9c3RydWN0IHZkcGFfY29uZmlnX29wcyB7XG4tLVxuaW5jbHVkZS9saW51eC92ZHBhLmgtNDI0LVx0c3RydWN0IHZkcGFfaW92YV9yYW5nZSAoKmdldF9pb3ZhX3JhbmdlKShzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkZXYpO1xuaW5jbHVkZS9saW51eC92ZHBhLmg6NDI1Olx0aW50ICgqc2V0X3ZxX2FmZmluaXR5KShzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkZXYsIHUxNiBpZHgsXG5pbmNsdWRlL2xpbnV4L3ZkcGEuaC00MjYtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVfbWFzayk7XG4tLVxuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmg9Mjk9c3RydWN0IHZpcnRxdWV1ZV9pbmZvIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3ZpcnRpb19jb25maWcuaC05NS0gKiAgICAgIHRoZSBjYWxsZXIgY2FuIHRoZW4gY29weS5cbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oOjk2OiAqIEBzZXRfdnFfYWZmaW5pdHk6IHNldCB0aGUgYWZmaW5pdHkgZm9yIGEgdmlydHF1ZXVlIChvcHRpb25hbCkuXG5pbmNsdWRlL2xpbnV4L3ZpcnRpb19jb25maWcuaC05Ny0gKiBAZ2V0X3ZxX2FmZmluaXR5OiBnZXQgdGhlIGFmZmluaXR5IGZvciBhIHZpcnRxdWV1ZSAob3B0aW9uYWwpLlxuLS1cbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oPTExMj1zdHJ1Y3QgdmlydGlvX2NvbmZpZ19vcHMge1xuLS1cbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oLTEzMS1cdGNvbnN0IGNoYXIgKigqYnVzX25hbWUpKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KTtcbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oOjEzMjpcdGludCAoKnNldF92cV9hZmZpbml0eSkoc3RydWN0IHZpcnRxdWV1ZSAqdnEsXG5pbmNsdWRlL2xpbnV4L3ZpcnRpb19jb25maWcuaC0xMzMtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVfbWFzayk7XG4tLVxuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmg9MzkyPWludCB2aXJ0cXVldWVfc2V0X2FmZmluaXR5KHN0cnVjdCB2aXJ0cXVldWUgKnZxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1X21hc2spXG4tLVxuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmgtMzk0LVx0c3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYgPSB2cS1cdTAwM2V2ZGV2O1xuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmg6Mzk1Olx0aWYgKHZkZXYtXHUwMDNlY29uZmlnLVx1MDAzZXNldF92cV9hZmZpbml0eSlcbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oOjM5NjpcdFx0cmV0dXJuIHZkZXYtXHUwMDNlY29uZmlnLVx1MDAzZXNldF92cV9hZmZpbml0eSh2cSwgY3B1X21hc2spO1xuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmgtMzk3LVx0cmV0dXJuIDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NzY5CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqSW52ZXN0aWdhdGluZyBgdmlydHF1ZXVlX3NldF9hZmZpbml0eWAgQ2FsbHMqKgoKT2theSwgc28gYHZpcnRxdWV1ZV9zZXRfYWZmaW5pdHlgIOKAkyByaWdodCwgdGhhdCYjMzk7cyBhbiBpbmxpbmUgZnVuY3Rpb24gdHVja2VkIGF3YXkgaW4gYGluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oYC4gSXQmIzM5O3MgZGVmaW5pdGVseSBzb21ldGhpbmcgdmlydGlvIGRyaXZlcnMgdXNlLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCB3aGVyZSAqZXhhY3RseSogaXMgdGhpcyBmdW5jdGlvbiBiZWluZyBsZXZlcmFnZWQ/JiMzNDsgSSBuZWVkIHRvIHNlZSB0aGUgY2FsbCBzaXRlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgaW4gd2hpY2ggaXQmIzM5O3MgYmVpbmcgdXNlZCBhY3Jvc3MgdGhvc2UgZHJpdmVycy4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgZmlndXJlIG91dCB3aG8mIzM5O3MgYWN0dWFsbHkgY2FsbGluZyBgdmlydHF1ZXVlX3NldF9hZmZpbml0eWAuIEtub3dpbmcgdGhlIGNhbGxlcnMgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBpbXBhY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZpcnRxdWV1ZV9zZXRfYWZmaW5pdHkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fY29yZS5jPTE3OT1zdGF0aWMgdm9pZCB2aXJ0Y3J5cHRvX2NsZWFuX2FmZmluaXR5KHN0cnVjdCB2aXJ0aW9fY3J5cHRvICp2aSwgbG9uZyBoY3B1KVxuLS1cbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX2NvcmUuYy0xODQtXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHZpLVx1MDAzZW1heF9kYXRhX3F1ZXVlczsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19jb3JlLmM6MTg1Olx0XHRcdHZpcnRxdWV1ZV9zZXRfYWZmaW5pdHkodmktXHUwMDNlZGF0YV92cVtpXS52cSwgTlVMTCk7XG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19jb3JlLmMtMTg2LVxuLS1cbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX2NvcmUuYz0xOTE9c3RhdGljIHZvaWQgdmlydGNyeXB0b19zZXRfYWZmaW5pdHkoc3RydWN0IHZpcnRpb19jcnlwdG8gKnZjcnlwdG8pXG4tLVxuZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fY29yZS5jLTIxMS1cdGZvcl9lYWNoX29ubGluZV9jcHUoY3B1KSB7XG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19jb3JlLmM6MjEyOlx0XHR2aXJ0cXVldWVfc2V0X2FmZmluaXR5KHZjcnlwdG8tXHUwMDNlZGF0YV92cVtpXS52cSwgY3B1bWFza19vZihjcHUpKTtcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX2NvcmUuYy0yMTMtXHRcdGlmICgmIzQzOyYjNDM7aSBcdTAwM2U9IHZjcnlwdG8tXHUwMDNlbWF4X2RhdGFfcXVldWVzKVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0zOTQ3PXN0YXRpYyB2b2lkIHZpcnRuZXRfY2xlYW5fYWZmaW5pdHkoc3RydWN0IHZpcnRuZXRfaW5mbyAqdmkpXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTM5NTItXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHZpLVx1MDAzZW1heF9xdWV1ZV9wYWlyczsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzozOTUzOlx0XHRcdHZpcnRxdWV1ZV9zZXRfYWZmaW5pdHkodmktXHUwMDNlcnFbaV0udnEsIE5VTEwpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjM5NTQ6XHRcdFx0dmlydHF1ZXVlX3NldF9hZmZpbml0eSh2aS1cdTAwM2VzcVtpXS52cSwgTlVMTCk7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMzk1NS1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0zOTYxPXN0YXRpYyB2b2lkIHZpcnRuZXRfc2V0X2FmZmluaXR5KHN0cnVjdCB2aXJ0bmV0X2luZm8gKnZpKVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0zOTkxLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjM5OTI6XHRcdHZpcnRxdWV1ZV9zZXRfYWZmaW5pdHkodmktXHUwMDNlcnFbaV0udnEsIG1hc2spO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjM5OTM6XHRcdHZpcnRxdWV1ZV9zZXRfYWZmaW5pdHkodmktXHUwMDNlc3FbaV0udnEsIG1hc2spO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTM5OTQtXHRcdF9fbmV0aWZfc2V0X3hwc19xdWV1ZSh2aS1cdTAwM2VkZXYsIGNwdW1hc2tfYml0cyhtYXNrKSwgaSwgWFBTX0NQVVMpO1xuLS1cbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oPTM3NT1jb25zdCBjaGFyICp2aXJ0aW9fYnVzX25hbWUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4tLVxuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmgtMzgyLS8qKlxuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmg6MzgzOiAqIHZpcnRxdWV1ZV9zZXRfYWZmaW5pdHkgLSBzZXR0aW5nIGFmZmluaXR5IGZvciBhIHZpcnRxdWV1ZVxuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmgtMzg0LSAqIEB2cTogdGhlIHZpcnRxdWV1ZVxuLS1cbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oPTM5MT1zdGF0aWMgaW5saW5lXG5pbmNsdWRlL2xpbnV4L3ZpcnRpb19jb25maWcuaDozOTI6aW50IHZpcnRxdWV1ZV9zZXRfYWZmaW5pdHkoc3RydWN0IHZpcnRxdWV1ZSAqdnEsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVfbWFzaylcbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oLTM5My17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3ODM0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQW5hbHl6aW5nIGB2aXJ0bmV0X3NldF9hZmZpbml0eWAqKgoKQWgsIGB2aXJ0bmV0X3NldF9hZmZpbml0eWAuIFRoYXQmIzM5O3MgYSBnb29kIG9uZSwgYSBzdHJvbmcgZm9jdXMgcG9pbnQuIEkmIzM5O3ZlIGdvdCBpdCAtIGl0JiMzOTtzIHJpZ2h0IHRoZXJlIGluIGBkcml2ZXJzL25ldC92aXJ0aW9fbmV0LmNgLiBBbHdheXMgYSBnb29kIHN0YXJ0aW5nIHBsYWNlIHRvIHVuZGVyc3RhbmQgdGhlIHZpcnRpby1uZXQgZHJpdmVyIGludGVybmFscy4gTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayBzb21ldGhpbmcuLi4gQWgsIHllcywgSSB0aG91Z2h0IHNvLiBJdCYjMzk7cyBkZWNsYXJlZCBhcyBgc3RhdGljYC4gUmlnaHQsIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IG1lYW5zIGl0JiMzOTtzIG5vdCBkaXJlY3RseSBleHBvc2VkIG91dHNpZGUgb2YgdGhhdCBzcGVjaWZpYyB0cmFuc2xhdGlvbiB1bml0LiBHb29kIHRvIGtub3cuIEp1c3QgY29uZmlybWluZyB0aGF0JiMzOTtzIGhvdyBpdCYjMzk7cyBkZWZpbmVkIGFuZCBzY29wZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZpcnRuZXRfc2V0X2FmZmluaXR5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdmlydGlvX25ldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0zOTQ3PXN0YXRpYyB2b2lkIHZpcnRuZXRfY2xlYW5fYWZmaW5pdHkoc3RydWN0IHZpcnRuZXRfaW5mbyAqdmkpXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTM5NjAtXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mzk2MTpzdGF0aWMgdm9pZCB2aXJ0bmV0X3NldF9hZmZpbml0eShzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSlcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0zOTYyLXtcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9NDAwMj1zdGF0aWMgaW50IHZpcnRuZXRfY3B1X29ubGluZSh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9kZSlcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNDAwNS1cdFx0XHRcdFx0XHQgICBub2RlKTtcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzo0MDA2Olx0dmlydG5ldF9zZXRfYWZmaW5pdHkodmkpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTQwMDctXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9NDAxMD1zdGF0aWMgaW50IHZpcnRuZXRfY3B1X2RlYWQodW5zaWduZWQgaW50IGNwdSwgc3RydWN0IGhsaXN0X25vZGUgKm5vZGUpXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTQwMTMtXHRcdFx0XHRcdFx0ICAgbm9kZV9kZWFkKTtcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzo0MDE0Olx0dmlydG5ldF9zZXRfYWZmaW5pdHkodmkpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTQwMTUtXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9NDM3ND1zdGF0aWMgaW50IHZpcnRuZXRfc2V0X2NoYW5uZWxzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTQ0MDItXHR9XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NDQwMzpcdHZpcnRuZXRfc2V0X2FmZmluaXR5KHZpKTtcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy00NDA0LVx0Y3B1c19yZWFkX3VubG9jaygpO1xuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz02NTQ2PXN0YXRpYyBpbnQgaW5pdF92cXMoc3RydWN0IHZpcnRuZXRfaW5mbyAqdmkpXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTY1NTktXHRjcHVzX3JlYWRfbG9jaygpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjY1NjA6XHR2aXJ0bmV0X3NldF9hZmZpbml0eSh2aSk7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNjU2MS1cdGNwdXNfcmVhZF91bmxvY2soKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg2NDMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBSZWFzb25pbmcqKgoKT2theSwgdGhpcyBpcyB3aGF0IEkmIzM5O20gdGhpbmtpbmcuLi4gdGhlIGNvZGUgSSYjMzk7bSBsb29raW5nIGF0IHNlZW1zIHByZXR0eSBzdGF0aWMuIFRoYXQmIzM5O3MgYSBwcm9ibGVtIGZvciBteSBwdXJwb3NlLiBJIGluaXRpYWxseSBjb25zaWRlcmVkIGB2aXJ0bmV0X3NldF9jaGFubmVsc2AgYXMgaXQmIzM5O3MgYW4gZXRodG9vbCBjYWxsYmFjaywgd2hpY2ggaXMgdXNlZnVsLCBidXQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBzdGF0aWMuIFNhbWUgZ29lcyBmb3IgYGluaXRfdnFzYCDigJMgaXQmIzM5O3Mgc3RhdGljLCBzbyBpdCYjMzk7cyBub3QgYSB2aWFibGUgb3B0aW9uLiBBbmQgbGV0JiMzOTtzIG5vdCBmb3JnZXQgYHZpcnRuZXRfcHJvYmVgOyBpdCYjMzk7cyB0aGUgcHJvYmUgZnVuY3Rpb24sIGJ1dCBhZ2FpbiwgaXQgYXBwZWFycyB0byBiZSBzdGF0aWMuIEkgbmVlZCBzb21ldGhpbmcgbm9uLXN0YXRpYyB0aGF0IEkgY2FuIHdvcmsgd2l0aC4KClNvLCBJIHRoaW5rIHRoZSBiZXN0IHBhdGggZm9yd2FyZCBpcyB0byBmb2N1cyBvbiBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgYW5kIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAgYmVjYXVzZSB0aGV5IGFyZSBib3RoIG5vbi1zdGF0aWMgYW5kIGV4cG9ydGVkLCBtYWtpbmcgdGhlbSBhY2Nlc3NpYmxlLiBBbHNvLCBgc3RtbWFjX3hkcF9vcGVuYCBpcyBub24tc3RhdGljIGFuZCBleHBvcnRlZCwgc28gdGhhdCBtaWdodCBiZSB1c2VmdWwgdG9vLgoKQmVmb3JlIEkgY29tbWl0IHRvIHRoZW0gdGhvdWdoLCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgZG9lcyB3aGF0IEkgdGhpbmsgaXQgZG9lcy4gSSBuZWVkIHRvIGJlIHN1cmUgaXQmIzM5O3MgZG9pbmcgd2hhdCBJIHRoaW5rIGl0IGRvZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19faXJxX2FwcGx5X2FmZmluaXR5X2hpbnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvaXJxL21hbmFnZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9pcnEvbWFuYWdlLmM9NTAyPUVYUE9SVF9TWU1CT0xfR1BMKGlycV9mb3JjZV9hZmZpbml0eSk7XG5rZXJuZWwvaXJxL21hbmFnZS5jLTUwMy1cbmtlcm5lbC9pcnEvbWFuYWdlLmM6NTA0OmludCBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50KHVuc2lnbmVkIGludCBpcnEsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICptLCBib29sIHNldGFmZmluaXR5KVxua2VybmVsL2lycS9tYW5hZ2UuYy01MDUte1xuLS1cbmtlcm5lbC9pcnEvbWFuYWdlLmMtNTI2LX1cbmtlcm5lbC9pcnEvbWFuYWdlLmM6NTI3OkVYUE9SVF9TWU1CT0xfR1BMKF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnQpO1xua2VybmVsL2lycS9tYW5hZ2UuYy01MjgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MjMzCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBDb2RlIFN0cnVjdHVyZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgbm9uLXN0YXRpYyBhbmQgZXhwb3J0ZWQuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgYXJlYSBmb3IgZnVydGhlciBleGFtaW5hdGlvbi4gU2luY2UgaXQmIzM5O3MgZXhwb3J0ZWQsIEkga25vdyBpdCYjMzk7cyBkZXNpZ25lZCB0byBiZSBhY2Nlc3NlZCBmcm9tIG91dHNpZGUgaXRzIGRlZmluaW5nIG1vZHVsZS4gVGhlICYjMzQ7bm9uLXN0YXRpYyYjMzQ7IHBhcnQgbWVhbnMgaXQgaGFzIGV4dGVybmFsIGxpbmthZ2Ugd2l0aGluIHRoZSBwcm9qZWN0LiBUaGVzZSB0d28gcHJvcGVydGllcyBjb21iaW5lZCBoaWdobGlnaHQgdGhlIGltcG9ydGFuY2Ugb2YgdW5kZXJzdGFuZGluZyBpdHMgaW1wbGljYXRpb25zIGFuZCBkZXBlbmRlbmNpZXMuCgpOb3csIGxldCYjMzk7cyB6ZXJvIGluIG9uIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAuIEkgbmVlZCB0byB2ZXJpZnkgaG93ICp0aGF0KiBmdW5jdGlvbiBpcyBiZWluZyB1dGlsaXplZCwgZXNwZWNpYWxseSBpbiBjb250ZXh0IG9mIHRoZSBvcmlnaW5hbCBzdGF0ZW1lbnRzLiBXaGF0JiMzOTtzIGl0cyBwdXJwb3NlPyBIb3cgaXMgaXQgYmVpbmcgY2FsbGVkPyBJIGhhdmUgdG8gZW5zdXJlIHRoZSBleHBvcnRlZCwgbm9uLXN0YXRpYyBlbGVtZW50IGlzIGJlaW5nIHVzZWQgYXMgaW50ZW5kZWQgYW5kIHRoZSBpbXBhY3Qgb2YgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYCBpcyB1bmRlcnN0b29kLCBwYXJ0aWN1bGFybHkgZ2l2ZW4gdGhhdCB0aGlzIGlzIGEgc3lzdGVtLWxldmVsIGZ1bmN0aW9uIGRlYWxpbmcgd2l0aCBDUFUgYWZmaW5pdHksIHJlc291cmNlIGFsbG9jYXRpb24gYW5kIHBvdGVudGlhbGx5IGludGVycnVwdHMuIEEgZGVlcCBkaXZlIGlzIGluIG9yZGVyLiBMZXQmIzM5O3Mgc2VlIGhvdyBpdCYjMzk7cyBpbnRlZ3JhdGVkIHdpdGggdGhlIGxhcmdlciBlY29zeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NwdW1hc2tfbG9jYWxfc3ByZWFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliL2NwdW1hc2suYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtsaWIvY3B1bWFzay5jPTc0PXZvaWQgX19pbml0IGZyZWVfYm9vdG1lbV9jcHVtYXNrX3ZhcihjcHVtYXNrX3Zhcl90IG1hc2spXG4tLVxubGliL2NwdW1hc2suYy04MC0vKipcbmxpYi9jcHVtYXNrLmM6ODE6ICogY3B1bWFza19sb2NhbF9zcHJlYWQgLSBzZWxlY3QgdGhlIGkmIzM5O3RoIGNwdSBiYXNlZCBvbiBOVU1BIGRpc3RhbmNlc1xubGliL2NwdW1hc2suYy04Mi0gKiBAaTogaW5kZXggbnVtYmVyXG4tLVxubGliL2NwdW1hc2suYy05Mi0gKiBmb3IgKGkgPSAwOyBpIFx1MDAzYyBudW1fb25saW5lX2NwdXMoKTsgaSYjNDM7JiM0MzspIHtcbmxpYi9jcHVtYXNrLmM6OTM6ICpcdGNwdSA9IGNwdW1hc2tfbG9jYWxfc3ByZWFkKGksIG5vZGUpO1xubGliL2NwdW1hc2suYy05NC0gKlx0ZG9fc29tZXRoaW5nKGNwdSk7XG4tLVxubGliL2NwdW1hc2suYy0xMDYtICogZW51bWVyYXRpb24gaXMgTyhzY2hlZF9kb21haW5zX251bWFfbGV2ZWxzICogbnJfY3B1X2lkcyksIHdoaWxlXG5saWIvY3B1bWFzay5jOjEwNzogKiBjcHVtYXNrX2xvY2FsX3NwcmVhZCgpIHdoZW4gY2FsbGVkIGZvciBlYWNoIGNwdSBpc1xubGliL2NwdW1hc2suYy0xMDgtICogTyhzY2hlZF9kb21haW5zX251bWFfbGV2ZWxzICogbnJfY3B1X2lkcyAqIGxvZyhucl9jcHVfaWRzKSkuXG5saWIvY3B1bWFzay5jLTEwOS0gKi9cbmxpYi9jcHVtYXNrLmM6MTEwOnVuc2lnbmVkIGludCBjcHVtYXNrX2xvY2FsX3NwcmVhZCh1bnNpZ25lZCBpbnQgaSwgaW50IG5vZGUpXG5saWIvY3B1bWFzay5jLTExMS17XG4tLVxubGliL2NwdW1hc2suYy0xMjEtfVxubGliL2NwdW1hc2suYzoxMjI6RVhQT1JUX1NZTUJPTChjcHVtYXNrX2xvY2FsX3NwcmVhZCk7XG5saWIvY3B1bWFzay5jLTEyMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk5MTkKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgQ29kZSBTdHJ1Y3R1cmUqKgoKT2theSwgc28gSSBzZWUgdGhhdCB0aGlzIHZhcmlhYmxlIG9yIGZ1bmN0aW9uIGlzbiYjMzk7dCBkZWNsYXJlZCBhcyBgc3RhdGljYCBhbmQgdGhhdCBpdCYjMzk7cyBiZWluZyBleHBvcnRlZC4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyBpdCBmb3IgZXh0ZXJuYWwgdXNlLCB3aGljaCBtZWFucyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcG90ZW50aWFsIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIG1vZHVsZXMuIEkmIzM5O2xsIG5lZWQgdG8ga2VlcCB0aGlzIGluIG1pbmQgYXMgSSBjb250aW51ZSB0byBhbmFseXplIHRoZSBjb250ZXh0IG9mIGl0cyB1c2FnZSBhbmQgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuCgpOb3csIGxldCYjMzk7cyBkcmlsbCBkb3duIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGBzdG1tYWNfeGRwX29wZW5gIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIHRoZSBrZXkgZW50cnkgcG9pbnQgSSBuZWVkIHRvIGRpc3NlY3QgZnVydGhlciB0byBjb25maXJtIG15IGluaXRpYWwgYXNzdW1wdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3hkcF9vcGVuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcxMDY9dm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcxMzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjcxMzk6aW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTQwLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAyOTgKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiAyODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUHJvcG9zZWQgQ2hhbmdlcyoqCgpPa2F5LCBzbyB0aGlzIGlzIGFib3V0IGhhbmRsaW5nIElSUSBhZmZpbml0eSBhbmQgQ1BVIG1hc2sgc3ByZWFkaW5nLCB3aGljaCwgZnJvbSB3aGF0IEkmIzM5O20gc2VlaW5nLCBpcyBhIGNvcmUga2VybmVsIG1vZGlmaWNhdGlvbi4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyB0b3VjaGluZyBzZXZlcmFsIGRyaXZlcnMsIHNwZWNpZmljYWxseSB0aGUgYHN0bW1hY2AgZHJpdmVyLCBtYWtpbmcgY2hhbmdlcyB0byB0aGUgYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGFuZCBgY3B1bWFza19sb2NhbF9zcHJlYWRgIGZ1bmN0aW9ucy4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgaXMgZnVuY3Rpb25hbCwgYW5kIHRoZSBjaGFuZ2VzIHRvIGBzdG1tYWNgIHNlZW0gc3RyYWlnaHRmb3J3YXJkIGluIHRoZWlyIGFwcGxpY2F0aW9uIG9mIHRoZXNlIGNvcmUgY2hhbmdlcy4gRGVmaW5pdGVseSBtYWtlcyBzZW5zZSB0byBwdXQgdGhpcyB0aHJvdWdoIHNvbWUgZnV6emluZywgYXMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBjcml0aWNhbCBrZXJuZWwgbG9naWMuCgpJIGFsc28gc2VlIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgIGFzIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaGVyZS4gYFNUTU1BQ19QQ0lgIHNlZW1zIHN1ZmZpY2llbnQsIGdpdmVuIGl0IHB1bGxzIGluIGBTVE1NQUNfTElCUENJYCBhbmQgZGVwZW5kcyBvbiBgUENJYCwgc28gdGhlIGhhcmR3YXJlIHNpZGUgaXMgY292ZXJlZC4KCk15IG1haW4gdGhvdWdodCBpcyB0byBpZGVudGlmeSBhIHNvbGlkIGVudHJ5IHBvaW50IGZvciBmdXp6aW5nLiBXaGlsZSBgc3RtbWFjX3hkcF9vcGVuYCBpcyBwcmVzZW50IChjYWxsZWQgd2hlbiBYRFAgaXMgZW5hYmxlZCksIEkmIzM5O20gY3VyaW91cyBpZiB0aGVyZSYjMzk7cyBhIGJldHRlciBvbmUuIEkgc2VlIHRoYXQgYHN0bW1hY19yZXN1bWVgIGlzIGV4cG9ydGVkIGFuZCBub24tc3RhdGljLCBzbyBpdCYjMzk7cyBhIHBvc3NpYmlsaXR5LCBidXQgaXQgZG9lc24mIzM5O3QgY2FsbCBgc3RtbWFjX3JlcXVlc3RfaXJxYCwgd2hpY2ggbWlnaHQgbGltaXQgaXRzIHVzZWZ1bG5lc3MgYXMgYSB0ZXN0IGVudHJ5IHBvaW50LiBQZXJoYXBzIGBzdG1tYWNfcmVpbml0X3F1ZXVlc2Agd291bGQgYmUgbW9yZSBhcHByb3ByaWF0ZSBzaW5jZSBpdCYjMzk7cyBpbnZvbHZlZCBpbiByZS1pbml0aWFsaXppbmcgdGhlIHF1ZXVlcy4gTGV0IG1lIGV4cGxvcmUgdGhlIGNhbGwgZ3JhcGhzIGFuZCBkZXBlbmRlbmNpZXMgYSBiaXQgbW9yZSBhbmQgY29uc2lkZXIgd2hhdCYjMzk7cyBiZWluZyB0ZXN0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19yZWluaXRfcXVldWVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc1ODY9c3RhdGljIHZvaWQgc3RtbWFjX25hcGlfZGVsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NjA3OmludCBzdG1tYWNfcmVpbml0X3F1ZXVlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCByeF9jbnQsIHU4IHR4X2NudClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYwOC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTQ1CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTVE0gTUFDIFF1ZXVlIFJlLUluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIGBzdG1tYWNfcmVpbml0X3F1ZXVlc2AgaXNuJiMzOTt0IHN0YXRpYywgd2hpY2ggaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBOb24tc3RhdGljIGZ1bmN0aW9ucyBhcmUgb2Z0ZW4gZW50cnkgcG9pbnRzIG9yLCBhdCBsZWFzdCwgaGF2ZSBicm9hZGVyIHNjb3BlIHRoYW4ganVzdCB0aGUgZmlsZSB0aGV5JiMzOTtyZSBkZWZpbmVkIGluLiBOb3csIGl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgY2FsbGluZyBgc3RtbWFjX29wZW5gLCBhbmQgdGhhdCBmdW5jdGlvbiwgaW4gdHVybiwgaXMgY2FsbGluZyBgc3RtbWFjX3JlcXVlc3RfaXJxYC4gR2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgcmUtaW5pdGlhbGl6YXRpb24sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHNvIEkgYW0gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRoYXQgYHN0bW1hY19vcGVuYCBpcywgaW4gZmFjdCwgY2FsbGVkIGJ5IGBzdG1tYWNfcmVpbml0X3F1ZXVlc2AsIGFuZCB0aGVuIEkgY2FuIGRlZHVjZSBob3cgdGhlIElSUXMgYXJlIGdldHRpbmcgcmVxdWVzdGVkIGluIHRoZSBjb250ZXh0IG9mIGEgcG90ZW50aWFsIHJlLWluaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19vcGVuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQwNjM9c3RtbWFjX3NldHVwX2RtYV9kZXNjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdW5zaWduZWQgaW50IG10dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxMjgtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxMjk6ICogIF9fc3RtbWFjX29wZW4gLSBvcGVuIGVudHJ5IHBvaW50IG9mIHRoZSBkcml2ZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDEzMC0gKiAgQGRldiA6IHBvaW50ZXIgdG8gdGhlIGRldmljZSBzdHJ1Y3R1cmUuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTM3LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MTM4OnN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTM5LVx0XHRcdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxOTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxOTY6c3RhdGljIGludCBzdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTk3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyMjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyMjQ6XHRyZXQgPSBfX3N0bW1hY19vcGVuKGRldiwgZG1hX2NvbmYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjI1LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYxMTQ9c3RhdGljIGludCBzdG1tYWNfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjYxNTA6XHRcdHJldCA9IF9fc3RtbWFjX29wZW4oZGV2LCBkbWFfY29uZik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxNTEtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMjA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzMyMTpcdC5uZG9fb3BlbiA9IHN0bW1hY19vcGVuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzIyLVx0Lm5kb19zdGFydF94bWl0ID0gc3RtbWFjX3htaXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NjA3PWludCBzdG1tYWNfcmVpbml0X3F1ZXVlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCByeF9jbnQsIHU4IHR4X2NudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2MjYtXHRpZiAobmV0aWZfcnVubmluZyhkZXYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NjI3Olx0XHRyZXQgPSBzdG1tYWNfb3BlbihkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjI4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzYzMj1pbnQgc3RtbWFjX3JlaW5pdF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHJ4X3NpemUsIHUzMiB0eF9zaXplKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzY0My1cdGlmIChuZXRpZl9ydW5uaW5nKGRldikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc2NDQ6XHRcdHJldCA9IHN0bW1hY19vcGVuKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2NDUtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNTUxCgkJCQkJCQlvdXRwdXQ6IDUwCgkJCQkJCQl0aG91Z2h0czogNzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OgoKKipGb2N1c2luZyBJbiBvbiB0aGUgUmVpbml0aWFsaXphdGlvbiBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gdHJhY2UgdGhlIHJlLWluaXRpYWxpemF0aW9uIHNlcXVlbmNlIG9mIHRoaXMgU1RNTUFDIGRyaXZlci4gSSBzZWUgdGhhdCBib3RoIGBzdG1tYWNfcmVpbml0X3F1ZXVlc2AgYW5kIGBzdG1tYWNfcmVpbml0X3JpbmdwYXJhbWAgdWx0aW1hdGVseSBjYWxsIGBzdG1tYWNfb3BlbmAuIFRoYXQmIzM5O3MgaW1wb3J0YW50LiBJdCBtYWtlcyBzZW5zZSwgYXMgdGhlc2UgcmUtaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zIHdvdWxkIGxpa2VseSBuZWVkIHRvIHJlc2V0IGV2ZXJ5dGhpbmcgYmFjayB0byBhIGtub3duIGdvb2Qgc3RhdGUgbGlrZSBgc3RtbWFjX29wZW5gLiBBbmQgYHN0bW1hY19vcGVuYCBpcyB0aGUgJiMzNDtzdGFydGluZyBwb2ludCYjMzQ7IGZvciB0aGluZ3MuCgpgc3RtbWFjX3JlaW5pdF9xdWV1ZXNgIGZlZWxzIGxpa2UgdGhlIG1vcmUgcHJvbWlzaW5nIHN5bWJvbCB0byBmb2N1cyBvbiByaWdodCBub3cuIEl0IGlzIG1vcmUgbGlrZWx5IHRvIGJlIGludm9sdmVkIGluIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgdW5kZXJseWluZyBuZXR3b3JrIGZ1bmN0aW9ucy4gU28sIGxldCYjMzk7cyBzZWUgaWYgdGhhdCBmdW5jdGlvbiBpcyBleHBvcnRlZC4gS25vd2luZyBpZiBpdCBpcyBjYW4gaGVscCBzaG93IHdoZXRoZXIgaXQgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIG9yIGlmIGl0JiMzOTtzIGludGVybmFsIHRvIHRoZSBkcml2ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19yZWluaXRfcXVldWVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc1ODY9c3RhdGljIHZvaWQgc3RtbWFjX25hcGlfZGVsKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NjA3OmludCBzdG1tYWNfcmVpbml0X3F1ZXVlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCByeF9jbnQsIHU4IHR4X2NudClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYwOC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMDY3CgkJCQkJCQlvdXRwdXQ6IDE1NwoJCQkJCQkJdGhvdWdodHM6IDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIHJlYXNvbmluZzoKCioqRm9jdXNpbmcgSW4gb24gS2V5IEZ1bmN0aW9ucyoqCgpIbW0sIHNvIGl0JiMzOTtzIG5vdCBleHBvcnRlZCwgYnV0IGl0ICppcyogbm9uLXN0YXRpYy4gSW50ZXJlc3RpbmcuIFRoYXQgc3VnZ2VzdHMgaXQmIzM5O3Mgbm90IG1lYW50IHRvIGJlIGRpcmVjdGx5IGFjY2Vzc2VkIGZyb20gb3RoZXIgbW9kdWxlcywgYnV0IGl0JiMzOTtzIHN0aWxsIGF2YWlsYWJsZSB3aXRoaW4gdGhlIGN1cnJlbnQgc2NvcGUuIE9rYXkuIEkgbmVlZCB0byBiZSBjYXJlZnVsIHdpdGggdGhhdC4gQW5kIHdoYXQgYWJvdXQgYHN0bW1hY194ZHBfb3BlbmA/IFJpZ2h0LCBhbHNvIG5vbi1zdGF0aWMuIExldCBtZSBqdXN0IG5vdGUgdGhhdCBkb3duLgoKQnV0IEkgdGhpbmssIGZvciB0aGUgY29yZSBvZiB3aGF0IEkmIzM5O20gbG9va2luZyBhdCByaWdodCBub3csIGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCBhbmQgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYCBzZWVtIGxpa2UgdGhlIG1vcmUgaW1wb3J0YW50IHN5bWJvbHMgdG8gemVybyBpbiBvbi4gVGhleSYjMzk7cmUgbGlrZWx5IGdvaW5nIHRvIGJlIHRoZSBjZW50cmFsIGZ1bmN0aW9ucyBJIG5lZWQgdG8gYW5hbHl6ZS4KCkFscmlnaHQsIEkgdGhpbmsgSSYjMzk7dmUgZ2F0aGVyZWQgZW5vdWdoIGNvbnRleHQgaGVyZS4gVGltZSB0byBhY3R1YWxseSBjYWxsIGBzZXQtcmVzdWx0c2Agbm93IGFuZCBsb2NrIHRob3NlIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7U1RNTUFDX0VUSCYjMzQ7LAogICAgJiMzNDtTVE1NQUNfUENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCYjMzQ7LAogICAgJiMzNDtjcHVtYXNrX2xvY2FsX3NwcmVhZCYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcmVpbml0X3F1ZXVlcyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfeGRwX29wZW4mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBrZXJuZWwgbG9naWMgZm9yIElSUSBhZmZpbml0eSBoaW50cyAoX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCkgYW5kIGNwdW1hc2sgc3ByZWFkaW5nIChjcHVtYXNrX2xvY2FsX3NwcmVhZCksIHdoaWNoIGFyZSB1c2VkIGJ5IHZhcmlvdXMgZHJpdmVycy4gSXQgYWxzbyBtb2RpZmllcyB0aGUgc3RtbWFjIGRyaXZlciB0byB1c2UgdGhlc2UgZnVuY3Rpb25zIGNvcnJlY3RseS4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19faXJxX2FwcGx5X2FmZmluaXR5X2hpbnQmIzM0OywKICAgICYjMzQ7Y3B1bWFza19sb2NhbF9zcHJlYWQmIzM0OywKICAgICYjMzQ7c3RtbWFjX3JlaW5pdF9xdWV1ZXMmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9vcGVuJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUga2VybmVsIGxvZ2ljIGZvciBJUlEgYWZmaW5pdHkgaGludHMgKF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnQpIGFuZCBjcHVtYXNrIHNwcmVhZGluZyAoY3B1bWFza19sb2NhbF9zcHJlYWQpLCB3aGljaCBhcmUgdXNlZCBieSB2YXJpb3VzIGRyaXZlcnMuIEl0IGFsc28gbW9kaWZpZXMgdGhlIHN0bW1hYyBkcml2ZXIgdG8gdXNlIHRoZXNlIGZ1bmN0aW9ucyBjb3JyZWN0bHkuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjczLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAxNDo1NDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjU0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIElSUSBhZmZpbml0eSBoYW5kbGluZyBpbiB0aGUgc3RtbWFjIGRyaXZlciBhbmQgY29yZSBJUlEvY3B1bWFzayBjb2RlLiBJdCBhbGxvY2F0ZXMgYSBjcHVtYXNrIHVzaW5nIGB6YWxsb2NfY3B1bWFza192YXJgICh3aGljaCB6ZXJvZXMgdGhlIG1lbW9yeSkgYW5kIGV4cGxpY2l0bHkgY2xlYXJzIGl0IHdpdGggYGNwdW1hc2tfY2xlYXJgIGJlZm9yZSB1c2UuIFRoZSBjaGFuZ2VzIHRvIGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCBhbmQgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYCBpbnZvbHZlIGNvbnRyb2wgZmxvdyBhbmQgQ1BVIG1hc2sgbG9naWMgKGUuZy4sIHVzaW5nIGBpcnFfZGVmYXVsdF9hZmZpbml0eWAgaW5zdGVhZCBvZiBgbnVtX29ubGluZV9jcHVzKClgKS4gVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgYW5kIG5vIGluZm8tbGVha3MgaW50cm9kdWNlZC4gQW55IHBvdGVudGlhbCBpc3N1ZXMgKHN1Y2ggYXMgYSBkaXZpc2lvbiBieSB6ZXJvIGlmIGBjcHVtYXNrX3dlaWdodGAgcmV0dXJucyAwKSB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIHRlc3Rpbmcgb3IgS0FTQU4vVUJTQU4uIFRodXMsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3MDc4MmNkY2QwYmRhZDU0N2U3YzgyYTMxM2Q4YzQ4YmYxNjAzOGFmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgMTkgMTQ6NDk6MjcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwppbmRleCBhNzFmMGRmMjYzNzg1Li45NDljZWQ3ZTQ2ZDI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKQEAgLTM4MjYsMTEgJiM0MzszODI2LDE2IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCXN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KGRldik7CiAJc3RydWN0IHN0bW1hY19tc2kgKm1zaSA9IHByaXYtJmd0O21zaTsKIAllbnVtIHJlcXVlc3RfaXJxX2VyciBpcnFfZXJyOwomIzQzOwljcHVtYXNrX3Zhcl90IGFmZmluaXR5OwogCWludCBpcnFfaWR4ID0gMDsKIAljaGFyICppbnRfbmFtZTsKJiM0MzsJaW50IG5vZGU7CiAJaW50IHJldDsKIAlpbnQgaTsKIAomIzQzOwlpZiAoIXphbGxvY19jcHVtYXNrX3ZhcigmYW1wO2FmZmluaXR5LCBHRlBfS0VSTkVMKSkKJiM0MzsJCXJldHVybiAtRU5PTUVNOwomIzQzOwogCS8qIEZvciBjb21tb24gaW50ZXJydXB0ICovCiAJaW50X25hbWUgPSBtc2ktJmd0O2ludF9uYW1lX21hYzsKIAlzcHJpbnRmKGludF9uYW1lLCAmIzM0OyVzOiVzJiMzNDssIGRldi0mZ3Q7bmFtZSwgJiMzNDttYWMmIzM0Oyk7CkBAIC0zOTE2LDYgJiM0MzszOTIxLDcgQEAgc3RhdGljIGludCBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJfQogCiAJLyogUmVxdWVzdCBSeCBNU0kgaXJxICovCiYjNDM7CW5vZGUgPSBkZXZfdG9fbm9kZSgmYW1wO3ByaXYtJmd0O2Rldi0mZ3Q7ZGV2KTsKIAlmb3IgKGkgPSAwOyBpICZsdDsgcHJpdi0mZ3Q7cGxhdC0mZ3Q7cnhfcXVldWVzX3RvX3VzZTsgaSYjNDM7JiM0MzspIHsKIAkJaWYgKGkgJmd0Oz0gTVRMX01BWF9SWF9RVUVVRVMpCiAJCQlicmVhazsKQEAgLTM5MzUsOCAmIzQzOzM5NDEsMTAgQEAgc3RhdGljIGludCBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJCQlpcnFfaWR4ID0gaTsKIAkJCWdvdG8gaXJxX2Vycm9yOwogCQl9Ci0JCWlycV9zZXRfYWZmaW5pdHlfaGludChtc2ktJmd0O3J4X2lycVtpXSwKLQkJCQkgICAgICBjcHVtYXNrX29mKGkgJSBudW1fb25saW5lX2NwdXMoKSkpOwomIzQzOwomIzQzOwkJY3B1bWFza19jbGVhcihhZmZpbml0eSk7CiYjNDM7CQljcHVtYXNrX3NldF9jcHUoY3B1bWFza19sb2NhbF9zcHJlYWQoaSwgbm9kZSksIGFmZmluaXR5KTsKJiM0MzsJCWlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQobXNpLSZndDtyeF9pcnFbaV0sIGFmZmluaXR5KTsKIAl9CiAKIAkvKiBSZXF1ZXN0IFR4IE1TSSBpcnEgKi8KQEAgLTM5NTksMTMgJiM0MzszOTY3LDE4IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCQkJaXJxX2lkeCA9IGk7CiAJCQlnb3RvIGlycV9lcnJvcjsKIAkJfQotCQlpcnFfc2V0X2FmZmluaXR5X2hpbnQobXNpLSZndDt0eF9pcnFbaV0sCi0JCQkJICAgICAgY3B1bWFza19vZihpICUgbnVtX29ubGluZV9jcHVzKCkpKTsKJiM0MzsKJiM0MzsJCWNwdW1hc2tfY2xlYXIoYWZmaW5pdHkpOwomIzQzOwkJY3B1bWFza19zZXRfY3B1KGNwdW1hc2tfbG9jYWxfc3ByZWFkKGksIG5vZGUpLCBhZmZpbml0eSk7CiYjNDM7CQlpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KG1zaS0mZ3Q7dHhfaXJxW2ldLCBhZmZpbml0eSk7CiAJfQogCiYjNDM7CWZyZWVfY3B1bWFza192YXIoYWZmaW5pdHkpOwomIzQzOwogCXJldHVybiAwOwogCiBpcnFfZXJyb3I6CiYjNDM7CWZyZWVfY3B1bWFza192YXIoYWZmaW5pdHkpOwogCXN0bW1hY19mcmVlX2lycShkZXYsIGlycV9lcnIsIGlycV9pZHgpOwogCXJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS9rZXJuZWwvaXJxL21hbmFnZS5jIGIva2VybmVsL2lycS9tYW5hZ2UuYwppbmRleCA3ZWIwN2UzYmRiNGMyLi4zOTM3YmEyNGRmNmQ2IDEwMDY0NAotLS0gYS9rZXJuZWwvaXJxL21hbmFnZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9pcnEvbWFuYWdlLmMKQEAgLTUwMywxMSAmIzQzOzUwMywyMSBAQCBFWFBPUlRfU1lNQk9MX0dQTChpcnFfZm9yY2VfYWZmaW5pdHkpOwogCiBpbnQgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCh1bnNpZ25lZCBpbnQgaXJxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSwgYm9vbCBzZXRhZmZpbml0eSkKIHsKJiM0MzsJc3RydWN0IGlycV9kYXRhICppcnFfZGF0YTsKIAlpbnQgcmV0ID0gLUVJTlZBTDsKIAogCXNjb3BlZF9pcnFkZXNjX2dldF9hbmRfbG9jayhpcnEsIElSUV9HRVRfREVTQ19DSEVDS19HTE9CQUwpIHsKIAkJc2NvcGVkX2lycWRlc2MtJmd0O2FmZmluaXR5X2hpbnQgPSBtOwomIzQzOwkJaXJxX2RhdGEgPSBpcnFfZGVzY19nZXRfaXJxX2RhdGEoc2NvcGVkX2lycWRlc2MpOwogCQlyZXQgPSAwOwomIzQzOwomIzQzOwkJLyoKJiM0MzsJCSAqIERvIG5vdCBvdmVyd3JpdGUgdGhlIGFmZmluaXR5IGluIGNhc2UgYW4gYWZmaW5pdHkgZm9yIHRoaXMKJiM0MzsJCSAqIElSUSBoYXMgYWxyZWFkeSBiZWVuIHJlcXVlc3RlZCwgZS5nLiBieSB3cml0aW5nIHRvCiYjNDM7CQkgKiAvcHJvYy9pcnEvJmx0O24mZ3Q7L3NtcF9hZmZpbml0eQomIzQzOwkJICovCiYjNDM7CQlpZiAoaXJxZF9hZmZpbml0eV93YXNfc2V0KGlycV9kYXRhKSkKJiM0MzsJCQlzZXRhZmZpbml0eSA9IGZhbHNlOwogCX0KIAogCWlmICghcmV0ICZhbXA7JmFtcDsgbSAmYW1wOyZhbXA7IHNldGFmZmluaXR5KQpkaWZmIC0tZ2l0IGEvbGliL2NwdW1hc2suYyBiL2xpYi9jcHVtYXNrLmMKaW5kZXggNWFkYjk4NzRmYmQwZi4uNzNlN2I2MGE5MjAxMSAxMDA2NDQKLS0tIGEvbGliL2NwdW1hc2suYwomIzQzOyYjNDM7JiM0MzsgYi9saWIvY3B1bWFzay5jCkBAIC02LDYgJiM0Mzs2LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9leHBvcnQuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9tZW1ibG9jay5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L251bWEuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvaW50ZXJydXB0LmgmZ3Q7CiAKIC8qIFRoZXNlIGFyZSBub3QgaW5saW5lIGJlY2F1c2Ugb2YgaGVhZGVyIHRhbmdsZXMuICovCiAjaWZkZWYgQ09ORklHX0NQVU1BU0tfT0ZGU1RBQ0sKQEAgLTgxLDggJiM0Mzs4Miw5IEBAIHZvaWQgX19pbml0IGZyZWVfYm9vdG1lbV9jcHVtYXNrX3ZhcihjcHVtYXNrX3Zhcl90IG1hc2spCiAgKiBAaTogaW5kZXggbnVtYmVyCiAgKiBAbm9kZTogbG9jYWwgbnVtYV9ub2RlCiAgKgotICogUmV0dXJuOiBvbmxpbmUgQ1BVIGFjY29yZGluZyB0byBhIG51bWEgYXdhcmUgcG9saWN5OyBsb2NhbCBjcHVzIGFyZSByZXR1cm5lZAotICogZmlyc3QsIGZvbGxvd2VkIGJ5IG5vbi1sb2NhbCBvbmVzLCB0aGVuIGl0IHdyYXBzIGFyb3VuZC4KJiM0MzsgKiBSZXR1cm46IG9ubGluZSBDUFUgYWNjb3JkaW5nIHRvIHRoZSBkZWZhdWx0IElSUSBhZmZpbml0eSBhbmQgYSBudW1hIGF3YXJlCiYjNDM7ICogcG9saWN5OyBsb2NhbCBjcHVzIGFyZSByZXR1cm5lZCBmaXJzdCwgZm9sbG93ZWQgYnkgbm9uLWxvY2FsIG9uZXMsIHRoZW4gaXQKJiM0MzsgKiB3cmFwcyBhcm91bmQuCiAgKgogICogRm9yIHRob3NlIHdobyB3YW50cyB0byBlbnVtZXJhdGUgYWxsIENQVXMgYmFzZWQgb24gdGhlaXIgTlVNQSBkaXN0YW5jZXMsCiAgKiBpLmUuIGNhbGwgdGhpcyBmdW5jdGlvbiBpbiBhIGxvb3AsIGxpa2U6CkBAIC0xMTAsOSAmIzQzOzExMiw5IEBAIHVuc2lnbmVkIGludCBjcHVtYXNrX2xvY2FsX3NwcmVhZCh1bnNpZ25lZCBpbnQgaSwgaW50IG5vZGUpCiAJdW5zaWduZWQgaW50IGNwdTsKIAogCS8qIFdyYXA6IHdlIGFsd2F5cyB3YW50IGEgY3B1LiAqLwotCWkgJT0gbnVtX29ubGluZV9jcHVzKCk7CiYjNDM7CWkgJT0gY3B1bWFza193ZWlnaHQoaXJxX2RlZmF1bHRfYWZmaW5pdHkpOwogCi0JY3B1ID0gc2NoZWRfbnVtYV9maW5kX250aF9jcHUoY3B1X29ubGluZV9tYXNrLCBpLCBub2RlKTsKJiM0MzsJY3B1ID0gc2NoZWRfbnVtYV9maW5kX250aF9jcHUoaXJxX2RlZmF1bHRfYWZmaW5pdHksIGksIG5vZGUpOwogCiAJV0FSTl9PTihjcHUgJmd0Oz0gbnJfY3B1X2lkcyk7CiAJcmV0dXJuIGNwdTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDE0OjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MzgKCQkJCQkJCW91dHB1dDogMjE3CgkJCQkJCQl0aG91Z2h0czogNzQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2ggZm9yIEtNU0FOIFJlbGV2YW5jZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7dmUgZ290IGEgcGF0Y2ggdG91Y2hpbmcgYHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2lgLCBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAsIGFuZCBgY3B1bWFza19sb2NhbF9zcHJlYWRgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gbG9vayBmb3IgcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBlc3BlY2lhbGx5IHNpbmNlIHdlJiMzOTtyZSBwbGF5aW5nIHdpdGggQ1BVIG1hc2tzIGFuZCBJUlEgYWZmaW5pdHksIHdoaWNoIGFyZSBzZW5zaXRpdmUgYXJlYXMuCgpGaXJzdCwgYHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2lgOiBJdCYjMzk7cyBhbGxvY2F0aW5nIGFuIGBhZmZpbml0eWAgY3B1bWFzayB1c2luZyBgemFsbG9jX2NwdW1hc2tfdmFyYCwgd2hpY2ggaXMgZ29vZDsgdGhhdCB6ZXJvZXMgdGhlIG1lbW9yeS4gVGhlbiwgd2UgdXNlIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAgdG8gcGljayBhIENQVSBhbmQgc2V0IGl0IGluIHRoZSBtYXNrLiBXZSYjMzk7cmUgY2FsbGluZyBgaXJxX3NldF9hZmZpbml0eV9hbmRfaGludGAgd2l0aCB0aGlzIG1hc2sgYW5kIHRoZW4gZnJlZWluZyBpdC4gU28gZmFyLCBzbyBnb29kLiBUaGUgY3JpdGljYWwgdGhpbmcgaGVyZSBpcyB0aGF0IHRoZSBhbGxvY2F0aW9uIGlzIGluaXRpYWxpemVkIGFuZCB3ZSYjMzk7cmUgKmV4cGxpY2l0bHkqIGNsZWFyaW5nIGl0LgoKTmV4dCwgYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgLiBUaGlzIGZ1bmN0aW9uJiMzOTtzIGNoYW5nZXMgc2VlbSBwcmltYXJpbHkgYWJvdXQgY29udHJvbCBmbG93LCBjaGVja2luZyBgaXJxZF9hZmZpbml0eV93YXNfc2V0KGlycV9kYXRhKWAuIElmIGl0JiMzOTtzIGFscmVhZHkgc2V0LCBgc2V0YWZmaW5pdHlgIGJlY29tZXMgZmFsc2UuIFRoaXMgZG9lc24mIzM5O3QgaW5oZXJlbnRseSBzY3JlYW0gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuCgpGaW5hbGx5LCBgY3B1bWFza19sb2NhbF9zcHJlYWRgLiBIZXJlJiMzOTtzIHdoZXJlIHdlIHNlZSB0aGUgbW9zdCBzaWduaWZpY2FudCBjaGFuZ2Ug4oCTIHVzaW5nIGBpcnFfZGVmYXVsdF9hZmZpbml0eWAgaW5zdGVhZCBvZiBgY3B1X29ubGluZV9tYXNrYCBhbmQgYG51bV9vbmxpbmVfY3B1cygpYC4gVGhpcyBpcyBpbXBvcnRhbnQsIGFzIGl0IGNvdWxkIGNoYW5nZSB0aGUgcG9zc2libGUgQ1BVIHNlbGVjdGlvbi4gQnV0IGFnYWluLCB0aGlzIGlzIHByaW1hcmlseSBjb250cm9sIGZsb3cg4oCTIHRoZSBjb2RlIGlzIHN0aWxsICpzZXR0aW5nKiBhIENQVSBpbiB0aGUgbWFzay4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIGNoZWNrbGlzdC4gQXJlIHRoZXJlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcz8gTm8sIGBhZmZpbml0eWAgaXMgemFsbG9jJiMzOTtkIGFuZCBjbGVhcmVkLCBhbmQgd2UmIzM5O3JlIHVzaW5nIHRoZSBtYXNrIGZvciB0aGUgaW50ZW5kZWQgcHVycG9zZS4gSW5mbyBsZWFrcyB0byB1c2VyIHNwYWNlPyBOb3BlLCBub3RoaW5nJiMzOTtzIGJlaW5nIGNvcGllZCBvdXQgdGhhdCYjMzk7cyB1bmluaXRpYWxpemVkLiBDb21wbGV4IHN0cnVjdHVyZXMgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcyBiZWluZyBwYXNzZWQgYXJvdW5kPyBObywganVzdCBhIGNwdW1hc2suCgpFc3NlbnRpYWxseSwgdGhpcyBpcyBhbGwgYWJvdXQgSVJRIGFmZmluaXR5LCBjb250cm9sbGluZyB3aGljaCBDUFVzIGhhbmRsZSBpbnRlcnJ1cHRzLCBhbmQgdGhlIGxvZ2ljIGFyb3VuZCBob3cgQ1BVcyBhcmUgc2VsZWN0ZWQuIElmIHRoZXJlJiMzOTtzIGEgYnVnIGhlcmUsIGl0JiMzOTtzIGxpa2VseSBhIGxvZ2ljIGVycm9yLCBvciBtYXliZSwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MuIFRoZSBvbmx5IHBvdGVudGlhbCBwaXRmYWxsIEkgc2VlIGlzIHRoYXQgZGl2aXNpb24gYnkgemVybyBpbiBgY3B1bWFza19sb2NhbF9zcHJlYWRgIOKAkyAgc3BlY2lmaWNhbGx5LCBpZiBgY3B1bWFza193ZWlnaHQoaXJxX2RlZmF1bHRfYWZmaW5pdHkpYCByZXR1cm5zIDAuIFRoYXTigJlzIGEgZGl2aWRlLWJ5LXplcm8sIHdoaWNoIGlzIGJhZCwgYnV0IGl0IHdvdWxkIGJlIGNhdWdodCBieSBzdGFuZGFyZCB0ZXN0aW5nLCBvciBwb3NzaWJseSBLQVNBTi9VQlNBTiDigJMgaXQmIzM5O3MgYSBjcmFzaCwgbm90IGEgbWVtb3J5IGxlYWsuCgpTbywgc3VtbWluZyBpdCB1cCwgZ2l2ZW4gdGhlIGZvY3VzIG9uIENQVSBtYXNrcyBhbmQgZXhwbGljaXQgaW5pdGlhbGl6YXRpb24sIG15IGV4cGVydCBqdWRnbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggZG9lc24mIzM5O3Qgd2FycmFudCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZy4gSXQmIzM5O3Mgbm90IGludHJvZHVjaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm9ybWF0aW9uIGxlYWtzLCBhbmQgYW55IGlzc3VlcyB3b3VsZCBsaWtlbHkgYmUgZGV0ZWN0YWJsZSB3aXRoIG90aGVyIGZ1enplcnMuIFRoZSBjdXJyZW50IHBhdGNoIGFwcGVhcnMgc291bmQgaW4gdGhlIGNvbnRleHQgb2YgbWVtb3J5IGluaXRpYWxpemF0aW9uIGFuZCB1c2FnZS4gV2UgY2FuIHByb2JhYmx5IGdyZWVuLWxpZ2h0IHRoaXMgd2l0aG91dCBhIHNwZWNpYWwgS01TQU4gc2Vzc2lvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Ni8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMTQ6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgSVJRIGFmZmluaXR5IGhhbmRsaW5nIGluIHRoZSBzdG1tYWMgZHJpdmVyIGFuZCBjb3JlIElSUS9jcHVtYXNrIGNvZGUuIEl0IGFsbG9jYXRlcyBhIGNwdW1hc2sgdXNpbmcgYHphbGxvY19jcHVtYXNrX3ZhcmAgKHdoaWNoIHplcm9lcyB0aGUgbWVtb3J5KSBhbmQgZXhwbGljaXRseSBjbGVhcnMgaXQgd2l0aCBgY3B1bWFza19jbGVhcmAgYmVmb3JlIHVzZS4gVGhlIGNoYW5nZXMgdG8gYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGFuZCBgY3B1bWFza19sb2NhbF9zcHJlYWRgIGludm9sdmUgY29udHJvbCBmbG93IGFuZCBDUFUgbWFzayBsb2dpYyAoZS5nLiwgdXNpbmcgYGlycV9kZWZhdWx0X2FmZmluaXR5YCBpbnN0ZWFkIG9mIGBudW1fb25saW5lX2NwdXMoKWApLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBhbmQgbm8gaW5mby1sZWFrcyBpbnRyb2R1Y2VkLiBBbnkgcG90ZW50aWFsIGlzc3VlcyAoc3VjaCBhcyBhIGRpdmlzaW9uIGJ5IHplcm8gaWYgYGNwdW1hc2tfd2VpZ2h0YCByZXR1cm5zIDApIHdvdWxkIGJlIGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgdGVzdGluZyBvciBLQVNBTi9VQlNBTi4gVGh1cywgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBJUlEgYWZmaW5pdHkgaGFuZGxpbmcgaW4gdGhlIHN0bW1hYyBkcml2ZXIgYW5kIGNvcmUgSVJRL2NwdW1hc2sgY29kZS4gSXQgYWxsb2NhdGVzIGEgY3B1bWFzayB1c2luZyBgemFsbG9jX2NwdW1hc2tfdmFyYCAod2hpY2ggemVyb2VzIHRoZSBtZW1vcnkpIGFuZCBleHBsaWNpdGx5IGNsZWFycyBpdCB3aXRoIGBjcHVtYXNrX2NsZWFyYCBiZWZvcmUgdXNlLiBUaGUgY2hhbmdlcyB0byBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgYW5kIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAgaW52b2x2ZSBjb250cm9sIGZsb3cgYW5kIENQVSBtYXNrIGxvZ2ljIChlLmcuLCB1c2luZyBgaXJxX2RlZmF1bHRfYWZmaW5pdHlgIGluc3RlYWQgb2YgYG51bV9vbmxpbmVfY3B1cygpYCkuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGFuZCBubyBpbmZvLWxlYWtzIGludHJvZHVjZWQuIEFueSBwb3RlbnRpYWwgaXNzdWVzIChzdWNoIGFzIGEgZGl2aXNpb24gYnkgemVybyBpZiBgY3B1bWFza193ZWlnaHRgIHJldHVybnMgMCkgd291bGQgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCB0ZXN0aW5nIG9yIEtBU0FOL1VCU0FOLiBUaHVzLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NDk6MjguNjI1MzExMDExWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjkyNDY5Nzc0NDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2lycV9hcHBseV9hZmZpbml0eV9oaW50XCIsXG4gICAgXCJjcHVtYXNrX2xvY2FsX3NwcmVhZFwiLFxuICAgIFwic3RtbWFjX3JlaW5pdF9xdWV1ZXNcIixcbiAgICBcInN0bW1hY194ZHBfb3BlblwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgSVJRIGFmZmluaXR5IGhhbmRsaW5nIGluIHRoZSBzdG1tYWMgZHJpdmVyIGFuZCBjb3JlIElSUS9jcHVtYXNrIGNvZGUuIEl0IGFsbG9jYXRlcyBhIGNwdW1hc2sgdXNpbmcgYHphbGxvY19jcHVtYXNrX3ZhcmAgKHdoaWNoIHplcm9lcyB0aGUgbWVtb3J5KSBhbmQgZXhwbGljaXRseSBjbGVhcnMgaXQgd2l0aCBgY3B1bWFza19jbGVhcmAgYmVmb3JlIHVzZS4gVGhlIGNoYW5nZXMgdG8gYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGFuZCBgY3B1bWFza19sb2NhbF9zcHJlYWRgIGludm9sdmUgY29udHJvbCBmbG93IGFuZCBDUFUgbWFzayBsb2dpYyAoZS5nLiwgdXNpbmcgYGlycV9kZWZhdWx0X2FmZmluaXR5YCBpbnN0ZWFkIG9mIGBudW1fb25saW5lX2NwdXMoKWApLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLCBhbmQgbm8gaW5mby1sZWFrcyBpbnRyb2R1Y2VkLiBBbnkgcG90ZW50aWFsIGlzc3VlcyAoc3VjaCBhcyBhIGRpdmlzaW9uIGJ5IHplcm8gaWYgYGNwdW1hc2tfd2VpZ2h0YCByZXR1cm5zIDApIHdvdWxkIGJlIGNhdWdodCBieSBzdGFuZGFyZCBrZXJuZWwgdGVzdGluZyBvciBLQVNBTi9VQlNBTi4gVGh1cywgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWVkZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBrZXJuZWwgbG9naWMgZm9yIElSUSBhZmZpbml0eSBoaW50cyAoX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCkgYW5kIGNwdW1hc2sgc3ByZWFkaW5nIChjcHVtYXNrX2xvY2FsX3NwcmVhZCksIHdoaWNoIGFyZSB1c2VkIGJ5IHZhcmlvdXMgZHJpdmVycy4gSXQgYWxzbyBtb2RpZmllcyB0aGUgc3RtbWFjIGRyaXZlciB0byB1c2UgdGhlc2UgZnVuY3Rpb25zIGNvcnJlY3RseS4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjQ5OjI4LjYyNTMxNzA4MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcyNjYyMzAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNzA3ODJjZGNkMGJkYWQ1NDdlN2M4MmEzMTNkOGM0OGJmMTYwMzhhZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAxOSAxNDo0OToyNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbmluZGV4IGE3MWYwZGYyNjM3ODUuLjk0OWNlZDdlNDZkMjggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5AQCAtMzgyNiwxMSArMzgyNiwxNiBAQCBzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4gXFx0c3RydWN0IHN0bW1hY19tc2kgKm1zaSA9IHByaXYtXFx1MDAzZW1zaTtcXG4gXFx0ZW51bSByZXF1ZXN0X2lycV9lcnIgaXJxX2VycjtcXG4rXFx0Y3B1bWFza192YXJfdCBhZmZpbml0eTtcXG4gXFx0aW50IGlycV9pZHggPSAwO1xcbiBcXHRjaGFyICppbnRfbmFtZTtcXG4rXFx0aW50IG5vZGU7XFxuIFxcdGludCByZXQ7XFxuIFxcdGludCBpO1xcbiBcXG4rXFx0aWYgKCF6YWxsb2NfY3B1bWFza192YXIoXFx1MDAyNmFmZmluaXR5LCBHRlBfS0VSTkVMKSlcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuK1xcbiBcXHQvKiBGb3IgY29tbW9uIGludGVycnVwdCAqL1xcbiBcXHRpbnRfbmFtZSA9IG1zaS1cXHUwMDNlaW50X25hbWVfbWFjO1xcbiBcXHRzcHJpbnRmKGludF9uYW1lLCBcXFwiJXM6JXNcXFwiLCBkZXYtXFx1MDAzZW5hbWUsIFxcXCJtYWNcXFwiKTtcXG5AQCAtMzkxNiw2ICszOTIxLDcgQEAgc3RhdGljIGludCBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdH1cXG4gXFxuIFxcdC8qIFJlcXVlc3QgUnggTVNJIGlycSAqL1xcbitcXHRub2RlID0gZGV2X3RvX25vZGUoXFx1MDAyNnByaXYtXFx1MDAzZWRldi1cXHUwMDNlZGV2KTtcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZXJ4X3F1ZXVlc190b191c2U7IGkrKykge1xcbiBcXHRcXHRpZiAoaSBcXHUwMDNlPSBNVExfTUFYX1JYX1FVRVVFUylcXG4gXFx0XFx0XFx0YnJlYWs7XFxuQEAgLTM5MzUsOCArMzk0MSwxMCBAQCBzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0XFx0XFx0aXJxX2lkeCA9IGk7XFxuIFxcdFxcdFxcdGdvdG8gaXJxX2Vycm9yO1xcbiBcXHRcXHR9XFxuLVxcdFxcdGlycV9zZXRfYWZmaW5pdHlfaGludChtc2ktXFx1MDAzZXJ4X2lycVtpXSxcXG4tXFx0XFx0XFx0XFx0ICAgICAgY3B1bWFza19vZihpICUgbnVtX29ubGluZV9jcHVzKCkpKTtcXG4rXFxuK1xcdFxcdGNwdW1hc2tfY2xlYXIoYWZmaW5pdHkpO1xcbitcXHRcXHRjcHVtYXNrX3NldF9jcHUoY3B1bWFza19sb2NhbF9zcHJlYWQoaSwgbm9kZSksIGFmZmluaXR5KTtcXG4rXFx0XFx0aXJxX3NldF9hZmZpbml0eV9hbmRfaGludChtc2ktXFx1MDAzZXJ4X2lycVtpXSwgYWZmaW5pdHkpO1xcbiBcXHR9XFxuIFxcbiBcXHQvKiBSZXF1ZXN0IFR4IE1TSSBpcnEgKi9cXG5AQCAtMzk1OSwxMyArMzk2NywxOCBAQCBzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0XFx0XFx0aXJxX2lkeCA9IGk7XFxuIFxcdFxcdFxcdGdvdG8gaXJxX2Vycm9yO1xcbiBcXHRcXHR9XFxuLVxcdFxcdGlycV9zZXRfYWZmaW5pdHlfaGludChtc2ktXFx1MDAzZXR4X2lycVtpXSxcXG4tXFx0XFx0XFx0XFx0ICAgICAgY3B1bWFza19vZihpICUgbnVtX29ubGluZV9jcHVzKCkpKTtcXG4rXFxuK1xcdFxcdGNwdW1hc2tfY2xlYXIoYWZmaW5pdHkpO1xcbitcXHRcXHRjcHVtYXNrX3NldF9jcHUoY3B1bWFza19sb2NhbF9zcHJlYWQoaSwgbm9kZSksIGFmZmluaXR5KTtcXG4rXFx0XFx0aXJxX3NldF9hZmZpbml0eV9hbmRfaGludChtc2ktXFx1MDAzZXR4X2lycVtpXSwgYWZmaW5pdHkpO1xcbiBcXHR9XFxuIFxcbitcXHRmcmVlX2NwdW1hc2tfdmFyKGFmZmluaXR5KTtcXG4rXFxuIFxcdHJldHVybiAwO1xcbiBcXG4gaXJxX2Vycm9yOlxcbitcXHRmcmVlX2NwdW1hc2tfdmFyKGFmZmluaXR5KTtcXG4gXFx0c3RtbWFjX2ZyZWVfaXJxKGRldiwgaXJxX2VyciwgaXJxX2lkeCk7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG5kaWZmIC0tZ2l0IGEva2VybmVsL2lycS9tYW5hZ2UuYyBiL2tlcm5lbC9pcnEvbWFuYWdlLmNcXG5pbmRleCA3ZWIwN2UzYmRiNGMyLi4zOTM3YmEyNGRmNmQ2IDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9pcnEvbWFuYWdlLmNcXG4rKysgYi9rZXJuZWwvaXJxL21hbmFnZS5jXFxuQEAgLTUwMywxMSArNTAzLDIxIEBAIEVYUE9SVF9TWU1CT0xfR1BMKGlycV9mb3JjZV9hZmZpbml0eSk7XFxuIFxcbiBpbnQgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCh1bnNpZ25lZCBpbnQgaXJxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSwgYm9vbCBzZXRhZmZpbml0eSlcXG4ge1xcbitcXHRzdHJ1Y3QgaXJxX2RhdGEgKmlycV9kYXRhO1xcbiBcXHRpbnQgcmV0ID0gLUVJTlZBTDtcXG4gXFxuIFxcdHNjb3BlZF9pcnFkZXNjX2dldF9hbmRfbG9jayhpcnEsIElSUV9HRVRfREVTQ19DSEVDS19HTE9CQUwpIHtcXG4gXFx0XFx0c2NvcGVkX2lycWRlc2MtXFx1MDAzZWFmZmluaXR5X2hpbnQgPSBtO1xcbitcXHRcXHRpcnFfZGF0YSA9IGlycV9kZXNjX2dldF9pcnFfZGF0YShzY29wZWRfaXJxZGVzYyk7XFxuIFxcdFxcdHJldCA9IDA7XFxuK1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBEbyBub3Qgb3ZlcndyaXRlIHRoZSBhZmZpbml0eSBpbiBjYXNlIGFuIGFmZmluaXR5IGZvciB0aGlzXFxuK1xcdFxcdCAqIElSUSBoYXMgYWxyZWFkeSBiZWVuIHJlcXVlc3RlZCwgZS5nLiBieSB3cml0aW5nIHRvXFxuK1xcdFxcdCAqIC9wcm9jL2lycS9cXHUwMDNjblxcdTAwM2Uvc21wX2FmZmluaXR5XFxuK1xcdFxcdCAqL1xcbitcXHRcXHRpZiAoaXJxZF9hZmZpbml0eV93YXNfc2V0KGlycV9kYXRhKSlcXG4rXFx0XFx0XFx0c2V0YWZmaW5pdHkgPSBmYWxzZTtcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKCFyZXQgXFx1MDAyNlxcdTAwMjYgbSBcXHUwMDI2XFx1MDAyNiBzZXRhZmZpbml0eSlcXG5kaWZmIC0tZ2l0IGEvbGliL2NwdW1hc2suYyBiL2xpYi9jcHVtYXNrLmNcXG5pbmRleCA1YWRiOTg3NGZiZDBmLi43M2U3YjYwYTkyMDExIDEwMDY0NFxcbi0tLSBhL2xpYi9jcHVtYXNrLmNcXG4rKysgYi9saWIvY3B1bWFzay5jXFxuQEAgLTYsNiArNiw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9leHBvcnQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21lbWJsb2NrLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9udW1hLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFxcdTAwM2VcXG4gXFxuIC8qIFRoZXNlIGFyZSBub3QgaW5saW5lIGJlY2F1c2Ugb2YgaGVhZGVyIHRhbmdsZXMuICovXFxuICNpZmRlZiBDT05GSUdfQ1BVTUFTS19PRkZTVEFDS1xcbkBAIC04MSw4ICs4Miw5IEBAIHZvaWQgX19pbml0IGZyZWVfYm9vdG1lbV9jcHVtYXNrX3ZhcihjcHVtYXNrX3Zhcl90IG1hc2spXFxuICAqIEBpOiBpbmRleCBudW1iZXJcXG4gICogQG5vZGU6IGxvY2FsIG51bWFfbm9kZVxcbiAgKlxcbi0gKiBSZXR1cm46IG9ubGluZSBDUFUgYWNjb3JkaW5nIHRvIGEgbnVtYSBhd2FyZSBwb2xpY3k7IGxvY2FsIGNwdXMgYXJlIHJldHVybmVkXFxuLSAqIGZpcnN0LCBmb2xsb3dlZCBieSBub24tbG9jYWwgb25lcywgdGhlbiBpdCB3cmFwcyBhcm91bmQuXFxuKyAqIFJldHVybjogb25saW5lIENQVSBhY2NvcmRpbmcgdG8gdGhlIGRlZmF1bHQgSVJRIGFmZmluaXR5IGFuZCBhIG51bWEgYXdhcmVcXG4rICogcG9saWN5OyBsb2NhbCBjcHVzIGFyZSByZXR1cm5lZCBmaXJzdCwgZm9sbG93ZWQgYnkgbm9uLWxvY2FsIG9uZXMsIHRoZW4gaXRcXG4rICogd3JhcHMgYXJvdW5kLlxcbiAgKlxcbiAgKiBGb3IgdGhvc2Ugd2hvIHdhbnRzIHRvIGVudW1lcmF0ZSBhbGwgQ1BVcyBiYXNlZCBvbiB0aGVpciBOVU1BIGRpc3RhbmNlcyxcXG4gICogaS5lLiBjYWxsIHRoaXMgZnVuY3Rpb24gaW4gYSBsb29wLCBsaWtlOlxcbkBAIC0xMTAsOSArMTEyLDkgQEAgdW5zaWduZWQgaW50IGNwdW1hc2tfbG9jYWxfc3ByZWFkKHVuc2lnbmVkIGludCBpLCBpbnQgbm9kZSlcXG4gXFx0dW5zaWduZWQgaW50IGNwdTtcXG4gXFxuIFxcdC8qIFdyYXA6IHdlIGFsd2F5cyB3YW50IGEgY3B1LiAqL1xcbi1cXHRpICU9IG51bV9vbmxpbmVfY3B1cygpO1xcbitcXHRpICU9IGNwdW1hc2tfd2VpZ2h0KGlycV9kZWZhdWx0X2FmZmluaXR5KTtcXG4gXFxuLVxcdGNwdSA9IHNjaGVkX251bWFfZmluZF9udGhfY3B1KGNwdV9vbmxpbmVfbWFzaywgaSwgbm9kZSk7XFxuK1xcdGNwdSA9IHNjaGVkX251bWFfZmluZF9udGhfY3B1KGlycV9kZWZhdWx0X2FmZmluaXR5LCBpLCBub2RlKTtcXG4gXFxuIFxcdFdBUk5fT04oY3B1IFxcdTAwM2U9IG5yX2NwdV9pZHMpO1xcbiBcXHRyZXR1cm4gY3B1O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo0OToyOS4wOTg3NjIxOTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNzk3NTAwMTQwMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1RNTUFDX0VUSFwiLFxuICAgIFwiU1RNTUFDX1BDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRcIixcbiAgICBcImNwdW1hc2tfbG9jYWxfc3ByZWFkXCIsXG4gICAgXCJzdG1tYWNfcmVpbml0X3F1ZXVlc1wiLFxuICAgIFwic3RtbWFjX3hkcF9vcGVuXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBrZXJuZWwgbG9naWMgZm9yIElSUSBhZmZpbml0eSBoaW50cyAoX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCkgYW5kIGNwdW1hc2sgc3ByZWFkaW5nIChjcHVtYXNrX2xvY2FsX3NwcmVhZCksIHdoaWNoIGFyZSB1c2VkIGJ5IHZhcmlvdXMgZHJpdmVycy4gSXQgYWxzbyBtb2RpZmllcyB0aGUgc3RtbWFjIGRyaXZlciB0byB1c2UgdGhlc2UgZnVuY3Rpb25zIGNvcnJlY3RseS4gVGhlIGNoYW5nZXMgYXJlIGZ1bmN0aW9uYWwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDcwNzgyY2RjZDBiZGFkNTQ3ZTdjODJhMzEzZDhjNDhiZjE2MDM4YWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxOSAxNDo0OToyNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCBhNzFmMGRmMjYzNzg1Li45NDljZWQ3ZTQ2ZDI4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTM4MjYsMTEgKzM4MjYsMTYgQEAgc3RhdGljIGludCBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xuIFx0c3RydWN0IHN0bW1hY19tc2kgKm1zaSA9IHByaXYtXHUwMDNlbXNpO1xuIFx0ZW51bSByZXF1ZXN0X2lycV9lcnIgaXJxX2VycjtcbitcdGNwdW1hc2tfdmFyX3QgYWZmaW5pdHk7XG4gXHRpbnQgaXJxX2lkeCA9IDA7XG4gXHRjaGFyICppbnRfbmFtZTtcbitcdGludCBub2RlO1xuIFx0aW50IHJldDtcbiBcdGludCBpO1xuIFxuK1x0aWYgKCF6YWxsb2NfY3B1bWFza192YXIoXHUwMDI2YWZmaW5pdHksIEdGUF9LRVJORUwpKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbiBcdC8qIEZvciBjb21tb24gaW50ZXJydXB0ICovXG4gXHRpbnRfbmFtZSA9IG1zaS1cdTAwM2VpbnRfbmFtZV9tYWM7XG4gXHRzcHJpbnRmKGludF9uYW1lLCBcIiVzOiVzXCIsIGRldi1cdTAwM2VuYW1lLCBcIm1hY1wiKTtcbkBAIC0zOTE2LDYgKzM5MjEsNyBAQCBzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdH1cbiBcbiBcdC8qIFJlcXVlc3QgUnggTVNJIGlycSAqL1xuK1x0bm9kZSA9IGRldl90b19ub2RlKFx1MDAyNnByaXYtXHUwMDNlZGV2LVx1MDAzZWRldik7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcnhfcXVldWVzX3RvX3VzZTsgaSsrKSB7XG4gXHRcdGlmIChpIFx1MDAzZT0gTVRMX01BWF9SWF9RVUVVRVMpXG4gXHRcdFx0YnJlYWs7XG5AQCAtMzkzNSw4ICszOTQxLDEwIEBAIHN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0XHRcdGlycV9pZHggPSBpO1xuIFx0XHRcdGdvdG8gaXJxX2Vycm9yO1xuIFx0XHR9XG4tXHRcdGlycV9zZXRfYWZmaW5pdHlfaGludChtc2ktXHUwMDNlcnhfaXJxW2ldLFxuLVx0XHRcdFx0ICAgICAgY3B1bWFza19vZihpICUgbnVtX29ubGluZV9jcHVzKCkpKTtcbitcbitcdFx0Y3B1bWFza19jbGVhcihhZmZpbml0eSk7XG4rXHRcdGNwdW1hc2tfc2V0X2NwdShjcHVtYXNrX2xvY2FsX3NwcmVhZChpLCBub2RlKSwgYWZmaW5pdHkpO1xuK1x0XHRpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KG1zaS1cdTAwM2VyeF9pcnFbaV0sIGFmZmluaXR5KTtcbiBcdH1cbiBcbiBcdC8qIFJlcXVlc3QgVHggTVNJIGlycSAqL1xuQEAgLTM5NTksMTMgKzM5NjcsMTggQEAgc3RhdGljIGludCBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdFx0aXJxX2lkeCA9IGk7XG4gXHRcdFx0Z290byBpcnFfZXJyb3I7XG4gXHRcdH1cbi1cdFx0aXJxX3NldF9hZmZpbml0eV9oaW50KG1zaS1cdTAwM2V0eF9pcnFbaV0sXG4tXHRcdFx0XHQgICAgICBjcHVtYXNrX29mKGkgJSBudW1fb25saW5lX2NwdXMoKSkpO1xuK1xuK1x0XHRjcHVtYXNrX2NsZWFyKGFmZmluaXR5KTtcbitcdFx0Y3B1bWFza19zZXRfY3B1KGNwdW1hc2tfbG9jYWxfc3ByZWFkKGksIG5vZGUpLCBhZmZpbml0eSk7XG4rXHRcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQobXNpLVx1MDAzZXR4X2lycVtpXSwgYWZmaW5pdHkpO1xuIFx0fVxuIFxuK1x0ZnJlZV9jcHVtYXNrX3ZhcihhZmZpbml0eSk7XG4rXG4gXHRyZXR1cm4gMDtcbiBcbiBpcnFfZXJyb3I6XG4rXHRmcmVlX2NwdW1hc2tfdmFyKGFmZmluaXR5KTtcbiBcdHN0bW1hY19mcmVlX2lycShkZXYsIGlycV9lcnIsIGlycV9pZHgpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5kaWZmIC0tZ2l0IGEva2VybmVsL2lycS9tYW5hZ2UuYyBiL2tlcm5lbC9pcnEvbWFuYWdlLmNcbmluZGV4IDdlYjA3ZTNiZGI0YzIuLjM5MzdiYTI0ZGY2ZDYgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvaXJxL21hbmFnZS5jXG4rKysgYi9rZXJuZWwvaXJxL21hbmFnZS5jXG5AQCAtNTAzLDExICs1MDMsMjEgQEAgRVhQT1JUX1NZTUJPTF9HUEwoaXJxX2ZvcmNlX2FmZmluaXR5KTtcbiBcbiBpbnQgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCh1bnNpZ25lZCBpbnQgaXJxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSwgYm9vbCBzZXRhZmZpbml0eSlcbiB7XG4rXHRzdHJ1Y3QgaXJxX2RhdGEgKmlycV9kYXRhO1xuIFx0aW50IHJldCA9IC1FSU5WQUw7XG4gXG4gXHRzY29wZWRfaXJxZGVzY19nZXRfYW5kX2xvY2soaXJxLCBJUlFfR0VUX0RFU0NfQ0hFQ0tfR0xPQkFMKSB7XG4gXHRcdHNjb3BlZF9pcnFkZXNjLVx1MDAzZWFmZmluaXR5X2hpbnQgPSBtO1xuK1x0XHRpcnFfZGF0YSA9IGlycV9kZXNjX2dldF9pcnFfZGF0YShzY29wZWRfaXJxZGVzYyk7XG4gXHRcdHJldCA9IDA7XG4rXG4rXHRcdC8qXG4rXHRcdCAqIERvIG5vdCBvdmVyd3JpdGUgdGhlIGFmZmluaXR5IGluIGNhc2UgYW4gYWZmaW5pdHkgZm9yIHRoaXNcbitcdFx0ICogSVJRIGhhcyBhbHJlYWR5IGJlZW4gcmVxdWVzdGVkLCBlLmcuIGJ5IHdyaXRpbmcgdG9cbitcdFx0ICogL3Byb2MvaXJxL1x1MDAzY25cdTAwM2Uvc21wX2FmZmluaXR5XG4rXHRcdCAqL1xuK1x0XHRpZiAoaXJxZF9hZmZpbml0eV93YXNfc2V0KGlycV9kYXRhKSlcbitcdFx0XHRzZXRhZmZpbml0eSA9IGZhbHNlO1xuIFx0fVxuIFxuIFx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IG0gXHUwMDI2XHUwMDI2IHNldGFmZmluaXR5KVxuZGlmZiAtLWdpdCBhL2xpYi9jcHVtYXNrLmMgYi9saWIvY3B1bWFzay5jXG5pbmRleCA1YWRiOTg3NGZiZDBmLi43M2U3YjYwYTkyMDExIDEwMDY0NFxuLS0tIGEvbGliL2NwdW1hc2suY1xuKysrIGIvbGliL2NwdW1hc2suY1xuQEAgLTYsNiArNiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXhwb3J0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tZW1ibG9jay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbnVtYS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvaW50ZXJydXB0LmhcdTAwM2VcbiBcbiAvKiBUaGVzZSBhcmUgbm90IGlubGluZSBiZWNhdXNlIG9mIGhlYWRlciB0YW5nbGVzLiAqL1xuICNpZmRlZiBDT05GSUdfQ1BVTUFTS19PRkZTVEFDS1xuQEAgLTgxLDggKzgyLDkgQEAgdm9pZCBfX2luaXQgZnJlZV9ib290bWVtX2NwdW1hc2tfdmFyKGNwdW1hc2tfdmFyX3QgbWFzaylcbiAgKiBAaTogaW5kZXggbnVtYmVyXG4gICogQG5vZGU6IGxvY2FsIG51bWFfbm9kZVxuICAqXG4tICogUmV0dXJuOiBvbmxpbmUgQ1BVIGFjY29yZGluZyB0byBhIG51bWEgYXdhcmUgcG9saWN5OyBsb2NhbCBjcHVzIGFyZSByZXR1cm5lZFxuLSAqIGZpcnN0LCBmb2xsb3dlZCBieSBub24tbG9jYWwgb25lcywgdGhlbiBpdCB3cmFwcyBhcm91bmQuXG4rICogUmV0dXJuOiBvbmxpbmUgQ1BVIGFjY29yZGluZyB0byB0aGUgZGVmYXVsdCBJUlEgYWZmaW5pdHkgYW5kIGEgbnVtYSBhd2FyZVxuKyAqIHBvbGljeTsgbG9jYWwgY3B1cyBhcmUgcmV0dXJuZWQgZmlyc3QsIGZvbGxvd2VkIGJ5IG5vbi1sb2NhbCBvbmVzLCB0aGVuIGl0XG4rICogd3JhcHMgYXJvdW5kLlxuICAqXG4gICogRm9yIHRob3NlIHdobyB3YW50cyB0byBlbnVtZXJhdGUgYWxsIENQVXMgYmFzZWQgb24gdGhlaXIgTlVNQSBkaXN0YW5jZXMsXG4gICogaS5lLiBjYWxsIHRoaXMgZnVuY3Rpb24gaW4gYSBsb29wLCBsaWtlOlxuQEAgLTExMCw5ICsxMTIsOSBAQCB1bnNpZ25lZCBpbnQgY3B1bWFza19sb2NhbF9zcHJlYWQodW5zaWduZWQgaW50IGksIGludCBub2RlKVxuIFx0dW5zaWduZWQgaW50IGNwdTtcbiBcbiBcdC8qIFdyYXA6IHdlIGFsd2F5cyB3YW50IGEgY3B1LiAqL1xuLVx0aSAlPSBudW1fb25saW5lX2NwdXMoKTtcbitcdGkgJT0gY3B1bWFza193ZWlnaHQoaXJxX2RlZmF1bHRfYWZmaW5pdHkpO1xuIFxuLVx0Y3B1ID0gc2NoZWRfbnVtYV9maW5kX250aF9jcHUoY3B1X29ubGluZV9tYXNrLCBpLCBub2RlKTtcbitcdGNwdSA9IHNjaGVkX251bWFfZmluZF9udGhfY3B1KGlycV9kZWZhdWx0X2FmZmluaXR5LCBpLCBub2RlKTtcbiBcbiBcdFdBUk5fT04oY3B1IFx1MDAzZT0gbnJfY3B1X2lkcyk7XG4gXHRyZXR1cm4gY3B1O1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NDk6MjkuMDk4NzYzODYyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzc2MTY2NzM0NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IElSUSBBZmZpbml0eSBhbmQgU3ByZWFkaW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSBoYXZlIGEgcGF0Y2ggdGhhdCdzIGRlZmluaXRlbHkgaW50cm9kdWNpbmcgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwsIGFuZCB3ZSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3Qgd2F5IHRvIGZ1enogdGhlbS4gVGhlIGNoYW5nZXMgYXJlIHNwcmVhZCBhY3Jvc3MgYSBmZXcgYXJlYXMsIGFuZCB0aGF0IHJlcXVpcmVzIHVzIHRvIGJlIG1pbmRmdWwgb2Ygd2hhdCB3ZSdyZSBsb29raW5nIGF0LlxuXG5GaXJzdCwgdGhlcmUgYXJlIHNvbWUgcHJldHR5IGxvdy1sZXZlbCBjaGFuZ2VzIHRvIGBpcnFgIGhhbmRsaW5nIGluIGBrZXJuZWwvaXJxL21hbmFnZS5jYCBhbmQgYGxpYi9jcHVtYXNrLmNgLiBTcGVjaWZpY2FsbHksIGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCBoYXMgYmVlbiBtb2RpZmllZCwgYWxvbmcgd2l0aCB0aGUgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCBndXQgZmVlbGluZyBpcyB0aGF0IGFueSBtb2RpZmljYXRpb24gdGhhdCB0b3VjaGVzIHRoZXNlIGNvcmUgbW9kdWxlcyBzaG91bGQgYmUgZnV6emVkLCBpdCdzIGp1c3QgdGhlIGJlc3QgdGhpbmcgdG8gZG8gZ2l2ZW4gdGhlaXIgd2lkZSBhcHBsaWNhYmlsaXR5LiBUaGUgYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGNoYW5nZSBpbmNsdWRlcyBhIGNoZWNrIGZvciBhbiBleGlzdGluZyBhZmZpbml0eSBzZXR0aW5nLiBUaGUgY2hhbmdlIGluIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAgYWxzbyBtb2RpZmllcyBpdHMgdXNhZ2UuXG5cblRoZW4gd2UgaGF2ZSBhIGRyaXZlci1zcGVjaWZpYyBjaGFuZ2UgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgLiBJdCdzIGFsdGVyaW5nIGhvdyBJUlEgYWZmaW5pdHkgaXMgaGFuZGxlZCB3aXRoaW4gdGhlIGBzdG1tYWNgIGRyaXZlciwgdXNpbmcgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYCBhbmQgYGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnRgIG5vdywgd2hlcmUgaXQgdXNlZCB0byB1c2UgYGlycV9zZXRfYWZmaW5pdHlfaGludGAuIFRoZSBgc3RtbWFjYCBkcml2ZXIgaXMgdXNlZCBvbiBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgaGFyZHdhcmUsIHNvIGl0IG1pZ2h0IGJlIGEgYml0IG1vcmUgbmljaGUsIGJ1dCB0aGVzZSBkcml2ZXJzIG9mdGVuIHNob3cgdXAgb24gZW1iZWRkZWQgc3lzdGVtcywgc28gaXQncyBhIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5NeSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMgZ29pbmcgdG8gYmUgb24gdGhlIGNvcmUgY2hhbmdlcyBiZWNhdXNlIHRob3NlIGhhdmUgdGhlIHBvdGVudGlhbCB0byBpbXBhY3QgYSBtdWNoIHdpZGVyIHJhbmdlIG9mIGhhcmR3YXJlIGFuZCBjb25maWd1cmF0aW9ucy4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gd2FudCB0byBmb2N1cyBvbiBmdXp6aW5nIGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCBhbmQgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYC4gVGhlc2UgYXJlIGNyaXRpY2FsIGZ1bmN0aW9ucyB0aGF0IGFyZSByZWFjaGFibGUsIGFuZCB0aHVzIHdvcnRoeSBvZiBteSBhdHRlbnRpb24uXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGFyZSByZXF1aXJlZCB0byBlbmFibGUgdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMuIFRoZSBjb2RlIGZvciBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgbGl2ZXMgaW4gYGtlcm5lbC9pcnEvbWFuYWdlLmNgLCB3aGljaCwgYWZ0ZXIgYSBxdWljayBjaGVjayBvZiB0aGUgTWFrZWZpbGUsIHNlZW1zIHRvIGJlIGNvbXBpbGVkIHVuY29uZGl0aW9uYWxseSAob3IgYXQgbGVhc3QgYmFzZWQgb24gYENPTkZJR19HRU5FUklDX0hBUkRJUlFTYCwgd2hpY2ggaXMgZWZmZWN0aXZlbHkgc3RhbmRhcmQpLiBUaGF0J3MgaWRlYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NDEsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NTQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MDo0Ni43MTU0NDA4NDhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYwODIyNjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFuYWdlLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2lycS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvaXJxL01ha2VmaWxlLTItXFxua2VybmVsL2lycS9NYWtlZmlsZTozOm9iai15IDo9IGlycWRlc2MubyBoYW5kbGUubyBtYW5hZ2UubyBzcHVyaW91cy5vIHJlc2VuZC5vIGNoaXAubyBkdW1teWNoaXAubyBkZXZyZXMubyBrZXhlYy5vXFxua2VybmVsL2lycS9NYWtlZmlsZS00LW9iai0kKENPTkZJR19HRU5FUklDX0lSUV9DSElQKSArPSBnZW5lcmljLWNoaXAub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MDo0Ni43NjE1MjgzNjNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTA3MDQ3Mzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipDaGVja2luZyBDb21waWxlIERlcGVuZGVuY2llcyoqXG5cblJpZ2h0LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIHdoYXQncyAqYWx3YXlzKiBiZWluZyBnZW5lcmF0ZWQuIEl0J3MgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBkZXBlbmRlbmNpZXMgYW5kIHBvdGVudGlhbCBib3R0bGVuZWNrcy4gRmlyc3QsIGBtYW5hZ2Uub2AgaXMgYSBnaXZlbjsgaXQncyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgdGhlIGJ1aWxkLCBwcmVzdW1hYmx5IGZvciBzb21ldGhpbmcgY29yZSBpbiB0aGUgbWFuYWdlbWVudCBhc3BlY3QuIEFuZCwgYXMgZXhwZWN0ZWQsIGBsaWIvY3B1bWFzay5vYCBpcyBhbm90aGVyIG9uZSB0aGF0IGNvbnNpc3RlbnRseSBzaG93cyB1cC4gQ1BVIG1hc2tzIGFyZSBvZnRlbiBmdW5kYW1lbnRhbCBhbmQgSSdtIGd1ZXNzaW5nIHRoYXQgdGhpcyBpcyBmb3IgbWFuYWdpbmcgdGhvc2UgbWFza3MgaW4gdGhlIHNvZnR3YXJlLCBoZW5jZSBpdCBpcyBhbHdheXMgcmVxdWlyZWQuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5IHRoZXNlIGFyZSBjb25zaXN0ZW50bHkgbmVlZGVkLiBMZXQncyBzZWUgd2hhdCdzIGdvaW5nIG9uIGluIGBzdG1tYWNfbWFpbi5jYCAuIFRoaXMgaXMgbGlrZWx5IHdoZXJlIHRoZSBtYWluIGRyaXZlciBsb2dpYyBvciBkZXZpY2UgaW5pdGlhbGl6YXRpb24gcmVzaWRlcy4gQ2hlY2tpbmcgdGhhdCBmaWxlIHdpbGwgZ2l2ZSB0aGUgbmVjZXNzYXJ5IGluc2lnaHQgdG8gdW5kZXJzdGFuZCB3aHkgdGhvc2UgcGFydGljdWxhciBvYmplY3QgZmlsZXMgYXJlIGFsd2F5cyBuZWVkZWQgaW4gYSBtb3JlIGNvbmNyZXRlIG1hbm5lci5cblxuXG4iLCJJbnB1dFRva2VucyI6NDg0OCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUwOjUwLjI2ODU3Nzc2N1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzA2MzQzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfbWFpbi5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTI9b2JqLSQoQ09ORklHX1NUTU1BQ19FVEgpICs9IHN0bW1hYy5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MzpzdG1tYWMtb2Jqczo9IHN0bW1hY19tYWluLm8gc3RtbWFjX2V0aHRvb2wubyBzdG1tYWNfbWRpby5vIHJpbmdfbW9kZS5vXFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTQtXFx0ICAgICAgY2hhaW5fbW9kZS5vIGR3bWFjX2xpYi5vIGR3bWFjMTAwMF9jb3JlLm8gZHdtYWMxMDAwX2RtYS5vXFx0XFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MDo1MC4zMTU2NDU4MjNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDQ4NDU5NTExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIFNUTU1BQyBEcml2ZXIgQ29uZmlndXJhdGlvbiBhbmQgVmlydHVhbGl6YXRpb24qKlxuXG5SaWdodCwgc28gSSBzZWUgdGhhdCBgQ09ORklHX1NUTU1BQ19FVEhgIGlzLCBhcyBleHBlY3RlZCwgYSBoYXJkIHJlcXVpcmVtZW50IGZvciB0aGUgU1RNTUFDIGRyaXZlci4gTm90aGluZyB1bmV4cGVjdGVkIHRoZXJlLCBidXQgYWx3YXlzIGdvb2QgdG8gY29uZmlybSB0aGUgYmFzaWNzLlxuXG5Ob3csIG15IG5leHQgdGhvdWdodCBpcyBhYm91dCB0aGUgbXVsdGktTVNJIGludGVycnVwdCBoYW5kbGluZyB3aXRoaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB2ZXJpZnkgdGhlIHJlYWNoYWJpbGl0eSBvZiBgc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaWAgd2l0aGluIHRoZXNlIGVudmlyb25tZW50cy4gVmlydHVhbGl6YXRpb24gaW50cm9kdWNlcyBzb21lIG51YW5jZXMgd2hlbiBpdCBjb21lcyB0byBpbnRlcnJ1cHQgbWFuYWdlbWVudCwgc28gSSB3YW50IHRvIGVuc3VyZSB0aGUgZHJpdmVyIGlzIGJlaGF2aW5nIGFzIGFudGljaXBhdGVkLiBTaW5jZSBTVE1NQUMgaGFzIGEgUENJIGRyaXZlciwgYHN0bW1hY19wY2kuY2AsIEknbGwgYmUgc3VyZSB0byBpbnZlc3RpZ2F0ZSB0aGF0IGRyaXZlciBmaWxlIGZvciByZWxldmFudCBpbnNpZ2h0cy4gVGhpcyB3aWxsIGhlbHAgd2l0aCBkZWJ1Z2dpbmcgaW4gY2FzZSBvZiBhbnkgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Mjk4LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTA6NTMuNzY0MTA4MDM0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3OTE3MTM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY19wY2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NTM9b2JqLSQoQ09ORklHX0RXTUFDX01PVE9SQ09NTSlcXHQrPSBkd21hYy1tb3RvcmNvbW0ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjU0OnN0bW1hYy1wY2ktb2Jqczo9IHN0bW1hY19wY2kub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MDo1My44MTIwMzEzODlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjQ3MjkyNTAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYHN0bW1hY19wY2ktb2Jqc2AgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgc2VlIHRoYXQgYHN0bW1hY19wY2ktb2Jqc2AgaXMgKmRlZmluZWQqIGluIHRoZSBtYWtlZmlsZSBvciBjb25maWcsIGdyZWF0LiBUaGF0J3MgcHJvZ3Jlc3MuIEJ1dCwgaW1tZWRpYXRlbHksIHRoZSBuZXh0IHF1ZXN0aW9uIGhpdHMgbWU6IHdoYXQncyB0aGUgYWN0dWFsICpjb25maWd1cmF0aW9uKiBvZiBpdD8gSXMgaXQgZW5hYmxlZD8gRGlzYWJsZWQ/IEJ1aWx0LWluPyBBIG1vZHVsZT8gQXJlIHRoZXJlIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBJJ20gbWlzc2luZz8gSSBuZWVkIHRvIGRyaWxsIGRvd24gaW50byB0aGUgS2NvbmZpZyBvcHRpb25zIHRvIHVuZGVyc3RhbmQgaG93IGBzdG1tYWNfcGNpLW9ianNgIGlzIGdldHRpbmcgaW5jbHVkZWQgKG9yICpub3QqIGluY2x1ZGVkKSBpbiB0aGUgZmluYWwgYnVpbGQuIEp1c3Qgc2VlaW5nIHRoZSBkZWZpbml0aW9uIGlzbid0IGVub3VnaDsgSSBuZWVkIHRoZSBmdWxsIHBpY3R1cmUgdG8gdHJvdWJsZXNob290IGVmZmVjdGl2ZWx5LiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29udGV4dC4gTGV0IG1lIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2ODQsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MDo1Ny4wNTkzMjY1NzJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NTQ5ODY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hYy1wY2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NDk9b2JqLSQoQ09ORklHX1NUTU1BQ19MSUJQQ0kpXFx0Kz0gc3RtbWFjX2xpYnBjaS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NTA6b2JqLSQoQ09ORklHX1NUTU1BQ19QQ0kpXFx0Kz0gc3RtbWFjLXBjaS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNTEtb2JqLSQoQ09ORklHX0RXTUFDX0lOVEVMKVxcdCs9IGR3bWFjLWludGVsLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTUzPW9iai0kKENPTkZJR19EV01BQ19NT1RPUkNPTU0pXFx0Kz0gZHdtYWMtbW90b3Jjb21tLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1NDpzdG1tYWMtcGNpLW9ianM6PSBzdG1tYWNfcGNpLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTA6NTcuMTA2ODgyNjU3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NjUyNzYyOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBQb3RlbnRpYWwgSW1wYWN0IG9mIFBDSSBEcml2ZXIgQ29uZmlndXJhdGlvbiBDaGFuZ2VzKipcblxuUmlnaHQsIHNvIGBDT05GSUdfU1RNTUFDX1BDSWAg4oCTIHRoYXQncyB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciB0aGUgUENJLWJhc2VkIGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJpcHBsZSBlZmZlY3RzLCB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLiBNeSBpbW1lZGlhdGUgY29uY2VybiwgdGhvdWdoLCBpc24ndCBqdXN0IHRoZSBkcml2ZXIgaXRzZWxmLiBGcm9tIHBhc3QgZXhwZXJpZW5jZSBJIGtub3cgdGhhdCBmdW5kYW1lbnRhbCBjaGFuZ2VzIGxpa2UgdGhpcyBvZnRlbiB0b3VjaCBsb3cgbGV2ZWwgc3VwcG9ydCBhbmQgaW5mcmFzdHJ1Y3R1cmUuXG5cbkl0IGxvb2tzIGxpa2UgdGhlIHNpZ25pZmljYW50IG1vZGlmaWNhdGlvbnMgYXJlIGFjdHVhbGx5IHdpdGhpbiBga2VybmVsL2lycS9tYW5hZ2UuY2AgYW5kIGBsaWIvY3B1bWFzay5jYC4gVGhvc2UgYXJlICpjb3JlKiBrZXJuZWwgYXJlYXMg4oCTIGludGVycnVwdCBtYW5hZ2VtZW50IGFuZCBDUFUgbWFzayBtYW5pcHVsYXRpb24sIHJlc3BlY3RpdmVseSDigJMgYW5kIGFyZSBhYnNvbHV0ZWx5IHJlYWNoYWJsZSBmcm9tIGFueSBkcml2ZXIgdXNpbmcgdGhlIGludGVycnVwdHMgb3IgYWZmaW5pdHkuIFRoZXkgYXJlIGhpZ2hseSBsaWtlbHkgdG8gYmUgZGlyZWN0bHkgdG91Y2hlZCBieSB0aGVzZSBzb3J0cyBvZiBjb25maWcgY2hhbmdlcy5cblxuVGhlcmVmb3JlIEkgbmVlZCB0byBjaGVjayBzb21ldGhpbmcgcXVpY2tseS4gSXMgYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGV4cG9ydGVkPyBJZiBzbywgdGhpcyBzdWdnZXN0cyB0aGF0IHRoZSBJUlEgYWZmaW5pdHkgQVBJIGlzIGdvaW5nIHRvIGJlIHJlbGV2YW50IGFuZCBJIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBjYWxsaW5nIHBhdHRlcm5zIGZyb20gdGhpcyBkcml2ZXIsIGFuZCBob3cgaXQgaGFuZGxlcyBhZmZpbml0eS4gVGhpcyBjb3VsZCBiZSBpbXBvcnRhbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNDcsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MTowMS4wNzIxNjE0MjRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NDU0ODM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKl9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2lycS9tYW5hZ2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvaXJxL21hbmFnZS5jPTUwND1pbnQgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCh1bnNpZ25lZCBpbnQgaXJxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSwgYm9vbCBzZXRhZmZpbml0eSlcXG4tLVxcbmtlcm5lbC9pcnEvbWFuYWdlLmMtNTI2LX1cXG5rZXJuZWwvaXJxL21hbmFnZS5jOjUyNzpFWFBPUlRfU1lNQk9MX0dQTChfX2lycV9hcHBseV9hZmZpbml0eV9oaW50KTtcXG5rZXJuZWwvaXJxL21hbmFnZS5jLTUyOC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTE6MDEuMTE4NjI0MDQ5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwNTY0Mjc5MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNoZWNraW5nIGZvciBgY3B1bWFza19sb2NhbF9zcHJlYWRgIEV4cG9ydCoqXG5cbkFscmlnaHQsIHRoYXQgY29uZmlybXMgaXQuIEkga25ldyBpdCB3YXMgbGlrZWx5LCBidXQgSSBhbHdheXMgd2FudCB0byBiZSBzdXJlIGJlZm9yZSBJIHN0YXJ0IGRvd24gYSBwYXRoLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBxdWlja2x5IHZlcmlmeSBpZiBgY3B1bWFza19sb2NhbF9zcHJlYWRgIGlzIGFjdHVhbGx5IGV4cG9ydGVkLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgYXZhaWxhYmxlIGZvciBteSBtb2R1bGUgdG8gdXRpbGl6ZSwgYW5kIGlzbid0IHNvbWVob3cgaGlkZGVuIG9yIHN1YmplY3QgdG8gc29tZSB3ZWlyZCBpbnRlcm5hbCBsaW5raW5nIGlzc3VlLiBUaGF0IGV4cG9ydCBzdGF0dXMgd2lsbCBiZSB0aGUgY3JpdGljYWwgbmV4dCBwb2ludCB0byBpbnZlc3RpZ2F0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjYxOCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUxOjA0LjE3NTA1NDM4MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU5ODc0MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qY3B1bWFza19sb2NhbF9zcHJlYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL2NwdW1hc2suY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvY3B1bWFzay5jPTExMD11bnNpZ25lZCBpbnQgY3B1bWFza19sb2NhbF9zcHJlYWQodW5zaWduZWQgaW50IGksIGludCBub2RlKVxcbi0tXFxubGliL2NwdW1hc2suYy0xMjEtfVxcbmxpYi9jcHVtYXNrLmM6MTIyOkVYUE9SVF9TWU1CT0woY3B1bWFza19sb2NhbF9zcHJlYWQpO1xcbmxpYi9jcHVtYXNrLmMtMTIzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MTowNC4yMjEwNDYyMTZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQzODYxOTg3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKipcblxuT2theSwgeWVzLCB0aGlzIHBhdGNoIGxvb2tzIHNpZ25pZmljYW50LiBJdCdzIHRvdWNoaW5nIGNvcmUga2VybmVsIGxvZ2ljIHJlbGF0ZWQgdG8gSVJRIGFmZmluaXR5IGhpbnRzIGFuZCBob3cgdGhlIGBjcHVtYXNrYCBpcyBzcHJlYWQgYWNyb3NzIENQVXMsIHdoaWNoIG1lYW5zIGl0IGltcGFjdHMgcXVpdGUgYSBmZXcgZHJpdmVycyB1bmRlciB0aGUgaG9vZC4gVGhlIGZhY3QgdGhhdCBpdCBhbHNvIGFkanVzdHMgdGhlIGBzdG1tYWNgIGRyaXZlciB0byAqY29ycmVjdGx5KiBsZXZlcmFnZSB0aGVzZSBtb2RpZmllZCBmdW5jdGlvbnMgaXMgYSBnb29kIHNpZ24sIGZ1bmN0aW9uYWxseS4gVGhpcyBpbXBsaWVzIGFuIG92ZXJhbGwgaW1wcm92ZW1lbnQgdG8gdGhlIHN5c3RlbS5cblxuR2l2ZW4gdGhhdCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIHByb3Blcmx5IGZ1enplZCBhbmQgdGVzdGVkLiBXZSdyZSBkZWFsaW5nIHdpdGggZnVuZGFtZW50YWwga2VybmVsIG1lY2hhbmlzbXMgaGVyZSwgc28gcm9idXN0IHRlc3RpbmcgaXMgcGFyYW1vdW50LlxuXG5Ob3csIGFzIGZhciBhcyBGb2N1c1N5bWJvbHMsIEkgaW1tZWRpYXRlbHkgc2VlIHRoZSBrZXkgZnVuY3Rpb25zIHRvIHdhdGNoIGhlcmU6IGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCwgYW5kIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAuIFRoZXNlIGFyZSB0aGUgaGVhcnQgb2YgdGhlIGNoYW5nZXMsIGl0IHNlZW1zLCBzbyB0aGV5IHdpbGwgbmVlZCBzcGVjaWFsIGF0dGVudGlvbi4gSWYgd2UgaW5jbHVkZSB0aGUgZHJpdmVyIGNoYW5nZXMgSSBuZWVkIHRvIGtlZXAgYW4gZXllIG9uIGBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpYC5cblxuV2FpdCBhIG1pbnV0ZSwgaXNuJ3QgdGhhdCBgc3RtbWFjYCBmdW5jdGlvbiBzdGF0aWMgaW4gYHN0bW1hY19tYWluLmNgPyBOZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0OyBzdGF0aWMgZnVuY3Rpb25zIGhhdmUgZGlmZmVyZW50IGltcGxpY2F0aW9ucyBmb3Igb3ZlcmFsbCBjaGFuZ2UgaW1wYWN0LiBMZXQncyBzZWUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkwMiwiT3V0cHV0VG9rZW5zIjo1NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MTowOC42NTk2NjkzNjNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NTIzNzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTM4MDQ9c3RhdGljIGludCBzdG1tYWNfbXNpX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zODIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MzgyNDpzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM4MjUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MDM5PXN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQwNDUtXFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWZsYWdzIFxcdTAwMjYgU1RNTUFDX0ZMQUdfTVVMVElfTVNJX0VOKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDA0NjpcXHRcXHRyZXQgPSBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MDQ3LVxcdGVsc2VcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTE6MDguNzA2MTk5MTU5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMTU5NTk5NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyB0aGUgc3VtbWFyeSwgZm9ybWF0dGVkIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBDb2RlJ3MgU3RhdGljIE5hdHVyZSoqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSwgYW5kIGl0J3MgZGVmaW5pdGVseSBwb2ludGluZyB0byBhIHN0YXRpYyBjb25zdHJ1Y3QuIFRoZSBpbnN0cnVjdGlvbnMgYXJlIHByZXR0eSBjbGVhcjogXCJQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcIi4gVGhhdCdzIG15IGd1aWRpbmcgcHJpbmNpcGxlIGhlcmUuIEdpdmVuIHRoYXQsIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gdGhlIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzLiBUaGF0IHBvaW50cyBtZSBhd2F5IGZyb20gdGhlIHN0YXRpYyBmdW5jdGlvbnMgaW1tZWRpYXRlbHkuXG5cblRoaW5raW5nIGFib3V0IHdoaWNoIGVudHJ5IHBvaW50cyBhcmUgcmVsZXZhbnQsIGBzdG1tYWNfcmVxdWVzdF9pcnFgIGFuZCBgc3RtbWFjX29wZW5gIHNlZW0gbGlrZSB0aGUgbGlrZWx5IGNhbmRpZGF0ZXMgZm9yIGludmVzdGlnYXRpb24uIFRoZXkncmUgcHJvYmFibHkgdGhlIHN0YXJ0aW5nIHBvaW50cyBmb3IgdGhlIHdvcmsgSSBuZWVkIHRvIGRvLiBOb3csIHRvIHVuZGVyc3RhbmQgaG93IGBzdG1tYWNfcmVxdWVzdF9pcnFgIGZ1bmN0aW9ucywgSSBzaG91bGQgaW52ZXN0aWdhdGUgd2hhdCBjYWxscyAqaXQqLiBUaGUgY2FsbCBncmFwaCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBmbG93IGFuZCBob3cgdGhpcyBzdGF0aWMgZW52aXJvbm1lbnQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNhbGwgZ3JhcGggcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzcxOCwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUxOjEyLjgyMjE2MTgxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjI5ODQ3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcmVxdWVzdF9pcnFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTM4MDQ9c3RhdGljIGludCBzdG1tYWNfbXNpX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zODIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MzgyNDpzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM4MjUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zOTg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6Mzk4NjpzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9zaW5nbGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM5ODcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MDM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDAzOTpzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDA0MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQwNDUtXFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWZsYWdzIFxcdTAwMjYgU1RNTUFDX0ZMQUdfTVVMVElfTVNJX0VOKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDA0NjpcXHRcXHRyZXQgPSBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MDQ3LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQwNDg6XFx0XFx0cmV0ID0gc3RtbWFjX3JlcXVlc3RfaXJxX3NpbmdsZShkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDA0OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDEzOD1zdGF0aWMgaW50IF9fc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDE3NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxNzU6XFx0cmV0ID0gc3RtbWFjX3JlcXVlc3RfaXJxKGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTc2LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcxMzk9aW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MjA4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzIwOTpcXHRyZXQgPSBzdG1tYWNfcmVxdWVzdF9pcnEoZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcyMTAtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTE6MTIuODY4NDY3NDc1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MTA0OTMxNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgc3RtbWFjX29wZW5gIEVudHJ5IFBvaW50KipcblxuUmlnaHQsIGBzdG1tYWNfb3BlbmAuIFRoYXQncyB3aGVyZSBpdCBhbGwgYmVnaW5zLCBpc24ndCBpdD8gVGhlIHN0YXJ0aW5nIGd1bi4gV2hlbmV2ZXIgdGhlIG5ldHdvcmsgaW50ZXJmYWNlLCB3aGljaCBpcyBiYWNrZWQgYnkgYW4gU1RNaWNyb2VsZWN0cm9uaWNzIChTVE1NQUMpIEV0aGVybmV0IGRyaXZlciwgaXMgYWN0aXZhdGVkLCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBkcml2ZXIgaXMgdHJpZ2dlcmVkLCBieSB0aGlzIGZ1bmN0aW9uLiBJIGltbWVkaWF0ZWx5IGtub3cgdGhpcyBpcyB0aGUgZnVuY3Rpb24gdGhhdCBpbml0aWFsaXplcyB0aGUgaGFyZHdhcmUsIGNvbmZpZ3VyZXMgdGhlIE1BQywgc2V0cyB1cCB0aGUgRE1BIGNoYW5uZWxzLCBhbGxvY2F0ZXMgYnVmZmVycywgYW5kIGRvZXMgYWxsIHRoZSBncm91bmR3b3JrIHRvIGdldCB0aGUgRXRoZXJuZXQgaW50ZXJmYWNlIHJlYWR5IHRvIHRyYW5zbWl0IGFuZCByZWNlaXZlIHBhY2tldHMuIEl0J3MgdGhlIGNyaXRpY2FsIGZpcnN0IHN0ZXAgaW4gdGhlIGVudGlyZSBjb21tdW5pY2F0aW9uIHByb2Nlc3MuIEZyb20gaGVyZSwgYWxsIHRoZSBvdGhlciBjb21wb25lbnRzIHdpbGwgYmUgY29vcmRpbmF0ZWQgYW5kIGxpbmtlZCwgdGhpcyBpcyB0aGUgZmlyc3QgZnVuY3Rpb24gY2FsbGVkLiBJIG5lZWQgdG8ga2VlcCB0aGlzIHZlcnkgZnVuY3Rpb24gaW4gbWluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODk0MiwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUxOjE2LjQ3ODk2MzMyOFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYyNTcxMDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX29wZW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQwNjM9c3RtbWFjX3NldHVwX2RtYV9kZXNjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdW5zaWduZWQgaW50IG10dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDEyOC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxMjk6ICogIF9fc3RtbWFjX29wZW4gLSBvcGVuIGVudHJ5IHBvaW50IG9mIHRoZSBkcml2ZXJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxMzAtICogIEBkZXYgOiBwb2ludGVyIHRvIHRoZSBkZXZpY2Ugc3RydWN0dXJlLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTM3LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDEzODpzdGF0aWMgaW50IF9fc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxMzktXFx0XFx0XFx0IHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTk1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDE5NjpzdGF0aWMgaW50IHN0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTk3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDIyMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyMjQ6XFx0cmV0ID0gX19zdG1tYWNfb3BlbihkZXYsIGRtYV9jb25mKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyMjUtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NjExND1zdGF0aWMgaW50IHN0bW1hY19jaGFuZ2VfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuZXdfbXR1KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02MTQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjE1MDpcXHRcXHRyZXQgPSBfX3N0bW1hY19vcGVuKGRldiwgZG1hX2NvbmYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjE1MS1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMjA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjczMjE6XFx0Lm5kb19vcGVuID0gc3RtbWFjX29wZW4sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzIyLVxcdC5uZG9fc3RhcnRfeG1pdCA9IHN0bW1hY194bWl0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NjA3PWludCBzdG1tYWNfcmVpbml0X3F1ZXVlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCByeF9jbnQsIHU4IHR4X2NudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYyNi1cXHRpZiAobmV0aWZfcnVubmluZyhkZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzYyNzpcXHRcXHRyZXQgPSBzdG1tYWNfb3BlbihkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYyOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzYzMj1pbnQgc3RtbWFjX3JlaW5pdF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHJ4X3NpemUsIHUzMiB0eF9zaXplKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjQzLVxcdGlmIChuZXRpZl9ydW5uaW5nKGRldikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NjQ0OlxcdFxcdHJldCA9IHN0bW1hY19vcGVuKGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjQ1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MToxNi41MjUyMjYwNjNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM5MDM0NDc0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNUTU1BQyBEcml2ZXIncyBFbnRyeSBQb2ludCBmb3IgWERQIENvbXBhdGliaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgU1RNTUFDIGRyaXZlciBjb2RlIGZvciBYRFAgc3VwcG9ydC4gVGhlIHN0YXJ0aW5nIHBvaW50IHNlZW1zIHRvIGJlIGBzdG1tYWNfb3BlbmAsIGJ1dCB3YWl0IGEgc2Vjb25kLi4uIHRoYXQncyBkZWNsYXJlZCBhcyBzdGF0aWMuIEhtbSwgdGhhdCdzIGEgYml0IG9mIGEgcm9hZGJsb2NrLiBJIG5lZWQgYSBub24tc3RhdGljIGVudHJ5IHBvaW50LiBMZXQgbWUgc2NhbiB0aHJvdWdoLi4uIGFoLCB5ZXMsIGBzdG1tYWNfeGRwX29wZW5gISBUaGF0IG9uZSBpc24ndCBzdGF0aWMuIEJ1dCwgZXZlbiBpZiBJIGNhbid0IGRpcmVjdGx5IHRhcmdldCBgc3RtbWFjX29wZW5gLCB0aGUga2V5IG1vZGlmaWNhdGlvbnMgYXJlIHByb2JhYmx5IGdvaW5nIHRvIGJlIGFyb3VuZCB0aGUgaW50ZXJydXB0IGhhbmRsaW5nLlxuXG5SaWdodCwgc28gdGhhdCBwcm9iYWJseSBtZWFucyBJIHNob3VsZCBiZSBmb2N1c2luZyBvbiB0aGUgaW50ZXJydXB0IGFmZmluaXR5IHN0dWZmLiBJIGNhbiBwcm9iYWJseSBqdXN0IGxldmVyYWdlIGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCBhbmQgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYC4gVGhleSBsb29rIGxpa2UgdGhlIGNvcmUgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgSSBuZWVkIHRvIHRhcCBpbnRvLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgZGVmaW5pdGlvbiBvZiBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgYW5kIHNlZSBleGFjdGx5IHdoYXQgaXQncyBkb2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAzMjIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTE6MjAuOTE1NTc0MjI2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzE1NDMxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2lycV9hcHBseV9hZmZpbml0eV9oaW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9pcnEvbWFuYWdlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2lycS9tYW5hZ2UuYz01MDI9RVhQT1JUX1NZTUJPTF9HUEwoaXJxX2ZvcmNlX2FmZmluaXR5KTtcXG5rZXJuZWwvaXJxL21hbmFnZS5jLTUwMy1cXG5rZXJuZWwvaXJxL21hbmFnZS5jOjUwNDppbnQgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCh1bnNpZ25lZCBpbnQgaXJxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSwgYm9vbCBzZXRhZmZpbml0eSlcXG5rZXJuZWwvaXJxL21hbmFnZS5jLTUwNS17XFxuLS1cXG5rZXJuZWwvaXJxL21hbmFnZS5jLTUyNi19XFxua2VybmVsL2lycS9tYW5hZ2UuYzo1Mjc6RVhQT1JUX1NZTUJPTF9HUEwoX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCk7XFxua2VybmVsL2lycS9tYW5hZ2UuYy01MjgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUxOjIwLjk2MjczMzg4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkyNDEzMDMxMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgYW5kIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAqKlxuXG5SaWdodCwgKndhaXQgYSBtaW51dGUqLiBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgaXMgKm5vbi1zdGF0aWMqIGFuZCAqZXhwb3J0ZWQqPyBUaGF0J3MuLi4gaW50ZXJlc3RpbmcsIGFuZCBzb21ld2hhdCB1bnVzdWFsLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGl0IGJlaW5nIGV4cG9zZWQgbGlrZSB0aGF0LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb25zIGFyZTogV2hhdCdzIHRoZSByYXRpb25hbGUgYmVoaW5kIGV4cG9ydGluZyBpdD8gV2hhdCBwb3RlbnRpYWwgdXNlIGNhc2VzIGFyZSB0aGVyZSBvdXRzaWRlIG9mIGl0cyBwcmltYXJ5IG1vZHVsZT8gQXJlIHRoZXJlIGFueSBoaWRkZW4gc2lkZSBlZmZlY3RzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgYW55IGxpa2VseSBpc3N1ZXMgcmVsYXRpbmcgdG8gaXRzIHdpZGVyIGFjY2Vzc2liaWxpdHk/IEFueSByYWNlIGNvbmRpdGlvbnMsIHBvdGVudGlhbCBmb3IgbWlzdXNlLCBvciB1bmV4cGVjdGVkIGRlcGVuZGVuY2llcz9cblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEknbSBnb2luZyB0byBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBzZW1hbnRpY3Mgb2YgdGhhdCBmdW5jdGlvbiBhbmQgaXRzIGludGVuZGVkIHVzZSBjYXNlLiBBbHNvLCBJIG5lZWQgdG8gY2hlY2sgaG93IHRoZSBleHBvcnRlZCBub24tc3RhdGljIG5hdHVyZSBhZmZlY3RzIHRoZSBjb21waWxhdGlvbiBhbmQgbGlua2luZyBwcm9jZXNzLCBhcyBjb21wYXJlZCB0byBzaW1pbGFyIHN0YXRpYyBmdW5jdGlvbnMuIE15IHByaW1hcnkgY29uY2VybiB3b3VsZCBiZSB0byBlbnN1cmUgdGhhdCB0aGUgYnJvYWRlciBleHBvc3VyZSBkb2Vzbid0IGludHJvZHVjZSB2dWxuZXJhYmlsaXRpZXMgb3IgdW5leHBlY3RlZCBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcywgb3IgdGhhdCBpdCBpcyBub3QgbWFza2luZyBhIHBvdGVudGlhbGx5IG1vcmUgcm9idXN0IGRlc2lnbi5cblxuU2luY2UgdGhpcyBpcyByZWxhdGVkIHRvIGludGVycnVwdCBoYW5kbGluZywgSSBzdXNwZWN0IHRoZSBleHBvcnRlZCBuYXR1cmUgbWlnaHQgYmUgcmVsYXRlZCB0byBtb3JlIGNvbXBsZXggc2NoZWR1bGluZyBvciBkeW5hbWljIGFmZmluaXR5IGFkanVzdG1lbnRzLCBtYXliZSBldmVuIHNvbWV0aGluZyB1c2VyLXNwYWNlIGludGVyYWN0cyB3aXRoICh0aG91Z2ggdGhhdCBzZWVtcyBsZXNzIGxpa2VseSBmb3IgYW4gaW50ZXJuYWwgZnVuY3Rpb24gbmFtZSBsaWtlIHRoaXMpLlxuXG5UaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY29uZmlybSB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uLiBUaW1lIHRvIGNoZWNrIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAgaW4gcmVsYXRpb24gdG8gdGhpcywgc2luY2UgdGhhdCBpcyBvYnZpb3VzbHkgaW52b2x2ZWQuIEkgbmVlZCB0byBxdWlja2x5IHJlY2FsbCB0aGUgZXhhY3QgbG9naWMgYmVoaW5kIHRoYXQgZnVuY3Rpb24uIFdoYXQgc29ydCBvZiBjb25zdHJhaW50cyBhcmUgaW4gcGxhY2U/IERvZXMgdGhlIHNwcmVhZCBiZWhhdmlvciBpbmZsdWVuY2UgaG93IGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCB3b3Jrcz8gSXMgdGhlcmUgc29tZSB0aWdodCBjb3VwbGluZyBJJ20gbm90IGltbWVkaWF0ZWx5IHNlZWluZz8gQXJlIHRoZSByZXN1bHRzIGRlcGVuZGVudCBvbiBzcGVjaWZpYyBhcmNoaXRlY3R1cmFsIGZlYXR1cmVzIG9yIGtlcm5lbCBjb25maWd1cmF0aW9ucz9cblxuSSdtIHRoaW5raW5nIGFib3V0IHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIGNoYW5nZXMgdG8gdGhlIGludGVycnVwdCBhZmZpbml0eSBzeXN0ZW0gb24gcGVyZm9ybWFuY2UsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggc3BlY2lmaWMgaGFyZHdhcmUgY29uZmlndXJhdGlvbnMgYW5kIHdvcmtsb2Fkcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA4NTcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MTozMC4yMDQwMzk2NVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY2MTQ1OTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY3B1bWFza19sb2NhbF9zcHJlYWRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL2NwdW1hc2suY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvY3B1bWFzay5jPTc0PXZvaWQgX19pbml0IGZyZWVfYm9vdG1lbV9jcHVtYXNrX3ZhcihjcHVtYXNrX3Zhcl90IG1hc2spXFxuLS1cXG5saWIvY3B1bWFzay5jLTgwLS8qKlxcbmxpYi9jcHVtYXNrLmM6ODE6ICogY3B1bWFza19sb2NhbF9zcHJlYWQgLSBzZWxlY3QgdGhlIGkndGggY3B1IGJhc2VkIG9uIE5VTUEgZGlzdGFuY2VzXFxubGliL2NwdW1hc2suYy04Mi0gKiBAaTogaW5kZXggbnVtYmVyXFxuLS1cXG5saWIvY3B1bWFzay5jLTkyLSAqIGZvciAoaSA9IDA7IGkgXFx1MDAzYyBudW1fb25saW5lX2NwdXMoKTsgaSsrKSB7XFxubGliL2NwdW1hc2suYzo5MzogKlxcdGNwdSA9IGNwdW1hc2tfbG9jYWxfc3ByZWFkKGksIG5vZGUpO1xcbmxpYi9jcHVtYXNrLmMtOTQtICpcXHRkb19zb21ldGhpbmcoY3B1KTtcXG4tLVxcbmxpYi9jcHVtYXNrLmMtMTA2LSAqIGVudW1lcmF0aW9uIGlzIE8oc2NoZWRfZG9tYWluc19udW1hX2xldmVscyAqIG5yX2NwdV9pZHMpLCB3aGlsZVxcbmxpYi9jcHVtYXNrLmM6MTA3OiAqIGNwdW1hc2tfbG9jYWxfc3ByZWFkKCkgd2hlbiBjYWxsZWQgZm9yIGVhY2ggY3B1IGlzXFxubGliL2NwdW1hc2suYy0xMDgtICogTyhzY2hlZF9kb21haW5zX251bWFfbGV2ZWxzICogbnJfY3B1X2lkcyAqIGxvZyhucl9jcHVfaWRzKSkuXFxubGliL2NwdW1hc2suYy0xMDktICovXFxubGliL2NwdW1hc2suYzoxMTA6dW5zaWduZWQgaW50IGNwdW1hc2tfbG9jYWxfc3ByZWFkKHVuc2lnbmVkIGludCBpLCBpbnQgbm9kZSlcXG5saWIvY3B1bWFzay5jLTExMS17XFxuLS1cXG5saWIvY3B1bWFzay5jLTEyMS19XFxubGliL2NwdW1hc2suYzoxMjI6RVhQT1JUX1NZTUJPTChjcHVtYXNrX2xvY2FsX3NwcmVhZCk7XFxubGliL2NwdW1hc2suYy0xMjMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUxOjMwLjI1MDY1ODE3NVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzA0NjYxMTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgbXlzZWxmOlxuXG4qKkludmVzdGlnYXRpbmcgRnVuY3Rpb24gVmlzaWJpbGl0eSBpbiB0aGUgU1RNTUFDIERyaXZlcioqXG5cbk9rYXksIHNvIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAgaXMgZXhwb3NlZCB0byBvdGhlciBtb2R1bGVzLCB3aGljaCBpc24ndCB1bnVzdWFsLiBMZXQncyBzZWUgaWYgdGhhdCBoYXMgYW55IGltcGxpY2F0aW9ucyBoZXJlLiBOb3cgSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHRoZSB2aXNpYmlsaXR5IG9mIHNvbWUgZnVuY3Rpb25zIGluIHRoZSBTVE1NQUMgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGljaCBmdW5jdGlvbnMgYXJlIHN0YXRpYyBhbmQgdGhlcmVmb3JlIG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhlIGNvbXBpbGF0aW9uIHVuaXQsIGFuZCB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciBvdGhlciBtb2R1bGVzIHRvIGNhbGwuIFJpZ2h0LCBsZXQgbWUgY2hlY2sgYHN0bW1hY19vcGVuYC4gQWgsIHllcCwgaXQncyBzdGF0aWMsIGdvb2QuIFNvLCB0aGF0J3MgZW5jYXBzdWxhdGVkIHdpdGhpbiB0aGUgZHJpdmVyJ3MgY29kZSBpdHNlbGYuIE9rYXksIGFuZCBob3cgYWJvdXQgYHN0bW1hY194ZHBfb3BlbmA/ICpUaGF0KiBvbmUncyBub3Qgc3RhdGljLiBJbnRlcmVzdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE3NTgsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MTozNi41NTUzMjY0MTlaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MjczMDM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY194ZHBfb3BlblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzEwNj12b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzEzOTppbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTQwLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTE6MzYuNjEyNjA2NjczWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NTExOTY4MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkNvbnNpZGVyaW5nIHRoZSBJbmNsdXNpb24gb2YgYHN0bW1hY194ZHBfb3BlbmAqKlxuXG5SaWdodCwgbGV0J3Mgc2VlLCB3ZSdyZSBkZWZpbml0ZWx5IGxvb2tpbmcgYXQgaW5jb3Jwb3JhdGluZyBgc3RtbWFjX3hkcF9vcGVuYCBpbnRvIHRoaXMuIE1ha2VzIHNlbnNlLiBJdCdzIG9uIHRoZSBsaXN0IGZvciBhIHJlYXNvbi4gTmVlZCB0byBtYWtlIHN1cmUgd2UncmUgY292ZXJpbmcgYWxsIGJhc2VzLiBJdCdzIGEga2V5IHBhcnQgb2YgdGhlIFhEUCBpbnRlZ3JhdGlvbiwgc28gd2UgaGF2ZSB0byBmYWN0b3IgaXQgaW4uXG5cbk5vdywgYSBxdWljayBjaGVjayBvbiBzb21ldGhpbmcgZWxzZS4gV2hhdCdzIHRoZSBpbXBsZW1lbnRhdGlvbiBzdGF0dXMgb2YgYGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnRgPyBJcyBpdCBhIG1hY3JvIG9yIGEgZnVuY3Rpb24/IEl0J3MgZWFzeSBlbm91Z2ggdG8gdmVyaWZ5IGJ1dCBpbXBvcnRhbnQgdG8gYmUgY2VydGFpbiwgYmVjYXVzZSB0aGF0IGhhcyBpbXBsaWNhdGlvbnMgZm9yIHRoZSBvdmVyYWxsIGFwcHJvYWNoLiBJIG5lZWQgdG8ga25vdyB3aGV0aGVyIGl0IGV4cGFuZHMgaW5saW5lIG9yIGlmIHRoZXJlJ3MgYSBmdW5jdGlvbiBjYWxsIGhhcHBlbmluZyBhdCBydW50aW1lLiBUaGF0IGltcGFjdHMgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzLCBwb3RlbnRpYWwgaW5saW5pbmcsIGFuZCBkZWJ1Z2dpbmcgcG9zc2liaWxpdGllcy4gSSdsbCBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IHF1aWNrIGJlZm9yZSBJIGZvcmdldC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIxOTUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MTo0MC40NjM4MDU4MjNaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3OTkzNTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oPTMzNT1pcnFfdXBkYXRlX2FmZmluaXR5X2hpbnQodW5zaWduZWQgaW50IGlycSwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKm0pXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTM0MC0vKipcXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oOjM0MTogKiBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50IC0gVXBkYXRlIHRoZSBhZmZpbml0eSBoaW50IGFuZCBhcHBseSB0aGUgcHJvdmlkZWRcXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTM0Mi0gKlxcdFxcdFxcdCAgICAgY3B1bWFzayB0byB0aGUgaW50ZXJydXB0XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oPTM0OT1zdGF0aWMgaW5saW5lIGludFxcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0Lmg6MzUwOmlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQodW5zaWduZWQgaW50IGlycSwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKm0pXFxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaC0zNTEte1xcbi0tXFxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaC0zNTUtLypcXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oOjM1NjogKiBEZXByZWNhdGVkLiBVc2UgaXJxX3VwZGF0ZV9hZmZpbml0eV9oaW50KCkgb3IgaXJxX3NldF9hZmZpbml0eV9hbmRfaGludCgpXFxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaC0zNTctICogaW5zdGVhZC5cXG4tLVxcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0Lmg9MzU5PXN0YXRpYyBpbmxpbmUgaW50IGlycV9zZXRfYWZmaW5pdHlfaGludCh1bnNpZ25lZCBpbnQgaXJxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSlcXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTM2MC17XFxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaDozNjE6XFx0cmV0dXJuIGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoaXJxLCBtKTtcXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTM2Mi19XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oPTM5NT1zdGF0aWMgaW5saW5lIGludCBpcnFfdXBkYXRlX2FmZmluaXR5X2hpbnQodW5zaWduZWQgaW50IGlycSxcXG4tLVxcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0LmgtNDAwLVxcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0Lmg6NDAxOnN0YXRpYyBpbmxpbmUgaW50IGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQodW5zaWduZWQgaW50IGlycSxcXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTQwMi1cXHRcXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGNwdW1hc2sgKm0pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUxOjQwLjUxMTgwODM0OFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTUwNjkwNzA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW50ZXJydXB0IEFmZmluaXR5IExvZ2ljKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBpbmxpbmUgZnVuY3Rpb24sIGFuZCBpdCdzIGNhbGxpbmcgYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgLiBUaGF0J3MgdGhlIGNvcmUgb2YgdGhlIG1hdHRlciBoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGFmZmluaXR5IGlzIGJlaW5nIGFwcGxpZWQsIHNvIGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCBpcyBkZWZpbml0ZWx5IGEga2V5IGZvY3VzIHN5bWJvbC4gSSBhbHNvIHNlZSBjYWxscyB0byBgY3B1bWFza19sb2NhbF9zcHJlYWRgLCBzbyBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGl0cyBkb2luZy4gQW5kIEkgc2VlIHRoYXQgYHN0bW1hY194ZHBfb3BlbmAgaXMgcHJlc2VudC4gVGhhdCdzIHJlbGV2YW50IHNpbmNlIHRoYXQgbGlrZWx5IGNvbnRhaW5zIHRoZSBsb2dpYyBzdXJyb3VuZGluZyBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiB0b28uXG5cbk5vdywgdG8gbWFrZSBzdXJlIEkgY2FuIGFjdHVhbGx5ICp0ZXN0KiB0aGlzIGluIGEgUUVNVSBlbnZpcm9ubWVudCwgSSdsbCBuZWVkIHRoZSByaWdodCBjb25maWd1cmF0aW9ucyBlbmFibGVkLiBJJ2xsIG5lZWQgYFNUTU1BQ19FVEhgLCBvYnZpb3VzbHksIHNpbmNlIGl0J3MgYW4gZXRoZXJuZXQgZHJpdmVyLiBCdXQsIEkgYmVsaWV2ZSBJJ2xsIG5lZWQgYFNUTU1BQ19QQ0lgIHRvIGJlIGVuYWJsZWQgYXMgd2VsbCwgc28gSSBjYW4gcmVhY2ggdGhpcyBmdW5jdGlvbmFsaXR5IHZpYSBQQ0kuIExldCBtZSBkb3VibGUtY2hlY2sgdGhhdCBgU1RNTUFDX1BDSWAgaXMgdGhlIGNvcnJlY3QgcGF0aC4gSXQncyBlYXN5IHRvIGdldCB0aGVzZSBkZXRhaWxzIHdyb25nIGFuZCBJIGRvbid0IHdhbnQgdG8gd2FzdGUgdGltZSBkZWJ1Z2dpbmcgc29tZXRoaW5nIEkgY2FuJ3QgZXZlbiByZXByb2R1Y2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyOTQ1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUxOjQ0LjY2MjUwMjA3NloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk2NDIzMTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiU1RNTUFDX1BDSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUxOjQ0LjcxMjE1MDgxMVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDI2OTY4MzIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqQ29uZmlybWluZyB0aGUgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsICpTVE1NQUNfUENJKuKApiB0aGF0IGZlZWxzIHJpZ2h0LCBkb2Vzbid0IGl0PyBCYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgYXJjaGl0ZWN0dXJlIGFuZCB0aGUgaGFyZHdhcmUgSSdtIHRhcmdldGluZywgeWVhaCwgdGhhdCdzIGRlZmluaXRlbHkgdGhlIGtleSBjb25maWd1cmF0aW9uIEkgbmVlZCB0byBiZSBmb2N1c2luZyBvbi4gQnV0LCBiZWZvcmUgSSBnZXQgdG9vIGZhciBkb3duIHRoYXQgcGF0aCwgbGV0IG1lIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCAqU1RNTUFDX0VUSCogaXNuJ3QgbHVya2luZyBhcyB0aGUgcHJpbWFyeSBkcml2ZXIgY29uZmlndXJhdGlvbiBpbiB0aGlzIGVudmlyb25tZW50LiBJdCdzIGFsd2F5cyB3aXNlIHRvIGVsaW1pbmF0ZSB0aGUgb2J2aW91cyBiZWZvcmUgZ2V0dGluZyBkZWVwIGludG8gdGhlIHdlZWRzIHdpdGggUENJIHNwZWNpZmljIHNldHRpbmdzLiBHb3R0YSBtYWtlIHN1cmUgSSdtIHN0YXJ0aW5nIGZyb20gdGhlIGNvcnJlY3QsIG1vc3QgYmFzaWMgZm91bmRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM0ODcsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MTo0OC43MzkxMjIyMjJaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NzY3NDU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlNUTU1BQ19FVEhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTg6aWYgU1RNTUFDX0VUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTQwNz1jb25maWcgU1RNTUFDX1BDSVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MTktXFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDIwOmVuZGlmICMgU1RNTUFDX0VUSFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MTo0OC43ODc4OTQ3NzdaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQyODI4MTkwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqQW5hbHl6aW5nIFNUTU1BQyBDb25maWd1cmF0aW9uIE9wdGlvbnMqKlxuXG5SaWdodCwgc28sIGFzIEkgdW5kZXJzdGFuZCBpdCwgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAgYXJlIHRoZSB0d28ga2V5IGNvbmZpZ3VyYXRpb25zIHdlJ3JlIGRlYWxpbmcgd2l0aCBoZXJlLCBjb3JyZWN0PyBKdXN0IG1ha2luZyBzdXJlIEknbSBvbiB0aGUgcmlnaHQgdHJhY2sgYmVmb3JlIGRpdmluZyBkZWVwZXIuXG5cbk5vdywgSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyBpbXBvcnRhbnQ6IGRvZXMgYFNUTU1BQ19QQ0lgIGhhdmUgYW55IGRlcGVuZGVuY2llcz8gQXJlIHRoZXJlIG90aGVyIGNvbmZpZ3MgdGhhdCAqbXVzdCogYmUgZW5hYmxlZCBvciBhcmUgcmVxdWlyZWQgdG8gYmUgY29uZmlndXJlZCBpbiBhIGNlcnRhaW4gd2F5LCBiZWZvcmUgYFNUTU1BQ19QQ0lgIGNhbiBldmVuIGJlIGNvbnNpZGVyZWQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXBzIGhlcmUgdG8gYXZvaWQgYW55IGludGVncmF0aW9uIGhlYWRhY2hlcyBsYXRlciBvbi4gTGV0J3Mgc2VlIHdoYXQncyBjb25uZWN0ZWQgdG8gYFNUTU1BQ19QQ0lgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzk4MywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUxOjUyLjIxNjE3OTg2WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjcyODUwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU1RNTUFDX1BDSVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUxOjUyLjI2MjkxNjc4NloiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjExMTUyMTQyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gcmVhZGluZyBhbmQgdGhpbmtpbmcgYWJvdXQgdGhvc2UgbGluZXMgb2YgY29kZTpcblxuKipBbmFseXppbmcgYGNvbmZpZyBTVE1NQUNfUENJYCoqXG5cbk9rYXksIHNvIEkgc2VlIGBjb25maWcgU1RNTUFDX1BDSWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBhbHJpZ2h0LCB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIFNUTU1BQyBFdGhlcm5ldCBkcml2ZXIsIHNwZWNpZmljYWxseSB3aGVuIGl0J3MgYmVpbmcgdXNlZCBvbiBhIFBDSSBidXMuIFRoaXMgaXMgaW50ZXJlc3RpbmcuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LCB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgdGhlIG90aGVyIHJlbGF0ZWQgb3B0aW9ucyB0byB0cnVseSBncmFzcCB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGlzLlxuXG5JIG5lZWQgdG8gcmVhZCB0aGUgbGluZXMgYXJvdW5kIHRoaXMgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgY29uZmlnIG9wdGlvbiBjb250cm9scy4gSXMgaXQgZW5hYmxpbmcgdGhlIFBDSSBpbnRlcmZhY2UgZm9yIFNUTU1BQywgb3IgaXMgaXQgZW5hYmxpbmcgdGhlIHdob2xlIFNUTU1BQyBkcml2ZXIgZm9yIFBDSS1iYXNlZCBoYXJkd2FyZT8gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSBpdCdzIGxpa2VseSB0aGUgZm9ybWVyLCBidXQgSSBjYW4ndCBiZSBzdXJlIHdpdGhvdXQgbW9yZSBkYXRhLiBJdCdzIHByb2JhYmx5IHJlbGF0ZWQgdG8gc3VwcG9ydGluZyBhIHNwZWNpZmljIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24sIG9yIG1heWJlIGV2ZW4gYSBzcGVjaWZpYyBib2FyZC4gSSdsbCBuZWVkIHRvIHNlZSBob3cgaXQncyBkZWZpbmVkIGFuZCB1c2VkIGVsc2V3aGVyZSBpbiB0aGUgS2NvbmZpZyBmaWxlcy4gQXJlIHRoZXJlIGFueSBkZWZhdWx0IHNldHRpbmdzPyBBbnkgZGVwZW5kZW5jaWVzIG9uIG90aGVyIG1vZHVsZXMgb3IgZHJpdmVycz8gQW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGZsYWdzIHRoYXQgYXJlIHRyaWdnZXJlZCBieSBpdD9cblxuSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBlbHNlIG1pZ2h0IGJlIGNvbnRpbmdlbnQgb24gYFNUTU1BQ19QQ0lgLiBUaGlzIGlzIGtleS4gQXJlIHRoZXJlIG90aGVyIHJlbGF0ZWQgb3B0aW9ucywgbGlrZSBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiwgZGV2aWNlIHRyZWUgc2V0dGluZ3MsIG9yIE1BQyBhZGRyZXNzIGFzc2lnbm1lbnQgdGhhdCBhcmUgYWZmZWN0ZWQ/IEFueSBwb3NzaWJsZSBjb25mbGljdHMgd2l0aCBvdGhlciBkcml2ZXJzIG9yIGhhcmR3YXJlIGNvbXBvbmVudHM/IFRoZSBtb3JlIGluZm9ybWF0aW9uIEkgY2FuIGdhdGhlciBhcm91bmQgdGhpcyBvbmUgbGluZSwgdGhlIGJldHRlciBJIGNhbiBncmFzcCB0aGUgd2hvbGUgU1RNTUFDIGltcGxlbWVudGF0aW9uLiBJIHdhbnQgdG8gYnVpbGQgYSBjb21wbGV0ZSBwaWN0dXJlIGhlcmUgYW5kIHVuZGVyc3RhbmQgdGhlIHJhbWlmaWNhdGlvbnMgb2YgdHVybmluZyBpdCBvbiBvciBvZmYuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MzU3LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTI6MDQuMzc0NDQxMzg2WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQwMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQwMDpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiA0MDE6XFx0XFx0c2VsZWN0IE1PVE9SQ09NTV9QSFlcXG4gNDAyOlxcdFxcdHNlbGVjdCBTVE1NQUNfTElCUENJXFxuIDQwMzpcXHRcXHRoZWxwXFxuIDQwNDpcXHRcXHQgIFRoaXMgZW5hYmxlcyBnbHVlIGRyaXZlciBmb3IgTW90b3Jjb21tIERXTUFDLWJhc2VkIFBDSSBFdGhlcm5ldFxcbiA0MDU6XFx0XFx0ICBjb250cm9sbGVycy4gQ3VycmVudGx5IG9ubHkgWVQ2ODAxIGlzIHN1cHBvcnRlZC5cXG4gNDA2OlxcdFxcbiA0MDc6XFx0Y29uZmlnIFNUTU1BQ19QQ0lcXG4gNDA4OlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XFxcIlxcbiA0MDk6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gNDEwOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiA0MTE6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gNDEyOlxcdFxcdGhlbHBcXG4gNDEzOlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuIDQxNDpcXHRcXHQgIFRoaXMgZHJpdmVyIHdhcyB0ZXN0ZWQgb24gWExJTlggWEMyVjMwMDAgRkYxMTUyQU1UMDIyMVxcbiA0MTU6XFx0XFx0ICBEMTIxNTk5NEEgVklSVEVYIEZQR0EgYm9hcmQgYW5kIFNOUFMgUW9TIElQSyBQcm90b3R5cGluZyBLaXQuXFxuIDQxNjpcXHRcXG4gNDE3OlxcdFxcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cXG4gNDE4OlxcdFxcbiA0MTk6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MjowNC4zNzQ1NTY1NDZaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMwMTgxNjY3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZXBlbmRlbmNpZXMgYW5kIEFzc3VtcHRpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYFNUTU1BQ19QQ0lgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgdGhpcyBpcyBhIHByZXR0eSBzdGFuZGFyZCBzZXR1cC4gSXQgbGV2ZXJhZ2VzIGJvdGggYFBDSWAsIHdoaWNoLCBsZXQncyBiZSBob25lc3QsIGlzIGEgZ2l2ZW4gaW4gbW9zdCBjYXNlcyB3ZSdyZSBkZWFsaW5nIHdpdGgsIGFuZCBgQ09NTU9OX0NMS2AsIHdoaWNoIGlzIGEgY29tbW9uIGNsb2NrIGZyYW1ld29yayBmb3VuZCBhY3Jvc3MgYSBzaWduaWZpY2FudCBudW1iZXIgb2YgYXJjaGl0ZWN0dXJlcy4gTm90aGluZyB1bnVzdWFsIHRoZXJlLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55ICpvdGhlciogZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gYFNUTU1BQ19FVEhgLCBhbmQgdGhlbiBJIGNhbiBwcm9jZWVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTA3NywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTI6MDkuNjc2Mzc1MzQ0WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0MjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBTVE1NQUNfRVRIXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU0gXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiBFVEhUT09MX05FVExJTktcXG4gICA3OlxcdFxcdHNlbGVjdCBNSUlcXG4gICA4OlxcdFxcdHNlbGVjdCBQQ1NfWFBDU1xcbiAgIDk6XFx0XFx0c2VsZWN0IFBBR0VfUE9PTFxcbiAgMTA6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gIDExOlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgMTI6XFx0XFx0c2VsZWN0IFJFU0VUX0NPTlRST0xMRVJcXG4gIDEzOlxcdFxcdHNlbGVjdCBORVRfREVWTElOS1xcbiAgMTQ6XFx0XFx0aGVscFxcbiAgMTU6XFx0XFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgZm9yIHRoZSBFdGhlcm5ldCBJUHMgYnVpbHQgYXJvdW5kIGFcXG4gIDE2OlxcdFxcdCAgU3lub3BzeXMgSVAgQ29yZS5cXG4gIDE3OlxcdFxcbiAgMTg6XFx0aWYgU1RNTUFDX0VUSFxcbiAgMTk6XFx0XFxuICAyMDpcXHRjb25maWcgU1RNTUFDX1NFTEZURVNUU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MjowOS42NzY0NTA3NzRaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY5OTQ2NjMwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNUTU1BQyBEcml2ZXIncyBFbnRyeSBQb2ludHMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgZm9jdXMgaGFzIHRvIGJlIG9uIGhvdyB0aGUgU1RNTUFDIGRyaXZlciBnZXRzIGluaXRpYWxpemVkIGFuZCBob3cgd2UgY2FuIGJlc3QgaW50ZXJjZXB0IGl0cyBvcGVyYXRpb24gZm9yIFhEUCBpbnRlZ3JhdGlvbi4gVGhlIGtleSBoZXJlIGhpbmdlcyBvbiBhIGZldyBzdGFuZGFyZCBjb25maWd1cmF0aW9uIHN5bWJvbHM6IGBIQVNfSU9NRU0gXHUwMDI2XHUwMDI2IEhBU19ETUFgLCBgUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxgLCBhbmQgYEVUSFRPT0xfTkVUTElOS2AuIFdlIGtub3cgdGhlc2UgYXJlIGZ1bmRhbWVudGFsLCBidXQgdGhleSBkb24ndCBnaXZlIHVzIHRoZSBzcGVjaWZpYyBlbnRyeSBwb2ludC5cblxuV2UndmUgZ290IHR3byBtYWluIGNvbmZpZyBvcHRpb25zIHRoYXQgYXJlIHJlbGV2YW50OiBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYC4gVGhvc2UgYXJlIGxpa2VseSBnb2luZyB0byBnb3Zlcm4gd2hpY2ggaW5pdGlhbGl6YXRpb24gcGF0aHMgd2Ugc2hvdWxkIGNvbnNpZGVyLCBidXQgd2UgbmVlZCB0byBkaWcgZGVlcGVyIGZvciBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuXG5cbkkgc3RhcnRlZCBieSBsaXN0aW5nIHBvc3NpYmxlIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdCwgY29uc2lkZXJpbmcgdGhlIHN0YW5kYXJkIGZvY3VzIHN5bWJvbHM6IGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCwgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYCwgYW5kIGBzdG1tYWNfeGRwX29wZW5gLiBCdXQgaG9sZCBvbiwgYHN0bW1hY194ZHBfb3BlbmAgaXMgY2xlYXJseSBvbmx5IGNhbGxlZCB3aGVuIFhEUCBpcyBhY3RpdmUuIFRoYXTigJlzIHByb2JhYmx5IG5vdCB0aGUgY29yZSBpbml0aWFsaXphdGlvbiBwYXRoIEkgbmVlZC4gSSBuZWVkIHNvbWV0aGluZyBtb3JlIGdlbmVyYWwuXG5cbkxldCdzIGNoZWNrIGBzdG1tYWNfb3BlbmAuIEFoLCB0aGF04oCZcyB0aGUgYG5kb19vcGVuYCBjYWxsYmFjayDigJMgdXNlZCBpbiB0aGUgc3RhbmRhcmQgbmV0d29yayBkZXZpY2UgbGlmZWN5Y2xlLiBCdXQsIGl0J3MgZGVjbGFyZWQgYHN0YXRpY2AuIFNvLCBpdCdzIG5vdCBhIGdyZWF0IGNob2ljZSBmb3Igb3VyIGhvb2sgc2luY2Ugd2UgY2FuJ3QgZWFzaWx5IHBhdGNoIGl0LiBTdGF0aWMgZnVuY3Rpb25zIGxpbWl0IGZsZXhpYmlsaXR5LiBJdCdzIGEga2V5IGVudHJ5cG9pbnQsIGJ1dCBub3QgdGhlIHJpZ2h0IHN5bWJvbCB0byBmb2N1cyBvbi5cblxuU28sIGxldCBtZSBiYWNrIHVwIGEgc3RlcC4gV2hhdCBhYm91dCBgc3RtbWFjX3Jlc3VtZWA/IFRoYXQncyBsaWtlbHkgY2FsbGVkIGR1cmluZyBwb3dlci11cCBvciBzeXN0ZW0gcmVzdW1lLCB3aGljaCBtaWdodCBnaXZlIHVzIGEgZGVjZW50IGhvb2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZW4gaXQgaXMgY2FsbGVkIHRvIGRldGVybWluZSBpZiBpdCBpcyB0aGUgYmVzdCBwb2ludCB0byBpbnNlcnQgY29kZS4gV2UgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSBjb2RlIGFnYWluLCBidXQgd2l0aCBhIGZvY3VzIG9uIGBzdG1tYWNfcmVzdW1lYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU1NDQsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MjoxNi4zNzU5MTk3NThaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTc1OTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY19yZXN1bWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTgyNjM9c3RhdGljIHZvaWQgc3RtbWFjX3Jlc2V0X3F1ZXVlc19wYXJhbShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgyNzYtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4Mjc3OiAqIHN0bW1hY19yZXN1bWUgLSByZXN1bWUgY2FsbGJhY2tcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgyNzgtICogQGRldjogZGV2aWNlIHBvaW50ZXJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODI4MS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgyODI6aW50IHN0bW1hY19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODI4My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgzNjgtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODM2OTpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfcmVzdW1lKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgzNzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MzcxLS8qIFRoaXMgaXMgbm90IHRoZSBzYW1lIGFzIEVYUE9SVF9HUExfU0lNUExFX0RFVl9QTV9PUFMoKSB3aGVuIENPTkZJR19QTT1uICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MzcyOkRFRklORV9TSU1QTEVfREVWX1BNX09QUyhzdG1tYWNfc2ltcGxlX3BtX29wcywgc3RtbWFjX3N1c3BlbmQsIHN0bW1hY19yZXN1bWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODM3My1FWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfc2ltcGxlX3BtX29wcyk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUyOjE2LjQyMjEwMTk1M1oiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDk1MjA3NTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgc3RtbWFjX3Jlc3VtZWAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBgc3RtbWFjX3Jlc3VtZWAgaXMgZXhwb3J0ZWQgYW5kIGlzbid0IHN0YXRpYywgd2hpY2ggbWVhbnMgaXQncyBkZXNpZ25lZCB0byBiZSBjYWxsZWQgZnJvbSBvdXRzaWRlIHRoZSBtb2R1bGUuIFRoYXQgcmFpc2VzIGEga2V5IHF1ZXN0aW9uIGluIG15IG1pbmQ6IHdoYXQncyBpdHMgcHVycG9zZSBhbmQgaG93IGRvZXMgaXQgaW50ZXJmYWNlIHdpdGggdGhlIGludGVycnVwdCBzeXN0ZW0/IFRoZSBjbHVlIGlzIGluIHRoZSBjb2RlLiBJIHJlY2FsbCBzZWVpbmcgYHN0bW1hY19yZXF1ZXN0X2lycWAgaW4gdGhlIHZpY2luaXR5LiBNeSBmaXJzdCBsaW5lIG9mIGludmVzdGlnYXRpb24gd2lsbCBiZSB0byB0cmFjZSB0aGUgY2FsbHMsIHN0YXJ0aW5nIHdpdGggYHN0bW1hY19yZXN1bWVgLCBhbmQgZmluZCB3aGVyZSB0aGUgaW50ZXJydXB0IHJlcXVlc3QgbG9naWMgY29tZXMgaW50byBwbGF5LiBEb2VzIGl0IHJlLWVuYWJsZSBpbnRlcnJ1cHRzLCByZXN0b3JlIGludGVycnVwdCBtYXNrcywgb3Igc29tZXRoaW5nIG1vcmUgY29tcGxleD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCB0byBlbnN1cmUgcHJvcGVyIGRldmljZSByZXN1bXB0aW9uIGFmdGVyIGEgcG93ZXIgbWFuYWdlbWVudCBldmVudC4gSXQncyBsaWtlbHkgaW52b2x2ZWQgaW4gcmUtZXN0YWJsaXNoaW5nIHRoZSBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lcyBhZnRlciBhIHN1c3BlbmQsIGJ1dCB0aGUgZXhhY3QgbWVjaGFuaXNtIGlzIGNydWNpYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NzMyLCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTI6MjAuOTE3MzEyNDQ1WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzY4OTY3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcmVxdWVzdF9pcnFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTM4MDQ9c3RhdGljIGludCBzdG1tYWNfbXNpX2luaXQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zODIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MzgyNDpzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM4MjUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zOTg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6Mzk4NjpzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9zaW5nbGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM5ODcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MDM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDAzOTpzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDA0MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQwNDUtXFx0aWYgKHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZWZsYWdzIFxcdTAwMjYgU1RNTUFDX0ZMQUdfTVVMVElfTVNJX0VOKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDA0NjpcXHRcXHRyZXQgPSBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MDQ3LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQwNDg6XFx0XFx0cmV0ID0gc3RtbWFjX3JlcXVlc3RfaXJxX3NpbmdsZShkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDA0OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDEzOD1zdGF0aWMgaW50IF9fc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDE3NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxNzU6XFx0cmV0ID0gc3RtbWFjX3JlcXVlc3RfaXJxKGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTc2LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcxMzk9aW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MjA4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzIwOTpcXHRyZXQgPSBzdG1tYWNfcmVxdWVzdF9pcnEoZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcyMTAtXFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTI6MjAuOTY1MDA4MVoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjYzOTAwNDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW50ZXJydXB0IEFmZmluaXR5IENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIHRyYWNlIGhvdyB0aGlzIGludGVycnVwdCBhZmZpbml0eSBjaGFuZ2UgcmlwcGxlcyB0aHJvdWdoIHRoZSBzeXN0ZW0uIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgc3RtbWFjX3Jlc3VtZWAgd291bGQgYmUgdGhlIGtleSBmdW5jdGlvbiwgbWF5YmUgY2FsbGluZyBgc3RtbWFjX3JlcXVlc3RfaXJxYCwgYnV0IEkgc2VlIG5vdyB0aGF0J3Mgd3JvbmcuIEl0J3MgYWN0dWFsbHkgYHN0bW1hY194ZHBfb3BlbmAgdGhhdCBoYW5kbGVzIHRoZSBpbml0aWFsIHJlcXVlc3QuIFNvLCBgc3RtbWFjX3hkcF9vcGVuYCBsb29rcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBzdGFydCBkaWdnaW5nIGRlZXBlci5cblxuSG1tLCB3YWl0IGEgbWludXRlLiBMb29raW5nIGNsb3NlciBhdCB0aGUgcGF0Y2gsIHRoZSAqY29yZSogY2hhbmdlcyBzZWVtIHRvIGJlIHdpdGhpbiBga2VybmVsL2lycS9tYW5hZ2UuY2AgYW5kIGBsaWIvY3B1bWFzay5jYC4gVGhvc2UgZmlsZXMgYXJlIHByZXR0eSBnZW5lcmljLCB0aG91Z2gsIGNvdmVyaW5nIHRoZSBpbnRlcnJ1cHQgc3lzdGVtIGdlbmVyYWxseS4gVGhhdCBtZWFucyB0aGUga2V5IGZ1bmN0aW9ucyB3aXRoaW4gdGhvc2UgZ2VuZXJpYyBmaWxlcyBhcmUgbGlrZWx5IGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCBhbmQgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYC4gVGhlc2UgYXJlIGRlZmluaXRlbHkgdGhlIGZ1bmN0aW9ucyBJIG5lZWQgdG8gaG9uZSBpbiBvbiB0byBncmFzcCB0aGUgcmVhbCBpbXBhY3QgaGVyZS5cblxuTGV0IG1lIGp1c3QgcXVpY2tseSBjaGVjayBpZiBgaXJxX3NldF9hZmZpbml0eV9hbmRfaGludGAgaXRzZWxmIGlzIHVzZWQgYW55d2hlcmUgZWxzZSBpbiB0aGUgY29kZSBiYXNlLCBqdXN0IHRvIGJlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueSBvdGhlciBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzg5NiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MjoyNS42Mjg5MTE1MzVaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MzYwMjM4MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXJxX3NldF9hZmZpbml0eV9hbmRfaGludFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9kZXZpY2UuYz0yODkzPXZvaWQgaGxfc2V0X2lycV9hZmZpbml0eShzdHJ1Y3QgaGxfZGV2aWNlICpoZGV2LCBpbnQgaXJxKVxcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9kZXZpY2UuYy0yODk5LVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9jb21tb24vZGV2aWNlLmM6MjkwMDpcXHRpZiAoaXJxX3NldF9hZmZpbml0eV9hbmRfaGludChpcnEsIFxcdTAwMjZoZGV2LVxcdTAwM2VpcnFfYWZmaW5pdHlfbWFzaykpXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2NvbW1vbi9kZXZpY2UuYy0yOTAxLVxcdFxcdGRldl9lcnIoaGRldi1cXHUwMDNlZGV2LCBcXFwiRmFpbGVkIHNldHRpbmcgaXJxICVkIGFmZmluaXR5XFxcXG5cXFwiLCBpcnEpO1xcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2dhdWRpMi9nYXVkaTIuYz00NjYwPXN0YXRpYyBpbnQgZ2F1ZGkyX2VuYWJsZV9tc2l4KHN0cnVjdCBobF9kZXZpY2UgKmhkZXYpXFxuLS1cXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvZ2F1ZGkyL2dhdWRpMi5jLTQ3NTEtXFx0XFx0aXJxID0gcGNpX2lycV92ZWN0b3IoaGRldi1cXHUwMDNlcGRldiwgaSk7XFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2dhdWRpMi9nYXVkaTIuYzo0NzUyOlxcdFxcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoaXJxLCBOVUxMKTtcXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvZ2F1ZGkyL2dhdWRpMi5jLTQ3NTMtXFx0XFx0ZnJlZV9pcnEoaXJxLCBcXHUwMDI2aGRldi1cXHUwMDNldXNlcl9pbnRlcnJ1cHRbal0pO1xcbi0tXFxuZHJpdmVycy9hY2NlbC9oYWJhbmFsYWJzL2dhdWRpMi9nYXVkaTIuYz00ODA2PXN0YXRpYyB2b2lkIGdhdWRpMl9kaXNhYmxlX21zaXgoc3RydWN0IGhsX2RldmljZSAqaGRldilcXG4tLVxcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9nYXVkaTIvZ2F1ZGkyLmMtNDgzMi1cXHRcXHRpcnEgPSBwY2lfaXJxX3ZlY3RvcihoZGV2LVxcdTAwM2VwZGV2LCBpKTtcXG5kcml2ZXJzL2FjY2VsL2hhYmFuYWxhYnMvZ2F1ZGkyL2dhdWRpMi5jOjQ4MzM6XFx0XFx0aXJxX3NldF9hZmZpbml0eV9hbmRfaGludChpcnEsIE5VTEwpO1xcbmRyaXZlcnMvYWNjZWwvaGFiYW5hbGFicy9nYXVkaTIvZ2F1ZGkyLmMtNDgzNC1cXHRcXHRmcmVlX2lycShpcnEsIFxcdTAwMjZoZGV2LVxcdTAwM2V1c2VyX2ludGVycnVwdFtqXSk7XFxuLS1cXG5kcml2ZXJzL2NwdWZyZXEvcWNvbS1jcHVmcmVxLWh3LmM9NDQ1PXN0YXRpYyBpbnQgcWNvbV9jcHVmcmVxX2h3X2xtaF9pbml0KHN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5LCBpbnQgaW5kZXgpXFxuLS1cXG5kcml2ZXJzL2NwdWZyZXEvcWNvbS1jcHVmcmVxLWh3LmMtNDczLVxcbmRyaXZlcnMvY3B1ZnJlcS9xY29tLWNwdWZyZXEtaHcuYzo0NzQ6XFx0cmV0ID0gaXJxX3NldF9hZmZpbml0eV9hbmRfaGludChkYXRhLVxcdTAwM2V0aHJvdHRsZV9pcnEsIHBvbGljeS1cXHUwMDNlY3B1cyk7XFxuZHJpdmVycy9jcHVmcmVxL3Fjb20tY3B1ZnJlcS1ody5jLTQ3NS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9jcHVmcmVxL3Fjb20tY3B1ZnJlcS1ody5jPTQ4Mj1zdGF0aWMgaW50IHFjb21fY3B1ZnJlcV9od19jcHVfb25saW5lKHN0cnVjdCBjcHVmcmVxX3BvbGljeSAqcG9saWN5KVxcbi0tXFxuZHJpdmVycy9jcHVmcmVxL3Fjb20tY3B1ZnJlcS1ody5jLTQ5NC1cXG5kcml2ZXJzL2NwdWZyZXEvcWNvbS1jcHVmcmVxLWh3LmM6NDk1OlxcdHJldCA9IGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoZGF0YS1cXHUwMDNldGhyb3R0bGVfaXJxLCBwb2xpY3ktXFx1MDAzZWNwdXMpO1xcbmRyaXZlcnMvY3B1ZnJlcS9xY29tLWNwdWZyZXEtaHcuYy00OTYtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvY3B1ZnJlcS9xY29tLWNwdWZyZXEtaHcuYz01MDM9c3RhdGljIGludCBxY29tX2NwdWZyZXFfaHdfY3B1X29mZmxpbmUoc3RydWN0IGNwdWZyZXFfcG9saWN5ICpwb2xpY3kpXFxuLS1cXG5kcml2ZXJzL2NwdWZyZXEvcWNvbS1jcHVmcmVxLWh3LmMtNTE0LVxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2ZGF0YS1cXHUwMDNldGhyb3R0bGVfd29yayk7XFxuZHJpdmVycy9jcHVmcmVxL3Fjb20tY3B1ZnJlcS1ody5jOjUxNTpcXHRpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KGRhdGEtXFx1MDAzZXRocm90dGxlX2lycSwgTlVMTCk7XFxuZHJpdmVycy9jcHVmcmVxL3Fjb20tY3B1ZnJlcS1ody5jLTUxNi1cXHRkaXNhYmxlX2lycV9ub3N5bmMoZGF0YS1cXHUwMDNldGhyb3R0bGVfaXJxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Z1bmdpYmxlL2Z1bmV0aC9mdW5ldGhfbWFpbi5jPTY2NT1zdGF0aWMgaW50IGZ1bl9lbmFibGVfaXJxcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL2Z1bmV0aF9tYWluLmMtNzAyLVxcdFxcdGlycV9zZXRfYWZmaW5pdHlfbm90aWZpZXIocC1cXHUwMDNlaXJxLCBcXHUwMDI2cC1cXHUwMDNlYWZmX25vdGlmeSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL2Z1bmV0aF9tYWluLmM6NzAzOlxcdFxcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQocC1cXHUwMDNlaXJxLCBcXHUwMDI2cC1cXHUwMDNlYWZmaW5pdHlfbWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnVuZ2libGUvZnVuZXRoL2Z1bmV0aF9tYWluLmMtNzA0LVxcdFxcdG5hcGlfZW5hYmxlKFxcdTAwMjZwLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYz00ODA9c3RhdGljIGludCBndmVfYWxsb2Nfbm90aWZ5X2Jsb2NrcyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtNTY4LVxcdFxcdGJsb2NrLVxcdTAwM2VpcnEgPSBwcml2LVxcdTAwM2Vtc2l4X3ZlY3RvcnNbbXNpeF9pZHhdLnZlY3RvcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6NTY5OlxcdFxcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoYmxvY2stXFx1MDAzZWlycSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtNTcwLVxcdFxcdFxcdFxcdFxcdCAgY3B1bWFza19vZihjdXJfY3B1KSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfcnguYz01MTM9c3RhdGljIGludCByeF9yZXF1ZXN0X2lycShzdHJ1Y3QgaGluaWNfcnhxICpyeHEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfcnguYy01NDktXFx0Y3B1bWFza19zZXRfY3B1KHFwLVxcdTAwM2VxX2lkICUgbnVtX29ubGluZV9jcHVzKCksIFxcdTAwMjZycS1cXHUwMDNlYWZmaW5pdHlfbWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljL2hpbmljX3J4LmM6NTUwOlxcdGVyciA9IGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQocnEtXFx1MDAzZWlycSwgXFx1MDAyNnJxLVxcdTAwM2VhZmZpbml0eV9tYXNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvaGluaWNfcnguYy01NTEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmM9MTc5PXN0YXRpYyB2b2lkIGlibXZuaWNfY2xlYW5fcXVldWVfYWZmaW5pdHkoc3RydWN0IGlibXZuaWNfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmMtMTg2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmM6MTg3OlxcdGlmIChpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KHF1ZXVlLVxcdTAwM2VpcnEsIE5VTEwpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmMtMTg4LVxcdFxcdG5ldGRldl93YXJuKGFkYXB0ZXItXFx1MDAzZW5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmM9MjE2PXN0YXRpYyBpbnQgaWJtdm5pY19zZXRfcXVldWVfYWZmaW5pdHkoc3RydWN0IGlibXZuaWNfc3ViX2NycV9xdWV1ZSAqcXVldWUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy5jLTI0OS1cXHRjcHVtYXNrX2NvcHkocXVldWUtXFx1MDAzZWFmZmluaXR5X21hc2ssIG1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9pYm12bmljLmM6MjUwOlxcdHJjID0gaXJxX3NldF9hZmZpbml0eV9hbmRfaGludChxdWV1ZS1cXHUwMDNlaXJxLCBxdWV1ZS1cXHUwMDNlYWZmaW5pdHlfbWFzayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZuaWMuYy0yNTEtXFx0ZnJlZV9jcHVtYXNrX3ZhcihtYXNrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9wY2lfaXJxLmM9MjQyPXN0cnVjdCBtbHg1X2lycSAqbWx4NV9pcnFfYWxsb2Moc3RydWN0IG1seDVfaXJxX3Bvb2wgKnBvb2wsIGludCBpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL3BjaV9pcnEuYy0yOTUtXFx0XFx0Y3B1bWFza19jb3B5KGlycS1cXHUwMDNlbWFzaywgXFx1MDAyNmFmX2Rlc2MtXFx1MDAzZW1hc2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9wY2lfaXJxLmM6Mjk2OlxcdFxcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoaXJxLVxcdTAwM2VtYXAudmlycSwgaXJxLVxcdTAwM2VtYXNrKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvcGNpX2lycS5jLTI5Ny1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0xOTE0PXN0YXRpYyBpbnQgbWFuYV9pcnFfc2V0dXBfbnVtYV9hd2FyZSh1bnNpZ25lZCBpbnQgKmlycXMsIHVuc2lnbmVkIGludCBsZW4sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xOTQwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjE5NDE6XFx0XFx0XFx0XFx0aXJxX3NldF9hZmZpbml0eV9hbmRfaGludCgqaXJxcysrLCB0b3BvbG9neV9zaWJsaW5nX2NwdW1hc2soY3B1KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMTk0Mi1cXHRcXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0xOTUyPXN0YXRpYyB2b2lkIG1hbmFfaXJxX3NldHVwX2xpbmVhcih1bnNpZ25lZCBpbnQgKmlycXMsIHVuc2lnbmVkIGludCBsZW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYy0xOTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jOjE5NjA6XFx0XFx0aXJxX3NldF9hZmZpbml0eV9hbmRfaGludCgqaXJxcysrLCBjcHVtYXNrX29mKGNwdSkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTE5NjEtXFx0XFx0bGVuLS07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvbWFuYS9nZG1hX21haW4uYz0yMDUzPXN0YXRpYyBpbnQgbWFuYV9nZF9zZXR1cF9pcnFzKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgbnZlYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9tYW5hL2dkbWFfbWFpbi5jLTIwODgtXFx0XFx0Y3B1ID0gY3B1bWFza19sb2NhbF9zcHJlYWQoMCwgZ2MtXFx1MDAzZW51bWFfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmM6MjA4OTpcXHRcXHRpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KGlycXNbMF0sIGNwdW1hc2tfb2YoY3B1KSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L21hbmEvZ2RtYV9tYWluLmMtMjA5MC1cXHRcXHRpcnFzKys7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTM4MjQ9c3RhdGljIGludCBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM5NDYtXFx0XFx0Y3B1bWFza19zZXRfY3B1KGNwdW1hc2tfbG9jYWxfc3ByZWFkKGksIG5vZGUpLCBhZmZpbml0eSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzozOTQ3OlxcdFxcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQobXNpLVxcdTAwM2VyeF9pcnFbaV0sIGFmZmluaXR5KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM5NDgtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zOTcyLVxcdFxcdGNwdW1hc2tfc2V0X2NwdShjcHVtYXNrX2xvY2FsX3NwcmVhZChpLCBub2RlKSwgYWZmaW5pdHkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6Mzk3MzpcXHRcXHRpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KG1zaS1cXHUwMDNldHhfaXJxW2ldLCBhZmZpbml0eSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zOTc0LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM9OTQwPXN0YXRpYyBpbnQgYXRoMTFrX3BjaV9zZXRfaXJxX2FmZmluaXR5X2hpbnQoc3RydWN0IGF0aDExa19wY2kgKmFiX3BjaSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmMtOTQ1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvcGNpLmM6OTQ2OlxcdHJldHVybiBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KGFiX3BjaS1cXHUwMDNlcGRldi1cXHUwMDNlaXJxLCBtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL3BjaS5jLTk0Ny19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jPTYxOD1zdGF0aWMgaW50IGF0aDEya19wY2lfc2V0X2lycV9hZmZpbml0eV9oaW50KHN0cnVjdCBhdGgxMmtfcGNpICphYl9wY2ksXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTYyMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jOjYyNDpcXHRyZXR1cm4gaXJxX3NldF9hZmZpbml0eV9hbmRfaGludChhYl9wY2ktXFx1MDAzZXBkZXYtXFx1MDAzZWlycSwgbSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy02MjUtfVxcbi0tXFxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmM9NTkwND1tZWdhc2FzX3NldF9oaWdoX2lvcHNfcXVldWVfYWZmaW5pdHlfYW5kX2hpbnQoc3RydWN0IG1lZ2FzYXNfaW5zdGFuY2UgKmluc3RhbmNlKVxcbi0tXFxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmMtNTkxOC1cXHRcXHRcXHRpcnEgPSBwY2lfaXJxX3ZlY3RvcihpbnN0YW5jZS1cXHUwMDNlcGRldiwgaSk7XFxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmM6NTkxOTpcXHRcXHRcXHRpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KGlycSwgbWFzayk7XFxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmMtNTkyMC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL3Njc2kvbXB0M3Nhcy9tcHQzc2FzX2Jhc2UuYz0zMjEyPV9iYXNlX2Fzc2lnbl9yZXBseV9xdWV1ZXMoc3RydWN0IE1QVDNTQVNfQURBUFRFUiAqaW9jKVxcbi0tXFxuZHJpdmVycy9zY3NpL21wdDNzYXMvbXB0M3Nhc19iYXNlLmMtMzI0NC1cXHRcXHRcXHRcXHRpcnEgPSBwY2lfaXJxX3ZlY3Rvcihpb2MtXFx1MDAzZXBkZXYsIGluZGV4KTtcXG5kcml2ZXJzL3Njc2kvbXB0M3Nhcy9tcHQzc2FzX2Jhc2UuYzozMjQ1OlxcdFxcdFxcdFxcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQoaXJxLCBtYXNrKTtcXG5kcml2ZXJzL3Njc2kvbXB0M3Nhcy9tcHQzc2FzX2Jhc2UuYy0zMjQ2LVxcdFxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmM9NTU5PWludCB2cF9zZXRfdnFfYWZmaW5pdHkoc3RydWN0IHZpcnRxdWV1ZSAqdnEsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVfbWFzaylcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMtNTc2LVxcdFxcdFxcdGNwdW1hc2tfY29weShtYXNrLCBjcHVfbWFzayk7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYzo1Nzc6XFx0XFx0XFx0aXJxX3NldF9hZmZpbml0eV9hbmRfaGludChpcnEsIG1hc2spO1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMtNTc4LVxcdFxcdH1cXG4tLVxcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0Lmg9MzM1PWlycV91cGRhdGVfYWZmaW5pdHlfaGludCh1bnNpZ25lZCBpbnQgaXJxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSlcXG4tLVxcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0LmgtMzQwLS8qKlxcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0Lmg6MzQxOiAqIGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQgLSBVcGRhdGUgdGhlIGFmZmluaXR5IGhpbnQgYW5kIGFwcGx5IHRoZSBwcm92aWRlZFxcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0LmgtMzQyLSAqXFx0XFx0XFx0ICAgICBjcHVtYXNrIHRvIHRoZSBpbnRlcnJ1cHRcXG4tLVxcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0Lmg9MzQ5PXN0YXRpYyBpbmxpbmUgaW50XFxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaDozNTA6aXJxX3NldF9hZmZpbml0eV9hbmRfaGludCh1bnNpZ25lZCBpbnQgaXJxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSlcXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTM1MS17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTM1NS0vKlxcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0Lmg6MzU2OiAqIERlcHJlY2F0ZWQuIFVzZSBpcnFfdXBkYXRlX2FmZmluaXR5X2hpbnQoKSBvciBpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KClcXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oLTM1Ny0gKiBpbnN0ZWFkLlxcbi0tXFxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaD0zNTk9c3RhdGljIGlubGluZSBpbnQgaXJxX3NldF9hZmZpbml0eV9oaW50KHVuc2lnbmVkIGludCBpcnEsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICptKVxcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0LmgtMzYwLXtcXG5pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oOjM2MTpcXHRyZXR1cm4gaXJxX3NldF9hZmZpbml0eV9hbmRfaGludChpcnEsIG0pO1xcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0LmgtMzYyLX1cXG4tLVxcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0Lmg9Mzk1PXN0YXRpYyBpbmxpbmUgaW50IGlycV91cGRhdGVfYWZmaW5pdHlfaGludCh1bnNpZ25lZCBpbnQgaXJxLFxcbi0tXFxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaC00MDAtXFxuaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaDo0MDE6c3RhdGljIGlubGluZSBpbnQgaXJxX3NldF9hZmZpbml0eV9hbmRfaGludCh1bnNpZ25lZCBpbnQgaXJxLFxcbmluY2x1ZGUvbGludXgvaW50ZXJydXB0LmgtNDAyLVxcdFxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTI6MjcuNDY0OTQwOTA0WiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxOTM5OTk2MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRm9jdXNpbmcgb24gYHZwX3NldF92cV9hZmZpbml0eWAgZm9yIEFmZmluaXR5IEFuYWx5c2lzKipcblxuT2theSwgc28gSSdtIHNlZWluZyB0aGF0IGB2cF9zZXRfdnFfYWZmaW5pdHlgIGlzIHVzZWQgd2l0aGluIGB2aXJ0aW9fcGNpX2NvbW1vbi5jYC4gVGhhdCdzIGEga2V5IGZpbGUsIGVzcGVjaWFsbHkgcHJldmFsZW50IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gR2l2ZW4gaXRzIGNvbW1vbiB1c2FnZSwgYHZwX3NldF92cV9hZmZpbml0eWAgaXMgYSBwcmltZSB0YXJnZXQgZm9yIGRlZXBlciBpbnZlc3RpZ2F0aW9uIHJlZ2FyZGluZyBDUFUgYWZmaW5pdHkuIE1ha2VzIHNlbnNlLiBJIGFsc28gbm90aWNlZCB0aGF0IGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAgcG9wcyB1cCBpbiBgbWFuYV9nZF9zZXR1cF9pcnFzYCBhbmQgYHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2lgLCBidXQgYHZwX3NldF92cV9hZmZpbml0eWAgaXMgdGhlIG1vcmUgaW1tZWRpYXRlIGZvY3VzIHJpZ2h0IG5vdy4gTGV0J3MgZGVsdmUgaW50byB0aGUgZGV0YWlscyBvZiBob3cgYHZwX3NldF92cV9hZmZpbml0eWAgaXMgaW1wbGVtZW50ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMzY1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUyOjMyLjY1ODk0MzA4NFoiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYxMzI2ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidnBfc2V0X3ZxX2FmZmluaXR5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYz01NDc9Y29uc3QgY2hhciAqdnBfYnVzX25hbWUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jLTU1OC0gKi9cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jOjU1OTppbnQgdnBfc2V0X3ZxX2FmZmluaXR5KHN0cnVjdCB2aXJ0cXVldWUgKnZxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1X21hc2spXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy01NjAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MjozMi43MDUwODA3MjlaIiwiU2VxIjo0NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njg3MzUzMzc4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqSW52ZXN0aWdhdGluZyBgdnBfc2V0X3ZxX2FmZmluaXR5YCBFeHBvcnQqKlxuXG5Pa2F5LCBzbyB0aGUgY29kZSdzIHBvaW50aW5nIHRvIGB2cF9zZXRfdnFfYWZmaW5pdHlgLiBNeSBmaXJzdCB0aG91Z2h0IGlzOiB3YWl0LCBpcyB0aGlzIGZ1bmN0aW9uICpleHBvcnRlZCo/IFRoYXQncyBhIGNyaXRpY2FsIGRldGFpbCBJIG5lZWQgdG8gbmFpbCBkb3duIHJpZ2h0IGF3YXkuIEtub3dpbmcgaWYgdGhpcyBmdW5jdGlvbiBpcyB2aXNpYmxlIHRvIG90aGVyIG1vZHVsZXMgb3IgY29tcG9uZW50cyBpcyBmdW5kYW1lbnRhbCB0byB1bmRlcnN0YW5kaW5nIGl0cyBwb3RlbnRpYWwgaW1wYWN0IGFuZCBpbnRlbmRlZCB1c2UuIElmIGl0J3MgZXhwb3J0ZWQsIHRoYXQgc2lnbmlmaWNhbnRseSBicm9hZGVucyB0aGUgc2NvcGUgb2Ygd2hlcmUgYW5kIGhvdyBpdCBtaWdodCBiZSB1c2VkLCBhbmQgdGhlcmVmb3JlLCBwb3RlbnRpYWxseSBjaGFuZ2VzIG15IGFuYWx5c2lzIGFuZCB0aGUgY29uc2lkZXJhdGlvbnMgSSBuZWVkIHRvIG1ha2UgaW4gcmVsYXRpb24gdG8gdGhpcyBmdW5jdGlvbi4gVGhpcyBhbHNvIGhhcyBzZWN1cml0eSBpbXBsaWNhdGlvbnM7IHRoZSBpbXBsaWNhdGlvbnMgb2YgYW4gZXhwb3J0ZWQgZnVuY3Rpb24gYXJlIGZhciBkaWZmZXJlbnQgdGhhbiBhbiBpbnRlcm5hbCBmdW5jdGlvbi5cblxuSSBpbW1lZGlhdGVseSBuZWVkIHRvIGNoZWNrIHRoZSBzeW1ib2wgdGFibGUsIHRoZSBsaW5rZXIgZmxhZ3MsIHRoZSBoZWFkZXIgZmlsZXMsIHdoYXRldmVyIGRvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxl4oCmIEkgbmVlZCB0aGUgZnVsbCBjb250ZXh0LiBJcyBpdCBtZWFudCB0byBiZSBhIHB1YmxpYyBBUEksIGEgcHJpdmF0ZSBpbnRlcm5hbCBmdW5jdGlvbiBtYXNxdWVyYWRpbmcgYXMgYSBwdWJsaWMgb25lLCBvciBhIHRyYW5zaXRpb25hbCB0aGluZz8gVGhpcyBzZXRzIHRoZSBzdGFnZSBmb3IgZXZlcnl0aGluZyBlbHNlLiBJJ2xsIG5lZWQgdG8ga25vdyB3aGVyZSBpdCdzICpkZWZpbmVkKiBhbmQgd2hlcmUgaXQncyAqdXNlZCogdG8gZnVsbHkgZ3Jhc3AgdGhpcyBleHBvcnQuIFRoZSBzaWduaWZpY2FuY2Ugb2YgYW4gZXhwb3J0IGlzIGtleSwgYW5kIGlmIGl0J3MgdGhlcmUgSSB3aWxsIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGl0IGRvZXMgYXQgYSBtdWNoIGhpZ2hlciBsZXZlbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI4MjEsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MjozOS41Nzg2MTcyODRaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NTUwOTY2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLip2cF9zZXRfdnFfYWZmaW5pdHlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTI6MzkuNjI0MTc5MzQ5WiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc4NjQ4NDAyNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipEZWJ1Z2dpbmcgdGhlIEV4cG9ydCBGdW5jdGlvbioqXG5cbkFscmlnaHQsIGhhbmcgb24gYSBzZWNvbmQuLi5zb21ldGhpbmcncyBub3QgcXVpdGUgcmlnaHQuIERpZCBJICphY3R1YWxseSogZXhwb3J0IHRoYXQgZGF0YT8gSSB0aG91Z2h0IEkgaW5pdGlhdGVkIHRoZSBwcm9jZXNzLCBidXQgSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZS4gTGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIHRoYXQgdGhlIGV4cG9ydCBmdW5jdGlvbiB3YXMgdHJpZ2dlcmVkLiBJIG5lZWQgdG8gbWFrZSAqYWJzb2x1dGVseSogc3VyZSB0aGF0IGl0J3MgYWN0dWFsbHkgcnVubmluZywgYmVmb3JlIEkgd2FzdGUgYW55IG1vcmUgdGltZS4gT2theSwgdGltZSB0byBnbyBiYWNrIGFuZCBjaGVjayB0aGUgY29kZSwganVzdCB0byBlbnN1cmUgdGhhdCB0aGF0IHBhcnRpY3VsYXIgbGluZSBleGVjdXRlZC4gQW5kIGlmIGl0J3MgdGhlcmUuLi53aHkgaXNuJ3QgaXQgd29ya2luZz8gTGV0J3MgdGFrZSBhIGxvb2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMTcxLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTI6NDcuNDg5MDIyMTExWiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjAzMTQ0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2cF9zZXRfdnFfYWZmaW5pdHlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92aXJ0aW8vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmM9NTQ3PWNvbnN0IGNoYXIgKnZwX2J1c19uYW1lKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYy01NTgtICovXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uYzo1NTk6aW50IHZwX3NldF92cV9hZmZpbml0eShzdHJ1Y3QgdmlydHF1ZXVlICp2cSwgY29uc3Qgc3RydWN0IGNwdW1hc2sgKmNwdV9tYXNrKVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMtNTYwLXtcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmg9MTM4PWNvbnN0IGNoYXIgKnZwX2J1c19uYW1lKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KTtcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmgtMTQ0LSAqL1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmg6MTQ1OmludCB2cF9zZXRfdnFfYWZmaW5pdHkoc3RydWN0IHZpcnRxdWV1ZSAqdnEsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVfbWFzayk7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9jb21tb24uaC0xNDYtXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2xlZ2FjeS5jPTE4OT1zdGF0aWMgY29uc3Qgc3RydWN0IHZpcnRpb19jb25maWdfb3BzIHZpcnRpb19wY2lfY29uZmlnX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbGVnYWN5LmMtMjAwLVxcdC5idXNfbmFtZVxcdD0gdnBfYnVzX25hbWUsXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9sZWdhY3kuYzoyMDE6XFx0LnNldF92cV9hZmZpbml0eSA9IHZwX3NldF92cV9hZmZpbml0eSxcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2xlZ2FjeS5jLTIwMi1cXHQuZ2V0X3ZxX2FmZmluaXR5ID0gdnBfZ2V0X3ZxX2FmZmluaXR5LFxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYz0xMjI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2NvbmZpZ19vcHMgdmlydGlvX3BjaV9jb25maWdfbm9kZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYy0xMjM5LVxcdC5idXNfbmFtZVxcdD0gdnBfYnVzX25hbWUsXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYzoxMjQwOlxcdC5zZXRfdnFfYWZmaW5pdHkgPSB2cF9zZXRfdnFfYWZmaW5pdHksXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYy0xMjQxLVxcdC5nZXRfdnFfYWZmaW5pdHkgPSB2cF9nZXRfdnFfYWZmaW5pdHksXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX21vZGVybi5jPTEyNDc9c3RhdGljIGNvbnN0IHN0cnVjdCB2aXJ0aW9fY29uZmlnX29wcyB2aXJ0aW9fcGNpX2NvbmZpZ19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX21vZGVybi5jLTEyNTktXFx0LmJ1c19uYW1lXFx0PSB2cF9idXNfbmFtZSxcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX21vZGVybi5jOjEyNjA6XFx0LnNldF92cV9hZmZpbml0eSA9IHZwX3NldF92cV9hZmZpbml0eSxcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX21vZGVybi5jLTEyNjEtXFx0LmdldF92cV9hZmZpbml0eSA9IHZwX2dldF92cV9hZmZpbml0eSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTI6NDcuNTM1MDY4MTM3WiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4NzQ3NjM3MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biwgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKk15IFBlcnNwZWN0aXZlIG9uIGB2aXJ0aW9fY29uZmlnX29wc2AgYW5kIEFmZmluaXR5KipcblxuQWxyaWdodCwgc28gSSdtIGRlYWxpbmcgd2l0aCBgdmlydGlvX2NvbmZpZ19vcHNgLCB3aGljaCBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIEkga25vdyBpdCBvZnRlbiBzZXJ2ZXMgYXMgYSBjZW50cmFsIHBvaW50IGZvciBjb25maWd1cmF0aW9uLXJlbGF0ZWQgb3BlcmF0aW9ucyB3aXRoaW4gdGhlIHZpcnRpbyBmcmFtZXdvcmsuIFRoZSBjcml0aWNhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbiBoZXJlLCB0aG91Z2gsIGlzIGhvdyB0aGlzIGZ1bmN0aW9uIGlzICp1c2VkKiBpbiB0aGUgY29udGV4dCBvZiBgdmlydHF1ZXVlX3NldF9hZmZpbml0eWAuIFRoZSBjb25uZWN0aW9uIGlzIGtleS5cblxuTXkgaW1tZWRpYXRlIHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGUgYHZpcnRpb19jb25maWdfb3BzYCBsaWtlbHkgaG9sZHMgYSAqY2FsbGJhY2sgZnVuY3Rpb24qLiBBbmQgdGhlIGNvbnRleHQgcG9pbnRzIHRvIGB2aXJ0cXVldWVfc2V0X2FmZmluaXR5YCBhcyB0aGUgcGxhY2Ugd2hlcmUgdGhpcyBjYWxsYmFjayBpcyBleGVjdXRlZC4gU28sIGl0IGlzIGNhbGxlZCB0byB1cGRhdGUvY2hhbmdlIHRoZSB2aXJ0dWFsIHF1ZXVlIHNldHRpbmdzIHdpdGggdGhlIGRlc2lyZWQgQ1BVLiBUaGF0J3MgYSBnb29kIHBsYWNlIGZvciB0aGlzIHRvIHRha2UgcGxhY2UuIEkgbmVlZCB0byBrZWVwIHRoaXMgcmVsYXRpb25zaGlwIGF0IHRoZSBmb3JlZnJvbnQgd2hlbiBJJ20gbG9va2luZyBpbnRvIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBvciB0cm91Ymxlc2hvb3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MDc3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTI6NTQuNDA5ODM1NDYyWiIsIlNlcSI6NTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDM5MTYxNiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmlydHF1ZXVlX3NldF9hZmZpbml0eVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZpcnRpby9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUyOjU0LjQ1NDIzNDA4N1oiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzE2NDk1NDYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJZGVudGlmeWluZyB0aGUgRnVuY3Rpb24qKlxuXG5IbW0sIGp1c3QgYSBtb21lbnQuIEl0IHNlZW1zIEkgd2FzIGluaXRpYWxseSBzZWFyY2hpbmcgZm9yIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSB2aXJ0dWFsIHF1ZXVlIGFzc2lnbm1lbnQgd2l0aGluIHRoaXMgbW9kdWxlLCBhbmQgdGhlbiBpdCBjbGlja2VkLCB0aGlzIGlzIGNhbGxlZCBgc2V0X3ZxX2FmZmluaXR5YC4gVGhhdCdzIHRoZSBmdW5jdGlvbiBuYW1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDM1OCwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUzOjAxLjE3MDczMjc1OFoiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg5NTI0Mjg1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZXRfdnFfYWZmaW5pdHlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmRwYS92ZHBhX3VzZXIvdmR1c2VfZGV2LmM9ODQ2PXN0YXRpYyB1MzIgdmR1c2VfdmRwYV9nZXRfZ2VuZXJhdGlvbihzdHJ1Y3QgdmRwYV9kZXZpY2UgKnZkcGEpXFxuLS1cXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jLTg1Mi1cXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jOjg1MzpzdGF0aWMgaW50IHZkdXNlX3ZkcGFfc2V0X3ZxX2FmZmluaXR5KHN0cnVjdCB2ZHBhX2RldmljZSAqdmRwYSwgdTE2IGlkeCxcXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jLTg1NC1cXHRcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1X21hc2spXFxuLS1cXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jPTkwMT1zdGF0aWMgY29uc3Qgc3RydWN0IHZkcGFfY29uZmlnX29wcyB2ZHVzZV92ZHBhX2NvbmZpZ19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZkcGEvdmRwYV91c2VyL3ZkdXNlX2Rldi5jLTkyNS1cXHQuZ2V0X2dlbmVyYXRpb25cXHRcXHQ9IHZkdXNlX3ZkcGFfZ2V0X2dlbmVyYXRpb24sXFxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYzo5MjY6XFx0LnNldF92cV9hZmZpbml0eVxcdD0gdmR1c2VfdmRwYV9zZXRfdnFfYWZmaW5pdHksXFxuZHJpdmVycy92ZHBhL3ZkcGFfdXNlci92ZHVzZV9kZXYuYy05MjctXFx0LmdldF92cV9hZmZpbml0eVxcdD0gdmR1c2VfdmRwYV9nZXRfdnFfYWZmaW5pdHksXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jPTU0Nz1jb25zdCBjaGFyICp2cF9idXNfbmFtZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmMtNTU4LSAqL1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmM6NTU5OmludCB2cF9zZXRfdnFfYWZmaW5pdHkoc3RydWN0IHZpcnRxdWV1ZSAqdnEsIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVfbWFzaylcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5jLTU2MC17XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5oPTEzOD1jb25zdCBjaGFyICp2cF9idXNfbmFtZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldik7XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5oLTE0NC0gKi9cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2NvbW1vbi5oOjE0NTppbnQgdnBfc2V0X3ZxX2FmZmluaXR5KHN0cnVjdCB2aXJ0cXVldWUgKnZxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1X21hc2spO1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfY29tbW9uLmgtMTQ2LVxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9sZWdhY3kuYz0xODk9c3RhdGljIGNvbnN0IHN0cnVjdCB2aXJ0aW9fY29uZmlnX29wcyB2aXJ0aW9fcGNpX2NvbmZpZ19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fcGNpX2xlZ2FjeS5jLTIwMC1cXHQuYnVzX25hbWVcXHQ9IHZwX2J1c19uYW1lLFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbGVnYWN5LmM6MjAxOlxcdC5zZXRfdnFfYWZmaW5pdHkgPSB2cF9zZXRfdnFfYWZmaW5pdHksXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9sZWdhY3kuYy0yMDItXFx0LmdldF92cV9hZmZpbml0eSA9IHZwX2dldF92cV9hZmZpbml0eSxcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbW9kZXJuLmM9MTIyNz1zdGF0aWMgY29uc3Qgc3RydWN0IHZpcnRpb19jb25maWdfb3BzIHZpcnRpb19wY2lfY29uZmlnX25vZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbW9kZXJuLmMtMTIzOS1cXHQuYnVzX25hbWVcXHQ9IHZwX2J1c19uYW1lLFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbW9kZXJuLmM6MTI0MDpcXHQuc2V0X3ZxX2FmZmluaXR5ID0gdnBfc2V0X3ZxX2FmZmluaXR5LFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19wY2lfbW9kZXJuLmMtMTI0MS1cXHQuZ2V0X3ZxX2FmZmluaXR5ID0gdnBfZ2V0X3ZxX2FmZmluaXR5LFxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYz0xMjQ3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmlydGlvX2NvbmZpZ19vcHMgdmlydGlvX3BjaV9jb25maWdfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYy0xMjU5LVxcdC5idXNfbmFtZVxcdD0gdnBfYnVzX25hbWUsXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYzoxMjYwOlxcdC5zZXRfdnFfYWZmaW5pdHkgPSB2cF9zZXRfdnFfYWZmaW5pdHksXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3BjaV9tb2Rlcm4uYy0xMjYxLVxcdC5nZXRfdnFfYWZmaW5pdHkgPSB2cF9nZXRfdnFfYWZmaW5pdHksXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jPTMyOD1zdGF0aWMgaW50IHZpcnRpb192ZHBhX2ZpbmRfdnFzKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2LCB1bnNpZ25lZCBpbnQgbnZxcyxcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmMtMzM3LVxcdHN0cnVjdCB2ZHBhX2NhbGxiYWNrIGNiO1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmM6MzM4OlxcdGJvb2wgaGFzX2FmZmluaXR5ID0gZGVzYyBcXHUwMDI2XFx1MDAyNiBvcHMtXFx1MDAzZXNldF92cV9hZmZpbml0eTtcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jLTMzOS1cXHRpbnQgaSwgZXJyLCBxdWV1ZV9pZHggPSAwO1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3ZkcGEuYy0zNjItXFx0XFx0aWYgKGhhc19hZmZpbml0eSlcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jOjM2MzpcXHRcXHRcXHRvcHMtXFx1MDAzZXNldF92cV9hZmZpbml0eSh2ZHBhLCBpLCBcXHUwMDI2bWFza3NbaV0pO1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmMtMzY0LVxcdH1cXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmM9Mzk5PXN0YXRpYyBjb25zdCBjaGFyICp2aXJ0aW9fdmRwYV9idXNfbmFtZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmMtNDA2LVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmM6NDA3OnN0YXRpYyBpbnQgdmlydGlvX3ZkcGFfc2V0X3ZxX2FmZmluaXR5KHN0cnVjdCB2aXJ0cXVldWUgKnZxLFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmMtNDA4LVxcdFxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1X21hc2spXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jLTQxNC1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jOjQxNTpcXHRpZiAob3BzLVxcdTAwM2VzZXRfdnFfYWZmaW5pdHkpXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3ZkcGEuYzo0MTY6XFx0XFx0cmV0dXJuIG9wcy1cXHUwMDNlc2V0X3ZxX2FmZmluaXR5KHZkcGEsIGluZGV4LCBjcHVfbWFzayk7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3ZkcGEuYy00MTctXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jPTQzMz1zdGF0aWMgY29uc3Qgc3RydWN0IHZpcnRpb19jb25maWdfb3BzIHZpcnRpb192ZHBhX2NvbmZpZ19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fdmRwYS5jLTQ0NC1cXHQuYnVzX25hbWVcXHQ9IHZpcnRpb192ZHBhX2J1c19uYW1lLFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb192ZHBhLmM6NDQ1OlxcdC5zZXRfdnFfYWZmaW5pdHkgPSB2aXJ0aW9fdmRwYV9zZXRfdnFfYWZmaW5pdHksXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX3ZkcGEuYy00NDYtXFx0LmdldF92cV9hZmZpbml0eSA9IHZpcnRpb192ZHBhX2dldF92cV9hZmZpbml0eSxcXG4tLVxcbmluY2x1ZGUvbGludXgvdmRwYS5oPTEyNz1zdHJ1Y3QgdmRwYV9tYXBfZmlsZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3ZkcGEuaC0zMDAtICpcXHRcXHRcXHRcXHR0aGUgZGV2aWNlLlxcbmluY2x1ZGUvbGludXgvdmRwYS5oOjMwMTogKiBAc2V0X3ZxX2FmZmluaXR5OlxcdFxcdFNldCB0aGUgYWZmaW5pdHkgb2YgdmlydHF1ZXVlIChvcHRpb25hbClcXG5pbmNsdWRlL2xpbnV4L3ZkcGEuaC0zMDItICpcXHRcXHRcXHRcXHRAdmRldjogdmRwYSBkZXZpY2VcXG4tLVxcbmluY2x1ZGUvbGludXgvdmRwYS5oPTM3Mj1zdHJ1Y3QgdmRwYV9jb25maWdfb3BzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvdmRwYS5oLTQyNC1cXHRzdHJ1Y3QgdmRwYV9pb3ZhX3JhbmdlICgqZ2V0X2lvdmFfcmFuZ2UpKHN0cnVjdCB2ZHBhX2RldmljZSAqdmRldik7XFxuaW5jbHVkZS9saW51eC92ZHBhLmg6NDI1OlxcdGludCAoKnNldF92cV9hZmZpbml0eSkoc3RydWN0IHZkcGFfZGV2aWNlICp2ZGV2LCB1MTYgaWR4LFxcbmluY2x1ZGUvbGludXgvdmRwYS5oLTQyNi1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGNwdW1hc2sgKmNwdV9tYXNrKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oPTI5PXN0cnVjdCB2aXJ0cXVldWVfaW5mbyB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3ZpcnRpb19jb25maWcuaC05NS0gKiAgICAgIHRoZSBjYWxsZXIgY2FuIHRoZW4gY29weS5cXG5pbmNsdWRlL2xpbnV4L3ZpcnRpb19jb25maWcuaDo5NjogKiBAc2V0X3ZxX2FmZmluaXR5OiBzZXQgdGhlIGFmZmluaXR5IGZvciBhIHZpcnRxdWV1ZSAob3B0aW9uYWwpLlxcbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oLTk3LSAqIEBnZXRfdnFfYWZmaW5pdHk6IGdldCB0aGUgYWZmaW5pdHkgZm9yIGEgdmlydHF1ZXVlIChvcHRpb25hbCkuXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3ZpcnRpb19jb25maWcuaD0xMTI9c3RydWN0IHZpcnRpb19jb25maWdfb3BzIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oLTEzMS1cXHRjb25zdCBjaGFyICooKmJ1c19uYW1lKShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldik7XFxuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmg6MTMyOlxcdGludCAoKnNldF92cV9hZmZpbml0eSkoc3RydWN0IHZpcnRxdWV1ZSAqdnEsXFxuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmgtMTMzLVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1X21hc2spO1xcbi0tXFxuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmg9MzkyPWludCB2aXJ0cXVldWVfc2V0X2FmZmluaXR5KHN0cnVjdCB2aXJ0cXVldWUgKnZxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1X21hc2spXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3ZpcnRpb19jb25maWcuaC0zOTQtXFx0c3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYgPSB2cS1cXHUwMDNldmRldjtcXG5pbmNsdWRlL2xpbnV4L3ZpcnRpb19jb25maWcuaDozOTU6XFx0aWYgKHZkZXYtXFx1MDAzZWNvbmZpZy1cXHUwMDNlc2V0X3ZxX2FmZmluaXR5KVxcbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oOjM5NjpcXHRcXHRyZXR1cm4gdmRldi1cXHUwMDNlY29uZmlnLVxcdTAwM2VzZXRfdnFfYWZmaW5pdHkodnEsIGNwdV9tYXNrKTtcXG5pbmNsdWRlL2xpbnV4L3ZpcnRpb19jb25maWcuaC0zOTctXFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUzOjAzLjA2NTk3OTYzMVoiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjYzNTk1MjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIGB2aXJ0cXVldWVfc2V0X2FmZmluaXR5YCBDYWxscyoqXG5cbk9rYXksIHNvIGB2aXJ0cXVldWVfc2V0X2FmZmluaXR5YCDigJMgcmlnaHQsIHRoYXQncyBhbiBpbmxpbmUgZnVuY3Rpb24gdHVja2VkIGF3YXkgaW4gYGluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oYC4gSXQncyBkZWZpbml0ZWx5IHNvbWV0aGluZyB2aXJ0aW8gZHJpdmVycyB1c2UuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIHdoZXJlICpleGFjdGx5KiBpcyB0aGlzIGZ1bmN0aW9uIGJlaW5nIGxldmVyYWdlZD9cIiBJIG5lZWQgdG8gc2VlIHRoZSBjYWxsIHNpdGVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBpbiB3aGljaCBpdCdzIGJlaW5nIHVzZWQgYWNyb3NzIHRob3NlIGRyaXZlcnMuIExldCdzIGRpZyBpbiBhbmQgZmlndXJlIG91dCB3aG8ncyBhY3R1YWxseSBjYWxsaW5nIGB2aXJ0cXVldWVfc2V0X2FmZmluaXR5YC4gS25vd2luZyB0aGUgY2FsbGVycyBpcyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIGltcGFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY3NjksIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MzowNi43Mjk1Nzc4WiIsIlNlcSI6NTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjgyNDA2MzU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZpcnRxdWV1ZV9zZXRfYWZmaW5pdHlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX2NvcmUuYz0xNzk9c3RhdGljIHZvaWQgdmlydGNyeXB0b19jbGVhbl9hZmZpbml0eShzdHJ1Y3QgdmlydGlvX2NyeXB0byAqdmksIGxvbmcgaGNwdSlcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX2NvcmUuYy0xODQtXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHZpLVxcdTAwM2VtYXhfZGF0YV9xdWV1ZXM7IGkrKylcXG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19jb3JlLmM6MTg1OlxcdFxcdFxcdHZpcnRxdWV1ZV9zZXRfYWZmaW5pdHkodmktXFx1MDAzZWRhdGFfdnFbaV0udnEsIE5VTEwpO1xcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX2NvcmUuYy0xODYtXFxuLS1cXG5kcml2ZXJzL2NyeXB0by92aXJ0aW8vdmlydGlvX2NyeXB0b19jb3JlLmM9MTkxPXN0YXRpYyB2b2lkIHZpcnRjcnlwdG9fc2V0X2FmZmluaXR5KHN0cnVjdCB2aXJ0aW9fY3J5cHRvICp2Y3J5cHRvKVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vdmlydGlvL3ZpcnRpb19jcnlwdG9fY29yZS5jLTIxMS1cXHRmb3JfZWFjaF9vbmxpbmVfY3B1KGNwdSkge1xcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX2NvcmUuYzoyMTI6XFx0XFx0dmlydHF1ZXVlX3NldF9hZmZpbml0eSh2Y3J5cHRvLVxcdTAwM2VkYXRhX3ZxW2ldLnZxLCBjcHVtYXNrX29mKGNwdSkpO1xcbmRyaXZlcnMvY3J5cHRvL3ZpcnRpby92aXJ0aW9fY3J5cHRvX2NvcmUuYy0yMTMtXFx0XFx0aWYgKCsraSBcXHUwMDNlPSB2Y3J5cHRvLVxcdTAwM2VtYXhfZGF0YV9xdWV1ZXMpXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9Mzk0Nz1zdGF0aWMgdm9pZCB2aXJ0bmV0X2NsZWFuX2FmZmluaXR5KHN0cnVjdCB2aXJ0bmV0X2luZm8gKnZpKVxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTM5NTItXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHZpLVxcdTAwM2VtYXhfcXVldWVfcGFpcnM7IGkrKykge1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzozOTUzOlxcdFxcdFxcdHZpcnRxdWV1ZV9zZXRfYWZmaW5pdHkodmktXFx1MDAzZXJxW2ldLnZxLCBOVUxMKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mzk1NDpcXHRcXHRcXHR2aXJ0cXVldWVfc2V0X2FmZmluaXR5KHZpLVxcdTAwM2VzcVtpXS52cSwgTlVMTCk7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTM5NTUtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTM5NjE9c3RhdGljIHZvaWQgdmlydG5ldF9zZXRfYWZmaW5pdHkoc3RydWN0IHZpcnRuZXRfaW5mbyAqdmkpXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMzk5MS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mzk5MjpcXHRcXHR2aXJ0cXVldWVfc2V0X2FmZmluaXR5KHZpLVxcdTAwM2VycVtpXS52cSwgbWFzayk7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjM5OTM6XFx0XFx0dmlydHF1ZXVlX3NldF9hZmZpbml0eSh2aS1cXHUwMDNlc3FbaV0udnEsIG1hc2spO1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0zOTk0LVxcdFxcdF9fbmV0aWZfc2V0X3hwc19xdWV1ZSh2aS1cXHUwMDNlZGV2LCBjcHVtYXNrX2JpdHMobWFzayksIGksIFhQU19DUFVTKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oPTM3NT1jb25zdCBjaGFyICp2aXJ0aW9fYnVzX25hbWUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3ZpcnRpb19jb25maWcuaC0zODItLyoqXFxuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmg6MzgzOiAqIHZpcnRxdWV1ZV9zZXRfYWZmaW5pdHkgLSBzZXR0aW5nIGFmZmluaXR5IGZvciBhIHZpcnRxdWV1ZVxcbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oLTM4NC0gKiBAdnE6IHRoZSB2aXJ0cXVldWVcXG4tLVxcbmluY2x1ZGUvbGludXgvdmlydGlvX2NvbmZpZy5oPTM5MT1zdGF0aWMgaW5saW5lXFxuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmg6MzkyOmludCB2aXJ0cXVldWVfc2V0X2FmZmluaXR5KHN0cnVjdCB2aXJ0cXVldWUgKnZxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1X21hc2spXFxuaW5jbHVkZS9saW51eC92aXJ0aW9fY29uZmlnLmgtMzkzLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTM6MDguNDExOTg5ODg1WiIsIlNlcSI6NTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxNDg5MDI5MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBgdmlydG5ldF9zZXRfYWZmaW5pdHlgKipcblxuQWgsIGB2aXJ0bmV0X3NldF9hZmZpbml0eWAuIFRoYXQncyBhIGdvb2Qgb25lLCBhIHN0cm9uZyBmb2N1cyBwb2ludC4gSSd2ZSBnb3QgaXQgLSBpdCdzIHJpZ2h0IHRoZXJlIGluIGBkcml2ZXJzL25ldC92aXJ0aW9fbmV0LmNgLiBBbHdheXMgYSBnb29kIHN0YXJ0aW5nIHBsYWNlIHRvIHVuZGVyc3RhbmQgdGhlIHZpcnRpby1uZXQgZHJpdmVyIGludGVybmFscy4gTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayBzb21ldGhpbmcuLi4gQWgsIHllcywgSSB0aG91Z2h0IHNvLiBJdCdzIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBSaWdodCwgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgbWVhbnMgaXQncyBub3QgZGlyZWN0bHkgZXhwb3NlZCBvdXRzaWRlIG9mIHRoYXQgc3BlY2lmaWMgdHJhbnNsYXRpb24gdW5pdC4gR29vZCB0byBrbm93LiBKdXN0IGNvbmZpcm1pbmcgdGhhdCdzIGhvdyBpdCdzIGRlZmluZWQgYW5kIHNjb3BlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc4MzQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MzoxNC41NjA4OTUxMTVaIiwiU2VxIjo1OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTc1Nzc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZpcnRuZXRfc2V0X2FmZmluaXR5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9Mzk0Nz1zdGF0aWMgdm9pZCB2aXJ0bmV0X2NsZWFuX2FmZmluaXR5KHN0cnVjdCB2aXJ0bmV0X2luZm8gKnZpKVxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTM5NjAtXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjM5NjE6c3RhdGljIHZvaWQgdmlydG5ldF9zZXRfYWZmaW5pdHkoc3RydWN0IHZpcnRuZXRfaW5mbyAqdmkpXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTM5NjIte1xcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTQwMDI9c3RhdGljIGludCB2aXJ0bmV0X2NwdV9vbmxpbmUodW5zaWduZWQgaW50IGNwdSwgc3RydWN0IGhsaXN0X25vZGUgKm5vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNDAwNS1cXHRcXHRcXHRcXHRcXHRcXHQgICBub2RlKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NDAwNjpcXHR2aXJ0bmV0X3NldF9hZmZpbml0eSh2aSk7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTQwMDctXFx0cmV0dXJuIDA7XFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9NDAxMD1zdGF0aWMgaW50IHZpcnRuZXRfY3B1X2RlYWQodW5zaWduZWQgaW50IGNwdSwgc3RydWN0IGhsaXN0X25vZGUgKm5vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNDAxMy1cXHRcXHRcXHRcXHRcXHRcXHQgICBub2RlX2RlYWQpO1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzo0MDE0OlxcdHZpcnRuZXRfc2V0X2FmZmluaXR5KHZpKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNDAxNS1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz00Mzc0PXN0YXRpYyBpbnQgdmlydG5ldF9zZXRfY2hhbm5lbHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy00NDAyLVxcdH1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NDQwMzpcXHR2aXJ0bmV0X3NldF9hZmZpbml0eSh2aSk7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTQ0MDQtXFx0Y3B1c19yZWFkX3VubG9jaygpO1xcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTY1NDY9c3RhdGljIGludCBpbml0X3ZxcyhzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSlcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy02NTU5LVxcdGNwdXNfcmVhZF9sb2NrKCk7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjY1NjA6XFx0dmlydG5ldF9zZXRfYWZmaW5pdHkodmkpO1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy02NTYxLVxcdGNwdXNfcmVhZF91bmxvY2soKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTM6MTQuNjA3MDc5NzExWiIsIlNlcSI6NTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg2Nzc4MDY2NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ3VycmVudCBSZWFzb25pbmcqKlxuXG5Pa2F5LCB0aGlzIGlzIHdoYXQgSSdtIHRoaW5raW5nLi4uIHRoZSBjb2RlIEknbSBsb29raW5nIGF0IHNlZW1zIHByZXR0eSBzdGF0aWMuIFRoYXQncyBhIHByb2JsZW0gZm9yIG15IHB1cnBvc2UuIEkgaW5pdGlhbGx5IGNvbnNpZGVyZWQgYHZpcnRuZXRfc2V0X2NoYW5uZWxzYCBhcyBpdCdzIGFuIGV0aHRvb2wgY2FsbGJhY2ssIHdoaWNoIGlzIHVzZWZ1bCwgYnV0IGl0IGxvb2tzIGxpa2UgaXQncyBzdGF0aWMuIFNhbWUgZ29lcyBmb3IgYGluaXRfdnFzYCDigJMgaXQncyBzdGF0aWMsIHNvIGl0J3Mgbm90IGEgdmlhYmxlIG9wdGlvbi4gQW5kIGxldCdzIG5vdCBmb3JnZXQgYHZpcnRuZXRfcHJvYmVgOyBpdCdzIHRoZSBwcm9iZSBmdW5jdGlvbiwgYnV0IGFnYWluLCBpdCBhcHBlYXJzIHRvIGJlIHN0YXRpYy4gSSBuZWVkIHNvbWV0aGluZyBub24tc3RhdGljIHRoYXQgSSBjYW4gd29yayB3aXRoLlxuXG5TbywgSSB0aGluayB0aGUgYmVzdCBwYXRoIGZvcndhcmQgaXMgdG8gZm9jdXMgb24gYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGFuZCBgY3B1bWFza19sb2NhbF9zcHJlYWRgIGJlY2F1c2UgdGhleSBhcmUgYm90aCBub24tc3RhdGljIGFuZCBleHBvcnRlZCwgbWFraW5nIHRoZW0gYWNjZXNzaWJsZS4gQWxzbywgYHN0bW1hY194ZHBfb3BlbmAgaXMgbm9uLXN0YXRpYyBhbmQgZXhwb3J0ZWQsIHNvIHRoYXQgbWlnaHQgYmUgdXNlZnVsIHRvby5cblxuQmVmb3JlIEkgY29tbWl0IHRvIHRoZW0gdGhvdWdoLCBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgZG9lcyB3aGF0IEkgdGhpbmsgaXQgZG9lcy4gSSBuZWVkIHRvIGJlIHN1cmUgaXQncyBkb2luZyB3aGF0IEkgdGhpbmsgaXQgZG9lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg2NDMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTM6MjMuMjg0ODkwNzg4WiIsIlNlcSI6NjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzkyNTIzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2lycV9hcHBseV9hZmZpbml0eV9oaW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9pcnEvbWFuYWdlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2lycS9tYW5hZ2UuYz01MDI9RVhQT1JUX1NZTUJPTF9HUEwoaXJxX2ZvcmNlX2FmZmluaXR5KTtcXG5rZXJuZWwvaXJxL21hbmFnZS5jLTUwMy1cXG5rZXJuZWwvaXJxL21hbmFnZS5jOjUwNDppbnQgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCh1bnNpZ25lZCBpbnQgaXJxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSwgYm9vbCBzZXRhZmZpbml0eSlcXG5rZXJuZWwvaXJxL21hbmFnZS5jLTUwNS17XFxuLS1cXG5rZXJuZWwvaXJxL21hbmFnZS5jLTUyNi19XFxua2VybmVsL2lycS9tYW5hZ2UuYzo1Mjc6RVhQT1JUX1NZTUJPTF9HUEwoX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCk7XFxua2VybmVsL2lycS9tYW5hZ2UuYy01MjgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUzOjIzLjMzMjgyNDY4M1oiLCJTZXEiOjYxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODYyNTM5NzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipBbmFseXppbmcgdGhlIENvZGUgU3RydWN0dXJlKipcblxuT2theSwgc28gSSdtIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgbm9uLXN0YXRpYyBhbmQgZXhwb3J0ZWQuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgYXJlYSBmb3IgZnVydGhlciBleGFtaW5hdGlvbi4gU2luY2UgaXQncyBleHBvcnRlZCwgSSBrbm93IGl0J3MgZGVzaWduZWQgdG8gYmUgYWNjZXNzZWQgZnJvbSBvdXRzaWRlIGl0cyBkZWZpbmluZyBtb2R1bGUuIFRoZSBcIm5vbi1zdGF0aWNcIiBwYXJ0IG1lYW5zIGl0IGhhcyBleHRlcm5hbCBsaW5rYWdlIHdpdGhpbiB0aGUgcHJvamVjdC4gVGhlc2UgdHdvIHByb3BlcnRpZXMgY29tYmluZWQgaGlnaGxpZ2h0IHRoZSBpbXBvcnRhbmNlIG9mIHVuZGVyc3RhbmRpbmcgaXRzIGltcGxpY2F0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLlxuXG5Ob3csIGxldCdzIHplcm8gaW4gb24gYGNwdW1hc2tfbG9jYWxfc3ByZWFkYC4gSSBuZWVkIHRvIHZlcmlmeSBob3cgKnRoYXQqIGZ1bmN0aW9uIGlzIGJlaW5nIHV0aWxpemVkLCBlc3BlY2lhbGx5IGluIGNvbnRleHQgb2YgdGhlIG9yaWdpbmFsIHN0YXRlbWVudHMuIFdoYXQncyBpdHMgcHVycG9zZT8gSG93IGlzIGl0IGJlaW5nIGNhbGxlZD8gSSBoYXZlIHRvIGVuc3VyZSB0aGUgZXhwb3J0ZWQsIG5vbi1zdGF0aWMgZWxlbWVudCBpcyBiZWluZyB1c2VkIGFzIGludGVuZGVkIGFuZCB0aGUgaW1wYWN0IG9mIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAgaXMgdW5kZXJzdG9vZCwgcGFydGljdWxhcmx5IGdpdmVuIHRoYXQgdGhpcyBpcyBhIHN5c3RlbS1sZXZlbCBmdW5jdGlvbiBkZWFsaW5nIHdpdGggQ1BVIGFmZmluaXR5LCByZXNvdXJjZSBhbGxvY2F0aW9uIGFuZCBwb3RlbnRpYWxseSBpbnRlcnJ1cHRzLiBBIGRlZXAgZGl2ZSBpcyBpbiBvcmRlci4gTGV0J3Mgc2VlIGhvdyBpdCdzIGludGVncmF0ZWQgd2l0aCB0aGUgbGFyZ2VyIGVjb3N5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkyMzMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MzoyNy4xOTUzNjcxNzFaIiwiU2VxIjo2MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MTU3Mzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNwdW1hc2tfbG9jYWxfc3ByZWFkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImxpYi9jcHVtYXNrLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibGliL2NwdW1hc2suYz03ND12b2lkIF9faW5pdCBmcmVlX2Jvb3RtZW1fY3B1bWFza192YXIoY3B1bWFza192YXJfdCBtYXNrKVxcbi0tXFxubGliL2NwdW1hc2suYy04MC0vKipcXG5saWIvY3B1bWFzay5jOjgxOiAqIGNwdW1hc2tfbG9jYWxfc3ByZWFkIC0gc2VsZWN0IHRoZSBpJ3RoIGNwdSBiYXNlZCBvbiBOVU1BIGRpc3RhbmNlc1xcbmxpYi9jcHVtYXNrLmMtODItICogQGk6IGluZGV4IG51bWJlclxcbi0tXFxubGliL2NwdW1hc2suYy05Mi0gKiBmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnVtX29ubGluZV9jcHVzKCk7IGkrKykge1xcbmxpYi9jcHVtYXNrLmM6OTM6ICpcXHRjcHUgPSBjcHVtYXNrX2xvY2FsX3NwcmVhZChpLCBub2RlKTtcXG5saWIvY3B1bWFzay5jLTk0LSAqXFx0ZG9fc29tZXRoaW5nKGNwdSk7XFxuLS1cXG5saWIvY3B1bWFzay5jLTEwNi0gKiBlbnVtZXJhdGlvbiBpcyBPKHNjaGVkX2RvbWFpbnNfbnVtYV9sZXZlbHMgKiBucl9jcHVfaWRzKSwgd2hpbGVcXG5saWIvY3B1bWFzay5jOjEwNzogKiBjcHVtYXNrX2xvY2FsX3NwcmVhZCgpIHdoZW4gY2FsbGVkIGZvciBlYWNoIGNwdSBpc1xcbmxpYi9jcHVtYXNrLmMtMTA4LSAqIE8oc2NoZWRfZG9tYWluc19udW1hX2xldmVscyAqIG5yX2NwdV9pZHMgKiBsb2cobnJfY3B1X2lkcykpLlxcbmxpYi9jcHVtYXNrLmMtMTA5LSAqL1xcbmxpYi9jcHVtYXNrLmM6MTEwOnVuc2lnbmVkIGludCBjcHVtYXNrX2xvY2FsX3NwcmVhZCh1bnNpZ25lZCBpbnQgaSwgaW50IG5vZGUpXFxubGliL2NwdW1hc2suYy0xMTEte1xcbi0tXFxubGliL2NwdW1hc2suYy0xMjEtfVxcbmxpYi9jcHVtYXNrLmM6MTIyOkVYUE9SVF9TWU1CT0woY3B1bWFza19sb2NhbF9zcHJlYWQpO1xcbmxpYi9jcHVtYXNrLmMtMTIzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MzoyNy4yNDI1MzA3ODZaIiwiU2VxIjo2MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkwOTgyODgwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIENvZGUgU3RydWN0dXJlKipcblxuT2theSwgc28gSSBzZWUgdGhhdCB0aGlzIHZhcmlhYmxlIG9yIGZ1bmN0aW9uIGlzbid0IGRlY2xhcmVkIGFzIGBzdGF0aWNgIGFuZCB0aGF0IGl0J3MgYmVpbmcgZXhwb3J0ZWQuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgaXQgZm9yIGV4dGVybmFsIHVzZSwgd2hpY2ggbWVhbnMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBtb2R1bGVzLiBJJ2xsIG5lZWQgdG8ga2VlcCB0aGlzIGluIG1pbmQgYXMgSSBjb250aW51ZSB0byBhbmFseXplIHRoZSBjb250ZXh0IG9mIGl0cyB1c2FnZSBhbmQgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuXG5cbk5vdywgbGV0J3MgZHJpbGwgZG93biBhbmQgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBgc3RtbWFjX3hkcF9vcGVuYCBmdW5jdGlvbi4gVGhhdCdzIHRoZSBrZXkgZW50cnkgcG9pbnQgSSBuZWVkIHRvIGRpc3NlY3QgZnVydGhlciB0byBjb25maXJtIG15IGluaXRpYWwgYXNzdW1wdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk5MTksIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1MzozMi4xNTIzNjI2ODVaIiwiU2VxIjo2NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODAxMDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY194ZHBfb3BlblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzEwNj12b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzEzOTppbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTQwLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTM6MzIuMTk4MTY4NDkxWiIsIlNlcSI6NjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYwOTM3MDE3ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUHJvcG9zZWQgQ2hhbmdlcyoqXG5cbk9rYXksIHNvIHRoaXMgaXMgYWJvdXQgaGFuZGxpbmcgSVJRIGFmZmluaXR5IGFuZCBDUFUgbWFzayBzcHJlYWRpbmcsIHdoaWNoLCBmcm9tIHdoYXQgSSdtIHNlZWluZywgaXMgYSBjb3JlIGtlcm5lbCBtb2RpZmljYXRpb24uIEl0IGxvb2tzIGxpa2UgaXQncyB0b3VjaGluZyBzZXZlcmFsIGRyaXZlcnMsIHNwZWNpZmljYWxseSB0aGUgYHN0bW1hY2AgZHJpdmVyLCBtYWtpbmcgY2hhbmdlcyB0byB0aGUgYF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnRgIGFuZCBgY3B1bWFza19sb2NhbF9zcHJlYWRgIGZ1bmN0aW9ucy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBmdW5jdGlvbmFsLCBhbmQgdGhlIGNoYW5nZXMgdG8gYHN0bW1hY2Agc2VlbSBzdHJhaWdodGZvcndhcmQgaW4gdGhlaXIgYXBwbGljYXRpb24gb2YgdGhlc2UgY29yZSBjaGFuZ2VzLiBEZWZpbml0ZWx5IG1ha2VzIHNlbnNlIHRvIHB1dCB0aGlzIHRocm91Z2ggc29tZSBmdXp6aW5nLCBhcyB3ZSdyZSBkZWFsaW5nIHdpdGggY3JpdGljYWwga2VybmVsIGxvZ2ljLlxuXG5JIGFsc28gc2VlIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgIGFzIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbnMgaGVyZS4gYFNUTU1BQ19QQ0lgIHNlZW1zIHN1ZmZpY2llbnQsIGdpdmVuIGl0IHB1bGxzIGluIGBTVE1NQUNfTElCUENJYCBhbmQgZGVwZW5kcyBvbiBgUENJYCwgc28gdGhlIGhhcmR3YXJlIHNpZGUgaXMgY292ZXJlZC5cblxuTXkgbWFpbiB0aG91Z2h0IGlzIHRvIGlkZW50aWZ5IGEgc29saWQgZW50cnkgcG9pbnQgZm9yIGZ1enppbmcuIFdoaWxlIGBzdG1tYWNfeGRwX29wZW5gIGlzIHByZXNlbnQgKGNhbGxlZCB3aGVuIFhEUCBpcyBlbmFibGVkKSwgSSdtIGN1cmlvdXMgaWYgdGhlcmUncyBhIGJldHRlciBvbmUuIEkgc2VlIHRoYXQgYHN0bW1hY19yZXN1bWVgIGlzIGV4cG9ydGVkIGFuZCBub24tc3RhdGljLCBzbyBpdCdzIGEgcG9zc2liaWxpdHksIGJ1dCBpdCBkb2Vzbid0IGNhbGwgYHN0bW1hY19yZXF1ZXN0X2lycWAsIHdoaWNoIG1pZ2h0IGxpbWl0IGl0cyB1c2VmdWxuZXNzIGFzIGEgdGVzdCBlbnRyeSBwb2ludC4gUGVyaGFwcyBgc3RtbWFjX3JlaW5pdF9xdWV1ZXNgIHdvdWxkIGJlIG1vcmUgYXBwcm9wcmlhdGUgc2luY2UgaXQncyBpbnZvbHZlZCBpbiByZS1pbml0aWFsaXppbmcgdGhlIHF1ZXVlcy4gTGV0IG1lIGV4cGxvcmUgdGhlIGNhbGwgZ3JhcGhzIGFuZCBkZXBlbmRlbmNpZXMgYSBiaXQgbW9yZSBhbmQgY29uc2lkZXIgd2hhdCdzIGJlaW5nIHRlc3RlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAyOTgsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTM6MzguMjkxODczNTE3WiIsIlNlcSI6NjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQzMDUzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfcmVpbml0X3F1ZXVlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzU4Nj1zdGF0aWMgdm9pZCBzdG1tYWNfbmFwaV9kZWwoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc2MDc6aW50IHN0bW1hY19yZWluaXRfcXVldWVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHU4IHJ4X2NudCwgdTggdHhfY250KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYwOC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUzOjM4LjMzODMwODczMloiLCJTZXEiOjY3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NDAxNDEyMDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU1RNIE1BQyBRdWV1ZSBSZS1Jbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIGBzdG1tYWNfcmVpbml0X3F1ZXVlc2AgaXNuJ3Qgc3RhdGljLCB3aGljaCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIE5vbi1zdGF0aWMgZnVuY3Rpb25zIGFyZSBvZnRlbiBlbnRyeSBwb2ludHMgb3IsIGF0IGxlYXN0LCBoYXZlIGJyb2FkZXIgc2NvcGUgdGhhbiBqdXN0IHRoZSBmaWxlIHRoZXkncmUgZGVmaW5lZCBpbi4gTm93LCBpdCBsb29rcyBsaWtlIGl0J3MgY2FsbGluZyBgc3RtbWFjX29wZW5gLCBhbmQgdGhhdCBmdW5jdGlvbiwgaW4gdHVybiwgaXMgY2FsbGluZyBgc3RtbWFjX3JlcXVlc3RfaXJxYC4gR2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgcmUtaW5pdGlhbGl6YXRpb24sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHNvIEkgYW0gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRoYXQgYHN0bW1hY19vcGVuYCBpcywgaW4gZmFjdCwgY2FsbGVkIGJ5IGBzdG1tYWNfcmVpbml0X3F1ZXVlc2AsIGFuZCB0aGVuIEkgY2FuIGRlZHVjZSBob3cgdGhlIElSUXMgYXJlIGdldHRpbmcgcmVxdWVzdGVkIGluIHRoZSBjb250ZXh0IG9mIGEgcG90ZW50aWFsIHJlLWluaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMTQ1LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTM6NDcuNzM5NzI0MDE0WiIsIlNlcSI6NjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODYxNjMyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfb3BlblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDA2Mz1zdG1tYWNfc2V0dXBfZG1hX2Rlc2Moc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1bnNpZ25lZCBpbnQgbXR1KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTI4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDEyOTogKiAgX19zdG1tYWNfb3BlbiAtIG9wZW4gZW50cnkgcG9pbnQgb2YgdGhlIGRyaXZlclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDEzMC0gKiAgQGRldiA6IHBvaW50ZXIgdG8gdGhlIGRldmljZSBzdHJ1Y3R1cmUuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxMzctICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MTM4OnN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDEzOS1cXHRcXHRcXHQgc3RydWN0IHN0bW1hY19kbWFfY29uZiAqZG1hX2NvbmYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxOTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MTk2OnN0YXRpYyBpbnQgc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxOTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDIyNDpcXHRyZXQgPSBfX3N0bW1hY19vcGVuKGRldiwgZG1hX2NvbmYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDIyNS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02MTE0PXN0YXRpYyBpbnQgc3RtbWFjX2NoYW5nZV9tdHUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG5ld19tdHUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2MTUwOlxcdFxcdHJldCA9IF9fc3RtbWFjX29wZW4oZGV2LCBkbWFfY29uZik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02MTUxLVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzMyMD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHN0bW1hY19uZXRkZXZfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzMyMTpcXHQubmRvX29wZW4gPSBzdG1tYWNfb3BlbixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMjItXFx0Lm5kb19zdGFydF94bWl0ID0gc3RtbWFjX3htaXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc2MDc9aW50IHN0bW1hY19yZWluaXRfcXVldWVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHU4IHJ4X2NudCwgdTggdHhfY250KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjI2LVxcdGlmIChuZXRpZl9ydW5uaW5nKGRldikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NjI3OlxcdFxcdHJldCA9IHN0bW1hY19vcGVuKGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjI4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NjMyPWludCBzdG1tYWNfcmVpbml0X3JpbmdwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgcnhfc2l6ZSwgdTMyIHR4X3NpemUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2NDMtXFx0aWYgKG5ldGlmX3J1bm5pbmcoZGV2KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc2NDQ6XFx0XFx0cmV0ID0gc3RtbWFjX29wZW4oZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2NDUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjUzOjQ3Ljc4ODM0NjIyOVoiLCJTZXEiOjY5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzA0MzQ3NzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIGl0OlxuXG4qKkZvY3VzaW5nIEluIG9uIHRoZSBSZWluaXRpYWxpemF0aW9uIEZ1bmN0aW9ucyoqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gdHJhY2UgdGhlIHJlLWluaXRpYWxpemF0aW9uIHNlcXVlbmNlIG9mIHRoaXMgU1RNTUFDIGRyaXZlci4gSSBzZWUgdGhhdCBib3RoIGBzdG1tYWNfcmVpbml0X3F1ZXVlc2AgYW5kIGBzdG1tYWNfcmVpbml0X3JpbmdwYXJhbWAgdWx0aW1hdGVseSBjYWxsIGBzdG1tYWNfb3BlbmAuIFRoYXQncyBpbXBvcnRhbnQuIEl0IG1ha2VzIHNlbnNlLCBhcyB0aGVzZSByZS1pbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgd291bGQgbGlrZWx5IG5lZWQgdG8gcmVzZXQgZXZlcnl0aGluZyBiYWNrIHRvIGEga25vd24gZ29vZCBzdGF0ZSBsaWtlIGBzdG1tYWNfb3BlbmAuIEFuZCBgc3RtbWFjX29wZW5gIGlzIHRoZSBcInN0YXJ0aW5nIHBvaW50XCIgZm9yIHRoaW5ncy5cblxuYHN0bW1hY19yZWluaXRfcXVldWVzYCBmZWVscyBsaWtlIHRoZSBtb3JlIHByb21pc2luZyBzeW1ib2wgdG8gZm9jdXMgb24gcmlnaHQgbm93LiBJdCBpcyBtb3JlIGxpa2VseSB0byBiZSBpbnZvbHZlZCBpbiB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHVuZGVybHlpbmcgbmV0d29yayBmdW5jdGlvbnMuIFNvLCBsZXQncyBzZWUgaWYgdGhhdCBmdW5jdGlvbiBpcyBleHBvcnRlZC4gS25vd2luZyBpZiBpdCBpcyBjYW4gaGVscCBzaG93IHdoZXRoZXIgaXQgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIG9yIGlmIGl0J3MgaW50ZXJuYWwgdG8gdGhlIGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI1NTEsIk91dHB1dFRva2VucyI6NTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1Mzo1Mi4wOTI2OTc0MDFaIiwiU2VxIjo3MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NTcxOTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY19yZWluaXRfcXVldWVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NTg2PXN0YXRpYyB2b2lkIHN0bW1hY19uYXBpX2RlbChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzYwNzppbnQgc3RtbWFjX3JlaW5pdF9xdWV1ZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTggcnhfY250LCB1OCB0eF9jbnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjA4LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTM6NTIuMTM3Mjc3MTQ3WiIsIlNlcSI6NzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2NjMzMzU0OTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nOlxuXG4qKkZvY3VzaW5nIEluIG9uIEtleSBGdW5jdGlvbnMqKlxuXG5IbW0sIHNvIGl0J3Mgbm90IGV4cG9ydGVkLCBidXQgaXQgKmlzKiBub24tc3RhdGljLiBJbnRlcmVzdGluZy4gVGhhdCBzdWdnZXN0cyBpdCdzIG5vdCBtZWFudCB0byBiZSBkaXJlY3RseSBhY2Nlc3NlZCBmcm9tIG90aGVyIG1vZHVsZXMsIGJ1dCBpdCdzIHN0aWxsIGF2YWlsYWJsZSB3aXRoaW4gdGhlIGN1cnJlbnQgc2NvcGUuIE9rYXkuIEkgbmVlZCB0byBiZSBjYXJlZnVsIHdpdGggdGhhdC4gQW5kIHdoYXQgYWJvdXQgYHN0bW1hY194ZHBfb3BlbmA/IFJpZ2h0LCBhbHNvIG5vbi1zdGF0aWMuIExldCBtZSBqdXN0IG5vdGUgdGhhdCBkb3duLlxuXG5CdXQgSSB0aGluaywgZm9yIHRoZSBjb3JlIG9mIHdoYXQgSSdtIGxvb2tpbmcgYXQgcmlnaHQgbm93LCBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgYW5kIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAgc2VlbSBsaWtlIHRoZSBtb3JlIGltcG9ydGFudCBzeW1ib2xzIHRvIHplcm8gaW4gb24uIFRoZXkncmUgbGlrZWx5IGdvaW5nIHRvIGJlIHRoZSBjZW50cmFsIGZ1bmN0aW9ucyBJIG5lZWQgdG8gYW5hbHl6ZS5cblxuQWxyaWdodCwgSSB0aGluayBJJ3ZlIGdhdGhlcmVkIGVub3VnaCBjb250ZXh0IGhlcmUuIFRpbWUgdG8gYWN0dWFsbHkgY2FsbCBgc2V0LXJlc3VsdHNgIG5vdyBhbmQgbG9jayB0aG9zZSBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMwNjcsIk91dHB1dFRva2VucyI6MTU3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTQ6MDguNzcwNjM1MTA5WiIsIlNlcSI6NzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgxMzc3NjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2lycV9hcHBseV9hZmZpbml0eV9oaW50XCIsXG4gICAgXCJjcHVtYXNrX2xvY2FsX3NwcmVhZFwiLFxuICAgIFwic3RtbWFjX3JlaW5pdF9xdWV1ZXNcIixcbiAgICBcInN0bW1hY194ZHBfb3BlblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUga2VybmVsIGxvZ2ljIGZvciBJUlEgYWZmaW5pdHkgaGludHMgKF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnQpIGFuZCBjcHVtYXNrIHNwcmVhZGluZyAoY3B1bWFza19sb2NhbF9zcHJlYWQpLCB3aGljaCBhcmUgdXNlZCBieSB2YXJpb3VzIGRyaXZlcnMuIEl0IGFsc28gbW9kaWZpZXMgdGhlIHN0bW1hYyBkcml2ZXIgdG8gdXNlIHRoZXNlIGZ1bmN0aW9ucyBjb3JyZWN0bHkuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2lycV9hcHBseV9hZmZpbml0eV9oaW50XCIsXG4gICAgXCJjcHVtYXNrX2xvY2FsX3NwcmVhZFwiLFxuICAgIFwic3RtbWFjX3JlaW5pdF9xdWV1ZXNcIixcbiAgICBcInN0bW1hY194ZHBfb3BlblwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUga2VybmVsIGxvZ2ljIGZvciBJUlEgYWZmaW5pdHkgaGludHMgKF9faXJxX2FwcGx5X2FmZmluaXR5X2hpbnQpIGFuZCBjcHVtYXNrIHNwcmVhZGluZyAoY3B1bWFza19sb2NhbF9zcHJlYWQpLCB3aGljaCBhcmUgdXNlZCBieSB2YXJpb3VzIGRyaXZlcnMuIEl0IGFsc28gbW9kaWZpZXMgdGhlIHN0bW1hYyBkcml2ZXIgdG8gdXNlIHRoZXNlIGZ1bmN0aW9ucyBjb3JyZWN0bHkuIFRoZSBjaGFuZ2VzIGFyZSBmdW5jdGlvbmFsIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQxNDo1NDowOC44NDg3ODAwNjFaIiwiU2VxIjo3MywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMjQ2MjkzMzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTQ6MDguODQ5MzYwNDlaIiwiU2VxIjo3NCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTIyNDU3MDg3MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIElSUSBhZmZpbml0eSBoYW5kbGluZyBpbiB0aGUgc3RtbWFjIGRyaXZlciBhbmQgY29yZSBJUlEvY3B1bWFzayBjb2RlLiBJdCBhbGxvY2F0ZXMgYSBjcHVtYXNrIHVzaW5nIGB6YWxsb2NfY3B1bWFza192YXJgICh3aGljaCB6ZXJvZXMgdGhlIG1lbW9yeSkgYW5kIGV4cGxpY2l0bHkgY2xlYXJzIGl0IHdpdGggYGNwdW1hc2tfY2xlYXJgIGJlZm9yZSB1c2UuIFRoZSBjaGFuZ2VzIHRvIGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCBhbmQgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYCBpbnZvbHZlIGNvbnRyb2wgZmxvdyBhbmQgQ1BVIG1hc2sgbG9naWMgKGUuZy4sIHVzaW5nIGBpcnFfZGVmYXVsdF9hZmZpbml0eWAgaW5zdGVhZCBvZiBgbnVtX29ubGluZV9jcHVzKClgKS4gVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcywgYW5kIG5vIGluZm8tbGVha3MgaW50cm9kdWNlZC4gQW55IHBvdGVudGlhbCBpc3N1ZXMgKHN1Y2ggYXMgYSBkaXZpc2lvbiBieSB6ZXJvIGlmIGBjcHVtYXNrX3dlaWdodGAgcmV0dXJucyAwKSB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQga2VybmVsIHRlc3Rpbmcgb3IgS0FTQU4vVUJTQU4uIFRodXMsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVlZGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDcwNzgyY2RjZDBiZGFkNTQ3ZTdjODJhMzEzZDhjNDhiZjE2MDM4YWZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxOSAxNDo0OToyNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCBhNzFmMGRmMjYzNzg1Li45NDljZWQ3ZTQ2ZDI4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTM4MjYsMTEgKzM4MjYsMTYgQEAgc3RhdGljIGludCBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xuIFx0c3RydWN0IHN0bW1hY19tc2kgKm1zaSA9IHByaXYtXHUwMDNlbXNpO1xuIFx0ZW51bSByZXF1ZXN0X2lycV9lcnIgaXJxX2VycjtcbitcdGNwdW1hc2tfdmFyX3QgYWZmaW5pdHk7XG4gXHRpbnQgaXJxX2lkeCA9IDA7XG4gXHRjaGFyICppbnRfbmFtZTtcbitcdGludCBub2RlO1xuIFx0aW50IHJldDtcbiBcdGludCBpO1xuIFxuK1x0aWYgKCF6YWxsb2NfY3B1bWFza192YXIoXHUwMDI2YWZmaW5pdHksIEdGUF9LRVJORUwpKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbitcbiBcdC8qIEZvciBjb21tb24gaW50ZXJydXB0ICovXG4gXHRpbnRfbmFtZSA9IG1zaS1cdTAwM2VpbnRfbmFtZV9tYWM7XG4gXHRzcHJpbnRmKGludF9uYW1lLCBcIiVzOiVzXCIsIGRldi1cdTAwM2VuYW1lLCBcIm1hY1wiKTtcbkBAIC0zOTE2LDYgKzM5MjEsNyBAQCBzdGF0aWMgaW50IHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdH1cbiBcbiBcdC8qIFJlcXVlc3QgUnggTVNJIGlycSAqL1xuK1x0bm9kZSA9IGRldl90b19ub2RlKFx1MDAyNnByaXYtXHUwMDNlZGV2LVx1MDAzZWRldik7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwcml2LVx1MDAzZXBsYXQtXHUwMDNlcnhfcXVldWVzX3RvX3VzZTsgaSsrKSB7XG4gXHRcdGlmIChpIFx1MDAzZT0gTVRMX01BWF9SWF9RVUVVRVMpXG4gXHRcdFx0YnJlYWs7XG5AQCAtMzkzNSw4ICszOTQxLDEwIEBAIHN0YXRpYyBpbnQgc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0XHRcdGlycV9pZHggPSBpO1xuIFx0XHRcdGdvdG8gaXJxX2Vycm9yO1xuIFx0XHR9XG4tXHRcdGlycV9zZXRfYWZmaW5pdHlfaGludChtc2ktXHUwMDNlcnhfaXJxW2ldLFxuLVx0XHRcdFx0ICAgICAgY3B1bWFza19vZihpICUgbnVtX29ubGluZV9jcHVzKCkpKTtcbitcbitcdFx0Y3B1bWFza19jbGVhcihhZmZpbml0eSk7XG4rXHRcdGNwdW1hc2tfc2V0X2NwdShjcHVtYXNrX2xvY2FsX3NwcmVhZChpLCBub2RlKSwgYWZmaW5pdHkpO1xuK1x0XHRpcnFfc2V0X2FmZmluaXR5X2FuZF9oaW50KG1zaS1cdTAwM2VyeF9pcnFbaV0sIGFmZmluaXR5KTtcbiBcdH1cbiBcbiBcdC8qIFJlcXVlc3QgVHggTVNJIGlycSAqL1xuQEAgLTM5NTksMTMgKzM5NjcsMTggQEAgc3RhdGljIGludCBzdG1tYWNfcmVxdWVzdF9pcnFfbXVsdGlfbXNpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRcdFx0aXJxX2lkeCA9IGk7XG4gXHRcdFx0Z290byBpcnFfZXJyb3I7XG4gXHRcdH1cbi1cdFx0aXJxX3NldF9hZmZpbml0eV9oaW50KG1zaS1cdTAwM2V0eF9pcnFbaV0sXG4tXHRcdFx0XHQgICAgICBjcHVtYXNrX29mKGkgJSBudW1fb25saW5lX2NwdXMoKSkpO1xuK1xuK1x0XHRjcHVtYXNrX2NsZWFyKGFmZmluaXR5KTtcbitcdFx0Y3B1bWFza19zZXRfY3B1KGNwdW1hc2tfbG9jYWxfc3ByZWFkKGksIG5vZGUpLCBhZmZpbml0eSk7XG4rXHRcdGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnQobXNpLVx1MDAzZXR4X2lycVtpXSwgYWZmaW5pdHkpO1xuIFx0fVxuIFxuK1x0ZnJlZV9jcHVtYXNrX3ZhcihhZmZpbml0eSk7XG4rXG4gXHRyZXR1cm4gMDtcbiBcbiBpcnFfZXJyb3I6XG4rXHRmcmVlX2NwdW1hc2tfdmFyKGFmZmluaXR5KTtcbiBcdHN0bW1hY19mcmVlX2lycShkZXYsIGlycV9lcnIsIGlycV9pZHgpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG5kaWZmIC0tZ2l0IGEva2VybmVsL2lycS9tYW5hZ2UuYyBiL2tlcm5lbC9pcnEvbWFuYWdlLmNcbmluZGV4IDdlYjA3ZTNiZGI0YzIuLjM5MzdiYTI0ZGY2ZDYgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvaXJxL21hbmFnZS5jXG4rKysgYi9rZXJuZWwvaXJxL21hbmFnZS5jXG5AQCAtNTAzLDExICs1MDMsMjEgQEAgRVhQT1JUX1NZTUJPTF9HUEwoaXJxX2ZvcmNlX2FmZmluaXR5KTtcbiBcbiBpbnQgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludCh1bnNpZ25lZCBpbnQgaXJxLCBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqbSwgYm9vbCBzZXRhZmZpbml0eSlcbiB7XG4rXHRzdHJ1Y3QgaXJxX2RhdGEgKmlycV9kYXRhO1xuIFx0aW50IHJldCA9IC1FSU5WQUw7XG4gXG4gXHRzY29wZWRfaXJxZGVzY19nZXRfYW5kX2xvY2soaXJxLCBJUlFfR0VUX0RFU0NfQ0hFQ0tfR0xPQkFMKSB7XG4gXHRcdHNjb3BlZF9pcnFkZXNjLVx1MDAzZWFmZmluaXR5X2hpbnQgPSBtO1xuK1x0XHRpcnFfZGF0YSA9IGlycV9kZXNjX2dldF9pcnFfZGF0YShzY29wZWRfaXJxZGVzYyk7XG4gXHRcdHJldCA9IDA7XG4rXG4rXHRcdC8qXG4rXHRcdCAqIERvIG5vdCBvdmVyd3JpdGUgdGhlIGFmZmluaXR5IGluIGNhc2UgYW4gYWZmaW5pdHkgZm9yIHRoaXNcbitcdFx0ICogSVJRIGhhcyBhbHJlYWR5IGJlZW4gcmVxdWVzdGVkLCBlLmcuIGJ5IHdyaXRpbmcgdG9cbitcdFx0ICogL3Byb2MvaXJxL1x1MDAzY25cdTAwM2Uvc21wX2FmZmluaXR5XG4rXHRcdCAqL1xuK1x0XHRpZiAoaXJxZF9hZmZpbml0eV93YXNfc2V0KGlycV9kYXRhKSlcbitcdFx0XHRzZXRhZmZpbml0eSA9IGZhbHNlO1xuIFx0fVxuIFxuIFx0aWYgKCFyZXQgXHUwMDI2XHUwMDI2IG0gXHUwMDI2XHUwMDI2IHNldGFmZmluaXR5KVxuZGlmZiAtLWdpdCBhL2xpYi9jcHVtYXNrLmMgYi9saWIvY3B1bWFzay5jXG5pbmRleCA1YWRiOTg3NGZiZDBmLi43M2U3YjYwYTkyMDExIDEwMDY0NFxuLS0tIGEvbGliL2NwdW1hc2suY1xuKysrIGIvbGliL2NwdW1hc2suY1xuQEAgLTYsNiArNiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXhwb3J0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tZW1ibG9jay5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbnVtYS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvaW50ZXJydXB0LmhcdTAwM2VcbiBcbiAvKiBUaGVzZSBhcmUgbm90IGlubGluZSBiZWNhdXNlIG9mIGhlYWRlciB0YW5nbGVzLiAqL1xuICNpZmRlZiBDT05GSUdfQ1BVTUFTS19PRkZTVEFDS1xuQEAgLTgxLDggKzgyLDkgQEAgdm9pZCBfX2luaXQgZnJlZV9ib290bWVtX2NwdW1hc2tfdmFyKGNwdW1hc2tfdmFyX3QgbWFzaylcbiAgKiBAaTogaW5kZXggbnVtYmVyXG4gICogQG5vZGU6IGxvY2FsIG51bWFfbm9kZVxuICAqXG4tICogUmV0dXJuOiBvbmxpbmUgQ1BVIGFjY29yZGluZyB0byBhIG51bWEgYXdhcmUgcG9saWN5OyBsb2NhbCBjcHVzIGFyZSByZXR1cm5lZFxuLSAqIGZpcnN0LCBmb2xsb3dlZCBieSBub24tbG9jYWwgb25lcywgdGhlbiBpdCB3cmFwcyBhcm91bmQuXG4rICogUmV0dXJuOiBvbmxpbmUgQ1BVIGFjY29yZGluZyB0byB0aGUgZGVmYXVsdCBJUlEgYWZmaW5pdHkgYW5kIGEgbnVtYSBhd2FyZVxuKyAqIHBvbGljeTsgbG9jYWwgY3B1cyBhcmUgcmV0dXJuZWQgZmlyc3QsIGZvbGxvd2VkIGJ5IG5vbi1sb2NhbCBvbmVzLCB0aGVuIGl0XG4rICogd3JhcHMgYXJvdW5kLlxuICAqXG4gICogRm9yIHRob3NlIHdobyB3YW50cyB0byBlbnVtZXJhdGUgYWxsIENQVXMgYmFzZWQgb24gdGhlaXIgTlVNQSBkaXN0YW5jZXMsXG4gICogaS5lLiBjYWxsIHRoaXMgZnVuY3Rpb24gaW4gYSBsb29wLCBsaWtlOlxuQEAgLTExMCw5ICsxMTIsOSBAQCB1bnNpZ25lZCBpbnQgY3B1bWFza19sb2NhbF9zcHJlYWQodW5zaWduZWQgaW50IGksIGludCBub2RlKVxuIFx0dW5zaWduZWQgaW50IGNwdTtcbiBcbiBcdC8qIFdyYXA6IHdlIGFsd2F5cyB3YW50IGEgY3B1LiAqL1xuLVx0aSAlPSBudW1fb25saW5lX2NwdXMoKTtcbitcdGkgJT0gY3B1bWFza193ZWlnaHQoaXJxX2RlZmF1bHRfYWZmaW5pdHkpO1xuIFxuLVx0Y3B1ID0gc2NoZWRfbnVtYV9maW5kX250aF9jcHUoY3B1X29ubGluZV9tYXNrLCBpLCBub2RlKTtcbitcdGNwdSA9IHNjaGVkX251bWFfZmluZF9udGhfY3B1KGlycV9kZWZhdWx0X2FmZmluaXR5LCBpLCBub2RlKTtcbiBcbiBcdFdBUk5fT04oY3B1IFx1MDAzZT0gbnJfY3B1X2lkcyk7XG4gXHRyZXR1cm4gY3B1O1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMTQ6NTQ6MDguODQ5MzYxMzFaIiwiU2VxIjo3NSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIyNDU2ODU5MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQYXRjaCBmb3IgS01TQU4gUmVsZXZhbmNlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSd2ZSBnb3QgYSBwYXRjaCB0b3VjaGluZyBgc3RtbWFjX3JlcXVlc3RfaXJxX211bHRpX21zaWAsIGBfX2lycV9hcHBseV9hZmZpbml0eV9oaW50YCwgYW5kIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBsb29rIGZvciBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGVzcGVjaWFsbHkgc2luY2Ugd2UncmUgcGxheWluZyB3aXRoIENQVSBtYXNrcyBhbmQgSVJRIGFmZmluaXR5LCB3aGljaCBhcmUgc2Vuc2l0aXZlIGFyZWFzLlxuXG5GaXJzdCwgYHN0bW1hY19yZXF1ZXN0X2lycV9tdWx0aV9tc2lgOiBJdCdzIGFsbG9jYXRpbmcgYW4gYGFmZmluaXR5YCBjcHVtYXNrIHVzaW5nIGB6YWxsb2NfY3B1bWFza192YXJgLCB3aGljaCBpcyBnb29kOyB0aGF0IHplcm9lcyB0aGUgbWVtb3J5LiBUaGVuLCB3ZSB1c2UgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYCB0byBwaWNrIGEgQ1BVIGFuZCBzZXQgaXQgaW4gdGhlIG1hc2suIFdlJ3JlIGNhbGxpbmcgYGlycV9zZXRfYWZmaW5pdHlfYW5kX2hpbnRgIHdpdGggdGhpcyBtYXNrIGFuZCB0aGVuIGZyZWVpbmcgaXQuIFNvIGZhciwgc28gZ29vZC4gVGhlIGNyaXRpY2FsIHRoaW5nIGhlcmUgaXMgdGhhdCB0aGUgYWxsb2NhdGlvbiBpcyBpbml0aWFsaXplZCBhbmQgd2UncmUgKmV4cGxpY2l0bHkqIGNsZWFyaW5nIGl0LlxuXG5OZXh0LCBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAuIFRoaXMgZnVuY3Rpb24ncyBjaGFuZ2VzIHNlZW0gcHJpbWFyaWx5IGFib3V0IGNvbnRyb2wgZmxvdywgY2hlY2tpbmcgYGlycWRfYWZmaW5pdHlfd2FzX3NldChpcnFfZGF0YSlgLiBJZiBpdCdzIGFscmVhZHkgc2V0LCBgc2V0YWZmaW5pdHlgIGJlY29tZXMgZmFsc2UuIFRoaXMgZG9lc24ndCBpbmhlcmVudGx5IHNjcmVhbSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy5cblxuRmluYWxseSwgYGNwdW1hc2tfbG9jYWxfc3ByZWFkYC4gSGVyZSdzIHdoZXJlIHdlIHNlZSB0aGUgbW9zdCBzaWduaWZpY2FudCBjaGFuZ2Ug4oCTIHVzaW5nIGBpcnFfZGVmYXVsdF9hZmZpbml0eWAgaW5zdGVhZCBvZiBgY3B1X29ubGluZV9tYXNrYCBhbmQgYG51bV9vbmxpbmVfY3B1cygpYC4gVGhpcyBpcyBpbXBvcnRhbnQsIGFzIGl0IGNvdWxkIGNoYW5nZSB0aGUgcG9zc2libGUgQ1BVIHNlbGVjdGlvbi4gQnV0IGFnYWluLCB0aGlzIGlzIHByaW1hcmlseSBjb250cm9sIGZsb3cg4oCTIHRoZSBjb2RlIGlzIHN0aWxsICpzZXR0aW5nKiBhIENQVSBpbiB0aGUgbWFzay5cblxuTGV0J3MgZG8gYSBxdWljayBjaGVja2xpc3QuIEFyZSB0aGVyZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHM/IE5vLCBgYWZmaW5pdHlgIGlzIHphbGxvYydkIGFuZCBjbGVhcmVkLCBhbmQgd2UncmUgdXNpbmcgdGhlIG1hc2sgZm9yIHRoZSBpbnRlbmRlZCBwdXJwb3NlLiBJbmZvIGxlYWtzIHRvIHVzZXIgc3BhY2U/IE5vcGUsIG5vdGhpbmcncyBiZWluZyBjb3BpZWQgb3V0IHRoYXQncyB1bmluaXRpYWxpemVkLiBDb21wbGV4IHN0cnVjdHVyZXMgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcyBiZWluZyBwYXNzZWQgYXJvdW5kPyBObywganVzdCBhIGNwdW1hc2suXG5cbkVzc2VudGlhbGx5LCB0aGlzIGlzIGFsbCBhYm91dCBJUlEgYWZmaW5pdHksIGNvbnRyb2xsaW5nIHdoaWNoIENQVXMgaGFuZGxlIGludGVycnVwdHMsIGFuZCB0aGUgbG9naWMgYXJvdW5kIGhvdyBDUFVzIGFyZSBzZWxlY3RlZC4gSWYgdGhlcmUncyBhIGJ1ZyBoZXJlLCBpdCdzIGxpa2VseSBhIGxvZ2ljIGVycm9yLCBvciBtYXliZSwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MuIFRoZSBvbmx5IHBvdGVudGlhbCBwaXRmYWxsIEkgc2VlIGlzIHRoYXQgZGl2aXNpb24gYnkgemVybyBpbiBgY3B1bWFza19sb2NhbF9zcHJlYWRgIOKAkyAgc3BlY2lmaWNhbGx5LCBpZiBgY3B1bWFza193ZWlnaHQoaXJxX2RlZmF1bHRfYWZmaW5pdHkpYCByZXR1cm5zIDAuIFRoYXTigJlzIGEgZGl2aWRlLWJ5LXplcm8sIHdoaWNoIGlzIGJhZCwgYnV0IGl0IHdvdWxkIGJlIGNhdWdodCBieSBzdGFuZGFyZCB0ZXN0aW5nLCBvciBwb3NzaWJseSBLQVNBTi9VQlNBTiDigJMgaXQncyBhIGNyYXNoLCBub3QgYSBtZW1vcnkgbGVhay5cblxuU28sIHN1bW1pbmcgaXQgdXAsIGdpdmVuIHRoZSBmb2N1cyBvbiBDUFUgbWFza3MgYW5kIGV4cGxpY2l0IGluaXRpYWxpemF0aW9uLCBteSBleHBlcnQganVkZ21lbnQgaXMgdGhhdCB0aGlzIHBhdGNoIGRvZXNuJ3Qgd2FycmFudCBkZWRpY2F0ZWQgS01TQU4gZnV6emluZy4gSXQncyBub3QgaW50cm9kdWNpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MsIGFuZCBhbnkgaXNzdWVzIHdvdWxkIGxpa2VseSBiZSBkZXRlY3RhYmxlIHdpdGggb3RoZXIgZnV6emVycy4gVGhlIGN1cnJlbnQgcGF0Y2ggYXBwZWFycyBzb3VuZCBpbiB0aGUgY29udGV4dCBvZiBtZW1vcnkgaW5pdGlhbGl6YXRpb24gYW5kIHVzYWdlLiBXZSBjYW4gcHJvYmFibHkgZ3JlZW4tbGlnaHQgdGhpcyB3aXRob3V0IGEgc3BlY2lhbCBLTVNBTiBzZXNzaW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTM4LCJPdXRwdXRUb2tlbnMiOjIxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc0NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDE0OjU0OjIxLjA5NTA1MDU3WiIsIlNlcSI6NzYsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBJUlEgYWZmaW5pdHkgaGFuZGxpbmcgaW4gdGhlIHN0bW1hYyBkcml2ZXIgYW5kIGNvcmUgSVJRL2NwdW1hc2sgY29kZS4gSXQgYWxsb2NhdGVzIGEgY3B1bWFzayB1c2luZyBgemFsbG9jX2NwdW1hc2tfdmFyYCAod2hpY2ggemVyb2VzIHRoZSBtZW1vcnkpIGFuZCBleHBsaWNpdGx5IGNsZWFycyBpdCB3aXRoIGBjcHVtYXNrX2NsZWFyYCBiZWZvcmUgdXNlLiBUaGUgY2hhbmdlcyB0byBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgYW5kIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAgaW52b2x2ZSBjb250cm9sIGZsb3cgYW5kIENQVSBtYXNrIGxvZ2ljIChlLmcuLCB1c2luZyBgaXJxX2RlZmF1bHRfYWZmaW5pdHlgIGluc3RlYWQgb2YgYG51bV9vbmxpbmVfY3B1cygpYCkuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGFuZCBubyBpbmZvLWxlYWtzIGludHJvZHVjZWQuIEFueSBwb3RlbnRpYWwgaXNzdWVzIChzdWNoIGFzIGEgZGl2aXNpb24gYnkgemVybyBpZiBgY3B1bWFza193ZWlnaHRgIHJldHVybnMgMCkgd291bGQgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCB0ZXN0aW5nIG9yIEtBU0FOL1VCU0FOLiBUaHVzLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBJUlEgYWZmaW5pdHkgaGFuZGxpbmcgaW4gdGhlIHN0bW1hYyBkcml2ZXIgYW5kIGNvcmUgSVJRL2NwdW1hc2sgY29kZS4gSXQgYWxsb2NhdGVzIGEgY3B1bWFzayB1c2luZyBgemFsbG9jX2NwdW1hc2tfdmFyYCAod2hpY2ggemVyb2VzIHRoZSBtZW1vcnkpIGFuZCBleHBsaWNpdGx5IGNsZWFycyBpdCB3aXRoIGBjcHVtYXNrX2NsZWFyYCBiZWZvcmUgdXNlLiBUaGUgY2hhbmdlcyB0byBgX19pcnFfYXBwbHlfYWZmaW5pdHlfaGludGAgYW5kIGBjcHVtYXNrX2xvY2FsX3NwcmVhZGAgaW52b2x2ZSBjb250cm9sIGZsb3cgYW5kIENQVSBtYXNrIGxvZ2ljIChlLmcuLCB1c2luZyBgaXJxX2RlZmF1bHRfYWZmaW5pdHlgIGluc3RlYWQgb2YgYG51bV9vbmxpbmVfY3B1cygpYCkuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMsIGFuZCBubyBpbmZvLWxlYWtzIGludHJvZHVjZWQuIEFueSBwb3RlbnRpYWwgaXNzdWVzIChzdWNoIGFzIGEgZGl2aXNpb24gYnkgemVybyBpZiBgY3B1bWFza193ZWlnaHRgIHJldHVybnMgMCkgd291bGQgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIGtlcm5lbCB0ZXN0aW5nIG9yIEtBU0FOL1VCU0FOLiBUaHVzLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lZWRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8fdp[1] Phase: Succeeded StartedAt: 2026-08-19 14:54:31 +0000 UTC FinishedAt: 2026-08-19 14:54:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8fdp[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-19 14:54:31 +0000 UTC FinishedAt: 2026-08-19 14:54:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8fdp[2] Phase: Succeeded StartedAt: 2026-08-19 14:54:31 +0000 UTC FinishedAt: 2026-08-19 18:41:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-19 14:54:31 +0000 UTC FinishedAt: 2026-08-19 18:41:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-19 14:54:31 +0000 UTC FinishedAt: 2026-08-19 14:54:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-19 14:54:31 +0000 UTC FinishedAt: 2026-08-19 14:54:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowc8fdp/series-workflowc8fdp-convert-artifact-3528757073/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-19 14:54:41 +0000 UTC FinishedAt: 2026-08-19 15:12:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-19 14:54:41 +0000 UTC FinishedAt: 2026-08-19 15:12:55 +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:*e53a6090-8cac-450a-b33d-b80a1355b3fb,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-workflowc8fdp/series-workflowc8fdp-convert-artifact-3528757073/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": "f3db6920-be21-4865-a609-c70ad2007f31", "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-workflowc8fdp/series-workflowc8fdp-build-action-2102733055/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-19 14:54:41 +0000 UTC FinishedAt: 2026-08-19 15:12:45 +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:*e53a6090-8cac-450a-b33d-b80a1355b3fb,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-workflowc8fdp/series-workflowc8fdp-convert-artifact-3528757073/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": "f3db6920-be21-4865-a609-c70ad2007f31", "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-workflowc8fdp/series-workflowc8fdp-build-action-2102733055/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-19 15:12:55 +0000 UTC FinishedAt: 2026-08-19 15:12:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-19 15:12:55 +0000 UTC FinishedAt: 2026-08-19 15:12:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-19 15:12:55 +0000 UTC FinishedAt: 2026-08-19 15:13:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-19 15:12:55 +0000 UTC FinishedAt: 2026-08-19 15:13:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowc8fdp/series-workflowc8fdp-convert-artifact-3957113124/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-19 15:13:06 +0000 UTC FinishedAt: 2026-08-19 15:15:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-19 15:13:06 +0000 UTC FinishedAt: 2026-08-19 15:15:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f3db6920-be21-4865-a609-c70ad2007f31,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-workflowc8fdp/series-workflowc8fdp-build-action-2102733055/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-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-19 15:15:43 +0000 UTC FinishedAt: 2026-08-19 15:15:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-19 15:15:43 +0000 UTC FinishedAt: 2026-08-19 15:15:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-19 15:15:43 +0000 UTC FinishedAt: 2026-08-19 15:35:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-19 15:15:43 +0000 UTC FinishedAt: 2026-08-19 15:35:48 +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:*e53a6090-8cac-450a-b33d-b80a1355b3fb,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-workflowc8fdp/series-workflowc8fdp-convert-artifact-3957113124/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": "2aa282c7-317b-4a83-8e59-8605446f3752", "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-workflowc8fdp/series-workflowc8fdp-build-action-1109079984/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-19 15:15:43 +0000 UTC FinishedAt: 2026-08-19 15:35: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:*e53a6090-8cac-450a-b33d-b80a1355b3fb,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-workflowc8fdp/series-workflowc8fdp-convert-artifact-3957113124/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": "2aa282c7-317b-4a83-8e59-8605446f3752", "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-workflowc8fdp/series-workflowc8fdp-build-action-1109079984/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-19 15:35:48 +0000 UTC FinishedAt: 2026-08-19 15:35:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-19 15:35:48 +0000 UTC FinishedAt: 2026-08-19 15:35:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-19 15:35:48 +0000 UTC FinishedAt: 2026-08-19 15:37:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-19 15:35:48 +0000 UTC FinishedAt: 2026-08-19 15:37:49 +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:*2aa282c7-317b-4a83-8e59-8605446f3752,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-workflowc8fdp/series-workflowc8fdp-build-action-1109079984/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-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-19 15:37:59 +0000 UTC FinishedAt: 2026-08-19 18:41:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-19 15:37:59 +0000 UTC FinishedAt: 2026-08-19 18:41:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"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:*f3db6920-be21-4865-a609-c70ad2007f31,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2aa282c7-317b-4a83-8e59-8605446f3752,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-workflowc8fdp/series-workflowc8fdp-build-action-2102733055/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-workflowc8fdp/series-workflowc8fdp-build-action-1109079984/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-19 15:37:59 +0000 UTC FinishedAt: 2026-08-19 15:38:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-19 15:37:59 +0000 UTC FinishedAt: 2026-08-19 15:38:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"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-workflowc8fdp/series-workflowc8fdp-convert-artifact-3235633837/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-19 15:37:59 +0000 UTC FinishedAt: 2026-08-19 15:37:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-19 15:37:59 +0000 UTC FinishedAt: 2026-08-19 15:37:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-19 15:37:59 +0000 UTC FinishedAt: 2026-08-19 15:37:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-19 15:38:09 +0000 UTC FinishedAt: 2026-08-19 18:41:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowc8fdp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__irq_apply_affinity_hint","cpumask_local_spread","stmmac_reinit_queues","stmmac_xdp_open"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"b49ab6ff-eb00-4be8-9fa2-8f5fd0594742","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-19 15:38:09 +0000 UTC FinishedAt: 2026-08-19 18:41:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f3db6920-be21-4865-a609-c70ad2007f31,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*2aa282c7-317b-4a83-8e59-8605446f3752,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-workflowc8fdp/series-workflowc8fdp-build-action-2102733055/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-workflowc8fdp/series-workflowc8fdp-build-action-1109079984/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-workflowc8fdp/series-workflowc8fdp-convert-artifact-3235633837/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,}