Name: series-workflownsd72 Phase: Succeeded StartedAt: 2026-08-05 11:21:15 +0000 UTC FinishedAt: 2026-08-05 15:31:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsd72[0] Phase: Succeeded StartedAt: 2026-08-05 11:21:15 +0000 UTC FinishedAt: 2026-08-05 11:40:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsd72[0].run-triage Phase: Succeeded StartedAt: 2026-08-05 11:21:15 +0000 UTC FinishedAt: 2026-08-05 11:40:54 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED" ], "series_id": "1dd4e712-c3f3-45a9-9ed1-0793f10110c7" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "qdisc_free_rcu", "qdisc_destroy", "qdisc_put", "qdisc_put_unlocked" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3FkaXNjX2ZyZWVfcmN1JiMzNDssCiAgICAmIzM0O3FkaXNjX2Rlc3Ryb3kmIzM0OywKICAgICYjMzQ7cWRpc2NfcHV0JiMzNDssCiAgICAmIzM0O3FkaXNjX3B1dF91bmxvY2tlZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgcGF0aCBvZiBgcWRpc2NfY3JlYXRlYCBhbmQgdGhlIGRlc3RydWN0aW9uIHBhdGggaW4gYF9fcWRpc2NfZGVzdHJveWAgdG8gdXNlIGEgbmV3bHkgaW50cm9kdWNlZCBgcWRpc2NfZnJlZV9yY3VgIGZ1bmN0aW9uIGluc3RlYWQgb2YgZnJlZWluZyB0aGUgcWRpc2MgZGlyZWN0bHkgb3IgY2FsbGluZyBgY2FsbF9yY3VgIG1hbnVhbGx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBSQ1UtcmVsYXRlZCBpc3N1ZS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGBSVE1fTkVXUURJU0NgIGFuZCBgUlRNX0RFTFFESVNDYCBtZXNzYWdlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTozOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDgzNDAyYzQxYzQyZGFjZjZjNjJjODAxNjQ0MDdmNDhlNjg5OTQzZWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDExOjM5OjI0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmggYi9pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oXG5pbmRleCA0NWExZThjNzgyMjJiLi5kNDU0NDJjOTI2MjFiIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaFxuQEAgLTc5Myw2ICYjNDM7NzkzLDcgQEAgc3RydWN0IFFkaXNjICpxZGlzY19hbGxvYyhzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICpkZXZfcXVldWUsXG4gXHRcdFx0ICBjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICpvcHMsXG4gXHRcdFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuIHZvaWQgcWRpc2NfZnJlZShzdHJ1Y3QgUWRpc2MgKnFkaXNjKTtcbiYjNDM7dm9pZCBxZGlzY19mcmVlX3JjdShzdHJ1Y3QgUWRpc2MgKnFkaXNjKTtcbiBzdHJ1Y3QgUWRpc2MgKnFkaXNjX2NyZWF0ZV9kZmx0KHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSxcbiBcdFx0XHRcdGNvbnN0IHN0cnVjdCBRZGlzY19vcHMgKm9wcywgdTMyIHBhcmVudGlkLFxuIFx0XHRcdFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2FwaS5jIGIvbmV0L3NjaGVkL3NjaF9hcGkuY1xuaW5kZXggNjY4YmNkNjBkMTgzZS4uMDQxYmQ2MDA3MjAxNiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfYXBpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfYXBpLmNcbkBAIC0xMzczLDcgJiM0MzsxMzczLDcgQEAgc3RhdGljIHN0cnVjdCBRZGlzYyAqcWRpc2NfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gZXJyX291dDM6XG4gXHRxZGlzY19sb2NrX3VuaW5pdChzY2gsIG9wcyk7XG4gXHRuZXRkZXZfcHV0KGRldiwgXHUwMDI2c2NoLVx1MDAzZWRldl90cmFja2VyKTtcbi1cdHFkaXNjX2ZyZWUoc2NoKTtcbiYjNDM7XHRxZGlzY19mcmVlX3JjdShzY2gpO1xuIGVycl9vdXQyOlxuIFx0YnBmX21vZHVsZV9wdXQob3BzLCBvcHMtXHUwMDNlb3duZXIpO1xuIGVycl9vdXQ6XG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmMgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1xuaW5kZXggZWYyYjRiZjUxNTY0MS4uODZkNTUxZmJhYmNjMiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1xuQEAgLTExMDMsNiAmIzQzOzExMDMsMTEgQEAgc3RhdGljIHZvaWQgcWRpc2NfZnJlZV9jYihzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG4gXHRxZGlzY19mcmVlKHEpO1xuIH1cbiBcbiYjNDM7dm9pZCBxZGlzY19mcmVlX3JjdShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxuJiM0Mzt7XG4mIzQzO1x0Y2FsbF9yY3UoXHUwMDI2cWRpc2MtXHUwMDNlcmN1LCBxZGlzY19mcmVlX2NiKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBfX3FkaXNjX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpxZGlzYylcbiB7XG4gXHRjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICAqb3BzID0gcWRpc2MtXHUwMDNlb3BzO1xuQEAgLTExMjcsNyAmIzQzOzExMzIsNyBAQCBzdGF0aWMgdm9pZCBfX3FkaXNjX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpxZGlzYylcbiBcbiBcdHRyYWNlX3FkaXNjX2Rlc3Ryb3kocWRpc2MpO1xuIFxuLVx0Y2FsbF9yY3UoXHUwMDI2cWRpc2MtXHUwMDNlcmN1LCBxZGlzY19mcmVlX2NiKTtcbiYjNDM7XHRxZGlzY19mcmVlX3JjdShxZGlzYyk7XG4gfVxuIFxuIHZvaWQgcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjM5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIRUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtxZGlzY19mcmVlX3JjdSYjMzQ7LAogICAgJiMzNDtxZGlzY19kZXN0cm95JiMzNDssCiAgICAmIzM0O3FkaXNjX3B1dCYjMzQ7LAogICAgJiMzNDtxZGlzY19wdXRfdW5sb2NrZWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIHBhdGggb2YgYHFkaXNjX2NyZWF0ZWAgYW5kIHRoZSBkZXN0cnVjdGlvbiBwYXRoIGluIGBfX3FkaXNjX2Rlc3Ryb3lgIHRvIHVzZSBhIG5ld2x5IGludHJvZHVjZWQgYHFkaXNjX2ZyZWVfcmN1YCBmdW5jdGlvbiBpbnN0ZWFkIG9mIGZyZWVpbmcgdGhlIHFkaXNjIGRpcmVjdGx5IG9yIGNhbGxpbmcgYGNhbGxfcmN1YCBtYW51YWxseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgUkNVLXJlbGF0ZWQgaXNzdWUuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBgUlRNX05FV1FESVNDYCBhbmQgYFJUTV9ERUxRRElTQ2AgbWVzc2FnZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4MzQwMmM0MWM0MmRhY2Y2YzYyYzgwMTY0NDA3ZjQ4ZTY4OTk0M2VjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgNSAxMTozOToyNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmggYi9pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oCmluZGV4IDQ1YTFlOGM3ODIyMmIuLmQ0NTQ0MmM5MjYyMWIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaApAQCAtNzkzLDYgJiM0Mzs3OTMsNyBAQCBzdHJ1Y3QgUWRpc2MgKnFkaXNjX2FsbG9jKHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSwKIAkJCSAgY29uc3Qgc3RydWN0IFFkaXNjX29wcyAqb3BzLAogCQkJICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spOwogdm9pZCBxZGlzY19mcmVlKHN0cnVjdCBRZGlzYyAqcWRpc2MpOwomIzQzO3ZvaWQgcWRpc2NfZnJlZV9yY3Uoc3RydWN0IFFkaXNjICpxZGlzYyk7CiBzdHJ1Y3QgUWRpc2MgKnFkaXNjX2NyZWF0ZV9kZmx0KHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSwKIAkJCQljb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICpvcHMsIHUzMiBwYXJlbnRpZCwKIAkJCQlzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spOwpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9hcGkuYyBiL25ldC9zY2hlZC9zY2hfYXBpLmMKaW5kZXggNjY4YmNkNjBkMTgzZS4uMDQxYmQ2MDA3MjAxNiAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9hcGkuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2FwaS5jCkBAIC0xMzczLDcgJiM0MzsxMzczLDcgQEAgc3RhdGljIHN0cnVjdCBRZGlzYyAqcWRpc2NfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiBlcnJfb3V0MzoKIAlxZGlzY19sb2NrX3VuaW5pdChzY2gsIG9wcyk7CiAJbmV0ZGV2X3B1dChkZXYsICZhbXA7c2NoLSZndDtkZXZfdHJhY2tlcik7Ci0JcWRpc2NfZnJlZShzY2gpOwomIzQzOwlxZGlzY19mcmVlX3JjdShzY2gpOwogZXJyX291dDI6CiAJYnBmX21vZHVsZV9wdXQob3BzLCBvcHMtJmd0O293bmVyKTsKIGVycl9vdXQ6CmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYyBiL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jCmluZGV4IGVmMmI0YmY1MTU2NDEuLjg2ZDU1MWZiYWJjYzIgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jCkBAIC0xMTAzLDYgJiM0MzsxMTAzLDExIEBAIHN0YXRpYyB2b2lkIHFkaXNjX2ZyZWVfY2Ioc3RydWN0IHJjdV9oZWFkICpoZWFkKQogCXFkaXNjX2ZyZWUocSk7CiB9CiAKJiM0Mzt2b2lkIHFkaXNjX2ZyZWVfcmN1KHN0cnVjdCBRZGlzYyAqcWRpc2MpCiYjNDM7ewomIzQzOwljYWxsX3JjdSgmYW1wO3FkaXNjLSZndDtyY3UsIHFkaXNjX2ZyZWVfY2IpOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIF9fcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKQogewogCWNvbnN0IHN0cnVjdCBRZGlzY19vcHMgICpvcHMgPSBxZGlzYy0mZ3Q7b3BzOwpAQCAtMTEyNyw3ICYjNDM7MTEzMiw3IEBAIHN0YXRpYyB2b2lkIF9fcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKQogCiAJdHJhY2VfcWRpc2NfZGVzdHJveShxZGlzYyk7CiAKLQljYWxsX3JjdSgmYW1wO3FkaXNjLSZndDtyY3UsIHFkaXNjX2ZyZWVfY2IpOwomIzQzOwlxZGlzY19mcmVlX3JjdShxZGlzYyk7CiB9CiAKIHZvaWQgcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjA4CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmtpbmcgU2NoZWR1bGVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZXhwZXJ0IGV5ZSBob25lcyBpbiBvbiBzb21lIGludGVyZXN0aW5nIGNoYW5nZXMgd2l0aGluIGBuZXQvc2NoZWQvc2NoX2FwaS5jYCBhbmQgYG5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jYC4gVGhlIGNvcmUgb2YgdGhlIHBhdGNoIHJldm9sdmVzIGFyb3VuZCBob3cgdGhleSYjMzk7cmUgaGFuZGxpbmcgZXJyb3IgcGF0aHMgd2l0aGluIGBxZGlzY19jcmVhdGVgLiBQcmV2aW91c2x5LCBpdCBsb29rcyBsaWtlIGBxZGlzY19mcmVlYCB3YXMgZGlyZWN0bHkgaW52b2tlZCBpbiBjZXJ0YWluIGVycm9yIHNjZW5hcmlvcy4gTm93LCB0aGUgcGF0Y2ggaW50ZWxsaWdlbnRseSBzd2FwcyB0aGF0IG91dCBmb3IgYHFkaXNjX2ZyZWVfcmN1YC4gVGhpcyBpcyBhIGNsZWFyIGluZGljYXRvciB0aGF0IHRoZSBkZXZlbG9wZXIgaXMgYWRkcmVzc2luZyBwb3RlbnRpYWwgY29uY3VycmVuY3kgaXNzdWVzLCBzcGVjaWZpY2FsbHkgYSBwb3NzaWJsZSB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpby4gVGhpcyBpcyBiZWNhdXNlIGBxZGlzY19mcmVlX3JjdWAgd2lsbCBjYWxsIGBjYWxsX3JjdWAgd2hpY2ggZ2l2ZXMgYW55IHJ1bm5pbmcgcHJvY2Vzc2VzIHRpbWUgdG8gZmluaXNoIHdpdGggdGhlIHFkaXNjLgoKVGhlIHBhdGNoIGFsc28gaW50cm9kdWNlcyBgcWRpc2NfZnJlZV9yY3VgIHdpdGhpbiBgc2NoX2dlbmVyaWMuY2AsIHdoaWNoLCBhcyBJIHN1c3BlY3RlZCwgZW5jYXBzdWxhdGVzIHRoZSBgY2FsbF9yY3VgIG1lY2hhbmlzbSwgY2FsbGluZyBgcWRpc2NfZnJlZV9jYmAuIEl0JiMzOTtzIGEgY2xlYW4gc2VwYXJhdGlvbiBvZiBjb25jZXJucywgYW5kIGl0JiMzOTtzIG5pY2UgdG8gc2VlIHRoaXMga2luZCBvZiBtZXRpY3Vsb3VzbmVzcy4gSW50ZXJlc3RpbmdseSwgdGhleSBhbHNvIGNoYW5nZWQgYF9fcWRpc2NfZGVzdHJveWAgdG8gdXNlIGBxZGlzY19mcmVlX3JjdShxZGlzYylgIGFzIHdlbGwuCgpUaGUgYHFkaXNjX2NyZWF0ZWAgZnVuY3Rpb24gaW4gYG5ldC9zY2hlZC9zY2hfYXBpLmNgIGlzIHRoZSByZWFsIHRhcmdldCBoZXJlLiBUaGV5IGFyZSBub3cgdXNpbmcgdGhlIGBlcnJfb3V0MzpgIGVycm9yIHBhdGggdG8gY2FsbCBgcWRpc2NfZnJlZV9yY3Uoc2NoKWAgaW5zdGVhZCBvZiB0aGUgb2xkIGBxZGlzY19mcmVlKHNjaClgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXgsIGFuZCBpdCYjMzk7cyBtYWtpbmcgdGhlIGNvZGUgbXVjaCBtb3JlIHJvYnVzdCBieSBhdm9pZGluZyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIHdoZW4gdGhlIHFkaXNjIGlzIGJlaW5nIGZyZWVkLgoKTGV0JiMzOTtzIHNlZeKApiBgcWRpc2NfY3JlYXRlYCBpcyByZWFjaGFibGUsIHJpZ2h0PyBPZiBjb3Vyc2UsIGl0JiMzOTtzIGNhbGxlZCBkdXJpbmcgcWRpc2MgY3JlYXRpb24sIHdoaWNoLCBpbiB0aGUgcmVhbCB3b3JsZCBtZWFucyB0aHJvdWdoIGBuZXRsaW5rIHRjIHFkaXNjIGFkZGAuIFRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCBtZXJpdHMgc29tZSBzZXJpb3VzIGZ1enppbmcuIEEgcmFjZSBjb25kaXRpb24gYXJvdW5kIHFkaXNjIGNyZWF0aW9uL2Rlc3RydWN0aW9uIGlzIHByaW1lIGZ1enppbmcgbWF0ZXJpYWwhCgpJIHNob3VsZCBhbHNvIGNoZWNrIHRoZSBjb25maWcgb3B0aW9ucy4gVGhpcyBzaG91bGQgYmUgcGFydCBvZiBgQ09ORklHX05FVF9TQ0hFRGAsIG9yIHNvbWV0aGluZyBzaW1pbGFyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29iai0uKnNjaF9hcGkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9NYWtlZmlsZT04PW9iai0kKENPTkZJR19JTkVUKVx0XHQmIzQzOz0gc2NoX2ZyYWcub1xubmV0L3NjaGVkL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX05FVF9TQ0hFRClcdFx0JiM0Mzs9IHNjaF9hcGkubyBzY2hfYmxhY2tob2xlLm9cbm5ldC9zY2hlZC9NYWtlZmlsZS0xMC1vYmotJChDT05GSUdfTkVUX0NMUylcdFx0JiM0Mzs9IGNsc19hcGkub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MjUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgY29uc2Npb3VzbmVzczoKCioqTmV0d29yayBTY2hlZHVsZXIgQ29uZmlndXJhdGlvbiBhbmQgRnVuY3Rpb24gQW5hbHlzaXMqKgoKUmlnaHQsIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBuZXR3b3JrIHNjaGVkdWxlciBzdHVmZi4gRmlyc3QgdGhpbmcmIzM5O3MgZmlyc3QsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBgQ09ORklHX05FVF9TQ0hFRGAgaXMgZW5hYmxlZCwgb2J2aW91c2x5LiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZS4gTm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBxZGlzY19jcmVhdGVgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgaXQmIzM5O3MgYmVpbmcgY2FsbGVkLCB3aGljaCBtZWFucyBJIHNob3VsZCBjaGVjayB3aGV0aGVyIGl0JiMzOTtzIHN0YXRpYyBvciBub3QuIFllcCwgaXQgKmlzKiBzdGF0aWMuIE9LLCBzbyBgcWRpc2NfY3JlYXRlYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMgd2l0aGluIGBuZXQvc2NoZWQvc2NoX2FwaS5jYC4gVGhhdCBtZWFucyBpdHMgc2NvcGUgaXMgbGltaXRlZCB0byB0aGF0IGZpbGUsIHdoaWNoIG1ha2VzIHRyYWNpbmcgaXRzIHVzYWdlIGEgYml0IG1vcmUgZm9jdXNlZCwgYnV0IGFsc28gbWVhbnMgSSBuZWVkIHRvIHBpbnBvaW50IGl0cyBjYWxsZXJzIHdpdGhpbiB0aGF0IHNhbWUgZmlsZSwgYG5ldC9zY2hlZC9zY2hfYXBpLmNgLCB0byByZWFsbHkgdW5kZXJzdGFuZCBob3cgaXQmIzM5O3Mgd29ya2luZy4gVGltZSB0byBleGFtaW5lIHRoYXQgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtxZGlzY19jcmVhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2FwaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfYXBpLmM9MTIyMj1zdGF0aWMgaW50IHFkaXNjX2Jsb2NrX2luZGV4ZXNfc2V0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICoqdGNhLFxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTI2MS1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTI2MjpzdGF0aWMgc3RydWN0IFFkaXNjICpxZGlzY19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTI2My1cdFx0XHRcdCAgc3RydWN0IG5ldGRldl9xdWV1ZSAqZGV2X3F1ZXVlLFxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTM2MS1cdHFkaXNjX2hhc2hfYWRkKHNjaCwgZmFsc2UpO1xubmV0L3NjaGVkL3NjaF9hcGkuYzoxMzYyOlx0dHJhY2VfcWRpc2NfY3JlYXRlKG9wcywgZGV2LCBwYXJlbnQpO1xubmV0L3NjaGVkL3NjaF9hcGkuYy0xMzYzLVxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTM2Ny1cdC8qIEV2ZW4gaWYgb3BzLVx1MDAzZWluaXQoKSBmYWlsZWQsIHdlIGNhbGwgb3BzLVx1MDAzZWRlc3Ryb3koKVxubmV0L3NjaGVkL3NjaF9hcGkuYzoxMzY4Olx0ICogbGlrZSBxZGlzY19jcmVhdGVfZGZsdCgpLlxubmV0L3NjaGVkL3NjaF9hcGkuYy0xMzY5LVx0ICovXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYz0xNTk5PXN0YXRpYyBpbnQgX190Y19tb2RpZnlfcWRpc2Moc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpuLFxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTc1My1cdFx0aWYgKGRldl9pbmdyZXNzX3F1ZXVlKGRldikpIHtcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTc1NDpcdFx0XHRxID0gcWRpc2NfY3JlYXRlKGRldiwgZGV2X2luZ3Jlc3NfcXVldWUoZGV2KSxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTc1NS1cdFx0XHRcdFx0IHRjbS1cdTAwM2V0Y21fcGFyZW50LCB0Y20tXHUwMDNldGNtX3BhcmVudCxcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE3NzAtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE3NzE6XHRcdHEgPSBxZGlzY19jcmVhdGUoZGV2LCBkZXZfcXVldWUsXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE3NzItXHRcdFx0XHQgdGNtLVx1MDAzZXRjbV9wYXJlbnQsIHRjbS1cdTAwM2V0Y21faGFuZGxlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNDkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBRZGlzYyBNb2RpZmljYXRpb24gUGF0aCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCBjYWxsIGNoYWluIGludm9sdmVkIGluIG1vZGlmeWluZyBhIHF1ZXVpbmcgZGlzY2lwbGluZSDigJMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBiZXR0ZXIuIE15IHN0YXJ0aW5nIHBvaW50IGlzIGBfX3RjX21vZGlmeV9xZGlzY2AsIGFuZCB0aGF0IHN1Z2dlc3RzIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhpcyBpcyB0aHJvdWdoIGB0Y19tb2RpZnlfcWRpc2NgLiBUaGlzIGxpa2VseSBtZWFucyB0aGVyZSYjMzk7cyBhIGxheWVyZWQgYXBwcm9hY2gsIG1heWJlIHdpdGggc29tZSBpbnRlcm5hbCBrZXJuZWwgZnVuY3Rpb25zLgoKTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBgdGNfbW9kaWZ5X3FkaXNjYCBmdW5jdGlvbi4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBsb3dlciBsYXllcnMuIEkgYWxzbyBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkZWZhdWx0IFFkaXNjIGlzIGNyZWF0ZWQgLSBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgYHFkaXNjX2NyZWF0ZV9kZmx0YC4gSSBoYXZlIGEgZmVlbGluZyBJJiMzOTtsbCBmaW5kIHNvbWUgaW50ZXJlc3RpbmcgbG9naWMgcmVsYXRlZCB0byBkZWZhdWx0IHBhcmFtZXRlcnMgYW5kIHNldHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjX21vZGlmeV9xZGlzYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9hcGkuYz0xNTkyPXN0YXRpYyBib29sIHJlcV9jaGFuZ2Uoc3RydWN0IG5sbXNnaGRyICpuKVxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTU5OC1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTU5OTpzdGF0aWMgaW50IF9fdGNfbW9kaWZ5X3FkaXNjKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbixcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTYwMC1cdFx0XHQgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayxcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTE3ODk9c3RhdGljIHZvaWQgcmVxdWVzdF9xZGlzY19tb2R1bGUoc3RydWN0IG5sYXR0ciAqa2luZClcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE4MTItICovXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE4MTM6c3RhdGljIGludCB0Y19tb2RpZnlfcWRpc2Moc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpuLFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xODE0LVx0XHRcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE4MzQtXHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTgzNTpcdGVyciA9IF9fdGNfbW9kaWZ5X3FkaXNjKHNrYiwgbiwgZXh0YWNrLCBkZXYsIHRjYSwgdGNtKTtcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTgzNi1cdG5ldGRldl91bmxvY2tfb3BzKGRldik7XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYz0yNTE0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRubF9tc2dfaGFuZGxlciBwc2NoZWRfcnRubF9tc2dfaGFuZGxlcnNbXSBfX2luaXRjb25zdCA9IHtcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjUxNTpcdHsubXNndHlwZSA9IFJUTV9ORVdRRElTQywgLmRvaXQgPSB0Y19tb2RpZnlfcWRpc2N9LFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNTE2LVx0ey5tc2d0eXBlID0gUlRNX0RFTFFESVNDLCAuZG9pdCA9IHRjX2dldF9xZGlzY30sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA5NQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDExNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqQW5hbHl6aW5nIHRoZSBgdGNfbW9kaWZ5X3FkaXNjYCBQYXRjaCoqCgpSaWdodCwgc28gYHRjX21vZGlmeV9xZGlzY2AgaXMgdGhlIGdhdGV3YXksIHRoZSBlbnRyeSBwb2ludCBmb3IgaGFuZGxpbmcgYSBuZXcgcXVldWVpbmcgZGlzY2lwbGluZSwgYSBgUlRNX05FV1FESVNDYCBtZXNzYWdlLiBUaGUgY3J1eCBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIGZvY3VzZWQgb24gaG93IHdlIGhhbmRsZSBlcnJvcnMgd2l0aGluIHRoZSBgcWRpc2NfY3JlYXRlYCBmdW5jdGlvbi4KClRvIHJlYWxseSBkaWcgaW50byB0aGlzLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZmFpbHVyZSBzY2VuYXJpb3Mgd2l0aGluIGBxZGlzY19jcmVhdGVgLiBXaGF0IGNvbmRpdGlvbnMgdHJpZ2dlciBhbiBlcnJvciB0aGVyZT8gVGhlIHBhdGNoIGlzIGNsZWFybHkgYWRkcmVzc2luZyB0aGlzIGVycm9yIHBhdGguCgpBbHNvLCBJIHNlZSBhIG5ldyBmdW5jdGlvbiBgcWRpc2NfZnJlZV9yY3VgIGludHJvZHVjZWQgaW4gYG5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jYC4gSW50ZXJlc3RpbmcuIEl0JiMzOTtzIGVpdGhlciBleHBvcnRlZCBvciBhdCBsZWFzdCBub3QgZGVjbGFyZWQgYXMgc3RhdGljLCBzbyBpdCYjMzk7cyBpbnRlbmRlZCB0byBiZSB1c2VkIGV4dGVybmFsbHkuIFRoYXQgcmFpc2VzIG15IGV5ZWJyb3dzLiBMZXQmIzM5O3MgbWFrZSBzdXJlIGl0IGlzIHdoYXQgSSB0aGluayBpdCBpcywgYSBmdW5jdGlvbiB0byBzYWZlbHkgZnJlZSBxZGlzY3MgdXNpbmcgUkNVLCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3FkaXNjX2ZyZWVfcmN1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9nZW5lcmljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTA5OT1zdGF0aWMgdm9pZCBxZGlzY19mcmVlX2NiKHN0cnVjdCByY3VfaGVhZCAqaGVhZClcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTA1LVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTEwNjp2b2lkIHFkaXNjX2ZyZWVfcmN1KHN0cnVjdCBRZGlzYyAqcWRpc2MpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTA3LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xMTExPXN0YXRpYyB2b2lkIF9fcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExMzQtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTM1Olx0cWRpc2NfZnJlZV9yY3UocWRpc2MpO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEzNi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2NzEKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYHFkaXNjX2ZyZWVfcmN1YCBWaXNpYmlsaXR5KioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIFNvbWV0aGluZyYjMzk7cyBub3QgcXVpdGUgYWRkaW5nIHVwLiBJJiMzOTttIGhpdHRpbmcgYSBzbmFnLCBhbmQgdGhlIGltbWVkaWF0ZSB0aG91Z2h0IGlzOiBpcyBgcWRpc2NfZnJlZV9yY3VgIGFjdHVhbGx5IGV4cG9ydGVkIHdpdGggYEVYUE9SVF9TWU1CT0xgPyBUaGF0JiMzOTtzIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gY29uZmlybS4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBhc3N1bXB0aW9uLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGNvcmUga2VybmVsIHN0cnVjdHVyZXMgYW5kIGhvdyBkaWZmZXJlbnQgbW9kdWxlcyBvciBzdWJzeXN0ZW1zIGNhbiBpbnRlcmFjdCB3aXRoIGVhY2ggb3RoZXIuIElmIGl0JiMzOTtzICpub3QqIGV4cG9ydGVkLCB0aGVuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoeSBhbmQsIG1vcmUgaW1wb3J0YW50bHksICpob3cqIHRoaXMgcGllY2Ugb2YgY29kZSBpcyBzdXBwb3NlZCB0byBiZSBhY2Nlc3NpYmxlIChvciBpZiB0aGUgYWNjZXNzIGlzIGludGVuZGVkIGF0IGFsbCkuIFRpbWUgdG8gZGlnIGRlZXBlciBhbmQgc2VlIGlmIEkmIzM5O20gbWlzc2luZyBzb21ldGhpbmcgb2J2aW91cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MLipxZGlzY19mcmVlX3JjdSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTkyNgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHJlYWRpbmcgYG5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jYCBhcm91bmQgdGhlIGBxZGlzY19mcmVlX3JjdWAgZnVuY3Rpb24sIHN1bW1hcml6ZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFFkaXNjIExpZmVjeWNsZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBpbnRyaWNhY2llcyBvZiB0aGUgZ2VuZXJpYyBxdWV1aW5nIGRpc2NpcGxpbmUgZnJhbWV3b3JrIGluIHRoZSBMaW51eCBrZXJuZWwuIExldCYjMzk7cyB6ZXJvIGluIG9uIGBuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY2AgYW5kIHNwZWNpZmljYWxseSBmb2N1cyBvbiB0aGUgYHFkaXNjX2ZyZWVfcmN1YCBmdW5jdGlvbi4gSSByZW1lbWJlciB0aGlzIGFyZWEgYmVpbmcgY3J1Y2lhbCBmb3IgcHJvcGVyIHJlc291cmNlIG1hbmFnZW1lbnQgYW5kIHByZXZlbnRpbmcgbWVtb3J5IGxlYWtzIHdpdGhpbiB0aGUgbmV0d29ya2luZyBzdWJzeXN0ZW0uIFRoaXMgZnVuY3Rpb24sIEkgYXNzdW1lLCBpcyB3aGVyZSB0aGUgZmluYWwgY2xlYW51cCBvZiBhIHF1ZXVpbmcgZGlzY2lwbGluZSAocWRpc2MpIGhhcHBlbnMgYmVmb3JlIGl0JiMzOTtzIGNvbXBsZXRlbHkgZGVhbGxvY2F0ZWQuCgpNeSBmaXJzdCB0aG91Z2h0IGlzIGFsd2F5cyBhYm91dCB0aGUgUkNVIChSZWFkLUNvcHktVXBkYXRlKSBhc3BlY3QuIEl0IG1ha2VzIHNlbnNlIHRoaXMgZnVuY3Rpb24gaXMgaW52b2x2ZWQgYmVjYXVzZSBxZGlzY3MgYXJlIG9mdGVuIGFjY2Vzc2VkIGNvbmN1cnJlbnRseSBieSBtdWx0aXBsZSB0aHJlYWRzIOKAkyBwYWNrZXQgcHJvY2Vzc2luZywgY29uZmlndXJhdGlvbiBjaGFuZ2VzLCBldGMuIFJDVSBhbGxvd3MgdXMgdG8gc2FmZWx5IGZyZWUgdGhlIHFkaXNjIGRhdGEgc3RydWN0dXJlIHdpdGhvdXQgZGlzcnVwdGluZyBhY3RpdmUgcmVhZGVycy4gU28sIGBxZGlzY19mcmVlX3JjdWAgaXMgbGlrZWx5IHRoZSBjdWxtaW5hdGlvbiBvZiB0aGUgZGUtcmVnaXN0cmF0aW9uIGFuZCBkcmFpbiBwcm9jZXNzLgoKSSYjMzk7bGwgYmUgbG9va2luZyB0byBzZWU6IFdoYXQmIzM5O3MgdGhlIGV4YWN0IHByb2NlZHVyZSB0aGlzIGZ1bmN0aW9uIHVzZXM/IERvZXMgaXQgcGVyZm9ybSB0aGUgZmluYWwgZGUtYWxsb2NhdGlvbiBpbW1lZGlhdGVseSBvciBzY2hlZHVsZSBpdCBmb3IgbGF0ZXIgZXhlY3V0aW9uLCBhZnRlciBhIGdyYWNlIHBlcmlvZCBhcyBkaWN0YXRlZCBieSBSQ1U/IFdoaWNoIGFzcGVjdHMgb2YgdGhlIHFkaXNjIGFyZSBmcmVlZCBoZXJlLCBhbmQgd2hpY2ggd2VyZSB0YWtlbiBjYXJlIG9mIGVhcmxpZXI/IFdoYXQmIzM5O3MgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIHVuZGVybHlpbmcgZGV2aWNlIGRyaXZlcj8gQXJlIHRoZXJlIHNwZWNpZmljIHNwaW5sb2NrcyBvciBvdGhlciBzeW5jaHJvbml6YXRpb24gbWVjaGFuaXNtcyBiZWluZyB1c2VkIHRvIGVuc3VyZSB0aHJlYWQgc2FmZXR5IGR1cmluZyB0aGlzIGNyaXRpY2FsIGRlLWFsbG9jYXRpb24gcGhhc2U/IEkmIzM5O2xsIGFsc28gY2hlY2sgZm9yIGFueSBzdWJ0bGUgY29ybmVyIGNhc2VzOiBXaGF0IGhhcHBlbnMgaWYgYSBwYWNrZXQgaXMgc3RpbGwgZW5xdWV1ZWQsIG9yIGlmIGEgY2hpbGQgcWRpc2MgaXMgbm90IHByb3Blcmx5IGRldGFjaGVkPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTEwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMTAwOlx0e1xuMTEwMTpcdFx0c3RydWN0IFFkaXNjICpxID0gY29udGFpbmVyX29mKGhlYWQsIHN0cnVjdCBRZGlzYywgcmN1KTtcbjExMDI6XHRcbjExMDM6XHRcdHFkaXNjX2ZyZWUocSk7XG4xMTA0Olx0fVxuMTEwNTpcdFxuMTEwNjpcdHZvaWQgcWRpc2NfZnJlZV9yY3Uoc3RydWN0IFFkaXNjICpxZGlzYylcbjExMDc6XHR7XG4xMTA4Olx0XHRjYWxsX3JjdShcdTAwMjZxZGlzYy1cdTAwM2VyY3UsIHFkaXNjX2ZyZWVfY2IpO1xuMTEwOTpcdH1cbjExMTA6XHRcbjExMTE6XHRzdGF0aWMgdm9pZCBfX3FkaXNjX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpxZGlzYylcbjExMTI6XHR7XG4xMTEzOlx0XHRjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICAqb3BzID0gcWRpc2MtXHUwMDNlb3BzO1xuMTExNDpcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHFkaXNjX2RldihxZGlzYyk7XG4xMTE1Olx0XG4xMTE2Olx0I2lmZGVmIENPTkZJR19ORVRfU0NIRURcbjExMTc6XHRcdHFkaXNjX2hhc2hfZGVsKHFkaXNjKTtcbjExMTg6XHRcbjExMTk6XHRcdHFkaXNjX3B1dF9zdGFiKHJ0bmxfZGVyZWZlcmVuY2UocWRpc2MtXHUwMDNlc3RhYikpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NjU3CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBoYXZpbmcgaXQ6CgoqKkRpZ2dpbmcgaW50byBLZXJuZWwgTW9kdWxlIFZpc2liaWxpdHkqKgoKSG1tLCB0aGlzIGZ1bmN0aW9uIGlzbiYjMzk7dCBleHBsaWNpdGx5IGV4cG9ydGVkLCBidXQgaXQmIzM5O3MgY2xlYXJseSBiZWluZyBhY2Nlc3NlZCBieSBgbmV0L3NjaGVkL3NjaF9hcGkuY2AuIE5vdywgd2h5IGlzIHRoYXQ/IEFoLCByaWdodCwgYmVjYXVzZSBib3RoIG9mIHRoZXNlIGZpbGVzIGFyZSBkZWVwIHdpdGhpbiB0aGUgY29yZSBrZXJuZWwsIG9yIG1heWJlIGBzY2hfZ2VuZXJpYy5jYCBpcyBpbiB0aGUgYG5ldC9zY2hlZC9gIGRpcmVjdG9yeS4gQnV0IHdhaXQsIHRoYXQgcmluZ3MgYSBiZWxsLi4uIGlzbiYjMzk7dCBgc2NoX2dlbmVyaWMuY2AgY29tcGlsZWQgaW50byB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrIGl0c2VsZj8gT2theSwgbGV0JiMzOTtzIGp1c3QgY29uZmlybSB0aGF0IGJ5IG9wZW5pbmcgdXAgdGhlIGBuZXQvc2NoZWQvTWFrZWZpbGVgIGFuZCBtYWtpbmcgc3VyZSB0aGF0IEkgYW0gdGhpbmtpbmcgY2xlYXJseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2NoX2dlbmVyaWMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL01ha2VmaWxlLTUtXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjpvYmoteVx0Oj0gc2NoX2dlbmVyaWMubyBzY2hfbXEub1xubmV0L3NjaGVkL01ha2VmaWxlLTctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5NzAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDaGFuZ2VzIGluIHRoZSBOZXR3b3JrIFNjaGVkdWxlciBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCwgYXMgSSB1bmRlcnN0YW5kIGl0LCBgc2NoX2dlbmVyaWMub2AgaXMgKmFsd2F5cyogYnVpbHQg4oCTIHRoYXQmIzM5O3MgYSBnaXZlbi4gQW5kIGBzY2hfYXBpLm9gIGRlcGVuZHMgb24gYENPTkZJR19ORVRfU0NIRURgIGJlaW5nIGVuYWJsZWQsIHdoaWNoIGlzIHN0YW5kYXJkLiBUaGlzIG1lYW5zIGBxZGlzY19mcmVlX3JjdWAgKmlzbiYjMzk7dCogZGVjbGFyZWQgc3RhdGljLiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIGFib3V0IGVycm9yIGhhbmRsaW5nIGFuZCByZXNvdXJjZSBjbGVhbnVwIHdpdGhpbiB0aGUgcXVldWluZyBkaXNjaXBsaW5lIGZyYW1ld29yay4KClNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSByZXdvcmtpbmcgdGhlIGVycm9yIHBhdGggaW4gYHFkaXNjX2NyZWF0ZWAgdG8gbGV2ZXJhZ2UgYHFkaXNjX2ZyZWVfcmN1YC4gTWFrZXMgc2Vuc2Ug4oCTIGJldHRlciB0byBoYXZlIGEgdW5pZmllZCBjbGVhbnVwIHBhdGguIEl0JiMzOTtzIGFsc28gY2hhbmdpbmcgaG93IGBfX3FkaXNjX2Rlc3Ryb3lgIGlzIGhhbmRsZWQgdG8gdXNlIGBxZGlzY19mcmVlX3JjdWAuIEFuZCBpZiBJIHJlbWVtYmVyIGNvcnJlY3RseSwgYF9fcWRpc2NfZGVzdHJveWAgaXMgY2FsbGVkIGJ5IGBxZGlzY19kZXN0cm95YCBpdHNlbGYuIEdpdmVuIHRoZXNlIGNoYW5nZXMgdG8gdGhlIGludGVybmFsIHdvcmtpbmdzLCBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBxZGlzY19kZXN0cm95YCBpdHNlbGYgdG8gYmUgY29tcGxldGVseSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtxZGlzY19kZXN0cm95JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9nZW5lcmljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTEwNj12b2lkIHFkaXNjX2ZyZWVfcmN1KHN0cnVjdCBRZGlzYyAqcWRpc2MpXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTExMC1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjExMTE6c3RhdGljIHZvaWQgX19xZGlzY19kZXN0cm95KHN0cnVjdCBRZGlzYyAqcWRpc2MpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTEyLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTMyLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTEzMzpcdHRyYWNlX3FkaXNjX2Rlc3Ryb3kocWRpc2MpO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEzNC1cbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTM3LVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTEzODp2b2lkIHFkaXNjX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpxZGlzYylcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExMzkte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExNDItXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTQzOlx0X19xZGlzY19kZXN0cm95KHFkaXNjKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExNDQtfVxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTExNDY9dm9pZCBxZGlzY19wdXQoc3RydWN0IFFkaXNjICpxZGlzYylcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTU0LVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTE1NTpcdF9fcWRpc2NfZGVzdHJveShxZGlzYyk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTU2LX1cbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xMTY0PXZvaWQgcWRpc2NfcHV0X3VubG9ja2VkKHN0cnVjdCBRZGlzYyAqcWRpc2MpXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTE2OS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjExNzA6XHRfX3FkaXNjX2Rlc3Ryb3kocWRpc2MpO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTE3MS1cdHJ0bmxfdW5sb2NrKCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4NDYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLZXJuZWwmIzM5O3MgVHJhZmZpYyBDb250cm9sIE1vZHVsZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZXNlIHFkaXNjIGZ1bmN0aW9ucyBhcmUgY2FsbGVkLiBJdCBzZWVtcyBgcWRpc2NfZGVzdHJveWAsIGBxZGlzY19wdXRgLCBhbmQgYHFkaXNjX3B1dF91bmxvY2tlZGAgYWxsIHVsdGltYXRlbHkgbGVhZCB0byBgX19xZGlzY19kZXN0cm95YC4gVGhlIHBhdGNoIGl0c2VsZiBhcHBlYXJzIHRvIHdvcmsgYW5kIGlzIGRlZmluaXRlbHkgYWNjZXNzaWJsZSB3aXRoaW4gdGhlIGNvZGUuCgpNeSBwcmltYXJ5IGludGVyZXN0IHJpZ2h0IG5vdyBsaWVzIHdpdGggdGhlIHN5bWJvbHMgYHRjX21vZGlmeV9xZGlzY2AsIGBxZGlzY19kZXN0cm95YCwgYHFkaXNjX3B1dGAsIGFuZCBgcWRpc2NfcHV0X3VubG9ja2VkYC4gQWgsIHJpZ2h0LCBgdGNfbW9kaWZ5X3FkaXNjYCBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIGBSVE1fTkVXUURJU0NgLCB3aGljaCBpcyBjcnVjaWFsLiBgcWRpc2NfY3JlYXRlYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMsIHNvIEkgY2FuJiMzOTt0IGRpcmVjdGx5IHRhcmdldCB0aGF0LgoKU2luY2UgSSBjYW4mIzM5O3QgZ2V0IHRvIGBxZGlzY19jcmVhdGVgLCBsZXQmIzM5O3MgZm9jdXMgb24gYHRjX21vZGlmeV9xZGlzY2AuIExldCBtZSBqdXN0IGRvdWJsZSBjaGVjayBpZiBgdGNfbW9kaWZ5X3FkaXNjYCBpcywgaW4gZmFjdCwgc3RhdGljLi4uIFllcCwgaXQgaXMuIAoKV2FpdCwgaXQmIzM5O3Mgc3RhdGljIGluIGBuZXQvc2NoZWQvc2NoX2FwaS5jYC4gTm93LCBJIG5lZWQgdG8gY2hlY2sgYG5ldC9zY2hlZC9zY2hfYXBpLmNgIGZvciBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGlzIHRvIHNlZSB3aGF0IEkgY2FuIGFjY2VzcyB0byBmdXJ0aGVyIG15IGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y19tb2RpZnlfcWRpc2MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2FwaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfYXBpLmM9MTU5Mj1zdGF0aWMgYm9vbCByZXFfY2hhbmdlKHN0cnVjdCBubG1zZ2hkciAqbilcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE1OTgtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE1OTk6c3RhdGljIGludCBfX3RjX21vZGlmeV9xZGlzYyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm4sXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE2MDAtXHRcdFx0ICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2ssXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYz0xNzg5PXN0YXRpYyB2b2lkIHJlcXVlc3RfcWRpc2NfbW9kdWxlKHN0cnVjdCBubGF0dHIgKmtpbmQpXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0xODEyLSAqL1xubmV0L3NjaGVkL3NjaF9hcGkuYzoxODEzOnN0YXRpYyBpbnQgdGNfbW9kaWZ5X3FkaXNjKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbixcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTgxNC1cdFx0XHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0xODM0LVx0bmV0ZGV2X2xvY2tfb3BzKGRldik7XG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE4MzU6XHRlcnIgPSBfX3RjX21vZGlmeV9xZGlzYyhza2IsIG4sIGV4dGFjaywgZGV2LCB0Y2EsIHRjbSk7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE4MzYtXHRuZXRkZXZfdW5sb2NrX29wcyhkZXYpO1xuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmM9MjUxND1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bmxfbXNnX2hhbmRsZXIgcHNjaGVkX3J0bmxfbXNnX2hhbmRsZXJzW10gX19pbml0Y29uc3QgPSB7XG5uZXQvc2NoZWQvc2NoX2FwaS5jOjI1MTU6XHR7Lm1zZ3R5cGUgPSBSVE1fTkVXUURJU0MsIC5kb2l0ID0gdGNfbW9kaWZ5X3FkaXNjfSxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjUxNi1cdHsubXNndHlwZSA9IFJUTV9ERUxRRElTQywgLmRvaXQgPSB0Y19nZXRfcWRpc2N9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODM1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBRZGlzYyBGdW5jdGlvbiBWaXNpYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoZSB2aXNpYmlsaXR5IG9mIHRoZXNlIGBxZGlzY2AgZnVuY3Rpb25zIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIHNjaGVkdWxpbmcgaW5mcmFzdHJ1Y3R1cmUuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSB0aGF0IGB0Y19tb2RpZnlfcWRpc2NgIGlzIGRlY2xhcmVkIGFzIHN0YXRpYy4gSW50ZXJlc3RpbmcuIEkgbmVlZCB0byBiZSBjYXJlZnVsIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IGZvciBleHRlcm5hbCB1c2UsIHdoaWNoIGlzIGNyaXRpY2FsIGluIHRoaXMgdHlwZSBvZiBuZXR3b3JrIGRlYnVnZ2luZy4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgYHFkaXNjX2Rlc3Ryb3lgIOKAkyB0aGF0JiMzOTtzIG5vbi1zdGF0aWMuIFNhbWUgZ29lcyBmb3IgYHFkaXNjX3B1dGAsIGFuZCBgcWRpc2NfcHV0X3VubG9ja2VkYC4gQW5kIGhvbGQgb24sIGhlcmUmIzM5O3MgYHFkaXNjX2ZyZWVfcmN1YCAtLSBhbHNvIG5vbi1zdGF0aWMuIEkgbmVlZCB0byBrZWVwIHRoZXNlIGRpc3RpbmN0aW9ucyBpbiBtaW5kLiBHaXZlbiB0aGF0LCBsZXQmIzM5O3MgcXVpY2tseSBzZWUgaWYgdGhlcmUgYXJlIG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIGBuZXQvc2NoZWQvc2NoX2FwaS5jYCB0aGF0IGNhbGwgYHFkaXNjX2NyZWF0ZWAuIE5vcGUsIGl0IGxvb2tzIGxpa2UgYHFkaXNjX2NyZWF0ZWAgaXMgZXhjbHVzaXZlbHkgY2FsbGVkIGJ5IGBfX3RjX21vZGlmeV9xZGlzY2AsIGFuZCB0aGF0JiMzOTtzIG9ubHkgY2FsbGVkIGJ5IGB0Y19tb2RpZnlfcWRpc2NgLgoKQWgsIGJ1dCAqd2FpdCosIGB0Y19tb2RpZnlfcWRpc2NgIGlzIHJlZ2lzdGVyZWQgYXMgYSBuZXRsaW5rIGhhbmRsZXIuIFRoaXMgc2ltcGxpZmllcyB0aGluZ3MgYSBiaXQuIFNvIHJlYWxseSwgdGhlIG1haW4gZm9jdXMgYmVjb21lcyB0aGUgdmlzaWJpbGl0eSBhbmQgaW50ZXJhY3Rpb24gb2YgdGhlIG90aGVyIGZ1bmN0aW9ucyAtIGBxZGlzY19kZXN0cm95YCwgYHFkaXNjX3B1dGAsIGBxZGlzY19wdXRfdW5sb2NrZWRgLCBhbmQgYHFkaXNjX2ZyZWVfcmN1YC4KCkFuZCBvbmUgbW9yZSB0aGluZywgaXQgbG9va3MgbGlrZSBgcWRpc2NfZnJlZV9yY3VgIGlzIGEgbW9yZSByZWNlbnQgYWRkaXRpb24sIHNvIGl0IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2suIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gaW4gYG5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jYCB0byBzZWUgaG93IGl0JiMzOTtzIGFjdHVhbGx5IHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3FkaXNjX2ZyZWVfcmN1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9nZW5lcmljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTA5OT1zdGF0aWMgdm9pZCBxZGlzY19mcmVlX2NiKHN0cnVjdCByY3VfaGVhZCAqaGVhZClcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTA1LVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTEwNjp2b2lkIHFkaXNjX2ZyZWVfcmN1KHN0cnVjdCBRZGlzYyAqcWRpc2MpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTA3LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xMTExPXN0YXRpYyB2b2lkIF9fcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExMzQtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTM1Olx0cWRpc2NfZnJlZV9yY3UocWRpc2MpO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEzNi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2ODcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6CgoqKkludGVybmFsIFJldmlldyBvZiBGdW5jdGlvbiBWaXNpYmlsaXR5KioKCkFscmlnaHQsIHNvIGBxZGlzY19mcmVlX3JjdWAgaXNuJiMzOTt0IHN0YXRpYywgd2hpY2ggaXMgZ29vZCB0byBrbm93LiBOb3csIGEgZm9sbG93LXVwIGlzIG5lY2Vzc2FyeS4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGBxZGlzY19jcmVhdGVfZGZsdGAgaGFzIGJlZW4gZGVjbGFyZWQgc3RhdGljLiBUaGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIGZ1bmN0aW9ucyYjMzk7IHZpc2liaWxpdHksIGFuZCB3aGV0aGVyIG9yIG5vdCB0aGVyZSBhcmUgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLCBhcmUgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBxdWV1aW5nIGRpc2NpcGxpbmUgb2JqZWN0cyBhcmUgYmVpbmcgbWFuYWdlZCBhbmQgYWNjZXNzZWQgdGhyb3VnaG91dCB0aGUgc3lzdGVtLiBJIGhhdmUgdG8gYXNzZXNzIGlmIHRoZXJlIGFyZSBhbnkgcG90ZW50aWFsIGRlc2lnbiBjb25zdHJhaW50cyBvciBjb25mbGljdHMuIEtub3dpbmcgdGhlIHNjb3BlIG9mIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGhlbHAgbWUgZ3Jhc3AgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIGFuZCBob3cgdGhlc2UgY3J1Y2lhbCBhc3BlY3RzIG9mIHBhY2tldCBzY2hlZHVsaW5nIGFyZSBpbXBsZW1lbnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cWRpc2NfY3JlYXRlX2RmbHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2dlbmVyaWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz05ODI9c3RydWN0IFFkaXNjICpxZGlzY19hbGxvYyhzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICpkZXZfcXVldWUsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTA0MC1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEwNDE6c3RydWN0IFFkaXNjICpxZGlzY19jcmVhdGVfZGZsdChzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICpkZXZfcXVldWUsXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDQyLVx0XHRcdFx0Y29uc3Qgc3RydWN0IFFkaXNjX29wcyAqb3BzLFxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEwNjctfVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTA2ODpFWFBPUlRfU1lNQk9MKHFkaXNjX2NyZWF0ZV9kZmx0KTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEwNjktXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTIxMj1zdGF0aWMgdm9pZCBhdHRhY2hfb25lX2RlZmF1bHRfcWRpc2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMjIzLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTIyNDpcdHFkaXNjID0gcWRpc2NfY3JlYXRlX2RmbHQoZGV2X3F1ZXVlLCBvcHMsIFRDX0hfUk9PVCwgTlVMTCk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMjI1LVx0aWYgKCFxZGlzYylcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xMjMzPXN0YXRpYyB2b2lkIGF0dGFjaF9kZWZhdWx0X3FkaXNjcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEyNDYtXHR9IGVsc2Uge1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTI0NzpcdFx0cWRpc2MgPSBxZGlzY19jcmVhdGVfZGZsdCh0eHEsIFx1MDAyNm1xX3FkaXNjX29wcywgVENfSF9ST09ULCBOVUxMKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEyNDgtXHRcdGlmIChxZGlzYykge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDM2MAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDEyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBxZGlzY19jcmVhdGVfZGZsdGAgRXhwb3J0KioKCk9rYXksIHNvIGBxZGlzY19jcmVhdGVfZGZsdGAgaXMgZXhwb3J0ZWQsIHRoYXQgbXVjaCBpcyBjbGVhci4gQnV0IGhhbmcgb24sIHRoaXMgcGF0Y2ggaXMgYWN0dWFsbHkgY2hhbmdpbmcgYHFkaXNjX2NyZWF0ZWAgaW4gYG5ldC9zY2hlZC9zY2hfYXBpLmNgLCBub3QgdGhlIGV4cG9ydGVkIGZ1bmN0aW9uIGRpcmVjdGx5LiBUaGF0JiMzOTtzIGEgYml0IG9kZC4gQWgsIHJpZ2h0LCBgcWRpc2NfY3JlYXRlYCBpcyBkZWNsYXJlZCAqc3RhdGljKiB3aXRoaW4gYG5ldC9zY2hlZC9zY2hfYXBpLmNgLiBIbW0sIHRoYXQgbWVhbnMgY2hhbmdlcyB0aGVyZSB3b24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IGFueXRoaW5nIG91dHNpZGUgdGhlIG1vZHVsZS4gVGhpcyByZXF1aXJlcyBmdXJ0aGVyIHNjcnV0aW55LgoKVGhlIG5leHQgc3RlcCBpcyB0byBzZWUgaWYgYW55IG90aGVyIG5vbi1zdGF0aWMgb3IgRVhQT1JUX1NZTUJPTCBmdW5jdGlvbnMgd2l0aGluIGBuZXQvc2NoZWQvc2NoX2FwaS5jYCBhcmUgYWZmZWN0ZWQuIFRoYXQgc2VjdGlvbiBvZiBjb2RlIGlzIHRoZSBtb3N0IGxpa2VseSBsb2NhdGlvbiBmb3IgdGhlIHJlbGV2YW50IGNoYW5nZXMsIGdpdmVuIHRoZSBpbml0aWFsIGRlc2NyaXB0aW9uLiBMZXQgbWUgZXhhbWluZSBgbmV0L3NjaGVkL3NjaF9hcGkuY2AgYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX10uKlxcKC4qXFwpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9hcGkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2FwaS5jLTExOC0vKiBQcm90ZWN0cyBsaXN0IG9mIHJlZ2lzdGVyZWQgVEMgbW9kdWxlcy4gSXQgaXMgcHVyZSBTTVAgbG9jay4gKi9cbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTE5OnN0YXRpYyBERUZJTkVfUldMT0NLKHFkaXNjX21vZF9sb2NrKTtcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTIwLVxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmM9MTI5PXN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzICpxZGlzY19iYXNlO1xuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTMyLVxubmV0L3NjaGVkL3NjaF9hcGkuYzoxMzM6aW50IHJlZ2lzdGVyX3FkaXNjKHN0cnVjdCBRZGlzY19vcHMgKnFvcHMpXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTEzNC17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNzQtfVxubmV0L3NjaGVkL3NjaF9hcGkuYzoxNzU6RVhQT1JUX1NZTUJPTChyZWdpc3Rlcl9xZGlzYyk7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE3Ni1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTc3OnZvaWQgdW5yZWdpc3Rlcl9xZGlzYyhzdHJ1Y3QgUWRpc2Nfb3BzICpxb3BzKVxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNzgte1xuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTk0LX1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTk1OkVYUE9SVF9TWU1CT0wodW5yZWdpc3Rlcl9xZGlzYyk7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE5Ni1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTk3LS8qIEdldCBkZWZhdWx0IHFkaXNjIGlmIG5vdCBvdGhlcndpc2Ugc3BlY2lmaWVkICovXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE5ODp2b2lkIHFkaXNjX2dldF9kZWZhdWx0KGNoYXIgKm5hbWUsIHNpemVfdCBsZW4pXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE5OS17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0yMDQtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjIwNTpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyAqcWRpc2NfbG9va3VwX2RlZmF1bHQoY29uc3QgY2hhciAqbmFtZSlcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjA2LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTIyMC0vKiBTZXQgbmV3IGRlZmF1bHQgcWRpc2MgdG8gdXNlICovXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjIyMTppbnQgcWRpc2Nfc2V0X2RlZmF1bHQoY29uc3QgY2hhciAqbmFtZSlcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjIyLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI1MC0vKiBTZXQgZGVmYXVsdCB2YWx1ZSBmcm9tIGtlcm5lbCBjb25maWcgKi9cbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjUxOnN0YXRpYyBpbnQgX19pbml0IHNjaF9kZWZhdWx0X3FkaXNjKHZvaWQpXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI1Mi17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNTQtfVxubmV0L3NjaGVkL3NjaF9hcGkuYzoyNTU6bGF0ZV9pbml0Y2FsbChzY2hfZGVmYXVsdF9xZGlzYyk7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI1Ni0jZW5kaWZcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI2Mi1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjYzOnN0YXRpYyBzdHJ1Y3QgUWRpc2MgKnFkaXNjX21hdGNoX2Zyb21fcm9vdChzdHJ1Y3QgUWRpc2MgKnJvb3QsIHUzMiBoYW5kbGUpXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI2NC17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0yODEtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjI4Mjp2b2lkIHFkaXNjX2hhc2hfYWRkKHN0cnVjdCBRZGlzYyAqcSwgYm9vbCBpbnZpc2libGUpXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI4My17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0yOTAtfVxubmV0L3NjaGVkL3NjaF9hcGkuYzoyOTE6RVhQT1JUX1NZTUJPTChxZGlzY19oYXNoX2FkZCk7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI5Mi1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjkzOnZvaWQgcWRpc2NfaGFzaF9kZWwoc3RydWN0IFFkaXNjICpxKVxubmV0L3NjaGVkL3NjaF9hcGkuYy0yOTQte1xuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjk5LX1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6MzAwOkVYUE9SVF9TWU1CT0wocWRpc2NfaGFzaF9kZWwpO1xubmV0L3NjaGVkL3NjaF9hcGkuYy0zMDEtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjMwMjpzdHJ1Y3QgUWRpc2MgKnFkaXNjX2xvb2t1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgaGFuZGxlKVxubmV0L3NjaGVkL3NjaF9hcGkuYy0zMDMte1xuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMzE5LVxubmV0L3NjaGVkL3NjaF9hcGkuYzozMjA6c3RydWN0IFFkaXNjICpxZGlzY19sb29rdXBfcmN1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiBoYW5kbGUpXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTMyMS17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYz0zMzk9c3RhdGljIHN0cnVjdCBRZGlzYyAqcWRpc2NfbGVhZihzdHJ1Y3QgUWRpc2MgKnAsIHUzMiBjbGFzc2lkLFxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMzU5LVxubmV0L3NjaGVkL3NjaF9hcGkuYzozNjA6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgKnFkaXNjX2xvb2t1cF9vcHMoc3RydWN0IG5sYXR0ciAqa2luZClcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMzYxLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTM5NC0gKi9cbm5ldC9zY2hlZC9zY2hfYXBpLmM6Mzk1OnN0YXRpYyBfX3U4IF9fZGV0ZWN0X2xpbmtsYXllcihzdHJ1Y3QgdGNfcmF0ZXNwZWMgKnIsIF9fdTMyICpydGFiKVxubmV0L3NjaGVkL3NjaF9hcGkuYy0zOTYte1xuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmM9NDE3PXN0YXRpYyBzdHJ1Y3QgcWRpc2NfcmF0ZV90YWJsZSAqcWRpc2NfcnRhYl9saXN0O1xubmV0L3NjaGVkL3NjaF9hcGkuYzo0MTg6c3RhdGljIERFRklORV9TUElOTE9DSyhxZGlzY19ydGFiX2xvY2spO1xubmV0L3NjaGVkL3NjaF9hcGkuYy00MTktXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTQyMD1zdHJ1Y3QgcWRpc2NfcmF0ZV90YWJsZSAqcWRpc2NfZ2V0X3J0YWIoc3RydWN0IHRjX3JhdGVzcGVjICpyLFxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtNDYwLX1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6NDYxOkVYUE9SVF9TWU1CT0wocWRpc2NfZ2V0X3J0YWIpO1xubmV0L3NjaGVkL3NjaF9hcGkuYy00NjItXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjQ2Mzp2b2lkIHFkaXNjX3B1dF9ydGFiKHN0cnVjdCBxZGlzY19yYXRlX3RhYmxlICp0YWIpXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTQ2NC17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy00ODYtfVxubmV0L3NjaGVkL3NjaF9hcGkuYzo0ODc6RVhQT1JUX1NZTUJPTChxZGlzY19wdXRfcnRhYik7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTQ4OC1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6NDg5OnN0YXRpYyBMSVNUX0hFQUQocWRpc2Nfc3RhYl9saXN0KTtcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNDkwLVxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmM9NDk2PXN0YXRpYyBzdHJ1Y3QgcWRpc2Nfc2l6ZV90YWJsZSAqcWRpc2NfZ2V0X3N0YWIoc3RydWN0IG5sYXR0ciAqb3B0LFxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtNTYwLVxubmV0L3NjaGVkL3NjaF9hcGkuYzo1NjE6dm9pZCBxZGlzY19wdXRfc3RhYihzdHJ1Y3QgcWRpc2Nfc2l6ZV90YWJsZSAqdGFiKVxubmV0L3NjaGVkL3NjaF9hcGkuYy01NjIte1xuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtNTcwLX1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6NTcxOkVYUE9SVF9TWU1CT0wocWRpc2NfcHV0X3N0YWIpO1xubmV0L3NjaGVkL3NjaF9hcGkuYy01NzItXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjU3MzpzdGF0aWMgaW50IHFkaXNjX2R1bXBfc3RhYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgcWRpc2Nfc2l6ZV90YWJsZSAqc3RhYilcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNTc0LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTU5MD12b2lkIF9fcWRpc2NfY2FsY3VsYXRlX3BrdF9sZW4oc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTYxNy1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6NjE4OnN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBxZGlzY193YXRjaGRvZyhzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTYxOS17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYz02MzA9dm9pZCBxZGlzY193YXRjaGRvZ19pbml0X2Nsb2NraWQoc3RydWN0IHFkaXNjX3dhdGNoZG9nICp3ZCwgc3RydWN0IFFkaXNjICpxZGlzYyxcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTYzNS19XG5uZXQvc2NoZWQvc2NoX2FwaS5jOjYzNjpFWFBPUlRfU1lNQk9MKHFkaXNjX3dhdGNoZG9nX2luaXRfY2xvY2tpZCk7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTYzNy1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6NjM4OnZvaWQgcWRpc2Nfd2F0Y2hkb2dfaW5pdChzdHJ1Y3QgcWRpc2Nfd2F0Y2hkb2cgKndkLCBzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxubmV0L3NjaGVkL3NjaF9hcGkuYy02Mzkte1xuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtNjQxLX1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6NjQyOkVYUE9SVF9TWU1CT0wocWRpc2Nfd2F0Y2hkb2dfaW5pdCk7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTY0My1cbm5ldC9zY2hlZC9zY2hfYXBpLmM9NjQ0PXZvaWQgcWRpc2Nfd2F0Y2hkb2dfc2NoZWR1bGVfcmFuZ2VfbnMoc3RydWN0IHFkaXNjX3dhdGNoZG9nICp3ZCwgdTY0IGV4cGlyZXMsXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy02NzEtfVxubmV0L3NjaGVkL3NjaF9hcGkuYzo2NzI6RVhQT1JUX1NZTUJPTChxZGlzY193YXRjaGRvZ19zY2hlZHVsZV9yYW5nZV9ucyk7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTY3My1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6Njc0OnZvaWQgcWRpc2Nfd2F0Y2hkb2dfY2FuY2VsKHN0cnVjdCBxZGlzY193YXRjaGRvZyAqd2QpXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTY3NS17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy02NzctfVxubmV0L3NjaGVkL3NjaF9hcGkuYzo2Nzg6RVhQT1JUX1NZTUJPTChxZGlzY193YXRjaGRvZ19jYW5jZWwpO1xubmV0L3NjaGVkL3NjaF9hcGkuYy02NzktXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjY4MDpzdGF0aWMgc3RydWN0IGhsaXN0X2hlYWQgKnFkaXNjX2NsYXNzX2hhc2hfYWxsb2ModW5zaWduZWQgaW50IG4pXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTY4MS17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy02OTMtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjY5NDp2b2lkIHFkaXNjX2NsYXNzX2hhc2hfZ3JvdyhzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IFFkaXNjX2NsYXNzX2hhc2ggKmNsaGFzaClcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNjk1LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTcyNy19XG5uZXQvc2NoZWQvc2NoX2FwaS5jOjcyODpFWFBPUlRfU1lNQk9MKHFkaXNjX2NsYXNzX2hhc2hfZ3Jvdyk7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTcyOS1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6NzMwOmludCBxZGlzY19jbGFzc19oYXNoX2luaXQoc3RydWN0IFFkaXNjX2NsYXNzX2hhc2ggKmNsaGFzaClcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNzMxLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTc0MS19XG5uZXQvc2NoZWQvc2NoX2FwaS5jOjc0MjpFWFBPUlRfU1lNQk9MKHFkaXNjX2NsYXNzX2hhc2hfaW5pdCk7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTc0My1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6NzQ0OnZvaWQgcWRpc2NfY2xhc3NfaGFzaF9kZXN0cm95KHN0cnVjdCBRZGlzY19jbGFzc19oYXNoICpjbGhhc2gpXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTc0NS17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy03NDctfVxubmV0L3NjaGVkL3NjaF9hcGkuYzo3NDg6RVhQT1JUX1NZTUJPTChxZGlzY19jbGFzc19oYXNoX2Rlc3Ryb3kpO1xubmV0L3NjaGVkL3NjaF9hcGkuYy03NDktXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTc1MD12b2lkIHFkaXNjX2NsYXNzX2hhc2hfaW5zZXJ0KHN0cnVjdCBRZGlzY19jbGFzc19oYXNoICpjbGhhc2gsXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy03NTktfVxubmV0L3NjaGVkL3NjaF9hcGkuYzo3NjA6RVhQT1JUX1NZTUJPTChxZGlzY19jbGFzc19oYXNoX2luc2VydCk7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTc2MS1cbm5ldC9zY2hlZC9zY2hfYXBpLmM9NzYyPXZvaWQgcWRpc2NfY2xhc3NfaGFzaF9yZW1vdmUoc3RydWN0IFFkaXNjX2NsYXNzX2hhc2ggKmNsaGFzaCxcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTc2Ny19XG5uZXQvc2NoZWQvc2NoX2FwaS5jOjc2ODpFWFBPUlRfU1lNQk9MKHFkaXNjX2NsYXNzX2hhc2hfcmVtb3ZlKTtcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNzY5LVxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtNzcyLSAqL1xubmV0L3NjaGVkL3NjaF9hcGkuYzo3NzM6c3RhdGljIHUzMiBxZGlzY19hbGxvY19oYW5kbGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNzc0LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTc4OS1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6NzkwOnZvaWQgcWRpc2NfdHJlZV9yZWR1Y2VfYmFja2xvZyhzdHJ1Y3QgUWRpc2MgKnNjaCwgaW50IG4sIGludCBsZW4pXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTc5MS17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy04MjctfVxubmV0L3NjaGVkL3NjaF9hcGkuYzo4Mjg6RVhQT1JUX1NZTUJPTChxZGlzY190cmVlX3JlZHVjZV9iYWNrbG9nKTtcbm5ldC9zY2hlZC9zY2hfYXBpLmMtODI5LVxubmV0L3NjaGVkL3NjaF9hcGkuYz04MzA9aW50IHFkaXNjX29mZmxvYWRfZHVtcF9oZWxwZXIoc3RydWN0IFFkaXNjICpzY2gsIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLFxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtODQ4LX1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6ODQ5OkVYUE9SVF9TWU1CT0wocWRpc2Nfb2ZmbG9hZF9kdW1wX2hlbHBlcik7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTg1MC1cbm5ldC9zY2hlZC9zY2hfYXBpLmM9ODUxPXZvaWQgcWRpc2Nfb2ZmbG9hZF9ncmFmdF9oZWxwZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IFFkaXNjICpzY2gsXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy04NzctfVxubmV0L3NjaGVkL3NjaF9hcGkuYzo4Nzg6RVhQT1JUX1NZTUJPTChxZGlzY19vZmZsb2FkX2dyYWZ0X2hlbHBlcik7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTg3OS1cbm5ldC9zY2hlZC9zY2hfYXBpLmM9ODgwPXZvaWQgcWRpc2Nfb2ZmbG9hZF9xdWVyeV9jYXBzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy04OTQtfVxubmV0L3NjaGVkL3NjaF9hcGkuYzo4OTU6RVhQT1JUX1NZTUJPTChxZGlzY19vZmZsb2FkX3F1ZXJ5X2NhcHMpO1xubmV0L3NjaGVkL3NjaF9hcGkuYy04OTYtXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYz0xMDcxPXN0YXRpYyB2b2lkIG5vdGlmeV9hbmRfZGVzdHJveShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0xMDgyLVxubmV0L3NjaGVkL3NjaF9hcGkuYzoxMDgzOnN0YXRpYyB2b2lkIHFkaXNjX2NsZWFyX25vbG9jayhzdHJ1Y3QgUWRpc2MgKnNjaClcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTA4NC17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYz0xNDM2PXN0YXRpYyBpbnQgY2hlY2tfbG9vcF9mbihzdHJ1Y3QgUWRpc2MgKnEsIHVuc2lnbmVkIGxvbmcgY2wsXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNDM4LVxubmV0L3NjaGVkL3NjaF9hcGkuYzoxNDM5OnN0YXRpYyBpbnQgY2hlY2tfbG9vcChzdHJ1Y3QgUWRpc2MgKnEsIHN0cnVjdCBRZGlzYyAqcCwgaW50IGRlcHRoKVxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNDQwLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTE0NTQ9c3RhdGljIGludFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxNDU1OmNoZWNrX2xvb3BfZm4oc3RydWN0IFFkaXNjICpxLCB1bnNpZ25lZCBsb25nIGNsLCBzdHJ1Y3QgcWRpc2Nfd2Fsa2VyICp3KVxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNDU2LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTE1NTU9c3RhdGljIGludCB0Y19nZXRfcWRpc2Moc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpuLFxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTU3OS1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTU4MDpzdGF0aWMgYm9vbCByZXFfY3JlYXRlX29yX3JlcGxhY2Uoc3RydWN0IG5sbXNnaGRyICpuKVxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNTgxLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE1ODUtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE1ODY6c3RhdGljIGJvb2wgcmVxX2NyZWF0ZV9leGNsdXNpdmUoc3RydWN0IG5sbXNnaGRyICpuKVxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNTg3LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE1OTEtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE1OTI6c3RhdGljIGJvb2wgcmVxX2NoYW5nZShzdHJ1Y3Qgbmxtc2doZHIgKm4pXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE1OTMte1xuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmM9MTU5OT1zdGF0aWMgaW50IF9fdGNfbW9kaWZ5X3FkaXNjKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbixcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE3ODgtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE3ODk6c3RhdGljIHZvaWQgcmVxdWVzdF9xZGlzY19tb2R1bGUoc3RydWN0IG5sYXR0ciAqa2luZClcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTc5MC17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYz0xODQxPXN0YXRpYyBpbnQgdGNfZHVtcF9xZGlzY19yb290KHN0cnVjdCBRZGlzYyAqcm9vdCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE4OTgtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE4OTk6c3RhdGljIGludCB0Y19kdW1wX3FkaXNjKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTkwMC17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYz0yMTA1PXN0cnVjdCB0Y2ZfYmluZF9hcmdzIHtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTIxMTEtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjIxMTI6c3RhdGljIGludCB0Y2Zfbm9kZV9iaW5kKHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCB2b2lkICpuLCBzdHJ1Y3QgdGNmX3dhbGtlciAqYXJnKVxubmV0L3NjaGVkL3NjaF9hcGkuYy0yMTEzLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTI0MTk9c3RhdGljIGludCBfX3RjX2R1bXBfdGNsYXNzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYixcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI0NDMtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjI0NDQ6c3RhdGljIGludCB0Y19kdW1wX3RjbGFzcyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI0NDUte1xuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjQ2Ny0jaWZkZWYgQ09ORklHX1BST0NfRlNcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjQ2ODpzdGF0aWMgaW50IHBzY2hlZF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KVxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNDY5LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI0NzctXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjI0Nzg6c3RhdGljIGludCBfX25ldF9pbml0IHBzY2hlZF9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI0Nzkte1xuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjQ4OC1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjQ4OTpzdGF0aWMgdm9pZCBfX25ldF9leGl0IHBzY2hlZF9uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI0OTAte1xuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjQ5My0jZWxzZVxubmV0L3NjaGVkL3NjaF9hcGkuYzoyNDk0OnN0YXRpYyBpbnQgX19uZXRfaW5pdCBwc2NoZWRfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNDk1LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI0OTgtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjI0OTk6c3RhdGljIHZvaWQgX19uZXRfZXhpdCBwc2NoZWRfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNTAwLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTI1MDQ9c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBwc2NoZWRfbmV0X29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI1MDktI2lmIElTX0VOQUJMRUQoQ09ORklHX01JVElHQVRJT05fUkVUUE9MSU5FKVxubmV0L3NjaGVkL3NjaF9hcGkuYzoyNTEwOkRFRklORV9TVEFUSUNfS0VZX0ZBTFNFKHRjX3NraXBfd3JhcHBlcl9hY3QpO1xubmV0L3NjaGVkL3NjaF9hcGkuYzoyNTExOkRFRklORV9TVEFUSUNfS0VZX0ZBTFNFKHRjX3NraXBfd3JhcHBlcl9jbHMpO1xubmV0L3NjaGVkL3NjaF9hcGkuYy0yNTEyLSNlbmRpZlxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmM9MjUxND1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bmxfbXNnX2hhbmRsZXIgcHNjaGVkX3J0bmxfbXNnX2hhbmRsZXJzW10gX19pbml0Y29uc3QgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNTI0LVxubmV0L3NjaGVkL3NjaF9hcGkuYzoyNTI1OnN0YXRpYyBpbnQgX19pbml0IHBrdHNjaGVkX2luaXQodm9pZClcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjUyNi17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNTQ5LVxubmV0L3NjaGVkL3NjaF9hcGkuYzoyNTUwOnN1YnN5c19pbml0Y2FsbChwa3RzY2hlZF9pbml0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU3OTEKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgUWRpc2MgTW9kaWZpY2F0aW9uIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgdG8gYXBwcm9hY2ggZnV6emluZyB0aGUgcWRpc2MgbW9kaWZpY2F0aW9uIGNvZGUuIFRoZSBzdGFydGluZyBwb2ludCBsb29rcyBsaWtlIGB0Y19tb2RpZnlfcWRpc2NgLCB3aGljaCBpcyB0cmlnZ2VyZWQgYnkgYSBuZXRsaW5rIG1lc3NhZ2UsIHNwZWNpZmljYWxseSBgUlRNX05FV1FESVNDYC4gVGhhdCBuZXRsaW5rIGhhbmRsZXIgaXMgc2V0IHVwIGR1cmluZyBgcGt0c2NoZWRfaW5pdGAuIFNvLCBzZW5kaW5nIGNyYWZ0ZWQgbmV0bGluayBtZXNzYWdlcyB0byBgUlRNX05FV1FESVNDYCBzZWVtcyBsaWtlIHRoZSBkaXJlY3Qgcm91dGUgdG8gZXhlcmNpc2UgdGhpcyBjb2RlLgoKSSBuZWVkIHRvIGlkZW50aWZ5IHNvbWUgdGFyZ2V0IHN5bWJvbHMgZm9yIHRoZSBmdXp6aW5nLiBMZXQmIzM5O3Mgc2VlLi4uIGBxZGlzY19kZXN0cm95YCwgYHFkaXNjX3B1dGAsIGBxZGlzY19wdXRfdW5sb2NrZWRgLCBgcWRpc2NfZnJlZV9yY3VgLCBhbmQgYHFkaXNjX2NyZWF0ZV9kZmx0YCBhbGwgbG9vayBpbnRlcmVzdGluZy4gV2FpdCBhIG1pbnV0ZSwgYHFkaXNjX2ZyZWVfcmN1YCBpcyB0aGUgbmV3IGZ1bmN0aW9uLCBzbyBsZXQmIzM5O3MgY2hlY2sgdGhhdCBmaXJzdC4gQSBxdWljayBjaGVjayBvZiB0aGUgc291cmNlIHRyZWUgY29uZmlybXMgdGhhdCBpdCByZXNpZGVzIGluIGBuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY2AuIE5vdywgSSBzaG91bGQgcHJvYmFibHkgYWxzbyBleGFtaW5lIHRoYXQgZmlsZSBmb3IgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIG9mIGludGVyZXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dLipcXCguKlxcKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTM3PWNvbnN0IHN0cnVjdCBRZGlzY19vcHMgKmRlZmF1bHRfcWRpc2Nfb3BzID0gXHUwMDI2cGZpZm9fZmFzdF9vcHM7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzozODpFWFBPUlRfU1lNQk9MKGRlZmF1bHRfcWRpc2Nfb3BzKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTM5LVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9NDA9dm9pZCBfX3RjZl9rZnJlZV9za2JfbGlzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnEsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNjItfVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NjM6RVhQT1JUX1NZTUJPTChfX3RjZl9rZnJlZV9za2JfbGlzdCk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02NC1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTY1PXN0YXRpYyB2b2lkIHFkaXNjX21heWJlX2NsZWFyX21pc3NlZChzdHJ1Y3QgUWRpc2MgKnEsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTgtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo5OTpzdGF0aWMgaW5saW5lIHN0cnVjdCBza19idWZmICpfX3NrYl9kZXF1ZXVlX2JhZF90eHEoc3RydWN0IFFkaXNjICpxKVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTAwLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMzQtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMzU6c3RhdGljIGlubGluZSBzdHJ1Y3Qgc2tfYnVmZiAqcWRpc2NfZGVxdWV1ZV9za2JfYmFkX3R4cShzdHJ1Y3QgUWRpc2MgKnEpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMzYte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTE0NT1zdGF0aWMgaW5saW5lIHZvaWQgcWRpc2NfZW5xdWV1ZV9za2JfYmFkX3R4cShzdHJ1Y3QgUWRpc2MgKnEsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTY4LVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTY5OnN0YXRpYyBpbmxpbmUgdm9pZCBkZXZfcmVxdWV1ZV9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpxKVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTcwLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0zNDQ9Ym9vbCBzY2hfZGlyZWN0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpxLFxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTQxNy0gKi9cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjQxODpzdGF0aWMgaW5saW5lIGJvb2wgcWRpc2NfcmVzdGFydChzdHJ1Y3QgUWRpc2MgKnEsIGludCAqcGFja2V0cywgaW50IGJ1ZGdldClcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTQxOS17XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNDM5LVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NDQwOnZvaWQgX19xZGlzY19ydW4oc3RydWN0IFFkaXNjICpxKVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNDQxLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy00NTctXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo0NTg6dW5zaWduZWQgbG9uZyBkZXZfdHJhbnNfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTQ1OS17XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNDcxLX1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjQ3MjpFWFBPUlRfU1lNQk9MKGRldl90cmFuc19zdGFydCk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy00NzMtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo0NzQ6c3RhdGljIHZvaWQgbmV0aWZfZnJlZXplX3F1ZXVlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNDc1LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy00OTQtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo0OTU6dm9pZCBuZXRpZl90eF9sb2NrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy00OTYte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTQ5OS19XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo1MDA6RVhQT1JUX1NZTUJPTChuZXRpZl90eF9sb2NrKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTUwMS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjUwMjpzdGF0aWMgdm9pZCBuZXRpZl91bmZyZWV6ZV9xdWV1ZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTUwMy17XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNTE3LVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NTE4OnZvaWQgbmV0aWZfdHhfdW5sb2NrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy01MTkte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTUyMi19XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo1MjM6RVhQT1JUX1NZTUJPTChuZXRpZl90eF91bmxvY2spO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNTI0LVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NTI1OnN0YXRpYyB2b2lkIGRldl93YXRjaGRvZyhzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTUyNi17XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNTkwLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NTkxOnZvaWQgbmV0ZGV2X3dhdGNoZG9nX3VwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy01OTIte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTYwOC19XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo2MDk6RVhQT1JUX1NZTUJPTF9HUEwobmV0ZGV2X3dhdGNoZG9nX3VwKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTYxMC1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjYxMTpzdGF0aWMgdm9pZCBuZXRkZXZfd2F0Y2hkb2dfZG93bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNjEyLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02MzAtICovXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo2MzE6dm9pZCBuZXRpZl9jYXJyaWVyX29uKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02MzIte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTY0Mi19XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo2NDM6RVhQT1JUX1NZTUJPTChuZXRpZl9jYXJyaWVyX29uKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTY0NC1cbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02NTAtICovXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo2NTE6dm9pZCBuZXRpZl9jYXJyaWVyX29mZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNjUyLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02NTktfVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NjYwOkVYUE9SVF9TWU1CT0wobmV0aWZfY2Fycmllcl9vZmYpO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNjYxLVxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTY2OS0gKi9cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjY3MDp2b2lkIG5ldGlmX2NhcnJpZXJfZXZlbnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTY3MS17XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNjc3LX1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjY3ODpFWFBPUlRfU1lNQk9MX0dQTChuZXRpZl9jYXJyaWVyX2V2ZW50KTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTY3OS1cbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz02ODU9c3RhdGljIGludCBub29wX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpxZGlzYyxcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02OTItXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo2OTM6c3RhdGljIHN0cnVjdCBza19idWZmICpub29wX2RlcXVldWUoc3RydWN0IFFkaXNjICpxZGlzYylcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTY5NC17XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9NzEyPXN0cnVjdCBRZGlzYyBub29wX3FkaXNjID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTczMS19O1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NzMyOkVYUE9SVF9TWU1CT0wobm9vcF9xZGlzYyk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy03MzMtXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9NzU0PWNvbnN0IHU4IHNjaF9kZWZhdWx0X3ByaW8yYmFuZFtUQ19QUklPX01BWCAmIzQzOyAxXSA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy03NTYtfTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjc1NzpFWFBPUlRfU1lNQk9MKHNjaF9kZWZhdWx0X3ByaW8yYmFuZCk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy03NTgtXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9Nzc5PXN0YXRpYyBpbnQgcGZpZm9fZmFzdF9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqcWRpc2MsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtODAyLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6ODAzOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcGZpZm9fZmFzdF9kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqcWRpc2MpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy04MDQte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTg0My1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjg0NDpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnBmaWZvX2Zhc3RfcGVlayhzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtODQ1LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy04NTgtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo4NTk6c3RhdGljIHZvaWQgcGZpZm9fZmFzdF9yZXNldChzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtODYwLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy04ODgtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo4ODk6c3RhdGljIGludCBwZmlmb19mYXN0X2R1bXAoc3RydWN0IFFkaXNjICpxZGlzYywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTg5MC17XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9OTAyPXN0YXRpYyBpbnQgcGZpZm9fZmFzdF9pbml0KHN0cnVjdCBRZGlzYyAqcWRpc2MsIHN0cnVjdCBubGF0dHIgKm9wdCxcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05MjYtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo5Mjc6c3RhdGljIHZvaWQgcGZpZm9fZmFzdF9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTI4LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz05NjQ9c3RydWN0IFFkaXNjX29wcyBwZmlmb19mYXN0X29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTk3Ny19O1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6OTc4OkVYUE9SVF9TWU1CT0wocGZpZm9fZmFzdF9vcHMpO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTc5LVxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTEwNDE9c3RydWN0IFFkaXNjICpxZGlzY19jcmVhdGVfZGZsdChzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICpkZXZfcXVldWUsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTA2Ny19XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMDY4OkVYUE9SVF9TWU1CT0wocWRpc2NfY3JlYXRlX2RmbHQpO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTA2OS1cbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDcxLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTA3Mjp2b2lkIHFkaXNjX3Jlc2V0KHN0cnVjdCBRZGlzYyAqcWRpc2MpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDczLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDg2LX1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEwODc6RVhQT1JUX1NZTUJPTChxZGlzY19yZXNldCk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDg4LVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTA4OTp2b2lkIHFkaXNjX2ZyZWUoc3RydWN0IFFkaXNjICpxZGlzYylcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEwOTAte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEwOTgtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMDk5OnN0YXRpYyB2b2lkIHFkaXNjX2ZyZWVfY2Ioc3RydWN0IHJjdV9oZWFkICpoZWFkKVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEwMC17XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEwNS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjExMDY6dm9pZCBxZGlzY19mcmVlX3JjdShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEwNy17XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTExMC1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjExMTE6c3RhdGljIHZvaWQgX19xZGlzY19kZXN0cm95KHN0cnVjdCBRZGlzYyAqcWRpc2MpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTEyLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTM3LVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTEzODp2b2lkIHFkaXNjX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpxZGlzYylcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExMzkte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExNDUtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTQ2OnZvaWQgcWRpc2NfcHV0KHN0cnVjdCBRZGlzYyAqcWRpc2MpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTQ3LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTU2LX1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjExNTc6RVhQT1JUX1NZTUJPTChxZGlzY19wdXQpO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTE1OC1cbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTYzLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTE2NDp2b2lkIHFkaXNjX3B1dF91bmxvY2tlZChzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTE2NS17XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTE3Mi19XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTczOkVYUE9SVF9TWU1CT0wocWRpc2NfcHV0X3VubG9ja2VkKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExNzQtXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTE3Nj1zdHJ1Y3QgUWRpc2MgKmRldl9ncmFmdF9xZGlzYyhzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICpkZXZfcXVldWUsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTE5NC19XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTk1OkVYUE9SVF9TWU1CT0woZGV2X2dyYWZ0X3FkaXNjKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExOTYtXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTIxMj1zdGF0aWMgdm9pZCBhdHRhY2hfb25lX2RlZmF1bHRfcWRpc2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMjMyLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTIzMzpzdGF0aWMgdm9pZCBhdHRhY2hfZGVmYXVsdF9xZGlzY3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEyMzQte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTEyNzQ9c3RhdGljIHZvaWQgdHJhbnNpdGlvbl9vbmVfcWRpc2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMjkwLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTI5MTp2b2lkIGRldl9hY3RpdmF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTI5Mi17XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTMxNi19XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMzE3OkVYUE9SVF9TWU1CT0woZGV2X2FjdGl2YXRlKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEzMTgtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMzE5OnN0YXRpYyB2b2lkIHFkaXNjX2RlYWN0aXZhdGUoc3RydWN0IFFkaXNjICpxZGlzYylcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEzMjAte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTEzMjc9c3RhdGljIHZvaWQgZGV2X2RlYWN0aXZhdGVfcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMzQyLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTM0MzpzdGF0aWMgYm9vbCBzb21lX3FkaXNjX2lzX2J1c3koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEzNDQte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEzNzctICovXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMzc4OnZvaWQgZGV2X2RlYWN0aXZhdGVfbWFueShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLCBib29sIHJlc2V0X25lZWRlZClcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEzNzkte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0MTgtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxNDE5OnZvaWQgZGV2X2RlYWN0aXZhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCByZXNldF9uZWVkZWQpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDIwLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDI2LX1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0Mjc6RVhQT1JUX1NZTUJPTChkZXZfZGVhY3RpdmF0ZSk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDI4LVxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTE0NDA9dm9pZCBkZXZfcWRpc2NfY2hhbmdlX3JlYWxfbnVtX3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTQ0OC1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0NDk6dm9pZCBtcV9jaGFuZ2VfcmVhbF9udW1fdHgoc3RydWN0IFFkaXNjICpzY2gsIHVuc2lnbmVkIGludCBuZXdfcmVhbF90eClcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0NTAte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0NzAtfVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTQ3MTpFWFBPUlRfU1lNQk9MKG1xX2NoYW5nZV9yZWFsX251bV90eCk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDcyLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTQ3MzppbnQgZGV2X3FkaXNjX2NoYW5nZV90eF9xdWV1ZV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0NzQte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTE0OTU9c3RhdGljIHZvaWQgZGV2X2luaXRfc2NoZWR1bGVyX3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTUwNC1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE1MDU6dm9pZCBkZXZfaW5pdF9zY2hlZHVsZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1MDYte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1MTQtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxNTE1OnZvaWQgZGV2X3NodXRkb3duKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNTE2LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNTQ4LSAqL1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTU0OTpzdGF0aWMgdm9pZCBwc2NoZWRfcmF0ZWNmZ19wcmVjb21wdXRlX18odTY0IHJhdGUsIHUzMiAqbXVsdCwgdTggKnNoaWZ0KVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTU1MC17XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTU2OD12b2lkIHBzY2hlZF9yYXRlY2ZnX3ByZWNvbXB1dGUoc3RydWN0IHBzY2hlZF9yYXRlY2ZnICpyLFxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1NzgtfVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTU3OTpFWFBPUlRfU1lNQk9MKHBzY2hlZF9yYXRlY2ZnX3ByZWNvbXB1dGUpO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTU4MC1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE1ODE6dm9pZCBwc2NoZWRfcHBzY2ZnX3ByZWNvbXB1dGUoc3RydWN0IHBzY2hlZF9wa3RyYXRlICpyLCB1NjQgcGt0cmF0ZTY0KVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTU4Mi17XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTU4NS19XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxNTg2OkVYUE9SVF9TWU1CT0wocHNjaGVkX3Bwc2NmZ19wcmVjb21wdXRlKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1ODctXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xNTg4PXZvaWQgbWluaV9xZGlzY19wYWlyX3N3YXAoc3RydWN0IG1pbmlfUWRpc2NfcGFpciAqbWluaXFwLFxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE2MjQtfVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTYyNTpFWFBPUlRfU1lNQk9MKG1pbmlfcWRpc2NfcGFpcl9zd2FwKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE2MjYtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xNjI3PXZvaWQgbWluaV9xZGlzY19wYWlyX2Jsb2NrX2luaXQoc3RydWN0IG1pbmlfUWRpc2NfcGFpciAqbWluaXFwLFxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE2MzItfVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTYzMzpFWFBPUlRfU1lNQk9MKG1pbmlfcWRpc2NfcGFpcl9ibG9ja19pbml0KTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE2MzQtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xNjM1PXZvaWQgbWluaV9xZGlzY19wYWlyX2luaXQoc3RydWN0IG1pbmlfUWRpc2NfcGFpciAqbWluaXFwLCBzdHJ1Y3QgUWRpc2MgKnFkaXNjLFxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE2NDUtfVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTY0NjpFWFBPUlRfU1lNQk9MKG1pbmlfcWRpc2NfcGFpcl9pbml0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExOTEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE5ldHdvcmsgU2NoZWR1bGVyIENsZWFudXAgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBuZXR3b3JrIHNjaGVkdWxlciBmdW5jdGlvbnMuIEl0IHNlZW1zIHRoYXQgYHFkaXNjX2ZyZWVfcmN1YCwgYHFkaXNjX2ZyZWVgLCBgcWRpc2NfZGVzdHJveWAsIGBxZGlzY19wdXRgLCBhbmQgYHFkaXNjX3B1dF91bmxvY2tlZGAgYXJlIGFsbCBub24tc3RhdGljLiBJbnRlcmVzdGluZy4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIHN1c3BlY3QgdGhpcyBtZWFucyB0aGV5JiMzOTtyZSBpbnRlbmRlZCB0byBiZSBjYWxsYWJsZSBmcm9tIG91dHNpZGUgdGhlIGltbWVkaWF0ZSBtb2R1bGUuIEkgdGhpbmsgd2UgY2FuIGZvY3VzIG91ciBhdHRlbnRpb24gZm9yIG5vdyBvbiBgcWRpc2NfZnJlZV9yY3VgIGFuZCBgcWRpc2NfZGVzdHJveWAgYXMgbGlrZWx5IGNhbmRpZGF0ZXMgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgbmV0d29yayBzY2hlZHVsZXIsIHNvIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9uIGhlcmUgaXMgYWxtb3N0IGNlcnRhaW5seSBgQ09ORklHX05FVF9TQ0hFRGAuIE5vdyBJIG5lZWQgdG8gY2hlY2sgd2hldGhlciBgQ09ORklHX05FVF9TQ0hFRGAgaGFzIGFueSBkZXBlbmRlbmNpZXMuIFRoYXQmIzM5O3MgdGhlIG5leHQgbG9naWNhbCBzdGVwLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wYWN0IG9uIHRoZSBsYXJnZXIgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX1NDSEVEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWctNS1cbm5ldC9zY2hlZC9LY29uZmlnOjY6bWVudWNvbmZpZyBORVRfU0NIRURcbm5ldC9zY2hlZC9LY29uZmlnLTctXHRib29sIFwmIzM0O1FvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTU4NQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkV4YW1pbmluZyBLZXJuZWwgQ29uZmlndXJhdGlvbiBmb3IgU2NoZWR1bGluZyBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZywgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIGl0JiMzOTtzIHBydWRlbnQgdG8gY29uZmlybSB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgZm9yIGBORVRfU0NIRURgLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIG5ldHdvcmsgc2NoZWR1bGluZyBoZXJlLCBhIGNvcmUgcGFydCBvZiB0aGUga2VybmVsJiMzOTtzIHRyYWZmaWMgc2hhcGluZyBhbmQgcXVldWluZyBtZWNoYW5pc21zLiBCZXN0IHRvIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgbmV0L3NjaGVkL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIGFsbCB0aG9zZSBsb3dlci1sZXZlbCBkZXBlbmRlbmNpZXMgYXJlIGRlZmluZWQuIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB3aGF0IG90aGVyIGZlYXR1cmVzIG9yIG1vZHVsZXMgKm11c3QqIGJlIGVuYWJsZWQgb3IgY29uZmlndXJlZCBhcHByb3ByaWF0ZWx5IGZvciBgTkVUX1NDSEVEYCB0byBldmVuIGJlIGNvbnNpZGVyZWQuIEFyZSB3ZSB0YWxraW5nIGFib3V0IHNwZWNpZmljIG5ldHdvcmsgc3RhY2sgb3B0aW9ucywgY2VydGFpbiBoYXJkd2FyZSBkcml2ZXJzLCBvciBwZXJoYXBzIGEgcmVxdWlyZW1lbnQgZm9yIHBhcnRpY3VsYXIgUW9TIHNldHRpbmdzPyBJIG5lZWQgdG8ga25vdyB3aGVyZSBpdCBzdGFuZHMgd2l0aGluIHRoZSBjb25maWd1cmF0aW9uIG1hdHJpeC4gVGhpcyBlYXJseSBzYW5pdHkgY2hlY2sgd2lsbCBpbmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwcyBhbmQgYXZvaWRzIHN1cnByaXNlcyBsYXRlciBvbi4gSXQmIzM5O2xsIGFsc28gbGlrZWx5IGdpdmUgbWUgaGludHMgb24gaG93IG15IGN1cnJlbnQgcHJvamVjdCBtaWdodCBiZSBhZmZlY3RlZC4gR290dGEgbWFwIHRoZSBsYW5kc2NhcGUgYmVmb3JlIG1vdmluZyBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgVHJhZmZpYyBjb250cm9sIGNvbmZpZ3VyYXRpb24uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgTkVUX1NDSEVEXG4gICA3Olx0XHRib29sIFwmIzM0O1FvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1wmIzM0O1xuICAgODpcdFx0c2VsZWN0IE5FVF9TQ0hfRklGT1xuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBXaGVuIHRoZSBrZXJuZWwgaGFzIHNldmVyYWwgcGFja2V0cyB0byBzZW5kIG91dCBvdmVyIGEgbmV0d29ya1xuICAxMTpcdFx0ICBkZXZpY2UsIGl0IGhhcyB0byBkZWNpZGUgd2hpY2ggb25lcyB0byBzZW5kIGZpcnN0LCB3aGljaCBvbmVzIHRvXG4gIDEyOlx0XHQgIGRlbGF5LCBhbmQgd2hpY2ggb25lcyB0byBkcm9wLiBUaGlzIGlzIHRoZSBqb2Igb2YgdGhlIHF1ZXVlaW5nXG4gIDEzOlx0XHQgIGRpc2NpcGxpbmVzLCBzZXZlcmFsIGRpZmZlcmVudCBhbGdvcml0aG1zIGZvciBob3cgdG8gZG8gdGhpc1xuICAxNDpcdFx0ICBcJiMzNDtmYWlybHlcJiMzNDsgaGF2ZSBiZWVuIHByb3Bvc2VkLlxuICAxNTpcdFxuICAxNjpcdFx0ICBJZiB5b3Ugc2F5IE4gaGVyZSwgeW91IHdpbGwgZ2V0IHRoZSBzdGFuZGFyZCBwYWNrZXQgc2NoZWR1bGVyLCB3aGljaFxuICAxNzpcdFx0ICBpcyBhIEZJRk8gKGZpcnN0IGNvbWUsIGZpcnN0IHNlcnZlZCkuIElmIHlvdSBzYXkgWSBoZXJlLCB5b3Ugd2lsbCBiZVxuICAxODpcdFx0ICBhYmxlIHRvIGNob29zZSBmcm9tIGFtb25nIHNldmVyYWwgYWx0ZXJuYXRpdmUgYWxnb3JpdGhtcyB3aGljaCBjYW5cbiAgMTk6XHRcdCAgdGhlbiBiZSBhdHRhY2hlZCB0byBkaWZmZXJlbnQgbmV0d29yayBkZXZpY2VzLiBUaGlzIGlzIHVzZWZ1bCBmb3JcbiAgMjA6XHRcdCAgZXhhbXBsZSBpZiBzb21lIG9mIHlvdXIgbmV0d29yayBkZXZpY2VzIGFyZSByZWFsIHRpbWUgZGV2aWNlcyB0aGF0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMTU3CgkJCQkJCQlvdXRwdXQ6IDE3NgoJCQkJCQkJdGhvdWdodHM6IDM4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYE5FVF9TQ0hFRGAgQ29uZmlndXJhdGlvbiBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb24gaGVyZSBpcyBgTkVUX1NDSEVEYC4gTGV0IG1lIHN1bW1hcml6ZSBteSBmaW5kaW5ncyBmb3IgdGhpcyBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXQuIFRoZSBwYXRjaCBzZWVtcyBpbnRlcmVzdGluZyBiZWNhdXNlIGl0IHRvdWNoZXMgb24gY3JpdGljYWwgcmVzb3VyY2UgbWFuYWdlbWVudCB3aXRoaW4gdGhlIG5ldHdvcmsgc2NoZWR1bGluZyBzdWJzeXN0ZW0uCgpIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzczogVGhlIG1vc3QgaW1wb3J0YW50IHRoaW5nIGlzIHRoYXQgYFdvcnRoRnV6emluZ2AgaXMgYHRydWVgLCB3aGljaCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuCgpUaGUgY29yZSBvZiB0aGlzIHJldm9sdmVzIGFyb3VuZCB0aGVzZSBzeW1ib2xzOiBgcWRpc2NfZnJlZV9yY3VgLCBgcWRpc2NfZGVzdHJveWAsIGBxZGlzY19wdXRgLCBhbmQgYHFkaXNjX3B1dF91bmxvY2tlZGAuCgpUaGUgY3JpdGljYWwgcmVhc29uaW5nIGJlaGluZCBzZWxlY3RpbmcgdGhlc2Ugc3ltYm9scyBpcyB0aGUgcGF0Y2gmIzM5O3MgbW9kaWZpY2F0aW9uIG9mIHRoZSBlcnJvciBwYXRoIG9mIGBxZGlzY19jcmVhdGVgLiBUaGUgb3JpZ2luYWwgYHFkaXNjX2ZyZWVgIGlzIHJlcGxhY2VkIHdpdGggYHFkaXNjX2ZyZWVfcmN1YCwgYW5kIGBfX3FkaXNjX2Rlc3Ryb3lgIGlzIHVwZGF0ZWQgdG8gdXRpbGl6ZSBgcWRpc2NfZnJlZV9yY3VgIGFzIHdlbGwuIFRoaXMgc3Vic3RpdHV0aW9uIHN1Z2dlc3RzIGEgZml4IGZvciBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByYWNlIGNvbmRpdGlvbiwgYWRkcmVzc2luZyBzY2VuYXJpb3Mgd2hlcmUgUkNVIChSZWFkLUNvcHktVXBkYXRlKSBzZW1hbnRpY3Mgd2VyZSByZXF1aXJlZCBidXQgbm90IHByZXZpb3VzbHkgdXNlZC4gVGhlIGNvZGUgYXBwZWFycyB0byBiZSByZWFjaGFibGUgdmlhIG5ldGxpbmsgYFJUTV9ORVdRRElTQ2AgbWVzc2FnZXMuIFRoaXMgbWFrZXMgaXQgYW4gZXNwZWNpYWxseSBhcHBlYWxpbmcgdGFyZ2V0LgoKVGhlIGFkZGVkIGBxZGlzY19mcmVlX3JjdWAgaXMgYSBrZXkgZm9jdXMgYmVjYXVzZSBpdCYjMzk7cyBuZXcgYW5kIGxpa2VseSBoYXMgc29tZSBpbnRlcmVzdGluZyBjb2RlIHBhdGhzLiBgcWRpc2NfZGVzdHJveWAgaXMgbW9kaWZpZWQgdG8gdXNlIGl0LiBOb3csIGxldCYjMzk7cyBqdXN0IGRvIGEgcXVpY2sgY2hlY2sgdG8gc2VlIGlmIGBxZGlzY19jcmVhdGVgIGlzIGlubGluZWQsIG9yIHN0YXRpY2FsbHkgZGVmaW5lZC4gSXQgaXMgc3RhdGljLiBgdGNfbW9kaWZ5X3FkaXNjYCBpcyB0aGUgbmV0bGluayBoYW5kbGVyLCBhbHNvIHN0YXRpYy4KCkkmIzM5O20gY29uZmlkZW50IGluIHRoZSBpbml0aWFsIHN5bWJvbHMsIHNvIEkgdGhpbmsgYWRkaW5nIGBxZGlzY19mcmVlX3JjdWAsIGBxZGlzY19kZXN0cm95YCwgYHFkaXNjX3B1dGAsIGFuZCBgcWRpc2NfcHV0X3VubG9ja2VkYCBhcyBmb2N1cyBzeW1ib2xzIHdpbGwgYmUgY29ycmVjdC4KCk9uZSBsYXN0IGNoZWNrOiBJJiMzOTtsbCBxdWlja2x5IHZlcmlmeSB0aGF0IGBxZGlzY19mcmVlX3JjdWAgaXMgZGVmaW5pdGVseSBkZWZpbmVkIGluIGBuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY2AgYXMgYHZvaWQgcWRpc2NfZnJlZV9yY3Uoc3RydWN0IFFkaXNjICpxZGlzYylgIHRvIG1ha2Ugc3VyZSBpdCYjMzk7cyBub3QgYmVpbmcgaW5saW5lZC4gWWVzLCB0aGF0JiMzOTtzIGNvcnJlY3QuCgpBbHJpZ2h0LCBJJiMzOTttIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoZXNlIHZhbHVlcyBub3cuIFRoaXMgc2VlbXMgbGlrZSBhIHByb21pc2luZyBwYXRoIGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cWRpc2NfZnJlZV9yY3UmIzM0OywKICAgICYjMzQ7cWRpc2NfZGVzdHJveSYjMzQ7LAogICAgJiMzNDtxZGlzY19wdXQmIzM0OywKICAgICYjMzQ7cWRpc2NfcHV0X3VubG9ja2VkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBwYXRoIG9mIGBxZGlzY19jcmVhdGVgIGFuZCB0aGUgZGVzdHJ1Y3Rpb24gcGF0aCBpbiBgX19xZGlzY19kZXN0cm95YCB0byB1c2UgYSBuZXdseSBpbnRyb2R1Y2VkIGBxZGlzY19mcmVlX3JjdWAgZnVuY3Rpb24gaW5zdGVhZCBvZiBmcmVlaW5nIHRoZSBxZGlzYyBkaXJlY3RseSBvciBjYWxsaW5nIGBjYWxsX3JjdWAgbWFudWFsbHkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIFJDVS1yZWxhdGVkIGlzc3VlLiBUaGUgY29kZSBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsgYFJUTV9ORVdRRElTQ2AgYW5kIGBSVE1fREVMUURJU0NgIG1lc3NhZ2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIRUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtxZGlzY19mcmVlX3JjdSYjMzQ7LAogICAgJiMzNDtxZGlzY19kZXN0cm95JiMzNDssCiAgICAmIzM0O3FkaXNjX3B1dCYjMzQ7LAogICAgJiMzNDtxZGlzY19wdXRfdW5sb2NrZWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIHBhdGggb2YgYHFkaXNjX2NyZWF0ZWAgYW5kIHRoZSBkZXN0cnVjdGlvbiBwYXRoIGluIGBfX3FkaXNjX2Rlc3Ryb3lgIHRvIHVzZSBhIG5ld2x5IGludHJvZHVjZWQgYHFkaXNjX2ZyZWVfcmN1YCBmdW5jdGlvbiBpbnN0ZWFkIG9mIGZyZWVpbmcgdGhlIHFkaXNjIGRpcmVjdGx5IG9yIGNhbGxpbmcgYGNhbGxfcmN1YCBtYW51YWxseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgUkNVLXJlbGF0ZWQgaXNzdWUuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBgUlRNX05FV1FESVNDYCBhbmQgYFJUTV9ERUxRRElTQ2AgbWVzc2FnZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMTozOToyNS4wMjM4Mjg1MjFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODIxNjAwNDAyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJxZGlzY19mcmVlX3JjdVwiLFxuICAgIFwicWRpc2NfZGVzdHJveVwiLFxuICAgIFwicWRpc2NfcHV0XCIsXG4gICAgXCJxZGlzY19wdXRfdW5sb2NrZWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgcGF0aCBvZiBgcWRpc2NfY3JlYXRlYCBhbmQgdGhlIGRlc3RydWN0aW9uIHBhdGggaW4gYF9fcWRpc2NfZGVzdHJveWAgdG8gdXNlIGEgbmV3bHkgaW50cm9kdWNlZCBgcWRpc2NfZnJlZV9yY3VgIGZ1bmN0aW9uIGluc3RlYWQgb2YgZnJlZWluZyB0aGUgcWRpc2MgZGlyZWN0bHkgb3IgY2FsbGluZyBgY2FsbF9yY3VgIG1hbnVhbGx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBSQ1UtcmVsYXRlZCBpc3N1ZS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGBSVE1fTkVXUURJU0NgIGFuZCBgUlRNX0RFTFFESVNDYCBtZXNzYWdlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6Mzk6MjUuMDIzODM0NDUxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTUyMDUxNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4MzQwMmM0MWM0MmRhY2Y2YzYyYzgwMTY0NDA3ZjQ4ZTY4OTk0M2VjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgQXVnIDUgMTE6Mzk6MjQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaCBiL2luY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmhcXG5pbmRleCA0NWExZThjNzgyMjJiLi5kNDU0NDJjOTI2MjFiIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmhcXG4rKysgYi9pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oXFxuQEAgLTc5Myw2ICs3OTMsNyBAQCBzdHJ1Y3QgUWRpc2MgKnFkaXNjX2FsbG9jKHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSxcXG4gXFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICpvcHMsXFxuIFxcdFxcdFxcdCAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcXG4gdm9pZCBxZGlzY19mcmVlKHN0cnVjdCBRZGlzYyAqcWRpc2MpO1xcbit2b2lkIHFkaXNjX2ZyZWVfcmN1KHN0cnVjdCBRZGlzYyAqcWRpc2MpO1xcbiBzdHJ1Y3QgUWRpc2MgKnFkaXNjX2NyZWF0ZV9kZmx0KHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSxcXG4gXFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IFFkaXNjX29wcyAqb3BzLCB1MzIgcGFyZW50aWQsXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfYXBpLmMgYi9uZXQvc2NoZWQvc2NoX2FwaS5jXFxuaW5kZXggNjY4YmNkNjBkMTgzZS4uMDQxYmQ2MDA3MjAxNiAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvc2NoX2FwaS5jXFxuKysrIGIvbmV0L3NjaGVkL3NjaF9hcGkuY1xcbkBAIC0xMzczLDcgKzEzNzMsNyBAQCBzdGF0aWMgc3RydWN0IFFkaXNjICpxZGlzY19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gZXJyX291dDM6XFxuIFxcdHFkaXNjX2xvY2tfdW5pbml0KHNjaCwgb3BzKTtcXG4gXFx0bmV0ZGV2X3B1dChkZXYsIFxcdTAwMjZzY2gtXFx1MDAzZWRldl90cmFja2VyKTtcXG4tXFx0cWRpc2NfZnJlZShzY2gpO1xcbitcXHRxZGlzY19mcmVlX3JjdShzY2gpO1xcbiBlcnJfb3V0MjpcXG4gXFx0YnBmX21vZHVsZV9wdXQob3BzLCBvcHMtXFx1MDAzZW93bmVyKTtcXG4gZXJyX291dDpcXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmMgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1xcbmluZGV4IGVmMmI0YmY1MTU2NDEuLjg2ZDU1MWZiYWJjYzIgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmNcXG4rKysgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1xcbkBAIC0xMTAzLDYgKzExMDMsMTEgQEAgc3RhdGljIHZvaWQgcWRpc2NfZnJlZV9jYihzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXFxuIFxcdHFkaXNjX2ZyZWUocSk7XFxuIH1cXG4gXFxuK3ZvaWQgcWRpc2NfZnJlZV9yY3Uoc3RydWN0IFFkaXNjICpxZGlzYylcXG4re1xcbitcXHRjYWxsX3JjdShcXHUwMDI2cWRpc2MtXFx1MDAzZXJjdSwgcWRpc2NfZnJlZV9jYik7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIF9fcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxcbiB7XFxuIFxcdGNvbnN0IHN0cnVjdCBRZGlzY19vcHMgICpvcHMgPSBxZGlzYy1cXHUwMDNlb3BzO1xcbkBAIC0xMTI3LDcgKzExMzIsNyBAQCBzdGF0aWMgdm9pZCBfX3FkaXNjX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpxZGlzYylcXG4gXFxuIFxcdHRyYWNlX3FkaXNjX2Rlc3Ryb3kocWRpc2MpO1xcbiBcXG4tXFx0Y2FsbF9yY3UoXFx1MDAyNnFkaXNjLVxcdTAwM2VyY3UsIHFkaXNjX2ZyZWVfY2IpO1xcbitcXHRxZGlzY19mcmVlX3JjdShxZGlzYyk7XFxuIH1cXG4gXFxuIHZvaWQgcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMTozOToyNS40MTk3NzE2ODFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3NzgyMDA1MTgyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJxZGlzY19mcmVlX3JjdVwiLFxuICAgIFwicWRpc2NfZGVzdHJveVwiLFxuICAgIFwicWRpc2NfcHV0XCIsXG4gICAgXCJxZGlzY19wdXRfdW5sb2NrZWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgcGF0aCBvZiBgcWRpc2NfY3JlYXRlYCBhbmQgdGhlIGRlc3RydWN0aW9uIHBhdGggaW4gYF9fcWRpc2NfZGVzdHJveWAgdG8gdXNlIGEgbmV3bHkgaW50cm9kdWNlZCBgcWRpc2NfZnJlZV9yY3VgIGZ1bmN0aW9uIGluc3RlYWQgb2YgZnJlZWluZyB0aGUgcWRpc2MgZGlyZWN0bHkgb3IgY2FsbGluZyBgY2FsbF9yY3VgIG1hbnVhbGx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBSQ1UtcmVsYXRlZCBpc3N1ZS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGBSVE1fTkVXUURJU0NgIGFuZCBgUlRNX0RFTFFESVNDYCBtZXNzYWdlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgODM0MDJjNDFjNDJkYWNmNmM2MmM4MDE2NDQwN2Y0OGU2ODk5NDNlY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMTE6Mzk6MjQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oIGIvaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaFxuaW5kZXggNDVhMWU4Yzc4MjIyYi4uZDQ1NDQyYzkyNjIxYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmhcbisrKyBiL2luY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmhcbkBAIC03OTMsNiArNzkzLDcgQEAgc3RydWN0IFFkaXNjICpxZGlzY19hbGxvYyhzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICpkZXZfcXVldWUsXG4gXHRcdFx0ICBjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICpvcHMsXG4gXHRcdFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuIHZvaWQgcWRpc2NfZnJlZShzdHJ1Y3QgUWRpc2MgKnFkaXNjKTtcbit2b2lkIHFkaXNjX2ZyZWVfcmN1KHN0cnVjdCBRZGlzYyAqcWRpc2MpO1xuIHN0cnVjdCBRZGlzYyAqcWRpc2NfY3JlYXRlX2RmbHQoc3RydWN0IG5ldGRldl9xdWV1ZSAqZGV2X3F1ZXVlLFxuIFx0XHRcdFx0Y29uc3Qgc3RydWN0IFFkaXNjX29wcyAqb3BzLCB1MzIgcGFyZW50aWQsXG4gXHRcdFx0XHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfYXBpLmMgYi9uZXQvc2NoZWQvc2NoX2FwaS5jXG5pbmRleCA2NjhiY2Q2MGQxODNlLi4wNDFiZDYwMDcyMDE2IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9hcGkuY1xuKysrIGIvbmV0L3NjaGVkL3NjaF9hcGkuY1xuQEAgLTEzNzMsNyArMTM3Myw3IEBAIHN0YXRpYyBzdHJ1Y3QgUWRpc2MgKnFkaXNjX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIGVycl9vdXQzOlxuIFx0cWRpc2NfbG9ja191bmluaXQoc2NoLCBvcHMpO1xuIFx0bmV0ZGV2X3B1dChkZXYsIFx1MDAyNnNjaC1cdTAwM2VkZXZfdHJhY2tlcik7XG4tXHRxZGlzY19mcmVlKHNjaCk7XG4rXHRxZGlzY19mcmVlX3JjdShzY2gpO1xuIGVycl9vdXQyOlxuIFx0YnBmX21vZHVsZV9wdXQob3BzLCBvcHMtXHUwMDNlb3duZXIpO1xuIGVycl9vdXQ6XG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmMgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1xuaW5kZXggZWYyYjRiZjUxNTY0MS4uODZkNTUxZmJhYmNjMiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jXG4rKysgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1xuQEAgLTExMDMsNiArMTEwMywxMSBAQCBzdGF0aWMgdm9pZCBxZGlzY19mcmVlX2NiKHN0cnVjdCByY3VfaGVhZCAqaGVhZClcbiBcdHFkaXNjX2ZyZWUocSk7XG4gfVxuIFxuK3ZvaWQgcWRpc2NfZnJlZV9yY3Uoc3RydWN0IFFkaXNjICpxZGlzYylcbit7XG4rXHRjYWxsX3JjdShcdTAwMjZxZGlzYy1cdTAwM2VyY3UsIHFkaXNjX2ZyZWVfY2IpO1xuK31cbitcbiBzdGF0aWMgdm9pZCBfX3FkaXNjX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpxZGlzYylcbiB7XG4gXHRjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICAqb3BzID0gcWRpc2MtXHUwMDNlb3BzO1xuQEAgLTExMjcsNyArMTEzMiw3IEBAIHN0YXRpYyB2b2lkIF9fcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxuIFxuIFx0dHJhY2VfcWRpc2NfZGVzdHJveShxZGlzYyk7XG4gXG4tXHRjYWxsX3JjdShcdTAwMjZxZGlzYy1cdTAwM2VyY3UsIHFkaXNjX2ZyZWVfY2IpO1xuK1x0cWRpc2NfZnJlZV9yY3UocWRpc2MpO1xuIH1cbiBcbiB2b2lkIHFkaXNjX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpxZGlzYylcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjM5OjI1LjQxOTc3Mzc0MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1MDA4MDg4NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0d29ya2luZyBTY2hlZHVsZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZXhwZXJ0IGV5ZSBob25lcyBpbiBvbiBzb21lIGludGVyZXN0aW5nIGNoYW5nZXMgd2l0aGluIGBuZXQvc2NoZWQvc2NoX2FwaS5jYCBhbmQgYG5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jYC4gVGhlIGNvcmUgb2YgdGhlIHBhdGNoIHJldm9sdmVzIGFyb3VuZCBob3cgdGhleSdyZSBoYW5kbGluZyBlcnJvciBwYXRocyB3aXRoaW4gYHFkaXNjX2NyZWF0ZWAuIFByZXZpb3VzbHksIGl0IGxvb2tzIGxpa2UgYHFkaXNjX2ZyZWVgIHdhcyBkaXJlY3RseSBpbnZva2VkIGluIGNlcnRhaW4gZXJyb3Igc2NlbmFyaW9zLiBOb3csIHRoZSBwYXRjaCBpbnRlbGxpZ2VudGx5IHN3YXBzIHRoYXQgb3V0IGZvciBgcWRpc2NfZnJlZV9yY3VgLiBUaGlzIGlzIGEgY2xlYXIgaW5kaWNhdG9yIHRoYXQgdGhlIGRldmVsb3BlciBpcyBhZGRyZXNzaW5nIHBvdGVudGlhbCBjb25jdXJyZW5jeSBpc3N1ZXMsIHNwZWNpZmljYWxseSBhIHBvc3NpYmxlIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvLiBUaGlzIGlzIGJlY2F1c2UgYHFkaXNjX2ZyZWVfcmN1YCB3aWxsIGNhbGwgYGNhbGxfcmN1YCB3aGljaCBnaXZlcyBhbnkgcnVubmluZyBwcm9jZXNzZXMgdGltZSB0byBmaW5pc2ggd2l0aCB0aGUgcWRpc2MuXG5cblRoZSBwYXRjaCBhbHNvIGludHJvZHVjZXMgYHFkaXNjX2ZyZWVfcmN1YCB3aXRoaW4gYHNjaF9nZW5lcmljLmNgLCB3aGljaCwgYXMgSSBzdXNwZWN0ZWQsIGVuY2Fwc3VsYXRlcyB0aGUgYGNhbGxfcmN1YCBtZWNoYW5pc20sIGNhbGxpbmcgYHFkaXNjX2ZyZWVfY2JgLiBJdCdzIGEgY2xlYW4gc2VwYXJhdGlvbiBvZiBjb25jZXJucywgYW5kIGl0J3MgbmljZSB0byBzZWUgdGhpcyBraW5kIG9mIG1ldGljdWxvdXNuZXNzLiBJbnRlcmVzdGluZ2x5LCB0aGV5IGFsc28gY2hhbmdlZCBgX19xZGlzY19kZXN0cm95YCB0byB1c2UgYHFkaXNjX2ZyZWVfcmN1KHFkaXNjKWAgYXMgd2VsbC5cblxuVGhlIGBxZGlzY19jcmVhdGVgIGZ1bmN0aW9uIGluIGBuZXQvc2NoZWQvc2NoX2FwaS5jYCBpcyB0aGUgcmVhbCB0YXJnZXQgaGVyZS4gVGhleSBhcmUgbm93IHVzaW5nIHRoZSBgZXJyX291dDM6YCBlcnJvciBwYXRoIHRvIGNhbGwgYHFkaXNjX2ZyZWVfcmN1KHNjaClgIGluc3RlYWQgb2YgdGhlIG9sZCBgcWRpc2NfZnJlZShzY2gpYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4LCBhbmQgaXQncyBtYWtpbmcgdGhlIGNvZGUgbXVjaCBtb3JlIHJvYnVzdCBieSBhdm9pZGluZyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIHdoZW4gdGhlIHFkaXNjIGlzIGJlaW5nIGZyZWVkLlxuXG5MZXQncyBzZWXigKYgYHFkaXNjX2NyZWF0ZWAgaXMgcmVhY2hhYmxlLCByaWdodD8gT2YgY291cnNlLCBpdCdzIGNhbGxlZCBkdXJpbmcgcWRpc2MgY3JlYXRpb24sIHdoaWNoLCBpbiB0aGUgcmVhbCB3b3JsZCBtZWFucyB0aHJvdWdoIGBuZXRsaW5rIHRjIHFkaXNjIGFkZGAuIFRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCBtZXJpdHMgc29tZSBzZXJpb3VzIGZ1enppbmcuIEEgcmFjZSBjb25kaXRpb24gYXJvdW5kIHFkaXNjIGNyZWF0aW9uL2Rlc3RydWN0aW9uIGlzIHByaW1lIGZ1enppbmcgbWF0ZXJpYWwhXG5cbkkgc2hvdWxkIGFsc28gY2hlY2sgdGhlIGNvbmZpZyBvcHRpb25zLiBUaGlzIHNob3VsZCBiZSBwYXJ0IG9mIGBDT05GSUdfTkVUX1NDSEVEYCwgb3Igc29tZXRoaW5nIHNpbWlsYXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MDgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMTozOTozMS45MjA1ODQ5OTVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4Mzk0MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib2JqLS4qc2NoX2FwaVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9NYWtlZmlsZT04PW9iai0kKENPTkZJR19JTkVUKVxcdFxcdCs9IHNjaF9mcmFnLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfTkVUX1NDSEVEKVxcdFxcdCs9IHNjaF9hcGkubyBzY2hfYmxhY2tob2xlLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtMTAtb2JqLSQoQ09ORklHX05FVF9DTFMpXFx0XFx0Kz0gY2xzX2FwaS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjM5OjMxLjk2NzQzMDg4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg5MjY2MTExMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiBjb25zY2lvdXNuZXNzOlxuXG4qKk5ldHdvcmsgU2NoZWR1bGVyIENvbmZpZ3VyYXRpb24gYW5kIEZ1bmN0aW9uIEFuYWx5c2lzKipcblxuUmlnaHQsIEknbSBkaXZpbmcgaW50byB0aGlzIG5ldHdvcmsgc2NoZWR1bGVyIHN0dWZmLiBGaXJzdCB0aGluZydzIGZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYENPTkZJR19ORVRfU0NIRURgIGlzIGVuYWJsZWQsIG9idmlvdXNseS4gVGhhdCdzIHRoZSBiYXNlbGluZS4gTm93LCBJJ20gdGhpbmtpbmcgYWJvdXQgYHFkaXNjX2NyZWF0ZWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBpdCdzIGJlaW5nIGNhbGxlZCwgd2hpY2ggbWVhbnMgSSBzaG91bGQgY2hlY2sgd2hldGhlciBpdCdzIHN0YXRpYyBvciBub3QuIFllcCwgaXQgKmlzKiBzdGF0aWMuIE9LLCBzbyBgcWRpc2NfY3JlYXRlYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMgd2l0aGluIGBuZXQvc2NoZWQvc2NoX2FwaS5jYC4gVGhhdCBtZWFucyBpdHMgc2NvcGUgaXMgbGltaXRlZCB0byB0aGF0IGZpbGUsIHdoaWNoIG1ha2VzIHRyYWNpbmcgaXRzIHVzYWdlIGEgYml0IG1vcmUgZm9jdXNlZCwgYnV0IGFsc28gbWVhbnMgSSBuZWVkIHRvIHBpbnBvaW50IGl0cyBjYWxsZXJzIHdpdGhpbiB0aGF0IHNhbWUgZmlsZSwgYG5ldC9zY2hlZC9zY2hfYXBpLmNgLCB0byByZWFsbHkgdW5kZXJzdGFuZCBob3cgaXQncyB3b3JraW5nLiBUaW1lIHRvIGV4YW1pbmUgdGhhdCBmaWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTI1LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6Mzk6MzUuODYwMDk0MTIxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2NjkxODMzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxZGlzY19jcmVhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL3NjaF9hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvc2NoX2FwaS5jPTEyMjI9c3RhdGljIGludCBxZGlzY19ibG9ja19pbmRleGVzX3NldChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqKnRjYSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTI2MS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjEyNjI6c3RhdGljIHN0cnVjdCBRZGlzYyAqcWRpc2NfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xMjYzLVxcdFxcdFxcdFxcdCAgc3RydWN0IG5ldGRldl9xdWV1ZSAqZGV2X3F1ZXVlLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xMzYxLVxcdHFkaXNjX2hhc2hfYWRkKHNjaCwgZmFsc2UpO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTM2MjpcXHR0cmFjZV9xZGlzY19jcmVhdGUob3BzLCBkZXYsIHBhcmVudCk7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xMzYzLVxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xMzY3LVxcdC8qIEV2ZW4gaWYgb3BzLVxcdTAwM2Vpbml0KCkgZmFpbGVkLCB3ZSBjYWxsIG9wcy1cXHUwMDNlZGVzdHJveSgpXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxMzY4OlxcdCAqIGxpa2UgcWRpc2NfY3JlYXRlX2RmbHQoKS5cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTEzNjktXFx0ICovXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTE1OTk9c3RhdGljIGludCBfX3RjX21vZGlmeV9xZGlzYyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm4sXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE3NTMtXFx0XFx0aWYgKGRldl9pbmdyZXNzX3F1ZXVlKGRldikpIHtcXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE3NTQ6XFx0XFx0XFx0cSA9IHFkaXNjX2NyZWF0ZShkZXYsIGRldl9pbmdyZXNzX3F1ZXVlKGRldiksXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNzU1LVxcdFxcdFxcdFxcdFxcdCB0Y20tXFx1MDAzZXRjbV9wYXJlbnQsIHRjbS1cXHUwMDNldGNtX3BhcmVudCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTc3MC1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE3NzE6XFx0XFx0cSA9IHFkaXNjX2NyZWF0ZShkZXYsIGRldl9xdWV1ZSxcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE3NzItXFx0XFx0XFx0XFx0IHRjbS1cXHUwMDNldGNtX3BhcmVudCwgdGNtLVxcdTAwM2V0Y21faGFuZGxlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMTozOTozNi4yMjcwMTc0ODNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDk2NTM1NTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gdGhlIFFkaXNjIE1vZGlmaWNhdGlvbiBQYXRoKipcblxuQWxyaWdodCwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCBjYWxsIGNoYWluIGludm9sdmVkIGluIG1vZGlmeWluZyBhIHF1ZXVpbmcgZGlzY2lwbGluZSDigJMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBiZXR0ZXIuIE15IHN0YXJ0aW5nIHBvaW50IGlzIGBfX3RjX21vZGlmeV9xZGlzY2AsIGFuZCB0aGF0IHN1Z2dlc3RzIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhpcyBpcyB0aHJvdWdoIGB0Y19tb2RpZnlfcWRpc2NgLiBUaGlzIGxpa2VseSBtZWFucyB0aGVyZSdzIGEgbGF5ZXJlZCBhcHByb2FjaCwgbWF5YmUgd2l0aCBzb21lIGludGVybmFsIGtlcm5lbCBmdW5jdGlvbnMuXG5cbk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgYHRjX21vZGlmeV9xZGlzY2AgZnVuY3Rpb24uIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBsb3dlciBsYXllcnMuIEkgYWxzbyBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkZWZhdWx0IFFkaXNjIGlzIGNyZWF0ZWQgLSBJJ2xsIG5lZWQgdG8gbG9vayBhdCBgcWRpc2NfY3JlYXRlX2RmbHRgLiBJIGhhdmUgYSBmZWVsaW5nIEknbGwgZmluZCBzb21lIGludGVyZXN0aW5nIGxvZ2ljIHJlbGF0ZWQgdG8gZGVmYXVsdCBwYXJhbWV0ZXJzIGFuZCBzZXR1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM0OSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjM5OjM5LjcyMzU1NTc2NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzIzMDUwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y19tb2RpZnlfcWRpc2NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL3NjaF9hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvc2NoX2FwaS5jPTE1OTI9c3RhdGljIGJvb2wgcmVxX2NoYW5nZShzdHJ1Y3Qgbmxtc2doZHIgKm4pXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE1OTgtXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxNTk5OnN0YXRpYyBpbnQgX190Y19tb2RpZnlfcWRpc2Moc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpuLFxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTYwMC1cXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM9MTc4OT1zdGF0aWMgdm9pZCByZXF1ZXN0X3FkaXNjX21vZHVsZShzdHJ1Y3QgbmxhdHRyICpraW5kKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xODEyLSAqL1xcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTgxMzpzdGF0aWMgaW50IHRjX21vZGlmeV9xZGlzYyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm4sXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xODE0LVxcdFxcdFxcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTgzNC1cXHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE4MzU6XFx0ZXJyID0gX190Y19tb2RpZnlfcWRpc2Moc2tiLCBuLCBleHRhY2ssIGRldiwgdGNhLCB0Y20pO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTgzNi1cXHRuZXRkZXZfdW5sb2NrX29wcyhkZXYpO1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYz0yNTE0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRubF9tc2dfaGFuZGxlciBwc2NoZWRfcnRubF9tc2dfaGFuZGxlcnNbXSBfX2luaXRjb25zdCA9IHtcXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjI1MTU6XFx0ey5tc2d0eXBlID0gUlRNX05FV1FESVNDLCAuZG9pdCA9IHRjX21vZGlmeV9xZGlzY30sXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNTE2LVxcdHsubXNndHlwZSA9IFJUTV9ERUxRRElTQywgLmRvaXQgPSB0Y19nZXRfcWRpc2N9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMTozOTozOS43NzA3OTEzOTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTQ0NDczNzc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqQW5hbHl6aW5nIHRoZSBgdGNfbW9kaWZ5X3FkaXNjYCBQYXRjaCoqXG5cblJpZ2h0LCBzbyBgdGNfbW9kaWZ5X3FkaXNjYCBpcyB0aGUgZ2F0ZXdheSwgdGhlIGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyBhIG5ldyBxdWV1ZWluZyBkaXNjaXBsaW5lLCBhIGBSVE1fTkVXUURJU0NgIG1lc3NhZ2UuIFRoZSBjcnV4IG9mIHRoaXMgcGF0Y2ggc2VlbXMgdG8gYmUgZm9jdXNlZCBvbiBob3cgd2UgaGFuZGxlIGVycm9ycyB3aXRoaW4gdGhlIGBxZGlzY19jcmVhdGVgIGZ1bmN0aW9uLlxuXG5UbyByZWFsbHkgZGlnIGludG8gdGhpcywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZhaWx1cmUgc2NlbmFyaW9zIHdpdGhpbiBgcWRpc2NfY3JlYXRlYC4gV2hhdCBjb25kaXRpb25zIHRyaWdnZXIgYW4gZXJyb3IgdGhlcmU/IFRoZSBwYXRjaCBpcyBjbGVhcmx5IGFkZHJlc3NpbmcgdGhpcyBlcnJvciBwYXRoLlxuXG5BbHNvLCBJIHNlZSBhIG5ldyBmdW5jdGlvbiBgcWRpc2NfZnJlZV9yY3VgIGludHJvZHVjZWQgaW4gYG5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jYC4gSW50ZXJlc3RpbmcuIEl0J3MgZWl0aGVyIGV4cG9ydGVkIG9yIGF0IGxlYXN0IG5vdCBkZWNsYXJlZCBhcyBzdGF0aWMsIHNvIGl0J3MgaW50ZW5kZWQgdG8gYmUgdXNlZCBleHRlcm5hbGx5LiBUaGF0IHJhaXNlcyBteSBleWVicm93cy4gTGV0J3MgbWFrZSBzdXJlIGl0IGlzIHdoYXQgSSB0aGluayBpdCBpcywgYSBmdW5jdGlvbiB0byBzYWZlbHkgZnJlZSBxZGlzY3MgdXNpbmcgUkNVLCBsZXQncyB0YWtlIGEgbG9vayB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA5NSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMTozOTo0My45MTUyNjc3NjdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTI3MTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInFkaXNjX2ZyZWVfcmN1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTEwOTk9c3RhdGljIHZvaWQgcWRpc2NfZnJlZV9jYihzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTA1LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjExMDY6dm9pZCBxZGlzY19mcmVlX3JjdShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExMDcte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTExMT1zdGF0aWMgdm9pZCBfX3FkaXNjX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpxZGlzYylcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExMzQtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTEzNTpcXHRxZGlzY19mcmVlX3JjdShxZGlzYyk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEzNi19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjM5OjQzLjk2MTIwMDAzMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjM2MDg2Njc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYHFkaXNjX2ZyZWVfcmN1YCBWaXNpYmlsaXR5KipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4gU29tZXRoaW5nJ3Mgbm90IHF1aXRlIGFkZGluZyB1cC4gSSdtIGhpdHRpbmcgYSBzbmFnLCBhbmQgdGhlIGltbWVkaWF0ZSB0aG91Z2h0IGlzOiBpcyBgcWRpc2NfZnJlZV9yY3VgIGFjdHVhbGx5IGV4cG9ydGVkIHdpdGggYEVYUE9SVF9TWU1CT0xgPyBUaGF0J3MgdGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBjb25maXJtLiBJdCdzIGEgZnVuZGFtZW50YWwgYXNzdW1wdGlvbiwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBjb3JlIGtlcm5lbCBzdHJ1Y3R1cmVzIGFuZCBob3cgZGlmZmVyZW50IG1vZHVsZXMgb3Igc3Vic3lzdGVtcyBjYW4gaW50ZXJhY3Qgd2l0aCBlYWNoIG90aGVyLiBJZiBpdCdzICpub3QqIGV4cG9ydGVkLCB0aGVuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoeSBhbmQsIG1vcmUgaW1wb3J0YW50bHksICpob3cqIHRoaXMgcGllY2Ugb2YgY29kZSBpcyBzdXBwb3NlZCB0byBiZSBhY2Nlc3NpYmxlIChvciBpZiB0aGUgYWNjZXNzIGlzIGludGVuZGVkIGF0IGFsbCkuIFRpbWUgdG8gZGlnIGRlZXBlciBhbmQgc2VlIGlmIEknbSBtaXNzaW5nIHNvbWV0aGluZyBvYnZpb3VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjcxLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6Mzk6NDcuNTk3MjkwODlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NzYxNjc1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLipxZGlzY19mcmVlX3JjdVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6Mzk6NDcuNjQ2MDY0NDM0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NTE0MTkxMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiByZWFkaW5nIGBuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY2AgYXJvdW5kIHRoZSBgcWRpc2NfZnJlZV9yY3VgIGZ1bmN0aW9uLCBzdW1tYXJpemVkIGFzIG15IG93biB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFFkaXNjIExpZmVjeWNsZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGludHJpY2FjaWVzIG9mIHRoZSBnZW5lcmljIHF1ZXVpbmcgZGlzY2lwbGluZSBmcmFtZXdvcmsgaW4gdGhlIExpbnV4IGtlcm5lbC4gTGV0J3MgemVybyBpbiBvbiBgbmV0L3NjaGVkL3NjaF9nZW5lcmljLmNgIGFuZCBzcGVjaWZpY2FsbHkgZm9jdXMgb24gdGhlIGBxZGlzY19mcmVlX3JjdWAgZnVuY3Rpb24uIEkgcmVtZW1iZXIgdGhpcyBhcmVhIGJlaW5nIGNydWNpYWwgZm9yIHByb3BlciByZXNvdXJjZSBtYW5hZ2VtZW50IGFuZCBwcmV2ZW50aW5nIG1lbW9yeSBsZWFrcyB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLiBUaGlzIGZ1bmN0aW9uLCBJIGFzc3VtZSwgaXMgd2hlcmUgdGhlIGZpbmFsIGNsZWFudXAgb2YgYSBxdWV1aW5nIGRpc2NpcGxpbmUgKHFkaXNjKSBoYXBwZW5zIGJlZm9yZSBpdCdzIGNvbXBsZXRlbHkgZGVhbGxvY2F0ZWQuXG5cbk15IGZpcnN0IHRob3VnaHQgaXMgYWx3YXlzIGFib3V0IHRoZSBSQ1UgKFJlYWQtQ29weS1VcGRhdGUpIGFzcGVjdC4gSXQgbWFrZXMgc2Vuc2UgdGhpcyBmdW5jdGlvbiBpcyBpbnZvbHZlZCBiZWNhdXNlIHFkaXNjcyBhcmUgb2Z0ZW4gYWNjZXNzZWQgY29uY3VycmVudGx5IGJ5IG11bHRpcGxlIHRocmVhZHMg4oCTIHBhY2tldCBwcm9jZXNzaW5nLCBjb25maWd1cmF0aW9uIGNoYW5nZXMsIGV0Yy4gUkNVIGFsbG93cyB1cyB0byBzYWZlbHkgZnJlZSB0aGUgcWRpc2MgZGF0YSBzdHJ1Y3R1cmUgd2l0aG91dCBkaXNydXB0aW5nIGFjdGl2ZSByZWFkZXJzLiBTbywgYHFkaXNjX2ZyZWVfcmN1YCBpcyBsaWtlbHkgdGhlIGN1bG1pbmF0aW9uIG9mIHRoZSBkZS1yZWdpc3RyYXRpb24gYW5kIGRyYWluIHByb2Nlc3MuXG5cbkknbGwgYmUgbG9va2luZyB0byBzZWU6IFdoYXQncyB0aGUgZXhhY3QgcHJvY2VkdXJlIHRoaXMgZnVuY3Rpb24gdXNlcz8gRG9lcyBpdCBwZXJmb3JtIHRoZSBmaW5hbCBkZS1hbGxvY2F0aW9uIGltbWVkaWF0ZWx5IG9yIHNjaGVkdWxlIGl0IGZvciBsYXRlciBleGVjdXRpb24sIGFmdGVyIGEgZ3JhY2UgcGVyaW9kIGFzIGRpY3RhdGVkIGJ5IFJDVT8gV2hpY2ggYXNwZWN0cyBvZiB0aGUgcWRpc2MgYXJlIGZyZWVkIGhlcmUsIGFuZCB3aGljaCB3ZXJlIHRha2VuIGNhcmUgb2YgZWFybGllcj8gV2hhdCdzIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSB1bmRlcmx5aW5nIGRldmljZSBkcml2ZXI/IEFyZSB0aGVyZSBzcGVjaWZpYyBzcGlubG9ja3Mgb3Igb3RoZXIgc3luY2hyb25pemF0aW9uIG1lY2hhbmlzbXMgYmVpbmcgdXNlZCB0byBlbnN1cmUgdGhyZWFkIHNhZmV0eSBkdXJpbmcgdGhpcyBjcml0aWNhbCBkZS1hbGxvY2F0aW9uIHBoYXNlPyBJJ2xsIGFsc28gY2hlY2sgZm9yIGFueSBzdWJ0bGUgY29ybmVyIGNhc2VzOiBXaGF0IGhhcHBlbnMgaWYgYSBwYWNrZXQgaXMgc3RpbGwgZW5xdWV1ZWQsIG9yIGlmIGEgY2hpbGQgcWRpc2MgaXMgbm90IHByb3Blcmx5IGRldGFjaGVkP1xuXG5cbiIsIklucHV0VG9rZW5zIjo1OTI2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6Mzk6NTIuMzk3NDkzODg4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTAwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMTAwOlxcdHtcXG4xMTAxOlxcdFxcdHN0cnVjdCBRZGlzYyAqcSA9IGNvbnRhaW5lcl9vZihoZWFkLCBzdHJ1Y3QgUWRpc2MsIHJjdSk7XFxuMTEwMjpcXHRcXG4xMTAzOlxcdFxcdHFkaXNjX2ZyZWUocSk7XFxuMTEwNDpcXHR9XFxuMTEwNTpcXHRcXG4xMTA2OlxcdHZvaWQgcWRpc2NfZnJlZV9yY3Uoc3RydWN0IFFkaXNjICpxZGlzYylcXG4xMTA3OlxcdHtcXG4xMTA4OlxcdFxcdGNhbGxfcmN1KFxcdTAwMjZxZGlzYy1cXHUwMDNlcmN1LCBxZGlzY19mcmVlX2NiKTtcXG4xMTA5OlxcdH1cXG4xMTEwOlxcdFxcbjExMTE6XFx0c3RhdGljIHZvaWQgX19xZGlzY19kZXN0cm95KHN0cnVjdCBRZGlzYyAqcWRpc2MpXFxuMTExMjpcXHR7XFxuMTExMzpcXHRcXHRjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICAqb3BzID0gcWRpc2MtXFx1MDAzZW9wcztcXG4xMTE0OlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYocWRpc2MpO1xcbjExMTU6XFx0XFxuMTExNjpcXHQjaWZkZWYgQ09ORklHX05FVF9TQ0hFRFxcbjExMTc6XFx0XFx0cWRpc2NfaGFzaF9kZWwocWRpc2MpO1xcbjExMTg6XFx0XFxuMTExOTpcXHRcXHRxZGlzY19wdXRfc3RhYihydG5sX2RlcmVmZXJlbmNlKHFkaXNjLVxcdTAwM2VzdGFiKSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjM5OjUyLjM5NzU5NzY1OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjY0MDI2MjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBoYXZpbmcgaXQ6XG5cbioqRGlnZ2luZyBpbnRvIEtlcm5lbCBNb2R1bGUgVmlzaWJpbGl0eSoqXG5cbkhtbSwgdGhpcyBmdW5jdGlvbiBpc24ndCBleHBsaWNpdGx5IGV4cG9ydGVkLCBidXQgaXQncyBjbGVhcmx5IGJlaW5nIGFjY2Vzc2VkIGJ5IGBuZXQvc2NoZWQvc2NoX2FwaS5jYC4gTm93LCB3aHkgaXMgdGhhdD8gQWgsIHJpZ2h0LCBiZWNhdXNlIGJvdGggb2YgdGhlc2UgZmlsZXMgYXJlIGRlZXAgd2l0aGluIHRoZSBjb3JlIGtlcm5lbCwgb3IgbWF5YmUgYHNjaF9nZW5lcmljLmNgIGlzIGluIHRoZSBgbmV0L3NjaGVkL2AgZGlyZWN0b3J5LiBCdXQgd2FpdCwgdGhhdCByaW5ncyBhIGJlbGwuLi4gaXNuJ3QgYHNjaF9nZW5lcmljLmNgIGNvbXBpbGVkIGludG8gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjayBpdHNlbGY/IE9rYXksIGxldCdzIGp1c3QgY29uZmlybSB0aGF0IGJ5IG9wZW5pbmcgdXAgdGhlIGBuZXQvc2NoZWQvTWFrZWZpbGVgIGFuZCBtYWtpbmcgc3VyZSB0aGF0IEkgYW0gdGhpbmtpbmcgY2xlYXJseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY1NywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6Mzk6NTYuMDYxNjI2NjIyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDI0MjM0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY2hfZ2VuZXJpY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL01ha2VmaWxlLTUtXFxubmV0L3NjaGVkL01ha2VmaWxlOjY6b2JqLXlcXHQ6PSBzY2hfZ2VuZXJpYy5vIHNjaF9tcS5vXFxubmV0L3NjaGVkL01ha2VmaWxlLTctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjM5OjU2LjEwNTg3MzU3N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzU3MzY5NjczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ2hhbmdlcyBpbiB0aGUgTmV0d29yayBTY2hlZHVsZXIgQ29kZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCBhcyBJIHVuZGVyc3RhbmQgaXQsIGBzY2hfZ2VuZXJpYy5vYCBpcyAqYWx3YXlzKiBidWlsdCDigJMgdGhhdCdzIGEgZ2l2ZW4uIEFuZCBgc2NoX2FwaS5vYCBkZXBlbmRzIG9uIGBDT05GSUdfTkVUX1NDSEVEYCBiZWluZyBlbmFibGVkLCB3aGljaCBpcyBzdGFuZGFyZC4gVGhpcyBtZWFucyBgcWRpc2NfZnJlZV9yY3VgICppc24ndCogZGVjbGFyZWQgc3RhdGljLiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIGFib3V0IGVycm9yIGhhbmRsaW5nIGFuZCByZXNvdXJjZSBjbGVhbnVwIHdpdGhpbiB0aGUgcXVldWluZyBkaXNjaXBsaW5lIGZyYW1ld29yay5cblxuU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIHRoZXkncmUgcmV3b3JraW5nIHRoZSBlcnJvciBwYXRoIGluIGBxZGlzY19jcmVhdGVgIHRvIGxldmVyYWdlIGBxZGlzY19mcmVlX3JjdWAuIE1ha2VzIHNlbnNlIOKAkyBiZXR0ZXIgdG8gaGF2ZSBhIHVuaWZpZWQgY2xlYW51cCBwYXRoLiBJdCdzIGFsc28gY2hhbmdpbmcgaG93IGBfX3FkaXNjX2Rlc3Ryb3lgIGlzIGhhbmRsZWQgdG8gdXNlIGBxZGlzY19mcmVlX3JjdWAuIEFuZCBpZiBJIHJlbWVtYmVyIGNvcnJlY3RseSwgYF9fcWRpc2NfZGVzdHJveWAgaXMgY2FsbGVkIGJ5IGBxZGlzY19kZXN0cm95YCBpdHNlbGYuIEdpdmVuIHRoZXNlIGNoYW5nZXMgdG8gdGhlIGludGVybmFsIHdvcmtpbmdzLCBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBxZGlzY19kZXN0cm95YCBpdHNlbGYgdG8gYmUgY29tcGxldGVseSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTcwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjQwOjAwLjg2MzI0NjExWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTA3OTQzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxZGlzY19kZXN0cm95XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTExMDY9dm9pZCBxZGlzY19mcmVlX3JjdShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTExMC1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTExOnN0YXRpYyB2b2lkIF9fcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExMTIte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEzMi1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTMzOlxcdHRyYWNlX3FkaXNjX2Rlc3Ryb3kocWRpc2MpO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExMzQtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTM3LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjExMzg6dm9pZCBxZGlzY19kZXN0cm95KHN0cnVjdCBRZGlzYyAqcWRpc2MpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEzOS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTQyLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjExNDM6XFx0X19xZGlzY19kZXN0cm95KHFkaXNjKTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTQ0LX1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTExNDY9dm9pZCBxZGlzY19wdXQoc3RydWN0IFFkaXNjICpxZGlzYylcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExNTQtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTE1NTpcXHRfX3FkaXNjX2Rlc3Ryb3kocWRpc2MpO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExNTYtfVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTE2ND12b2lkIHFkaXNjX3B1dF91bmxvY2tlZChzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTE2OS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTcwOlxcdF9fcWRpc2NfZGVzdHJveShxZGlzYyk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTE3MS1cXHRydG5sX3VubG9jaygpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMTo0MDowMC45MTIzMzIzNDVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA3NDYzNDkxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtlcm5lbCdzIFRyYWZmaWMgQ29udHJvbCBNb2R1bGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlc2UgcWRpc2MgZnVuY3Rpb25zIGFyZSBjYWxsZWQuIEl0IHNlZW1zIGBxZGlzY19kZXN0cm95YCwgYHFkaXNjX3B1dGAsIGFuZCBgcWRpc2NfcHV0X3VubG9ja2VkYCBhbGwgdWx0aW1hdGVseSBsZWFkIHRvIGBfX3FkaXNjX2Rlc3Ryb3lgLiBUaGUgcGF0Y2ggaXRzZWxmIGFwcGVhcnMgdG8gd29yayBhbmQgaXMgZGVmaW5pdGVseSBhY2Nlc3NpYmxlIHdpdGhpbiB0aGUgY29kZS5cblxuTXkgcHJpbWFyeSBpbnRlcmVzdCByaWdodCBub3cgbGllcyB3aXRoIHRoZSBzeW1ib2xzIGB0Y19tb2RpZnlfcWRpc2NgLCBgcWRpc2NfZGVzdHJveWAsIGBxZGlzY19wdXRgLCBhbmQgYHFkaXNjX3B1dF91bmxvY2tlZGAuIEFoLCByaWdodCwgYHRjX21vZGlmeV9xZGlzY2AgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBgUlRNX05FV1FESVNDYCwgd2hpY2ggaXMgY3J1Y2lhbC4gYHFkaXNjX2NyZWF0ZWAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLCBzbyBJIGNhbid0IGRpcmVjdGx5IHRhcmdldCB0aGF0LlxuXG5TaW5jZSBJIGNhbid0IGdldCB0byBgcWRpc2NfY3JlYXRlYCwgbGV0J3MgZm9jdXMgb24gYHRjX21vZGlmeV9xZGlzY2AuIExldCBtZSBqdXN0IGRvdWJsZSBjaGVjayBpZiBgdGNfbW9kaWZ5X3FkaXNjYCBpcywgaW4gZmFjdCwgc3RhdGljLi4uIFllcCwgaXQgaXMuIFxuXG5XYWl0LCBpdCdzIHN0YXRpYyBpbiBgbmV0L3NjaGVkL3NjaF9hcGkuY2AuIE5vdywgSSBuZWVkIHRvIGNoZWNrIGBuZXQvc2NoZWQvc2NoX2FwaS5jYCBmb3IgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyB0byBzZWUgd2hhdCBJIGNhbiBhY2Nlc3MgdG8gZnVydGhlciBteSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzg0NiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMTo0MDowNS45ODY5NzA5NzVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MDQ4MDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjX21vZGlmeV9xZGlzY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvc2NoX2FwaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9zY2hfYXBpLmM9MTU5Mj1zdGF0aWMgYm9vbCByZXFfY2hhbmdlKHN0cnVjdCBubG1zZ2hkciAqbilcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTU5OC1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE1OTk6c3RhdGljIGludCBfX3RjX21vZGlmeV9xZGlzYyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm4sXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNjAwLVxcdFxcdFxcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYz0xNzg5PXN0YXRpYyB2b2lkIHJlcXVlc3RfcWRpc2NfbW9kdWxlKHN0cnVjdCBubGF0dHIgKmtpbmQpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE4MTItICovXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxODEzOnN0YXRpYyBpbnQgdGNfbW9kaWZ5X3FkaXNjKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbixcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE4MTQtXFx0XFx0XFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xODM0LVxcdG5ldGRldl9sb2NrX29wcyhkZXYpO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTgzNTpcXHRlcnIgPSBfX3RjX21vZGlmeV9xZGlzYyhza2IsIG4sIGV4dGFjaywgZGV2LCB0Y2EsIHRjbSk7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xODM2LVxcdG5ldGRldl91bmxvY2tfb3BzKGRldik7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTI1MTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBydG5sX21zZ19oYW5kbGVyIHBzY2hlZF9ydG5sX21zZ19oYW5kbGVyc1tdIF9faW5pdGNvbnN0ID0ge1xcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjUxNTpcXHR7Lm1zZ3R5cGUgPSBSVE1fTkVXUURJU0MsIC5kb2l0ID0gdGNfbW9kaWZ5X3FkaXNjfSxcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI1MTYtXFx0ey5tc2d0eXBlID0gUlRNX0RFTFFESVNDLCAuZG9pdCA9IHRjX2dldF9xZGlzY30sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjQwOjA2LjAzNDAyNTk2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NDMzNDQwMTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFFkaXNjIEZ1bmN0aW9uIFZpc2liaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoZSB2aXNpYmlsaXR5IG9mIHRoZXNlIGBxZGlzY2AgZnVuY3Rpb25zIHdpdGhpbiB0aGUga2VybmVsJ3Mgc2NoZWR1bGluZyBpbmZyYXN0cnVjdHVyZS4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIHRoYXQgYHRjX21vZGlmeV9xZGlzY2AgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBJbnRlcmVzdGluZy4gSSBuZWVkIHRvIGJlIGNhcmVmdWwgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQgZm9yIGV4dGVybmFsIHVzZSwgd2hpY2ggaXMgY3JpdGljYWwgaW4gdGhpcyB0eXBlIG9mIG5ldHdvcmsgZGVidWdnaW5nLlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgYHFkaXNjX2Rlc3Ryb3lgIOKAkyB0aGF0J3Mgbm9uLXN0YXRpYy4gU2FtZSBnb2VzIGZvciBgcWRpc2NfcHV0YCwgYW5kIGBxZGlzY19wdXRfdW5sb2NrZWRgLiBBbmQgaG9sZCBvbiwgaGVyZSdzIGBxZGlzY19mcmVlX3JjdWAgLS0gYWxzbyBub24tc3RhdGljLiBJIG5lZWQgdG8ga2VlcCB0aGVzZSBkaXN0aW5jdGlvbnMgaW4gbWluZC4gR2l2ZW4gdGhhdCwgbGV0J3MgcXVpY2tseSBzZWUgaWYgdGhlcmUgYXJlIG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIGBuZXQvc2NoZWQvc2NoX2FwaS5jYCB0aGF0IGNhbGwgYHFkaXNjX2NyZWF0ZWAuIE5vcGUsIGl0IGxvb2tzIGxpa2UgYHFkaXNjX2NyZWF0ZWAgaXMgZXhjbHVzaXZlbHkgY2FsbGVkIGJ5IGBfX3RjX21vZGlmeV9xZGlzY2AsIGFuZCB0aGF0J3Mgb25seSBjYWxsZWQgYnkgYHRjX21vZGlmeV9xZGlzY2AuXG5cbkFoLCBidXQgKndhaXQqLCBgdGNfbW9kaWZ5X3FkaXNjYCBpcyByZWdpc3RlcmVkIGFzIGEgbmV0bGluayBoYW5kbGVyLiBUaGlzIHNpbXBsaWZpZXMgdGhpbmdzIGEgYml0LiBTbyByZWFsbHksIHRoZSBtYWluIGZvY3VzIGJlY29tZXMgdGhlIHZpc2liaWxpdHkgYW5kIGludGVyYWN0aW9uIG9mIHRoZSBvdGhlciBmdW5jdGlvbnMgLSBgcWRpc2NfZGVzdHJveWAsIGBxZGlzY19wdXRgLCBgcWRpc2NfcHV0X3VubG9ja2VkYCwgYW5kIGBxZGlzY19mcmVlX3JjdWAuXG5cbkFuZCBvbmUgbW9yZSB0aGluZywgaXQgbG9va3MgbGlrZSBgcWRpc2NfZnJlZV9yY3VgIGlzIGEgbW9yZSByZWNlbnQgYWRkaXRpb24sIHNvIGl0IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2suIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZGVmaW5pdGlvbiBpbiBgbmV0L3NjaGVkL3NjaF9nZW5lcmljLmNgIHRvIHNlZSBob3cgaXQncyBhY3R1YWxseSB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODM1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjQwOjExLjk3NzM3MjI5OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAwNTg0OTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicWRpc2NfZnJlZV9yY3VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL3NjaF9nZW5lcmljLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTA5OT1zdGF0aWMgdm9pZCBxZGlzY19mcmVlX2NiKHN0cnVjdCByY3VfaGVhZCAqaGVhZClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExMDUtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTEwNjp2b2lkIHFkaXNjX2ZyZWVfcmN1KHN0cnVjdCBRZGlzYyAqcWRpc2MpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEwNy17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xMTExPXN0YXRpYyB2b2lkIF9fcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEzNC1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTM1OlxcdHFkaXNjX2ZyZWVfcmN1KHFkaXNjKTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTM2LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6NDA6MTIuMDI3NDM2MTM0WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNzA0MzgwOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6XG5cbioqSW50ZXJuYWwgUmV2aWV3IG9mIEZ1bmN0aW9uIFZpc2liaWxpdHkqKlxuXG5BbHJpZ2h0LCBzbyBgcWRpc2NfZnJlZV9yY3VgIGlzbid0IHN0YXRpYywgd2hpY2ggaXMgZ29vZCB0byBrbm93LiBOb3csIGEgZm9sbG93LXVwIGlzIG5lY2Vzc2FyeS4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGBxZGlzY19jcmVhdGVfZGZsdGAgaGFzIGJlZW4gZGVjbGFyZWQgc3RhdGljLiBUaGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIGZ1bmN0aW9ucycgdmlzaWJpbGl0eSwgYW5kIHdoZXRoZXIgb3Igbm90IHRoZXJlIGFyZSBleHRlcm5hbCBkZXBlbmRlbmNpZXMsIGFyZSBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIHF1ZXVpbmcgZGlzY2lwbGluZSBvYmplY3RzIGFyZSBiZWluZyBtYW5hZ2VkIGFuZCBhY2Nlc3NlZCB0aHJvdWdob3V0IHRoZSBzeXN0ZW0uIEkgaGF2ZSB0byBhc3Nlc3MgaWYgdGhlcmUgYXJlIGFueSBwb3RlbnRpYWwgZGVzaWduIGNvbnN0cmFpbnRzIG9yIGNvbmZsaWN0cy4gS25vd2luZyB0aGUgc2NvcGUgb2YgdGhlc2UgZnVuY3Rpb25zIHdpbGwgaGVscCBtZSBncmFzcCB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIGhvdyB0aGVzZSBjcnVjaWFsIGFzcGVjdHMgb2YgcGFja2V0IHNjaGVkdWxpbmcgYXJlIGltcGxlbWVudGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5Njg3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6NDA6MTUuMzk3ODc4MDI4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODM1NzQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxZGlzY19jcmVhdGVfZGZsdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz05ODI9c3RydWN0IFFkaXNjICpxZGlzY19hbGxvYyhzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICpkZXZfcXVldWUsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDQwLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEwNDE6c3RydWN0IFFkaXNjICpxZGlzY19jcmVhdGVfZGZsdChzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICpkZXZfcXVldWUsXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTA0Mi1cXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICpvcHMsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDY3LX1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMDY4OkVYUE9SVF9TWU1CT0wocWRpc2NfY3JlYXRlX2RmbHQpO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEwNjktXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xMjEyPXN0YXRpYyB2b2lkIGF0dGFjaF9vbmVfZGVmYXVsdF9xZGlzYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTIyMy1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMjI0OlxcdHFkaXNjID0gcWRpc2NfY3JlYXRlX2RmbHQoZGV2X3F1ZXVlLCBvcHMsIFRDX0hfUk9PVCwgTlVMTCk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTIyNS1cXHRpZiAoIXFkaXNjKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTIzMz1zdGF0aWMgdm9pZCBhdHRhY2hfZGVmYXVsdF9xZGlzY3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEyNDYtXFx0fSBlbHNlIHtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMjQ3OlxcdFxcdHFkaXNjID0gcWRpc2NfY3JlYXRlX2RmbHQodHhxLCBcXHUwMDI2bXFfcWRpc2Nfb3BzLCBUQ19IX1JPT1QsIE5VTEwpO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEyNDgtXFx0XFx0aWYgKHFkaXNjKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjQwOjE1LjQ0NjI0MjMzNFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzQ2MzkyMzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYHFkaXNjX2NyZWF0ZV9kZmx0YCBFeHBvcnQqKlxuXG5Pa2F5LCBzbyBgcWRpc2NfY3JlYXRlX2RmbHRgIGlzIGV4cG9ydGVkLCB0aGF0IG11Y2ggaXMgY2xlYXIuIEJ1dCBoYW5nIG9uLCB0aGlzIHBhdGNoIGlzIGFjdHVhbGx5IGNoYW5naW5nIGBxZGlzY19jcmVhdGVgIGluIGBuZXQvc2NoZWQvc2NoX2FwaS5jYCwgbm90IHRoZSBleHBvcnRlZCBmdW5jdGlvbiBkaXJlY3RseS4gVGhhdCdzIGEgYml0IG9kZC4gQWgsIHJpZ2h0LCBgcWRpc2NfY3JlYXRlYCBpcyBkZWNsYXJlZCAqc3RhdGljKiB3aXRoaW4gYG5ldC9zY2hlZC9zY2hfYXBpLmNgLiBIbW0sIHRoYXQgbWVhbnMgY2hhbmdlcyB0aGVyZSB3b24ndCBkaXJlY3RseSBhZmZlY3QgYW55dGhpbmcgb3V0c2lkZSB0aGUgbW9kdWxlLiBUaGlzIHJlcXVpcmVzIGZ1cnRoZXIgc2NydXRpbnkuXG5cblRoZSBuZXh0IHN0ZXAgaXMgdG8gc2VlIGlmIGFueSBvdGhlciBub24tc3RhdGljIG9yIEVYUE9SVF9TWU1CT0wgZnVuY3Rpb25zIHdpdGhpbiBgbmV0L3NjaGVkL3NjaF9hcGkuY2AgYXJlIGFmZmVjdGVkLiBUaGF0IHNlY3Rpb24gb2YgY29kZSBpcyB0aGUgbW9zdCBsaWtlbHkgbG9jYXRpb24gZm9yIHRoZSByZWxldmFudCBjaGFuZ2VzLCBnaXZlbiB0aGUgaW5pdGlhbCBkZXNjcmlwdGlvbi4gTGV0IG1lIGV4YW1pbmUgYG5ldC9zY2hlZC9zY2hfYXBpLmNgIGFuZCBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzYwLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjQwOjIwLjE5MjYzNzgyNVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg4MjAwNTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVpfXS4qXFxcXCguKlxcXFwpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfYXBpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF9hcGkuYy0xMTgtLyogUHJvdGVjdHMgbGlzdCBvZiByZWdpc3RlcmVkIFRDIG1vZHVsZXMuIEl0IGlzIHB1cmUgU01QIGxvY2suICovXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxMTk6c3RhdGljIERFRklORV9SV0xPQ0socWRpc2NfbW9kX2xvY2spO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTIwLVxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYz0xMjk9c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgKnFkaXNjX2Jhc2U7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTEzMi1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjEzMzppbnQgcmVnaXN0ZXJfcWRpc2Moc3RydWN0IFFkaXNjX29wcyAqcW9wcylcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTEzNC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE3NC19XFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxNzU6RVhQT1JUX1NZTUJPTChyZWdpc3Rlcl9xZGlzYyk7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNzYtXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxNzc6dm9pZCB1bnJlZ2lzdGVyX3FkaXNjKHN0cnVjdCBRZGlzY19vcHMgKnFvcHMpXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNzgte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xOTQtfVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTk1OkVYUE9SVF9TWU1CT0wodW5yZWdpc3Rlcl9xZGlzYyk7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xOTYtXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xOTctLyogR2V0IGRlZmF1bHQgcWRpc2MgaWYgbm90IG90aGVyd2lzZSBzcGVjaWZpZWQgKi9cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE5ODp2b2lkIHFkaXNjX2dldF9kZWZhdWx0KGNoYXIgKm5hbWUsIHNpemVfdCBsZW4pXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xOTkte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yMDQtXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoyMDU6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgKnFkaXNjX2xvb2t1cF9kZWZhdWx0KGNvbnN0IGNoYXIgKm5hbWUpXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yMDYte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yMjAtLyogU2V0IG5ldyBkZWZhdWx0IHFkaXNjIHRvIHVzZSAqL1xcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjIxOmludCBxZGlzY19zZXRfZGVmYXVsdChjb25zdCBjaGFyICpuYW1lKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjIyLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjUwLS8qIFNldCBkZWZhdWx0IHZhbHVlIGZyb20ga2VybmVsIGNvbmZpZyAqL1xcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjUxOnN0YXRpYyBpbnQgX19pbml0IHNjaF9kZWZhdWx0X3FkaXNjKHZvaWQpXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNTIte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNTQtfVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjU1OmxhdGVfaW5pdGNhbGwoc2NoX2RlZmF1bHRfcWRpc2MpO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjU2LSNlbmRpZlxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNjItXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoyNjM6c3RhdGljIHN0cnVjdCBRZGlzYyAqcWRpc2NfbWF0Y2hfZnJvbV9yb290KHN0cnVjdCBRZGlzYyAqcm9vdCwgdTMyIGhhbmRsZSlcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI2NC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI4MS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjI4Mjp2b2lkIHFkaXNjX2hhc2hfYWRkKHN0cnVjdCBRZGlzYyAqcSwgYm9vbCBpbnZpc2libGUpXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yODMte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yOTAtfVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjkxOkVYUE9SVF9TWU1CT0wocWRpc2NfaGFzaF9hZGQpO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjkyLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjkzOnZvaWQgcWRpc2NfaGFzaF9kZWwoc3RydWN0IFFkaXNjICpxKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjk0LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjk5LX1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjMwMDpFWFBPUlRfU1lNQk9MKHFkaXNjX2hhc2hfZGVsKTtcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTMwMS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjMwMjpzdHJ1Y3QgUWRpc2MgKnFkaXNjX2xvb2t1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgaGFuZGxlKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMzAzLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMzE5LVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MzIwOnN0cnVjdCBRZGlzYyAqcWRpc2NfbG9va3VwX3JjdShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgaGFuZGxlKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMzIxLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM9MzM5PXN0YXRpYyBzdHJ1Y3QgUWRpc2MgKnFkaXNjX2xlYWYoc3RydWN0IFFkaXNjICpwLCB1MzIgY2xhc3NpZCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMzU5LVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MzYwOnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzICpxZGlzY19sb29rdXBfb3BzKHN0cnVjdCBubGF0dHIgKmtpbmQpXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0zNjEte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0zOTQtICovXFxubmV0L3NjaGVkL3NjaF9hcGkuYzozOTU6c3RhdGljIF9fdTggX19kZXRlY3RfbGlua2xheWVyKHN0cnVjdCB0Y19yYXRlc3BlYyAqciwgX191MzIgKnJ0YWIpXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0zOTYte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYz00MTc9c3RhdGljIHN0cnVjdCBxZGlzY19yYXRlX3RhYmxlICpxZGlzY19ydGFiX2xpc3Q7XFxubmV0L3NjaGVkL3NjaF9hcGkuYzo0MTg6c3RhdGljIERFRklORV9TUElOTE9DSyhxZGlzY19ydGFiX2xvY2spO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNDE5LVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM9NDIwPXN0cnVjdCBxZGlzY19yYXRlX3RhYmxlICpxZGlzY19nZXRfcnRhYihzdHJ1Y3QgdGNfcmF0ZXNwZWMgKnIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTQ2MC19XFxubmV0L3NjaGVkL3NjaF9hcGkuYzo0NjE6RVhQT1JUX1NZTUJPTChxZGlzY19nZXRfcnRhYik7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy00NjItXFxubmV0L3NjaGVkL3NjaF9hcGkuYzo0NjM6dm9pZCBxZGlzY19wdXRfcnRhYihzdHJ1Y3QgcWRpc2NfcmF0ZV90YWJsZSAqdGFiKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNDY0LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNDg2LX1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjQ4NzpFWFBPUlRfU1lNQk9MKHFkaXNjX3B1dF9ydGFiKTtcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTQ4OC1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjQ4OTpzdGF0aWMgTElTVF9IRUFEKHFkaXNjX3N0YWJfbGlzdCk7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy00OTAtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTQ5Nj1zdGF0aWMgc3RydWN0IHFkaXNjX3NpemVfdGFibGUgKnFkaXNjX2dldF9zdGFiKHN0cnVjdCBubGF0dHIgKm9wdCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNTYwLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6NTYxOnZvaWQgcWRpc2NfcHV0X3N0YWIoc3RydWN0IHFkaXNjX3NpemVfdGFibGUgKnRhYilcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTU2Mi17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTU3MC19XFxubmV0L3NjaGVkL3NjaF9hcGkuYzo1NzE6RVhQT1JUX1NZTUJPTChxZGlzY19wdXRfc3RhYik7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy01NzItXFxubmV0L3NjaGVkL3NjaF9hcGkuYzo1NzM6c3RhdGljIGludCBxZGlzY19kdW1wX3N0YWIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHFkaXNjX3NpemVfdGFibGUgKnN0YWIpXFxubmV0L3NjaGVkL3NjaF9hcGkuYy01NzQte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYz01OTA9dm9pZCBfX3FkaXNjX2NhbGN1bGF0ZV9wa3RfbGVuKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTYxNy1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjYxODpzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgcWRpc2Nfd2F0Y2hkb2coc3RydWN0IGhydGltZXIgKnRpbWVyKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNjE5LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM9NjMwPXZvaWQgcWRpc2Nfd2F0Y2hkb2dfaW5pdF9jbG9ja2lkKHN0cnVjdCBxZGlzY193YXRjaGRvZyAqd2QsIHN0cnVjdCBRZGlzYyAqcWRpc2MsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTYzNS19XFxubmV0L3NjaGVkL3NjaF9hcGkuYzo2MzY6RVhQT1JUX1NZTUJPTChxZGlzY193YXRjaGRvZ19pbml0X2Nsb2NraWQpO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNjM3LVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6NjM4OnZvaWQgcWRpc2Nfd2F0Y2hkb2dfaW5pdChzdHJ1Y3QgcWRpc2Nfd2F0Y2hkb2cgKndkLCBzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNjM5LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNjQxLX1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjY0MjpFWFBPUlRfU1lNQk9MKHFkaXNjX3dhdGNoZG9nX2luaXQpO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNjQzLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM9NjQ0PXZvaWQgcWRpc2Nfd2F0Y2hkb2dfc2NoZWR1bGVfcmFuZ2VfbnMoc3RydWN0IHFkaXNjX3dhdGNoZG9nICp3ZCwgdTY0IGV4cGlyZXMsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTY3MS19XFxubmV0L3NjaGVkL3NjaF9hcGkuYzo2NzI6RVhQT1JUX1NZTUJPTChxZGlzY193YXRjaGRvZ19zY2hlZHVsZV9yYW5nZV9ucyk7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy02NzMtXFxubmV0L3NjaGVkL3NjaF9hcGkuYzo2NzQ6dm9pZCBxZGlzY193YXRjaGRvZ19jYW5jZWwoc3RydWN0IHFkaXNjX3dhdGNoZG9nICp3ZClcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTY3NS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTY3Ny19XFxubmV0L3NjaGVkL3NjaF9hcGkuYzo2Nzg6RVhQT1JUX1NZTUJPTChxZGlzY193YXRjaGRvZ19jYW5jZWwpO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNjc5LVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6NjgwOnN0YXRpYyBzdHJ1Y3QgaGxpc3RfaGVhZCAqcWRpc2NfY2xhc3NfaGFzaF9hbGxvYyh1bnNpZ25lZCBpbnQgbilcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTY4MS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTY5My1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjY5NDp2b2lkIHFkaXNjX2NsYXNzX2hhc2hfZ3JvdyhzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IFFkaXNjX2NsYXNzX2hhc2ggKmNsaGFzaClcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTY5NS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTcyNy19XFxubmV0L3NjaGVkL3NjaF9hcGkuYzo3Mjg6RVhQT1JUX1NZTUJPTChxZGlzY19jbGFzc19oYXNoX2dyb3cpO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNzI5LVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6NzMwOmludCBxZGlzY19jbGFzc19oYXNoX2luaXQoc3RydWN0IFFkaXNjX2NsYXNzX2hhc2ggKmNsaGFzaClcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTczMS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTc0MS19XFxubmV0L3NjaGVkL3NjaF9hcGkuYzo3NDI6RVhQT1JUX1NZTUJPTChxZGlzY19jbGFzc19oYXNoX2luaXQpO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNzQzLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6NzQ0OnZvaWQgcWRpc2NfY2xhc3NfaGFzaF9kZXN0cm95KHN0cnVjdCBRZGlzY19jbGFzc19oYXNoICpjbGhhc2gpXFxubmV0L3NjaGVkL3NjaF9hcGkuYy03NDUte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy03NDctfVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6NzQ4OkVYUE9SVF9TWU1CT0wocWRpc2NfY2xhc3NfaGFzaF9kZXN0cm95KTtcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTc0OS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTc1MD12b2lkIHFkaXNjX2NsYXNzX2hhc2hfaW5zZXJ0KHN0cnVjdCBRZGlzY19jbGFzc19oYXNoICpjbGhhc2gsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTc1OS19XFxubmV0L3NjaGVkL3NjaF9hcGkuYzo3NjA6RVhQT1JUX1NZTUJPTChxZGlzY19jbGFzc19oYXNoX2luc2VydCk7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy03NjEtXFxubmV0L3NjaGVkL3NjaF9hcGkuYz03NjI9dm9pZCBxZGlzY19jbGFzc19oYXNoX3JlbW92ZShzdHJ1Y3QgUWRpc2NfY2xhc3NfaGFzaCAqY2xoYXNoLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy03NjctfVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6NzY4OkVYUE9SVF9TWU1CT0wocWRpc2NfY2xhc3NfaGFzaF9yZW1vdmUpO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNzY5LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy03NzItICovXFxubmV0L3NjaGVkL3NjaF9hcGkuYzo3NzM6c3RhdGljIHUzMiBxZGlzY19hbGxvY19oYW5kbGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTc3NC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTc4OS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjc5MDp2b2lkIHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2coc3RydWN0IFFkaXNjICpzY2gsIGludCBuLCBpbnQgbGVuKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNzkxLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtODI3LX1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjgyODpFWFBPUlRfU1lNQk9MKHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2cpO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtODI5LVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM9ODMwPWludCBxZGlzY19vZmZsb2FkX2R1bXBfaGVscGVyKHN0cnVjdCBRZGlzYyAqc2NoLCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtODQ4LX1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjg0OTpFWFBPUlRfU1lNQk9MKHFkaXNjX29mZmxvYWRfZHVtcF9oZWxwZXIpO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtODUwLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM9ODUxPXZvaWQgcWRpc2Nfb2ZmbG9hZF9ncmFmdF9oZWxwZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IFFkaXNjICpzY2gsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTg3Ny19XFxubmV0L3NjaGVkL3NjaF9hcGkuYzo4Nzg6RVhQT1JUX1NZTUJPTChxZGlzY19vZmZsb2FkX2dyYWZ0X2hlbHBlcik7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy04NzktXFxubmV0L3NjaGVkL3NjaF9hcGkuYz04ODA9dm9pZCBxZGlzY19vZmZsb2FkX3F1ZXJ5X2NhcHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtODk0LX1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjg5NTpFWFBPUlRfU1lNQk9MKHFkaXNjX29mZmxvYWRfcXVlcnlfY2Fwcyk7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy04OTYtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTEwNzE9c3RhdGljIHZvaWQgbm90aWZ5X2FuZF9kZXN0cm95KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTA4Mi1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjEwODM6c3RhdGljIHZvaWQgcWRpc2NfY2xlYXJfbm9sb2NrKHN0cnVjdCBRZGlzYyAqc2NoKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTA4NC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTE0MzY9c3RhdGljIGludCBjaGVja19sb29wX2ZuKHN0cnVjdCBRZGlzYyAqcSwgdW5zaWduZWQgbG9uZyBjbCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTQzOC1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE0Mzk6c3RhdGljIGludCBjaGVja19sb29wKHN0cnVjdCBRZGlzYyAqcSwgc3RydWN0IFFkaXNjICpwLCBpbnQgZGVwdGgpXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNDQwLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM9MTQ1ND1zdGF0aWMgaW50XFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxNDU1OmNoZWNrX2xvb3BfZm4oc3RydWN0IFFkaXNjICpxLCB1bnNpZ25lZCBsb25nIGNsLCBzdHJ1Y3QgcWRpc2Nfd2Fsa2VyICp3KVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTQ1Ni17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTE1NTU9c3RhdGljIGludCB0Y19nZXRfcWRpc2Moc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpuLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNTc5LVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTU4MDpzdGF0aWMgYm9vbCByZXFfY3JlYXRlX29yX3JlcGxhY2Uoc3RydWN0IG5sbXNnaGRyICpuKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTU4MS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE1ODUtXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxNTg2OnN0YXRpYyBib29sIHJlcV9jcmVhdGVfZXhjbHVzaXZlKHN0cnVjdCBubG1zZ2hkciAqbilcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE1ODcte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNTkxLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTU5MjpzdGF0aWMgYm9vbCByZXFfY2hhbmdlKHN0cnVjdCBubG1zZ2hkciAqbilcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE1OTMte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYz0xNTk5PXN0YXRpYyBpbnQgX190Y19tb2RpZnlfcWRpc2Moc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpuLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNzg4LVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTc4OTpzdGF0aWMgdm9pZCByZXF1ZXN0X3FkaXNjX21vZHVsZShzdHJ1Y3QgbmxhdHRyICpraW5kKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTc5MC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTE4NDE9c3RhdGljIGludCB0Y19kdW1wX3FkaXNjX3Jvb3Qoc3RydWN0IFFkaXNjICpyb290LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xODk4LVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTg5OTpzdGF0aWMgaW50IHRjX2R1bXBfcWRpc2Moc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTkwMC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTIxMDU9c3RydWN0IHRjZl9iaW5kX2FyZ3Mge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yMTExLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjExMjpzdGF0aWMgaW50IHRjZl9ub2RlX2JpbmQoc3RydWN0IHRjZl9wcm90byAqdHAsIHZvaWQgKm4sIHN0cnVjdCB0Y2Zfd2Fsa2VyICphcmcpXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yMTEzLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM9MjQxOT1zdGF0aWMgaW50IF9fdGNfZHVtcF90Y2xhc3Moc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNDQzLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjQ0NDpzdGF0aWMgaW50IHRjX2R1bXBfdGNsYXNzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI0NDUte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNDY3LSNpZmRlZiBDT05GSUdfUFJPQ19GU1xcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjQ2ODpzdGF0aWMgaW50IHBzY2hlZF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjQ2OS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI0NzctXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoyNDc4OnN0YXRpYyBpbnQgX19uZXRfaW5pdCBwc2NoZWRfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjQ3OS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI0ODgtXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoyNDg5OnN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgcHNjaGVkX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI0OTAte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNDkzLSNlbHNlXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoyNDk0OnN0YXRpYyBpbnQgX19uZXRfaW5pdCBwc2NoZWRfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjQ5NS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI0OTgtXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoyNDk5OnN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgcHNjaGVkX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI1MDAte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYz0yNTA0PXN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgcHNjaGVkX25ldF9vcHMgPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI1MDktI2lmIElTX0VOQUJMRUQoQ09ORklHX01JVElHQVRJT05fUkVUUE9MSU5FKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjUxMDpERUZJTkVfU1RBVElDX0tFWV9GQUxTRSh0Y19za2lwX3dyYXBwZXJfYWN0KTtcXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjI1MTE6REVGSU5FX1NUQVRJQ19LRVlfRkFMU0UodGNfc2tpcF93cmFwcGVyX2Nscyk7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNTEyLSNlbmRpZlxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYz0yNTE0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRubF9tc2dfaGFuZGxlciBwc2NoZWRfcnRubF9tc2dfaGFuZGxlcnNbXSBfX2luaXRjb25zdCA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjUyNC1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjI1MjU6c3RhdGljIGludCBfX2luaXQgcGt0c2NoZWRfaW5pdCh2b2lkKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjUyNi17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI1NDktXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoyNTUwOnN1YnN5c19pbml0Y2FsbChwa3RzY2hlZF9pbml0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6NDA6MjAuMjQxNDY0ODlaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEzMjEyOTczMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBRZGlzYyBNb2RpZmljYXRpb24gUGF0aCoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdG8gYXBwcm9hY2ggZnV6emluZyB0aGUgcWRpc2MgbW9kaWZpY2F0aW9uIGNvZGUuIFRoZSBzdGFydGluZyBwb2ludCBsb29rcyBsaWtlIGB0Y19tb2RpZnlfcWRpc2NgLCB3aGljaCBpcyB0cmlnZ2VyZWQgYnkgYSBuZXRsaW5rIG1lc3NhZ2UsIHNwZWNpZmljYWxseSBgUlRNX05FV1FESVNDYC4gVGhhdCBuZXRsaW5rIGhhbmRsZXIgaXMgc2V0IHVwIGR1cmluZyBgcGt0c2NoZWRfaW5pdGAuIFNvLCBzZW5kaW5nIGNyYWZ0ZWQgbmV0bGluayBtZXNzYWdlcyB0byBgUlRNX05FV1FESVNDYCBzZWVtcyBsaWtlIHRoZSBkaXJlY3Qgcm91dGUgdG8gZXhlcmNpc2UgdGhpcyBjb2RlLlxuXG5JIG5lZWQgdG8gaWRlbnRpZnkgc29tZSB0YXJnZXQgc3ltYm9scyBmb3IgdGhlIGZ1enppbmcuIExldCdzIHNlZS4uLiBgcWRpc2NfZGVzdHJveWAsIGBxZGlzY19wdXRgLCBgcWRpc2NfcHV0X3VubG9ja2VkYCwgYHFkaXNjX2ZyZWVfcmN1YCwgYW5kIGBxZGlzY19jcmVhdGVfZGZsdGAgYWxsIGxvb2sgaW50ZXJlc3RpbmcuIFdhaXQgYSBtaW51dGUsIGBxZGlzY19mcmVlX3JjdWAgaXMgdGhlIG5ldyBmdW5jdGlvbiwgc28gbGV0J3MgY2hlY2sgdGhhdCBmaXJzdC4gQSBxdWljayBjaGVjayBvZiB0aGUgc291cmNlIHRyZWUgY29uZmlybXMgdGhhdCBpdCByZXNpZGVzIGluIGBuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY2AuIE5vdywgSSBzaG91bGQgcHJvYmFibHkgYWxzbyBleGFtaW5lIHRoYXQgZmlsZSBmb3IgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIG9mIGludGVyZXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTc5MSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMTo0MDoyNS4zNzM1OTg3MDJaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5NjU3MjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX10uKlxcXFwoLipcXFxcKVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0zNz1jb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICpkZWZhdWx0X3FkaXNjX29wcyA9IFxcdTAwMjZwZmlmb19mYXN0X29wcztcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzozODpFWFBPUlRfU1lNQk9MKGRlZmF1bHRfcWRpc2Nfb3BzKTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0zOS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz00MD12b2lkIF9fdGNmX2tmcmVlX3NrYl9saXN0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqcSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTYyLX1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo2MzpFWFBPUlRfU1lNQk9MKF9fdGNmX2tmcmVlX3NrYl9saXN0KTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02NC1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz02NT1zdGF0aWMgdm9pZCBxZGlzY19tYXliZV9jbGVhcl9taXNzZWQoc3RydWN0IFFkaXNjICpxLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTgtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6OTk6c3RhdGljIGlubGluZSBzdHJ1Y3Qgc2tfYnVmZiAqX19za2JfZGVxdWV1ZV9iYWRfdHhxKHN0cnVjdCBRZGlzYyAqcSlcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDAte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTM0LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEzNTpzdGF0aWMgaW5saW5lIHN0cnVjdCBza19idWZmICpxZGlzY19kZXF1ZXVlX3NrYl9iYWRfdHhxKHN0cnVjdCBRZGlzYyAqcSlcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMzYte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTQ1PXN0YXRpYyBpbmxpbmUgdm9pZCBxZGlzY19lbnF1ZXVlX3NrYl9iYWRfdHhxKHN0cnVjdCBRZGlzYyAqcSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE2OC1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxNjk6c3RhdGljIGlubGluZSB2b2lkIGRldl9yZXF1ZXVlX3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnEpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTcwLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTM0ND1ib29sIHNjaF9kaXJlY3RfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnEsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy00MTctICovXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NDE4OnN0YXRpYyBpbmxpbmUgYm9vbCBxZGlzY19yZXN0YXJ0KHN0cnVjdCBRZGlzYyAqcSwgaW50ICpwYWNrZXRzLCBpbnQgYnVkZ2V0KVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTQxOS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy00MzktXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NDQwOnZvaWQgX19xZGlzY19ydW4oc3RydWN0IFFkaXNjICpxKVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTQ0MS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy00NTctXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NDU4OnVuc2lnbmVkIGxvbmcgZGV2X3RyYW5zX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNDU5LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTQ3MS19XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NDcyOkVYUE9SVF9TWU1CT0woZGV2X3RyYW5zX3N0YXJ0KTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy00NzMtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NDc0OnN0YXRpYyB2b2lkIG5ldGlmX2ZyZWV6ZV9xdWV1ZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy00NzUte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNDk0LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjQ5NTp2b2lkIG5ldGlmX3R4X2xvY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy00OTYte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNDk5LX1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo1MDA6RVhQT1JUX1NZTUJPTChuZXRpZl90eF9sb2NrKTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy01MDEtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NTAyOnN0YXRpYyB2b2lkIG5ldGlmX3VuZnJlZXplX3F1ZXVlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTUwMy17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy01MTctXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NTE4OnZvaWQgbmV0aWZfdHhfdW5sb2NrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNTE5LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTUyMi19XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NTIzOkVYUE9SVF9TWU1CT0wobmV0aWZfdHhfdW5sb2NrKTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy01MjQtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NTI1OnN0YXRpYyB2b2lkIGRldl93YXRjaGRvZyhzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy01MjYte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNTkwLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjU5MTp2b2lkIG5ldGRldl93YXRjaGRvZ191cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTU5Mi17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02MDgtfVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjYwOTpFWFBPUlRfU1lNQk9MX0dQTChuZXRkZXZfd2F0Y2hkb2dfdXApO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTYxMC1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo2MTE6c3RhdGljIHZvaWQgbmV0ZGV2X3dhdGNoZG9nX2Rvd24oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02MTIte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNjMwLSAqL1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjYzMTp2b2lkIG5ldGlmX2NhcnJpZXJfb24oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02MzIte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNjQyLX1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo2NDM6RVhQT1JUX1NZTUJPTChuZXRpZl9jYXJyaWVyX29uKTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02NDQtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02NTAtICovXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NjUxOnZvaWQgbmV0aWZfY2Fycmllcl9vZmYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02NTIte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNjU5LX1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo2NjA6RVhQT1JUX1NZTUJPTChuZXRpZl9jYXJyaWVyX29mZik7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNjYxLVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNjY5LSAqL1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjY3MDp2b2lkIG5ldGlmX2NhcnJpZXJfZXZlbnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02NzEte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNjc3LX1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo2Nzg6RVhQT1JUX1NZTUJPTF9HUEwobmV0aWZfY2Fycmllcl9ldmVudCk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNjc5LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9Njg1PXN0YXRpYyBpbnQgbm9vcF9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqcWRpc2MsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02OTItXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NjkzOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbm9vcF9kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqcWRpc2MpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNjk0LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTcxMj1zdHJ1Y3QgUWRpc2Mgbm9vcF9xZGlzYyA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTczMS19O1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjczMjpFWFBPUlRfU1lNQk9MKG5vb3BfcWRpc2MpO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTczMy1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTc1ND1jb25zdCB1OCBzY2hfZGVmYXVsdF9wcmlvMmJhbmRbVENfUFJJT19NQVggKyAxXSA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTc1Ni19O1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjc1NzpFWFBPUlRfU1lNQk9MKHNjaF9kZWZhdWx0X3ByaW8yYmFuZCk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNzU4LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9Nzc5PXN0YXRpYyBpbnQgcGZpZm9fZmFzdF9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqcWRpc2MsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy04MDItXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6ODAzOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcGZpZm9fZmFzdF9kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqcWRpc2MpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtODA0LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTg0My1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo4NDQ6c3RhdGljIHN0cnVjdCBza19idWZmICpwZmlmb19mYXN0X3BlZWsoc3RydWN0IFFkaXNjICpxZGlzYylcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy04NDUte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtODU4LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjg1OTpzdGF0aWMgdm9pZCBwZmlmb19mYXN0X3Jlc2V0KHN0cnVjdCBRZGlzYyAqcWRpc2MpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtODYwLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTg4OC1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo4ODk6c3RhdGljIGludCBwZmlmb19mYXN0X2R1bXAoc3RydWN0IFFkaXNjICpxZGlzYywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy04OTAte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9OTAyPXN0YXRpYyBpbnQgcGZpZm9fZmFzdF9pbml0KHN0cnVjdCBRZGlzYyAqcWRpc2MsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTkyNi1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo5Mjc6c3RhdGljIHZvaWQgcGZpZm9fZmFzdF9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTkyOC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz05NjQ9c3RydWN0IFFkaXNjX29wcyBwZmlmb19mYXN0X29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTc3LX07XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6OTc4OkVYUE9SVF9TWU1CT0wocGZpZm9fZmFzdF9vcHMpO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTk3OS1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTEwNDE9c3RydWN0IFFkaXNjICpxZGlzY19jcmVhdGVfZGZsdChzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICpkZXZfcXVldWUsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDY3LX1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMDY4OkVYUE9SVF9TWU1CT0wocWRpc2NfY3JlYXRlX2RmbHQpO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEwNjktXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDcxLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEwNzI6dm9pZCBxZGlzY19yZXNldChzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEwNzMte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTA4Ni19XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTA4NzpFWFBPUlRfU1lNQk9MKHFkaXNjX3Jlc2V0KTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDg4LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEwODk6dm9pZCBxZGlzY19mcmVlKHN0cnVjdCBRZGlzYyAqcWRpc2MpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTA5MC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDk4LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEwOTk6c3RhdGljIHZvaWQgcWRpc2NfZnJlZV9jYihzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEwMC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTA1LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjExMDY6dm9pZCBxZGlzY19mcmVlX3JjdShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExMDcte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTExMC1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTExOnN0YXRpYyB2b2lkIF9fcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExMTIte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEzNy1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTM4OnZvaWQgcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExMzkte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTE0NS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTQ2OnZvaWQgcWRpc2NfcHV0KHN0cnVjdCBRZGlzYyAqcWRpc2MpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTE0Ny17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTU2LX1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTU3OkVYUE9SVF9TWU1CT0wocWRpc2NfcHV0KTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTU4LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTE2My1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTY0OnZvaWQgcWRpc2NfcHV0X3VubG9ja2VkKHN0cnVjdCBRZGlzYyAqcWRpc2MpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTE2NS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTcyLX1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTczOkVYUE9SVF9TWU1CT0wocWRpc2NfcHV0X3VubG9ja2VkKTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTc0LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTE3Nj1zdHJ1Y3QgUWRpc2MgKmRldl9ncmFmdF9xZGlzYyhzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICpkZXZfcXVldWUsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTk0LX1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTk1OkVYUE9SVF9TWU1CT0woZGV2X2dyYWZ0X3FkaXNjKTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTk2LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTIxMj1zdGF0aWMgdm9pZCBhdHRhY2hfb25lX2RlZmF1bHRfcWRpc2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEyMzItXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTIzMzpzdGF0aWMgdm9pZCBhdHRhY2hfZGVmYXVsdF9xZGlzY3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMjM0LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTEyNzQ9c3RhdGljIHZvaWQgdHJhbnNpdGlvbl9vbmVfcWRpc2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEyOTAtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTI5MTp2b2lkIGRldl9hY3RpdmF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEyOTIte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTMxNi19XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTMxNzpFWFBPUlRfU1lNQk9MKGRldl9hY3RpdmF0ZSk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTMxOC1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMzE5OnN0YXRpYyB2b2lkIHFkaXNjX2RlYWN0aXZhdGUoc3RydWN0IFFkaXNjICpxZGlzYylcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMzIwLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTEzMjc9c3RhdGljIHZvaWQgZGV2X2RlYWN0aXZhdGVfcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEzNDItXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTM0MzpzdGF0aWMgYm9vbCBzb21lX3FkaXNjX2lzX2J1c3koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMzQ0LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEzNzctICovXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTM3ODp2b2lkIGRldl9kZWFjdGl2YXRlX21hbnkoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCwgYm9vbCByZXNldF9uZWVkZWQpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTM3OS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDE4LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0MTk6dm9pZCBkZXZfZGVhY3RpdmF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIHJlc2V0X25lZWRlZClcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDIwLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0MjYtfVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0Mjc6RVhQT1JUX1NZTUJPTChkZXZfZGVhY3RpdmF0ZSk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTQyOC1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTE0NDA9dm9pZCBkZXZfcWRpc2NfY2hhbmdlX3JlYWxfbnVtX3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDQ4LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0NDk6dm9pZCBtcV9jaGFuZ2VfcmVhbF9udW1fdHgoc3RydWN0IFFkaXNjICpzY2gsIHVuc2lnbmVkIGludCBuZXdfcmVhbF90eClcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDUwLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0NzAtfVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0NzE6RVhQT1JUX1NZTUJPTChtcV9jaGFuZ2VfcmVhbF9udW1fdHgpO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0NzItXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTQ3MzppbnQgZGV2X3FkaXNjX2NoYW5nZV90eF9xdWV1ZV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDc0LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTE0OTU9c3RhdGljIHZvaWQgZGV2X2luaXRfc2NoZWR1bGVyX3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNTA0LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE1MDU6dm9pZCBkZXZfaW5pdF9zY2hlZHVsZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNTA2LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1MTQtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTUxNTp2b2lkIGRldl9zaHV0ZG93bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1MTYte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTU0OC0gKi9cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxNTQ5OnN0YXRpYyB2b2lkIHBzY2hlZF9yYXRlY2ZnX3ByZWNvbXB1dGVfXyh1NjQgcmF0ZSwgdTMyICptdWx0LCB1OCAqc2hpZnQpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTU1MC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xNTY4PXZvaWQgcHNjaGVkX3JhdGVjZmdfcHJlY29tcHV0ZShzdHJ1Y3QgcHNjaGVkX3JhdGVjZmcgKnIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNTc4LX1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxNTc5OkVYUE9SVF9TWU1CT0wocHNjaGVkX3JhdGVjZmdfcHJlY29tcHV0ZSk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTU4MC1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxNTgxOnZvaWQgcHNjaGVkX3Bwc2NmZ19wcmVjb21wdXRlKHN0cnVjdCBwc2NoZWRfcGt0cmF0ZSAqciwgdTY0IHBrdHJhdGU2NClcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNTgyLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1ODUtfVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE1ODY6RVhQT1JUX1NZTUJPTChwc2NoZWRfcHBzY2ZnX3ByZWNvbXB1dGUpO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1ODctXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTU4OD12b2lkIG1pbmlfcWRpc2NfcGFpcl9zd2FwKHN0cnVjdCBtaW5pX1FkaXNjX3BhaXIgKm1pbmlxcCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE2MjQtfVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE2MjU6RVhQT1JUX1NZTUJPTChtaW5pX3FkaXNjX3BhaXJfc3dhcCk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTYyNi1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xNjI3PXZvaWQgbWluaV9xZGlzY19wYWlyX2Jsb2NrX2luaXQoc3RydWN0IG1pbmlfUWRpc2NfcGFpciAqbWluaXFwLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTYzMi19XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTYzMzpFWFBPUlRfU1lNQk9MKG1pbmlfcWRpc2NfcGFpcl9ibG9ja19pbml0KTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNjM0LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTE2MzU9dm9pZCBtaW5pX3FkaXNjX3BhaXJfaW5pdChzdHJ1Y3QgbWluaV9RZGlzY19wYWlyICptaW5pcXAsIHN0cnVjdCBRZGlzYyAqcWRpc2MsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNjQ1LX1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxNjQ2OkVYUE9SVF9TWU1CT0wobWluaV9xZGlzY19wYWlyX2luaXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMTo0MDoyNS40NDMyNjI4MDVaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA0OTYwMzQ0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTmV0d29yayBTY2hlZHVsZXIgQ2xlYW51cCBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBuZXR3b3JrIHNjaGVkdWxlciBmdW5jdGlvbnMuIEl0IHNlZW1zIHRoYXQgYHFkaXNjX2ZyZWVfcmN1YCwgYHFkaXNjX2ZyZWVgLCBgcWRpc2NfZGVzdHJveWAsIGBxZGlzY19wdXRgLCBhbmQgYHFkaXNjX3B1dF91bmxvY2tlZGAgYXJlIGFsbCBub24tc3RhdGljLiBJbnRlcmVzdGluZy4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIHN1c3BlY3QgdGhpcyBtZWFucyB0aGV5J3JlIGludGVuZGVkIHRvIGJlIGNhbGxhYmxlIGZyb20gb3V0c2lkZSB0aGUgaW1tZWRpYXRlIG1vZHVsZS4gSSB0aGluayB3ZSBjYW4gZm9jdXMgb3VyIGF0dGVudGlvbiBmb3Igbm93IG9uIGBxZGlzY19mcmVlX3JjdWAgYW5kIGBxZGlzY19kZXN0cm95YCBhcyBsaWtlbHkgY2FuZGlkYXRlcyBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uLiBXZSdyZSBkZWFsaW5nIHdpdGggdGhlIG5ldHdvcmsgc2NoZWR1bGVyLCBzbyB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbiBoZXJlIGlzIGFsbW9zdCBjZXJ0YWlubHkgYENPTkZJR19ORVRfU0NIRURgLiBOb3cgSSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgYENPTkZJR19ORVRfU0NIRURgIGhhcyBhbnkgZGVwZW5kZW5jaWVzLiBUaGF0J3MgdGhlIG5leHQgbG9naWNhbCBzdGVwLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wYWN0IG9uIHRoZSBsYXJnZXIgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTE5MSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMTo0MDoyOS40OTI4Njg3MjlaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NzQxMDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfU0NIRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWctNS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXFxubmV0L3NjaGVkL0tjb25maWctNy1cXHRib29sIFxcXCJRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjQwOjI5LjUzOTYxODExNFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTc3Mzk3Mzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipFeGFtaW5pbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIFNjaGVkdWxpbmcgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nLCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgaXQncyBwcnVkZW50IHRvIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGZvciBgTkVUX1NDSEVEYC4gV2UncmUgZGVhbGluZyB3aXRoIG5ldHdvcmsgc2NoZWR1bGluZyBoZXJlLCBhIGNvcmUgcGFydCBvZiB0aGUga2VybmVsJ3MgdHJhZmZpYyBzaGFwaW5nIGFuZCBxdWV1aW5nIG1lY2hhbmlzbXMuIEJlc3QgdG8gc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBuZXQvc2NoZWQvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgYWxsIHRob3NlIGxvd2VyLWxldmVsIGRlcGVuZGVuY2llcyBhcmUgZGVmaW5lZC4gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHdoYXQgb3RoZXIgZmVhdHVyZXMgb3IgbW9kdWxlcyAqbXVzdCogYmUgZW5hYmxlZCBvciBjb25maWd1cmVkIGFwcHJvcHJpYXRlbHkgZm9yIGBORVRfU0NIRURgIHRvIGV2ZW4gYmUgY29uc2lkZXJlZC4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgc3BlY2lmaWMgbmV0d29yayBzdGFjayBvcHRpb25zLCBjZXJ0YWluIGhhcmR3YXJlIGRyaXZlcnMsIG9yIHBlcmhhcHMgYSByZXF1aXJlbWVudCBmb3IgcGFydGljdWxhciBRb1Mgc2V0dGluZ3M/IEkgbmVlZCB0byBrbm93IHdoZXJlIGl0IHN0YW5kcyB3aXRoaW4gdGhlIGNvbmZpZ3VyYXRpb24gbWF0cml4LiBUaGlzIGVhcmx5IHNhbml0eSBjaGVjayB3aWxsIGluZm9ybSB0aGUgZm9sbG93aW5nIHN0ZXBzIGFuZCBhdm9pZHMgc3VycHJpc2VzIGxhdGVyIG9uLiBJdCdsbCBhbHNvIGxpa2VseSBnaXZlIG1lIGhpbnRzIG9uIGhvdyBteSBjdXJyZW50IHByb2plY3QgbWlnaHQgYmUgYWZmZWN0ZWQuIEdvdHRhIG1hcCB0aGUgbGFuZHNjYXBlIGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE1ODUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMTo0MDozNC41MTcwMTc5MDJaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3NjaGVkL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgVHJhZmZpYyBjb250cm9sIGNvbmZpZ3VyYXRpb24uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnVjb25maWcgTkVUX1NDSEVEXFxuICAgNzpcXHRcXHRib29sIFxcXCJRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcXFwiXFxuICAgODpcXHRcXHRzZWxlY3QgTkVUX1NDSF9GSUZPXFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHQgIFdoZW4gdGhlIGtlcm5lbCBoYXMgc2V2ZXJhbCBwYWNrZXRzIHRvIHNlbmQgb3V0IG92ZXIgYSBuZXR3b3JrXFxuICAxMTpcXHRcXHQgIGRldmljZSwgaXQgaGFzIHRvIGRlY2lkZSB3aGljaCBvbmVzIHRvIHNlbmQgZmlyc3QsIHdoaWNoIG9uZXMgdG9cXG4gIDEyOlxcdFxcdCAgZGVsYXksIGFuZCB3aGljaCBvbmVzIHRvIGRyb3AuIFRoaXMgaXMgdGhlIGpvYiBvZiB0aGUgcXVldWVpbmdcXG4gIDEzOlxcdFxcdCAgZGlzY2lwbGluZXMsIHNldmVyYWwgZGlmZmVyZW50IGFsZ29yaXRobXMgZm9yIGhvdyB0byBkbyB0aGlzXFxuICAxNDpcXHRcXHQgIFxcXCJmYWlybHlcXFwiIGhhdmUgYmVlbiBwcm9wb3NlZC5cXG4gIDE1OlxcdFxcbiAgMTY6XFx0XFx0ICBJZiB5b3Ugc2F5IE4gaGVyZSwgeW91IHdpbGwgZ2V0IHRoZSBzdGFuZGFyZCBwYWNrZXQgc2NoZWR1bGVyLCB3aGljaFxcbiAgMTc6XFx0XFx0ICBpcyBhIEZJRk8gKGZpcnN0IGNvbWUsIGZpcnN0IHNlcnZlZCkuIElmIHlvdSBzYXkgWSBoZXJlLCB5b3Ugd2lsbCBiZVxcbiAgMTg6XFx0XFx0ICBhYmxlIHRvIGNob29zZSBmcm9tIGFtb25nIHNldmVyYWwgYWx0ZXJuYXRpdmUgYWxnb3JpdGhtcyB3aGljaCBjYW5cXG4gIDE5OlxcdFxcdCAgdGhlbiBiZSBhdHRhY2hlZCB0byBkaWZmZXJlbnQgbmV0d29yayBkZXZpY2VzLiBUaGlzIGlzIHVzZWZ1bCBmb3JcXG4gIDIwOlxcdFxcdCAgZXhhbXBsZSBpZiBzb21lIG9mIHlvdXIgbmV0d29yayBkZXZpY2VzIGFyZSByZWFsIHRpbWUgZGV2aWNlcyB0aGF0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjQwOjM0LjUxNzEwMDg2MloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NjQzNTE4OTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBgTkVUX1NDSEVEYCBDb25maWd1cmF0aW9uIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUgaXMgYE5FVF9TQ0hFRGAuIExldCBtZSBzdW1tYXJpemUgbXkgZmluZGluZ3MgZm9yIHRoaXMgcG90ZW50aWFsIGZ1enppbmcgdGFyZ2V0LiBUaGUgcGF0Y2ggc2VlbXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCB0b3VjaGVzIG9uIGNyaXRpY2FsIHJlc291cmNlIG1hbmFnZW1lbnQgd2l0aGluIHRoZSBuZXR3b3JrIHNjaGVkdWxpbmcgc3Vic3lzdGVtLlxuXG5IZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzOiBUaGUgbW9zdCBpbXBvcnRhbnQgdGhpbmcgaXMgdGhhdCBgV29ydGhGdXp6aW5nYCBpcyBgdHJ1ZWAsIHdoaWNoIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC5cblxuVGhlIGNvcmUgb2YgdGhpcyByZXZvbHZlcyBhcm91bmQgdGhlc2Ugc3ltYm9sczogYHFkaXNjX2ZyZWVfcmN1YCwgYHFkaXNjX2Rlc3Ryb3lgLCBgcWRpc2NfcHV0YCwgYW5kIGBxZGlzY19wdXRfdW5sb2NrZWRgLlxuXG5UaGUgY3JpdGljYWwgcmVhc29uaW5nIGJlaGluZCBzZWxlY3RpbmcgdGhlc2Ugc3ltYm9scyBpcyB0aGUgcGF0Y2gncyBtb2RpZmljYXRpb24gb2YgdGhlIGVycm9yIHBhdGggb2YgYHFkaXNjX2NyZWF0ZWAuIFRoZSBvcmlnaW5hbCBgcWRpc2NfZnJlZWAgaXMgcmVwbGFjZWQgd2l0aCBgcWRpc2NfZnJlZV9yY3VgLCBhbmQgYF9fcWRpc2NfZGVzdHJveWAgaXMgdXBkYXRlZCB0byB1dGlsaXplIGBxZGlzY19mcmVlX3JjdWAgYXMgd2VsbC4gVGhpcyBzdWJzdGl0dXRpb24gc3VnZ2VzdHMgYSBmaXggZm9yIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJhY2UgY29uZGl0aW9uLCBhZGRyZXNzaW5nIHNjZW5hcmlvcyB3aGVyZSBSQ1UgKFJlYWQtQ29weS1VcGRhdGUpIHNlbWFudGljcyB3ZXJlIHJlcXVpcmVkIGJ1dCBub3QgcHJldmlvdXNseSB1c2VkLiBUaGUgY29kZSBhcHBlYXJzIHRvIGJlIHJlYWNoYWJsZSB2aWEgbmV0bGluayBgUlRNX05FV1FESVNDYCBtZXNzYWdlcy4gVGhpcyBtYWtlcyBpdCBhbiBlc3BlY2lhbGx5IGFwcGVhbGluZyB0YXJnZXQuXG5cblRoZSBhZGRlZCBgcWRpc2NfZnJlZV9yY3VgIGlzIGEga2V5IGZvY3VzIGJlY2F1c2UgaXQncyBuZXcgYW5kIGxpa2VseSBoYXMgc29tZSBpbnRlcmVzdGluZyBjb2RlIHBhdGhzLiBgcWRpc2NfZGVzdHJveWAgaXMgbW9kaWZpZWQgdG8gdXNlIGl0LiBOb3csIGxldCdzIGp1c3QgZG8gYSBxdWljayBjaGVjayB0byBzZWUgaWYgYHFkaXNjX2NyZWF0ZWAgaXMgaW5saW5lZCwgb3Igc3RhdGljYWxseSBkZWZpbmVkLiBJdCBpcyBzdGF0aWMuIGB0Y19tb2RpZnlfcWRpc2NgIGlzIHRoZSBuZXRsaW5rIGhhbmRsZXIsIGFsc28gc3RhdGljLlxuXG5JJ20gY29uZmlkZW50IGluIHRoZSBpbml0aWFsIHN5bWJvbHMsIHNvIEkgdGhpbmsgYWRkaW5nIGBxZGlzY19mcmVlX3JjdWAsIGBxZGlzY19kZXN0cm95YCwgYHFkaXNjX3B1dGAsIGFuZCBgcWRpc2NfcHV0X3VubG9ja2VkYCBhcyBmb2N1cyBzeW1ib2xzIHdpbGwgYmUgY29ycmVjdC5cblxuT25lIGxhc3QgY2hlY2s6IEknbGwgcXVpY2tseSB2ZXJpZnkgdGhhdCBgcWRpc2NfZnJlZV9yY3VgIGlzIGRlZmluaXRlbHkgZGVmaW5lZCBpbiBgbmV0L3NjaGVkL3NjaF9nZW5lcmljLmNgIGFzIGB2b2lkIHFkaXNjX2ZyZWVfcmN1KHN0cnVjdCBRZGlzYyAqcWRpc2MpYCB0byBtYWtlIHN1cmUgaXQncyBub3QgYmVpbmcgaW5saW5lZC4gWWVzLCB0aGF0J3MgY29ycmVjdC5cblxuQWxyaWdodCwgSSdtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoZXNlIHZhbHVlcyBub3cuIFRoaXMgc2VlbXMgbGlrZSBhIHByb21pc2luZyBwYXRoIGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjE1NywiT3V0cHV0VG9rZW5zIjoxNzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMTo0MDo0My4xNjA2MjIyOTRaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTE5NzIxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSEVEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicWRpc2NfZnJlZV9yY3VcIixcbiAgICBcInFkaXNjX2Rlc3Ryb3lcIixcbiAgICBcInFkaXNjX3B1dFwiLFxuICAgIFwicWRpc2NfcHV0X3VubG9ja2VkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIHBhdGggb2YgYHFkaXNjX2NyZWF0ZWAgYW5kIHRoZSBkZXN0cnVjdGlvbiBwYXRoIGluIGBfX3FkaXNjX2Rlc3Ryb3lgIHRvIHVzZSBhIG5ld2x5IGludHJvZHVjZWQgYHFkaXNjX2ZyZWVfcmN1YCBmdW5jdGlvbiBpbnN0ZWFkIG9mIGZyZWVpbmcgdGhlIHFkaXNjIGRpcmVjdGx5IG9yIGNhbGxpbmcgYGNhbGxfcmN1YCBtYW51YWxseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgUkNVLXJlbGF0ZWQgaXNzdWUuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBgUlRNX05FV1FESVNDYCBhbmQgYFJUTV9ERUxRRElTQ2AgbWVzc2FnZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSEVEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicWRpc2NfZnJlZV9yY3VcIixcbiAgICBcInFkaXNjX2Rlc3Ryb3lcIixcbiAgICBcInFkaXNjX3B1dFwiLFxuICAgIFwicWRpc2NfcHV0X3VubG9ja2VkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIHBhdGggb2YgYHFkaXNjX2NyZWF0ZWAgYW5kIHRoZSBkZXN0cnVjdGlvbiBwYXRoIGluIGBfX3FkaXNjX2Rlc3Ryb3lgIHRvIHVzZSBhIG5ld2x5IGludHJvZHVjZWQgYHFkaXNjX2ZyZWVfcmN1YCBmdW5jdGlvbiBpbnN0ZWFkIG9mIGZyZWVpbmcgdGhlIHFkaXNjIGRpcmVjdGx5IG9yIGNhbGxpbmcgYGNhbGxfcmN1YCBtYW51YWxseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgUkNVLXJlbGF0ZWQgaXNzdWUuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBgUlRNX05FV1FESVNDYCBhbmQgYFJUTV9ERUxRRElTQ2AgbWVzc2FnZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflownsd72[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-05 11:21:15 +0000 UTC FinishedAt: 2026-08-05 11:40:44 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_SCHED" ], "series_id": "1dd4e712-c3f3-45a9-9ed1-0793f10110c7" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "qdisc_free_rcu", "qdisc_destroy", "qdisc_put", "qdisc_put_unlocked" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9TQ0hFRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3FkaXNjX2ZyZWVfcmN1JiMzNDssCiAgICAmIzM0O3FkaXNjX2Rlc3Ryb3kmIzM0OywKICAgICYjMzQ7cWRpc2NfcHV0JiMzNDssCiAgICAmIzM0O3FkaXNjX3B1dF91bmxvY2tlZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgcGF0aCBvZiBgcWRpc2NfY3JlYXRlYCBhbmQgdGhlIGRlc3RydWN0aW9uIHBhdGggaW4gYF9fcWRpc2NfZGVzdHJveWAgdG8gdXNlIGEgbmV3bHkgaW50cm9kdWNlZCBgcWRpc2NfZnJlZV9yY3VgIGZ1bmN0aW9uIGluc3RlYWQgb2YgZnJlZWluZyB0aGUgcWRpc2MgZGlyZWN0bHkgb3IgY2FsbGluZyBgY2FsbF9yY3VgIG1hbnVhbGx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBSQ1UtcmVsYXRlZCBpc3N1ZS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGBSVE1fTkVXUURJU0NgIGFuZCBgUlRNX0RFTFFESVNDYCBtZXNzYWdlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTozOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDgzNDAyYzQxYzQyZGFjZjZjNjJjODAxNjQ0MDdmNDhlNjg5OTQzZWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDExOjM5OjI0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmggYi9pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oXG5pbmRleCA0NWExZThjNzgyMjJiLi5kNDU0NDJjOTI2MjFiIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaFxuQEAgLTc5Myw2ICYjNDM7NzkzLDcgQEAgc3RydWN0IFFkaXNjICpxZGlzY19hbGxvYyhzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICpkZXZfcXVldWUsXG4gXHRcdFx0ICBjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICpvcHMsXG4gXHRcdFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuIHZvaWQgcWRpc2NfZnJlZShzdHJ1Y3QgUWRpc2MgKnFkaXNjKTtcbiYjNDM7dm9pZCBxZGlzY19mcmVlX3JjdShzdHJ1Y3QgUWRpc2MgKnFkaXNjKTtcbiBzdHJ1Y3QgUWRpc2MgKnFkaXNjX2NyZWF0ZV9kZmx0KHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSxcbiBcdFx0XHRcdGNvbnN0IHN0cnVjdCBRZGlzY19vcHMgKm9wcywgdTMyIHBhcmVudGlkLFxuIFx0XHRcdFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcbmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2FwaS5jIGIvbmV0L3NjaGVkL3NjaF9hcGkuY1xuaW5kZXggNjY4YmNkNjBkMTgzZS4uMDQxYmQ2MDA3MjAxNiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfYXBpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfYXBpLmNcbkBAIC0xMzczLDcgJiM0MzsxMzczLDcgQEAgc3RhdGljIHN0cnVjdCBRZGlzYyAqcWRpc2NfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gZXJyX291dDM6XG4gXHRxZGlzY19sb2NrX3VuaW5pdChzY2gsIG9wcyk7XG4gXHRuZXRkZXZfcHV0KGRldiwgXHUwMDI2c2NoLVx1MDAzZWRldl90cmFja2VyKTtcbi1cdHFkaXNjX2ZyZWUoc2NoKTtcbiYjNDM7XHRxZGlzY19mcmVlX3JjdShzY2gpO1xuIGVycl9vdXQyOlxuIFx0YnBmX21vZHVsZV9wdXQob3BzLCBvcHMtXHUwMDNlb3duZXIpO1xuIGVycl9vdXQ6XG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmMgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1xuaW5kZXggZWYyYjRiZjUxNTY0MS4uODZkNTUxZmJhYmNjMiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1xuQEAgLTExMDMsNiAmIzQzOzExMDMsMTEgQEAgc3RhdGljIHZvaWQgcWRpc2NfZnJlZV9jYihzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXG4gXHRxZGlzY19mcmVlKHEpO1xuIH1cbiBcbiYjNDM7dm9pZCBxZGlzY19mcmVlX3JjdShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxuJiM0Mzt7XG4mIzQzO1x0Y2FsbF9yY3UoXHUwMDI2cWRpc2MtXHUwMDNlcmN1LCBxZGlzY19mcmVlX2NiKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgdm9pZCBfX3FkaXNjX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpxZGlzYylcbiB7XG4gXHRjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICAqb3BzID0gcWRpc2MtXHUwMDNlb3BzO1xuQEAgLTExMjcsNyAmIzQzOzExMzIsNyBAQCBzdGF0aWMgdm9pZCBfX3FkaXNjX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpxZGlzYylcbiBcbiBcdHRyYWNlX3FkaXNjX2Rlc3Ryb3kocWRpc2MpO1xuIFxuLVx0Y2FsbF9yY3UoXHUwMDI2cWRpc2MtXHUwMDNlcmN1LCBxZGlzY19mcmVlX2NiKTtcbiYjNDM7XHRxZGlzY19mcmVlX3JjdShxZGlzYyk7XG4gfVxuIFxuIHZvaWQgcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjM5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIRUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtxZGlzY19mcmVlX3JjdSYjMzQ7LAogICAgJiMzNDtxZGlzY19kZXN0cm95JiMzNDssCiAgICAmIzM0O3FkaXNjX3B1dCYjMzQ7LAogICAgJiMzNDtxZGlzY19wdXRfdW5sb2NrZWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIHBhdGggb2YgYHFkaXNjX2NyZWF0ZWAgYW5kIHRoZSBkZXN0cnVjdGlvbiBwYXRoIGluIGBfX3FkaXNjX2Rlc3Ryb3lgIHRvIHVzZSBhIG5ld2x5IGludHJvZHVjZWQgYHFkaXNjX2ZyZWVfcmN1YCBmdW5jdGlvbiBpbnN0ZWFkIG9mIGZyZWVpbmcgdGhlIHFkaXNjIGRpcmVjdGx5IG9yIGNhbGxpbmcgYGNhbGxfcmN1YCBtYW51YWxseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgUkNVLXJlbGF0ZWQgaXNzdWUuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBgUlRNX05FV1FESVNDYCBhbmQgYFJUTV9ERUxRRElTQ2AgbWVzc2FnZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4MzQwMmM0MWM0MmRhY2Y2YzYyYzgwMTY0NDA3ZjQ4ZTY4OTk0M2VjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgNSAxMTozOToyNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmggYi9pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oCmluZGV4IDQ1YTFlOGM3ODIyMmIuLmQ0NTQ0MmM5MjYyMWIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaApAQCAtNzkzLDYgJiM0Mzs3OTMsNyBAQCBzdHJ1Y3QgUWRpc2MgKnFkaXNjX2FsbG9jKHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSwKIAkJCSAgY29uc3Qgc3RydWN0IFFkaXNjX29wcyAqb3BzLAogCQkJICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spOwogdm9pZCBxZGlzY19mcmVlKHN0cnVjdCBRZGlzYyAqcWRpc2MpOwomIzQzO3ZvaWQgcWRpc2NfZnJlZV9yY3Uoc3RydWN0IFFkaXNjICpxZGlzYyk7CiBzdHJ1Y3QgUWRpc2MgKnFkaXNjX2NyZWF0ZV9kZmx0KHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSwKIAkJCQljb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICpvcHMsIHUzMiBwYXJlbnRpZCwKIAkJCQlzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spOwpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9hcGkuYyBiL25ldC9zY2hlZC9zY2hfYXBpLmMKaW5kZXggNjY4YmNkNjBkMTgzZS4uMDQxYmQ2MDA3MjAxNiAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9hcGkuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2NoZWQvc2NoX2FwaS5jCkBAIC0xMzczLDcgJiM0MzsxMzczLDcgQEAgc3RhdGljIHN0cnVjdCBRZGlzYyAqcWRpc2NfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiBlcnJfb3V0MzoKIAlxZGlzY19sb2NrX3VuaW5pdChzY2gsIG9wcyk7CiAJbmV0ZGV2X3B1dChkZXYsICZhbXA7c2NoLSZndDtkZXZfdHJhY2tlcik7Ci0JcWRpc2NfZnJlZShzY2gpOwomIzQzOwlxZGlzY19mcmVlX3JjdShzY2gpOwogZXJyX291dDI6CiAJYnBmX21vZHVsZV9wdXQob3BzLCBvcHMtJmd0O293bmVyKTsKIGVycl9vdXQ6CmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYyBiL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jCmluZGV4IGVmMmI0YmY1MTU2NDEuLjg2ZDU1MWZiYWJjYzIgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jCkBAIC0xMTAzLDYgJiM0MzsxMTAzLDExIEBAIHN0YXRpYyB2b2lkIHFkaXNjX2ZyZWVfY2Ioc3RydWN0IHJjdV9oZWFkICpoZWFkKQogCXFkaXNjX2ZyZWUocSk7CiB9CiAKJiM0Mzt2b2lkIHFkaXNjX2ZyZWVfcmN1KHN0cnVjdCBRZGlzYyAqcWRpc2MpCiYjNDM7ewomIzQzOwljYWxsX3JjdSgmYW1wO3FkaXNjLSZndDtyY3UsIHFkaXNjX2ZyZWVfY2IpOwomIzQzO30KJiM0MzsKIHN0YXRpYyB2b2lkIF9fcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKQogewogCWNvbnN0IHN0cnVjdCBRZGlzY19vcHMgICpvcHMgPSBxZGlzYy0mZ3Q7b3BzOwpAQCAtMTEyNyw3ICYjNDM7MTEzMiw3IEBAIHN0YXRpYyB2b2lkIF9fcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKQogCiAJdHJhY2VfcWRpc2NfZGVzdHJveShxZGlzYyk7CiAKLQljYWxsX3JjdSgmYW1wO3FkaXNjLSZndDtyY3UsIHFkaXNjX2ZyZWVfY2IpOwomIzQzOwlxZGlzY19mcmVlX3JjdShxZGlzYyk7CiB9CiAKIHZvaWQgcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjA4CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmtpbmcgU2NoZWR1bGVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZXhwZXJ0IGV5ZSBob25lcyBpbiBvbiBzb21lIGludGVyZXN0aW5nIGNoYW5nZXMgd2l0aGluIGBuZXQvc2NoZWQvc2NoX2FwaS5jYCBhbmQgYG5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jYC4gVGhlIGNvcmUgb2YgdGhlIHBhdGNoIHJldm9sdmVzIGFyb3VuZCBob3cgdGhleSYjMzk7cmUgaGFuZGxpbmcgZXJyb3IgcGF0aHMgd2l0aGluIGBxZGlzY19jcmVhdGVgLiBQcmV2aW91c2x5LCBpdCBsb29rcyBsaWtlIGBxZGlzY19mcmVlYCB3YXMgZGlyZWN0bHkgaW52b2tlZCBpbiBjZXJ0YWluIGVycm9yIHNjZW5hcmlvcy4gTm93LCB0aGUgcGF0Y2ggaW50ZWxsaWdlbnRseSBzd2FwcyB0aGF0IG91dCBmb3IgYHFkaXNjX2ZyZWVfcmN1YC4gVGhpcyBpcyBhIGNsZWFyIGluZGljYXRvciB0aGF0IHRoZSBkZXZlbG9wZXIgaXMgYWRkcmVzc2luZyBwb3RlbnRpYWwgY29uY3VycmVuY3kgaXNzdWVzLCBzcGVjaWZpY2FsbHkgYSBwb3NzaWJsZSB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpby4gVGhpcyBpcyBiZWNhdXNlIGBxZGlzY19mcmVlX3JjdWAgd2lsbCBjYWxsIGBjYWxsX3JjdWAgd2hpY2ggZ2l2ZXMgYW55IHJ1bm5pbmcgcHJvY2Vzc2VzIHRpbWUgdG8gZmluaXNoIHdpdGggdGhlIHFkaXNjLgoKVGhlIHBhdGNoIGFsc28gaW50cm9kdWNlcyBgcWRpc2NfZnJlZV9yY3VgIHdpdGhpbiBgc2NoX2dlbmVyaWMuY2AsIHdoaWNoLCBhcyBJIHN1c3BlY3RlZCwgZW5jYXBzdWxhdGVzIHRoZSBgY2FsbF9yY3VgIG1lY2hhbmlzbSwgY2FsbGluZyBgcWRpc2NfZnJlZV9jYmAuIEl0JiMzOTtzIGEgY2xlYW4gc2VwYXJhdGlvbiBvZiBjb25jZXJucywgYW5kIGl0JiMzOTtzIG5pY2UgdG8gc2VlIHRoaXMga2luZCBvZiBtZXRpY3Vsb3VzbmVzcy4gSW50ZXJlc3RpbmdseSwgdGhleSBhbHNvIGNoYW5nZWQgYF9fcWRpc2NfZGVzdHJveWAgdG8gdXNlIGBxZGlzY19mcmVlX3JjdShxZGlzYylgIGFzIHdlbGwuCgpUaGUgYHFkaXNjX2NyZWF0ZWAgZnVuY3Rpb24gaW4gYG5ldC9zY2hlZC9zY2hfYXBpLmNgIGlzIHRoZSByZWFsIHRhcmdldCBoZXJlLiBUaGV5IGFyZSBub3cgdXNpbmcgdGhlIGBlcnJfb3V0MzpgIGVycm9yIHBhdGggdG8gY2FsbCBgcWRpc2NfZnJlZV9yY3Uoc2NoKWAgaW5zdGVhZCBvZiB0aGUgb2xkIGBxZGlzY19mcmVlKHNjaClgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBmaXgsIGFuZCBpdCYjMzk7cyBtYWtpbmcgdGhlIGNvZGUgbXVjaCBtb3JlIHJvYnVzdCBieSBhdm9pZGluZyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIHdoZW4gdGhlIHFkaXNjIGlzIGJlaW5nIGZyZWVkLgoKTGV0JiMzOTtzIHNlZeKApiBgcWRpc2NfY3JlYXRlYCBpcyByZWFjaGFibGUsIHJpZ2h0PyBPZiBjb3Vyc2UsIGl0JiMzOTtzIGNhbGxlZCBkdXJpbmcgcWRpc2MgY3JlYXRpb24sIHdoaWNoLCBpbiB0aGUgcmVhbCB3b3JsZCBtZWFucyB0aHJvdWdoIGBuZXRsaW5rIHRjIHFkaXNjIGFkZGAuIFRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCBtZXJpdHMgc29tZSBzZXJpb3VzIGZ1enppbmcuIEEgcmFjZSBjb25kaXRpb24gYXJvdW5kIHFkaXNjIGNyZWF0aW9uL2Rlc3RydWN0aW9uIGlzIHByaW1lIGZ1enppbmcgbWF0ZXJpYWwhCgpJIHNob3VsZCBhbHNvIGNoZWNrIHRoZSBjb25maWcgb3B0aW9ucy4gVGhpcyBzaG91bGQgYmUgcGFydCBvZiBgQ09ORklHX05FVF9TQ0hFRGAsIG9yIHNvbWV0aGluZyBzaW1pbGFyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29iai0uKnNjaF9hcGkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9NYWtlZmlsZT04PW9iai0kKENPTkZJR19JTkVUKVx0XHQmIzQzOz0gc2NoX2ZyYWcub1xubmV0L3NjaGVkL01ha2VmaWxlOjk6b2JqLSQoQ09ORklHX05FVF9TQ0hFRClcdFx0JiM0Mzs9IHNjaF9hcGkubyBzY2hfYmxhY2tob2xlLm9cbm5ldC9zY2hlZC9NYWtlZmlsZS0xMC1vYmotJChDT05GSUdfTkVUX0NMUylcdFx0JiM0Mzs9IGNsc19hcGkub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MjUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA4MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgY29uc2Npb3VzbmVzczoKCioqTmV0d29yayBTY2hlZHVsZXIgQ29uZmlndXJhdGlvbiBhbmQgRnVuY3Rpb24gQW5hbHlzaXMqKgoKUmlnaHQsIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBuZXR3b3JrIHNjaGVkdWxlciBzdHVmZi4gRmlyc3QgdGhpbmcmIzM5O3MgZmlyc3QsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBgQ09ORklHX05FVF9TQ0hFRGAgaXMgZW5hYmxlZCwgb2J2aW91c2x5LiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZS4gTm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGBxZGlzY19jcmVhdGVgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgaXQmIzM5O3MgYmVpbmcgY2FsbGVkLCB3aGljaCBtZWFucyBJIHNob3VsZCBjaGVjayB3aGV0aGVyIGl0JiMzOTtzIHN0YXRpYyBvciBub3QuIFllcCwgaXQgKmlzKiBzdGF0aWMuIE9LLCBzbyBgcWRpc2NfY3JlYXRlYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMgd2l0aGluIGBuZXQvc2NoZWQvc2NoX2FwaS5jYC4gVGhhdCBtZWFucyBpdHMgc2NvcGUgaXMgbGltaXRlZCB0byB0aGF0IGZpbGUsIHdoaWNoIG1ha2VzIHRyYWNpbmcgaXRzIHVzYWdlIGEgYml0IG1vcmUgZm9jdXNlZCwgYnV0IGFsc28gbWVhbnMgSSBuZWVkIHRvIHBpbnBvaW50IGl0cyBjYWxsZXJzIHdpdGhpbiB0aGF0IHNhbWUgZmlsZSwgYG5ldC9zY2hlZC9zY2hfYXBpLmNgLCB0byByZWFsbHkgdW5kZXJzdGFuZCBob3cgaXQmIzM5O3Mgd29ya2luZy4gVGltZSB0byBleGFtaW5lIHRoYXQgZmlsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtxZGlzY19jcmVhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2FwaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfYXBpLmM9MTIyMj1zdGF0aWMgaW50IHFkaXNjX2Jsb2NrX2luZGV4ZXNfc2V0KHN0cnVjdCBRZGlzYyAqc2NoLCBzdHJ1Y3QgbmxhdHRyICoqdGNhLFxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTI2MS1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTI2MjpzdGF0aWMgc3RydWN0IFFkaXNjICpxZGlzY19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTI2My1cdFx0XHRcdCAgc3RydWN0IG5ldGRldl9xdWV1ZSAqZGV2X3F1ZXVlLFxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTM2MS1cdHFkaXNjX2hhc2hfYWRkKHNjaCwgZmFsc2UpO1xubmV0L3NjaGVkL3NjaF9hcGkuYzoxMzYyOlx0dHJhY2VfcWRpc2NfY3JlYXRlKG9wcywgZGV2LCBwYXJlbnQpO1xubmV0L3NjaGVkL3NjaF9hcGkuYy0xMzYzLVxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTM2Ny1cdC8qIEV2ZW4gaWYgb3BzLVx1MDAzZWluaXQoKSBmYWlsZWQsIHdlIGNhbGwgb3BzLVx1MDAzZWRlc3Ryb3koKVxubmV0L3NjaGVkL3NjaF9hcGkuYzoxMzY4Olx0ICogbGlrZSBxZGlzY19jcmVhdGVfZGZsdCgpLlxubmV0L3NjaGVkL3NjaF9hcGkuYy0xMzY5LVx0ICovXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYz0xNTk5PXN0YXRpYyBpbnQgX190Y19tb2RpZnlfcWRpc2Moc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpuLFxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTc1My1cdFx0aWYgKGRldl9pbmdyZXNzX3F1ZXVlKGRldikpIHtcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTc1NDpcdFx0XHRxID0gcWRpc2NfY3JlYXRlKGRldiwgZGV2X2luZ3Jlc3NfcXVldWUoZGV2KSxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTc1NS1cdFx0XHRcdFx0IHRjbS1cdTAwM2V0Y21fcGFyZW50LCB0Y20tXHUwMDNldGNtX3BhcmVudCxcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE3NzAtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE3NzE6XHRcdHEgPSBxZGlzY19jcmVhdGUoZGV2LCBkZXZfcXVldWUsXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE3NzItXHRcdFx0XHQgdGNtLVx1MDAzZXRjbV9wYXJlbnQsIHRjbS1cdTAwM2V0Y21faGFuZGxlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNDkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIHRoZSBRZGlzYyBNb2RpZmljYXRpb24gUGF0aCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCBjYWxsIGNoYWluIGludm9sdmVkIGluIG1vZGlmeWluZyBhIHF1ZXVpbmcgZGlzY2lwbGluZSDigJMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBiZXR0ZXIuIE15IHN0YXJ0aW5nIHBvaW50IGlzIGBfX3RjX21vZGlmeV9xZGlzY2AsIGFuZCB0aGF0IHN1Z2dlc3RzIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhpcyBpcyB0aHJvdWdoIGB0Y19tb2RpZnlfcWRpc2NgLiBUaGlzIGxpa2VseSBtZWFucyB0aGVyZSYjMzk7cyBhIGxheWVyZWQgYXBwcm9hY2gsIG1heWJlIHdpdGggc29tZSBpbnRlcm5hbCBrZXJuZWwgZnVuY3Rpb25zLgoKTXkgaW1tZWRpYXRlIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBgdGNfbW9kaWZ5X3FkaXNjYCBmdW5jdGlvbi4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBsb3dlciBsYXllcnMuIEkgYWxzbyBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkZWZhdWx0IFFkaXNjIGlzIGNyZWF0ZWQgLSBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgYHFkaXNjX2NyZWF0ZV9kZmx0YC4gSSBoYXZlIGEgZmVlbGluZyBJJiMzOTtsbCBmaW5kIHNvbWUgaW50ZXJlc3RpbmcgbG9naWMgcmVsYXRlZCB0byBkZWZhdWx0IHBhcmFtZXRlcnMgYW5kIHNldHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RjX21vZGlmeV9xZGlzYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfYXBpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9hcGkuYz0xNTkyPXN0YXRpYyBib29sIHJlcV9jaGFuZ2Uoc3RydWN0IG5sbXNnaGRyICpuKVxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTU5OC1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTU5OTpzdGF0aWMgaW50IF9fdGNfbW9kaWZ5X3FkaXNjKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbixcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTYwMC1cdFx0XHQgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayxcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTE3ODk9c3RhdGljIHZvaWQgcmVxdWVzdF9xZGlzY19tb2R1bGUoc3RydWN0IG5sYXR0ciAqa2luZClcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE4MTItICovXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE4MTM6c3RhdGljIGludCB0Y19tb2RpZnlfcWRpc2Moc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpuLFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xODE0LVx0XHRcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE4MzQtXHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTgzNTpcdGVyciA9IF9fdGNfbW9kaWZ5X3FkaXNjKHNrYiwgbiwgZXh0YWNrLCBkZXYsIHRjYSwgdGNtKTtcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTgzNi1cdG5ldGRldl91bmxvY2tfb3BzKGRldik7XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYz0yNTE0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRubF9tc2dfaGFuZGxlciBwc2NoZWRfcnRubF9tc2dfaGFuZGxlcnNbXSBfX2luaXRjb25zdCA9IHtcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjUxNTpcdHsubXNndHlwZSA9IFJUTV9ORVdRRElTQywgLmRvaXQgPSB0Y19tb2RpZnlfcWRpc2N9LFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNTE2LVx0ey5tc2d0eXBlID0gUlRNX0RFTFFESVNDLCAuZG9pdCA9IHRjX2dldF9xZGlzY30sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA5NQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDExNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqQW5hbHl6aW5nIHRoZSBgdGNfbW9kaWZ5X3FkaXNjYCBQYXRjaCoqCgpSaWdodCwgc28gYHRjX21vZGlmeV9xZGlzY2AgaXMgdGhlIGdhdGV3YXksIHRoZSBlbnRyeSBwb2ludCBmb3IgaGFuZGxpbmcgYSBuZXcgcXVldWVpbmcgZGlzY2lwbGluZSwgYSBgUlRNX05FV1FESVNDYCBtZXNzYWdlLiBUaGUgY3J1eCBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIGZvY3VzZWQgb24gaG93IHdlIGhhbmRsZSBlcnJvcnMgd2l0aGluIHRoZSBgcWRpc2NfY3JlYXRlYCBmdW5jdGlvbi4KClRvIHJlYWxseSBkaWcgaW50byB0aGlzLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZmFpbHVyZSBzY2VuYXJpb3Mgd2l0aGluIGBxZGlzY19jcmVhdGVgLiBXaGF0IGNvbmRpdGlvbnMgdHJpZ2dlciBhbiBlcnJvciB0aGVyZT8gVGhlIHBhdGNoIGlzIGNsZWFybHkgYWRkcmVzc2luZyB0aGlzIGVycm9yIHBhdGguCgpBbHNvLCBJIHNlZSBhIG5ldyBmdW5jdGlvbiBgcWRpc2NfZnJlZV9yY3VgIGludHJvZHVjZWQgaW4gYG5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jYC4gSW50ZXJlc3RpbmcuIEl0JiMzOTtzIGVpdGhlciBleHBvcnRlZCBvciBhdCBsZWFzdCBub3QgZGVjbGFyZWQgYXMgc3RhdGljLCBzbyBpdCYjMzk7cyBpbnRlbmRlZCB0byBiZSB1c2VkIGV4dGVybmFsbHkuIFRoYXQgcmFpc2VzIG15IGV5ZWJyb3dzLiBMZXQmIzM5O3MgbWFrZSBzdXJlIGl0IGlzIHdoYXQgSSB0aGluayBpdCBpcywgYSBmdW5jdGlvbiB0byBzYWZlbHkgZnJlZSBxZGlzY3MgdXNpbmcgUkNVLCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3FkaXNjX2ZyZWVfcmN1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9nZW5lcmljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTA5OT1zdGF0aWMgdm9pZCBxZGlzY19mcmVlX2NiKHN0cnVjdCByY3VfaGVhZCAqaGVhZClcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTA1LVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTEwNjp2b2lkIHFkaXNjX2ZyZWVfcmN1KHN0cnVjdCBRZGlzYyAqcWRpc2MpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTA3LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xMTExPXN0YXRpYyB2b2lkIF9fcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExMzQtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTM1Olx0cWRpc2NfZnJlZV9yY3UocWRpc2MpO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEzNi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2NzEKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYHFkaXNjX2ZyZWVfcmN1YCBWaXNpYmlsaXR5KioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIFNvbWV0aGluZyYjMzk7cyBub3QgcXVpdGUgYWRkaW5nIHVwLiBJJiMzOTttIGhpdHRpbmcgYSBzbmFnLCBhbmQgdGhlIGltbWVkaWF0ZSB0aG91Z2h0IGlzOiBpcyBgcWRpc2NfZnJlZV9yY3VgIGFjdHVhbGx5IGV4cG9ydGVkIHdpdGggYEVYUE9SVF9TWU1CT0xgPyBUaGF0JiMzOTtzIHRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gY29uZmlybS4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBhc3N1bXB0aW9uLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGNvcmUga2VybmVsIHN0cnVjdHVyZXMgYW5kIGhvdyBkaWZmZXJlbnQgbW9kdWxlcyBvciBzdWJzeXN0ZW1zIGNhbiBpbnRlcmFjdCB3aXRoIGVhY2ggb3RoZXIuIElmIGl0JiMzOTtzICpub3QqIGV4cG9ydGVkLCB0aGVuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoeSBhbmQsIG1vcmUgaW1wb3J0YW50bHksICpob3cqIHRoaXMgcGllY2Ugb2YgY29kZSBpcyBzdXBwb3NlZCB0byBiZSBhY2Nlc3NpYmxlIChvciBpZiB0aGUgYWNjZXNzIGlzIGludGVuZGVkIGF0IGFsbCkuIFRpbWUgdG8gZGlnIGRlZXBlciBhbmQgc2VlIGlmIEkmIzM5O20gbWlzc2luZyBzb21ldGhpbmcgb2J2aW91cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MLipxZGlzY19mcmVlX3JjdSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTkyNgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHJlYWRpbmcgYG5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jYCBhcm91bmQgdGhlIGBxZGlzY19mcmVlX3JjdWAgZnVuY3Rpb24sIHN1bW1hcml6ZWQgYXMgbXkgb3duIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFFkaXNjIExpZmVjeWNsZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBpbnRyaWNhY2llcyBvZiB0aGUgZ2VuZXJpYyBxdWV1aW5nIGRpc2NpcGxpbmUgZnJhbWV3b3JrIGluIHRoZSBMaW51eCBrZXJuZWwuIExldCYjMzk7cyB6ZXJvIGluIG9uIGBuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY2AgYW5kIHNwZWNpZmljYWxseSBmb2N1cyBvbiB0aGUgYHFkaXNjX2ZyZWVfcmN1YCBmdW5jdGlvbi4gSSByZW1lbWJlciB0aGlzIGFyZWEgYmVpbmcgY3J1Y2lhbCBmb3IgcHJvcGVyIHJlc291cmNlIG1hbmFnZW1lbnQgYW5kIHByZXZlbnRpbmcgbWVtb3J5IGxlYWtzIHdpdGhpbiB0aGUgbmV0d29ya2luZyBzdWJzeXN0ZW0uIFRoaXMgZnVuY3Rpb24sIEkgYXNzdW1lLCBpcyB3aGVyZSB0aGUgZmluYWwgY2xlYW51cCBvZiBhIHF1ZXVpbmcgZGlzY2lwbGluZSAocWRpc2MpIGhhcHBlbnMgYmVmb3JlIGl0JiMzOTtzIGNvbXBsZXRlbHkgZGVhbGxvY2F0ZWQuCgpNeSBmaXJzdCB0aG91Z2h0IGlzIGFsd2F5cyBhYm91dCB0aGUgUkNVIChSZWFkLUNvcHktVXBkYXRlKSBhc3BlY3QuIEl0IG1ha2VzIHNlbnNlIHRoaXMgZnVuY3Rpb24gaXMgaW52b2x2ZWQgYmVjYXVzZSBxZGlzY3MgYXJlIG9mdGVuIGFjY2Vzc2VkIGNvbmN1cnJlbnRseSBieSBtdWx0aXBsZSB0aHJlYWRzIOKAkyBwYWNrZXQgcHJvY2Vzc2luZywgY29uZmlndXJhdGlvbiBjaGFuZ2VzLCBldGMuIFJDVSBhbGxvd3MgdXMgdG8gc2FmZWx5IGZyZWUgdGhlIHFkaXNjIGRhdGEgc3RydWN0dXJlIHdpdGhvdXQgZGlzcnVwdGluZyBhY3RpdmUgcmVhZGVycy4gU28sIGBxZGlzY19mcmVlX3JjdWAgaXMgbGlrZWx5IHRoZSBjdWxtaW5hdGlvbiBvZiB0aGUgZGUtcmVnaXN0cmF0aW9uIGFuZCBkcmFpbiBwcm9jZXNzLgoKSSYjMzk7bGwgYmUgbG9va2luZyB0byBzZWU6IFdoYXQmIzM5O3MgdGhlIGV4YWN0IHByb2NlZHVyZSB0aGlzIGZ1bmN0aW9uIHVzZXM/IERvZXMgaXQgcGVyZm9ybSB0aGUgZmluYWwgZGUtYWxsb2NhdGlvbiBpbW1lZGlhdGVseSBvciBzY2hlZHVsZSBpdCBmb3IgbGF0ZXIgZXhlY3V0aW9uLCBhZnRlciBhIGdyYWNlIHBlcmlvZCBhcyBkaWN0YXRlZCBieSBSQ1U/IFdoaWNoIGFzcGVjdHMgb2YgdGhlIHFkaXNjIGFyZSBmcmVlZCBoZXJlLCBhbmQgd2hpY2ggd2VyZSB0YWtlbiBjYXJlIG9mIGVhcmxpZXI/IFdoYXQmIzM5O3MgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIHVuZGVybHlpbmcgZGV2aWNlIGRyaXZlcj8gQXJlIHRoZXJlIHNwZWNpZmljIHNwaW5sb2NrcyBvciBvdGhlciBzeW5jaHJvbml6YXRpb24gbWVjaGFuaXNtcyBiZWluZyB1c2VkIHRvIGVuc3VyZSB0aHJlYWQgc2FmZXR5IGR1cmluZyB0aGlzIGNyaXRpY2FsIGRlLWFsbG9jYXRpb24gcGhhc2U/IEkmIzM5O2xsIGFsc28gY2hlY2sgZm9yIGFueSBzdWJ0bGUgY29ybmVyIGNhc2VzOiBXaGF0IGhhcHBlbnMgaWYgYSBwYWNrZXQgaXMgc3RpbGwgZW5xdWV1ZWQsIG9yIGlmIGEgY2hpbGQgcWRpc2MgaXMgbm90IHByb3Blcmx5IGRldGFjaGVkPwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTEwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMTAwOlx0e1xuMTEwMTpcdFx0c3RydWN0IFFkaXNjICpxID0gY29udGFpbmVyX29mKGhlYWQsIHN0cnVjdCBRZGlzYywgcmN1KTtcbjExMDI6XHRcbjExMDM6XHRcdHFkaXNjX2ZyZWUocSk7XG4xMTA0Olx0fVxuMTEwNTpcdFxuMTEwNjpcdHZvaWQgcWRpc2NfZnJlZV9yY3Uoc3RydWN0IFFkaXNjICpxZGlzYylcbjExMDc6XHR7XG4xMTA4Olx0XHRjYWxsX3JjdShcdTAwMjZxZGlzYy1cdTAwM2VyY3UsIHFkaXNjX2ZyZWVfY2IpO1xuMTEwOTpcdH1cbjExMTA6XHRcbjExMTE6XHRzdGF0aWMgdm9pZCBfX3FkaXNjX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpxZGlzYylcbjExMTI6XHR7XG4xMTEzOlx0XHRjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICAqb3BzID0gcWRpc2MtXHUwMDNlb3BzO1xuMTExNDpcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IHFkaXNjX2RldihxZGlzYyk7XG4xMTE1Olx0XG4xMTE2Olx0I2lmZGVmIENPTkZJR19ORVRfU0NIRURcbjExMTc6XHRcdHFkaXNjX2hhc2hfZGVsKHFkaXNjKTtcbjExMTg6XHRcbjExMTk6XHRcdHFkaXNjX3B1dF9zdGFiKHJ0bmxfZGVyZWZlcmVuY2UocWRpc2MtXHUwMDNlc3RhYikpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NjU3CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBoYXZpbmcgaXQ6CgoqKkRpZ2dpbmcgaW50byBLZXJuZWwgTW9kdWxlIFZpc2liaWxpdHkqKgoKSG1tLCB0aGlzIGZ1bmN0aW9uIGlzbiYjMzk7dCBleHBsaWNpdGx5IGV4cG9ydGVkLCBidXQgaXQmIzM5O3MgY2xlYXJseSBiZWluZyBhY2Nlc3NlZCBieSBgbmV0L3NjaGVkL3NjaF9hcGkuY2AuIE5vdywgd2h5IGlzIHRoYXQ/IEFoLCByaWdodCwgYmVjYXVzZSBib3RoIG9mIHRoZXNlIGZpbGVzIGFyZSBkZWVwIHdpdGhpbiB0aGUgY29yZSBrZXJuZWwsIG9yIG1heWJlIGBzY2hfZ2VuZXJpYy5jYCBpcyBpbiB0aGUgYG5ldC9zY2hlZC9gIGRpcmVjdG9yeS4gQnV0IHdhaXQsIHRoYXQgcmluZ3MgYSBiZWxsLi4uIGlzbiYjMzk7dCBgc2NoX2dlbmVyaWMuY2AgY29tcGlsZWQgaW50byB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrIGl0c2VsZj8gT2theSwgbGV0JiMzOTtzIGp1c3QgY29uZmlybSB0aGF0IGJ5IG9wZW5pbmcgdXAgdGhlIGBuZXQvc2NoZWQvTWFrZWZpbGVgIGFuZCBtYWtpbmcgc3VyZSB0aGF0IEkgYW0gdGhpbmtpbmcgY2xlYXJseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2NoX2dlbmVyaWMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL01ha2VmaWxlLTUtXG5uZXQvc2NoZWQvTWFrZWZpbGU6NjpvYmoteVx0Oj0gc2NoX2dlbmVyaWMubyBzY2hfbXEub1xubmV0L3NjaGVkL01ha2VmaWxlLTctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5NzAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDaGFuZ2VzIGluIHRoZSBOZXR3b3JrIFNjaGVkdWxlciBDb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCwgYXMgSSB1bmRlcnN0YW5kIGl0LCBgc2NoX2dlbmVyaWMub2AgaXMgKmFsd2F5cyogYnVpbHQg4oCTIHRoYXQmIzM5O3MgYSBnaXZlbi4gQW5kIGBzY2hfYXBpLm9gIGRlcGVuZHMgb24gYENPTkZJR19ORVRfU0NIRURgIGJlaW5nIGVuYWJsZWQsIHdoaWNoIGlzIHN0YW5kYXJkLiBUaGlzIG1lYW5zIGBxZGlzY19mcmVlX3JjdWAgKmlzbiYjMzk7dCogZGVjbGFyZWQgc3RhdGljLiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIGFib3V0IGVycm9yIGhhbmRsaW5nIGFuZCByZXNvdXJjZSBjbGVhbnVwIHdpdGhpbiB0aGUgcXVldWluZyBkaXNjaXBsaW5lIGZyYW1ld29yay4KClNwZWNpZmljYWxseSwgaXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSByZXdvcmtpbmcgdGhlIGVycm9yIHBhdGggaW4gYHFkaXNjX2NyZWF0ZWAgdG8gbGV2ZXJhZ2UgYHFkaXNjX2ZyZWVfcmN1YC4gTWFrZXMgc2Vuc2Ug4oCTIGJldHRlciB0byBoYXZlIGEgdW5pZmllZCBjbGVhbnVwIHBhdGguIEl0JiMzOTtzIGFsc28gY2hhbmdpbmcgaG93IGBfX3FkaXNjX2Rlc3Ryb3lgIGlzIGhhbmRsZWQgdG8gdXNlIGBxZGlzY19mcmVlX3JjdWAuIEFuZCBpZiBJIHJlbWVtYmVyIGNvcnJlY3RseSwgYF9fcWRpc2NfZGVzdHJveWAgaXMgY2FsbGVkIGJ5IGBxZGlzY19kZXN0cm95YCBpdHNlbGYuIEdpdmVuIHRoZXNlIGNoYW5nZXMgdG8gdGhlIGludGVybmFsIHdvcmtpbmdzLCBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBxZGlzY19kZXN0cm95YCBpdHNlbGYgdG8gYmUgY29tcGxldGVseSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtxZGlzY19kZXN0cm95JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9nZW5lcmljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTEwNj12b2lkIHFkaXNjX2ZyZWVfcmN1KHN0cnVjdCBRZGlzYyAqcWRpc2MpXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTExMC1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjExMTE6c3RhdGljIHZvaWQgX19xZGlzY19kZXN0cm95KHN0cnVjdCBRZGlzYyAqcWRpc2MpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTEyLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTMyLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTEzMzpcdHRyYWNlX3FkaXNjX2Rlc3Ryb3kocWRpc2MpO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEzNC1cbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTM3LVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTEzODp2b2lkIHFkaXNjX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpxZGlzYylcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExMzkte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExNDItXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTQzOlx0X19xZGlzY19kZXN0cm95KHFkaXNjKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExNDQtfVxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTExNDY9dm9pZCBxZGlzY19wdXQoc3RydWN0IFFkaXNjICpxZGlzYylcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTU0LVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTE1NTpcdF9fcWRpc2NfZGVzdHJveShxZGlzYyk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTU2LX1cbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xMTY0PXZvaWQgcWRpc2NfcHV0X3VubG9ja2VkKHN0cnVjdCBRZGlzYyAqcWRpc2MpXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTE2OS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjExNzA6XHRfX3FkaXNjX2Rlc3Ryb3kocWRpc2MpO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTE3MS1cdHJ0bmxfdW5sb2NrKCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4NDYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLZXJuZWwmIzM5O3MgVHJhZmZpYyBDb250cm9sIE1vZHVsZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZXNlIHFkaXNjIGZ1bmN0aW9ucyBhcmUgY2FsbGVkLiBJdCBzZWVtcyBgcWRpc2NfZGVzdHJveWAsIGBxZGlzY19wdXRgLCBhbmQgYHFkaXNjX3B1dF91bmxvY2tlZGAgYWxsIHVsdGltYXRlbHkgbGVhZCB0byBgX19xZGlzY19kZXN0cm95YC4gVGhlIHBhdGNoIGl0c2VsZiBhcHBlYXJzIHRvIHdvcmsgYW5kIGlzIGRlZmluaXRlbHkgYWNjZXNzaWJsZSB3aXRoaW4gdGhlIGNvZGUuCgpNeSBwcmltYXJ5IGludGVyZXN0IHJpZ2h0IG5vdyBsaWVzIHdpdGggdGhlIHN5bWJvbHMgYHRjX21vZGlmeV9xZGlzY2AsIGBxZGlzY19kZXN0cm95YCwgYHFkaXNjX3B1dGAsIGFuZCBgcWRpc2NfcHV0X3VubG9ja2VkYC4gQWgsIHJpZ2h0LCBgdGNfbW9kaWZ5X3FkaXNjYCBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIGBSVE1fTkVXUURJU0NgLCB3aGljaCBpcyBjcnVjaWFsLiBgcWRpc2NfY3JlYXRlYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMsIHNvIEkgY2FuJiMzOTt0IGRpcmVjdGx5IHRhcmdldCB0aGF0LgoKU2luY2UgSSBjYW4mIzM5O3QgZ2V0IHRvIGBxZGlzY19jcmVhdGVgLCBsZXQmIzM5O3MgZm9jdXMgb24gYHRjX21vZGlmeV9xZGlzY2AuIExldCBtZSBqdXN0IGRvdWJsZSBjaGVjayBpZiBgdGNfbW9kaWZ5X3FkaXNjYCBpcywgaW4gZmFjdCwgc3RhdGljLi4uIFllcCwgaXQgaXMuIAoKV2FpdCwgaXQmIzM5O3Mgc3RhdGljIGluIGBuZXQvc2NoZWQvc2NoX2FwaS5jYC4gTm93LCBJIG5lZWQgdG8gY2hlY2sgYG5ldC9zY2hlZC9zY2hfYXBpLmNgIGZvciBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGlzIHRvIHNlZSB3aGF0IEkgY2FuIGFjY2VzcyB0byBmdXJ0aGVyIG15IGFuYWx5c2lzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0Y19tb2RpZnlfcWRpc2MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2FwaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfYXBpLmM9MTU5Mj1zdGF0aWMgYm9vbCByZXFfY2hhbmdlKHN0cnVjdCBubG1zZ2hkciAqbilcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE1OTgtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE1OTk6c3RhdGljIGludCBfX3RjX21vZGlmeV9xZGlzYyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm4sXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE2MDAtXHRcdFx0ICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2ssXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYz0xNzg5PXN0YXRpYyB2b2lkIHJlcXVlc3RfcWRpc2NfbW9kdWxlKHN0cnVjdCBubGF0dHIgKmtpbmQpXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0xODEyLSAqL1xubmV0L3NjaGVkL3NjaF9hcGkuYzoxODEzOnN0YXRpYyBpbnQgdGNfbW9kaWZ5X3FkaXNjKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbixcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTgxNC1cdFx0XHQgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0xODM0LVx0bmV0ZGV2X2xvY2tfb3BzKGRldik7XG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE4MzU6XHRlcnIgPSBfX3RjX21vZGlmeV9xZGlzYyhza2IsIG4sIGV4dGFjaywgZGV2LCB0Y2EsIHRjbSk7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE4MzYtXHRuZXRkZXZfdW5sb2NrX29wcyhkZXYpO1xuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmM9MjUxND1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bmxfbXNnX2hhbmRsZXIgcHNjaGVkX3J0bmxfbXNnX2hhbmRsZXJzW10gX19pbml0Y29uc3QgPSB7XG5uZXQvc2NoZWQvc2NoX2FwaS5jOjI1MTU6XHR7Lm1zZ3R5cGUgPSBSVE1fTkVXUURJU0MsIC5kb2l0ID0gdGNfbW9kaWZ5X3FkaXNjfSxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjUxNi1cdHsubXNndHlwZSA9IFJUTV9ERUxRRElTQywgLmRvaXQgPSB0Y19nZXRfcWRpc2N9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4ODM1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBRZGlzYyBGdW5jdGlvbiBWaXNpYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoZSB2aXNpYmlsaXR5IG9mIHRoZXNlIGBxZGlzY2AgZnVuY3Rpb25zIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIHNjaGVkdWxpbmcgaW5mcmFzdHJ1Y3R1cmUuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSB0aGF0IGB0Y19tb2RpZnlfcWRpc2NgIGlzIGRlY2xhcmVkIGFzIHN0YXRpYy4gSW50ZXJlc3RpbmcuIEkgbmVlZCB0byBiZSBjYXJlZnVsIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IGZvciBleHRlcm5hbCB1c2UsIHdoaWNoIGlzIGNyaXRpY2FsIGluIHRoaXMgdHlwZSBvZiBuZXR3b3JrIGRlYnVnZ2luZy4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgYHFkaXNjX2Rlc3Ryb3lgIOKAkyB0aGF0JiMzOTtzIG5vbi1zdGF0aWMuIFNhbWUgZ29lcyBmb3IgYHFkaXNjX3B1dGAsIGFuZCBgcWRpc2NfcHV0X3VubG9ja2VkYC4gQW5kIGhvbGQgb24sIGhlcmUmIzM5O3MgYHFkaXNjX2ZyZWVfcmN1YCAtLSBhbHNvIG5vbi1zdGF0aWMuIEkgbmVlZCB0byBrZWVwIHRoZXNlIGRpc3RpbmN0aW9ucyBpbiBtaW5kLiBHaXZlbiB0aGF0LCBsZXQmIzM5O3MgcXVpY2tseSBzZWUgaWYgdGhlcmUgYXJlIG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIGBuZXQvc2NoZWQvc2NoX2FwaS5jYCB0aGF0IGNhbGwgYHFkaXNjX2NyZWF0ZWAuIE5vcGUsIGl0IGxvb2tzIGxpa2UgYHFkaXNjX2NyZWF0ZWAgaXMgZXhjbHVzaXZlbHkgY2FsbGVkIGJ5IGBfX3RjX21vZGlmeV9xZGlzY2AsIGFuZCB0aGF0JiMzOTtzIG9ubHkgY2FsbGVkIGJ5IGB0Y19tb2RpZnlfcWRpc2NgLgoKQWgsIGJ1dCAqd2FpdCosIGB0Y19tb2RpZnlfcWRpc2NgIGlzIHJlZ2lzdGVyZWQgYXMgYSBuZXRsaW5rIGhhbmRsZXIuIFRoaXMgc2ltcGxpZmllcyB0aGluZ3MgYSBiaXQuIFNvIHJlYWxseSwgdGhlIG1haW4gZm9jdXMgYmVjb21lcyB0aGUgdmlzaWJpbGl0eSBhbmQgaW50ZXJhY3Rpb24gb2YgdGhlIG90aGVyIGZ1bmN0aW9ucyAtIGBxZGlzY19kZXN0cm95YCwgYHFkaXNjX3B1dGAsIGBxZGlzY19wdXRfdW5sb2NrZWRgLCBhbmQgYHFkaXNjX2ZyZWVfcmN1YC4KCkFuZCBvbmUgbW9yZSB0aGluZywgaXQgbG9va3MgbGlrZSBgcWRpc2NfZnJlZV9yY3VgIGlzIGEgbW9yZSByZWNlbnQgYWRkaXRpb24sIHNvIGl0IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2suIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gaW4gYG5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jYCB0byBzZWUgaG93IGl0JiMzOTtzIGFjdHVhbGx5IHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3FkaXNjX2ZyZWVfcmN1JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9nZW5lcmljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTA5OT1zdGF0aWMgdm9pZCBxZGlzY19mcmVlX2NiKHN0cnVjdCByY3VfaGVhZCAqaGVhZClcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTA1LVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTEwNjp2b2lkIHFkaXNjX2ZyZWVfcmN1KHN0cnVjdCBRZGlzYyAqcWRpc2MpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTA3LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xMTExPXN0YXRpYyB2b2lkIF9fcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExMzQtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTM1Olx0cWRpc2NfZnJlZV9yY3UocWRpc2MpO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEzNi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2ODcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6CgoqKkludGVybmFsIFJldmlldyBvZiBGdW5jdGlvbiBWaXNpYmlsaXR5KioKCkFscmlnaHQsIHNvIGBxZGlzY19mcmVlX3JjdWAgaXNuJiMzOTt0IHN0YXRpYywgd2hpY2ggaXMgZ29vZCB0byBrbm93LiBOb3csIGEgZm9sbG93LXVwIGlzIG5lY2Vzc2FyeS4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGBxZGlzY19jcmVhdGVfZGZsdGAgaGFzIGJlZW4gZGVjbGFyZWQgc3RhdGljLiBUaGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIGZ1bmN0aW9ucyYjMzk7IHZpc2liaWxpdHksIGFuZCB3aGV0aGVyIG9yIG5vdCB0aGVyZSBhcmUgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLCBhcmUgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBxdWV1aW5nIGRpc2NpcGxpbmUgb2JqZWN0cyBhcmUgYmVpbmcgbWFuYWdlZCBhbmQgYWNjZXNzZWQgdGhyb3VnaG91dCB0aGUgc3lzdGVtLiBJIGhhdmUgdG8gYXNzZXNzIGlmIHRoZXJlIGFyZSBhbnkgcG90ZW50aWFsIGRlc2lnbiBjb25zdHJhaW50cyBvciBjb25mbGljdHMuIEtub3dpbmcgdGhlIHNjb3BlIG9mIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGhlbHAgbWUgZ3Jhc3AgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIGFuZCBob3cgdGhlc2UgY3J1Y2lhbCBhc3BlY3RzIG9mIHBhY2tldCBzY2hlZHVsaW5nIGFyZSBpbXBsZW1lbnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cWRpc2NfY3JlYXRlX2RmbHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2dlbmVyaWMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz05ODI9c3RydWN0IFFkaXNjICpxZGlzY19hbGxvYyhzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICpkZXZfcXVldWUsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTA0MC1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEwNDE6c3RydWN0IFFkaXNjICpxZGlzY19jcmVhdGVfZGZsdChzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICpkZXZfcXVldWUsXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDQyLVx0XHRcdFx0Y29uc3Qgc3RydWN0IFFkaXNjX29wcyAqb3BzLFxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEwNjctfVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTA2ODpFWFBPUlRfU1lNQk9MKHFkaXNjX2NyZWF0ZV9kZmx0KTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEwNjktXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTIxMj1zdGF0aWMgdm9pZCBhdHRhY2hfb25lX2RlZmF1bHRfcWRpc2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMjIzLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTIyNDpcdHFkaXNjID0gcWRpc2NfY3JlYXRlX2RmbHQoZGV2X3F1ZXVlLCBvcHMsIFRDX0hfUk9PVCwgTlVMTCk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMjI1LVx0aWYgKCFxZGlzYylcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xMjMzPXN0YXRpYyB2b2lkIGF0dGFjaF9kZWZhdWx0X3FkaXNjcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEyNDYtXHR9IGVsc2Uge1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTI0NzpcdFx0cWRpc2MgPSBxZGlzY19jcmVhdGVfZGZsdCh0eHEsIFx1MDAyNm1xX3FkaXNjX29wcywgVENfSF9ST09ULCBOVUxMKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEyNDgtXHRcdGlmIChxZGlzYykge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDM2MAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDEyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBxZGlzY19jcmVhdGVfZGZsdGAgRXhwb3J0KioKCk9rYXksIHNvIGBxZGlzY19jcmVhdGVfZGZsdGAgaXMgZXhwb3J0ZWQsIHRoYXQgbXVjaCBpcyBjbGVhci4gQnV0IGhhbmcgb24sIHRoaXMgcGF0Y2ggaXMgYWN0dWFsbHkgY2hhbmdpbmcgYHFkaXNjX2NyZWF0ZWAgaW4gYG5ldC9zY2hlZC9zY2hfYXBpLmNgLCBub3QgdGhlIGV4cG9ydGVkIGZ1bmN0aW9uIGRpcmVjdGx5LiBUaGF0JiMzOTtzIGEgYml0IG9kZC4gQWgsIHJpZ2h0LCBgcWRpc2NfY3JlYXRlYCBpcyBkZWNsYXJlZCAqc3RhdGljKiB3aXRoaW4gYG5ldC9zY2hlZC9zY2hfYXBpLmNgLiBIbW0sIHRoYXQgbWVhbnMgY2hhbmdlcyB0aGVyZSB3b24mIzM5O3QgZGlyZWN0bHkgYWZmZWN0IGFueXRoaW5nIG91dHNpZGUgdGhlIG1vZHVsZS4gVGhpcyByZXF1aXJlcyBmdXJ0aGVyIHNjcnV0aW55LgoKVGhlIG5leHQgc3RlcCBpcyB0byBzZWUgaWYgYW55IG90aGVyIG5vbi1zdGF0aWMgb3IgRVhQT1JUX1NZTUJPTCBmdW5jdGlvbnMgd2l0aGluIGBuZXQvc2NoZWQvc2NoX2FwaS5jYCBhcmUgYWZmZWN0ZWQuIFRoYXQgc2VjdGlvbiBvZiBjb2RlIGlzIHRoZSBtb3N0IGxpa2VseSBsb2NhdGlvbiBmb3IgdGhlIHJlbGV2YW50IGNoYW5nZXMsIGdpdmVuIHRoZSBpbml0aWFsIGRlc2NyaXB0aW9uLiBMZXQgbWUgZXhhbWluZSBgbmV0L3NjaGVkL3NjaF9hcGkuY2AgYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15bYS16QS1aX10uKlxcKC4qXFwpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL3NjaF9hcGkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2NoZWQvc2NoX2FwaS5jLTExOC0vKiBQcm90ZWN0cyBsaXN0IG9mIHJlZ2lzdGVyZWQgVEMgbW9kdWxlcy4gSXQgaXMgcHVyZSBTTVAgbG9jay4gKi9cbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTE5OnN0YXRpYyBERUZJTkVfUldMT0NLKHFkaXNjX21vZF9sb2NrKTtcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTIwLVxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmM9MTI5PXN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzICpxZGlzY19iYXNlO1xuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTMyLVxubmV0L3NjaGVkL3NjaF9hcGkuYzoxMzM6aW50IHJlZ2lzdGVyX3FkaXNjKHN0cnVjdCBRZGlzY19vcHMgKnFvcHMpXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTEzNC17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNzQtfVxubmV0L3NjaGVkL3NjaF9hcGkuYzoxNzU6RVhQT1JUX1NZTUJPTChyZWdpc3Rlcl9xZGlzYyk7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE3Ni1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTc3OnZvaWQgdW5yZWdpc3Rlcl9xZGlzYyhzdHJ1Y3QgUWRpc2Nfb3BzICpxb3BzKVxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNzgte1xuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTk0LX1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTk1OkVYUE9SVF9TWU1CT0wodW5yZWdpc3Rlcl9xZGlzYyk7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE5Ni1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTk3LS8qIEdldCBkZWZhdWx0IHFkaXNjIGlmIG5vdCBvdGhlcndpc2Ugc3BlY2lmaWVkICovXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE5ODp2b2lkIHFkaXNjX2dldF9kZWZhdWx0KGNoYXIgKm5hbWUsIHNpemVfdCBsZW4pXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE5OS17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0yMDQtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjIwNTpzdGF0aWMgc3RydWN0IFFkaXNjX29wcyAqcWRpc2NfbG9va3VwX2RlZmF1bHQoY29uc3QgY2hhciAqbmFtZSlcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjA2LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTIyMC0vKiBTZXQgbmV3IGRlZmF1bHQgcWRpc2MgdG8gdXNlICovXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjIyMTppbnQgcWRpc2Nfc2V0X2RlZmF1bHQoY29uc3QgY2hhciAqbmFtZSlcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjIyLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI1MC0vKiBTZXQgZGVmYXVsdCB2YWx1ZSBmcm9tIGtlcm5lbCBjb25maWcgKi9cbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjUxOnN0YXRpYyBpbnQgX19pbml0IHNjaF9kZWZhdWx0X3FkaXNjKHZvaWQpXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI1Mi17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNTQtfVxubmV0L3NjaGVkL3NjaF9hcGkuYzoyNTU6bGF0ZV9pbml0Y2FsbChzY2hfZGVmYXVsdF9xZGlzYyk7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI1Ni0jZW5kaWZcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI2Mi1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjYzOnN0YXRpYyBzdHJ1Y3QgUWRpc2MgKnFkaXNjX21hdGNoX2Zyb21fcm9vdChzdHJ1Y3QgUWRpc2MgKnJvb3QsIHUzMiBoYW5kbGUpXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI2NC17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0yODEtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjI4Mjp2b2lkIHFkaXNjX2hhc2hfYWRkKHN0cnVjdCBRZGlzYyAqcSwgYm9vbCBpbnZpc2libGUpXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI4My17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0yOTAtfVxubmV0L3NjaGVkL3NjaF9hcGkuYzoyOTE6RVhQT1JUX1NZTUJPTChxZGlzY19oYXNoX2FkZCk7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI5Mi1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjkzOnZvaWQgcWRpc2NfaGFzaF9kZWwoc3RydWN0IFFkaXNjICpxKVxubmV0L3NjaGVkL3NjaF9hcGkuYy0yOTQte1xuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjk5LX1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6MzAwOkVYUE9SVF9TWU1CT0wocWRpc2NfaGFzaF9kZWwpO1xubmV0L3NjaGVkL3NjaF9hcGkuYy0zMDEtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjMwMjpzdHJ1Y3QgUWRpc2MgKnFkaXNjX2xvb2t1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgaGFuZGxlKVxubmV0L3NjaGVkL3NjaF9hcGkuYy0zMDMte1xuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMzE5LVxubmV0L3NjaGVkL3NjaF9hcGkuYzozMjA6c3RydWN0IFFkaXNjICpxZGlzY19sb29rdXBfcmN1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiBoYW5kbGUpXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTMyMS17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYz0zMzk9c3RhdGljIHN0cnVjdCBRZGlzYyAqcWRpc2NfbGVhZihzdHJ1Y3QgUWRpc2MgKnAsIHUzMiBjbGFzc2lkLFxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMzU5LVxubmV0L3NjaGVkL3NjaF9hcGkuYzozNjA6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgKnFkaXNjX2xvb2t1cF9vcHMoc3RydWN0IG5sYXR0ciAqa2luZClcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMzYxLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTM5NC0gKi9cbm5ldC9zY2hlZC9zY2hfYXBpLmM6Mzk1OnN0YXRpYyBfX3U4IF9fZGV0ZWN0X2xpbmtsYXllcihzdHJ1Y3QgdGNfcmF0ZXNwZWMgKnIsIF9fdTMyICpydGFiKVxubmV0L3NjaGVkL3NjaF9hcGkuYy0zOTYte1xuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmM9NDE3PXN0YXRpYyBzdHJ1Y3QgcWRpc2NfcmF0ZV90YWJsZSAqcWRpc2NfcnRhYl9saXN0O1xubmV0L3NjaGVkL3NjaF9hcGkuYzo0MTg6c3RhdGljIERFRklORV9TUElOTE9DSyhxZGlzY19ydGFiX2xvY2spO1xubmV0L3NjaGVkL3NjaF9hcGkuYy00MTktXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTQyMD1zdHJ1Y3QgcWRpc2NfcmF0ZV90YWJsZSAqcWRpc2NfZ2V0X3J0YWIoc3RydWN0IHRjX3JhdGVzcGVjICpyLFxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtNDYwLX1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6NDYxOkVYUE9SVF9TWU1CT0wocWRpc2NfZ2V0X3J0YWIpO1xubmV0L3NjaGVkL3NjaF9hcGkuYy00NjItXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjQ2Mzp2b2lkIHFkaXNjX3B1dF9ydGFiKHN0cnVjdCBxZGlzY19yYXRlX3RhYmxlICp0YWIpXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTQ2NC17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy00ODYtfVxubmV0L3NjaGVkL3NjaF9hcGkuYzo0ODc6RVhQT1JUX1NZTUJPTChxZGlzY19wdXRfcnRhYik7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTQ4OC1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6NDg5OnN0YXRpYyBMSVNUX0hFQUQocWRpc2Nfc3RhYl9saXN0KTtcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNDkwLVxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmM9NDk2PXN0YXRpYyBzdHJ1Y3QgcWRpc2Nfc2l6ZV90YWJsZSAqcWRpc2NfZ2V0X3N0YWIoc3RydWN0IG5sYXR0ciAqb3B0LFxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtNTYwLVxubmV0L3NjaGVkL3NjaF9hcGkuYzo1NjE6dm9pZCBxZGlzY19wdXRfc3RhYihzdHJ1Y3QgcWRpc2Nfc2l6ZV90YWJsZSAqdGFiKVxubmV0L3NjaGVkL3NjaF9hcGkuYy01NjIte1xuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtNTcwLX1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6NTcxOkVYUE9SVF9TWU1CT0wocWRpc2NfcHV0X3N0YWIpO1xubmV0L3NjaGVkL3NjaF9hcGkuYy01NzItXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjU3MzpzdGF0aWMgaW50IHFkaXNjX2R1bXBfc3RhYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgcWRpc2Nfc2l6ZV90YWJsZSAqc3RhYilcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNTc0LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTU5MD12b2lkIF9fcWRpc2NfY2FsY3VsYXRlX3BrdF9sZW4oc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTYxNy1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6NjE4OnN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBxZGlzY193YXRjaGRvZyhzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTYxOS17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYz02MzA9dm9pZCBxZGlzY193YXRjaGRvZ19pbml0X2Nsb2NraWQoc3RydWN0IHFkaXNjX3dhdGNoZG9nICp3ZCwgc3RydWN0IFFkaXNjICpxZGlzYyxcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTYzNS19XG5uZXQvc2NoZWQvc2NoX2FwaS5jOjYzNjpFWFBPUlRfU1lNQk9MKHFkaXNjX3dhdGNoZG9nX2luaXRfY2xvY2tpZCk7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTYzNy1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6NjM4OnZvaWQgcWRpc2Nfd2F0Y2hkb2dfaW5pdChzdHJ1Y3QgcWRpc2Nfd2F0Y2hkb2cgKndkLCBzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxubmV0L3NjaGVkL3NjaF9hcGkuYy02Mzkte1xuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtNjQxLX1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6NjQyOkVYUE9SVF9TWU1CT0wocWRpc2Nfd2F0Y2hkb2dfaW5pdCk7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTY0My1cbm5ldC9zY2hlZC9zY2hfYXBpLmM9NjQ0PXZvaWQgcWRpc2Nfd2F0Y2hkb2dfc2NoZWR1bGVfcmFuZ2VfbnMoc3RydWN0IHFkaXNjX3dhdGNoZG9nICp3ZCwgdTY0IGV4cGlyZXMsXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy02NzEtfVxubmV0L3NjaGVkL3NjaF9hcGkuYzo2NzI6RVhQT1JUX1NZTUJPTChxZGlzY193YXRjaGRvZ19zY2hlZHVsZV9yYW5nZV9ucyk7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTY3My1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6Njc0OnZvaWQgcWRpc2Nfd2F0Y2hkb2dfY2FuY2VsKHN0cnVjdCBxZGlzY193YXRjaGRvZyAqd2QpXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTY3NS17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy02NzctfVxubmV0L3NjaGVkL3NjaF9hcGkuYzo2Nzg6RVhQT1JUX1NZTUJPTChxZGlzY193YXRjaGRvZ19jYW5jZWwpO1xubmV0L3NjaGVkL3NjaF9hcGkuYy02NzktXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjY4MDpzdGF0aWMgc3RydWN0IGhsaXN0X2hlYWQgKnFkaXNjX2NsYXNzX2hhc2hfYWxsb2ModW5zaWduZWQgaW50IG4pXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTY4MS17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy02OTMtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjY5NDp2b2lkIHFkaXNjX2NsYXNzX2hhc2hfZ3JvdyhzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IFFkaXNjX2NsYXNzX2hhc2ggKmNsaGFzaClcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNjk1LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTcyNy19XG5uZXQvc2NoZWQvc2NoX2FwaS5jOjcyODpFWFBPUlRfU1lNQk9MKHFkaXNjX2NsYXNzX2hhc2hfZ3Jvdyk7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTcyOS1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6NzMwOmludCBxZGlzY19jbGFzc19oYXNoX2luaXQoc3RydWN0IFFkaXNjX2NsYXNzX2hhc2ggKmNsaGFzaClcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNzMxLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTc0MS19XG5uZXQvc2NoZWQvc2NoX2FwaS5jOjc0MjpFWFBPUlRfU1lNQk9MKHFkaXNjX2NsYXNzX2hhc2hfaW5pdCk7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTc0My1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6NzQ0OnZvaWQgcWRpc2NfY2xhc3NfaGFzaF9kZXN0cm95KHN0cnVjdCBRZGlzY19jbGFzc19oYXNoICpjbGhhc2gpXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTc0NS17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy03NDctfVxubmV0L3NjaGVkL3NjaF9hcGkuYzo3NDg6RVhQT1JUX1NZTUJPTChxZGlzY19jbGFzc19oYXNoX2Rlc3Ryb3kpO1xubmV0L3NjaGVkL3NjaF9hcGkuYy03NDktXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTc1MD12b2lkIHFkaXNjX2NsYXNzX2hhc2hfaW5zZXJ0KHN0cnVjdCBRZGlzY19jbGFzc19oYXNoICpjbGhhc2gsXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy03NTktfVxubmV0L3NjaGVkL3NjaF9hcGkuYzo3NjA6RVhQT1JUX1NZTUJPTChxZGlzY19jbGFzc19oYXNoX2luc2VydCk7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTc2MS1cbm5ldC9zY2hlZC9zY2hfYXBpLmM9NzYyPXZvaWQgcWRpc2NfY2xhc3NfaGFzaF9yZW1vdmUoc3RydWN0IFFkaXNjX2NsYXNzX2hhc2ggKmNsaGFzaCxcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTc2Ny19XG5uZXQvc2NoZWQvc2NoX2FwaS5jOjc2ODpFWFBPUlRfU1lNQk9MKHFkaXNjX2NsYXNzX2hhc2hfcmVtb3ZlKTtcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNzY5LVxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtNzcyLSAqL1xubmV0L3NjaGVkL3NjaF9hcGkuYzo3NzM6c3RhdGljIHUzMiBxZGlzY19hbGxvY19oYW5kbGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNzc0LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTc4OS1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6NzkwOnZvaWQgcWRpc2NfdHJlZV9yZWR1Y2VfYmFja2xvZyhzdHJ1Y3QgUWRpc2MgKnNjaCwgaW50IG4sIGludCBsZW4pXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTc5MS17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy04MjctfVxubmV0L3NjaGVkL3NjaF9hcGkuYzo4Mjg6RVhQT1JUX1NZTUJPTChxZGlzY190cmVlX3JlZHVjZV9iYWNrbG9nKTtcbm5ldC9zY2hlZC9zY2hfYXBpLmMtODI5LVxubmV0L3NjaGVkL3NjaF9hcGkuYz04MzA9aW50IHFkaXNjX29mZmxvYWRfZHVtcF9oZWxwZXIoc3RydWN0IFFkaXNjICpzY2gsIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLFxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtODQ4LX1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6ODQ5OkVYUE9SVF9TWU1CT0wocWRpc2Nfb2ZmbG9hZF9kdW1wX2hlbHBlcik7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTg1MC1cbm5ldC9zY2hlZC9zY2hfYXBpLmM9ODUxPXZvaWQgcWRpc2Nfb2ZmbG9hZF9ncmFmdF9oZWxwZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IFFkaXNjICpzY2gsXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy04NzctfVxubmV0L3NjaGVkL3NjaF9hcGkuYzo4Nzg6RVhQT1JUX1NZTUJPTChxZGlzY19vZmZsb2FkX2dyYWZ0X2hlbHBlcik7XG5uZXQvc2NoZWQvc2NoX2FwaS5jLTg3OS1cbm5ldC9zY2hlZC9zY2hfYXBpLmM9ODgwPXZvaWQgcWRpc2Nfb2ZmbG9hZF9xdWVyeV9jYXBzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy04OTQtfVxubmV0L3NjaGVkL3NjaF9hcGkuYzo4OTU6RVhQT1JUX1NZTUJPTChxZGlzY19vZmZsb2FkX3F1ZXJ5X2NhcHMpO1xubmV0L3NjaGVkL3NjaF9hcGkuYy04OTYtXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYz0xMDcxPXN0YXRpYyB2b2lkIG5vdGlmeV9hbmRfZGVzdHJveShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0xMDgyLVxubmV0L3NjaGVkL3NjaF9hcGkuYzoxMDgzOnN0YXRpYyB2b2lkIHFkaXNjX2NsZWFyX25vbG9jayhzdHJ1Y3QgUWRpc2MgKnNjaClcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTA4NC17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYz0xNDM2PXN0YXRpYyBpbnQgY2hlY2tfbG9vcF9mbihzdHJ1Y3QgUWRpc2MgKnEsIHVuc2lnbmVkIGxvbmcgY2wsXG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNDM4LVxubmV0L3NjaGVkL3NjaF9hcGkuYzoxNDM5OnN0YXRpYyBpbnQgY2hlY2tfbG9vcChzdHJ1Y3QgUWRpc2MgKnEsIHN0cnVjdCBRZGlzYyAqcCwgaW50IGRlcHRoKVxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNDQwLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTE0NTQ9c3RhdGljIGludFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxNDU1OmNoZWNrX2xvb3BfZm4oc3RydWN0IFFkaXNjICpxLCB1bnNpZ25lZCBsb25nIGNsLCBzdHJ1Y3QgcWRpc2Nfd2Fsa2VyICp3KVxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNDU2LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTE1NTU9c3RhdGljIGludCB0Y19nZXRfcWRpc2Moc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpuLFxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTU3OS1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTU4MDpzdGF0aWMgYm9vbCByZXFfY3JlYXRlX29yX3JlcGxhY2Uoc3RydWN0IG5sbXNnaGRyICpuKVxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNTgxLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE1ODUtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE1ODY6c3RhdGljIGJvb2wgcmVxX2NyZWF0ZV9leGNsdXNpdmUoc3RydWN0IG5sbXNnaGRyICpuKVxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNTg3LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE1OTEtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE1OTI6c3RhdGljIGJvb2wgcmVxX2NoYW5nZShzdHJ1Y3Qgbmxtc2doZHIgKm4pXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE1OTMte1xuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmM9MTU5OT1zdGF0aWMgaW50IF9fdGNfbW9kaWZ5X3FkaXNjKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbixcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE3ODgtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE3ODk6c3RhdGljIHZvaWQgcmVxdWVzdF9xZGlzY19tb2R1bGUoc3RydWN0IG5sYXR0ciAqa2luZClcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTc5MC17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYz0xODQxPXN0YXRpYyBpbnQgdGNfZHVtcF9xZGlzY19yb290KHN0cnVjdCBRZGlzYyAqcm9vdCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE4OTgtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE4OTk6c3RhdGljIGludCB0Y19kdW1wX3FkaXNjKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTkwMC17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYz0yMTA1PXN0cnVjdCB0Y2ZfYmluZF9hcmdzIHtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTIxMTEtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjIxMTI6c3RhdGljIGludCB0Y2Zfbm9kZV9iaW5kKHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCB2b2lkICpuLCBzdHJ1Y3QgdGNmX3dhbGtlciAqYXJnKVxubmV0L3NjaGVkL3NjaF9hcGkuYy0yMTEzLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTI0MTk9c3RhdGljIGludCBfX3RjX2R1bXBfdGNsYXNzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYixcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI0NDMtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjI0NDQ6c3RhdGljIGludCB0Y19kdW1wX3RjbGFzcyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI0NDUte1xuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjQ2Ny0jaWZkZWYgQ09ORklHX1BST0NfRlNcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjQ2ODpzdGF0aWMgaW50IHBzY2hlZF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KVxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNDY5LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI0NzctXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjI0Nzg6c3RhdGljIGludCBfX25ldF9pbml0IHBzY2hlZF9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI0Nzkte1xuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjQ4OC1cbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjQ4OTpzdGF0aWMgdm9pZCBfX25ldF9leGl0IHBzY2hlZF9uZXRfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI0OTAte1xuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjQ5My0jZWxzZVxubmV0L3NjaGVkL3NjaF9hcGkuYzoyNDk0OnN0YXRpYyBpbnQgX19uZXRfaW5pdCBwc2NoZWRfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNDk1LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI0OTgtXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjI0OTk6c3RhdGljIHZvaWQgX19uZXRfZXhpdCBwc2NoZWRfbmV0X2V4aXQoc3RydWN0IG5ldCAqbmV0KVxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNTAwLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTI1MDQ9c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBwc2NoZWRfbmV0X29wcyA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI1MDktI2lmIElTX0VOQUJMRUQoQ09ORklHX01JVElHQVRJT05fUkVUUE9MSU5FKVxubmV0L3NjaGVkL3NjaF9hcGkuYzoyNTEwOkRFRklORV9TVEFUSUNfS0VZX0ZBTFNFKHRjX3NraXBfd3JhcHBlcl9hY3QpO1xubmV0L3NjaGVkL3NjaF9hcGkuYzoyNTExOkRFRklORV9TVEFUSUNfS0VZX0ZBTFNFKHRjX3NraXBfd3JhcHBlcl9jbHMpO1xubmV0L3NjaGVkL3NjaF9hcGkuYy0yNTEyLSNlbmRpZlxuLS1cbm5ldC9zY2hlZC9zY2hfYXBpLmM9MjUxND1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bmxfbXNnX2hhbmRsZXIgcHNjaGVkX3J0bmxfbXNnX2hhbmRsZXJzW10gX19pbml0Y29uc3QgPSB7XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNTI0LVxubmV0L3NjaGVkL3NjaF9hcGkuYzoyNTI1OnN0YXRpYyBpbnQgX19pbml0IHBrdHNjaGVkX2luaXQodm9pZClcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjUyNi17XG4tLVxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNTQ5LVxubmV0L3NjaGVkL3NjaF9hcGkuYzoyNTUwOnN1YnN5c19pbml0Y2FsbChwa3RzY2hlZF9pbml0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU3OTEKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxNzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgUWRpc2MgTW9kaWZpY2F0aW9uIFBhdGgqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBob3cgdG8gYXBwcm9hY2ggZnV6emluZyB0aGUgcWRpc2MgbW9kaWZpY2F0aW9uIGNvZGUuIFRoZSBzdGFydGluZyBwb2ludCBsb29rcyBsaWtlIGB0Y19tb2RpZnlfcWRpc2NgLCB3aGljaCBpcyB0cmlnZ2VyZWQgYnkgYSBuZXRsaW5rIG1lc3NhZ2UsIHNwZWNpZmljYWxseSBgUlRNX05FV1FESVNDYC4gVGhhdCBuZXRsaW5rIGhhbmRsZXIgaXMgc2V0IHVwIGR1cmluZyBgcGt0c2NoZWRfaW5pdGAuIFNvLCBzZW5kaW5nIGNyYWZ0ZWQgbmV0bGluayBtZXNzYWdlcyB0byBgUlRNX05FV1FESVNDYCBzZWVtcyBsaWtlIHRoZSBkaXJlY3Qgcm91dGUgdG8gZXhlcmNpc2UgdGhpcyBjb2RlLgoKSSBuZWVkIHRvIGlkZW50aWZ5IHNvbWUgdGFyZ2V0IHN5bWJvbHMgZm9yIHRoZSBmdXp6aW5nLiBMZXQmIzM5O3Mgc2VlLi4uIGBxZGlzY19kZXN0cm95YCwgYHFkaXNjX3B1dGAsIGBxZGlzY19wdXRfdW5sb2NrZWRgLCBgcWRpc2NfZnJlZV9yY3VgLCBhbmQgYHFkaXNjX2NyZWF0ZV9kZmx0YCBhbGwgbG9vayBpbnRlcmVzdGluZy4gV2FpdCBhIG1pbnV0ZSwgYHFkaXNjX2ZyZWVfcmN1YCBpcyB0aGUgbmV3IGZ1bmN0aW9uLCBzbyBsZXQmIzM5O3MgY2hlY2sgdGhhdCBmaXJzdC4gQSBxdWljayBjaGVjayBvZiB0aGUgc291cmNlIHRyZWUgY29uZmlybXMgdGhhdCBpdCByZXNpZGVzIGluIGBuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY2AuIE5vdywgSSBzaG91bGQgcHJvYmFibHkgYWxzbyBleGFtaW5lIHRoYXQgZmlsZSBmb3IgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIG9mIGludGVyZXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dLipcXCguKlxcKSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTM3PWNvbnN0IHN0cnVjdCBRZGlzY19vcHMgKmRlZmF1bHRfcWRpc2Nfb3BzID0gXHUwMDI2cGZpZm9fZmFzdF9vcHM7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzozODpFWFBPUlRfU1lNQk9MKGRlZmF1bHRfcWRpc2Nfb3BzKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTM5LVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9NDA9dm9pZCBfX3RjZl9rZnJlZV9za2JfbGlzdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnEsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNjItfVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NjM6RVhQT1JUX1NZTUJPTChfX3RjZl9rZnJlZV9za2JfbGlzdCk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02NC1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTY1PXN0YXRpYyB2b2lkIHFkaXNjX21heWJlX2NsZWFyX21pc3NlZChzdHJ1Y3QgUWRpc2MgKnEsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTgtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo5OTpzdGF0aWMgaW5saW5lIHN0cnVjdCBza19idWZmICpfX3NrYl9kZXF1ZXVlX2JhZF90eHEoc3RydWN0IFFkaXNjICpxKVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTAwLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMzQtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMzU6c3RhdGljIGlubGluZSBzdHJ1Y3Qgc2tfYnVmZiAqcWRpc2NfZGVxdWV1ZV9za2JfYmFkX3R4cShzdHJ1Y3QgUWRpc2MgKnEpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMzYte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTE0NT1zdGF0aWMgaW5saW5lIHZvaWQgcWRpc2NfZW5xdWV1ZV9za2JfYmFkX3R4cShzdHJ1Y3QgUWRpc2MgKnEsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTY4LVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTY5OnN0YXRpYyBpbmxpbmUgdm9pZCBkZXZfcmVxdWV1ZV9za2Ioc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpxKVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTcwLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0zNDQ9Ym9vbCBzY2hfZGlyZWN0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpxLFxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTQxNy0gKi9cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjQxODpzdGF0aWMgaW5saW5lIGJvb2wgcWRpc2NfcmVzdGFydChzdHJ1Y3QgUWRpc2MgKnEsIGludCAqcGFja2V0cywgaW50IGJ1ZGdldClcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTQxOS17XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNDM5LVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NDQwOnZvaWQgX19xZGlzY19ydW4oc3RydWN0IFFkaXNjICpxKVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNDQxLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy00NTctXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo0NTg6dW5zaWduZWQgbG9uZyBkZXZfdHJhbnNfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTQ1OS17XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNDcxLX1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjQ3MjpFWFBPUlRfU1lNQk9MKGRldl90cmFuc19zdGFydCk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy00NzMtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo0NzQ6c3RhdGljIHZvaWQgbmV0aWZfZnJlZXplX3F1ZXVlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNDc1LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy00OTQtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo0OTU6dm9pZCBuZXRpZl90eF9sb2NrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy00OTYte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTQ5OS19XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo1MDA6RVhQT1JUX1NZTUJPTChuZXRpZl90eF9sb2NrKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTUwMS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjUwMjpzdGF0aWMgdm9pZCBuZXRpZl91bmZyZWV6ZV9xdWV1ZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTUwMy17XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNTE3LVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NTE4OnZvaWQgbmV0aWZfdHhfdW5sb2NrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy01MTkte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTUyMi19XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo1MjM6RVhQT1JUX1NZTUJPTChuZXRpZl90eF91bmxvY2spO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNTI0LVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NTI1OnN0YXRpYyB2b2lkIGRldl93YXRjaGRvZyhzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTUyNi17XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNTkwLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NTkxOnZvaWQgbmV0ZGV2X3dhdGNoZG9nX3VwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy01OTIte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTYwOC19XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo2MDk6RVhQT1JUX1NZTUJPTF9HUEwobmV0ZGV2X3dhdGNoZG9nX3VwKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTYxMC1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjYxMTpzdGF0aWMgdm9pZCBuZXRkZXZfd2F0Y2hkb2dfZG93bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNjEyLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02MzAtICovXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo2MzE6dm9pZCBuZXRpZl9jYXJyaWVyX29uKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02MzIte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTY0Mi19XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo2NDM6RVhQT1JUX1NZTUJPTChuZXRpZl9jYXJyaWVyX29uKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTY0NC1cbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02NTAtICovXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo2NTE6dm9pZCBuZXRpZl9jYXJyaWVyX29mZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNjUyLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02NTktfVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NjYwOkVYUE9SVF9TWU1CT0wobmV0aWZfY2Fycmllcl9vZmYpO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNjYxLVxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTY2OS0gKi9cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjY3MDp2b2lkIG5ldGlmX2NhcnJpZXJfZXZlbnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTY3MS17XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNjc3LX1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjY3ODpFWFBPUlRfU1lNQk9MX0dQTChuZXRpZl9jYXJyaWVyX2V2ZW50KTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTY3OS1cbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz02ODU9c3RhdGljIGludCBub29wX2VucXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IFFkaXNjICpxZGlzYyxcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02OTItXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo2OTM6c3RhdGljIHN0cnVjdCBza19idWZmICpub29wX2RlcXVldWUoc3RydWN0IFFkaXNjICpxZGlzYylcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTY5NC17XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9NzEyPXN0cnVjdCBRZGlzYyBub29wX3FkaXNjID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTczMS19O1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NzMyOkVYUE9SVF9TWU1CT0wobm9vcF9xZGlzYyk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy03MzMtXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9NzU0PWNvbnN0IHU4IHNjaF9kZWZhdWx0X3ByaW8yYmFuZFtUQ19QUklPX01BWCAmIzQzOyAxXSA9IHtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy03NTYtfTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjc1NzpFWFBPUlRfU1lNQk9MKHNjaF9kZWZhdWx0X3ByaW8yYmFuZCk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy03NTgtXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9Nzc5PXN0YXRpYyBpbnQgcGZpZm9fZmFzdF9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqcWRpc2MsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtODAyLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6ODAzOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcGZpZm9fZmFzdF9kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqcWRpc2MpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy04MDQte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTg0My1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjg0NDpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKnBmaWZvX2Zhc3RfcGVlayhzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtODQ1LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy04NTgtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo4NTk6c3RhdGljIHZvaWQgcGZpZm9fZmFzdF9yZXNldChzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtODYwLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy04ODgtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo4ODk6c3RhdGljIGludCBwZmlmb19mYXN0X2R1bXAoc3RydWN0IFFkaXNjICpxZGlzYywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTg5MC17XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9OTAyPXN0YXRpYyBpbnQgcGZpZm9fZmFzdF9pbml0KHN0cnVjdCBRZGlzYyAqcWRpc2MsIHN0cnVjdCBubGF0dHIgKm9wdCxcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy05MjYtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo5Mjc6c3RhdGljIHZvaWQgcGZpZm9fZmFzdF9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTI4LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz05NjQ9c3RydWN0IFFkaXNjX29wcyBwZmlmb19mYXN0X29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTk3Ny19O1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6OTc4OkVYUE9SVF9TWU1CT0wocGZpZm9fZmFzdF9vcHMpO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTc5LVxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTEwNDE9c3RydWN0IFFkaXNjICpxZGlzY19jcmVhdGVfZGZsdChzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICpkZXZfcXVldWUsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTA2Ny19XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMDY4OkVYUE9SVF9TWU1CT0wocWRpc2NfY3JlYXRlX2RmbHQpO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTA2OS1cbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDcxLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTA3Mjp2b2lkIHFkaXNjX3Jlc2V0KHN0cnVjdCBRZGlzYyAqcWRpc2MpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDczLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDg2LX1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEwODc6RVhQT1JUX1NZTUJPTChxZGlzY19yZXNldCk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDg4LVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTA4OTp2b2lkIHFkaXNjX2ZyZWUoc3RydWN0IFFkaXNjICpxZGlzYylcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEwOTAte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEwOTgtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMDk5OnN0YXRpYyB2b2lkIHFkaXNjX2ZyZWVfY2Ioc3RydWN0IHJjdV9oZWFkICpoZWFkKVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEwMC17XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEwNS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjExMDY6dm9pZCBxZGlzY19mcmVlX3JjdShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEwNy17XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTExMC1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjExMTE6c3RhdGljIHZvaWQgX19xZGlzY19kZXN0cm95KHN0cnVjdCBRZGlzYyAqcWRpc2MpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTEyLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTM3LVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTEzODp2b2lkIHFkaXNjX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpxZGlzYylcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExMzkte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExNDUtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTQ2OnZvaWQgcWRpc2NfcHV0KHN0cnVjdCBRZGlzYyAqcWRpc2MpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTQ3LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTU2LX1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjExNTc6RVhQT1JUX1NZTUJPTChxZGlzY19wdXQpO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTE1OC1cbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTYzLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTE2NDp2b2lkIHFkaXNjX3B1dF91bmxvY2tlZChzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTE2NS17XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTE3Mi19XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTczOkVYUE9SVF9TWU1CT0wocWRpc2NfcHV0X3VubG9ja2VkKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExNzQtXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTE3Nj1zdHJ1Y3QgUWRpc2MgKmRldl9ncmFmdF9xZGlzYyhzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICpkZXZfcXVldWUsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTE5NC19XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTk1OkVYUE9SVF9TWU1CT0woZGV2X2dyYWZ0X3FkaXNjKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExOTYtXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTIxMj1zdGF0aWMgdm9pZCBhdHRhY2hfb25lX2RlZmF1bHRfcWRpc2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMjMyLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTIzMzpzdGF0aWMgdm9pZCBhdHRhY2hfZGVmYXVsdF9xZGlzY3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEyMzQte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTEyNzQ9c3RhdGljIHZvaWQgdHJhbnNpdGlvbl9vbmVfcWRpc2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMjkwLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTI5MTp2b2lkIGRldl9hY3RpdmF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTI5Mi17XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTMxNi19XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMzE3OkVYUE9SVF9TWU1CT0woZGV2X2FjdGl2YXRlKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEzMTgtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMzE5OnN0YXRpYyB2b2lkIHFkaXNjX2RlYWN0aXZhdGUoc3RydWN0IFFkaXNjICpxZGlzYylcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEzMjAte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTEzMjc9c3RhdGljIHZvaWQgZGV2X2RlYWN0aXZhdGVfcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMzQyLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTM0MzpzdGF0aWMgYm9vbCBzb21lX3FkaXNjX2lzX2J1c3koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEzNDQte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEzNzctICovXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMzc4OnZvaWQgZGV2X2RlYWN0aXZhdGVfbWFueShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkLCBib29sIHJlc2V0X25lZWRlZClcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEzNzkte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0MTgtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxNDE5OnZvaWQgZGV2X2RlYWN0aXZhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCByZXNldF9uZWVkZWQpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDIwLXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDI2LX1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0Mjc6RVhQT1JUX1NZTUJPTChkZXZfZGVhY3RpdmF0ZSk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDI4LVxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTE0NDA9dm9pZCBkZXZfcWRpc2NfY2hhbmdlX3JlYWxfbnVtX3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTQ0OC1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0NDk6dm9pZCBtcV9jaGFuZ2VfcmVhbF9udW1fdHgoc3RydWN0IFFkaXNjICpzY2gsIHVuc2lnbmVkIGludCBuZXdfcmVhbF90eClcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0NTAte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0NzAtfVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTQ3MTpFWFBPUlRfU1lNQk9MKG1xX2NoYW5nZV9yZWFsX251bV90eCk7XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDcyLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTQ3MzppbnQgZGV2X3FkaXNjX2NoYW5nZV90eF9xdWV1ZV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0NzQte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTE0OTU9c3RhdGljIHZvaWQgZGV2X2luaXRfc2NoZWR1bGVyX3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTUwNC1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE1MDU6dm9pZCBkZXZfaW5pdF9zY2hlZHVsZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1MDYte1xuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1MTQtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxNTE1OnZvaWQgZGV2X3NodXRkb3duKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNTE2LXtcbi0tXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNTQ4LSAqL1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTU0OTpzdGF0aWMgdm9pZCBwc2NoZWRfcmF0ZWNmZ19wcmVjb21wdXRlX18odTY0IHJhdGUsIHUzMiAqbXVsdCwgdTggKnNoaWZ0KVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTU1MC17XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTU2OD12b2lkIHBzY2hlZF9yYXRlY2ZnX3ByZWNvbXB1dGUoc3RydWN0IHBzY2hlZF9yYXRlY2ZnICpyLFxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1NzgtfVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTU3OTpFWFBPUlRfU1lNQk9MKHBzY2hlZF9yYXRlY2ZnX3ByZWNvbXB1dGUpO1xubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTU4MC1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE1ODE6dm9pZCBwc2NoZWRfcHBzY2ZnX3ByZWNvbXB1dGUoc3RydWN0IHBzY2hlZF9wa3RyYXRlICpyLCB1NjQgcGt0cmF0ZTY0KVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTU4Mi17XG4tLVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTU4NS19XG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxNTg2OkVYUE9SVF9TWU1CT0wocHNjaGVkX3Bwc2NmZ19wcmVjb21wdXRlKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1ODctXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xNTg4PXZvaWQgbWluaV9xZGlzY19wYWlyX3N3YXAoc3RydWN0IG1pbmlfUWRpc2NfcGFpciAqbWluaXFwLFxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE2MjQtfVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTYyNTpFWFBPUlRfU1lNQk9MKG1pbmlfcWRpc2NfcGFpcl9zd2FwKTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE2MjYtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xNjI3PXZvaWQgbWluaV9xZGlzY19wYWlyX2Jsb2NrX2luaXQoc3RydWN0IG1pbmlfUWRpc2NfcGFpciAqbWluaXFwLFxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE2MzItfVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTYzMzpFWFBPUlRfU1lNQk9MKG1pbmlfcWRpc2NfcGFpcl9ibG9ja19pbml0KTtcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE2MzQtXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xNjM1PXZvaWQgbWluaV9xZGlzY19wYWlyX2luaXQoc3RydWN0IG1pbmlfUWRpc2NfcGFpciAqbWluaXFwLCBzdHJ1Y3QgUWRpc2MgKnFkaXNjLFxuLS1cbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE2NDUtfVxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTY0NjpFWFBPUlRfU1lNQk9MKG1pbmlfcWRpc2NfcGFpcl9pbml0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMTE6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjExOTEKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE5ldHdvcmsgU2NoZWR1bGVyIENsZWFudXAgRnVuY3Rpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBuZXR3b3JrIHNjaGVkdWxlciBmdW5jdGlvbnMuIEl0IHNlZW1zIHRoYXQgYHFkaXNjX2ZyZWVfcmN1YCwgYHFkaXNjX2ZyZWVgLCBgcWRpc2NfZGVzdHJveWAsIGBxZGlzY19wdXRgLCBhbmQgYHFkaXNjX3B1dF91bmxvY2tlZGAgYXJlIGFsbCBub24tc3RhdGljLiBJbnRlcmVzdGluZy4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIHN1c3BlY3QgdGhpcyBtZWFucyB0aGV5JiMzOTtyZSBpbnRlbmRlZCB0byBiZSBjYWxsYWJsZSBmcm9tIG91dHNpZGUgdGhlIGltbWVkaWF0ZSBtb2R1bGUuIEkgdGhpbmsgd2UgY2FuIGZvY3VzIG91ciBhdHRlbnRpb24gZm9yIG5vdyBvbiBgcWRpc2NfZnJlZV9yY3VgIGFuZCBgcWRpc2NfZGVzdHJveWAgYXMgbGlrZWx5IGNhbmRpZGF0ZXMgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgbmV0d29yayBzY2hlZHVsZXIsIHNvIHRoZSByZWxldmFudCBjb25maWcgb3B0aW9uIGhlcmUgaXMgYWxtb3N0IGNlcnRhaW5seSBgQ09ORklHX05FVF9TQ0hFRGAuIE5vdyBJIG5lZWQgdG8gY2hlY2sgd2hldGhlciBgQ09ORklHX05FVF9TQ0hFRGAgaGFzIGFueSBkZXBlbmRlbmNpZXMuIFRoYXQmIzM5O3MgdGhlIG5leHQgbG9naWNhbCBzdGVwLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wYWN0IG9uIHRoZSBsYXJnZXIgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX1NDSEVEJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjaGVkL0tjb25maWctNS1cbm5ldC9zY2hlZC9LY29uZmlnOjY6bWVudWNvbmZpZyBORVRfU0NIRURcbm5ldC9zY2hlZC9LY29uZmlnLTctXHRib29sIFwmIzM0O1FvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTU4NQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkV4YW1pbmluZyBLZXJuZWwgQ29uZmlndXJhdGlvbiBmb3IgU2NoZWR1bGluZyBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZywgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIGl0JiMzOTtzIHBydWRlbnQgdG8gY29uZmlybSB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgZm9yIGBORVRfU0NIRURgLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIG5ldHdvcmsgc2NoZWR1bGluZyBoZXJlLCBhIGNvcmUgcGFydCBvZiB0aGUga2VybmVsJiMzOTtzIHRyYWZmaWMgc2hhcGluZyBhbmQgcXVldWluZyBtZWNoYW5pc21zLiBCZXN0IHRvIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgbmV0L3NjaGVkL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIGFsbCB0aG9zZSBsb3dlci1sZXZlbCBkZXBlbmRlbmNpZXMgYXJlIGRlZmluZWQuIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiB3aGF0IG90aGVyIGZlYXR1cmVzIG9yIG1vZHVsZXMgKm11c3QqIGJlIGVuYWJsZWQgb3IgY29uZmlndXJlZCBhcHByb3ByaWF0ZWx5IGZvciBgTkVUX1NDSEVEYCB0byBldmVuIGJlIGNvbnNpZGVyZWQuIEFyZSB3ZSB0YWxraW5nIGFib3V0IHNwZWNpZmljIG5ldHdvcmsgc3RhY2sgb3B0aW9ucywgY2VydGFpbiBoYXJkd2FyZSBkcml2ZXJzLCBvciBwZXJoYXBzIGEgcmVxdWlyZW1lbnQgZm9yIHBhcnRpY3VsYXIgUW9TIHNldHRpbmdzPyBJIG5lZWQgdG8ga25vdyB3aGVyZSBpdCBzdGFuZHMgd2l0aGluIHRoZSBjb25maWd1cmF0aW9uIG1hdHJpeC4gVGhpcyBlYXJseSBzYW5pdHkgY2hlY2sgd2lsbCBpbmZvcm0gdGhlIGZvbGxvd2luZyBzdGVwcyBhbmQgYXZvaWRzIHN1cnByaXNlcyBsYXRlciBvbi4gSXQmIzM5O2xsIGFsc28gbGlrZWx5IGdpdmUgbWUgaGludHMgb24gaG93IG15IGN1cnJlbnQgcHJvamVjdCBtaWdodCBiZSBhZmZlY3RlZC4gR290dGEgbWFwIHRoZSBsYW5kc2NhcGUgYmVmb3JlIG1vdmluZyBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zY2hlZC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgVHJhZmZpYyBjb250cm9sIGNvbmZpZ3VyYXRpb24uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgTkVUX1NDSEVEXG4gICA3Olx0XHRib29sIFwmIzM0O1FvUyBhbmQvb3IgZmFpciBxdWV1ZWluZ1wmIzM0O1xuICAgODpcdFx0c2VsZWN0IE5FVF9TQ0hfRklGT1xuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBXaGVuIHRoZSBrZXJuZWwgaGFzIHNldmVyYWwgcGFja2V0cyB0byBzZW5kIG91dCBvdmVyIGEgbmV0d29ya1xuICAxMTpcdFx0ICBkZXZpY2UsIGl0IGhhcyB0byBkZWNpZGUgd2hpY2ggb25lcyB0byBzZW5kIGZpcnN0LCB3aGljaCBvbmVzIHRvXG4gIDEyOlx0XHQgIGRlbGF5LCBhbmQgd2hpY2ggb25lcyB0byBkcm9wLiBUaGlzIGlzIHRoZSBqb2Igb2YgdGhlIHF1ZXVlaW5nXG4gIDEzOlx0XHQgIGRpc2NpcGxpbmVzLCBzZXZlcmFsIGRpZmZlcmVudCBhbGdvcml0aG1zIGZvciBob3cgdG8gZG8gdGhpc1xuICAxNDpcdFx0ICBcJiMzNDtmYWlybHlcJiMzNDsgaGF2ZSBiZWVuIHByb3Bvc2VkLlxuICAxNTpcdFxuICAxNjpcdFx0ICBJZiB5b3Ugc2F5IE4gaGVyZSwgeW91IHdpbGwgZ2V0IHRoZSBzdGFuZGFyZCBwYWNrZXQgc2NoZWR1bGVyLCB3aGljaFxuICAxNzpcdFx0ICBpcyBhIEZJRk8gKGZpcnN0IGNvbWUsIGZpcnN0IHNlcnZlZCkuIElmIHlvdSBzYXkgWSBoZXJlLCB5b3Ugd2lsbCBiZVxuICAxODpcdFx0ICBhYmxlIHRvIGNob29zZSBmcm9tIGFtb25nIHNldmVyYWwgYWx0ZXJuYXRpdmUgYWxnb3JpdGhtcyB3aGljaCBjYW5cbiAgMTk6XHRcdCAgdGhlbiBiZSBhdHRhY2hlZCB0byBkaWZmZXJlbnQgbmV0d29yayBkZXZpY2VzLiBUaGlzIGlzIHVzZWZ1bCBmb3JcbiAgMjA6XHRcdCAgZXhhbXBsZSBpZiBzb21lIG9mIHlvdXIgbmV0d29yayBkZXZpY2VzIGFyZSByZWFsIHRpbWUgZGV2aWNlcyB0aGF0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDExOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMTU3CgkJCQkJCQlvdXRwdXQ6IDE3NgoJCQkJCQkJdGhvdWdodHM6IDM4MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgYE5FVF9TQ0hFRGAgQ29uZmlndXJhdGlvbiBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb24gaGVyZSBpcyBgTkVUX1NDSEVEYC4gTGV0IG1lIHN1bW1hcml6ZSBteSBmaW5kaW5ncyBmb3IgdGhpcyBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXQuIFRoZSBwYXRjaCBzZWVtcyBpbnRlcmVzdGluZyBiZWNhdXNlIGl0IHRvdWNoZXMgb24gY3JpdGljYWwgcmVzb3VyY2UgbWFuYWdlbWVudCB3aXRoaW4gdGhlIG5ldHdvcmsgc2NoZWR1bGluZyBzdWJzeXN0ZW0uCgpIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzczogVGhlIG1vc3QgaW1wb3J0YW50IHRoaW5nIGlzIHRoYXQgYFdvcnRoRnV6emluZ2AgaXMgYHRydWVgLCB3aGljaCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuCgpUaGUgY29yZSBvZiB0aGlzIHJldm9sdmVzIGFyb3VuZCB0aGVzZSBzeW1ib2xzOiBgcWRpc2NfZnJlZV9yY3VgLCBgcWRpc2NfZGVzdHJveWAsIGBxZGlzY19wdXRgLCBhbmQgYHFkaXNjX3B1dF91bmxvY2tlZGAuCgpUaGUgY3JpdGljYWwgcmVhc29uaW5nIGJlaGluZCBzZWxlY3RpbmcgdGhlc2Ugc3ltYm9scyBpcyB0aGUgcGF0Y2gmIzM5O3MgbW9kaWZpY2F0aW9uIG9mIHRoZSBlcnJvciBwYXRoIG9mIGBxZGlzY19jcmVhdGVgLiBUaGUgb3JpZ2luYWwgYHFkaXNjX2ZyZWVgIGlzIHJlcGxhY2VkIHdpdGggYHFkaXNjX2ZyZWVfcmN1YCwgYW5kIGBfX3FkaXNjX2Rlc3Ryb3lgIGlzIHVwZGF0ZWQgdG8gdXRpbGl6ZSBgcWRpc2NfZnJlZV9yY3VgIGFzIHdlbGwuIFRoaXMgc3Vic3RpdHV0aW9uIHN1Z2dlc3RzIGEgZml4IGZvciBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByYWNlIGNvbmRpdGlvbiwgYWRkcmVzc2luZyBzY2VuYXJpb3Mgd2hlcmUgUkNVIChSZWFkLUNvcHktVXBkYXRlKSBzZW1hbnRpY3Mgd2VyZSByZXF1aXJlZCBidXQgbm90IHByZXZpb3VzbHkgdXNlZC4gVGhlIGNvZGUgYXBwZWFycyB0byBiZSByZWFjaGFibGUgdmlhIG5ldGxpbmsgYFJUTV9ORVdRRElTQ2AgbWVzc2FnZXMuIFRoaXMgbWFrZXMgaXQgYW4gZXNwZWNpYWxseSBhcHBlYWxpbmcgdGFyZ2V0LgoKVGhlIGFkZGVkIGBxZGlzY19mcmVlX3JjdWAgaXMgYSBrZXkgZm9jdXMgYmVjYXVzZSBpdCYjMzk7cyBuZXcgYW5kIGxpa2VseSBoYXMgc29tZSBpbnRlcmVzdGluZyBjb2RlIHBhdGhzLiBgcWRpc2NfZGVzdHJveWAgaXMgbW9kaWZpZWQgdG8gdXNlIGl0LiBOb3csIGxldCYjMzk7cyBqdXN0IGRvIGEgcXVpY2sgY2hlY2sgdG8gc2VlIGlmIGBxZGlzY19jcmVhdGVgIGlzIGlubGluZWQsIG9yIHN0YXRpY2FsbHkgZGVmaW5lZC4gSXQgaXMgc3RhdGljLiBgdGNfbW9kaWZ5X3FkaXNjYCBpcyB0aGUgbmV0bGluayBoYW5kbGVyLCBhbHNvIHN0YXRpYy4KCkkmIzM5O20gY29uZmlkZW50IGluIHRoZSBpbml0aWFsIHN5bWJvbHMsIHNvIEkgdGhpbmsgYWRkaW5nIGBxZGlzY19mcmVlX3JjdWAsIGBxZGlzY19kZXN0cm95YCwgYHFkaXNjX3B1dGAsIGFuZCBgcWRpc2NfcHV0X3VubG9ja2VkYCBhcyBmb2N1cyBzeW1ib2xzIHdpbGwgYmUgY29ycmVjdC4KCk9uZSBsYXN0IGNoZWNrOiBJJiMzOTtsbCBxdWlja2x5IHZlcmlmeSB0aGF0IGBxZGlzY19mcmVlX3JjdWAgaXMgZGVmaW5pdGVseSBkZWZpbmVkIGluIGBuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY2AgYXMgYHZvaWQgcWRpc2NfZnJlZV9yY3Uoc3RydWN0IFFkaXNjICpxZGlzYylgIHRvIG1ha2Ugc3VyZSBpdCYjMzk7cyBub3QgYmVpbmcgaW5saW5lZC4gWWVzLCB0aGF0JiMzOTtzIGNvcnJlY3QuCgpBbHJpZ2h0LCBJJiMzOTttIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoZXNlIHZhbHVlcyBub3cuIFRoaXMgc2VlbXMgbGlrZSBhIHByb21pc2luZyBwYXRoIGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAxMTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX1NDSEVEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cWRpc2NfZnJlZV9yY3UmIzM0OywKICAgICYjMzQ7cWRpc2NfZGVzdHJveSYjMzQ7LAogICAgJiMzNDtxZGlzY19wdXQmIzM0OywKICAgICYjMzQ7cWRpc2NfcHV0X3VubG9ja2VkJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBwYXRoIG9mIGBxZGlzY19jcmVhdGVgIGFuZCB0aGUgZGVzdHJ1Y3Rpb24gcGF0aCBpbiBgX19xZGlzY19kZXN0cm95YCB0byB1c2UgYSBuZXdseSBpbnRyb2R1Y2VkIGBxZGlzY19mcmVlX3JjdWAgZnVuY3Rpb24gaW5zdGVhZCBvZiBmcmVlaW5nIHRoZSBxZGlzYyBkaXJlY3RseSBvciBjYWxsaW5nIGBjYWxsX3JjdWAgbWFudWFsbHkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIFJDVS1yZWxhdGVkIGlzc3VlLiBUaGUgY29kZSBpcyByZWFjaGFibGUgdmlhIG5ldGxpbmsgYFJUTV9ORVdRRElTQ2AgYW5kIGBSVE1fREVMUURJU0NgIG1lc3NhZ2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfU0NIRUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtxZGlzY19mcmVlX3JjdSYjMzQ7LAogICAgJiMzNDtxZGlzY19kZXN0cm95JiMzNDssCiAgICAmIzM0O3FkaXNjX3B1dCYjMzQ7LAogICAgJiMzNDtxZGlzY19wdXRfdW5sb2NrZWQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIHBhdGggb2YgYHFkaXNjX2NyZWF0ZWAgYW5kIHRoZSBkZXN0cnVjdGlvbiBwYXRoIGluIGBfX3FkaXNjX2Rlc3Ryb3lgIHRvIHVzZSBhIG5ld2x5IGludHJvZHVjZWQgYHFkaXNjX2ZyZWVfcmN1YCBmdW5jdGlvbiBpbnN0ZWFkIG9mIGZyZWVpbmcgdGhlIHFkaXNjIGRpcmVjdGx5IG9yIGNhbGxpbmcgYGNhbGxfcmN1YCBtYW51YWxseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgUkNVLXJlbGF0ZWQgaXNzdWUuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBgUlRNX05FV1FESVNDYCBhbmQgYFJUTV9ERUxRRElTQ2AgbWVzc2FnZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMTozOToyNS4wMjM4Mjg1MjFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODIxNjAwNDAyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJxZGlzY19mcmVlX3JjdVwiLFxuICAgIFwicWRpc2NfZGVzdHJveVwiLFxuICAgIFwicWRpc2NfcHV0XCIsXG4gICAgXCJxZGlzY19wdXRfdW5sb2NrZWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgcGF0aCBvZiBgcWRpc2NfY3JlYXRlYCBhbmQgdGhlIGRlc3RydWN0aW9uIHBhdGggaW4gYF9fcWRpc2NfZGVzdHJveWAgdG8gdXNlIGEgbmV3bHkgaW50cm9kdWNlZCBgcWRpc2NfZnJlZV9yY3VgIGZ1bmN0aW9uIGluc3RlYWQgb2YgZnJlZWluZyB0aGUgcWRpc2MgZGlyZWN0bHkgb3IgY2FsbGluZyBgY2FsbF9yY3VgIG1hbnVhbGx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBSQ1UtcmVsYXRlZCBpc3N1ZS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGBSVE1fTkVXUURJU0NgIGFuZCBgUlRNX0RFTFFESVNDYCBtZXNzYWdlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6Mzk6MjUuMDIzODM0NDUxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTUyMDUxNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4MzQwMmM0MWM0MmRhY2Y2YzYyYzgwMTY0NDA3ZjQ4ZTY4OTk0M2VjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgQXVnIDUgMTE6Mzk6MjQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaCBiL2luY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmhcXG5pbmRleCA0NWExZThjNzgyMjJiLi5kNDU0NDJjOTI2MjFiIDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmhcXG4rKysgYi9pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oXFxuQEAgLTc5Myw2ICs3OTMsNyBAQCBzdHJ1Y3QgUWRpc2MgKnFkaXNjX2FsbG9jKHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSxcXG4gXFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICpvcHMsXFxuIFxcdFxcdFxcdCAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcXG4gdm9pZCBxZGlzY19mcmVlKHN0cnVjdCBRZGlzYyAqcWRpc2MpO1xcbit2b2lkIHFkaXNjX2ZyZWVfcmN1KHN0cnVjdCBRZGlzYyAqcWRpc2MpO1xcbiBzdHJ1Y3QgUWRpc2MgKnFkaXNjX2NyZWF0ZV9kZmx0KHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSxcXG4gXFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IFFkaXNjX29wcyAqb3BzLCB1MzIgcGFyZW50aWQsXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XFxuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfYXBpLmMgYi9uZXQvc2NoZWQvc2NoX2FwaS5jXFxuaW5kZXggNjY4YmNkNjBkMTgzZS4uMDQxYmQ2MDA3MjAxNiAxMDA2NDRcXG4tLS0gYS9uZXQvc2NoZWQvc2NoX2FwaS5jXFxuKysrIGIvbmV0L3NjaGVkL3NjaF9hcGkuY1xcbkBAIC0xMzczLDcgKzEzNzMsNyBAQCBzdGF0aWMgc3RydWN0IFFkaXNjICpxZGlzY19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gZXJyX291dDM6XFxuIFxcdHFkaXNjX2xvY2tfdW5pbml0KHNjaCwgb3BzKTtcXG4gXFx0bmV0ZGV2X3B1dChkZXYsIFxcdTAwMjZzY2gtXFx1MDAzZWRldl90cmFja2VyKTtcXG4tXFx0cWRpc2NfZnJlZShzY2gpO1xcbitcXHRxZGlzY19mcmVlX3JjdShzY2gpO1xcbiBlcnJfb3V0MjpcXG4gXFx0YnBmX21vZHVsZV9wdXQob3BzLCBvcHMtXFx1MDAzZW93bmVyKTtcXG4gZXJyX291dDpcXG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmMgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1xcbmluZGV4IGVmMmI0YmY1MTU2NDEuLjg2ZDU1MWZiYWJjYzIgMTAwNjQ0XFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmNcXG4rKysgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1xcbkBAIC0xMTAzLDYgKzExMDMsMTEgQEAgc3RhdGljIHZvaWQgcWRpc2NfZnJlZV9jYihzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXFxuIFxcdHFkaXNjX2ZyZWUocSk7XFxuIH1cXG4gXFxuK3ZvaWQgcWRpc2NfZnJlZV9yY3Uoc3RydWN0IFFkaXNjICpxZGlzYylcXG4re1xcbitcXHRjYWxsX3JjdShcXHUwMDI2cWRpc2MtXFx1MDAzZXJjdSwgcWRpc2NfZnJlZV9jYik7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIF9fcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxcbiB7XFxuIFxcdGNvbnN0IHN0cnVjdCBRZGlzY19vcHMgICpvcHMgPSBxZGlzYy1cXHUwMDNlb3BzO1xcbkBAIC0xMTI3LDcgKzExMzIsNyBAQCBzdGF0aWMgdm9pZCBfX3FkaXNjX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpxZGlzYylcXG4gXFxuIFxcdHRyYWNlX3FkaXNjX2Rlc3Ryb3kocWRpc2MpO1xcbiBcXG4tXFx0Y2FsbF9yY3UoXFx1MDAyNnFkaXNjLVxcdTAwM2VyY3UsIHFkaXNjX2ZyZWVfY2IpO1xcbitcXHRxZGlzY19mcmVlX3JjdShxZGlzYyk7XFxuIH1cXG4gXFxuIHZvaWQgcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMTozOToyNS40MTk3NzE2ODFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3NzgyMDA1MTgyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfU0NIRURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJxZGlzY19mcmVlX3JjdVwiLFxuICAgIFwicWRpc2NfZGVzdHJveVwiLFxuICAgIFwicWRpc2NfcHV0XCIsXG4gICAgXCJxZGlzY19wdXRfdW5sb2NrZWRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgcGF0aCBvZiBgcWRpc2NfY3JlYXRlYCBhbmQgdGhlIGRlc3RydWN0aW9uIHBhdGggaW4gYF9fcWRpc2NfZGVzdHJveWAgdG8gdXNlIGEgbmV3bHkgaW50cm9kdWNlZCBgcWRpc2NfZnJlZV9yY3VgIGZ1bmN0aW9uIGluc3RlYWQgb2YgZnJlZWluZyB0aGUgcWRpc2MgZGlyZWN0bHkgb3IgY2FsbGluZyBgY2FsbF9yY3VgIG1hbnVhbGx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciBSQ1UtcmVsYXRlZCBpc3N1ZS4gVGhlIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBuZXRsaW5rIGBSVE1fTkVXUURJU0NgIGFuZCBgUlRNX0RFTFFESVNDYCBtZXNzYWdlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgODM0MDJjNDFjNDJkYWNmNmM2MmM4MDE2NDQwN2Y0OGU2ODk5NDNlY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDUgMTE6Mzk6MjQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9zY2hfZ2VuZXJpYy5oIGIvaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaFxuaW5kZXggNDVhMWU4Yzc4MjIyYi4uZDQ1NDQyYzkyNjIxYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmhcbisrKyBiL2luY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmhcbkBAIC03OTMsNiArNzkzLDcgQEAgc3RydWN0IFFkaXNjICpxZGlzY19hbGxvYyhzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICpkZXZfcXVldWUsXG4gXHRcdFx0ICBjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICpvcHMsXG4gXHRcdFx0ICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuIHZvaWQgcWRpc2NfZnJlZShzdHJ1Y3QgUWRpc2MgKnFkaXNjKTtcbit2b2lkIHFkaXNjX2ZyZWVfcmN1KHN0cnVjdCBRZGlzYyAqcWRpc2MpO1xuIHN0cnVjdCBRZGlzYyAqcWRpc2NfY3JlYXRlX2RmbHQoc3RydWN0IG5ldGRldl9xdWV1ZSAqZGV2X3F1ZXVlLFxuIFx0XHRcdFx0Y29uc3Qgc3RydWN0IFFkaXNjX29wcyAqb3BzLCB1MzIgcGFyZW50aWQsXG4gXHRcdFx0XHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfYXBpLmMgYi9uZXQvc2NoZWQvc2NoX2FwaS5jXG5pbmRleCA2NjhiY2Q2MGQxODNlLi4wNDFiZDYwMDcyMDE2IDEwMDY0NFxuLS0tIGEvbmV0L3NjaGVkL3NjaF9hcGkuY1xuKysrIGIvbmV0L3NjaGVkL3NjaF9hcGkuY1xuQEAgLTEzNzMsNyArMTM3Myw3IEBAIHN0YXRpYyBzdHJ1Y3QgUWRpc2MgKnFkaXNjX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIGVycl9vdXQzOlxuIFx0cWRpc2NfbG9ja191bmluaXQoc2NoLCBvcHMpO1xuIFx0bmV0ZGV2X3B1dChkZXYsIFx1MDAyNnNjaC1cdTAwM2VkZXZfdHJhY2tlcik7XG4tXHRxZGlzY19mcmVlKHNjaCk7XG4rXHRxZGlzY19mcmVlX3JjdShzY2gpO1xuIGVycl9vdXQyOlxuIFx0YnBmX21vZHVsZV9wdXQob3BzLCBvcHMtXHUwMDNlb3duZXIpO1xuIGVycl9vdXQ6XG5kaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9nZW5lcmljLmMgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1xuaW5kZXggZWYyYjRiZjUxNTY0MS4uODZkNTUxZmJhYmNjMiAxMDA2NDRcbi0tLSBhL25ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jXG4rKysgYi9uZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1xuQEAgLTExMDMsNiArMTEwMywxMSBAQCBzdGF0aWMgdm9pZCBxZGlzY19mcmVlX2NiKHN0cnVjdCByY3VfaGVhZCAqaGVhZClcbiBcdHFkaXNjX2ZyZWUocSk7XG4gfVxuIFxuK3ZvaWQgcWRpc2NfZnJlZV9yY3Uoc3RydWN0IFFkaXNjICpxZGlzYylcbit7XG4rXHRjYWxsX3JjdShcdTAwMjZxZGlzYy1cdTAwM2VyY3UsIHFkaXNjX2ZyZWVfY2IpO1xuK31cbitcbiBzdGF0aWMgdm9pZCBfX3FkaXNjX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpxZGlzYylcbiB7XG4gXHRjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICAqb3BzID0gcWRpc2MtXHUwMDNlb3BzO1xuQEAgLTExMjcsNyArMTEzMiw3IEBAIHN0YXRpYyB2b2lkIF9fcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxuIFxuIFx0dHJhY2VfcWRpc2NfZGVzdHJveShxZGlzYyk7XG4gXG4tXHRjYWxsX3JjdShcdTAwMjZxZGlzYy1cdTAwM2VyY3UsIHFkaXNjX2ZyZWVfY2IpO1xuK1x0cWRpc2NfZnJlZV9yY3UocWRpc2MpO1xuIH1cbiBcbiB2b2lkIHFkaXNjX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpxZGlzYylcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjM5OjI1LjQxOTc3Mzc0MVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1MDA4MDg4NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0d29ya2luZyBTY2hlZHVsZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZXhwZXJ0IGV5ZSBob25lcyBpbiBvbiBzb21lIGludGVyZXN0aW5nIGNoYW5nZXMgd2l0aGluIGBuZXQvc2NoZWQvc2NoX2FwaS5jYCBhbmQgYG5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jYC4gVGhlIGNvcmUgb2YgdGhlIHBhdGNoIHJldm9sdmVzIGFyb3VuZCBob3cgdGhleSdyZSBoYW5kbGluZyBlcnJvciBwYXRocyB3aXRoaW4gYHFkaXNjX2NyZWF0ZWAuIFByZXZpb3VzbHksIGl0IGxvb2tzIGxpa2UgYHFkaXNjX2ZyZWVgIHdhcyBkaXJlY3RseSBpbnZva2VkIGluIGNlcnRhaW4gZXJyb3Igc2NlbmFyaW9zLiBOb3csIHRoZSBwYXRjaCBpbnRlbGxpZ2VudGx5IHN3YXBzIHRoYXQgb3V0IGZvciBgcWRpc2NfZnJlZV9yY3VgLiBUaGlzIGlzIGEgY2xlYXIgaW5kaWNhdG9yIHRoYXQgdGhlIGRldmVsb3BlciBpcyBhZGRyZXNzaW5nIHBvdGVudGlhbCBjb25jdXJyZW5jeSBpc3N1ZXMsIHNwZWNpZmljYWxseSBhIHBvc3NpYmxlIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvLiBUaGlzIGlzIGJlY2F1c2UgYHFkaXNjX2ZyZWVfcmN1YCB3aWxsIGNhbGwgYGNhbGxfcmN1YCB3aGljaCBnaXZlcyBhbnkgcnVubmluZyBwcm9jZXNzZXMgdGltZSB0byBmaW5pc2ggd2l0aCB0aGUgcWRpc2MuXG5cblRoZSBwYXRjaCBhbHNvIGludHJvZHVjZXMgYHFkaXNjX2ZyZWVfcmN1YCB3aXRoaW4gYHNjaF9nZW5lcmljLmNgLCB3aGljaCwgYXMgSSBzdXNwZWN0ZWQsIGVuY2Fwc3VsYXRlcyB0aGUgYGNhbGxfcmN1YCBtZWNoYW5pc20sIGNhbGxpbmcgYHFkaXNjX2ZyZWVfY2JgLiBJdCdzIGEgY2xlYW4gc2VwYXJhdGlvbiBvZiBjb25jZXJucywgYW5kIGl0J3MgbmljZSB0byBzZWUgdGhpcyBraW5kIG9mIG1ldGljdWxvdXNuZXNzLiBJbnRlcmVzdGluZ2x5LCB0aGV5IGFsc28gY2hhbmdlZCBgX19xZGlzY19kZXN0cm95YCB0byB1c2UgYHFkaXNjX2ZyZWVfcmN1KHFkaXNjKWAgYXMgd2VsbC5cblxuVGhlIGBxZGlzY19jcmVhdGVgIGZ1bmN0aW9uIGluIGBuZXQvc2NoZWQvc2NoX2FwaS5jYCBpcyB0aGUgcmVhbCB0YXJnZXQgaGVyZS4gVGhleSBhcmUgbm93IHVzaW5nIHRoZSBgZXJyX291dDM6YCBlcnJvciBwYXRoIHRvIGNhbGwgYHFkaXNjX2ZyZWVfcmN1KHNjaClgIGluc3RlYWQgb2YgdGhlIG9sZCBgcWRpc2NfZnJlZShzY2gpYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgZml4LCBhbmQgaXQncyBtYWtpbmcgdGhlIGNvZGUgbXVjaCBtb3JlIHJvYnVzdCBieSBhdm9pZGluZyBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIHdoZW4gdGhlIHFkaXNjIGlzIGJlaW5nIGZyZWVkLlxuXG5MZXQncyBzZWXigKYgYHFkaXNjX2NyZWF0ZWAgaXMgcmVhY2hhYmxlLCByaWdodD8gT2YgY291cnNlLCBpdCdzIGNhbGxlZCBkdXJpbmcgcWRpc2MgY3JlYXRpb24sIHdoaWNoLCBpbiB0aGUgcmVhbCB3b3JsZCBtZWFucyB0aHJvdWdoIGBuZXRsaW5rIHRjIHFkaXNjIGFkZGAuIFRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgdGhhdCBtZXJpdHMgc29tZSBzZXJpb3VzIGZ1enppbmcuIEEgcmFjZSBjb25kaXRpb24gYXJvdW5kIHFkaXNjIGNyZWF0aW9uL2Rlc3RydWN0aW9uIGlzIHByaW1lIGZ1enppbmcgbWF0ZXJpYWwhXG5cbkkgc2hvdWxkIGFsc28gY2hlY2sgdGhlIGNvbmZpZyBvcHRpb25zLiBUaGlzIHNob3VsZCBiZSBwYXJ0IG9mIGBDT05GSUdfTkVUX1NDSEVEYCwgb3Igc29tZXRoaW5nIHNpbWlsYXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MDgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMTozOTozMS45MjA1ODQ5OTVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4Mzk0MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib2JqLS4qc2NoX2FwaVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9NYWtlZmlsZT04PW9iai0kKENPTkZJR19JTkVUKVxcdFxcdCs9IHNjaF9mcmFnLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGU6OTpvYmotJChDT05GSUdfTkVUX1NDSEVEKVxcdFxcdCs9IHNjaF9hcGkubyBzY2hfYmxhY2tob2xlLm9cXG5uZXQvc2NoZWQvTWFrZWZpbGUtMTAtb2JqLSQoQ09ORklHX05FVF9DTFMpXFx0XFx0Kz0gY2xzX2FwaS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjM5OjMxLjk2NzQzMDg4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg5MjY2MTExMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiBjb25zY2lvdXNuZXNzOlxuXG4qKk5ldHdvcmsgU2NoZWR1bGVyIENvbmZpZ3VyYXRpb24gYW5kIEZ1bmN0aW9uIEFuYWx5c2lzKipcblxuUmlnaHQsIEknbSBkaXZpbmcgaW50byB0aGlzIG5ldHdvcmsgc2NoZWR1bGVyIHN0dWZmLiBGaXJzdCB0aGluZydzIGZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYENPTkZJR19ORVRfU0NIRURgIGlzIGVuYWJsZWQsIG9idmlvdXNseS4gVGhhdCdzIHRoZSBiYXNlbGluZS4gTm93LCBJJ20gdGhpbmtpbmcgYWJvdXQgYHFkaXNjX2NyZWF0ZWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBpdCdzIGJlaW5nIGNhbGxlZCwgd2hpY2ggbWVhbnMgSSBzaG91bGQgY2hlY2sgd2hldGhlciBpdCdzIHN0YXRpYyBvciBub3QuIFllcCwgaXQgKmlzKiBzdGF0aWMuIE9LLCBzbyBgcWRpc2NfY3JlYXRlYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMgd2l0aGluIGBuZXQvc2NoZWQvc2NoX2FwaS5jYC4gVGhhdCBtZWFucyBpdHMgc2NvcGUgaXMgbGltaXRlZCB0byB0aGF0IGZpbGUsIHdoaWNoIG1ha2VzIHRyYWNpbmcgaXRzIHVzYWdlIGEgYml0IG1vcmUgZm9jdXNlZCwgYnV0IGFsc28gbWVhbnMgSSBuZWVkIHRvIHBpbnBvaW50IGl0cyBjYWxsZXJzIHdpdGhpbiB0aGF0IHNhbWUgZmlsZSwgYG5ldC9zY2hlZC9zY2hfYXBpLmNgLCB0byByZWFsbHkgdW5kZXJzdGFuZCBob3cgaXQncyB3b3JraW5nLiBUaW1lIHRvIGV4YW1pbmUgdGhhdCBmaWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTI1LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6Mzk6MzUuODYwMDk0MTIxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2NjkxODMzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxZGlzY19jcmVhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL3NjaF9hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvc2NoX2FwaS5jPTEyMjI9c3RhdGljIGludCBxZGlzY19ibG9ja19pbmRleGVzX3NldChzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IG5sYXR0ciAqKnRjYSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTI2MS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjEyNjI6c3RhdGljIHN0cnVjdCBRZGlzYyAqcWRpc2NfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xMjYzLVxcdFxcdFxcdFxcdCAgc3RydWN0IG5ldGRldl9xdWV1ZSAqZGV2X3F1ZXVlLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xMzYxLVxcdHFkaXNjX2hhc2hfYWRkKHNjaCwgZmFsc2UpO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTM2MjpcXHR0cmFjZV9xZGlzY19jcmVhdGUob3BzLCBkZXYsIHBhcmVudCk7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xMzYzLVxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xMzY3LVxcdC8qIEV2ZW4gaWYgb3BzLVxcdTAwM2Vpbml0KCkgZmFpbGVkLCB3ZSBjYWxsIG9wcy1cXHUwMDNlZGVzdHJveSgpXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxMzY4OlxcdCAqIGxpa2UgcWRpc2NfY3JlYXRlX2RmbHQoKS5cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTEzNjktXFx0ICovXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTE1OTk9c3RhdGljIGludCBfX3RjX21vZGlmeV9xZGlzYyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm4sXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE3NTMtXFx0XFx0aWYgKGRldl9pbmdyZXNzX3F1ZXVlKGRldikpIHtcXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE3NTQ6XFx0XFx0XFx0cSA9IHFkaXNjX2NyZWF0ZShkZXYsIGRldl9pbmdyZXNzX3F1ZXVlKGRldiksXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNzU1LVxcdFxcdFxcdFxcdFxcdCB0Y20tXFx1MDAzZXRjbV9wYXJlbnQsIHRjbS1cXHUwMDNldGNtX3BhcmVudCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTc3MC1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE3NzE6XFx0XFx0cSA9IHFkaXNjX2NyZWF0ZShkZXYsIGRldl9xdWV1ZSxcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE3NzItXFx0XFx0XFx0XFx0IHRjbS1cXHUwMDNldGNtX3BhcmVudCwgdGNtLVxcdTAwM2V0Y21faGFuZGxlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMTozOTozNi4yMjcwMTc0ODNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDk2NTM1NTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGl2aW5nIGludG8gdGhlIFFkaXNjIE1vZGlmaWNhdGlvbiBQYXRoKipcblxuQWxyaWdodCwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCBjYWxsIGNoYWluIGludm9sdmVkIGluIG1vZGlmeWluZyBhIHF1ZXVpbmcgZGlzY2lwbGluZSDigJMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBiZXR0ZXIuIE15IHN0YXJ0aW5nIHBvaW50IGlzIGBfX3RjX21vZGlmeV9xZGlzY2AsIGFuZCB0aGF0IHN1Z2dlc3RzIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhpcyBpcyB0aHJvdWdoIGB0Y19tb2RpZnlfcWRpc2NgLiBUaGlzIGxpa2VseSBtZWFucyB0aGVyZSdzIGEgbGF5ZXJlZCBhcHByb2FjaCwgbWF5YmUgd2l0aCBzb21lIGludGVybmFsIGtlcm5lbCBmdW5jdGlvbnMuXG5cbk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgYHRjX21vZGlmeV9xZGlzY2AgZnVuY3Rpb24uIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBsb3dlciBsYXllcnMuIEkgYWxzbyBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBkZWZhdWx0IFFkaXNjIGlzIGNyZWF0ZWQgLSBJJ2xsIG5lZWQgdG8gbG9vayBhdCBgcWRpc2NfY3JlYXRlX2RmbHRgLiBJIGhhdmUgYSBmZWVsaW5nIEknbGwgZmluZCBzb21lIGludGVyZXN0aW5nIGxvZ2ljIHJlbGF0ZWQgdG8gZGVmYXVsdCBwYXJhbWV0ZXJzIGFuZCBzZXR1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM0OSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjM5OjM5LjcyMzU1NTc2NloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzIzMDUwNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0Y19tb2RpZnlfcWRpc2NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL3NjaF9hcGkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvc2NoX2FwaS5jPTE1OTI9c3RhdGljIGJvb2wgcmVxX2NoYW5nZShzdHJ1Y3Qgbmxtc2doZHIgKm4pXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE1OTgtXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxNTk5OnN0YXRpYyBpbnQgX190Y19tb2RpZnlfcWRpc2Moc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpuLFxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTYwMC1cXHRcXHRcXHQgICAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM9MTc4OT1zdGF0aWMgdm9pZCByZXF1ZXN0X3FkaXNjX21vZHVsZShzdHJ1Y3QgbmxhdHRyICpraW5kKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xODEyLSAqL1xcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTgxMzpzdGF0aWMgaW50IHRjX21vZGlmeV9xZGlzYyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm4sXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xODE0LVxcdFxcdFxcdCAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTgzNC1cXHRuZXRkZXZfbG9ja19vcHMoZGV2KTtcXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE4MzU6XFx0ZXJyID0gX190Y19tb2RpZnlfcWRpc2Moc2tiLCBuLCBleHRhY2ssIGRldiwgdGNhLCB0Y20pO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTgzNi1cXHRuZXRkZXZfdW5sb2NrX29wcyhkZXYpO1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYz0yNTE0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRubF9tc2dfaGFuZGxlciBwc2NoZWRfcnRubF9tc2dfaGFuZGxlcnNbXSBfX2luaXRjb25zdCA9IHtcXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjI1MTU6XFx0ey5tc2d0eXBlID0gUlRNX05FV1FESVNDLCAuZG9pdCA9IHRjX21vZGlmeV9xZGlzY30sXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNTE2LVxcdHsubXNndHlwZSA9IFJUTV9ERUxRRElTQywgLmRvaXQgPSB0Y19nZXRfcWRpc2N9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMTozOTozOS43NzA3OTEzOTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTQ0NDczNzc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqQW5hbHl6aW5nIHRoZSBgdGNfbW9kaWZ5X3FkaXNjYCBQYXRjaCoqXG5cblJpZ2h0LCBzbyBgdGNfbW9kaWZ5X3FkaXNjYCBpcyB0aGUgZ2F0ZXdheSwgdGhlIGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyBhIG5ldyBxdWV1ZWluZyBkaXNjaXBsaW5lLCBhIGBSVE1fTkVXUURJU0NgIG1lc3NhZ2UuIFRoZSBjcnV4IG9mIHRoaXMgcGF0Y2ggc2VlbXMgdG8gYmUgZm9jdXNlZCBvbiBob3cgd2UgaGFuZGxlIGVycm9ycyB3aXRoaW4gdGhlIGBxZGlzY19jcmVhdGVgIGZ1bmN0aW9uLlxuXG5UbyByZWFsbHkgZGlnIGludG8gdGhpcywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZhaWx1cmUgc2NlbmFyaW9zIHdpdGhpbiBgcWRpc2NfY3JlYXRlYC4gV2hhdCBjb25kaXRpb25zIHRyaWdnZXIgYW4gZXJyb3IgdGhlcmU/IFRoZSBwYXRjaCBpcyBjbGVhcmx5IGFkZHJlc3NpbmcgdGhpcyBlcnJvciBwYXRoLlxuXG5BbHNvLCBJIHNlZSBhIG5ldyBmdW5jdGlvbiBgcWRpc2NfZnJlZV9yY3VgIGludHJvZHVjZWQgaW4gYG5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jYC4gSW50ZXJlc3RpbmcuIEl0J3MgZWl0aGVyIGV4cG9ydGVkIG9yIGF0IGxlYXN0IG5vdCBkZWNsYXJlZCBhcyBzdGF0aWMsIHNvIGl0J3MgaW50ZW5kZWQgdG8gYmUgdXNlZCBleHRlcm5hbGx5LiBUaGF0IHJhaXNlcyBteSBleWVicm93cy4gTGV0J3MgbWFrZSBzdXJlIGl0IGlzIHdoYXQgSSB0aGluayBpdCBpcywgYSBmdW5jdGlvbiB0byBzYWZlbHkgZnJlZSBxZGlzY3MgdXNpbmcgUkNVLCBsZXQncyB0YWtlIGEgbG9vayB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTA5NSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMTozOTo0My45MTUyNjc3NjdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTI3MTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInFkaXNjX2ZyZWVfcmN1XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTEwOTk9c3RhdGljIHZvaWQgcWRpc2NfZnJlZV9jYihzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTA1LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjExMDY6dm9pZCBxZGlzY19mcmVlX3JjdShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExMDcte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTExMT1zdGF0aWMgdm9pZCBfX3FkaXNjX2Rlc3Ryb3koc3RydWN0IFFkaXNjICpxZGlzYylcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExMzQtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTEzNTpcXHRxZGlzY19mcmVlX3JjdShxZGlzYyk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEzNi19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjM5OjQzLjk2MTIwMDAzMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjM2MDg2Njc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYHFkaXNjX2ZyZWVfcmN1YCBWaXNpYmlsaXR5KipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4gU29tZXRoaW5nJ3Mgbm90IHF1aXRlIGFkZGluZyB1cC4gSSdtIGhpdHRpbmcgYSBzbmFnLCBhbmQgdGhlIGltbWVkaWF0ZSB0aG91Z2h0IGlzOiBpcyBgcWRpc2NfZnJlZV9yY3VgIGFjdHVhbGx5IGV4cG9ydGVkIHdpdGggYEVYUE9SVF9TWU1CT0xgPyBUaGF0J3MgdGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBjb25maXJtLiBJdCdzIGEgZnVuZGFtZW50YWwgYXNzdW1wdGlvbiwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBjb3JlIGtlcm5lbCBzdHJ1Y3R1cmVzIGFuZCBob3cgZGlmZmVyZW50IG1vZHVsZXMgb3Igc3Vic3lzdGVtcyBjYW4gaW50ZXJhY3Qgd2l0aCBlYWNoIG90aGVyLiBJZiBpdCdzICpub3QqIGV4cG9ydGVkLCB0aGVuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoeSBhbmQsIG1vcmUgaW1wb3J0YW50bHksICpob3cqIHRoaXMgcGllY2Ugb2YgY29kZSBpcyBzdXBwb3NlZCB0byBiZSBhY2Nlc3NpYmxlIChvciBpZiB0aGUgYWNjZXNzIGlzIGludGVuZGVkIGF0IGFsbCkuIFRpbWUgdG8gZGlnIGRlZXBlciBhbmQgc2VlIGlmIEknbSBtaXNzaW5nIHNvbWV0aGluZyBvYnZpb3VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjcxLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6Mzk6NDcuNTk3MjkwODlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NzYxNjc1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MLipxZGlzY19mcmVlX3JjdVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6Mzk6NDcuNjQ2MDY0NDM0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NTE0MTkxMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiByZWFkaW5nIGBuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY2AgYXJvdW5kIHRoZSBgcWRpc2NfZnJlZV9yY3VgIGZ1bmN0aW9uLCBzdW1tYXJpemVkIGFzIG15IG93biB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFFkaXNjIExpZmVjeWNsZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGludHJpY2FjaWVzIG9mIHRoZSBnZW5lcmljIHF1ZXVpbmcgZGlzY2lwbGluZSBmcmFtZXdvcmsgaW4gdGhlIExpbnV4IGtlcm5lbC4gTGV0J3MgemVybyBpbiBvbiBgbmV0L3NjaGVkL3NjaF9nZW5lcmljLmNgIGFuZCBzcGVjaWZpY2FsbHkgZm9jdXMgb24gdGhlIGBxZGlzY19mcmVlX3JjdWAgZnVuY3Rpb24uIEkgcmVtZW1iZXIgdGhpcyBhcmVhIGJlaW5nIGNydWNpYWwgZm9yIHByb3BlciByZXNvdXJjZSBtYW5hZ2VtZW50IGFuZCBwcmV2ZW50aW5nIG1lbW9yeSBsZWFrcyB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLiBUaGlzIGZ1bmN0aW9uLCBJIGFzc3VtZSwgaXMgd2hlcmUgdGhlIGZpbmFsIGNsZWFudXAgb2YgYSBxdWV1aW5nIGRpc2NpcGxpbmUgKHFkaXNjKSBoYXBwZW5zIGJlZm9yZSBpdCdzIGNvbXBsZXRlbHkgZGVhbGxvY2F0ZWQuXG5cbk15IGZpcnN0IHRob3VnaHQgaXMgYWx3YXlzIGFib3V0IHRoZSBSQ1UgKFJlYWQtQ29weS1VcGRhdGUpIGFzcGVjdC4gSXQgbWFrZXMgc2Vuc2UgdGhpcyBmdW5jdGlvbiBpcyBpbnZvbHZlZCBiZWNhdXNlIHFkaXNjcyBhcmUgb2Z0ZW4gYWNjZXNzZWQgY29uY3VycmVudGx5IGJ5IG11bHRpcGxlIHRocmVhZHMg4oCTIHBhY2tldCBwcm9jZXNzaW5nLCBjb25maWd1cmF0aW9uIGNoYW5nZXMsIGV0Yy4gUkNVIGFsbG93cyB1cyB0byBzYWZlbHkgZnJlZSB0aGUgcWRpc2MgZGF0YSBzdHJ1Y3R1cmUgd2l0aG91dCBkaXNydXB0aW5nIGFjdGl2ZSByZWFkZXJzLiBTbywgYHFkaXNjX2ZyZWVfcmN1YCBpcyBsaWtlbHkgdGhlIGN1bG1pbmF0aW9uIG9mIHRoZSBkZS1yZWdpc3RyYXRpb24gYW5kIGRyYWluIHByb2Nlc3MuXG5cbkknbGwgYmUgbG9va2luZyB0byBzZWU6IFdoYXQncyB0aGUgZXhhY3QgcHJvY2VkdXJlIHRoaXMgZnVuY3Rpb24gdXNlcz8gRG9lcyBpdCBwZXJmb3JtIHRoZSBmaW5hbCBkZS1hbGxvY2F0aW9uIGltbWVkaWF0ZWx5IG9yIHNjaGVkdWxlIGl0IGZvciBsYXRlciBleGVjdXRpb24sIGFmdGVyIGEgZ3JhY2UgcGVyaW9kIGFzIGRpY3RhdGVkIGJ5IFJDVT8gV2hpY2ggYXNwZWN0cyBvZiB0aGUgcWRpc2MgYXJlIGZyZWVkIGhlcmUsIGFuZCB3aGljaCB3ZXJlIHRha2VuIGNhcmUgb2YgZWFybGllcj8gV2hhdCdzIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSB1bmRlcmx5aW5nIGRldmljZSBkcml2ZXI/IEFyZSB0aGVyZSBzcGVjaWZpYyBzcGlubG9ja3Mgb3Igb3RoZXIgc3luY2hyb25pemF0aW9uIG1lY2hhbmlzbXMgYmVpbmcgdXNlZCB0byBlbnN1cmUgdGhyZWFkIHNhZmV0eSBkdXJpbmcgdGhpcyBjcml0aWNhbCBkZS1hbGxvY2F0aW9uIHBoYXNlPyBJJ2xsIGFsc28gY2hlY2sgZm9yIGFueSBzdWJ0bGUgY29ybmVyIGNhc2VzOiBXaGF0IGhhcHBlbnMgaWYgYSBwYWNrZXQgaXMgc3RpbGwgZW5xdWV1ZWQsIG9yIGlmIGEgY2hpbGQgcWRpc2MgaXMgbm90IHByb3Blcmx5IGRldGFjaGVkP1xuXG5cbiIsIklucHV0VG9rZW5zIjo1OTI2LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6Mzk6NTIuMzk3NDkzODg4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTAwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMTAwOlxcdHtcXG4xMTAxOlxcdFxcdHN0cnVjdCBRZGlzYyAqcSA9IGNvbnRhaW5lcl9vZihoZWFkLCBzdHJ1Y3QgUWRpc2MsIHJjdSk7XFxuMTEwMjpcXHRcXG4xMTAzOlxcdFxcdHFkaXNjX2ZyZWUocSk7XFxuMTEwNDpcXHR9XFxuMTEwNTpcXHRcXG4xMTA2OlxcdHZvaWQgcWRpc2NfZnJlZV9yY3Uoc3RydWN0IFFkaXNjICpxZGlzYylcXG4xMTA3OlxcdHtcXG4xMTA4OlxcdFxcdGNhbGxfcmN1KFxcdTAwMjZxZGlzYy1cXHUwMDNlcmN1LCBxZGlzY19mcmVlX2NiKTtcXG4xMTA5OlxcdH1cXG4xMTEwOlxcdFxcbjExMTE6XFx0c3RhdGljIHZvaWQgX19xZGlzY19kZXN0cm95KHN0cnVjdCBRZGlzYyAqcWRpc2MpXFxuMTExMjpcXHR7XFxuMTExMzpcXHRcXHRjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICAqb3BzID0gcWRpc2MtXFx1MDAzZW9wcztcXG4xMTE0OlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBxZGlzY19kZXYocWRpc2MpO1xcbjExMTU6XFx0XFxuMTExNjpcXHQjaWZkZWYgQ09ORklHX05FVF9TQ0hFRFxcbjExMTc6XFx0XFx0cWRpc2NfaGFzaF9kZWwocWRpc2MpO1xcbjExMTg6XFx0XFxuMTExOTpcXHRcXHRxZGlzY19wdXRfc3RhYihydG5sX2RlcmVmZXJlbmNlKHFkaXNjLVxcdTAwM2VzdGFiKSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjM5OjUyLjM5NzU5NzY1OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjY0MDI2MjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBoYXZpbmcgaXQ6XG5cbioqRGlnZ2luZyBpbnRvIEtlcm5lbCBNb2R1bGUgVmlzaWJpbGl0eSoqXG5cbkhtbSwgdGhpcyBmdW5jdGlvbiBpc24ndCBleHBsaWNpdGx5IGV4cG9ydGVkLCBidXQgaXQncyBjbGVhcmx5IGJlaW5nIGFjY2Vzc2VkIGJ5IGBuZXQvc2NoZWQvc2NoX2FwaS5jYC4gTm93LCB3aHkgaXMgdGhhdD8gQWgsIHJpZ2h0LCBiZWNhdXNlIGJvdGggb2YgdGhlc2UgZmlsZXMgYXJlIGRlZXAgd2l0aGluIHRoZSBjb3JlIGtlcm5lbCwgb3IgbWF5YmUgYHNjaF9nZW5lcmljLmNgIGlzIGluIHRoZSBgbmV0L3NjaGVkL2AgZGlyZWN0b3J5LiBCdXQgd2FpdCwgdGhhdCByaW5ncyBhIGJlbGwuLi4gaXNuJ3QgYHNjaF9nZW5lcmljLmNgIGNvbXBpbGVkIGludG8gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjayBpdHNlbGY/IE9rYXksIGxldCdzIGp1c3QgY29uZmlybSB0aGF0IGJ5IG9wZW5pbmcgdXAgdGhlIGBuZXQvc2NoZWQvTWFrZWZpbGVgIGFuZCBtYWtpbmcgc3VyZSB0aGF0IEkgYW0gdGhpbmtpbmcgY2xlYXJseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY1NywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6Mzk6NTYuMDYxNjI2NjIyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDI0MjM0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY2hfZ2VuZXJpY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL01ha2VmaWxlLTUtXFxubmV0L3NjaGVkL01ha2VmaWxlOjY6b2JqLXlcXHQ6PSBzY2hfZ2VuZXJpYy5vIHNjaF9tcS5vXFxubmV0L3NjaGVkL01ha2VmaWxlLTctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjM5OjU2LjEwNTg3MzU3N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzU3MzY5NjczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQ2hhbmdlcyBpbiB0aGUgTmV0d29yayBTY2hlZHVsZXIgQ29kZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCBhcyBJIHVuZGVyc3RhbmQgaXQsIGBzY2hfZ2VuZXJpYy5vYCBpcyAqYWx3YXlzKiBidWlsdCDigJMgdGhhdCdzIGEgZ2l2ZW4uIEFuZCBgc2NoX2FwaS5vYCBkZXBlbmRzIG9uIGBDT05GSUdfTkVUX1NDSEVEYCBiZWluZyBlbmFibGVkLCB3aGljaCBpcyBzdGFuZGFyZC4gVGhpcyBtZWFucyBgcWRpc2NfZnJlZV9yY3VgICppc24ndCogZGVjbGFyZWQgc3RhdGljLiBUaGUgY29yZSBvZiB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIGFib3V0IGVycm9yIGhhbmRsaW5nIGFuZCByZXNvdXJjZSBjbGVhbnVwIHdpdGhpbiB0aGUgcXVldWluZyBkaXNjaXBsaW5lIGZyYW1ld29yay5cblxuU3BlY2lmaWNhbGx5LCBpdCBsb29rcyBsaWtlIHRoZXkncmUgcmV3b3JraW5nIHRoZSBlcnJvciBwYXRoIGluIGBxZGlzY19jcmVhdGVgIHRvIGxldmVyYWdlIGBxZGlzY19mcmVlX3JjdWAuIE1ha2VzIHNlbnNlIOKAkyBiZXR0ZXIgdG8gaGF2ZSBhIHVuaWZpZWQgY2xlYW51cCBwYXRoLiBJdCdzIGFsc28gY2hhbmdpbmcgaG93IGBfX3FkaXNjX2Rlc3Ryb3lgIGlzIGhhbmRsZWQgdG8gdXNlIGBxZGlzY19mcmVlX3JjdWAuIEFuZCBpZiBJIHJlbWVtYmVyIGNvcnJlY3RseSwgYF9fcWRpc2NfZGVzdHJveWAgaXMgY2FsbGVkIGJ5IGBxZGlzY19kZXN0cm95YCBpdHNlbGYuIEdpdmVuIHRoZXNlIGNoYW5nZXMgdG8gdGhlIGludGVybmFsIHdvcmtpbmdzLCBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBxZGlzY19kZXN0cm95YCBpdHNlbGYgdG8gYmUgY29tcGxldGVseSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTcwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjQwOjAwLjg2MzI0NjExWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTA3OTQzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxZGlzY19kZXN0cm95XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTExMDY9dm9pZCBxZGlzY19mcmVlX3JjdShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTExMC1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTExOnN0YXRpYyB2b2lkIF9fcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExMTIte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEzMi1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTMzOlxcdHRyYWNlX3FkaXNjX2Rlc3Ryb3kocWRpc2MpO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExMzQtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTM3LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjExMzg6dm9pZCBxZGlzY19kZXN0cm95KHN0cnVjdCBRZGlzYyAqcWRpc2MpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEzOS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTQyLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjExNDM6XFx0X19xZGlzY19kZXN0cm95KHFkaXNjKTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTQ0LX1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTExNDY9dm9pZCBxZGlzY19wdXQoc3RydWN0IFFkaXNjICpxZGlzYylcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExNTQtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTE1NTpcXHRfX3FkaXNjX2Rlc3Ryb3kocWRpc2MpO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExNTYtfVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTE2ND12b2lkIHFkaXNjX3B1dF91bmxvY2tlZChzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTE2OS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTcwOlxcdF9fcWRpc2NfZGVzdHJveShxZGlzYyk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTE3MS1cXHRydG5sX3VubG9jaygpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMTo0MDowMC45MTIzMzIzNDVaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA3NDYzNDkxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEtlcm5lbCdzIFRyYWZmaWMgQ29udHJvbCBNb2R1bGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlc2UgcWRpc2MgZnVuY3Rpb25zIGFyZSBjYWxsZWQuIEl0IHNlZW1zIGBxZGlzY19kZXN0cm95YCwgYHFkaXNjX3B1dGAsIGFuZCBgcWRpc2NfcHV0X3VubG9ja2VkYCBhbGwgdWx0aW1hdGVseSBsZWFkIHRvIGBfX3FkaXNjX2Rlc3Ryb3lgLiBUaGUgcGF0Y2ggaXRzZWxmIGFwcGVhcnMgdG8gd29yayBhbmQgaXMgZGVmaW5pdGVseSBhY2Nlc3NpYmxlIHdpdGhpbiB0aGUgY29kZS5cblxuTXkgcHJpbWFyeSBpbnRlcmVzdCByaWdodCBub3cgbGllcyB3aXRoIHRoZSBzeW1ib2xzIGB0Y19tb2RpZnlfcWRpc2NgLCBgcWRpc2NfZGVzdHJveWAsIGBxZGlzY19wdXRgLCBhbmQgYHFkaXNjX3B1dF91bmxvY2tlZGAuIEFoLCByaWdodCwgYHRjX21vZGlmeV9xZGlzY2AgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBgUlRNX05FV1FESVNDYCwgd2hpY2ggaXMgY3J1Y2lhbC4gYHFkaXNjX2NyZWF0ZWAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLCBzbyBJIGNhbid0IGRpcmVjdGx5IHRhcmdldCB0aGF0LlxuXG5TaW5jZSBJIGNhbid0IGdldCB0byBgcWRpc2NfY3JlYXRlYCwgbGV0J3MgZm9jdXMgb24gYHRjX21vZGlmeV9xZGlzY2AuIExldCBtZSBqdXN0IGRvdWJsZSBjaGVjayBpZiBgdGNfbW9kaWZ5X3FkaXNjYCBpcywgaW4gZmFjdCwgc3RhdGljLi4uIFllcCwgaXQgaXMuIFxuXG5XYWl0LCBpdCdzIHN0YXRpYyBpbiBgbmV0L3NjaGVkL3NjaF9hcGkuY2AuIE5vdywgSSBuZWVkIHRvIGNoZWNrIGBuZXQvc2NoZWQvc2NoX2FwaS5jYCBmb3IgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyB0byBzZWUgd2hhdCBJIGNhbiBhY2Nlc3MgdG8gZnVydGhlciBteSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzg0NiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMTo0MDowNS45ODY5NzA5NzVaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MDQ4MDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRjX21vZGlmeV9xZGlzY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvc2NoX2FwaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY2hlZC9zY2hfYXBpLmM9MTU5Mj1zdGF0aWMgYm9vbCByZXFfY2hhbmdlKHN0cnVjdCBubG1zZ2hkciAqbilcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTU5OC1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE1OTk6c3RhdGljIGludCBfX3RjX21vZGlmeV9xZGlzYyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm4sXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNjAwLVxcdFxcdFxcdCAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYz0xNzg5PXN0YXRpYyB2b2lkIHJlcXVlc3RfcWRpc2NfbW9kdWxlKHN0cnVjdCBubGF0dHIgKmtpbmQpXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE4MTItICovXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxODEzOnN0YXRpYyBpbnQgdGNfbW9kaWZ5X3FkaXNjKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbixcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE4MTQtXFx0XFx0XFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xODM0LVxcdG5ldGRldl9sb2NrX29wcyhkZXYpO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTgzNTpcXHRlcnIgPSBfX3RjX21vZGlmeV9xZGlzYyhza2IsIG4sIGV4dGFjaywgZGV2LCB0Y2EsIHRjbSk7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xODM2LVxcdG5ldGRldl91bmxvY2tfb3BzKGRldik7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTI1MTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBydG5sX21zZ19oYW5kbGVyIHBzY2hlZF9ydG5sX21zZ19oYW5kbGVyc1tdIF9faW5pdGNvbnN0ID0ge1xcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjUxNTpcXHR7Lm1zZ3R5cGUgPSBSVE1fTkVXUURJU0MsIC5kb2l0ID0gdGNfbW9kaWZ5X3FkaXNjfSxcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI1MTYtXFx0ey5tc2d0eXBlID0gUlRNX0RFTFFESVNDLCAuZG9pdCA9IHRjX2dldF9xZGlzY30sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjQwOjA2LjAzNDAyNTk2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NDMzNDQwMTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFFkaXNjIEZ1bmN0aW9uIFZpc2liaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoZSB2aXNpYmlsaXR5IG9mIHRoZXNlIGBxZGlzY2AgZnVuY3Rpb25zIHdpdGhpbiB0aGUga2VybmVsJ3Mgc2NoZWR1bGluZyBpbmZyYXN0cnVjdHVyZS4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIHRoYXQgYHRjX21vZGlmeV9xZGlzY2AgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBJbnRlcmVzdGluZy4gSSBuZWVkIHRvIGJlIGNhcmVmdWwgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQgZm9yIGV4dGVybmFsIHVzZSwgd2hpY2ggaXMgY3JpdGljYWwgaW4gdGhpcyB0eXBlIG9mIG5ldHdvcmsgZGVidWdnaW5nLlxuXG5Ob3csIGxldCdzIGxvb2sgYXQgYHFkaXNjX2Rlc3Ryb3lgIOKAkyB0aGF0J3Mgbm9uLXN0YXRpYy4gU2FtZSBnb2VzIGZvciBgcWRpc2NfcHV0YCwgYW5kIGBxZGlzY19wdXRfdW5sb2NrZWRgLiBBbmQgaG9sZCBvbiwgaGVyZSdzIGBxZGlzY19mcmVlX3JjdWAgLS0gYWxzbyBub24tc3RhdGljLiBJIG5lZWQgdG8ga2VlcCB0aGVzZSBkaXN0aW5jdGlvbnMgaW4gbWluZC4gR2l2ZW4gdGhhdCwgbGV0J3MgcXVpY2tseSBzZWUgaWYgdGhlcmUgYXJlIG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGluIGBuZXQvc2NoZWQvc2NoX2FwaS5jYCB0aGF0IGNhbGwgYHFkaXNjX2NyZWF0ZWAuIE5vcGUsIGl0IGxvb2tzIGxpa2UgYHFkaXNjX2NyZWF0ZWAgaXMgZXhjbHVzaXZlbHkgY2FsbGVkIGJ5IGBfX3RjX21vZGlmeV9xZGlzY2AsIGFuZCB0aGF0J3Mgb25seSBjYWxsZWQgYnkgYHRjX21vZGlmeV9xZGlzY2AuXG5cbkFoLCBidXQgKndhaXQqLCBgdGNfbW9kaWZ5X3FkaXNjYCBpcyByZWdpc3RlcmVkIGFzIGEgbmV0bGluayBoYW5kbGVyLiBUaGlzIHNpbXBsaWZpZXMgdGhpbmdzIGEgYml0LiBTbyByZWFsbHksIHRoZSBtYWluIGZvY3VzIGJlY29tZXMgdGhlIHZpc2liaWxpdHkgYW5kIGludGVyYWN0aW9uIG9mIHRoZSBvdGhlciBmdW5jdGlvbnMgLSBgcWRpc2NfZGVzdHJveWAsIGBxZGlzY19wdXRgLCBgcWRpc2NfcHV0X3VubG9ja2VkYCwgYW5kIGBxZGlzY19mcmVlX3JjdWAuXG5cbkFuZCBvbmUgbW9yZSB0aGluZywgaXQgbG9va3MgbGlrZSBgcWRpc2NfZnJlZV9yY3VgIGlzIGEgbW9yZSByZWNlbnQgYWRkaXRpb24sIHNvIGl0IHdhcnJhbnRzIGEgY2xvc2VyIGxvb2suIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZGVmaW5pdGlvbiBpbiBgbmV0L3NjaGVkL3NjaF9nZW5lcmljLmNgIHRvIHNlZSBob3cgaXQncyBhY3R1YWxseSB1c2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODM1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjQwOjExLjk3NzM3MjI5OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAwNTg0OTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicWRpc2NfZnJlZV9yY3VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL3NjaF9nZW5lcmljLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTA5OT1zdGF0aWMgdm9pZCBxZGlzY19mcmVlX2NiKHN0cnVjdCByY3VfaGVhZCAqaGVhZClcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExMDUtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTEwNjp2b2lkIHFkaXNjX2ZyZWVfcmN1KHN0cnVjdCBRZGlzYyAqcWRpc2MpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEwNy17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xMTExPXN0YXRpYyB2b2lkIF9fcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEzNC1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTM1OlxcdHFkaXNjX2ZyZWVfcmN1KHFkaXNjKTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTM2LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6NDA6MTIuMDI3NDM2MTM0WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNzA0MzgwOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6XG5cbioqSW50ZXJuYWwgUmV2aWV3IG9mIEZ1bmN0aW9uIFZpc2liaWxpdHkqKlxuXG5BbHJpZ2h0LCBzbyBgcWRpc2NfZnJlZV9yY3VgIGlzbid0IHN0YXRpYywgd2hpY2ggaXMgZ29vZCB0byBrbm93LiBOb3csIGEgZm9sbG93LXVwIGlzIG5lY2Vzc2FyeS4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGBxZGlzY19jcmVhdGVfZGZsdGAgaGFzIGJlZW4gZGVjbGFyZWQgc3RhdGljLiBUaGUgaW1wbGljYXRpb25zIG9mIHRoZXNlIGZ1bmN0aW9ucycgdmlzaWJpbGl0eSwgYW5kIHdoZXRoZXIgb3Igbm90IHRoZXJlIGFyZSBleHRlcm5hbCBkZXBlbmRlbmNpZXMsIGFyZSBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIHF1ZXVpbmcgZGlzY2lwbGluZSBvYmplY3RzIGFyZSBiZWluZyBtYW5hZ2VkIGFuZCBhY2Nlc3NlZCB0aHJvdWdob3V0IHRoZSBzeXN0ZW0uIEkgaGF2ZSB0byBhc3Nlc3MgaWYgdGhlcmUgYXJlIGFueSBwb3RlbnRpYWwgZGVzaWduIGNvbnN0cmFpbnRzIG9yIGNvbmZsaWN0cy4gS25vd2luZyB0aGUgc2NvcGUgb2YgdGhlc2UgZnVuY3Rpb25zIHdpbGwgaGVscCBtZSBncmFzcCB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIGhvdyB0aGVzZSBjcnVjaWFsIGFzcGVjdHMgb2YgcGFja2V0IHNjaGVkdWxpbmcgYXJlIGltcGxlbWVudGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5Njg3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6NDA6MTUuMzk3ODc4MDI4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODM1NzQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxZGlzY19jcmVhdGVfZGZsdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz05ODI9c3RydWN0IFFkaXNjICpxZGlzY19hbGxvYyhzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICpkZXZfcXVldWUsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDQwLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEwNDE6c3RydWN0IFFkaXNjICpxZGlzY19jcmVhdGVfZGZsdChzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICpkZXZfcXVldWUsXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTA0Mi1cXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICpvcHMsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDY3LX1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMDY4OkVYUE9SVF9TWU1CT0wocWRpc2NfY3JlYXRlX2RmbHQpO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEwNjktXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xMjEyPXN0YXRpYyB2b2lkIGF0dGFjaF9vbmVfZGVmYXVsdF9xZGlzYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTIyMy1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMjI0OlxcdHFkaXNjID0gcWRpc2NfY3JlYXRlX2RmbHQoZGV2X3F1ZXVlLCBvcHMsIFRDX0hfUk9PVCwgTlVMTCk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTIyNS1cXHRpZiAoIXFkaXNjKVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTIzMz1zdGF0aWMgdm9pZCBhdHRhY2hfZGVmYXVsdF9xZGlzY3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEyNDYtXFx0fSBlbHNlIHtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMjQ3OlxcdFxcdHFkaXNjID0gcWRpc2NfY3JlYXRlX2RmbHQodHhxLCBcXHUwMDI2bXFfcWRpc2Nfb3BzLCBUQ19IX1JPT1QsIE5VTEwpO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEyNDgtXFx0XFx0aWYgKHFkaXNjKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjQwOjE1LjQ0NjI0MjMzNFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzQ2MzkyMzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYHFkaXNjX2NyZWF0ZV9kZmx0YCBFeHBvcnQqKlxuXG5Pa2F5LCBzbyBgcWRpc2NfY3JlYXRlX2RmbHRgIGlzIGV4cG9ydGVkLCB0aGF0IG11Y2ggaXMgY2xlYXIuIEJ1dCBoYW5nIG9uLCB0aGlzIHBhdGNoIGlzIGFjdHVhbGx5IGNoYW5naW5nIGBxZGlzY19jcmVhdGVgIGluIGBuZXQvc2NoZWQvc2NoX2FwaS5jYCwgbm90IHRoZSBleHBvcnRlZCBmdW5jdGlvbiBkaXJlY3RseS4gVGhhdCdzIGEgYml0IG9kZC4gQWgsIHJpZ2h0LCBgcWRpc2NfY3JlYXRlYCBpcyBkZWNsYXJlZCAqc3RhdGljKiB3aXRoaW4gYG5ldC9zY2hlZC9zY2hfYXBpLmNgLiBIbW0sIHRoYXQgbWVhbnMgY2hhbmdlcyB0aGVyZSB3b24ndCBkaXJlY3RseSBhZmZlY3QgYW55dGhpbmcgb3V0c2lkZSB0aGUgbW9kdWxlLiBUaGlzIHJlcXVpcmVzIGZ1cnRoZXIgc2NydXRpbnkuXG5cblRoZSBuZXh0IHN0ZXAgaXMgdG8gc2VlIGlmIGFueSBvdGhlciBub24tc3RhdGljIG9yIEVYUE9SVF9TWU1CT0wgZnVuY3Rpb25zIHdpdGhpbiBgbmV0L3NjaGVkL3NjaF9hcGkuY2AgYXJlIGFmZmVjdGVkLiBUaGF0IHNlY3Rpb24gb2YgY29kZSBpcyB0aGUgbW9zdCBsaWtlbHkgbG9jYXRpb24gZm9yIHRoZSByZWxldmFudCBjaGFuZ2VzLCBnaXZlbiB0aGUgaW5pdGlhbCBkZXNjcmlwdGlvbi4gTGV0IG1lIGV4YW1pbmUgYG5ldC9zY2hlZC9zY2hfYXBpLmNgIGFuZCBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzYwLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjQwOjIwLjE5MjYzNzgyNVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg4MjAwNTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXlthLXpBLVpfXS4qXFxcXCguKlxcXFwpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY2hlZC9zY2hfYXBpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL3NjaF9hcGkuYy0xMTgtLyogUHJvdGVjdHMgbGlzdCBvZiByZWdpc3RlcmVkIFRDIG1vZHVsZXMuIEl0IGlzIHB1cmUgU01QIGxvY2suICovXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxMTk6c3RhdGljIERFRklORV9SV0xPQ0socWRpc2NfbW9kX2xvY2spO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTIwLVxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYz0xMjk9c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgKnFkaXNjX2Jhc2U7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTEzMi1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjEzMzppbnQgcmVnaXN0ZXJfcWRpc2Moc3RydWN0IFFkaXNjX29wcyAqcW9wcylcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTEzNC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE3NC19XFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxNzU6RVhQT1JUX1NZTUJPTChyZWdpc3Rlcl9xZGlzYyk7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNzYtXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxNzc6dm9pZCB1bnJlZ2lzdGVyX3FkaXNjKHN0cnVjdCBRZGlzY19vcHMgKnFvcHMpXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNzgte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xOTQtfVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTk1OkVYUE9SVF9TWU1CT0wodW5yZWdpc3Rlcl9xZGlzYyk7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xOTYtXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xOTctLyogR2V0IGRlZmF1bHQgcWRpc2MgaWYgbm90IG90aGVyd2lzZSBzcGVjaWZpZWQgKi9cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE5ODp2b2lkIHFkaXNjX2dldF9kZWZhdWx0KGNoYXIgKm5hbWUsIHNpemVfdCBsZW4pXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xOTkte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yMDQtXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoyMDU6c3RhdGljIHN0cnVjdCBRZGlzY19vcHMgKnFkaXNjX2xvb2t1cF9kZWZhdWx0KGNvbnN0IGNoYXIgKm5hbWUpXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yMDYte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yMjAtLyogU2V0IG5ldyBkZWZhdWx0IHFkaXNjIHRvIHVzZSAqL1xcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjIxOmludCBxZGlzY19zZXRfZGVmYXVsdChjb25zdCBjaGFyICpuYW1lKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjIyLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjUwLS8qIFNldCBkZWZhdWx0IHZhbHVlIGZyb20ga2VybmVsIGNvbmZpZyAqL1xcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjUxOnN0YXRpYyBpbnQgX19pbml0IHNjaF9kZWZhdWx0X3FkaXNjKHZvaWQpXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNTIte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNTQtfVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjU1OmxhdGVfaW5pdGNhbGwoc2NoX2RlZmF1bHRfcWRpc2MpO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjU2LSNlbmRpZlxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNjItXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoyNjM6c3RhdGljIHN0cnVjdCBRZGlzYyAqcWRpc2NfbWF0Y2hfZnJvbV9yb290KHN0cnVjdCBRZGlzYyAqcm9vdCwgdTMyIGhhbmRsZSlcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI2NC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI4MS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjI4Mjp2b2lkIHFkaXNjX2hhc2hfYWRkKHN0cnVjdCBRZGlzYyAqcSwgYm9vbCBpbnZpc2libGUpXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yODMte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yOTAtfVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjkxOkVYUE9SVF9TWU1CT0wocWRpc2NfaGFzaF9hZGQpO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjkyLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjkzOnZvaWQgcWRpc2NfaGFzaF9kZWwoc3RydWN0IFFkaXNjICpxKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjk0LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjk5LX1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjMwMDpFWFBPUlRfU1lNQk9MKHFkaXNjX2hhc2hfZGVsKTtcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTMwMS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjMwMjpzdHJ1Y3QgUWRpc2MgKnFkaXNjX2xvb2t1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgaGFuZGxlKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMzAzLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMzE5LVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MzIwOnN0cnVjdCBRZGlzYyAqcWRpc2NfbG9va3VwX3JjdShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MzIgaGFuZGxlKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMzIxLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM9MzM5PXN0YXRpYyBzdHJ1Y3QgUWRpc2MgKnFkaXNjX2xlYWYoc3RydWN0IFFkaXNjICpwLCB1MzIgY2xhc3NpZCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMzU5LVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MzYwOnN0YXRpYyBzdHJ1Y3QgUWRpc2Nfb3BzICpxZGlzY19sb29rdXBfb3BzKHN0cnVjdCBubGF0dHIgKmtpbmQpXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0zNjEte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0zOTQtICovXFxubmV0L3NjaGVkL3NjaF9hcGkuYzozOTU6c3RhdGljIF9fdTggX19kZXRlY3RfbGlua2xheWVyKHN0cnVjdCB0Y19yYXRlc3BlYyAqciwgX191MzIgKnJ0YWIpXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0zOTYte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYz00MTc9c3RhdGljIHN0cnVjdCBxZGlzY19yYXRlX3RhYmxlICpxZGlzY19ydGFiX2xpc3Q7XFxubmV0L3NjaGVkL3NjaF9hcGkuYzo0MTg6c3RhdGljIERFRklORV9TUElOTE9DSyhxZGlzY19ydGFiX2xvY2spO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNDE5LVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM9NDIwPXN0cnVjdCBxZGlzY19yYXRlX3RhYmxlICpxZGlzY19nZXRfcnRhYihzdHJ1Y3QgdGNfcmF0ZXNwZWMgKnIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTQ2MC19XFxubmV0L3NjaGVkL3NjaF9hcGkuYzo0NjE6RVhQT1JUX1NZTUJPTChxZGlzY19nZXRfcnRhYik7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy00NjItXFxubmV0L3NjaGVkL3NjaF9hcGkuYzo0NjM6dm9pZCBxZGlzY19wdXRfcnRhYihzdHJ1Y3QgcWRpc2NfcmF0ZV90YWJsZSAqdGFiKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNDY0LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNDg2LX1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjQ4NzpFWFBPUlRfU1lNQk9MKHFkaXNjX3B1dF9ydGFiKTtcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTQ4OC1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjQ4OTpzdGF0aWMgTElTVF9IRUFEKHFkaXNjX3N0YWJfbGlzdCk7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy00OTAtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTQ5Nj1zdGF0aWMgc3RydWN0IHFkaXNjX3NpemVfdGFibGUgKnFkaXNjX2dldF9zdGFiKHN0cnVjdCBubGF0dHIgKm9wdCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNTYwLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6NTYxOnZvaWQgcWRpc2NfcHV0X3N0YWIoc3RydWN0IHFkaXNjX3NpemVfdGFibGUgKnRhYilcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTU2Mi17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTU3MC19XFxubmV0L3NjaGVkL3NjaF9hcGkuYzo1NzE6RVhQT1JUX1NZTUJPTChxZGlzY19wdXRfc3RhYik7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy01NzItXFxubmV0L3NjaGVkL3NjaF9hcGkuYzo1NzM6c3RhdGljIGludCBxZGlzY19kdW1wX3N0YWIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHFkaXNjX3NpemVfdGFibGUgKnN0YWIpXFxubmV0L3NjaGVkL3NjaF9hcGkuYy01NzQte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYz01OTA9dm9pZCBfX3FkaXNjX2NhbGN1bGF0ZV9wa3RfbGVuKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTYxNy1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjYxODpzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgcWRpc2Nfd2F0Y2hkb2coc3RydWN0IGhydGltZXIgKnRpbWVyKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNjE5LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM9NjMwPXZvaWQgcWRpc2Nfd2F0Y2hkb2dfaW5pdF9jbG9ja2lkKHN0cnVjdCBxZGlzY193YXRjaGRvZyAqd2QsIHN0cnVjdCBRZGlzYyAqcWRpc2MsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTYzNS19XFxubmV0L3NjaGVkL3NjaF9hcGkuYzo2MzY6RVhQT1JUX1NZTUJPTChxZGlzY193YXRjaGRvZ19pbml0X2Nsb2NraWQpO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNjM3LVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6NjM4OnZvaWQgcWRpc2Nfd2F0Y2hkb2dfaW5pdChzdHJ1Y3QgcWRpc2Nfd2F0Y2hkb2cgKndkLCBzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNjM5LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNjQxLX1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjY0MjpFWFBPUlRfU1lNQk9MKHFkaXNjX3dhdGNoZG9nX2luaXQpO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNjQzLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM9NjQ0PXZvaWQgcWRpc2Nfd2F0Y2hkb2dfc2NoZWR1bGVfcmFuZ2VfbnMoc3RydWN0IHFkaXNjX3dhdGNoZG9nICp3ZCwgdTY0IGV4cGlyZXMsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTY3MS19XFxubmV0L3NjaGVkL3NjaF9hcGkuYzo2NzI6RVhQT1JUX1NZTUJPTChxZGlzY193YXRjaGRvZ19zY2hlZHVsZV9yYW5nZV9ucyk7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy02NzMtXFxubmV0L3NjaGVkL3NjaF9hcGkuYzo2NzQ6dm9pZCBxZGlzY193YXRjaGRvZ19jYW5jZWwoc3RydWN0IHFkaXNjX3dhdGNoZG9nICp3ZClcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTY3NS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTY3Ny19XFxubmV0L3NjaGVkL3NjaF9hcGkuYzo2Nzg6RVhQT1JUX1NZTUJPTChxZGlzY193YXRjaGRvZ19jYW5jZWwpO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNjc5LVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6NjgwOnN0YXRpYyBzdHJ1Y3QgaGxpc3RfaGVhZCAqcWRpc2NfY2xhc3NfaGFzaF9hbGxvYyh1bnNpZ25lZCBpbnQgbilcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTY4MS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTY5My1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjY5NDp2b2lkIHFkaXNjX2NsYXNzX2hhc2hfZ3JvdyhzdHJ1Y3QgUWRpc2MgKnNjaCwgc3RydWN0IFFkaXNjX2NsYXNzX2hhc2ggKmNsaGFzaClcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTY5NS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTcyNy19XFxubmV0L3NjaGVkL3NjaF9hcGkuYzo3Mjg6RVhQT1JUX1NZTUJPTChxZGlzY19jbGFzc19oYXNoX2dyb3cpO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNzI5LVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6NzMwOmludCBxZGlzY19jbGFzc19oYXNoX2luaXQoc3RydWN0IFFkaXNjX2NsYXNzX2hhc2ggKmNsaGFzaClcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTczMS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTc0MS19XFxubmV0L3NjaGVkL3NjaF9hcGkuYzo3NDI6RVhQT1JUX1NZTUJPTChxZGlzY19jbGFzc19oYXNoX2luaXQpO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNzQzLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6NzQ0OnZvaWQgcWRpc2NfY2xhc3NfaGFzaF9kZXN0cm95KHN0cnVjdCBRZGlzY19jbGFzc19oYXNoICpjbGhhc2gpXFxubmV0L3NjaGVkL3NjaF9hcGkuYy03NDUte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy03NDctfVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6NzQ4OkVYUE9SVF9TWU1CT0wocWRpc2NfY2xhc3NfaGFzaF9kZXN0cm95KTtcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTc0OS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTc1MD12b2lkIHFkaXNjX2NsYXNzX2hhc2hfaW5zZXJ0KHN0cnVjdCBRZGlzY19jbGFzc19oYXNoICpjbGhhc2gsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTc1OS19XFxubmV0L3NjaGVkL3NjaF9hcGkuYzo3NjA6RVhQT1JUX1NZTUJPTChxZGlzY19jbGFzc19oYXNoX2luc2VydCk7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy03NjEtXFxubmV0L3NjaGVkL3NjaF9hcGkuYz03NjI9dm9pZCBxZGlzY19jbGFzc19oYXNoX3JlbW92ZShzdHJ1Y3QgUWRpc2NfY2xhc3NfaGFzaCAqY2xoYXNoLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy03NjctfVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6NzY4OkVYUE9SVF9TWU1CT0wocWRpc2NfY2xhc3NfaGFzaF9yZW1vdmUpO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNzY5LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy03NzItICovXFxubmV0L3NjaGVkL3NjaF9hcGkuYzo3NzM6c3RhdGljIHUzMiBxZGlzY19hbGxvY19oYW5kbGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTc3NC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTc4OS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjc5MDp2b2lkIHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2coc3RydWN0IFFkaXNjICpzY2gsIGludCBuLCBpbnQgbGVuKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtNzkxLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtODI3LX1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjgyODpFWFBPUlRfU1lNQk9MKHFkaXNjX3RyZWVfcmVkdWNlX2JhY2tsb2cpO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtODI5LVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM9ODMwPWludCBxZGlzY19vZmZsb2FkX2R1bXBfaGVscGVyKHN0cnVjdCBRZGlzYyAqc2NoLCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtODQ4LX1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjg0OTpFWFBPUlRfU1lNQk9MKHFkaXNjX29mZmxvYWRfZHVtcF9oZWxwZXIpO1xcbm5ldC9zY2hlZC9zY2hfYXBpLmMtODUwLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM9ODUxPXZvaWQgcWRpc2Nfb2ZmbG9hZF9ncmFmdF9oZWxwZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IFFkaXNjICpzY2gsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTg3Ny19XFxubmV0L3NjaGVkL3NjaF9hcGkuYzo4Nzg6RVhQT1JUX1NZTUJPTChxZGlzY19vZmZsb2FkX2dyYWZ0X2hlbHBlcik7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy04NzktXFxubmV0L3NjaGVkL3NjaF9hcGkuYz04ODA9dm9pZCBxZGlzY19vZmZsb2FkX3F1ZXJ5X2NhcHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtODk0LX1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjg5NTpFWFBPUlRfU1lNQk9MKHFkaXNjX29mZmxvYWRfcXVlcnlfY2Fwcyk7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy04OTYtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTEwNzE9c3RhdGljIHZvaWQgbm90aWZ5X2FuZF9kZXN0cm95KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTA4Mi1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjEwODM6c3RhdGljIHZvaWQgcWRpc2NfY2xlYXJfbm9sb2NrKHN0cnVjdCBRZGlzYyAqc2NoKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTA4NC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTE0MzY9c3RhdGljIGludCBjaGVja19sb29wX2ZuKHN0cnVjdCBRZGlzYyAqcSwgdW5zaWduZWQgbG9uZyBjbCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTQzOC1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjE0Mzk6c3RhdGljIGludCBjaGVja19sb29wKHN0cnVjdCBRZGlzYyAqcSwgc3RydWN0IFFkaXNjICpwLCBpbnQgZGVwdGgpXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNDQwLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM9MTQ1ND1zdGF0aWMgaW50XFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxNDU1OmNoZWNrX2xvb3BfZm4oc3RydWN0IFFkaXNjICpxLCB1bnNpZ25lZCBsb25nIGNsLCBzdHJ1Y3QgcWRpc2Nfd2Fsa2VyICp3KVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTQ1Ni17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTE1NTU9c3RhdGljIGludCB0Y19nZXRfcWRpc2Moc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpuLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNTc5LVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTU4MDpzdGF0aWMgYm9vbCByZXFfY3JlYXRlX29yX3JlcGxhY2Uoc3RydWN0IG5sbXNnaGRyICpuKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTU4MS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE1ODUtXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoxNTg2OnN0YXRpYyBib29sIHJlcV9jcmVhdGVfZXhjbHVzaXZlKHN0cnVjdCBubG1zZ2hkciAqbilcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE1ODcte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNTkxLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTU5MjpzdGF0aWMgYm9vbCByZXFfY2hhbmdlKHN0cnVjdCBubG1zZ2hkciAqbilcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTE1OTMte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYz0xNTk5PXN0YXRpYyBpbnQgX190Y19tb2RpZnlfcWRpc2Moc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpuLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xNzg4LVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTc4OTpzdGF0aWMgdm9pZCByZXF1ZXN0X3FkaXNjX21vZHVsZShzdHJ1Y3QgbmxhdHRyICpraW5kKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTc5MC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTE4NDE9c3RhdGljIGludCB0Y19kdW1wX3FkaXNjX3Jvb3Qoc3RydWN0IFFkaXNjICpyb290LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0xODk4LVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MTg5OTpzdGF0aWMgaW50IHRjX2R1bXBfcWRpc2Moc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMTkwMC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jPTIxMDU9c3RydWN0IHRjZl9iaW5kX2FyZ3Mge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yMTExLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjExMjpzdGF0aWMgaW50IHRjZl9ub2RlX2JpbmQoc3RydWN0IHRjZl9wcm90byAqdHAsIHZvaWQgKm4sIHN0cnVjdCB0Y2Zfd2Fsa2VyICphcmcpXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yMTEzLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM9MjQxOT1zdGF0aWMgaW50IF9fdGNfZHVtcF90Y2xhc3Moc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNDQzLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjQ0NDpzdGF0aWMgaW50IHRjX2R1bXBfdGNsYXNzKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI0NDUte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNDY3LSNpZmRlZiBDT05GSUdfUFJPQ19GU1xcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjQ2ODpzdGF0aWMgaW50IHBzY2hlZF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjQ2OS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI0NzctXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoyNDc4OnN0YXRpYyBpbnQgX19uZXRfaW5pdCBwc2NoZWRfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjQ3OS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI0ODgtXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoyNDg5OnN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgcHNjaGVkX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI0OTAte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNDkzLSNlbHNlXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoyNDk0OnN0YXRpYyBpbnQgX19uZXRfaW5pdCBwc2NoZWRfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjQ5NS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI0OTgtXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoyNDk5OnN0YXRpYyB2b2lkIF9fbmV0X2V4aXQgcHNjaGVkX25ldF9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI1MDAte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYz0yNTA0PXN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgcHNjaGVkX25ldF9vcHMgPSB7XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI1MDktI2lmIElTX0VOQUJMRUQoQ09ORklHX01JVElHQVRJT05fUkVUUE9MSU5FKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmM6MjUxMDpERUZJTkVfU1RBVElDX0tFWV9GQUxTRSh0Y19za2lwX3dyYXBwZXJfYWN0KTtcXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjI1MTE6REVGSU5FX1NUQVRJQ19LRVlfRkFMU0UodGNfc2tpcF93cmFwcGVyX2Nscyk7XFxubmV0L3NjaGVkL3NjaF9hcGkuYy0yNTEyLSNlbmRpZlxcbi0tXFxubmV0L3NjaGVkL3NjaF9hcGkuYz0yNTE0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRubF9tc2dfaGFuZGxlciBwc2NoZWRfcnRubF9tc2dfaGFuZGxlcnNbXSBfX2luaXRjb25zdCA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjUyNC1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jOjI1MjU6c3RhdGljIGludCBfX2luaXQgcGt0c2NoZWRfaW5pdCh2b2lkKVxcbm5ldC9zY2hlZC9zY2hfYXBpLmMtMjUyNi17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2FwaS5jLTI1NDktXFxubmV0L3NjaGVkL3NjaF9hcGkuYzoyNTUwOnN1YnN5c19pbml0Y2FsbChwa3RzY2hlZF9pbml0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMTE6NDA6MjAuMjQxNDY0ODlaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTEzMjEyOTczMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBRZGlzYyBNb2RpZmljYXRpb24gUGF0aCoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdG8gYXBwcm9hY2ggZnV6emluZyB0aGUgcWRpc2MgbW9kaWZpY2F0aW9uIGNvZGUuIFRoZSBzdGFydGluZyBwb2ludCBsb29rcyBsaWtlIGB0Y19tb2RpZnlfcWRpc2NgLCB3aGljaCBpcyB0cmlnZ2VyZWQgYnkgYSBuZXRsaW5rIG1lc3NhZ2UsIHNwZWNpZmljYWxseSBgUlRNX05FV1FESVNDYC4gVGhhdCBuZXRsaW5rIGhhbmRsZXIgaXMgc2V0IHVwIGR1cmluZyBgcGt0c2NoZWRfaW5pdGAuIFNvLCBzZW5kaW5nIGNyYWZ0ZWQgbmV0bGluayBtZXNzYWdlcyB0byBgUlRNX05FV1FESVNDYCBzZWVtcyBsaWtlIHRoZSBkaXJlY3Qgcm91dGUgdG8gZXhlcmNpc2UgdGhpcyBjb2RlLlxuXG5JIG5lZWQgdG8gaWRlbnRpZnkgc29tZSB0YXJnZXQgc3ltYm9scyBmb3IgdGhlIGZ1enppbmcuIExldCdzIHNlZS4uLiBgcWRpc2NfZGVzdHJveWAsIGBxZGlzY19wdXRgLCBgcWRpc2NfcHV0X3VubG9ja2VkYCwgYHFkaXNjX2ZyZWVfcmN1YCwgYW5kIGBxZGlzY19jcmVhdGVfZGZsdGAgYWxsIGxvb2sgaW50ZXJlc3RpbmcuIFdhaXQgYSBtaW51dGUsIGBxZGlzY19mcmVlX3JjdWAgaXMgdGhlIG5ldyBmdW5jdGlvbiwgc28gbGV0J3MgY2hlY2sgdGhhdCBmaXJzdC4gQSBxdWljayBjaGVjayBvZiB0aGUgc291cmNlIHRyZWUgY29uZmlybXMgdGhhdCBpdCByZXNpZGVzIGluIGBuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY2AuIE5vdywgSSBzaG91bGQgcHJvYmFibHkgYWxzbyBleGFtaW5lIHRoYXQgZmlsZSBmb3IgYW55IG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIG9mIGludGVyZXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTc5MSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMTo0MDoyNS4zNzM1OTg3MDJaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5NjU3MjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX10uKlxcXFwoLipcXFxcKVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2NoZWQvc2NoX2dlbmVyaWMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0zNz1jb25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICpkZWZhdWx0X3FkaXNjX29wcyA9IFxcdTAwMjZwZmlmb19mYXN0X29wcztcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzozODpFWFBPUlRfU1lNQk9MKGRlZmF1bHRfcWRpc2Nfb3BzKTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0zOS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz00MD12b2lkIF9fdGNmX2tmcmVlX3NrYl9saXN0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqcSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTYyLX1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo2MzpFWFBPUlRfU1lNQk9MKF9fdGNmX2tmcmVlX3NrYl9saXN0KTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02NC1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz02NT1zdGF0aWMgdm9pZCBxZGlzY19tYXliZV9jbGVhcl9taXNzZWQoc3RydWN0IFFkaXNjICpxLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTgtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6OTk6c3RhdGljIGlubGluZSBzdHJ1Y3Qgc2tfYnVmZiAqX19za2JfZGVxdWV1ZV9iYWRfdHhxKHN0cnVjdCBRZGlzYyAqcSlcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDAte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTM0LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEzNTpzdGF0aWMgaW5saW5lIHN0cnVjdCBza19idWZmICpxZGlzY19kZXF1ZXVlX3NrYl9iYWRfdHhxKHN0cnVjdCBRZGlzYyAqcSlcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMzYte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTQ1PXN0YXRpYyBpbmxpbmUgdm9pZCBxZGlzY19lbnF1ZXVlX3NrYl9iYWRfdHhxKHN0cnVjdCBRZGlzYyAqcSxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE2OC1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxNjk6c3RhdGljIGlubGluZSB2b2lkIGRldl9yZXF1ZXVlX3NrYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnEpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTcwLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTM0ND1ib29sIHNjaF9kaXJlY3RfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgUWRpc2MgKnEsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy00MTctICovXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NDE4OnN0YXRpYyBpbmxpbmUgYm9vbCBxZGlzY19yZXN0YXJ0KHN0cnVjdCBRZGlzYyAqcSwgaW50ICpwYWNrZXRzLCBpbnQgYnVkZ2V0KVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTQxOS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy00MzktXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NDQwOnZvaWQgX19xZGlzY19ydW4oc3RydWN0IFFkaXNjICpxKVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTQ0MS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy00NTctXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NDU4OnVuc2lnbmVkIGxvbmcgZGV2X3RyYW5zX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNDU5LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTQ3MS19XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NDcyOkVYUE9SVF9TWU1CT0woZGV2X3RyYW5zX3N0YXJ0KTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy00NzMtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NDc0OnN0YXRpYyB2b2lkIG5ldGlmX2ZyZWV6ZV9xdWV1ZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy00NzUte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNDk0LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjQ5NTp2b2lkIG5ldGlmX3R4X2xvY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy00OTYte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNDk5LX1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo1MDA6RVhQT1JUX1NZTUJPTChuZXRpZl90eF9sb2NrKTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy01MDEtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NTAyOnN0YXRpYyB2b2lkIG5ldGlmX3VuZnJlZXplX3F1ZXVlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTUwMy17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy01MTctXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NTE4OnZvaWQgbmV0aWZfdHhfdW5sb2NrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNTE5LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTUyMi19XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NTIzOkVYUE9SVF9TWU1CT0wobmV0aWZfdHhfdW5sb2NrKTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy01MjQtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NTI1OnN0YXRpYyB2b2lkIGRldl93YXRjaGRvZyhzdHJ1Y3QgdGltZXJfbGlzdCAqdClcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy01MjYte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNTkwLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjU5MTp2b2lkIG5ldGRldl93YXRjaGRvZ191cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTU5Mi17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02MDgtfVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjYwOTpFWFBPUlRfU1lNQk9MX0dQTChuZXRkZXZfd2F0Y2hkb2dfdXApO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTYxMC1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo2MTE6c3RhdGljIHZvaWQgbmV0ZGV2X3dhdGNoZG9nX2Rvd24oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02MTIte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNjMwLSAqL1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjYzMTp2b2lkIG5ldGlmX2NhcnJpZXJfb24oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02MzIte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNjQyLX1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo2NDM6RVhQT1JUX1NZTUJPTChuZXRpZl9jYXJyaWVyX29uKTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02NDQtXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02NTAtICovXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NjUxOnZvaWQgbmV0aWZfY2Fycmllcl9vZmYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02NTIte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNjU5LX1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo2NjA6RVhQT1JUX1NZTUJPTChuZXRpZl9jYXJyaWVyX29mZik7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNjYxLVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNjY5LSAqL1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjY3MDp2b2lkIG5ldGlmX2NhcnJpZXJfZXZlbnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02NzEte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNjc3LX1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo2Nzg6RVhQT1JUX1NZTUJPTF9HUEwobmV0aWZfY2Fycmllcl9ldmVudCk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNjc5LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9Njg1PXN0YXRpYyBpbnQgbm9vcF9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqcWRpc2MsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy02OTItXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6NjkzOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbm9vcF9kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqcWRpc2MpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNjk0LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTcxMj1zdHJ1Y3QgUWRpc2Mgbm9vcF9xZGlzYyA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTczMS19O1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjczMjpFWFBPUlRfU1lNQk9MKG5vb3BfcWRpc2MpO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTczMy1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTc1ND1jb25zdCB1OCBzY2hfZGVmYXVsdF9wcmlvMmJhbmRbVENfUFJJT19NQVggKyAxXSA9IHtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTc1Ni19O1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjc1NzpFWFBPUlRfU1lNQk9MKHNjaF9kZWZhdWx0X3ByaW8yYmFuZCk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtNzU4LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9Nzc5PXN0YXRpYyBpbnQgcGZpZm9fZmFzdF9lbnF1ZXVlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBRZGlzYyAqcWRpc2MsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy04MDItXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6ODAzOnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqcGZpZm9fZmFzdF9kZXF1ZXVlKHN0cnVjdCBRZGlzYyAqcWRpc2MpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtODA0LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTg0My1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo4NDQ6c3RhdGljIHN0cnVjdCBza19idWZmICpwZmlmb19mYXN0X3BlZWsoc3RydWN0IFFkaXNjICpxZGlzYylcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy04NDUte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtODU4LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjg1OTpzdGF0aWMgdm9pZCBwZmlmb19mYXN0X3Jlc2V0KHN0cnVjdCBRZGlzYyAqcWRpc2MpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtODYwLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTg4OC1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo4ODk6c3RhdGljIGludCBwZmlmb19mYXN0X2R1bXAoc3RydWN0IFFkaXNjICpxZGlzYywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy04OTAte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9OTAyPXN0YXRpYyBpbnQgcGZpZm9fZmFzdF9pbml0KHN0cnVjdCBRZGlzYyAqcWRpc2MsIHN0cnVjdCBubGF0dHIgKm9wdCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTkyNi1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzo5Mjc6c3RhdGljIHZvaWQgcGZpZm9fZmFzdF9kZXN0cm95KHN0cnVjdCBRZGlzYyAqc2NoKVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTkyOC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz05NjQ9c3RydWN0IFFkaXNjX29wcyBwZmlmb19mYXN0X29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtOTc3LX07XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6OTc4OkVYUE9SVF9TWU1CT0wocGZpZm9fZmFzdF9vcHMpO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTk3OS1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTEwNDE9c3RydWN0IFFkaXNjICpxZGlzY19jcmVhdGVfZGZsdChzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICpkZXZfcXVldWUsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDY3LX1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMDY4OkVYUE9SVF9TWU1CT0wocWRpc2NfY3JlYXRlX2RmbHQpO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEwNjktXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDcxLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEwNzI6dm9pZCBxZGlzY19yZXNldChzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEwNzMte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTA4Ni19XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTA4NzpFWFBPUlRfU1lNQk9MKHFkaXNjX3Jlc2V0KTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDg4LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEwODk6dm9pZCBxZGlzY19mcmVlKHN0cnVjdCBRZGlzYyAqcWRpc2MpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTA5MC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMDk4LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjEwOTk6c3RhdGljIHZvaWQgcWRpc2NfZnJlZV9jYihzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEwMC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTA1LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjExMDY6dm9pZCBxZGlzY19mcmVlX3JjdShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExMDcte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTExMC1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTExOnN0YXRpYyB2b2lkIF9fcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExMTIte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTEzNy1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTM4OnZvaWQgcWRpc2NfZGVzdHJveShzdHJ1Y3QgUWRpc2MgKnFkaXNjKVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTExMzkte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTE0NS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTQ2OnZvaWQgcWRpc2NfcHV0KHN0cnVjdCBRZGlzYyAqcWRpc2MpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTE0Ny17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTU2LX1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTU3OkVYUE9SVF9TWU1CT0wocWRpc2NfcHV0KTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTU4LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTE2My1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTY0OnZvaWQgcWRpc2NfcHV0X3VubG9ja2VkKHN0cnVjdCBRZGlzYyAqcWRpc2MpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTE2NS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTcyLX1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTczOkVYUE9SVF9TWU1CT0wocWRpc2NfcHV0X3VubG9ja2VkKTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTc0LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTE3Nj1zdHJ1Y3QgUWRpc2MgKmRldl9ncmFmdF9xZGlzYyhzdHJ1Y3QgbmV0ZGV2X3F1ZXVlICpkZXZfcXVldWUsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTk0LX1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMTk1OkVYUE9SVF9TWU1CT0woZGV2X2dyYWZ0X3FkaXNjKTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMTk2LVxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTIxMj1zdGF0aWMgdm9pZCBhdHRhY2hfb25lX2RlZmF1bHRfcWRpc2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEyMzItXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTIzMzpzdGF0aWMgdm9pZCBhdHRhY2hfZGVmYXVsdF9xZGlzY3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMjM0LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTEyNzQ9c3RhdGljIHZvaWQgdHJhbnNpdGlvbl9vbmVfcWRpc2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEyOTAtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTI5MTp2b2lkIGRldl9hY3RpdmF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEyOTIte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTMxNi19XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTMxNzpFWFBPUlRfU1lNQk9MKGRldl9hY3RpdmF0ZSk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTMxOC1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxMzE5OnN0YXRpYyB2b2lkIHFkaXNjX2RlYWN0aXZhdGUoc3RydWN0IFFkaXNjICpxZGlzYylcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMzIwLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTEzMjc9c3RhdGljIHZvaWQgZGV2X2RlYWN0aXZhdGVfcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEzNDItXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTM0MzpzdGF0aWMgYm9vbCBzb21lX3FkaXNjX2lzX2J1c3koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xMzQ0LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTEzNzctICovXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTM3ODp2b2lkIGRldl9kZWFjdGl2YXRlX21hbnkoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCwgYm9vbCByZXNldF9uZWVkZWQpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTM3OS17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDE4LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0MTk6dm9pZCBkZXZfZGVhY3RpdmF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIHJlc2V0X25lZWRlZClcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDIwLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0MjYtfVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0Mjc6RVhQT1JUX1NZTUJPTChkZXZfZGVhY3RpdmF0ZSk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTQyOC1cXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTE0NDA9dm9pZCBkZXZfcWRpc2NfY2hhbmdlX3JlYWxfbnVtX3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDQ4LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0NDk6dm9pZCBtcV9jaGFuZ2VfcmVhbF9udW1fdHgoc3RydWN0IFFkaXNjICpzY2gsIHVuc2lnbmVkIGludCBuZXdfcmVhbF90eClcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDUwLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0NzAtfVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE0NzE6RVhQT1JUX1NZTUJPTChtcV9jaGFuZ2VfcmVhbF9udW1fdHgpO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE0NzItXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTQ3MzppbnQgZGV2X3FkaXNjX2NoYW5nZV90eF9xdWV1ZV9sZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNDc0LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTE0OTU9c3RhdGljIHZvaWQgZGV2X2luaXRfc2NoZWR1bGVyX3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNTA0LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE1MDU6dm9pZCBkZXZfaW5pdF9zY2hlZHVsZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNTA2LXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1MTQtXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTUxNTp2b2lkIGRldl9zaHV0ZG93bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1MTYte1xcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTU0OC0gKi9cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxNTQ5OnN0YXRpYyB2b2lkIHBzY2hlZF9yYXRlY2ZnX3ByZWNvbXB1dGVfXyh1NjQgcmF0ZSwgdTMyICptdWx0LCB1OCAqc2hpZnQpXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTU1MC17XFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xNTY4PXZvaWQgcHNjaGVkX3JhdGVjZmdfcHJlY29tcHV0ZShzdHJ1Y3QgcHNjaGVkX3JhdGVjZmcgKnIsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNTc4LX1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxNTc5OkVYUE9SVF9TWU1CT0wocHNjaGVkX3JhdGVjZmdfcHJlY29tcHV0ZSk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTU4MC1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxNTgxOnZvaWQgcHNjaGVkX3Bwc2NmZ19wcmVjb21wdXRlKHN0cnVjdCBwc2NoZWRfcGt0cmF0ZSAqciwgdTY0IHBrdHJhdGU2NClcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNTgyLXtcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1ODUtfVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE1ODY6RVhQT1JUX1NZTUJPTChwc2NoZWRfcHBzY2ZnX3ByZWNvbXB1dGUpO1xcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE1ODctXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM9MTU4OD12b2lkIG1pbmlfcWRpc2NfcGFpcl9zd2FwKHN0cnVjdCBtaW5pX1FkaXNjX3BhaXIgKm1pbmlxcCxcXG4tLVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jLTE2MjQtfVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jOjE2MjU6RVhQT1JUX1NZTUJPTChtaW5pX3FkaXNjX3BhaXJfc3dhcCk7XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTYyNi1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYz0xNjI3PXZvaWQgbWluaV9xZGlzY19wYWlyX2Jsb2NrX2luaXQoc3RydWN0IG1pbmlfUWRpc2NfcGFpciAqbWluaXFwLFxcbi0tXFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmMtMTYzMi19XFxubmV0L3NjaGVkL3NjaF9nZW5lcmljLmM6MTYzMzpFWFBPUlRfU1lNQk9MKG1pbmlfcWRpc2NfcGFpcl9ibG9ja19pbml0KTtcXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNjM0LVxcbm5ldC9zY2hlZC9zY2hfZ2VuZXJpYy5jPTE2MzU9dm9pZCBtaW5pX3FkaXNjX3BhaXJfaW5pdChzdHJ1Y3QgbWluaV9RZGlzY19wYWlyICptaW5pcXAsIHN0cnVjdCBRZGlzYyAqcWRpc2MsXFxuLS1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYy0xNjQ1LX1cXG5uZXQvc2NoZWQvc2NoX2dlbmVyaWMuYzoxNjQ2OkVYUE9SVF9TWU1CT0wobWluaV9xZGlzY19wYWlyX2luaXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMTo0MDoyNS40NDMyNjI4MDVaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA0OTYwMzQ0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTmV0d29yayBTY2hlZHVsZXIgQ2xlYW51cCBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBuZXR3b3JrIHNjaGVkdWxlciBmdW5jdGlvbnMuIEl0IHNlZW1zIHRoYXQgYHFkaXNjX2ZyZWVfcmN1YCwgYHFkaXNjX2ZyZWVgLCBgcWRpc2NfZGVzdHJveWAsIGBxZGlzY19wdXRgLCBhbmQgYHFkaXNjX3B1dF91bmxvY2tlZGAgYXJlIGFsbCBub24tc3RhdGljLiBJbnRlcmVzdGluZy4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIHN1c3BlY3QgdGhpcyBtZWFucyB0aGV5J3JlIGludGVuZGVkIHRvIGJlIGNhbGxhYmxlIGZyb20gb3V0c2lkZSB0aGUgaW1tZWRpYXRlIG1vZHVsZS4gSSB0aGluayB3ZSBjYW4gZm9jdXMgb3VyIGF0dGVudGlvbiBmb3Igbm93IG9uIGBxZGlzY19mcmVlX3JjdWAgYW5kIGBxZGlzY19kZXN0cm95YCBhcyBsaWtlbHkgY2FuZGlkYXRlcyBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uLiBXZSdyZSBkZWFsaW5nIHdpdGggdGhlIG5ldHdvcmsgc2NoZWR1bGVyLCBzbyB0aGUgcmVsZXZhbnQgY29uZmlnIG9wdGlvbiBoZXJlIGlzIGFsbW9zdCBjZXJ0YWlubHkgYENPTkZJR19ORVRfU0NIRURgLiBOb3cgSSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgYENPTkZJR19ORVRfU0NIRURgIGhhcyBhbnkgZGVwZW5kZW5jaWVzLiBUaGF0J3MgdGhlIG5leHQgbG9naWNhbCBzdGVwLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wYWN0IG9uIHRoZSBsYXJnZXIgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTE5MSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMTo0MDoyOS40OTI4Njg3MjlaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NzQxMDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfU0NIRURcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjaGVkL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjaGVkL0tjb25maWctNS1cXG5uZXQvc2NoZWQvS2NvbmZpZzo2Om1lbnVjb25maWcgTkVUX1NDSEVEXFxubmV0L3NjaGVkL0tjb25maWctNy1cXHRib29sIFxcXCJRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjQwOjI5LjUzOTYxODExNFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTc3Mzk3Mzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipFeGFtaW5pbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gZm9yIFNjaGVkdWxpbmcgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nLCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgaXQncyBwcnVkZW50IHRvIGNvbmZpcm0gdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIGZvciBgTkVUX1NDSEVEYC4gV2UncmUgZGVhbGluZyB3aXRoIG5ldHdvcmsgc2NoZWR1bGluZyBoZXJlLCBhIGNvcmUgcGFydCBvZiB0aGUga2VybmVsJ3MgdHJhZmZpYyBzaGFwaW5nIGFuZCBxdWV1aW5nIG1lY2hhbmlzbXMuIEJlc3QgdG8gc3RhcnQgYnkgZGlnZ2luZyBpbnRvIGBuZXQvc2NoZWQvS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgYWxsIHRob3NlIGxvd2VyLWxldmVsIGRlcGVuZGVuY2llcyBhcmUgZGVmaW5lZC4gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHdoYXQgb3RoZXIgZmVhdHVyZXMgb3IgbW9kdWxlcyAqbXVzdCogYmUgZW5hYmxlZCBvciBjb25maWd1cmVkIGFwcHJvcHJpYXRlbHkgZm9yIGBORVRfU0NIRURgIHRvIGV2ZW4gYmUgY29uc2lkZXJlZC4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgc3BlY2lmaWMgbmV0d29yayBzdGFjayBvcHRpb25zLCBjZXJ0YWluIGhhcmR3YXJlIGRyaXZlcnMsIG9yIHBlcmhhcHMgYSByZXF1aXJlbWVudCBmb3IgcGFydGljdWxhciBRb1Mgc2V0dGluZ3M/IEkgbmVlZCB0byBrbm93IHdoZXJlIGl0IHN0YW5kcyB3aXRoaW4gdGhlIGNvbmZpZ3VyYXRpb24gbWF0cml4LiBUaGlzIGVhcmx5IHNhbml0eSBjaGVjayB3aWxsIGluZm9ybSB0aGUgZm9sbG93aW5nIHN0ZXBzIGFuZCBhdm9pZHMgc3VycHJpc2VzIGxhdGVyIG9uLiBJdCdsbCBhbHNvIGxpa2VseSBnaXZlIG1lIGhpbnRzIG9uIGhvdyBteSBjdXJyZW50IHByb2plY3QgbWlnaHQgYmUgYWZmZWN0ZWQuIEdvdHRhIG1hcCB0aGUgbGFuZHNjYXBlIGJlZm9yZSBtb3ZpbmcgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE1ODUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMTo0MDozNC41MTcwMTc5MDJaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE3MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L3NjaGVkL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgVHJhZmZpYyBjb250cm9sIGNvbmZpZ3VyYXRpb24uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnVjb25maWcgTkVUX1NDSEVEXFxuICAgNzpcXHRcXHRib29sIFxcXCJRb1MgYW5kL29yIGZhaXIgcXVldWVpbmdcXFwiXFxuICAgODpcXHRcXHRzZWxlY3QgTkVUX1NDSF9GSUZPXFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHQgIFdoZW4gdGhlIGtlcm5lbCBoYXMgc2V2ZXJhbCBwYWNrZXRzIHRvIHNlbmQgb3V0IG92ZXIgYSBuZXR3b3JrXFxuICAxMTpcXHRcXHQgIGRldmljZSwgaXQgaGFzIHRvIGRlY2lkZSB3aGljaCBvbmVzIHRvIHNlbmQgZmlyc3QsIHdoaWNoIG9uZXMgdG9cXG4gIDEyOlxcdFxcdCAgZGVsYXksIGFuZCB3aGljaCBvbmVzIHRvIGRyb3AuIFRoaXMgaXMgdGhlIGpvYiBvZiB0aGUgcXVldWVpbmdcXG4gIDEzOlxcdFxcdCAgZGlzY2lwbGluZXMsIHNldmVyYWwgZGlmZmVyZW50IGFsZ29yaXRobXMgZm9yIGhvdyB0byBkbyB0aGlzXFxuICAxNDpcXHRcXHQgIFxcXCJmYWlybHlcXFwiIGhhdmUgYmVlbiBwcm9wb3NlZC5cXG4gIDE1OlxcdFxcbiAgMTY6XFx0XFx0ICBJZiB5b3Ugc2F5IE4gaGVyZSwgeW91IHdpbGwgZ2V0IHRoZSBzdGFuZGFyZCBwYWNrZXQgc2NoZWR1bGVyLCB3aGljaFxcbiAgMTc6XFx0XFx0ICBpcyBhIEZJRk8gKGZpcnN0IGNvbWUsIGZpcnN0IHNlcnZlZCkuIElmIHlvdSBzYXkgWSBoZXJlLCB5b3Ugd2lsbCBiZVxcbiAgMTg6XFx0XFx0ICBhYmxlIHRvIGNob29zZSBmcm9tIGFtb25nIHNldmVyYWwgYWx0ZXJuYXRpdmUgYWxnb3JpdGhtcyB3aGljaCBjYW5cXG4gIDE5OlxcdFxcdCAgdGhlbiBiZSBhdHRhY2hlZCB0byBkaWZmZXJlbnQgbmV0d29yayBkZXZpY2VzLiBUaGlzIGlzIHVzZWZ1bCBmb3JcXG4gIDIwOlxcdFxcdCAgZXhhbXBsZSBpZiBzb21lIG9mIHlvdXIgbmV0d29yayBkZXZpY2VzIGFyZSByZWFsIHRpbWUgZGV2aWNlcyB0aGF0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDExOjQwOjM0LjUxNzEwMDg2MloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NjQzNTE4OTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBgTkVUX1NDSEVEYCBDb25maWd1cmF0aW9uIGZvciBGdXp6aW5nKipcblxuT2theSwgc28gdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUgaXMgYE5FVF9TQ0hFRGAuIExldCBtZSBzdW1tYXJpemUgbXkgZmluZGluZ3MgZm9yIHRoaXMgcG90ZW50aWFsIGZ1enppbmcgdGFyZ2V0LiBUaGUgcGF0Y2ggc2VlbXMgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCB0b3VjaGVzIG9uIGNyaXRpY2FsIHJlc291cmNlIG1hbmFnZW1lbnQgd2l0aGluIHRoZSBuZXR3b3JrIHNjaGVkdWxpbmcgc3Vic3lzdGVtLlxuXG5IZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzOiBUaGUgbW9zdCBpbXBvcnRhbnQgdGhpbmcgaXMgdGhhdCBgV29ydGhGdXp6aW5nYCBpcyBgdHJ1ZWAsIHdoaWNoIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC5cblxuVGhlIGNvcmUgb2YgdGhpcyByZXZvbHZlcyBhcm91bmQgdGhlc2Ugc3ltYm9sczogYHFkaXNjX2ZyZWVfcmN1YCwgYHFkaXNjX2Rlc3Ryb3lgLCBgcWRpc2NfcHV0YCwgYW5kIGBxZGlzY19wdXRfdW5sb2NrZWRgLlxuXG5UaGUgY3JpdGljYWwgcmVhc29uaW5nIGJlaGluZCBzZWxlY3RpbmcgdGhlc2Ugc3ltYm9scyBpcyB0aGUgcGF0Y2gncyBtb2RpZmljYXRpb24gb2YgdGhlIGVycm9yIHBhdGggb2YgYHFkaXNjX2NyZWF0ZWAuIFRoZSBvcmlnaW5hbCBgcWRpc2NfZnJlZWAgaXMgcmVwbGFjZWQgd2l0aCBgcWRpc2NfZnJlZV9yY3VgLCBhbmQgYF9fcWRpc2NfZGVzdHJveWAgaXMgdXBkYXRlZCB0byB1dGlsaXplIGBxZGlzY19mcmVlX3JjdWAgYXMgd2VsbC4gVGhpcyBzdWJzdGl0dXRpb24gc3VnZ2VzdHMgYSBmaXggZm9yIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJhY2UgY29uZGl0aW9uLCBhZGRyZXNzaW5nIHNjZW5hcmlvcyB3aGVyZSBSQ1UgKFJlYWQtQ29weS1VcGRhdGUpIHNlbWFudGljcyB3ZXJlIHJlcXVpcmVkIGJ1dCBub3QgcHJldmlvdXNseSB1c2VkLiBUaGUgY29kZSBhcHBlYXJzIHRvIGJlIHJlYWNoYWJsZSB2aWEgbmV0bGluayBgUlRNX05FV1FESVNDYCBtZXNzYWdlcy4gVGhpcyBtYWtlcyBpdCBhbiBlc3BlY2lhbGx5IGFwcGVhbGluZyB0YXJnZXQuXG5cblRoZSBhZGRlZCBgcWRpc2NfZnJlZV9yY3VgIGlzIGEga2V5IGZvY3VzIGJlY2F1c2UgaXQncyBuZXcgYW5kIGxpa2VseSBoYXMgc29tZSBpbnRlcmVzdGluZyBjb2RlIHBhdGhzLiBgcWRpc2NfZGVzdHJveWAgaXMgbW9kaWZpZWQgdG8gdXNlIGl0LiBOb3csIGxldCdzIGp1c3QgZG8gYSBxdWljayBjaGVjayB0byBzZWUgaWYgYHFkaXNjX2NyZWF0ZWAgaXMgaW5saW5lZCwgb3Igc3RhdGljYWxseSBkZWZpbmVkLiBJdCBpcyBzdGF0aWMuIGB0Y19tb2RpZnlfcWRpc2NgIGlzIHRoZSBuZXRsaW5rIGhhbmRsZXIsIGFsc28gc3RhdGljLlxuXG5JJ20gY29uZmlkZW50IGluIHRoZSBpbml0aWFsIHN5bWJvbHMsIHNvIEkgdGhpbmsgYWRkaW5nIGBxZGlzY19mcmVlX3JjdWAsIGBxZGlzY19kZXN0cm95YCwgYHFkaXNjX3B1dGAsIGFuZCBgcWRpc2NfcHV0X3VubG9ja2VkYCBhcyBmb2N1cyBzeW1ib2xzIHdpbGwgYmUgY29ycmVjdC5cblxuT25lIGxhc3QgY2hlY2s6IEknbGwgcXVpY2tseSB2ZXJpZnkgdGhhdCBgcWRpc2NfZnJlZV9yY3VgIGlzIGRlZmluaXRlbHkgZGVmaW5lZCBpbiBgbmV0L3NjaGVkL3NjaF9nZW5lcmljLmNgIGFzIGB2b2lkIHFkaXNjX2ZyZWVfcmN1KHN0cnVjdCBRZGlzYyAqcWRpc2MpYCB0byBtYWtlIHN1cmUgaXQncyBub3QgYmVpbmcgaW5saW5lZC4gWWVzLCB0aGF0J3MgY29ycmVjdC5cblxuQWxyaWdodCwgSSdtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoZXNlIHZhbHVlcyBub3cuIFRoaXMgc2VlbXMgbGlrZSBhIHByb21pc2luZyBwYXRoIGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjE1NywiT3V0cHV0VG9rZW5zIjoxNzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQxMTo0MDo0My4xNjA2MjIyOTRaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTE5NzIxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSEVEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicWRpc2NfZnJlZV9yY3VcIixcbiAgICBcInFkaXNjX2Rlc3Ryb3lcIixcbiAgICBcInFkaXNjX3B1dFwiLFxuICAgIFwicWRpc2NfcHV0X3VubG9ja2VkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIHBhdGggb2YgYHFkaXNjX2NyZWF0ZWAgYW5kIHRoZSBkZXN0cnVjdGlvbiBwYXRoIGluIGBfX3FkaXNjX2Rlc3Ryb3lgIHRvIHVzZSBhIG5ld2x5IGludHJvZHVjZWQgYHFkaXNjX2ZyZWVfcmN1YCBmdW5jdGlvbiBpbnN0ZWFkIG9mIGZyZWVpbmcgdGhlIHFkaXNjIGRpcmVjdGx5IG9yIGNhbGxpbmcgYGNhbGxfcmN1YCBtYW51YWxseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgUkNVLXJlbGF0ZWQgaXNzdWUuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBgUlRNX05FV1FESVNDYCBhbmQgYFJUTV9ERUxRRElTQ2AgbWVzc2FnZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX1NDSEVEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicWRpc2NfZnJlZV9yY3VcIixcbiAgICBcInFkaXNjX2Rlc3Ryb3lcIixcbiAgICBcInFkaXNjX3B1dFwiLFxuICAgIFwicWRpc2NfcHV0X3VubG9ja2VkXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIHBhdGggb2YgYHFkaXNjX2NyZWF0ZWAgYW5kIHRoZSBkZXN0cnVjdGlvbiBwYXRoIGluIGBfX3FkaXNjX2Rlc3Ryb3lgIHRvIHVzZSBhIG5ld2x5IGludHJvZHVjZWQgYHFkaXNjX2ZyZWVfcmN1YCBmdW5jdGlvbiBpbnN0ZWFkIG9mIGZyZWVpbmcgdGhlIHFkaXNjIGRpcmVjdGx5IG9yIGNhbGxpbmcgYGNhbGxfcmN1YCBtYW51YWxseS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgUkNVLXJlbGF0ZWQgaXNzdWUuIFRoZSBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgbmV0bGluayBgUlRNX05FV1FESVNDYCBhbmQgYFJUTV9ERUxRRElTQ2AgbWVzc2FnZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflownsd72[1] Phase: Succeeded StartedAt: 2026-08-05 11:40:54 +0000 UTC FinishedAt: 2026-08-05 11:40:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsd72[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-05 11:40:54 +0000 UTC FinishedAt: 2026-08-05 11:40:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsd72[2] Phase: Succeeded StartedAt: 2026-08-05 11:40:54 +0000 UTC FinishedAt: 2026-08-05 15:31:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-05 11:40:54 +0000 UTC FinishedAt: 2026-08-05 15:31:51 +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":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-05 11:40:54 +0000 UTC FinishedAt: 2026-08-05 11:41:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-05 11:40:54 +0000 UTC FinishedAt: 2026-08-05 11:40:58 +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":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflownsd72/series-workflownsd72-convert-artifact-3935707339/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-05 11:41:04 +0000 UTC FinishedAt: 2026-08-05 12:02:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-05 11:41:04 +0000 UTC FinishedAt: 2026-08-05 12:02:17 +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:*d6c0489f-0093-4c19-aa6a-5578643f6538,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-workflownsd72/series-workflownsd72-convert-artifact-3935707339/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": "95d3db79-a5b6-4e78-9a2c-6114ea60f18d", "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-workflownsd72/series-workflownsd72-build-action-3411646409/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-05 11:41:04 +0000 UTC FinishedAt: 2026-08-05 12:01:50 +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:*d6c0489f-0093-4c19-aa6a-5578643f6538,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-workflownsd72/series-workflownsd72-convert-artifact-3935707339/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": "95d3db79-a5b6-4e78-9a2c-6114ea60f18d", "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-workflownsd72/series-workflownsd72-build-action-3411646409/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-05 12:02:17 +0000 UTC FinishedAt: 2026-08-05 12:02:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-05 12:02:17 +0000 UTC FinishedAt: 2026-08-05 12:02:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-05 12:02:17 +0000 UTC FinishedAt: 2026-08-05 12:02:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-05 12:02:17 +0000 UTC FinishedAt: 2026-08-05 12:02:22 +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":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflownsd72/series-workflownsd72-convert-artifact-3742225186/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-05 12:02:47 +0000 UTC FinishedAt: 2026-08-05 12:04:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-05 12:02:47 +0000 UTC FinishedAt: 2026-08-05 12:04:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*95d3db79-a5b6-4e78-9a2c-6114ea60f18d,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-workflownsd72/series-workflownsd72-build-action-3411646409/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-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-05 12:04:52 +0000 UTC FinishedAt: 2026-08-05 12:04:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-05 12:04:52 +0000 UTC FinishedAt: 2026-08-05 12:04:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-05 12:04:52 +0000 UTC FinishedAt: 2026-08-05 12:26:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-05 12:04:52 +0000 UTC FinishedAt: 2026-08-05 12:26:47 +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:*d6c0489f-0093-4c19-aa6a-5578643f6538,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-workflownsd72/series-workflownsd72-convert-artifact-3742225186/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": "b56a1c36-5891-448d-8135-37a9c95cdbdd", "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-workflownsd72/series-workflownsd72-build-action-1827083126/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-05 12:04:52 +0000 UTC FinishedAt: 2026-08-05 12:26:21 +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:*d6c0489f-0093-4c19-aa6a-5578643f6538,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-workflownsd72/series-workflownsd72-convert-artifact-3742225186/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": "b56a1c36-5891-448d-8135-37a9c95cdbdd", "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-workflownsd72/series-workflownsd72-build-action-1827083126/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-05 12:26:47 +0000 UTC FinishedAt: 2026-08-05 12:26:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-05 12:26:47 +0000 UTC FinishedAt: 2026-08-05 12:26:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-05 12:26:47 +0000 UTC FinishedAt: 2026-08-05 12:28:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-05 12:26:47 +0000 UTC FinishedAt: 2026-08-05 12:28:42 +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:*b56a1c36-5891-448d-8135-37a9c95cdbdd,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-workflownsd72/series-workflownsd72-build-action-1827083126/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-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-05 12:28:54 +0000 UTC FinishedAt: 2026-08-05 15:31:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-05 12:28:54 +0000 UTC FinishedAt: 2026-08-05 15:31:51 +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":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"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:*95d3db79-a5b6-4e78-9a2c-6114ea60f18d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b56a1c36-5891-448d-8135-37a9c95cdbdd,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-workflownsd72/series-workflownsd72-build-action-3411646409/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-workflownsd72/series-workflownsd72-build-action-1827083126/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-05 12:28:54 +0000 UTC FinishedAt: 2026-08-05 12:29:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-05 12:28:54 +0000 UTC FinishedAt: 2026-08-05 12:29:00 +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":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"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-workflownsd72/series-workflownsd72-convert-artifact-1125045591/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-05 12:28:54 +0000 UTC FinishedAt: 2026-08-05 12:28:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-05 12:28:54 +0000 UTC FinishedAt: 2026-08-05 12:28:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-05 12:28:54 +0000 UTC FinishedAt: 2026-08-05 12:28:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-05 12:29:05 +0000 UTC FinishedAt: 2026-08-05 15:31:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflownsd72[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["qdisc_free_rcu","qdisc_destroy","qdisc_put","qdisc_put_unlocked"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"aa2e13ae8d3cbe2c15ef4f7e971b2de0832794aa","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_SCHED"],"series_id":"1dd4e712-c3f3-45a9-9ed1-0793f10110c7","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-05 12:29:05 +0000 UTC FinishedAt: 2026-08-05 15:31:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*95d3db79-a5b6-4e78-9a2c-6114ea60f18d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b56a1c36-5891-448d-8135-37a9c95cdbdd,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-workflownsd72/series-workflownsd72-build-action-3411646409/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-workflownsd72/series-workflownsd72-build-action-1827083126/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-workflownsd72/series-workflownsd72-convert-artifact-1125045591/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,}